{ "cells": [ { "cell_type": "markdown", "id": "d15233a3", "metadata": {}, "source": [ "# Core Geometry Error Testing\n", "\n", "In this notebook, I load the data from the same bending experiment as the 4D processing notebook.\n", "\n", "I then do the derivations of the shape sensing variables with a custom function which introduces a positioning error of the cores randomly throughout the length. \n", "\n", "The positioning error introduced is propotional to the geometry of the JIP-CALM sensor used to collect this data: $\\pm0.8$ mm and the error is introduced in the angular and radial planes.\n", "\n", "The error is calculated through the angle(123) and r(123) variables. \n", "\n", "The angle(123) variable is computed as theta_cores(123) + angle_increment (from the original JIPCALM geometry) + a random value -0.094245 < N < 0.094245 rad. This 0.094245 value corresponds to the magnitude of the 0.8mm on a circle of radius r_in = 8.45\n", "\n", "The r(123) is computed similarly.\n", "\n", "We then reconstruct the curves using the MT and FS methods individually to compare the effects of the positioning error." ] }, { "cell_type": "code", "execution_count": 1, "id": "7bdf45ed", "metadata": {}, "outputs": [], "source": [ "# Import all necessary libraries and functions\n", "%matplotlib notebook\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import sys\n", "sys.path.append('../utils')\n", "from functions import *\n", "from plotting import *" ] }, { "cell_type": "code", "execution_count": 2, "id": "22882df7", "metadata": {}, "outputs": [], "source": [ "# Load the strain data and convert it to a Numpy array\n", "# The data is in the format of (time samples , gauge number) \n", "\n", "datafile = '../../Data/06-02-23-SigTest_data/test_4.txt'\n", "eps = read_strain(datafile)" ] }, { "cell_type": "code", "execution_count": 3, "id": "bfc33ddd", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\n", "\n", " ws.close = function () {\n", " comm.close();\n", " };\n", " ws.send = function (m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function (msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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\" width=\"400.2\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "############## RAW DATA PROCESSING ###############\n", "# Isolate sensor cores segments from the raw data\n", "# Currently this needs to be done manually \n", "dx = 0.0026\n", "length = 2.1\n", "ns = int(length/dx)\n", "nt = eps.shape[0]\n", "\n", "# First core\n", "lim1 = 1160\n", "lim2 = lim1 + ns\n", "\n", "# Second core\n", "lim3 = lim2 + 1490\n", "lim4 = lim3 + ns\n", "\n", "# Third core\n", "lim5 = lim4 + 1455\n", "lim6 = lim5 + ns\n", "\n", "# This is the shape of each core array represented by (time samples , number of gauges)\n", "shape = (nt, ns)\n", "\n", "# Populate the core arrays\n", "core1 = np.zeros(shape)\n", "core2 = np.zeros(shape)\n", "core3 = np.zeros(shape)\n", "\n", "core1 = eps[:,lim1:lim2]\n", "core2 = eps[:,lim3:lim4]\n", "core3 = eps[:,lim5:lim6]\n", "\n", "# Remove and interpolate outliers from the data\n", "c1 = reject_outliers(core1, dx=dx, m=0.1)\n", "c2 = reject_outliers(core2, dx=dx, m=0.1)\n", "c3 = reject_outliers(core3, dx=dx, m=0.1)\n", "\n", "# Smoothen the strain data\n", "sc1, sc2, sc3 = smoothen_strain(np.stack((c1,c2,c3)), kernel_size=5)\n", "\n", "# Plot the data \n", "anim = anim_2Dplot(np.array([sc1,sc2,sc3]), -1000, 1000, 500) " ] }, { "cell_type": "code", "execution_count": 4, "id": "758bdf04", "metadata": {}, "outputs": [], "source": [ "# Core positioning error proportional to r_in in mm\n", "pos_error = 0.8 \n", "rng = np.random.default_rng()\n", "\n", "# Custom function for deriving SS variables with core positioning error\n", "def get_ss_var_error(spl_eps, ds, r_in):\n", " n_cores = spl_eps.shape[0] # number of cores in splines\n", " n_measurements = spl_eps.shape[1] # number of measurements\n", "\n", " # Initialize arrays\n", " theta = np.zeros([n_measurements])\n", " K = np.zeros([n_measurements])\n", "\n", " # Angular distance of cores from horizontal axis (in radians)\n", " theta_cores = np.zeros((n_cores))\n", "\n", " # Compute the angular position of each core\n", " for i in range(n_cores):\n", " theta_cores[i] = ((2 * np.pi * i) / n_cores)\n", " \n", " # Compute the angle increment for each measurement and add it to the angular position of each core \n", " # This effect is due to core twisting around JIP-CALM sensor\n", " angle_increment = (np.deg2rad(360) / n_measurements)\n", "\n", " for i in range(n_measurements):\n", " theta_cores += angle_increment \n", " \n", " ### INDUCE GEOMETRY ERROR\n", " angle1 = theta_cores[0] + random.uniform(-0.094245, 0.094245)\n", " angle2 = theta_cores[1] + random.uniform(-0.094245, 0.094245)\n", " angle3 = theta_cores[2] + random.uniform(-0.094245, 0.094245)\n", " \n", " r1 = r_in + (pos_error * np.sqrt(np.random.random()) *rng.choice((-1,1)))\n", " r2 = r_in + (pos_error * np.sqrt(np.random.random()) *rng.choice((-1,1)))\n", " r3 = r_in + (pos_error * np.sqrt(np.random.random()) *rng.choice((-1,1)))\n", "\n", " # Compute the core location matrix M\n", " M = np.zeros([3, 3])\n", " \n", " M[0,:] = np.array([-r1 * np.cos(angle1), r_in * np.sin(angle1), 1])\n", " M[1,:] = np.array([-r2 * np.cos(angle2), r_in * np.sin(angle2), 1])\n", " M[2,:] = np.array([-r3 * np.cos(angle3), r_in * np.sin(angle3), 1])\n", " \n", " # Compute the pseudo-inverse of M\n", " cross = np.linalg.pinv(M)\n", "\n", " # Compute the dot product of the location matrix and the strain\n", " alpha = np.dot(cross, spl_eps[:, i])\n", "\n", " # Compute the angle of bending theta\n", " theta[i] = np.arctan(alpha[1] / alpha[0])\n", " \n", " # Compute the curvature K\n", " K[i] = np.sqrt(alpha[0] ** 2 + alpha[1] ** 2)\n", " \n", " # Compute the direction of bending tau\n", " tau = np.gradient(np.abs(theta), ds)\n", "\n", " # Compute the radius of curvature R\n", " R = 1 / K\n", "\n", " # Compute the twist angle phi\n", " phi = ds / R\n", "\n", " # Return variable arrays\n", " return theta, K, phi, R, tau" ] }, { "cell_type": "code", "execution_count": 5, "id": "aab497dd", "metadata": {}, "outputs": [], "source": [ "from numpy import random\n", "# Convert all variables to mm\n", "r_in = 8.45 # r_in is in mm\n", "ds = dx*10**3 # dx was in m\n", "\n", "# Combine core strains into a single array\n", "s = np.stack((sc1, sc2, sc3)) \n", "strain = (s/10**6) # eps was in microstrain\n", "\n", "# Initialize variable arrays for correct positioning example\n", "theta = np.zeros(shape)\n", "K = np.zeros(shape)\n", "phi = np.zeros(shape)\n", "R = np.zeros(shape)\n", "tau = np.zeros(shape)\n", "\n", "# Initialize variable arrays for positioning error example\n", "theta_err = np.zeros(shape)\n", "K_err = np.zeros(shape)\n", "phi_err = np.zeros(shape)\n", "R_err = np.zeros(shape)\n", "tau_err = np.zeros(shape)\n", "\n", "for i in range(nt):\n", " theta[i,:], K[i,:], phi[i,:], R[i,:], tau[i,:] = get_ss_var(strain[:,i,:], ds, r_in)\n", " theta_err[i,:], K_err[i,:], phi_err[i,:], R_err[i,:], tau_err[i,:] = get_ss_var_error(strain[:,i,:], ds, r_in)" ] }, { "cell_type": "code", "execution_count": 6, "id": "f5993ac4", "metadata": {}, "outputs": [], "source": [ "plt.close()\n", "\n", "# provide original frame directions for Frener-Serret method\n", "r_0 = [0,0,0]\n", "N_0 = [1,0,0] \n", "T_0 = [0,0,1]\n", "\n", "start = 25\n", "stop = 775\n", "size = stop-start\n", "\n", "# Initialise path arrays, here we cropped the edges of the sensor where the result is unstable\n", "r_FS = np.zeros((nt, size+1, 3))\n", "r_MT = np.zeros((nt, size, 4))\n", "\n", "r_FS_err = np.zeros((nt, size+1, 3))\n", "r_MT_err = np.zeros((nt, size, 4))\n", "\n", "# Perform shape sensing using the Frener-Serret and Matrix_Transform methods\n", "for i in range(nt):\n", " r_FS[i,:,:] = Frenet_Serret(ds, K[i,start:stop], tau[i,start:stop], T_0, N_0, r_0) \n", " r_MT[i,:,:] = Matrix_Transform(tau[i,start:stop], R[i,start:stop], phi[i,start:stop], ds)\n", " \n", " r_FS_err[i,:,:] = Frenet_Serret(ds, K_err[i,start:stop], tau_err[i,start:stop], T_0, N_0, r_0) \n", " r_MT_err[i,:,:] = Matrix_Transform(tau_err[i,start:stop], R_err[i,start:stop], phi_err[i,start:stop], ds)" ] }, { "cell_type": "code", "execution_count": 7, "id": "cd457b09", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape of r_FS correct (751, 3) with physical length 1949.9729954758418\n", "Shape of r_FS error (751, 3) with physical length 1949.303212926828\n", "Shape of r_MT correct (750, 4) with physical length 1947.3999974298335\n", "Shape of r_MT error (750, 4) with physical length 1947.3999973864682\n" ] } ], "source": [ "# compare curve\n", "path_info(r_FS[-1,:], 'r_FS correct')\n", "path_info(r_FS_err[-1,:], 'r_FS error')\n", "\n", "path_info(r_MT[-1,:], 'r_MT correct')\n", "path_info(r_MT_err[-1,:], 'r_MT error')" ] }, { "cell_type": "code", "execution_count": 8, "id": "14ec935b", "metadata": {}, "outputs": [], "source": [ "rot_FS = np.zeros(r_FS.shape)\n", "rot_MT = np.zeros((r_MT.shape[0], r_MT.shape[1], 3) )\n", "\n", "rot_FS_err = np.zeros(r_FS_err.shape)\n", "rot_MT_err = np.zeros((r_MT_err.shape[0], r_MT_err.shape[1], 3) )\n", "\n", "for i in range(nt):\n", " rot_FS[i,:,:] = rotate_curve(r_FS[i,:,:])\n", " rot_MT[i,:,:] = rotate_curve(r_MT[i,:,:3])\n", " \n", " rot_FS_err[i,:,:] = rotate_curve(r_FS_err[i,:,:])\n", " rot_MT_err[i,:,:] = rotate_curve(r_MT_err[i,:,:3])\n", "\n", "#transform from millimeter to centimeter \n", "rot_FS = rot_FS/10\n", "rot_MT = rot_MT/10\n", "\n", "rot_FS_err = rot_FS_err/10\n", "rot_MT_err = rot_MT_err/10" ] }, { "cell_type": "code", "execution_count": 12, "id": "79b3f5e2", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\n", "\n", " ws.close = function () {\n", " comm.close();\n", " };\n", " ws.send = function (m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function (msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0MAAAJyCAYAAAAGkRtTAAAgAElEQVR4XuydB3hUxfrGv/TeG2mQEIoNO1iwe732rvfasaMg9gY2sKKi2ED0Wq/tf+29YMGGCooNFekBQkJ672X/8w6euFk2yZ7lbLLlnefh8d7knDkzv5ndzHu+b94JsqkiLCRAAiRAAiRAAiRAAiRAAiQQQASCUCiGAmjE2VUSIAESIAESIAESIAESIAFNgGKIE4EESIAESIAESIAESIAESCAgCVAMBeSws9MkQAIkQAIkQAIkQAIkQAIUQ5wDJEACJEACJEACJEACJEACAUmAYiggh52dJgESIAESIAESIAESIAESoBjiHCABEiABEiABEiABEiABEghIAhRDATns7DQJkAAJkAAJkAAJkAAJkADFEOcACZAACZAACZAACZAACZBAQBKgGArIYWenSYAESIAESIAESIAESIAEKIY4B0iABEiABEiABEiABEiABAKSAMVQQA47O00CJEACJEACJEACJEACJEAxxDlAAiRAAiRAAiRAAiRAAiQQkAQohgJy2NlpEiABEiABEiABEiABEiABiiHOARIgARIgARIgARIgARIggYAkQDEUkMPOTpMACZAACZAACZAACZAACVAMcQ6QAAmQAAmQAAmQAAmQAAkEJAGKoYAcdnaaBEiABEiABEiABEiABEiAYohzgARIgARIgARIgARIgARIICAJUAwF5LCz0yRAAiRAAiRAAiRAAiRAAhRDnAMkQAIkQAIkQAIkQAIkQAIBSYBiKCCHnZ0mARIgARIgARIgARIgARKgGOIcIAESIAESIAESIAESIAESCEgCFEMBOezsNAmQAAmQAAmQAAmQAAmQAMUQ5wAJkAAJkAAJkAAJkAAJkEBAEqAYCshhZ6dJgARIgARIgARIgARIgAQohjgHSIAESIAESIAESIAESIAEApIAxVBADjs7TQIkQAIkQAIkQAIkQAIkQDHEOUACJEACJEACJEACJEACJBCQBCiGAnLY2WkSIAESIAESIAESIAESIAGKIc4BEiABEiABEiABEiABEiCBgCRAMRSQw85OkwAJkAAJkAAJkAAJkAAJUAxxDpAACZAACZAACZAACZAACQQkAYqhgBx2dpoESIAESIAESIAESIAESIBiiHOABEiABEiABEiABEiABEggIAlQDAXksLPTJEACJEACJEACJEACJEACFEOcAyRAAiRAAiRAAiRAAiRAAgFJgGIoIIednSYBEiABEiABEiABEiABEqAY4hwgARIgARIgARIgARIgARIISAIUQwE57Ow0CZAACZAACZAACZAACZAAxRDnAAmQAAmQAAmQAAmQAAmQQEASoBgKyGFnp0mABEiABEiABEiABEiABCiGOAdIgARIgARIgARIgARIgAQCkgDFUEAOOztNAiRAAiRAAiRAAiRAAiTgN2Kora1NqqqqpKGhQbq6ujiyJEACXkAgODhYIiIiJC4uThISEkR94XhBq9gEEiABEiABEiABEthMwC/EkM1mk7Vr10pra6tebGEBxkICJDD4BPDZNF5OxMfHS1ZWFgXR4A8LW0ACJEACJEACJPAXAb8QQ4gIlZaWSmxsrGRnZ1MMcXqTgJcQgBhqaWmRkpIS/bIiMzNTEhMTvaR1bAYJkAAJkAAJkECgE/ALMbRu3TppamqSgoICCQ8PD/QxZf9JwOsINDc3S2FhoX5hkZub63XtY4NIgARIgARIgAQCk4BfiKFVq1ZJR0eHjB49mik4gTmP2WsvJ4AI0YoVKyQkJERGjBjh5a0d+Oa5s5fq6aeflry8PDnwwANl//33l88//3zgG84nmibw448/yvvvvy+ffvqprFmzRjZt2iRIId1tt93k/PPPl5NOOsnlOk8//XR58cUX9fVvvPGGHHfccS7fywtJgARIgAQ2E/ALMYRFFsqoUaM4riRAAl5KgJ/T3gfm7LPP3uKXeMmzcOFCycjIkMMOO2yL32PhjJdAgSKGwOjZZ58ViEBnvLx02vdoFsYrLCxM/wwCaNy4cZKamqr3vC5evFjw0uDMM8+UZ555pt9073feeUeOOeYY/QIQ91EM+cIMYBtJgAS8kQDFkDeOCttEAn5IgGLI3KBiQXzOOef0GfVBevD69eslOjpahg4dau4BPna1v4ihvfbaS66//notZAxhhKH4+uuv5fDDD9eOqE8++aSce+65vY5QTU2NbL/99lpIIfX0m2++oRjysfnM5pIACXgPAYoh7xkLtoQE/JoAxZC54XVFDJmr0bev9gcx1N8I3HHHHXLjjTfKQQcdpNPoeisQSv/973/l22+/lWuuuUa++OILiqH+4PL3JEACJNALAYohTg0SIIEBIUAxZA6zK2II+4ScpcnZ//yDDz6Q22+/XV566SUpLi7WEaRLLrlELr30Ut2gpUuXyvTp0+XLL7+UxsZGvXfl3nvvlT333NNpg8vKyuS+++4TpGnBFAP7wBClQNreeeedZ2rf5saNG+X+++8XtLGoqEine6Wnp8uOO+4oZ5xxhpx44om6DX3tqXJMmzPbvgMOOECLiQULFkhnZ6dAkCxZskRbwu++++5y0003aXEyEAV7iY488kid8r18+XKnj5w/f74ceuihcuWVV+pxMNrPNLmBGCE+gwRIwB8JUAz546iyTwNOwFh8urqfAYvI/Px8ueWWW/RC1NMFz5gxY4bem4BN94NRKIbMUbdCDCElC2Jl2bJletFcW1urF/7t7e1aIGGRf8ghh0hOTo7ssMMO8ueff8rvv/+u0+4gCLbZZpsejf7pp590KheOMhg2bJjstNNOAqfA7777Turr6+W0006TF154waWOQpjtvPPOUl5erj8LqAtpYxBFv/zyi+y7777y4Ycf6roQFUIa2erVq2X8+PE9TDggwvbZZx99nTvtM8TElClTZM6cOVqIbbvttoI9W99//73eu4O9ShBn9sUYH3DA59mK8uCDD8rll1/ea2okGGOcMKa//fabHieKISvIsw4SIIFAJkAxFMij78V9x+IdCyVfcUdyJoaQ1//AAw/oxQr+2ReKIS+efF7SNCvEELoCpzlEceLi4nTPPv74Y/nnP/+p95qkpKTI5MmTdaoVCqIh2MAPhzIIEIh7oyBqtN122+k9SohIYNFuHHANYXP00UcLnNL62+9i1Adxjs/5xRdfLHPnzu1BHftmELGCmDNKf2ly7rbPEBN4Dj6vl112WfczjTGIiYnRbog4NNgoVoshnMeFCBsc5h566CGBOHMsF110kTz22GOC6BBELArFkJd8YNkMEiABnyVAMeSzQ+ffDUdazIQJE7Srki8ULCLb2tr0m228tUXpS/AgHQiHkIaGhup/ni5wscK/iIgIU2lMVraLkSFzNK0QQxArf/zxhz52wL7ssssu8vPPP+uIyldffdXjd4jK4EUEIoiIJBrl4Ycf1ql1EEvYr+JYIISQYoe68b/7KxBhEEGupnf1J4bcbZ8hJsaOHasd3RwLRMcnn3wit956q06ZMwraPXXqVH3Qd1/7e/rjYPz+wgsvlP/85z86GoexwWfVviCN7+CDD5azzjqrx/cixZCrhHkd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lyFSOl544YUe2PAHCClfxx13XHf4nGPgfGZ98MEHcsQRR8hNN90kt956q5Cre5/AtrY2qaurE/wX4hwsP/74Y3n66afl7LPPJlf3sOq77rvvPj0/f//9d8Ei3lEMcc6ahwuOWKQj8g6xidTkE088UUeJ09LSdIXkao6rEe15++235dlnn9Up2xBE2PeKaKaRIkeu5rg6uxovlpGGiMyG2267jfN165H6XQ0UQ144pNingVAu3mYY+zKMZs6dO1enJ2GfCxalLK6JIRgs7L777nLttdfq1BnHgrfySE1EugIKx2DLmYVF0D777KPTNX/77TcZPXq0Nq4gV/OfwldffVWbURgFC0rMTSyCUMjVPFPcgbe+22+/vTapwGITKbOOYohszbNFejailkjdxh4sCPfnnntOf2cilRvzl1zNccXelTfffFOzwxzF33WITvyNx55MvCCBqCdXc1ydXY39bgsXLtRmQIZJDbluPVd/qoFiyAtH8+CDD5bPPvtMv4EzNqYazTTSt5BKgz9OLK6JISMlwYhoOHJDekd8fLxe5KNwDLacWfhjjT/Ut99+u15sopCre5/AsrIyvckXTlyIYODzjDz2m2++Wadykqt7XPGCCILo559/lrCwMKdiiGzdY+t416OPPiqTJk3SRj8PPfQQ56xJrP/4xz/k008/1YIShgkwR0JBtBhGCnCbhNkP/iYhnY5/u0wC/uty7MlCCj3+pn/yySfdlfB7wD2e/noXxZAXjmxfUQnkwCN8zsjQlgPX156h/t4CGW/nXIkMBeIYGMYJ559/vt6Ealjtkqs1XyCw3EbaK6JFSJElV/NcX3zxRTn99NPliy++0ItHFHciQ/wucJ09IurYh4E37pyzrnPDlcbfeaS+I93QvsDZFJEhpCVjPvYVfed87Zs7Iu5wkcMxGaecckr3xZyv5uarv19NMeSFI8z9Ku4NSl9iqK+8a+TB42wH7hlyzt04t+Gss87Se1rso5Xk6t5cdXYXIr1Im2lsbJTq6upe97hxvm5JD2/T4caFdC5YwhsFIhMpMtgriAUn3BERjett/yDZmpvPcOzDm3fsf+N3gTl2F198sT77CvPV2B9k1ICf4/fY33rQQQdxvppD23019mDhHDccW4BImxF9wwWcr25C9dPbKIa8cGCffPJJwRv43tzk8EYD1s90k+s5eP25yWGxhNSZ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AiRAAhRDnAMkQAIkQAIkQAIkQAIkQAIBSYBiKCCHnZ0mARIgARIgARIgARIgARKgGOIcIAESIAESIAESIAESIAESCEgCFEMBOezsNAmQAAmQAAmQAAmQAAmQAMUQ5wAJkAAJkAAJkAAJkAAJkEBAEqAYCshhZ6dJgARIgARIgARIgARIgAQohjgHSIAESIAESIAESIAESIAEApIAxVBADjs7TQIkQAIkQAIkQAIkQAIkQDHEOUACJEACJEACJEACJEACJBCQBCiGAnLY2WkSIAESIAESIAESIAESIAGKIc4BEiABEiABEiABEiABEiCBgCRAMRSQw85OkwAJkAAJkAAJkAAJkAAJUAxxDpAACZAACZAACZAACZAACQQkAYqhgBx2dpoESIAESIAESIAESIAESIBiiHOABEiABEiABEiABEiABEggIAlQDAXksLPTJEACJEDBHzIaAAAgAElEQVQCJEACJEACJEACFEOcAyRAAiRAAj5F4PPPP5cDDzxQ9t9/f8H/ZiEBEiABEiABdwlQDLlLjveRAAmQAAkMCgGKoUHBzoeSAAmQgF8SoBjyy2Flp0iABEjAfwlQDPnv2LJnJEACJDDQBCiGBpo4n0cCJEACJLBVBCiGtgofbyYBEiABErAjQDHE6UACJEACAUpg7dq1MmLECElKSpKioiKJjIzcgkR1dbVkZ2eLzWbT16SkpDilddVVV8n9998vU6dOlTvvvNPpNY888ohMmTJFTjnlFHnppZf0NWVlZfLiiy/K+++/LytWrJBNmzZJVFSUjBkzRs4//3w566yztqirNzH0zDPPyDnnnCMTJkwQ/G/H0t/vly5dKrNmzZIFCxZIaWmpxMbGyp577inXXHONHHDAAVvUh/bee++98uWXX2o2YWFhkp6eLrvvvrtu+0EHHRSgM4vdJgESIAHfIUAx5DtjxZaSAAmQgOUEjjnmGHnnnXfkv//9r5x55plb1D979my58sortSh59tlne30+hMSOO+4oOTk5sm7dOgkODt7i2nHjxsn3338vH3zwgRx22GH6988//7x+bn5+vhQUFEhqaqps3LhRvvnmG+ns7JRJkybJnDlzetTlCTGEvkHAdHR0yE477SQjR46U4uJiWbRokXR1dcncuXPloosu6m7Hzz//LOPHj5empibZbrvtZNttt9WCccOGDYLfnXvuuTJv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p3Tt2jWGa92wVbvjjjtkzpw5Mnv2bPnpp58sm2XLllVbiV9++UWuu+46efPNN2XLli3Su3dvueyyy+TCCy8Me02ytsHixYvl2WeflalTp8qSJUukqKhIevbsKWeccYZceeWVtj+GJrhG1u9XrlwpY8aMkVmzZsnq1ast106dOskRRxxh+2X37t3hGhnKWnMVFhZK//797d+FUaNGycMPPwzbWqmFz2AGCtVeuXPnTsnOzi7/nr8F0UHW3yH9XX/11Vdl+fLlkpubK3379pW//e1v8tvf/hau0eGUcePGyfjx46u9Kj09XUpLS+EaJddEz44YitEWfuCBB+wgfejQoXLWWWfJ+vXr5Z577pGsrCz56quvpEOHDjFa84atlv5It2jRQvbbbz/LpXnz5tWKoc2bN8sBBxwgq1atsgN6HXi+9tprVhjpH9CxY8dWqHwyt8G1114r999/v5x88skyZMgQyczMlGnTpsmLL74oAwYMkBkzZkhOTo7lBdfI+7wKd+17Bx10kHTp0sUOIlV4PvHEE/YH+osvvpA999wTrpEjrTbnNddcI4888ohs3769ihiiz0YHWP/OHnroofLnP/+5yoV//OMfJTU1lT4bHVKbW9cL0hchGzdulD/96U/2/76K+IULF0q/fv3k0ksvhWuUXL/99lvRrXLSc//4xz/klFNOscKT364owSZ4dsRQDDbwhg0bpFu3btZq8eWXX4q+ydCkb5MHDx4s5513njz22GMxWPOGr9LSpUulR48e9sb6Nk3ftFdnGdI37/oG7pVXXpFTTz21vLK/+c1v5J133pFFixaVv5lP9jbQvqaWoIKCggqNesMNN8htt90mKhQvueQS+x1cd7/fz5w5Uw488EBroXz00UfhuptIv/76a/vi4+9//7uoKKpsGaLPRgdYxdC5554rTz31VI0XwjU6rocffrj93dH//zUtqg7X6LiGy61/A/Rv6xtvvCEnnngif2N3H2lClYAYisHm1LfE559/vv3h0R+g0KR/PPXtslqK9G09aReB2sSQvolXYakCKjR99NFH9u2cutypRUQTbRC+Z+nbtX322afC4BKuu/+/cN26ddKmTRs5/fTT5aWXXrIFwrVuXD0ejxWWbdu2lUmTJtkXHJXFEGyjYxsUQzqYLC4uliZNmoQtAK6Rc/3000/lsMMOk4kTJ1prcVlZmWVb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\" width=\"640.1666666666666\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot xyz values individually over time\n", "anim=xyzdif_aniplots(rot_MT, rot_MT_err, name1='correct positioning', name2='positioning error')" ] }, { "cell_type": "code", "execution_count": 14, "id": "cac1e855", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\n", "\n", " ws.close = function () {\n", " comm.close();\n", " };\n", " ws.send = function (m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function (msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0MAAAJzCAYAAADNzcj2AAAgAElEQVR4XuydB3hVRfrGv/TeGynUUGzYZVXEuvbedl0bdhTE3gALuhZUFBuIrnVtu/beu7KKioqoSIckJKT33v7zDp78b25ucu85OUlueed5eFByzpyZ38y9mfd837wT1KmKsJAACZAACZAACZAACZAACZBAABEIQqEYCqARZ1dJgARIgARIgARIgARIgAQ0AYohTgQSIAESIAESIAESIAESIIGAJEAxFJDDzk6TAAmQAAmQAAmQAAmQAAlQDHEOkAAJkAAJkAAJkAAJkAAJBCQBiqGAHHZ2mgRIgARIgARIgARIgARIgGKIc4AESIAESIAESIAESIAESCAgCVAMBeSws9MkQAIkQAIkQAIkQAIkQAIUQ5wDJEACJEACJEACJEACJEACAUmAYiggh52dJgESIAESIAESIAESIAESoBjiHCABEiABEiABEiABEiABEghIAhRDATns7DQJkAAJkAAJkAAJkAAJkADFEOcACZAACZAACZAACZAACZBAQBKgGArIYWenSYAESIAESIAESIAESIAEKIY4B0iABEiABEiABEiABEiABAKSAMVQQA47O00CJEACJEACJEACJEACJEAxxDlAAiRAAiRAAiRAAiRAAiQQkAQohgJy2NlpEiABEiABEiABEiABEiABiiHOARIgARIgARIgARIgARIggYAkQDEUkMPOTpMACZAACZAACZAACZAACVAMcQ6QAAmQAAmQAAmQAAmQAAkEJAGKoYAcdnaaBEiABEiABEiABEiABEiAYohzgARIgARIgARIgARIgARIICAJUAwF5LCz0yRAAiRAAiRAAiRAAiRAAhRDnAMkQAIkQAIkQAIkQAIkQAIBSYBiKCCHnZ0mARIgARIgARIgARIgARKgGOIcIAESIAESIAESIAESIAESCEgCFEMBOezsNAmQAAmQAAmQAAmQAAmQAMUQ5wAJkAAJkAAJkAAJkAAJkEBAEqAYCshhZ6dJgARIgARIgARIgARIgAQohjgHSIAESIAESIAESIAESIAEApIAxVBADjs7TQIkQAIkQAIkQAIkQAIkQDHEOUACJEACJEACJEACJEACJBCQBCiGAnLY2WkSIAESIAESIAESIAESIAGKIc4BEiABEiABEiABEiABEiCBgCRAMRSQw85OkwAJkAAJkAAJkAAJkAAJUAxxDpAACZAACZAACZAACZAACQQkAYqhgBx2dpoESIAESIAESIAESIAESIBiiHOABEiABEiABEiABEiABEggIAlQDAXksLPTJEACJEACJEACJEACJEACFEOcAyRAAiRAAiRAAiRAAiRAAgFJgGIoIIednSYBEiABEiABEiABEiABEqAY4hwgARIgARIgARIgARIgARIISAIUQwE57Ow0CZAACZAACZAACZAACZCA34ihlpYWqaiokLq6Ouno6ODIkgAJeAGB4OBgiYiIkLi4OElISBD1heMFrWITSIAESIAESIAESGArAb8QQ52dnbJhwwZpbm7Wiy0swFhIgASGngA+m8bLifj4eMnKyqIgGvphYQtIgARIgARIgAT+JOAXYggRoeLiYomNjZXs7GyKIU5vEvASAhBDTU1NUlRUpF9WZGZmSmJiope0js0gARIgARIgARIIdAJ+IYY2bdokDQ0NkpubK+Hh4YE+puw/CXgdgcbGRtm4caN+YTF8+HCvax8bRAIkQAIkQAIkEJgE/EIMrV27Vtra2mTChAlMwQnMecxeezkBRIhWr14tISEhMnbsWC9v7eA3z8peqieffFJGjRolBxxwgOy3337y+eefD37D+UTTBMrKyuTNN9+U77//Xn744Qf55ZdfBHteL730Urnvvvvc1oe0U4z9M888I7/++qveJ5uamiq77LKLXHDBBXL00Ue7rYMXkAAJkAAJ/D8BvxBDWGShjB8/nmNLAiTgpQT4Oe19YM4666weP8RLniVLlkhGRoYcdthhPX5+3nnn6ZdAgSKGwOjpp5/WQsAVLy+d9j2a9frrr8vxxx/f4989EUPV1dVy1FFHyddffy3Ygzd58mT9d0FBgfz000/yj3/8Qx577DFfQcF2kgAJkIBXEKAY8ophYCNIwP8JUAyZG+OnnnpKzj777D6jPkgPzsvLk+joaBkxYoS5B/jY1f4ihr755hsd1dltt930n5dfflluu+02t5EhRFcPPvhg+eSTT+TMM8+Uhx56SLs0GgURIqSi7rDDDj42smwuCZAACQwtAYqhoeXPp5NAwBCgGDI31J6IIXM1+vbV/iKGnEdh7ty5cvPNN7sVQ88995ycfvrp8pe//EX+97//0SjIt6czW08CJOBFBCiGvGgw2BQS8GcCFEPmRtcTMYR9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QAIkQAIkQAIkQAJ+QoBiyE8Gkt0gARIgARIgARIgARIgARIwR4BiyBwvXk0CJEACJEAC3Qjsv//+snHjRv2HhQRIgARIwLcIUAz51nixtSRAAiRAAl5GgGLIywaEzSEBEiABEwQohkzA4qUkQAIkQAIk4EyAYohzggRIgAR8lwDFkO+OHVtOAiRAAiTgBQQGWwzV1dVJbGysF/ScTSABEiAB3ydAMeT7Y8gekAAJBAiB/Px8ueqqq+SDDz6QtrY2mTRpksyfP1+uuOKKHntWPvzwQ3n88cfl+++/l6KiIomIiNDXz5kzR/bbb79uxEaNGiX48/nnn3f7d/z/AQccIE8++aScddZZXT8z0w7c9MMPP8htt90mX331ldTW1upnnXnmmXLttddKaGio29FTv6hk6tSpct5558msWbNk2bJlEh0dLccdd5zcd9993YRBb8IE+3lGjx4tN910k8ydO1c/07F/jY2Ncv/992uO48aNkzvuuEOOOuoo+eWXX+Saa66R//3vf7qtp556qtx7770SHh7e1W7jmZ9++qlcfvnl8sUXX+jxwb/fc889MmHChG597OzslMWLF8tjjz0mK1eulJCQENl9993lxhtv1LyN4tjm7bffXu666y757bff5JBDDpHXX3/dLTdeQAIkQAIk4J4AxZB7RryCBEiABIacQGVlpey8886yefNmOf/882XHHXeUH3/8UV5++WVJTU2V1tbWbhv4sWgvLy+XffbZRzIzM/V9WHxDGH322WcyZcqUrj6ZEUNm2/Huu+/K8ccfL7m5uXL66adLSkqKfPPNN/LMM8/ICSecIC+99JJbthBDO+20k0CEnX322VqsQMj85z//0SweffTRHsLE2cygLzEEIYJ+QWxFRkbKgw8+KHl5efLiiy/q+sFyu+22EwjM1157TW6++WYtXIwC0QORAoG2xx57yIEHHijr1q2ThQsXaqGGcRoxYkTX9eDw/PPPy0knnST77ruvtLS0yHPPPSfLly+XV199VY455hh9rdFm9B3tufDCC7WggxCDOGQhARIgARLoPwGKof4zZA0kQAIkMOAErrvuOrnzzjt1tOecc87pet4DDzwgl156qYwcObKbGKqvr5eYmJhu7SouLhZEGBAhgkgxihkxZKYdTU1Nul1jx47V4iUsLKzrmQsWLNARLQgziIm+CsQQ/iA6s+eee3ZdeuSRR2qBAiFjpI1ZiQxlZWXJ77//LgkJCbruX3/9VSZOnKifCbEJ0WaU3XbbTQvLLVu2dP0bnoloEMYBkSqjvPfee3LEEUdoEQjxhwKxc+KJJ2qhNH369K5rEUlC3yBg169fr59tiCFwW7FiRY8I04BPOj6ABEiABAKAAMVQAAwyu0gCJOD7BLbddlu9UEZkB2lVRkFUIS0tTZKSknq1dsYek+bmZkF6FiIK3377ra7Lihgy04633npLRzkQuUF0yLHg+dtss41Oe7v99tvdiqG9995blixZ0u06pKAhbRBCYYcddtA/syKGZs+erdP4HAuEUVxcnBQUFHT7dwgeCNCamhr9c+OZEEMYm2HDhnW7HtE8iJuqqioJDg7WQghpjmvXru2RIgiBhBS+VatWyfjx47vEENIBEZFiIQESIAESsJ8AxZD9TFkjCZAACdhOAOlbu+66q46OOJdddtlFR0ccU8OQpoX9QVh4YyHuWBB16OjosCSGzLQDe1ywL6ivgigXol19FbTXMbpiXPvUU0/ptDlEnYx9UFbEENIHzz333G5NQLRs+PDhep+TY4FYQZocWCPqZYghpLhhDJzLP/7xD53Oh0hSRkaGTrfDPqG+ypdffqnTGI3I0NVXX633C7GQAAmQAAnYT4BiyH6mrJEESIAEbCfQlwhB9AGCxxBDMCnApv2Ghga57LLLdMoXohiITMAYABv9ESUyCvahYGHvbKDw8ccfy8EHH9zNQMFMO5DWh7S6efPmCdLLXBWkqEEguBNDiGhB/DgWQww5ptrBgGDDhg09omSIxGCvUW8GCo4GEXhGb6mDhhjCM3CNIYZgtFBRUdGjG6eccor897//FaQopqenCyJrJSUl+t96K2BlRPqcTR9sn1iskARIgAQCnADFUIBPAHafBEjANwiYSU974403tNPaE088oSMnjgX7UpYuXdpNDGHxDQMGLOgdC9Lbpk2b1k0MmWkHUruw3wZpZTNnzrQM2nCT80QMIQ3to48+0mlsjgV7iw499NABE0N9pclBOCFqBDF67LHHCtIH8f/GHqXewLgyfbAMkTeSAAmQAAm4JEAxxIlBAiRAAj5AAOlmSJXyxEDh7bfflqOPPrrHtYYgQHcdI0NI5XrllVd0RCU7O1vTwB4jGC1AIDlaa5tpByJThvvZTz/9pF3vHAvsrGEcYOy96W0YzIgh7EFCJAqCD+1HQUogzBbef//9ARVDnhgowJDh5JNPlosuukibKKBvjgURJKTToVAM+cAHk00kARLweQIUQz4/hOwACZBAIBCA4QD2BhUWFsoFF1ygU98gMCBikpOTtaiAmEFByhwiOHBzQ0QmJydHfv75Z+1oBnECwwFHMQRjAlhww9AA9s0wZcC1sIqGqHAUQ2bagbZgzxKiVHC2w/4gOMtVV1fLH3/8oZ3VED3yxE3O0zQ5MECKIEwlIE5gQw0BAj7oy0ClycFaOyoqSgsww1p70aJFut/O1trgAKZ77bWXFq0QiXCow34wpPPBcIFiKBA+1ewjCZCANxCgGPKGUWAbSIAESMADAps2bRJspofAaG9v14tpHLqKxTWiLLCHNopxWCgEAIQAUuH++c9/6mjR008/3U0M4R6koMHVDdEIRIcQucD5OwcddFCPQ1fNtAN1w6oa0Rrs7SktLdX7YXDu0OGHHy4zZszQYq6vYiYyhHreeecdbR4BowKca3TGGWdoRhB7AyWGwM04dBV7rzA+EHkYHzzXuUBsIg0RxgsQn3Chg0HG3//+d/2HYsiDDwQvIQESIAEbCFAM2QCRVZAACZDAUBGA0EEU5C9/+YtOAxuq4i3tGKr+87kkQAIkQAK+SYBiyDfHja0mARIIQAKI/iAVy7EYh67izB0cYjoYxVvaMRh95TNIgARIgAT8mwDFkH+PL3tHAiTgRwRgGw0LbKRTIXUMe31g0YwDOpctWyaxsbGD0ltvacegdJYPIQESIAES8GsCFEN+PbzsHAmQgD8RQPQHe02wPwVObZmZmXLUUUcJzr5BqtxgFW9px2D1l88hARIgARLwXwIUQ/47tuwZCZAACZAACZAACZAACZBAHwQohjg9SIAESIAESIAESIAESIAEApIAxVBADjs7TQIkQAIkQAIkQAIkQAIkQDHEOUACJEACJEACJEACJEACJBCQBCiGAnLY2WkSIAESIAESIAESIAESIAGKIc4BEiABEiABEiABEiABEiCBgCRAMRSQw85OkwAJkAAJkAAJkAAJkAAJUAxxDpAACZAACZAACZAACZAACQQkAYqhgBx2dpoESIAESIAESIAESIAESIBiiHOABEiABEiABEiABEiABEggIAlQDAXksLPTJEACJEACJEACJEACJEACFEOcAyRAAiRAAiRAAiRAAiRAAgFJgGIoIIednSYBEiABEiABEiABEiABEqAY4hwgARIgARIgARIgARIgARIISAIUQwE57Ow0CZAACZAACZAACZAACZAAxRDnAAmQAAmQAAmQAAmQAAmQQEASoBgKyGFnp0mABEiABEiABEiABEiABCiGOAdIgARIgARIgARIgARIgAQCkgDFUEAOOztNAiRAAiRAAiRAAiRAAiRAMcQ5QAIkQAIkQAIkQAIkQAIkEJAEKIYCctjZaRIgARIgARIgARIgARIgAYohzgESIAESIAESIAESIAESIIGAJEAxFJDDzk6TAAmQAAmQAAmQAAmQAAlQDHEOkAAJkAAJkAAJkAAJkAAJBCQBiqGAHHZ2mgRIgARIgARIgARIgARIgGKIc4AESIAESMCnCHz++edywAEHyH777Sf4bxYSIAESIAESsEqAYsgqOd5HAiRAAiQwJAQohoaqVnYpAAAgAElEQVQEOx9KAiRAAn5JgGLIL4eVnSIBEiAB/yVAMeS/Y8uekQAJkMBgE6AYGmzifB4JkAAJkEC/CFAM9QsfbyYBEiABEnAgQDHE6UACJEACAUpgw4YNMnbsWElKSpKCggKJjIzsQaKyslKys7Ols7NTX5OSkuKS1pVXXin33nuvzJo1S26//XaX1zz00EMyc+ZMOeWUU+SFF17Q15SUlMjzzz8v7777rqxevVq2bNkiUVFRMnHiRDnvvPPkzDPP7FFXb2LoqaeekrPPPlumTp0q+G/n4u7nK1askPnz58tnn30mxcXFEhsbK3vuuadcffXVsv/++/eoD+29++675csvv9RswsLCJD09XXbffXfd9gMPPDBAZxa7TQIkQAK+Q4BiyHfGii0lARIgAdsJHHPMMfLWW2/Jv//9bznjjDN61L9gwQK54oortCh5+umne30+hMSOO+4oOTk5smnTJgkODu5x7aRJk+T777+X9957Tw477DD982effVY/d/To0ZKbmyupqamyefNm+d///ift7e0yffp0WbhwYbe6BkIMoW8QMG1tbbLTTjvJuHHjpLCwUJYuXSodHR2yaNEiufDCC7va8fPPP8vkyZOloaFBtttuO9l22221YMzPzxf87JxzzpHFixfbPl6skARIgARIwF4CFEP28mRtJEACJOBTBD788EM59NBDZa+99tICxLlss802smrVKvnmm290lKSvsuuuu8pPP/0kH3/8sRx00EHdLkUdqCszM1MLhpCQEP3zlStXSn19vY6mOJZ169bpyEpeXl6PZ9sthn788UfdN0SkXn311W5t//bbb+Xwww/XbYTgmzBhgm4mIlCINM2bN0+uvfbabm2vqKiQjRs3CniwkAAJkAAJeDcBiiHvHh+2jgRIgAQGlACiGYhqQKwgooGoiFE+/fRTLQx22WUXgWBwV+6//3657LLLdKQHkSbHMnv2bLnjjjvkmmuukTvvvNNdVfrn//rXv+SCCy6Qq666SqejGcVuMXTiiSdqEfT444/riI5zQfof0gAvv/xynQqIcuSRR+rUPoi/nXfe2aP+8CISIAESIAHvI0Ax5H1jwhaRAAmQwKASeOCBB+TSSy+VadOmdUvtOvnkk+Xll1+WRx99VM4//3y3bSorK5OsrCwJDw/Xe3+w5wYFgmvUqFE6yvPbb7/ptDLH0traqqNJiMJgr05zc7O+p6ioSBC5QirfG2+8MSBiCClwiYmJUldXJ+Xl5Xr/lHP54YcfZI899ugWPbvpppvklltu0REl/L3vvvtKRESEW0a8gARIgARIwLsIUAx513iwNSRAAiQw6ARqamq0SQIK9snExcVpMTNixAiJjo7We3hiYmLk9ddf13+cy3XXXadT4FCOO+44LVyQQgYjAxQjwoRUOOwZcix//PGHHHvssdo8obcC8wKYGhjFzshQaWmpNj3wpMBsYs2aNfpSpM2ddNJJ8v777+v/hxDabbfddGof9ldhzxELCZAACZCA9xOgGPL+MWILSYAESGDACcyYMUObBMCsAKYFt956q9xwww3a/Q2RI5S5c+fKzTff3KMtECqG29prr70mJ5xwghYFn3zyib72rLPO0uYLcJPDcxzLDjvsoKNFEFHYe4M9OfHx8XpPkbGfab/99hMIIKNYFUNPPPGEnHvuud3c5hCJGjZsmISGhsppp53WJ2eYO8BtzrEgavTOO+/IF198oSNbjY2Nuu0PP/ywR9G0AR9YPoAESIAESKBPAhRDnCAkQAIkQALayADpaxAn2Ds0ZswYndb2+++/6z1FnhakvCFVDilnMBGAgMjIyJCWlhYddXK05kZUCHXj54g+GaYKxrMgziCePBVDsOiGoIEYe+WVV3o02Uhtc7TehnscxFdTU5OO9sBEwWqBEIKDHNz3ECmC0EpISLBaHe8jARIgARIYBAIUQ4MAmY8gARIgAV8gALMEpLThXB0YFjinp3nah0suuUQefPBBue2223SqHQwVXAkUuNfBnhoGBDAicC7Yh/PVV195LIYQnUGbt99+e/n111+7VYc9SHDMg1W28zlEhr04bL7dRYc8YQCbcAjB7777Tu81YiEBEiABEvBeAhRD3js2bBkJkAAJDCoBI8XNeOh///tf+dvf/ma6DcuWLdNW2Uh5gxj66KOP5M0335Sjjz66W13Yr4MUNZxJBBE2ZcoU/XMIFzjPzZkzR/+/p5EhnPmD+mpra/WhrjjcFQUmCUjx++c//6n/31kMYR/T3nvvrfdKPfbYY1q4ORZEu7A3CFEuCCoURK0OPvjgHnuDEFXDeUo4IwkHscJKnIUESIAESMB7CVAMee/YsGUkQAIkMKgEsIA30uMgKpAmFxYWZqkNEydO7IrOpKWl6RQ57MtxLsZeJaTIIaqDayGm1q9fr62ssUfHUzGEumHbDUMH9ctN9tlnHy1gIFAgvHA2ECJWzmII9z333HN6PxGc7MAA6XtImcOZSLAdr6qq0vuAjINXEc1avny5wFQBqYUwmoD4WbJkiRZCiK7dddddltjxJhIgARIggcEjQDE0eKz5JBIgARLwegLGYaLXX399VyTFSqMhYiAIUHD20IIFC1xWg6jNI488ov/AqS0yMlJHXxAVgjA54IADTIkhPAR1wawBDnWI9kBkwRACBgfonysxhPvw/Pvuu0/bfEMEIWKFyA6EEaJaOI8oOTlZ9+Ptt9+Wt956S6fdQQTBmhsCEiIQBhQ4qJWFBEiABEjA+wlQDHn/GLGFJEACJDAoBGAAkJOTI9XV1bJhwwYZPnz4oDyXDyEBEiABEiCBoSJAMTRU5PlcEiABEvAyAtinM3v2bL1PCPuFWEiABEiABEjA3wlQDPn7CLN/JEACJNAHAeyHgXMcrK0/+OADbQmNvTDjx4//P/bOBECK4mz/7+7Ccsohl9woCN4nHgFvReOVaNTvS+IZj2BUPPKXREQFvGPw80TRzwvPfGqMJh4JRtEYPFCIiIiiIAqKF/fNsuy/nprp2Zll9pilZndm91fadE93dXX3r2pn6un3rbfgBgEIQAACEGjwBBBDDb6KeUAIQAAClROIJjCVCNJ4lxtvvNEUYpsEAQhAAAIQaAwEEEONoZZ5RghAAAIQgAAEIAABCEBgEwKIIRoFBCAAAQhAAAIQgAAEINAoCSCGGmW189AQgAAEIAABCEAAAhCAAGKINgABCEAAAhCAAAQgAAEINEoCiKFGWe08NAQgAAEIQAACEIAABCCAGMrxNqCZzV944QXbZpttrFWrVjl+t9weBCAAAQhAAAIQgEA2Caxatcrmzp1rRx99tJ8om7R5BBBDm8cv62ffc889du6552b9OlwAAhCAAAQgAAEIQCB/CIwfP96GDh2aPzeco3eKGMrRiolu6+WXX7bDDz/c1OA1BwgJAhCAAAQgAAEIQKDxEpgxY4Z/UT5x4kQbMmRI4wUR6MkRQw7k7Nmz7dFHH/WNas6cObZ27Vrr27evnXTSSXbxxRfXyD3toIMOstdffz1ttbz00kv24x//uFZV9uabb9rgwYNt8uTJNmjQoFqVwUkQgAAEIAABCEAAAg2DAH3DsPWIGHI8L7vsMrvjjjvs2GOP9YKjuLjYJk2aZE8++aTtsssu9vbbb1uLFi2qJC8xNHPmTLvllls2yafZ3Lt27VqrmqPB1wobJ0EAAhCAAAQgAIEGSYC+YdhqRQw5nu+99563BLVv3z6F7hVXXGHXXXed3XnnnXb++edXK4bmzZtnWkImGnxImpQFAQhAAAIQgAAE8psAfcOw9YcYqoLnBx98YLvuuqsfnKYxO1UlWYYkhBTdY+XKlda6dWsrLCzc7NqiwW82QgqAAAQgAAEIQAACDYYAfcOwVYkYqoKnxvocddRRduWVV9rVV19drRjSuJ6mTZvamjVrrHnz5nbIIYfYtddea7vvvnuta40GX2t0nAgBCEAAAhCAAAQaHAH6hmGrFDFUCc/S0lLbb7/9vAvdhx9+aAMGDKiS/BlnnGHdunXzY4w05kjn3X777aZyFBFOZVWX5s+fb1qSUxQxhAAK1dHjOAQgAAEIQAACEGj4BBBDYesYMVQJT40Ruuuuu7xlZ+TIkbWiPn36dNt77729kJLLXXVp9OjRNmbMmLTZEEPV0eM4BCAAAQhAAAIQaPgEEENh6xgxlIZnFDjh7LPPtnvvvdccpFpTV3jup59+2r788kvr2bNnleVgGao1Zk6EAAQgAAEIQAACjYIAYihsNSOGKvCMrDOnnXaaPfjgg5sdBGH48OE2duxYmzp1qu2xxx4Z1x4NPmNknAABCEAAAhCAAAQaLAH6hmGrFjGUxFMuahJDp5xyik2YMGGzhZCKPu644+y5556zr776yo8pyjTR4DMlRn4IQAACEIAABCDQcAnQNwxbt4ihOE9Fixs1apSdfPLJXggVFRWlJb1w4UJbtmyZ9erVy1q2bOnzLFmyxFq1auUDJySnN954ww4++GDbbbfdfECF2iQafG2ocQ4EIAABCEAAAhBomAToG4atV8SQ4zlu3Di74IILvMCRKKoohLp06WJDhgzx5BU1TmJp0qRJprmFlJ599lk799xzTeOD+vXr50WR3OIefvhhH2L71VdftYEDB9aq5mjwtcLGSRCAAAQgAAEIQKBBEqBvGLZaEUNJAqcytAceeKC99tprlYqhWbNmeavStGnT7JtvvrGSkhLvEnfYYYfZiBEjbJtttql1rdHga42OEyEAAQhAAAIQgECDI0DfMGyVIobC8gxeGg0+OFIKhAAEIAABCEAAAnlLgL5h2KpDDIXlGbw0GnxwpBQIAQhAAAIQgAAE8pYAfcOwVYcYCsszeGk0+OBIKRACEIAABCAAAQjkLQH6hmGrDjEUlmfw0mjwwZFSIAQgAAEIQAACEMhbAvQNw1YdYigsz+Cl0eCDI6VACEAAAhCAAAQgkLcE6BuGrTrEUFiewUujwQdHSoEQgAAEIAABCEAgbwnQNwxbdYihsDyDl0aDD46UAiEAAQhAAAIQgEDeEqBvGLbqEENheQYvjQYfHCkFQgACEIAABCAAgbwlQN8wbNUhhsLyDF4aDT44UgqEAAQgAAEIQAACeUuAvmHYqkMMheUZvDQafHCkFAgBCEAAAhCAAATylgB9w7BVhxgKyzN4aTT44EgpEAIQgAAEIAABCOQtAfqGYasOMRSWZ/DSaPDBkVIgBCAAAQhAAAIQyFsC9A3DVh1iKCzP4KXR4IMjpUAIQAACEIAABCCQtwToG4atOsRQWJ7BS6PBB0dKgRCAAAQgAAEIQCBvCdA3DFt1iKGwPIOXRoMPjpQCIQABCEAAAhCAQN4SoG8YtuoQQ2F5Bi+NBh8cKQVCAAIQgAAEIACBnCWwcWOZrduw0S2lfr22JLZeVxLb996Ut+03/320TZ482QYNGpSzz5EvN4YYyvGaQgzleAVxexCAAAQgAAEINBgCZWUxIbK+tFx8rPfCxO2LryVI0m47sRI7Ly5eUs5L2pdy3O2Pi5zYOlZGVWntgln27WPDEUOBWh1iKBDIbBWDGMoWWcqFAAQgAAEIQCBXCGxwAqCktMyLDIkBLSXRdloREomTmJhIJ16SRUt6IZNaxjpd110r1xNiKGwNIYbC8gxeGmIoOFIKhAAEIAABCDQ6ArJ4bHDuV+rsl8Q7/V50+M9JIiTpuM+XlDdZnKyPnxOVtWmZkaBxlpYkYZPIlyR0tM/dWg6lMmtqpdbENrj1Bit221o3LYg+a19JfF+p2472x/YV+3zxc/z5JfF9sf3NC0utReEGa1bgtt3SzG0Xa+3OU1mx8+NLWazMJmUbrMiVU+TWU+attgPvX4JlKFCLQQwFApmtYhBD2SJLuRCAAAQgAIGwBCQ4vLCoYNUoFx0x8VFRhKQVEnFREhMSKjPmmlWVcJGLVSRgYufErCu+DLe426vTVGAb46IiEgaxdZN4p79JQjAki414nuRjLr/yRqLDb/t9qaLDl1dJ2U2c2IgJDZ2ra2yatyguOlROLqc352+wwQ+sRgwFqqR6EUP//ve/7a677rLPPvvMFi1a5P44U/863U3ZnDlzAj1ifheDGMrv+uPuIQABCEAgHIFIbKhjn+j0O/ERc7GS0JAYKXexSrZIpFpEUi0kOichJJIEhcqrKGwqFy6xvOFTzErhRUS88x/r9McsFzFBoe1ywSGxEbMslAuLyNoQiYpEfi8MonJilolIVERl6Dqp+8utHuXCpILgid9jeB4NvMTCpmZFxW6J1m67iT6X73vz81U2+IYpiKFATaHOxdA999xj5513nhUXF9uAAQOsffv2aR9l0qRJgR4xv4tBDOV3/XH3EIAABHKZgKJWlWyMWRtkQYiExAZ9jkRFfDsmQNLni+WNnSNhEm1HZZboOvHyfRlx8ZKwovjzkq8Zs4ZscPcWWUN82Rn4UkVWifKOflw8xK0CkRjQOrlDnyI44q5SsipsIji8hSN1f1SWhEpF8ZIQLXEXqkTeuDtUclkp91aQDYGVy60yC/fmBUa0OFGxyecmSWIjLkKS82g7IUiapQqVSLQkjlcQMl7EpIoZa1JJGcrnDALVJfqG1RHK7Hidi6E+ffpYhw4d7B//+Id17Ngxs7tthLlp8I2w0nlkCEAgbwmUqtOf1NGPrAjqxCePrZAIiImGuMCocE7KeQmRkkZspDkvco+SkNB2uaiJCY7YNWPX1f0mp0hAFCVZGxLb3hIRWSDKrRIxd6Vyy0RKngpWh0hQxCwXyeVF1ohkK0WS5SNx7fLzElaLuIWkXKzEzisqqGOfsLxttRncuDrrmQoJf04FsZFi/YjER03yVBQ10TkSG/HtdPdXA4GRAYV6z0rfMGwV1LkYatmypY0dO9Zbh0jVE6DBV8+IHBCAQMMkkOwSFXXi1cFPbCdZElKsCvFxFRWtCgnLRrKLVdz6kOxiVTFfZPWIXLE2uLC6GzeU2MbSEnMbZm7tt91SmNLBL3UDnsvFQ1HCiqCO/8a4gIhvJwmNmOtT7LjGPxQlxl1E23Hx4SwGkZtULH9MKHjxEi8vEjKxMmLnFbnzou1IuERrBEQ2/5bcG39ZEXxn3XXco0579DkhNJKPqYNf8Zx4x7/i+RUtGQm3qurERjVCIipHgqaBiYps1nY2y6ZvGJZunYuhgQMH2vHHH28jR44M+yQBSnviiSe8UPvoo4+sVatWNmTIELvxxhutd+/eNSp96tSp/rneeust2+h+sPfcc0+7+uqr7YADDqjR+eky0eBrjY4TIQABRyDZUhEJhshlyVsOEi5LkdUh7jblBEVkzYisGMkiofxYqjiJCRBncSjd4HTCer8ucyKhLC4etC0BsdHtl3jQUhYXFAUuSpJp/8YSK3D7Cssiy0G5YFAnXh378o6/69gHEgwpwiBFnJRbMGJiAotDnf5xFRQmCYdaiANvlUgWBJG40Hpzy6sobJLLi8qPu00VFtUpNi7WcAnQNwxbt3Uuhp555hkbNmyYTZkyxbp37x72aTajtDvvvNPf1+DBg+2UU06xH374wW699VZr1qyZvfvuu9atW7cqS1eeAw880Dp37mwXXHCBP+/ee++1jz/+2F566SU77LDDanV3NPhaYeMkCAQjEIWjTRECSWMeolC1WkduTwnRIVcoLzjKRUfKsQ2RYHCWBYmFuGDQ2gsIWRxcnrKN6514cNGNStd7IVEWFwzJwkECwmWKiQiJCSckClxI1iZu7a0CCVemZGtCvJOfgYWhMsEQWSSicRGFCIZgbTDjggpcpzuyJqgD7rcja4PW6baVx+VNWBuSt+PnJMpJ1+HPotgodGKIBAEIJAjQNwzbGOpcDOn2H3nkES8YjjvuONMYoqKi1LcliiZ35ZVXhn3SKkpTRDvdR//+/e2dd96xJk3cF71L7733nu2999525pln2n333Vfl/fzoRz+yGTNmeKtSr169fN5ly5bZjjvuaHIN/OSTT5x1ufpBcRUvQoOvs2bAhbJAILJKREIhto5bIOLiwVsd4hYKiQlvcXBuSKVOBMiqUOqsCxIHG+ICoTRZNHjrQ8xFSZYGWR/KnBCQWNA+Lxoiy4MTChIMEhgSDN69yYuHmHDQ50K3RCKiUMckJPzcDk5AeDGxMeaCFLkiVeKShGDIQmMKXGSZEwxlXhQ0cevo7X4TK4iLgQJvMXCfU4REJYIhYV2oQjQkRElkLYgLkmycW4vfmsB4KQ4CEMgiAfqGYeHWuRiaPXu2HXHEEfbFF19U+iQSDaV6C1pH6YEHHrCzzjrLHnroITv99NNTrnrQQQfZtGnTvKVIEfDSpblz51rfvn3tjDPOsAcffDAly+jRo23MmDHedW7ffffN+Ilo8Bkjy5sTZHHQ2GUJBi0SBLF17LNf3N/BBlkPnEVgg9suLVFn361951+CIbZWxz+2LfHg8rtOvV+7Y+r8qxyJhNjnmNtS5KYUuSip3Mg9SSIhZmmIiQaJB7kwxdZx64P7LDemApdXczNEa+3Ton3ROIWYW1O5q1FMXFRwPYqPaYhZMeru7z9vGkw93OhGCYa4aNhYEBMCEg7lIiLWoS/w4x9i1gKJCAmI2BLfdlGWCoN0+mtquSgXN2ktHbKcYG2ohxbFJSEAgRAE6BuGoFheRp2LIbmLyfqisThySasstHZNx+mEwHHuueeaQn5LqG277bYpRV5++eV2ww032PTp022XXXZJe7k//elP9otf/MK7xZ1zzjkpeSZOnOjF32233WYXXnhhxrcbNfiH77zOdt1xQOz8+LxMMa9196/f0D+RH3tZ+cRq8WMJD/eyWIjOlLmdEgfj4TuTyi9wZcY+JvnIux2xXeX7ovKUf5PyXec2utXy0+Ln+rLKzF8nohPfKIgf00eFf9U96Dp+8W/tNYGcK9uJCLcjth0t6szrurrH+PHEMVkBtD+eV+X4bd2H344d17YiK5Xni53jrQhR2fFzvSjwAiB2X7HPMStCbO2EgzsnJhLcOm5h0LbyxMRCbL9EQ2ztPuNqlPHfTF2foBqUaNhY4GrMdfi9gJC1wX0uX5cLidjA6XI3pYQlIi4cCpNERKFEhNtf2KSpW8cERvkYh811dapCMMQtJgiGum5NXA8CEIBA9QQQQ9UzyiRHnYuh1q1b2/Dhw23UqFGZ3GdW8x577LH2/PPP2+rVq61FixYp19LksOeff7698MILdtRRR6W9j5tvvtkuvfRSe/HFF+3II49MySO3ObnK6ZlvuummKp9j/vz5piU5yfVOYm3ymS1tUM+Y+x4JAvlAQHahUgmEuFjw23FLgxcOcQEREwzlAqLc+hC3AiQ65rIyJFkiJB6cVUJiIbJARKIhtnYiwomHoqZu0bqioIi7QSWESXSdhFiJREs0PiLpc9I9IRjyoTVyjxCAAAQaDgHEUNi6rHMxpKAJsrZIYORKOvTQQ+3VV1/1rkSFFVwnIhe6p556yk488cS0t3zNNdfYVVddZa+88oodcsghKXkiFzo9r4I0VJUil7p0eRBDudJaqr4P2XRidh2t4zYgdfr1WR1+LxC0dnm8MNBaYiD+2R0vkytSfL/r7ccsDN6tJ2aB8IOc3T51wr27UnxfbIxDkbMmxcc6uHxeJLi1FwzefamJH6NX4EKlRmJBwkFiocCLBndcosFZJJp4IaHPxf7c8kHY6URCReGie8x8jFx+1DJ3CQEIQAACEKg/AoihsOzrXAz99re/9S5nEg65kqqyDI0bN84He6itZWjmzJm20047bbZl6J6rzrJd+rvADCkdzAL/UU5mSvpX27EsSR3RxDluX2J3/JzkY1GFxPdVWp4K2eQasWg/qf3f+MUS5em8aF9y7Uf73b3Hd5c/h+vz6xy3aB3bVMfbfVbn3odcLfRrdfoL3H7f6XefC71ocPnU+Xfn6JgXBT5v7Hhsrc/OihA/v9DnlYCI8sS2VUYTiQ0JZn9dla/ndjflLQUIgFz5m+Y+IAABCEAAAg2VAGIobM3WuRiaNWuWD1KgUNUaQ7P11ltvEk1OjxhFZAv7uOlLy4cxQ5MnT7ZBgwbVBQ6uAQEIQAACEIAABCCQowQQQ2Erps7FkH8L797WaxB8VaGm6zKa3P33329nn312pdHkNJmqwm9XFk1uzpw51q9fvyqjyanhKvx2pokGnykx8kMAAhCAAAQgAIGGS4C+Ydi6rXMxpHExNZlvpy4DLChstqLXbbfddmnnGfrVr35lEkxKCxcu9PMHyXKl+YOitM8++5hc4mT56tmzp9+9fPlyHzxBE7B++umnNXruitVLgw/b4CkNAhCAAAQgAAEI5DMB+oZha6/OxVDY2w9XmkJfX3zxxT7c96mnnurnFbrlllusqRtUrslXFfhBSXMJTZgwwSZNmmSagyhKCheuz126dPHuf7IiKVy3xJGizB1++OG1ulkafK2wcRIEIAABCEAAAhBokAToG4atVsRQEs/HHnvMFCZbAkZWnyFDhvg5hjSuKUqViSEdf/fdd23kyJH29ttv+8h0AwcO9BOuJoumTKuPBp8pMfJDAAIQgAAEIACBhkuAvmHYuq1zMaTobM8++6y9/PLLaZ9EFpQTTjjBhg4dGvZJ87Q0GnyeVhy3DQEIQAACEIAABLJAgL5hWKh1Lob22msv06LJTNOlYcOG2ZQpU/zYHZIZDZ5WAAEIQAACEIAABCAQEaBvGLYt1LkYateunV1//fV23nnnpX2Su+++27uaLV68OOyT5mlpNPg8rThuGwIQgAAEIAABCGSBAH3DsFDrXAy1atXKrr32WrvkkkvSPomCFkgMrV69OuyT5mlpNPg8rThuGwIQgAAEIAABCGSBAH3DsFDrXAztvvvu1rVrVx9hLV068sgjbcGCBTZjxoywT5qnpdHg87TiuG0IQAACEIAABCCQBQL0DcNCrXMxdNNNN9mIESPsiiuu8BagaCLT9evXe4vRdddd59fKQ2LMEG0AAhCAANTrTXEAACAASURBVAQgAAEIQKCcAGIobGuoczFUUlLi59x5/fXXTeOHBgwY4J/ok08+saVLl9r+++/vI81FIins4+ZfaTT4/Ksz7hgCEIAABCAAAQhkiwB9w7Bk61wM6fYliDQ26PHHH7dPP/3UP1H//v3t5JNPtosuushPdEqKEaDB0xIgAAEIQAACEIAABCIC9A3DtoV6EUNhH6Fhl0aDb9j1y9NBAAIQgAAEIACBTAjQN8yEVvV5EUPVM6rXHDT4esXPxSEAAQhAAAIQgEBOEaBvGLY6EENheQYvjQYfHCkFQgACEIAABCAAgbwlQN8wbNUhhsLyDF4aDT44UgqEAAQgAAEIQAACeUuAvmHYqkMMheUZvDQafHCkFAgBCEAAAhCAAATylgB9w7BVhxgKyzN4aTT44EgpEAIQgAAEIAABCOQtAfqGYasOMRSWZ/DSaPDBkVIgBCAAAQhAAAIQyFsC9A3DVh1iKCzP4KXR4IMjpUAIQAACEIAABCCQtwToG4atOsRQWJ7BS6PBB0dKgRCAAAQgAAEIQCBvCdA3DFt1iKGwPIOXRoMPjpQCIQABCEAAAhCAQN4SoG8YtuoQQ2F5Bi+NBh8cKQVCAAIQgAAEIACBvCVA3zBs1SGGwvIMXhoNPjhSCoQABCAAAQhAAAJ5S4C+YdiqQwyF5Rm8NBp8cKQUCAEIQAACEIAABPKWAH3DsFWHGArLM3hpNPjgSCkQAhCAAAQgAAEI5C0B+oZhqw4xFJZn8NJo8MGRUiAEIAABCEAAAhDIWwL0DcNWHWIoLM/gpdHggyOlQAhAAAIQgAAEIJC3BOgbhq06xJDj+dVXX9nDDz9sf//732327Nm2fPly69Onjx111FF22WWXWYcOHWpE/YwzzrAJEyakzXv33XfbueeeW6NykjPR4DNGxgkQgAAEIAABCECgwRKgbxi2ahFDjuf48ePtwgsvtB//+Md24IEHWps2bWzKlCn20EMPWdeuXf32VlttVS35SAw98sgjm+TdZ599bNttt622jIoZaPAZI+MECEAAAhCAAAQg0GAJ0DcMW7WIIcdz5syZ1r59e+vWrVsK3fvuu8/OOeccu/TSS+2Pf/xjteQjMVRWVlZt3ppmoMHXlBT5IAABCEAAAhCAQMMnQN8wbB0jhqrgKXe5tm3b2hFHHOFd6KpLkRjauHGjrVixwlq1amVFRUXVnVblcRr8ZuHjZAhAAAIQgAAEINCgCNA3DFudiKEqeM6aNct22GEHO/XUU/2YoupSJIbkZich1bRpUxs0aJCNGjXKDj744OpOT3ucBl8rbJwEAQhAAAIQgAAEGiQB+oZhqxUxVAXPk046yZ5++mn75z//aYceemi15H//+9/b2rVrba+99rItttjCPvzwQ7v11ltt8eLF9sQTT9h//dd/VVnG/PnzTUtymjFjhg+8MHnyZC+sSBCAAAQgAAEIQAACjZcAYihs3TcoMbR69Wq76aabakxIlhxFjUuXNEbod7/7nZ199tn2v//7vzUus2JGRarbZZddrLCw0BYsWGDNmjWrtKzRo0fbmDFj0h5HDNW6CjgRAhCAAAQgAAEINBgCiKGwVdmgxNAPP/xgnTp1qjGhSZMm2UEHHbRJfomfoUOH+uhyzz77rBUXF9e4zHQZhw8fbmPHjrV//etftv/++1daFpahzcLMyRCAAAQgAAEIQKDBE0AMha3iBiWGQqB54IEHvDVIbnF/+9vfrHnz5ptd7Lhx4+yCCy6wP//5z/azn/0so/Jo8BnhIjMEIAABCEAAAhBo0AToG4atXsRQEs8HH3zQCyFZi55//nlr0aJFENoXX3yx3XbbbbUa90ODD1IFFAIBCEAAAhCAAAQaBAH6hmGrETEU56kJVs8666waCSG542nRhKwKva20atUq0/xCrVu3Tqmh2bNn25577ukDKsybNy9jlzsafNgGT2kQgAAEIAABCEAgnwnQNwxbe4ghx/Ovf/2rHX/88aaQ2ArAUNEiJIFz3HHHJchHgQ5kSVIQBqX333/fCylFoNtuu+28KProo4/s/vvvt/Xr19szzzxjxxxzTMa1R4PPGBknQAACEIAABCAAgQZLgL5h2KpFDDmeVUVxE+7evXt7q06U0omhb775xhQo4b333rOvv/7a1qxZY507d7YDDjjAR6XbbbfdalVzNPhaYeMkCEAAAhCAAAQg0CAJ0DcMW62IobA8g5f28ssv2+GHH27jx4+3nXfeOXj5FAgBCEAAAhCAAAQgkD8EojkoJ06caEOGDMmfG8/RO0UM5WjFRLd1ww032OWXX57jd8ntQQACEIAABCAAAQjUJQG9KNdUMKTNI4AY2jx+WT9b8xxpPNMtt9xie++9d9av11guEL1VweIWvsZhG56pSoQrXLNDIDul0l7hmh0C2Sk139qrgnbNnTvXjj76aOvRo0d2oDSiUhFDOV7Z+IVmp4Lgmh2uKhW22WELV7hmh0B2SqW9wjU7BLJTKu01O1zzpVTEUI7XFH+g2akguGaHK2IIrtkjkJ2S+S6Aa3YIZKdU2itcs0OgcZeKGMrx+ueLLzsVBNfscEUMwTV7BLJTMt8FcM0OgeyUSnuFa3YINO5SEUM5Xv988WWnguCaHa6IIbhmj0B2Sua7AK7ZIZCdUmmvcM0OgcZdKmIox+t//vz5fuLWs846y3r27Jnjd5s/twfX7NUVbLPDFq5wzQ6B7JRKe4Vrdghkp1Taa3a45kupiKF8qSnuEwIQgAAEIAABCEAAAhAISgAxFBQnhUEAAhCAAAQgAAEIQAAC+UIAMZQvNcV9QgACEIAABCAAAQhAAAJBCSCGguKkMAhAAAIQgAAEIAABCEAgXwgghvKlprhPCEAAAhCAAAQgAAEIQCAoAcRQUJwUBgEIQAACEIAABCAAAQjkCwHEUA7X1BNPPGFjx461jz76yFq1amVDhgyxG2+80Xr37p3Dd123t3bDDTfYtGnTbOrUqfb55597NvPmzav0Jr799lsbMWKEvfDCC7Zs2TLr37+/DRs2zM4555y05zTWOpg9e7Y9+uijNnHiRJszZ46tXbvW+vbtayeddJJdfPHFvj0mJ7jWrN0vWLDARo4cae+99559/fXXnmuPHj3s4IMP9u1y6623hmvNUFaba/Xq1bbTTjv574WhQ4fa+PHjYVsttU0zuE5CpWetWbPGmjdvnjjO90BmgPUbpN/0Z555xr744gtr2bKlbbfddvb73//efvrTn8I1M5w+9+jRo23MmDGVntmkSRMrKSmBbS3YNuRTEEM5Wrt33nmn76QPHjzYTjnlFPvhhx/s1ltvtWbNmtm7775r3bp1y9E7r9vb0g/1lltuaXvssYfn0q5du0rF0NKlS22vvfayr776ynfo1fF87rnnvDDSF+ioUaNSbr4x18Fll11md9xxhx177LE2aNAgKy4utkmTJtmTTz5pu+yyi7399tvWokULzwuuNW/zEu5qe/vuu6/16tXLdyQlPB944AH/A/3WW2/ZDjvsANeaI60056WXXmr33HOPrVy5chMxRJutOWB9x+6///7261//epOTfvnLX1phYSHtteY4Ezk1r41egixevNh+9atf+b97CfiPP/7Ytt9+e7vgggvgWguuH3zwgWmpmLTvj3/8ox1//PFefPLbVQu4DfgUxFAOVu6iRYusT58+3mrxzjvvmN5kKOlt8t57721nnnmm3XfffTl453V/S3PnzrVtttnGX1hv1PSmvTLLkN686y3cn//8Z/vZz36WuNmf/OQn9ve//90++eSTxJv5xl4HamuyBLVv3z6lUq+44gq77rrrTELx/PPP98fguvntfsqUKbbPPvt4C+W9994L181E+p///Me/+PjDH/5gEkUVLUO02ZoDlhg6/fTT7aGHHqryJJjWnKlyHnTQQf43R3/7VU2oDtfMuFaWW98B+m59/vnn7eijj+Y7NgzWBlMKYigHq1Jvic866yz/46MfoeSkL1C9XZalSG/rSeUEqhNDehMvYSkBlZxee+01/4ZOLneyiChRB+lblt6u7brrrimdS7hu/l/h999/b507d7YTTzzRnnrqKV8gXGvHtbS01AvLLl262Lhx4/wLjopiCLY1ZxuJIXUk161bZ1tssUXak2Fac6ZvvPGGHXDAAXbLLbd4S/GGDRs824rux3wP1JxpVTllcevatatvu3JHLCoq4js2DNoGUwpi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AAEIQAACEMiMAGIoM17khgAEIAABCEAAAhCAAAQaCAHEUAOpSB4DAhCAAAQgAAEIQAACEMiMAGIoM17khgAEIAABCEAAAhCAAAQaCAHEUAOpSB4DAhCAAAQgAAEIQAACEMiMAGIoM17khgAEIAABCEAAAhCAAAQaCAHEUAOpSB4DAhCAAAQgAAEIQAACEMiMAGIoM17khgAEIAABCEAAAhCAAAQaCAHEUAOpSB4DAhCAAATqh8BBBx1k8+bN8wsJAhCAAATyiwBiKL/qi7uFAAQgAIEcI4AYyrEK4XYgAAEIZEAAMZQBLLJCAAIQgAAEKhJADNEmIAABCOQvAcRQ/tYddw4BCEAAAjlAoK7F0MqVK61169Y58OTcAgQgAIH8J4AYyv865AkgAIFGQmD+/Pl26aWX2j/+8Q/bsGGD7b333jZ27Fj77W9/u8mYlYkTJ9r9999v7777ri1cuNCaNWvm848cOdIOPPDAFGJ9+vQxLa+99lrKfn0++OCD7cEHH7QzzjgjcSyT+9BJ7733nl133XX2xhtv2IoVK/y1TjvtNPv9739vTZo0qbb23A+VnX766Xb22WfbiBEjbOrUqdayZUs77rjj7NZbb00RBpUJE43n2XrrrW3UqFE2evRof83k51uzZo3ddtttnuO2225rN9xwgx1zzDH2wQcf2O9+9zt78803/b3+8pe/tP/5n/+x4uLixH1H13z11Vftkksusddff93Xj/bffPPNNmDAgJRnLCsrs/Hjx9t9991ns2bNsqKiIhs4cKBdddVVnneUku95xx13tJtuuslmzpxphx9+uD377LPVciMDBCAAAQhUTwAxVD0jckAAAhCodwJLliyx3Xbbzb766is755xzbJdddrFp06bZ008/bR07drSSkpKUAfzqtC9atMj2228/69q1qz9PnW8Jo0mTJtn++++feKZMxFCm9/Hiiy/a8ccfb3379rVTTjnFOnToYG+99ZY98sgj9rOf/cyeeuqpatlKDO26664mEfarX/3KixUJmT/96U+exb333ruJMKkYzKAqMSQhoueS2GrevLndcccd9uWXX9qTTz7pyxfLHXbYwSQw//KXv9iYMWO8cImSRI9EigTaXnvtZYcccojNmTPHxo0b54Wa6qlXr16J/OLw+OOP24knnmgHHHCArV+/3h577DGbPn26PfPMM/aTn/zE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8uXLvaD76KOP7IknntjkvrNaiRQOAQhAAAK1IoAYqhU2ToIABCDQ8AlcfPHFdtttt3krjawgEiqVJVl0JCCaNm3qxc4WW2yRklXWoN/85jf2X//1X/Z///d/iWOvv/66t7r07NkzJf+LL75oxx13nLVu3doWLFhgLVu2TBwPLYYiIbfrrrva008/bf369UtcK7pv3eMnn3xiTZo08ce23nprL3zeeustL4aS02effeaFnPKQIAABCEAgtwkghnK7frg7CEAAAvVCYNy4cXbBBRd4ofL2229bp06dqr2P448/3p599lm7//777cwzz0zJP2jQIC8cJHKOPPLIastShpNPPtkef/xxe/755+3oo4/OihgqLS31rm2yjH388ce27bbbbnJvP/nJT0wudM8995xpW6lVq1beirRkyZIaPQuZIAABCEAgNwkghnKzXrgrCEAAAvVGQIJFnX5ZdyRgtttuuxrdi8SCrDkHHnigvfbaa4lzZCmRyJCbnKw8spokJ43PkeCZPn26Fxdyy1P6z3/+493l/ud//scuueSSrIghjQ+S+9tuu+3mr5cujR071oYPH24jRoyw66+/3mfRM/7rX/+y008/3S666CJ/vvtBrREnMkEAAhCAQO4QQAzlTl1wJxCAAATqnYAEyf77729r1671wRAOPvjgxD3deOON3npSMT300EN+l0RM9+7dvZVl7ty5psAMSldddZVdc801PiDCH//4x5TT//KXv3grksYUVZbkFqcJVqMU0k3uqaee8q57NUka36SxQkoaF/Szn/3Mu84ptW/f3rvLHXHEEXbaaaf5zyQIQAACEMh9Aoih3K8j7hACEIBAnRD4+uuvbZ999vHWm3QR2Q466CDTGJ+KqaysLLFLVpLbb7/drr76arvyyitNxxRV7fPPP7cZM2bYTjvtlMg7f/5869+/vxdeI0eOtF/84hdeQGl8kKwsl19+ud1www1eCEkAba4Ykkh55JFHUp5N45cUoKFHjx526KGHVslZUeIkiKIk8ffKK6/Y3//+d3vjjTfs/fffNwWdUDQ8CcmBAwfWSb1xEQhAAAIQqD0BxFDt2XEmBCAAgQZDYNWqVXbAAQf48NgSJtdee22tnk2uZnvssYcPQvDpp596VzK5lCn09nvvvZdSZhSc4IQTTvCBCyomWWxkuampGFJ0N1luJMaGDRu2SXmRa1uy0HvzzTd9+G5ZdeQSuDnp22+/9dYvRcALUd7m3AvnQgACEIBAzQgghmrGiVwQgAAEGiwBWTMU/OCvf/2rt5IoaMHmjH/ZZZddvBVo8uTJPmy2AiqkEygafyPhpah1t9xySwpfudppnJHc52oqhsaMGeMtSOeff77deeedKeV99913XqCtWLEixTIk647GMikstsRb5NpX28rWfE2RdUsCkwQBCEAAArlNADGU2/XD3UEAAhDIOoEohLYsJHL7atas2WZd8+abb/YWErmlKajC6tWr/aSkHTp0SCn3mWeeMVmFFFZbgQw0yamSRIQiyelcpZqKIbmqybqlyU9VnlzwlCSoVJ4CQyhVdAGUENMkqQqtrWO77757yn3qfE0We8wxx/h71PPcc889ft6ljh07puSNovAp6ITmKSJBAAIQgEBuE0AM5Xb9cHcQgAAEskpA43Y0YaiSOvsVBUt0cY2V0ZiZmiS5i2kMzoYNG3x2WZ0kfComWWU0wamCNkjAaEyS5vGRa50mM1U4bYmTmoohlX/UUUfZSy+95ENfSxgpTZkyxYsYiSOF/k43HkoTxmq+IVnEJIo0zmn9+vUmPhI169at82uJHIkjBUhQVDzllcVJ5ym4hJ5FzyDxFIXhrgkz8kAAAhCAQP0QQAzVD3euCgEIQCAnCGji0JpMDppOQFT1ABJWL7zwgs8iAfLTn/40bXa5p8m9TS56Eh6ytCgimwIwaPyPjmUihmS1Uf4nn3zSW6MkghT1TeUpuMOECRPSiiHd3KRJk+zuu+82jSP6/vvvvaDSRLISbLp/PZMmlZXI070pfLiCJug6cjWUAJR1TWHAkwNF5ERFcxMQgAAEIJCWAGKIhgEBCEAAAhCAAAQgAAEINEoCiKFGWe08NAQgAAEIQAACEIAABCCAGKINQAACEIAABCAAAQhAAAKNkgBiqFFWOw8NAQhAAAIQgAAEIAABCCCGaAMQgAAEIAABCEAAAhCAQKMkgBhy1T579mw/Y/jEiRNtzpw5tnbtWh9W9aSTTvKTASqiUHVJIWFff/31tNkU5vXHP/5xdUVwHAIQgAAEIAABCEAAAhCoQwKIIQf7sssu8/NLHHvssTZo0CArLi72IVYVmlUzqb/99tvWokWLKqtFYmjmzJmbzKKukw499FAfnpUEAQhAAAIQgAAEIAABCOQOAcSQq4v33nvPW4I0iV5yuuKKK+y6666zO++8084///xqxZDm69BCggAEIAABCEAAAhCAAARynwBiqIo6+uCDD/zs4kOHDrXx48fXSAzNnTvXVq5caa1bt/YzqJMgAAEIQAACEIAABCAAgdwkgBiqol401ueoo46yK6+80s9eXlWSm9zkyZP97ORr1qyx5s2b2yGHHGLXXnut7b777rlZ+9wVBCAAAQhAAAIQgAAEGjEBxFAllV9aWmr77befd6H78MMPbcCAAVU2kzPOOMO6devmxxhpzJHOu/32203lvPzyy76s6tL8+fNNS3L67rvvbNasWTZw4MAaBXKo7hochwAEIAABCEAAAhDIXwKrVq0yeSIdffTR1qNHj/x9kBy5c8RQJRWhMUJ33XWXt+yMHDmyVtU1ffp023vvvb2QkstddWn06NE2ZsyY6rJxHAIQgAAEIAABCECgkRPQEA4N5SBtHgHEUBp+UeCEs88+2+69915zkGpNWeG5n376afvyyy+tZ8+eVZaTzjI0ZcoUu+SSS/yYpZ133rnW98GJEIAABCAAAQhAAAL5T2DGjBl27rnn+ilhhgwZkv8PVM9PgBiqUAGRdea0006zBx98cLODIAwfPtzGjh1rU6dOtT322CPj6n7zzTdt8ODBfjySwn6TIAABCEAAAhCAAAQaLwH6hmHrHjGUxFMuahJDp5xyik2YMGGzhZCKPu644+y5556zr776yo8pyjTR4DMlRn4IQAACEIAABCDQcAnQNwxbt4ihOE9Fixs1apSdfPLJXggVFRWlJb1w4UJbtmyZ9erVy1q2bOnzLFmyxAc3UOCE5PTGG2/YwQcfbLvttpsPqFCbRIOvDTXOgQAEIAABCEAAAg2TAH3DsPWKGHI8x40bZxdccIEXOBJFFYVQly5dEj6ZihonsTRp0iRTOG2lZ5991vtuanxQv379vCiSW9zDDz/sQ2y/+uqrPhpcbRINvjbUOAcCEIAABCAAAQg0TAL0DcPWK2LI8YwETmVoDzzwQHvttdf84XRiSKGvZVWaNm2affPNN1ZSUuJd4g477DAbMWKEbbPNNrWuNRp8rdFxIgQgAAEIQAACEGhwBOgbhq1SxFBYnsFLo8EHR0qBEIAABCAAAQhAIG8J0DcMW3WIobA8g5dGgw+OlAIhAAEIQAACEIBA3hKgbxi26hBDYXkGL40GHxwpBUIAAhCAAAQgAIG8JUDfMGzVIYbC8gxeGg0+OFIKhAAEIAABCEAAAnlLgL5h2KpDDIXlGbw0GnxwpBQIAQhAAAIQgAAE8pYAfcOwVYcYCsszeGk0+OBIKRACEIAABCAAAQjkLQH6hmGrDjEUlmfw0mjwwZFSIAQgAAEIQAACEMhbAvQNw1YdYigsz+Cl0eCDI6VACEAAAhCAAAQgkLcE6BuGrTrEUFiewUujwQdHSoEQgAAEIAABCEAgbwnQNwxbdYihsDyDl0aDD46UAiEAAQhAAAIQgEDeEqBvGLbqEENheQYvjQYfHCkFQgACEIAABCAAgbwlQN8wbNUhhsLyDF4aDT44UgqEAAQgAAEIQAACeUuAvmHYqkMMheUZvDQafHCkFAgBCEAAAhCAAATylgB9w7BVhxgKyzN4aTT44EgpEAIQgAAEIAABCOQtAfqGYasOMRSWZ/DSaPDBkVIgBCAAAQhAAAIQyFsC9A3DVh1iKCzP4KXR4IMjpUAIQAACEIAABCCQtwToG4atOsRQWJ7BS6PBB0dKgRCAAAQgAAEIQCBvCdA3DFt1iKGwPIOXRoMPjpQCIQABCEAAAhCAQN4SoG8YtuoQQ2F5Bi+NBh8cKQVCAAIQgAAEIACBvCVA3zBs1SGGwvIMXhoNPjhSCoQABCAAAQhAAAJ5S4C+YdiqQwyF5Rm8NBp8cKQUCAEIQAACEIAABPKWAH3DsFWHGArLM3hpNPjgSCkQAhCAAAQgAAEI5C0B+oZhqw4xFJZn8NJo8MGRUiAEIAABCEAAAhDIWwL0DcNWHWIoLM/gpdHggyOlQAhAAAIQgAAEIJC3BOgbhq06xFBYnsFLo8EHR0qBEIAABCAAAQhAIG8J0DcMW3WIobA8g5dGgw+OlAIhAAEIQAACEIBA3hKgbxi26hBDYXkGL40GHxwpBUIAAhCAAAQgAIG8JUDfMGzV5Z0Y+ve//2133XWXffbZZ7Zo0SIrKytLIeIeyObMmROWUj2WRoOvR/hcGgIQgAAEIAABCOQYAfqGYSskr8TQPffcY+edd54VFxfbgAEDrH379mlpTJo0KSyleiyNBl+P8Lk0BCAAAQhAAAIQyDEC9A3DVkheiaE+ffpYhw4d7B//+Id17NgxLIkcLY0Gn6MVw21BAAIQgAAEIACBeiBA3zAs9LwSQy1btrSxY8d661BjSTT4xlLTPCcEIAABCEAAAhCongB9w+oZZZIjr8TQwIED7fjjj7eRI0dm8ox5nZcGn9fVx81DAAIQgAAEIACBoAToGwbFaXklhp555hkbNmyYTZkyxbp37x6WRI6WRoPP0YrhtiAAAQhAAAIQgEA9EKBvGBZ6XokhPfojjzxiF1xwgR133HGmMURFRUUpRBRN7sorrwxLqR5Lo8HXI3wuDQEIQAACEIAABHKMAH3DsBWSV2Jo9uzZdsQRR9gXX3xRKQWJodLS0rCU6rE0Gnw9wufSEIAABCAAAQhAIMcI0DcMWyF5JYYOO+wwe+edd+zGG2+0wYMHVxpau3fv3mEp1WNpNPh6hM+lIQABCEAAAhCAQI4RoG8YtkLySgy1bt3ahg8fbqNGjQpLIYdLo8HncOVwaxCAAAQgAAEIQKCOCdA3DAs8r8SQgiZcfvnldv7554elkMOl0eBzuHK4NQhAAAIQgAAEIFDHBOgbhgWeV2Lot7/9rU2fPt1eeeWVsBRyuDQafA5XDrcGAQhAAAIQgAAE6pgAfcOwwPNKDM2aNctOP/1069atm1144YW29dZbbxJNTnh69eoVllI9lkaDr0f4XBoCEIAABCAAAQjkGAH6hmErJK/EUGFhoSZGsrKyMr+uLBFNLmwjoTQIQAACEIAABCAAgdwggBgKWw95JYZGjx5dpQiK0DSkAAs0+LANntIgAAEIQAACEIBAPhOgbxi29vJKDIV99PwojQafH/XEXUIAAhCAAAQgAIG6IEDfMCxlxFBYnsFLo8EHR0qBEIAABCAAAQhAIG8J0DcMW3V5JYbGjRtnzz77rL388stpKRx++OF2wgkn2NChQ8NSqsfSaPD1CJ9LQwACEIAABCAAgRwjQN8wbIXklRjaa6+9TMtdd92VlsKwYcNsypQp9s4774SlVI+l0eDrET6XhgAEIAABCEAAAjlGgL5h2ArJKzHUrl07u/766+28885LS+Huu++2kSNH2uLFi8NSqsfSaPD1CJ9LQwACEIAABCAAgRwjQN8wbIXklRhq1aqVXXvttXbJJZekpXDLLbd4MbR69eqwlOqxNBp8PcLn0hCAAAQgAAEIQCDHCNA3DFsheSWGdt99d+vatau9+OKLaSkceeSRtmDBApsxY0ZYSvVYGg2+HuFzaQhAAAIQgAAEIJBjBOgbhq2QvBJDN910k40YMcKuuOIKbwEqLi72NNavX+8tRtddd51fK09DSTT4hlKTPAcE8oOAJrUuKS2zdRtK3bIxtpSU2oaN2r/RSv26zDa47U32bXT7dMzl0fGS+DraV+qOu11uKfNrN4O2X5e5/6L9btMfd/+X73NZy/cpt5mm3S50k29r/u1o7T65bXcssS86Hs+j89zB8vPMitxk3k2LCqyJO7FJUWFiHdvnPrt1YjvKo30VjhU3KbRmWpoW+bXKq2py8PxoDdwlBCCQiwToG4atlbwSQyUlJaaIca+//rpp/NCAAQM8jU8++cSWLl1q+++/v480F4mksKjqpzQafP1w56oQyCUCEharnSBZsz62rNa6ZENs7bdj+2KfN/jPa9ZLyKQKmpi4ie8rSX98vbuWhAhp8whIlDVr4oRR05hIiomlmFCKLeXHEvtd3uZuf8viImtR3CS+jn32+5rG9sWOax37rPIQXptXX5wNgXwiQN8wbG3llRjSo0sQaWzQ448/bp9++qmn0b9/fzv55JPtoosusqZNm4YlVM+l0eDruQK4PARqQWC9Ex2r1m2wlW5ZsTa21ucV2uc/l7ilNGlb+2JCJhI4McETEzsSKCQIVEZAlrAWziKVEElONEkstW7WJLY0j623iK+TP7dygkqft2jWNJFPwo0EAQjkLgH6hmHrJu/EUNjHz/3SaPC5X0fcYcMiICuMBMzytSW2bE2JLV+zwa/9dmKfxExM2EQCZ5UTMtFniaFcTcXOFSzmzuWsFdqOu3VVZa1o6vJpibmSxdzHvOtYtC/uPpbsWraJi5nLX+R67UVx97GEK5sDlXBzS3J50z5ZV+QQF3N9i621P0rJrnPe7S7ubhdzsZPrXczdzi9JrnixfTHXvA0J1z7n1ufd/+TmF7n7Rfsil8Ay5yYY3xfP489x26pzLTWxvkV5dG4uJomhLZJEVCsJKbe0adHU2jjh1Fbr+OK3mzeN74sdk/DCUpWLNcs9NRQC9A3D1iRiKCzP4KXR4IMjpcBGQGCts6gsXZ0kYNx2RXGTLGwkdCSAtJbIqa/U3AkUuT4lv+WPtrW/efztf7mblFynKrhU+c+x/cqfLHIkfgpjCoOUAwQ0/iomoGKui2q3a5374mq5OsbdHmPukTGLYarVsOK+uFUx7jKp8yXQ68PlUU0sJpxSRVL555iYigmpmIBq37LY2rWMnUMbzYHGyS3kNAH6hmGrBzEUlmfw0mjwwZFSYB4RUGdxuRMoS1avd0uJEzjJ6/Ve8GhJPb7edyjrKiW/RS93OYq5HkVv1CNXpcTn5GNx1yWdm1edQG9+ccJxY2l8Hd8uE/u4OSbjtU71kRXia7cpS1CBc9tKrLVd2RLlrSZPXTWOer6OrF8SUMnumjE3zfjiLJ3+WMJ9M3LjTM4TO15X1k5Vs8RROy1xgSShlCyYJJp0rL3WLZyIatXUW66wRtVzg+PydUaAvmFY1IihsDyDl0aDD46UAuuBgDplGv8iQbNkVUzESMCUi5tI6KSKHllvsv1mW65dkdtPOpef5LfZ0fE2LZzLkHuDLXETdHyFHrZ0vRscucb5b62Nrf221u6zjkXLhnVuu8Qt8bX/XPF4/POGaH9y3vi5XtCkETUpIicSOknCx4uePEwFRc7XrokLI+fGlybWbrvI7SvUWvu1uHzRdsqx6Nx43ibNzJo0d3lddFOt/edo0ecqjiXOUb74+bqnJFfAXCEs61VkPdULinLXUedS6t1Jk/elupjWxd+x3C8loNp6gRSzNGnbW5wkrFrF1pEFKhJUrZwVFRGVK62M+6gpAfqGNSVVs3yIoZpxqrdcNPh6Q8+FKyGgMTVLXccnEjKRuFm6JknIrIrETnzt8mfzzXLUEUp5Yxx/m5xwxYm74FQUPnJNq1FnSEJFgmP9KresjK1L3ATP0XZiv9sXiRcvaNxnCRm/LxI3yfsr5MlXkcFfTBgCEmtNW5oVu6VpC7e0iq/ddnG0nW6f8sfPSeRL2tdsC3d+65hQq2OxtdFZeFc6l71lKe6q5ePx9N3hrbwSVIkXJbHvmFXOspXNFHsZEnPRk6VJ21q3l3hy6y1lgXLbW7rF7/fWqmI/9o0EgfoiQN8wLHnEUFiewUujwQdHSoFJBNRJ0VvbRc5aI1GzOFrkjua3S9yyzhbHLTqy5ujtcDaT3tR6Fxjn+hJ1PLw7TOQWk9iOu8m4/XKR2cTFTJaNdSuSluWx7U3Ei8RNJHAkbpI/R9vx42XZ7Zhlk+smZRe5TrEsE5GFRBYJWUP8ou1ocZ8ja0oiT9Kx5H3KF7m0aSYg3+nWWlePPidvJ+eJ8lZYe5c5Z4VKu1R1TOdUOO6tXc4iprWsatouldVLa32OW8nSHWsoda/6kiiKxFEzt+0/a+0EU6afZTXLYtJLFImlmEiKCaToZUzMwiwrlL6vYmLKH3f7ZInOVlKzlmU4Ekha6/sp9lnr2PdV+eeYmx8CKls10vjKpW8Yts4RQ2F5Bi+NBh8caYMuUIOmF7vOwOKVbokLmoTQqbBfwkfiJhaFK3xS5LFIwESuKeUuKuVCJvktrPz/ixXVd32SiFkbFzHrKq5dHn8s2q9zkrYlenIxSSw00Rv/+CI3qqZa3Ft8vx3t11ruU0n55ErlRYxz0dIbfi9m5F4V3xcJnEQ+HYvnSc6bo65YuVhdiXuKxkglCyXvluishbIYJha5M0afZRF0eWQh9G6MyfsrbOuYtyBGlkJnRfTWx8ii6LYl1nItqX02b+OWtk5Iae2WlHW7NPuS8itvFgSVglHIla/cJbdcSOl7T+IqOqZ80bjDbFmwo7FQkaUpsjKVC6nYy59kYYWAyrXGnjv3Q98wbF0ghsLyDF4aDT440rwqUC5pEjWLnLj5YeU6v2j7e22viO1b5Cw3eiuqdbYCB8jyokHK+iFPHtQccy2Ju5i4cTQdmm6w9kVrrG3RWmtZttoKUoRKJF4i0ZIkXBKCR5Ybt9R3kqiQq5HemPt1tESf5caU5ljk3uQFTAWB44WOO09Cpo7dlOobJ9cPREBCLCGQ5H6pJVk0VbIv2doZWUfXydXTLdFaFrj6SnIFrFJQOaGVEFtuu4UElpb4tv62Av1N6YWSLFF6WZQIzhK3kscEU+yY3467AytIRTaSPPEkjjq0amYdWrt162bW0a07unUH7ddan+PHNYaR1DgI0DcMW8+IobA8g5dGgw+OtN4L1JvHmJiJCRmJGv85LnSSRY+EUOgAAvKRj9w39EPq30Y6UdO5xUbrUrzOOjZZax3c0q7QiZqCVV7UNF0ft8CsXeasMVrcZ629G1qSqKm3DpXrNegNs1x//JtpuftoSbcdiZhkMZO0rY5ZFt5U13vD4wYgUBkBN09SYvybF0f6u04WS1V91kuO+HeC/y5wS10nWT2TxZFEUrrPXkRVOKbvCLmGbkaSFSpZHMWEVMzNuC4FlMLpJ0STF0txweS2O20hARWJqpjAwm1vMyq9nk+lbxi2AhBDYXkGL40GHxxp1gqUFecHZ7X5dvna2OLEznfx7e/c9rfLY5/lthYyyZWiU8si695yg3Vrvt4JmvXWuXitFzWy0rQrWG2tC9ZYq40rrUXpSmuyYYUVJAsaL2pcB6ZeXHAkYiLhUkG8RO426YSNf0ucdJ4EjJsIlAQBCNQzAQkrialkgZR4eRK9RNG6wra+g6JzSpxLYJ2l+IsUb2VKEkoSUxUtUOlEltxaa5HSCaiKgkqiKmb9j1mjNNVAqCSrkyxMndu4ZYvmbtG6mXVqU77dxW0rT9CImaEeoJGXQ98wbANADIXlGbw0GnxwpLUqcJWbZ2PhsjX21dK1tnDpGre91r5bIdEjkRNby8qzuVacpubczApXWe+W661Xi3XWvdka69J0rXVqstq2LFzthM1K26JshbUsXWHNSpY5i80yK1izJNaJqGurjHdtSRIlKRaZCmIlcSw+niASMnI1Q8TUqk1yEgQaLAEFtYisTCmiKrJMu/WapXHxFF/7z/HtuhwvKJfayF0vEkvpLFDphFQz9z1Zw+8/BbvR2Cb9znzvvAm0lsv0InkVOKGktf8sAeVevmluqFBJngReKHnB5MSSF1Cx7S5ue6u2Wje3pm5SZ1LdEKBvGJYzYigsz+Cl0eCDI92kwBJn0ZGg+VpCxwseJ3bc9tdu7bed8NGPUKapma23LW2FbVmw3C0rrFez1dbTLd2KV1nnopVO2KyyNmUrncVmhTXfEBM2hXX1RlRRvyIf/WRffP+DXcE/P12+LA16zpQx+SEAAQhsQkBjq7zlKS6Q0gonCatkIRX/rLx1FjnQmWcknFq0d8uW8bXbbhltx9ctdTxa3D7v2le18JDlSdYkP940SThJLH0vrwX3Mu87eSu47dr8vlVkriFbnZwVqWu7FtbNiSMJpG5tW7jPza2r2+7qtiWgmiCYgvzB0jcMgjFRCGIoLM/gpdHgNx+pXAu+cWJn/uLV9qVbktcSQPpRqIn3gaw2HWyZdS5Yah0LllkHiRyLcD4/AAAgAElEQVQndro1XWldm66yTkWr/L42G5dZqw1LrWmpG8yczeTfRsZ/IFNcOpIjO0U+8vF9kfBRQIBAA46z+YiUDQEIQKBOCci8r4AT3iKVxupUnbCqC6uUIlImi6NoOyGi4r8LFUWVLPJpvvclnCoKpGSxJMEUwsVbrnmyJkkgSShJMEko9Wjfwi0tradbNFEuqXoC9A2rZ5RJDsRQJrTqIS8NvmbQNVfOl4uShM4SCZ81XvgscNslpZX5WpdZG1ttnZzAkcjp5MROp4IlbtF6qXUvWmZbFS23DmVLbIuNWRgYLAtN4kct+e1f8nb05jBpn0TNZg76rRlZckEAAhCAQI0JZGKVkotzYnHCK9vBJxRSXxaoVh2d9alDfO229dnvq7DWb1PS74y8KDSGKbIoeVdx5zkh74nYEvOk2Jzoels0bxIXRnGBtGULL5J6xNdEzIu1RPqGNf6LrFFGxFCNMNVfJhp8Oft1G0q9uJnz/Sr7/Ae3uPXcH1b6bQUuqJgKbKN1tOXWtWCRWxb79VZu3S2+1r7OTvTInS1YkvuCfmRSfmj0OflHJn5ceTRmBgtNMPwUBAEIQCBvCUhIyfK0ZnFMJK2Orzf5LBGlYy6v8mTNvdqZcmRdSvx+VRBQKb9znbygKnNWq+Vr3Bjb5TF380gkyQvjm/i+r51oqu00EJqfqeeWMSuSLEq9O7SyPh1b2tYdW1kXZ3XaZPLtvG0MVd84fcOwFYsYCsszeGmNrcGXORcFmes//W6lzf3eLRI9bpnrhI8sPMnubC1srfUs+N4t31mPgh9SRE9XW2xdnNgpLtjc+R/cj0Er9yXfuovZFm7R2i+d4z8QyULHbWvySxIEIAABCECgrghoQt/IwpQQUJFgShZVbnvVD05AaVnkxka5yH8hk9z3JJyi38gttor9Vkaf47+fZe43ddnGFvb1snXemrRgiRZ5drj10ti6NuOYmjcttD4SR27pLYHkhVIrL5Q0Xsl1eEM+bb2W1dj6htmGjRjKNuHNLL8hN3iZ22d/u8I+/XalfeLXK9znlYkvQY3R6e7FTrRI9MS2te7oxufUOmleijbdnMDpmvRlnSR2IuGjL3bmnKk1Zk6EAAQgAIEcJKAQ6BoTFYmjxNqJJImldJ83Zh5IqNIn10S5CaEUf8GYEE1b2crmneyrDVvavLUtnEBaF3d5j0TTaluV4US3moOpd4eYBUlLv86t/dK3U2vLR9e7htw3rI+/FsRQfVDP4JoNocGvdCE+P1643GZ948SOFgkfZ/lRpBsJHll2ti5YaH0KvrFt3KLt3oXfmqw7hQW1mFdBoU4ldNp0j63bah0t8f3yj25Ab4kyaFJkhQAEIAABCGRGQIElNKbJiyQnmFJElPu88ju3zy1ar/w2lidEKnQBFfTSso0WvcDsZmVue1WzzrawbEv7fF1b+3hVK/t8SYn3Ipm3aJWb8DYz0dbdRcDrK3HkhNG2XWIiSdvtXUjxXE0NoW+YS2wRQ7lUG2nuJZ8afOTiNvPr5faREz8fxdfzFq20LmWLrV/h117obB0XPFrLwtOkIENTfdOWZu16m7V3S/K6bQ8nfNwiP2aETo63bG4PAhCAAAQaLAGNf1r1fUwYRQIp2l7xTeq+kgCRV+XOHhdL61puZYuKnGXJjRr+bP2W9tGqtjZjWXObu2iNLV9b8/mXOrYu9pYjiaNt3bJd1za23VZbWLuW9S+S8qlvmA9tHDGU47WUqw1eE8DpDcyMr5YlhM+sr91cOau+sW0LF9i2BQusf8FXfrufW7cpWFNz0vI7btfLiZ2tKwiePrHPiJ2asyQnBCAAAQhAIJcJrFuZJJqcUFrhBNSKr82Wa1nolq/cZ7fesLb2T+EsTGXOS2TDFj1sWfFW9o2LHfu5c8ObubqtTVva2v6zvLWVmIu2V4OkcOASRZE42t6JJLne1eWks7naN6wBvpzMghjKyWopv6lcafCalPT9+UvtgwVLbfr8ZTZ/wRfWc/1cG1DwZe1Fj1zXttzGrEM/t/SNr922rD1N6v/NS443DW4PAhCAAAQg0DgIyE1PQSK8QHJLQixFn+OiSfND1SKVWYFtaNnZljfrat8Wdra5pZ1t5totbdqK9javtJN9Z+2szCqf6LbYTSYrV7vtvUhyy1ZtTCKpkwvckI2UK33DbDxbfZSJGKoP6hlcsz4avKK4zFiwzKY74fPBl4ts8YLZ1nnVbNuhcJ7tUPCFW3/hIrW5gZc1SGVu/E5Bx/5uprXtzDoOcMu2MeEjEaSJP0kQgAAEIAABCEAgBAFNmCuxtGy+2dIv3eLWfju+1rGyzKPMlhY2syXNutmCgq3sk3Ud7SMnlL4o62xflnWxBWWd3AQd6SeL7dKmme3cva3t2K2tX+/co22QyHb10TcMUT25WgZiKFdrJn5f2W7wGuej8NVT5y2x9z9faEvnvW/tln3sRI8TPk70bFcw31oWuLCd1aQU0dPJCR8tnbd3bm19mBy0OngchwAEIAABCEAg+wRK3ZghWZVSRFKSaFq2IGN3vI3OqrSosKN97ixIsih9XtbVLVvZnLJuXixVdL/r2FoCqU1MJEkguUWud5mE/s523zD7FZFbV0AM5VZ9bHI3oRu8Ji6V1WfqvB/s60/ft8Kvp1nfktm2a+Ec5/I2v0bz8mxs29sKu+5stpVbuuzoRM8OiJ4cb0fcHgQgAAEIQAAC1b3Zde54CvSw+HOzJVrmlW9rn8KOZ5BKnWvd/I1OJDmBpEVCyW9vdO541t6VFJv7qIOLXCdhtItbdu3Zzi2yILnw45Wk0H3DDB6pQWZFDCVV6xNPPGFjx461jz76yFq1amVDhgyxG2+80Xr3dmNYapCmTp1qI0eOtLfeess2uhj+e+65p1199dV2wAEH1ODs9Fk2t8EvcyEmp3y+yD77ZIat+eJda7f4Q9up4DO3zKvW4rPRDTgs7bi9Ne22S0z4ROKnRbtaPw8nQgACEIAABCAAgbwksG5FqkBKFkuyNmXggreyrLm3ICULJFmTJJbWWHNTyG+Jol17SBy18xakaE6kze0b5iX7LN40YigO984777Rhw4bZ4MGD7ZRTTrEffvjBbr31VmvWrJm9++671q2bi29fRVKeAw880Dp37mwXXHCBP+/ee++1jz/+2F566SU77LDDalWNmTb4pavX23uffmVfzZxsZV++Yz1XzbDdCz+1LQtctJYq0gbnD7u+007WvPdAK+y2u1lXJ4A01qcovR9srR6GkyAAAQhAAAIQgEBDJKBw4hqntHiu2Q+fmi3S8pnbdotc8zJIC8o62qcbu9tnZd3tU7d85rbnWjfbqktXL45aLPnMxvz6BJs8ebINGjQog5LJmo4AYshRWbRokfXp08f69+9v77zzjjVpEguv+N5779nee+9tZ555pt13331VtqAf/ehHNmPGDG9V6tXLhYV2admyZbbjjjtay5Yt7ZNPPsnIHzS6WHViSOJn+syZ9v1Hb1jTr6dYnzUzfZCDpgWVDxDcaEW2om1/a9prT2vZZy+zbnvExvcgfPiWgAAEIAABCEAAAmEJKHz44jlxkeTEkRdJcbG0vuqX1ck38l1ZOyeMutmL85vbdRNeQwwFqiXEkAP5wAMP2FlnnWUPPfSQnX766SloDzroIJs2bZq3FBUXpw/3PHfuXOvbt6+dccYZ9uCDD6acP3r0aBszZox3ndt3330zrraKYmjpilX28fuTbeknk63lt1Ot3/qZ1q1gcZXlLm3e00q67mFt++5jxb0Gxtzdit3EpSQIQAACEIAABCAAgfohoJDhGqMUWZK0/v4T93l2LApeJenN+Rts8AOrEUOBag0x5ECee+65ds8999js2bNt221d6OekdPnll9sNN9xg06dPt112ca5jadKf/vQn+8UvfuHd4s4555yUHBMnTrQjjjjC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mg6hVcB0pKKXtxZDwWXr1q0mNwTtFsnXvUqVKk4wadc4UknXMdCiXdagaKVBgwamw2q9Atf4przEjhY8OTk5zh3u6NGjbmND81hptbOyspiv8aGMq1Y0MaSLmbOxEeocHGWQVFYzbcjJTbZy5crO9ahfv36WkZHBfI2NMWoNPQ901IM2SPQs0MJdrtrNmjWDaz646lLPeqmEPz169Ih6N54D+QSdIpcjhlJkIOkGBCAAAQhAAAIQgAAEIOCPAGLIHy9qQwACEIAABCAAAQhAAAIpQgAxlCIDSTcgAAEIQAACEIAABCAAAX8EEEP+eFEbAhCAAAQgAAEIQAACEEgRAoihFBlIugEBCEAAAhCAAAQgAAEI+COAGPLHi9oQgAAEIAABCEAAAhCAQIoQQAylyEDSDQhAAAIQgAAEIAABCEDAHwHEkD9e1IYABCAAAQhAAAIQgAAEUoQAYihFBpJuQAACEIAABCAAAQhAAAL+CCCG/PGiNgQgAAEIQAACEIAABCCQIgQQQykykHQDAhCAAAQgAAEIQAACEPBHADHkjxe1IQABCEAAAiEEGjZsaN9//737R4EABCAAgaJFADFUtMaL1kIAAhCAQJIRQAwl2YDQHAhAAAI+CCCGfMCiKgQgAAEIQCCcAGKIOQEBCECg6BJADBXdsaPlEIAABCCQBAQKWwz98ccflpGRkQQ9pwkQgAAEij4BxFDRH0N6AAEIpAmBn376yR566CF7//337dChQ1anTh0bPny4PfDAA7liVj744AObMGGCffnll7Z161Y78cQTXf3HHnvMGjRoEEKsUqVKpn9LliwJ+bv+/7rrrrOJEyda586dA5/5aYcu+uqrr2zw4MG2bNky27dvn/uujh072sMPP2zHH398zNH774vKOnXqZN27d7dHH33UVq5caaeccoq1atXKXnrppRBhEE2YKJ7nvPPOsyeffNKeeuop953B/fvrr79s1KhRjmPVqlXtueees+zsbFuzZo3179/fPv30U9fW22+/3V588UU74YQTAu32vnPx4sV2//3329KlS9346O8jRoywatWqhfTx6NGj9uqrr9r48eNtw4YNVqxYMatdu7YNHDjQ8fZKcJurV69uw4YNs/Xr19sNN9xgs2fPjsmNChCAAAQgEJsAYig2I2pAAAIQ+NcJ7Nmzxy699FL75ZdfrEePHnbJJZfY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\" width=\"640.1666666666666\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot xyz values individually over time\n", "anim=xyzdif_aniplots(rot_FS, rot_FS_err, name1='correct positioning', name2='positioning error')" ] }, { "cell_type": "code", "execution_count": 15, "id": "eff92ef5", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\n", "\n", " ws.close = function () {\n", " comm.close();\n", " };\n", " ws.send = function (m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function (msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0MAAAJyCAYAAAAGkRtTAAAgAElEQVR4XuydB3hVRfrGP9J7Jz2EUC2LXVZlsa69K+7asaMgi13Bhq4FFcUGi13XtquuZe29r2JXVJQaIJX0Xm/uf96Bk//NzU3uPTfnhlveeZ48YnLOnJnfTG7mPd8374ywqyIsJEACJEACJEACJEACJEACJBBCBEagUAyF0IizqyRAAiRAAiRAAiRAAiRAApoAxRAnAgmQAAmQAAmQAAmQAAmQQEgSoBgKyWFnp0mABEiABEiABEiABEiABCiGOAdIgARIgARIgARIgARIgARCkgDFUEgOOztNAiRAAiRAAiRAAiRAAiRAMcQ5QAIkQAIkQAIkQAIkQAIkEJIEKIZCctjZaRIgARIgARIgARIgARIgAYohzgESIAESIAESIAESIAESIIGQJEAxFJLDzk6TAAmQAAmQAAmQAAmQAAlQDHEOkAAJkAAJkAAJkAAJkAAJhCQBiqGQHHZ2mgRIgARIgARIgARIgARIgGKIc4AESIAESIAESIAESIAESCAkCVAMheSws9MkQAIkQAIkQAIkQAIkQAIUQ5wDJEACJEACJEACJEACJEACIUmAYigkh52dJgESIAESIAESIAESIAESoBjiHCABEiABEiABEiABEiABEghJAhRDITns7DQJkAAJkAAJkAAJkAAJkADFEOcACZAACZAACZAACZAACZBASBKgGArJYWenSYAESIAESIAESIAESIAEKIY4B0iABEiABEiABEiABEiABEKSAMVQSA47O00CJEACJEACJEACJEACJEAxxDlAAiRAAiRAAiRAAiRAAiQQkgQohkJy2NlpEiABEiABEiABEiABEiABiiHOARIgARIgARIgARIgARIggZAkQDEUksPOTpMACZAACZAACZAACZAACVAMcQ6QAAmQAAmQAAmQAAmQAAmEJAGKoZAcdnaaBEiABEiABEiABEiABEiAYohzgARIgARIgARIgARIgARIICQJUAyF5LCz0yRAAiRAAiRAAiRAAiRAAhRDnAMkQAIkQAIkQAIkQAIkQAIhSYBiKCSHnZ0mARIgARIgARIgARIgARKgGOIcIAESIAESIAESIAESIAESCEkCFEMhOezsNAmQAAmQAAmQAAmQAAmQAMUQ5wAJkAAJkAAJkAAJkAAJkEBIEqAYCslhZ6dJgARIgARIgARIgARIgAQohjgHSIAESIAESIAESIAESIAEQpIAxVBIDjs7TQIkQAIkQAIkQAIkQAIkQDHEOUACJEACJEACJEACJEACJBCSBCiGQnLY2WkSIAESIAESIAESIAESIAGKIc4BEiABEiABEiABEiABEiCBkCRAMRSSw85OkwAJkAAJkAAJkAAJkAAJUAxxDpAACZAACZAACZAACZAACYQkAYqhkBx2dpoESIAESIAESIAESIAESCBoxFBnZ6fU1tZKc3Oz9PT0cGRJgAQClEBYWJhER0dLYmKiJCcni/qQCtCesNkkQAIkQAIkQAL+TiAoxJDdbpd169ZJR0eHXjhhMcVCAiQQmATw+2y80EhKSpLc3FwKosAcSraaBEiABEiABPyeQFCIIUSEKisrJSEhQfLy8iiG/H7asYEkMDABiKH29nYpLy/XLzhycnIkJSWFyEiABEiABEiABEjAcgJBIYbWr18vra2tMnbsWImKirIcEiskARIYfgJtbW1SXFysX3IUFBQMfwP4RBIgARIgARIggaAnEBRiaPXq1dLd3S0TJ05kOk3QT1l2MFQIIEK0cuVKCQ8Pl3HjxgV1t73ZF/XYY4/J6NGjZb/99pN99tlHPvroo6BmFCyd++677+SNN96Q999/X9auXSsVFRWCdNBdd91VzjnnHJk2bZrLrm7cuFFee+01+eabb+Trr7+WX3/9VWw2myxatEguuuiiYMHDfpAACZDAsBMICjGEBRPKhAkThh0gH0gCJOA7AqHyu33GGWf0g4iXPJ9//rlkZWXJIYcc0u/nWDjjJVCoiCEweuKJJwQi0BUv381C62rGeEVGRuoKIYAmT54sGRkZes/rV199JXgBcNppp8njjz/eL9377rvvlosvvrhfYyiGrBsf1kQCJBCaBCiGQnPc2WsSCAgCoSKGXA0GFsRnnnnmoFEfpAdv2LBB4uLiZNSoUQExpt42MljE0J577ilXXXWVHHXUUb3CCEw+++wzOfTQQ7Uj6iOPPCJnnXVWH1SvvPKKfPjhhzqCtNtuu8mtt94qTz75JCND3k4o3kcCJEACWwhQDHEqkAAJ+C0BiqHBxZDfDpwPGhYMYsgdlptvvlmuueYa2X///XUa3WDF4MHIkDuq/DkJkAAJDE6AYogzhARIwG8JUAwNLoawT8hVmpzj99988025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l112mbz99tvS3d0tkydPloULF8oll1zSb8/KO++8I4888oh8/fXXUl5eLtHR0fr6q6++WvbZZ58+xEaPHi34+uijj/p8H/+/3377yWOPPSZnnHFG78/MtAM3ffPNN3LzzTfLp59+Kk1NTfpZp59+ulx55ZUSERHhdvTUHyqZPn26nHPOOTJ37lz59ttvJS4uTo455hi5++67+wiDgYQJ9vMUFRXJ9ddfL/Pnz9fPdOxfW1ub3HPPPZrj+PHj5dZbb5UjjjhCfvrpJ7niiivkf//7n27rySefLHfddZdERUX1ttt45gcffCAXX3yxfPzxx3p88P0777xTJk6c2KePdrtdli5dKg8//LCsWLFCwsPDZbfddpPrrrtO8zaKY5u33357uf322+WXX36Rgw46SF5++WW33HgBCZAACZCAewIUQ+4Z8QoSIAES2OoE6urqZKeddpLS0lI599xzZYcddpDvvvtOXnjhBcnIyJCurq4+G/ixaK+pqZE//elPkpOTo+/D4hvC6MMPP5SpU6f29smMGDLbjjfeeEOOPfZYGTt2rJx66qmSnp4uX3zxhTz55JNy3HHHyfPPP++WLcTQjjvuKBBhZ555phYrEDL/+te/NIsHH3ywnzBxNjMYTAxBiKBfEFsxMTFy3333yYYNG+S5557T9YPldtttJxCYL730ktxwww1auBgFogciBQJt9913l/3331/WrFkjixcv1kIN4zRq1Kje68HhmWeekWnTpsnee+8tnZ2d8vTTT8uPP/4oL774ohx11FH6WqPN6Dvac/7552tBByEGcchCAiRAAiQwdAIUQ0NnyBpIgARIwOcErrrqKrntttt0tOess87qfd69994rc+bMkcLCwj5iqKWlReLj4/u0q7KyUhBhQIQIIsUoZsSQmXa0t7frdo0bN06Ll8jIyN5nLlq0SEe0IMwgJgYrEEP4QnRmjz326L308MMP1wIFQsZIG/MmMpSbmyu//vqrJCcn67p//vlnmTRpkn4mxCZEm1F23XVXLSwrKip6v4dnIhqEcUCkyihvvvmmHHbYYVoEQvyhQOwcf/zxWijNnDmz91pEktA3CNi1a9fqZxtiCNyWL1/eL8Lk80nHB5AACZBACBCgGAqBQWYXSYAEAp/AtttuqxfKiOwgrcooiCqMHDlSUlNTB7R2xh6Tjo4OQXoWIgpffvmlrssbMWSmHa+++qqOciByg+iQY8Hzt9lmG532dsstt7gVQ3vttZd8/vnnfa5DChrSBiEU/vCHP+ifeSOG5s2bp9P4HAuEUWJiopSUlPT5PgQPBGhjY6P+ufFMiCGMTXZ2dp/rEc2DuKmvr5ewsDAthJDmuHr16n4pghBISOH7/fffZcKECb1iCOmAiEixkAAJkAAJWE+AYsh6pqyRBEiABCwngPStXXbZRUdHnMvOO++soyOOqWFI08L+ICy8sRB3LIg69PT0eCWGzLQDe1ywL2iwgigXol2DFbTXMbpiXPv444/rtDlEnYx9UN6IIaQPnn322X2agGhZQUGB3ufkWCBWkCYH1oh6GWIIKW4YA+dy0kkn6XQ+RJKysrJ0uh32CQ1WPvnkE53GaESGLr/8cr1fiIUESIAESMB6AhRD1jNljSRAAiRgOYHBRAiiDxA8hhiCSQE27be2tspFF12kU74QxUBkAsYA2OiPKJFRsA8FC3tnA4X33ntPDjzwwD4GCmbagbQ+pNUtWLBAkF7mqiBFDQLBnRhCRAvix7EYYsgx1Q4GBOvWresXJUMkBnuNBjJQcDSIwDMGSh00xBCegWsMMQSjhdra2n7dOPHEE+Xf//63IEUxMzNTEFnbtGmT/t5ABayMSJ+z6YPlE4sVkgAJkECIE6AYCvEJwO6TAAkEBgEz6WmvvPKKdlp79NFHdeTEsWBfyrJly/qIISy+YcCABb1jQXrbjBkz+oghM+1Aahf22yCtbPbs2V6DNtzkPBFDSEN79913dRqbY8HeooMPPthnYmiwNDkIJ0SNIEaPPvpoQfog/t/YozQQGFemD15D5I0kQAIkQAIuCVAMcWKQAAmQQAAQQLoZUqU8MVB47bXX5Mgjj+x3rSEI0F3HyBBSuf7zn//oiEpeXp6mgT1GMFqAQHK01jbTDkSmDPez77//XrveORbYWcM4wNh7M9AwmBFD2IOESBQEH9qPgpRAmC289dZbPhVDnhgowJDhhBNOkAsuuECbKKBvjgURJKTToVAMBcAvJptIAiQQ8AQohgJ+CNkBEiCBUCAAwwHsDSorK5PzzjtPp75BYEDEpKWlaVEBMYOClDlEcODmhohMfn6+/PDDD9rRDOIEhgOOYgjGBLDghqEB7JthyoBrYRUNUeEohsy0A23BniVEqeBsh/1BcJZraGiQ3377TTurIXrkiZucp2lyYIAUQZhKQJzAhhoCBHzQF1+lycFaOzY2Vgsww1p7yZIlut/O1trgAKZ77rmnFq0QiXCow34wpPPBcIFiKBR+q9lHEiABfyBAMeQPo8A2kAAJkIAHBNavXy/YTA+BYbPZ9GIah65icY0oC+yhjWIcFgoBACGAVLi///3vOlr0xBNP9BFDuAcpaHB1QzQC0SFELnD+zgEHHNDv0FUz7UDdsKpGtAZ7e6qqqvR+GJw7dOihh8qsWbO0mBusmIkMoZ7XX39dm0fAqADnGp122mmaEcSer8QQuBmHrmLvFcYHIg/jg+c6F4hNpCHCeAHiEy50MMj461//qr8ohjz4heAlJEACJGABAYohCyCyChIgARLYWgQgdBAF+eMf/6jTwLZW8Zd2bK3+87kkQAIkQAKBSYBiKDDHja0mARIIQQKI/iAVy7EYh67izB0cYjocxV/aMRyR+jg6AAAgAElEQVR95TNIgARIgASCmwDFUHCPL3tHAiQQRARgGw0LbKRTIXUMe31g0YwDOr/99ltJSEgYlt76SzuGpbN8CAmQAAmQQFAToBgK6uFl50iABIKJAKI/2GuC/SlwasvJyZEjjjhCcPYNUuWGq/hLO4arv3wOCZAACZBA8BKgGAresWXPSIAESIAESIAESIAESIAEBiFAMcTpQQIkQAIkQAIkQAIkQAIkEJIEKIZCctjZaRIgARIgARIgARIgARIgAYohzgESIAESIAESIAESIAESIIGQJEAxFJLDzk6TAAmQAAmQAAmQAAmQAAlQDHEOkAAJkAAJkAAJkAAJkAAJhCQBiqGQHHZ2mgRIgARIgARIgARIgARIgGKIc4AESIAESIAESIAESIAESCAkCVAMheSws9MkQAIkQAIkQAIkQAIkQAIUQ5wDJEACJEACJEACJEACJEACIUmAYigkh52dJgESIAESIAESIAESIAESoBjiHCABEiABEiABEiABEiABEghJAhRDITns7DQJkAAJkAAJkAAJkAAJkADFEOcACZAACZAACZAACZAACZBASBKgGArJYWenSYAESIAESIAESIAESIAEKIY4B0iABEiABEiABEiABEiABEKSAMVQSA47O00CJEACJEACJEACJEACJEAxxDlAAiRAAiRAAiRAAiRAAiQQkgQohkJy2NlpEiABEiABEiABEiABEiABiiHOARIgARIgARIgARIgARIggZAkQDEUksPOTpMACZAACZAACZAACZAACVAMcQ6QAAmQAAmQAAmQAAmQAAmEJAGKoZAcdnaaBEiABEiABEiABEiABEiAYohzgARIgARIgARIgARIgARIICQJUAyF5LCz0yRAAiRAAiRAAiRAAiRAAhRDnAMkQAIkQAIBReCjjz6S/fbbT/bZZx/Bv1lIgARIgARIwFsCFEPekuN9JEACJEACW4UAxdBWwc6HkgAJkEBQEqAYCsphZadIgARIIHgJUAwF79iyZyRAAiQw3AQohoabOJ9HAiRAAiQwJAIUQ0PCx5tJgARIgAQcCFAMcTqQAAmQQIgSWLdunYwbN05SU1OlpKREYmJi+pGoq6uTvLw8sdvt+pr09HSXtC699FK56667ZO7cuXLLLbe4vOb++++X2bNny4knnijPPvusvmbTpk3yzDPPyBtvvCErV66UiooKiY2NlUmTJsk555wjp59+er+6BhJDjz/+uJx55pkyffp0wb+di7ufL1++XBYuXCgffvihVFZWSkJCguyxxx5y+eWXy7777tuvPrT3jjvukE8++USziYyMlMzMTNltt9102/fff/8QnVnsNgmQAAkEDgGKocAZK7aUBEiABCwncNRRR8mrr74q//znP+W0007rV/+iRYvkkksu0aLkiSeeGPD5EBI77LCD5Ofny/r16yUsLKzftZMnT5avv/5a3nzzTTnkkEP0z5966in93KKiIhk7dqxkZGRIaWmp/O9//xObzSYzZ86UxYsX96nLF2IIfYOA6e7ulh133FHGjx8vZWVlsmzZMunp6ZElS5bI+eef39uOH374QaZMmSKtra2y3XbbybbbbqsF48aNGwU/O+uss2Tp0qWWjxcrJAESIAESsJYAxZC1PFkbCZAACQQUgXfeeUcOPvhg2XPPPbUAcS7bbLON/P777/LFF1/oKMlgZZdddpHvv/9e3nvvPTnggAP6XIo6UFdOTo4WDOHh4frnK1askJaWFh1NcSxr1qzRkZUNGzb0e7bVYui7777TfUNE6sUXX+zT9i+//FIOPfRQ3UYIvokTJ+pmIgKFSNOCBQvkyiuv7NP22tpaKS4uFvBgIQESIAES8G8CFEP+PT5sHQmQAAn4lACiGYhqQKwgooGoiFE++OADLQx23nlngWBwV+655x656KKLdKQHkSbHMm/ePLn11lvl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e54cAhCAAAQgAAEIQAACHZoAYqhDNz8PDwEIQAACEIAABCAAgY5LADHUcdueJ4cABCAAAQhAAAIQgECHJoAY6tDNz8NDAAIQgAAEIAABCECg4xJADHXctufJIQABCEAAAhCAAAQg0KEJIIY6dPPz8BCAAAQgAAEIQAACEOi4BBBDWdz29913n40fP94+/PBD69atm40aNcouu+wyW2uttbL4rtv21i699FJ7++237a233rLPPvvMs/n8888bvIlvv/3Wzj77bHviiSds/vz5NmTIEDv55JPt2GOPTXlNR22D6dOn29///nd79tlnbcaMGbZs2TIbPHiwHXLIIXbaaaf5/pic4Jpev//qq69szJgx9uabb9o333zjua655pq2yy67+H659tprwzU9lE2WWrJkiW288cb+78Jxxx1nN954I2ybpJa6gBsoNHjl0qVLrXPnzjXn+VvQPMj6HdLv+kMPPWRffPGFde3a1dZff33705/+ZD//+c/h2jycNnbsWBs3blyDVxUVFVl5eTlcm8k134sjhrK0ha+99lo/SB8xYoQddthh9sMPP9iVV15ppaWl9sYbb1j//v2z9M7b9rb0I73KKqvYlltu6bmsvPLKDYqhefPm2dZbb21ff/21H9Br4PnII494YaQ/oOeff36tm+/IbXDWWWfZNddcY/vvv78NHz7cSkpKbOLEiXb//ffbpptuaq+99pp16dLF84Jr+n1ewl19b7vttrOBAwf6QaSE52233eZ/oF999VXbcMMN4Zo+0gZLnnHGGXbTTTfZokWL6okh+mzzAOvv7I477mi/+93v6l34m9/8xgoKCuizzUPqS2u9IL0I+fHHH+23v/2t/7cvEf/RRx/ZBhtsYCeddBJcm8n1vffeM211k4799a9/tQMPPNALT367mgk2z4sjhrKwgefOnWuDBg3yVovXX3/d9CZDSW+Tt9lmGzvqqKPslltuycI7b/tbmjlzpq2zzjr+i/U2TW/aG7IM6c273sA9+OCDdtBBB9Xc7M9+9jN7+umn7eOPP655M9/R20B9TZagXr161WrUc8891y6++GKTUDzxxBP9Obi2vt9PnjzZtt12W2+hvPnmm+HaSqTvvPOOf/Hxl7/8xSSK6lqG6LPNAywxdOSRR9odd9zR6IVwbR7XnXfe2f/u6N9/Y4uqw7V5XFOV1t8A/W19/PHH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ww472B/+8AcbPHhwB+9ZPD4EIACB7CeAGMr+NuIOIQABCGSUgETHDz/8UO87qqqqvFApLy+3u+66yw4//PAG7+Oaa66xU045xX7zm9/YPffcU6/cvHnzbPXVV/fH58yZYyuvvLLfP+aYY+y2226zTTbZxAYOHGidO3e26dOne4FRWFhof//73+1Xv/pVrfoyIYYkzm6++WYrKSmxrbfe2vr162fTpk3zYq1nz5727LPP2jbbbFNzH//3f/9nv/vd76ygoMC22247f+8LFizwgu7DDz+0++67r959Z7QRqRwCEIAABFpEADHUImxcBAEIQCD/CZx22ml21VVXeSuNrCASKg0lWXQkIIqLi73YWWmllWoVlTXo97//vf3yl7+0f/7znzXnXnzxRW91GTBgQK3yTz75pB1wwAHWvXt3++qrr6xr164150OLoVjIbbbZZvbAAw/YuuuuW/Nd8X3rHj/++GMrKiry59Zee20vfF599VUvhpLTp59+6oWcypAgAAEIQCC7CSCGsrt9uDsIQAAC7ULguuuus5NOOskLlddee81WW221Ju/jwAMPtIcffthuvfVWO+qoo2qVHz58uBcOEjl77713k3WpwKGHHmr33nuvPf7447bvvvtmRAxVVlZ61zZZxj766CNbb7316t3bz372M5ML3SOPPGLaV+rWrZu3Iv30009pPQuFIAABCEAgOwkghrKzXbgrCEAAAu1GQIJFg35ZdyRg1l9//bTuRWJB1pyRI0faCy+8UHONLCUSGXKTk5VHVpPkpPk5EjxTpkzx4kJueUrvvPOOd5f73//9Xzv99NMzIoY0P0jub5tvvrn/vlRp/PjxduaZZ9rZZ59tl1xyiS+iZ3zppZfsyCOPtFNPPdVf735Q0+JEIQhAAAIQyB4CiKHsaQvuBAIQgEC7E5Ag2XHHHW3ZsmU+GMIuu+xSc0+XXXaZt57UTXfccYc/JBGzxhpreCvLzJkzTYEZlP785z/bhRde6AMi/PWvf611+b///W9vRdKcooaS3OK0wGqcQrrJ/etf//Kue+kkzW/SXCElzQs66KCDvOucUq9evby73J577mlHHHGE/0yCAAQgAIHsJ4AYyv424g4hAAEItAmBb775xrbddltvvUkVkW3nnXc2zfGpm6qrq2sOyUpy9dVX2wUXXGDnnXee6Zyiqn322Wc2depU23jjjWvKzpo1y4YMGeKF15gxY+zXv/61F1CaHyQryznnnGOXXnqpF0ISQK0VQxIpd999d61n0/wlBWhYc801bbfddmuUs6LESRDFSeLvueees6efftpefvlle/fdd01BJxQNT0Jy2LBhbdJufAkEIAABCLScAGKo5ey4EgIQgEDeEFi8eLHttNNOPjy2hMlFF13UomeTq9mWW27pgxB88skn3pVMLmUKvf3mm2/WqjMOTnDwwQf7wAV1kyw2stykK4YU3U2WG4mxk08+uV59sWtbstB75ZVXfPhuWXXkEtia9O2333rrlyLghaivNffCtRCAAAQgkB4BxFB6nCgFAQhAIG8JyJqh4AePPvqot5IoaEFr5r9suumm3go0adIkHzZbARVSCRTNv5HwUtS6K664ohZfudppnpHc59IVQ+PGjfMWpBNPPNGuvfbaWvV99913XqAtXLiwlmVI1h3NZVJYbIm32LWvpY2t9Zpi65YEJgkCEIAABLKbAGIou9uHu4MABCCQcQJxCG1ZSOT2VVpa2qrv/Nvf/uYtJHJLU1CFJUuW+EVJe/fuXavehx56yGQVUlhtBTLQIqdKEhGKJKdrldIVQ3JVk3VLi5+qPrngKUlQqT4FhlCq6wIoIaZFUhVaW+e22GKLWvep67VY7H777efvUc9z0003+XWXVl111Vpl4yh8CjqhdYpIEIAABCCQ3QQQQ9ndPtwdBCAAgYwS0LwdLRiqpMF+XcESf7nmymjOTDpJ7mKag1NRUeGLy+ok4VM3ySqjBU4VtEECRnOStI6PXOu0mKnCaUucpCuGVP8+++xjTz31lA99LWGkNHnyZC9iJI4U+jvVfCgtGKv1hmQRkyjSPKeysjITH4ma5cuX+1wiR+JIARIUFU9lZXHSdQouoWfRM0g8xWG402FGGQhAAAIQaB8CiKH24c63QgACEMgKAlo4NJ3FQVMJiMYeQMLqiSee8EUkQH7+85+nLC73NLm3yUVPwkOWFkVkUwAGzf/RueaIIVltVP7+++/31iiJIEV9U30K7nDnnXemFEO6uYkTJ9oNN9xgmkf0/fffe0GlhWQl2HT/eiYtKiuRp3tT+HAFTdD3yNVQAlDWNYUBTw4UkRUNzU1AAAIQgEBKAoghOgYEIAABCEAAAhCAAAQg0CEJIIY6ZLPz0BCAAAQgAAEIQAACEIAAYog+AAEIQAACEIAABCAAAQh0SAKIoQ7Z7Dw0BCAAAQhAAAIQgAAEIIAYog9AAAIQgAAEIAABCEAAAh2SAGLINfv06dP9iuHPPvuszZgxw5YtW+bDqh5yyCF+MUBFFGoqKSTsiy++mLKYwrzutddeTVXBeQhAAAIQgAAEIAABCECgDQkghhzss846y68vsf/++9vw4cOtpKTEh1hVaFatpP7aa69Zly5dGm0WiaEPPvig3irqumi33Xbz4VlJEIAABCAAAQhAAAIQgED2EEAMubZ48803vSVIi+glp3PPPdcuvvhiu/baa+3EE09sUgxpvQ5tJAhAAAIQgAAEIAABCEAg+wkghhppo/fee8+vLn7cccfZjTfemJYYmjlzpi1atMi6d+/uV1AnQQACEIAABCAAAQhAAALZSQAx1Ei7aK7PPvvsY+edd55fvbyxJDe5SZMm+dXJly5dap07d7Zdd93VLrroIttiiy2ys/W5KwhAAAIQgAAEIAABCHRgAoihBhq/srLSdthhB+9C9/7779vQoUMb7SajR4+2/v37+zlGmnOk666++mpTPRMmTPB1NZVmzZpl2pLTd999Z9OmTbNhw4alFcihqe/gPAQgAAEIQAACEIBA7hJYvHixyRNp3333tTXXXDN3HyRL7hwx1EBDaI7Q9ddf7y07Y8aMaVFzTZkyxbbZZhsvpORy11QaO3asjRs3rqlinIcABCAAAQhAAAIQ6OAENIVDUzlIrSOAGErBLw6ccMwxx9jNN99sDlKLKSs89wMPPGBffvmlDRgwoNF6UlmGJk+ebKeffrqfs7TJJpu0+D64EAIQgAAEIAABCEAg9wlMnTrVjj/+eL8kzKhRo3L/gdr5CRBDdRogts4cccQRdvvtt7c6CMKZZ55p48ePt7feesu23HLLZjf3K6+8YiNGjPDzkRT2mwQBCEAAAhCAAAQg0HEJMDYM2/aIoSSeclGTGDrssMPszjvvbLUQUtUHHHCAPfLII/b111/7OUXNTXT45hKjPAQgAAEIQAACEMhfAowNw7YtYijBU9Hizj//fDv00EO9ECosLExJevbs2TZ//nwbOHCgde3a1Zf56aeffHADBU5ITi+//LLtsssutvnmm/uACi1JdPiWUOMaCEAAAhCAAAQgkJ8EGBuGbVfEkON53XXX2UknneQFjkRRXSHUt2/fGp9MRY2TWJo4caIpnLbSww8/7H03NT9o3XXX9aJIbnF33XWXD7H9/PPP+2hwLUl0+JZQ4xoIQAACEIAABCCQnwQYG4ZtV8SQ4xkLnIbQjhw50l544QV/OpUYUuhrWZXefvttmzNnjpWXl3uXuN13393OPvtsW2eddVrcanT4FqPjQghAAAIQgAAEIJB3BBgbhm1SxFBYnsFro8MHR0qFEIAABCAAAQhAIGcJMDYM23SIobA8g9dGhw+OlAohAAEIQAACEIBAzhJgbBi26RBDYXkGr40OHxwpFUIAAhCAAAQgAIGcJcDYMGzTIYbC8gxeGx0+OFIqhAAEIAABCEAAAjlLgLFh2KZDDIXlGbw2OnxwpFQIAQhAAAIQgAAEcpYAY8OwTYcYCsszeG10+OBIqRACEIAABCAAAQjkLAHGhmGbDjEUlmfw2ujwwZFSIQQgAAEIQAACEMhZAowNwzYdYigsz+C10eGDI6VCCEAAAhCAAAQgkLMEGBuGbTrEUFiewWujwwdHSoUQgAAEIAABCEAgZwkwNgzbdIihsDyD10aHD46UCiEAAQhAAAIQgEDOEmBsGLbpEENheQavjQ4fHCkVQgACEIAABCAAgZwlwNgwbNMhhsLyDF4bHT44UiqEAAQgAAEIQAACOUuAsWHYpkMMheUZvDY6fHCkVAgBCEAAAhCAAARylgBjw7BNhxgKyzN4bXT44EipEAIQgAAEIAABCOQsAcaGYZsOMRSWZ/Da6PDBkVIhBCAAAQhAAAIQyFkCjA3DNh1iKCzP4LXR4YMjpUIIQAACEIAABCCQswQYG4ZtOsRQWJ7Ba6PDB0dKhRCAAAQgAAEIQCBnCTA2DNt0iKGwPIPXRocPjpQKIQABCEAAAhCAQM4SYGwYtukQQ2F5Bq+NDh8cKRVCAAIQgAAEIACBnCXA2DBs0yGGwvIMXhsdPjhSKoQABCAAAQhAAAI5S4CxYdimQwyF5Rm8Njp8cKRUCAEIQAACEIAABHKWAGPDsE2HGArLM3htdPjgSKkQAhCAAAQgAAEI5CwBxoZhmw4xFJZn8Nro8MGRUiEEIAABCEAAAhDIWQKMDcM2HWIoLM/gtdHhgyOlQghAAAIQgAAEIJCzBBgbhm06xFBYnsFro8MHR0qFEIAABCAAAQhAIGcJMDYM23SIobA8g9dGhw+OlAohAAEIQAACEIBAzhJgbBi26RBDYXkGr40OHxwpFUIAAhCAAAQgAIGcJcDYMGzT5ZwY+u9//2vXX3+9ffrppzZ37lyrrq6uRcQ9kM2YMSMspXasjQ7fjvD5aghAAAIQgAAEIJBlBBgbhm2QnBJDN910k51wwglWUlJiQ4cOtV69eqWkMXHixLCU2rE2Onw7wuerIQABCEAAAhCAQJYRYGwYtkFySgwNGjTIevfubc8884ytuuqqYUlkaW10+CxtGG4LAhCAAAQgAAEItAMBxoZhoeeUGOratauNHz/eW4c6SqLDd5SW5jkhAAEIQAACEIBA0wQYGzbNqDklckoMDRs2zA488EAbM2ZMc54xp8vS4XO6+bh5CEAAAhCAAAQgEJQAY8OgOC2nxNBDDz1kJ598sk2ePNnWWGONsCSytDY6fJY2DLcFAQhAAAIQgAAE2oEAY8Ow0HNKDOnR7777bjvppJPsgAMOMM0hKiwsrEVE0eTOO++8sJTasTY6fDvC56shAAEIQAACEIBAlhFgbBi2QXJKDE2fPt323HNP++KLLxqkIDFUWVkZllI71kaHb0f4fDUEIAABCEAAAhDIMgKMDcM2SE6Jod13391ef/11u+yyy2zEiBENhtZea621wlJqx9ro8O0In6+GAAQgAAEIQAACWUaAsWHYBskpMdS9e3c788wz7fzzzw9LIYtro8NnceNwaxCAAAQgAAEIQKCNCTA2DAs8p8SQgiacc845duKJJ4alkMW10eGzuHG4NQhAAAIQgAAEINDGBBgbhgWeU2LoD3/4g02ZMsWee+65sBSyuDY6fBY3DrcGAQhAAAIQgAAE2pgAY8OwwHNKDE2bNs2OPPJI69+/v51yyim29tpr14smJzwDBw4MS6kda6PDtyN8vhoCEIAABCAAAQhkGQHGhmEbJKfEUEFBgRZGsurqap83lIgmF7aTUBsEIACBFhNwf6+tstysym2VZW6riHL/OXlfn+NyLtd11VVNbI2VcVFFVYdSpwK36TfDbbX2E5/98brnk64rKDLzW7Hb3HIOhcrrfm7iXGGJu8bdBwkCEIBAKwkghloJsM7lOSWGxo4d26gIip8tnwIs0OHDdnhqg0CHJSBhULHMrGzxiq18idtfZFa+NDpX7rYK7S9PHHN5cz57sVNH8FQ5wUOKCEhMFXV2W2nL85JuZsVdzZQn79c9VtwlIfCADwEI5BsBxoZhWzSnxFDYR8+N2ujwudFO3CUEghOocKJi+UK3LUhsbn+Z25d48ZtETSxmlCeJHO2Xx58T5/RZlhZSByHgLF01AsmJp2KJp4SI0n7pSmade0R5aSLv3LPO56TzsoiRIACBrCDA2DBsMyCGwvIMXhsdPjhSKoRAZgnIAiMRs2xeJF5qBE1C2NQ7prLz65Rzx2SpyeYkd7MiZ30olqUj3pzFw7uQuU1uYYUJV7JG9xMuZ76Mrkt87uQG396lLeHiVrPvPmtgnvw5VRkdk/ubT7E7ndzm6u7rc3w81XknIKucy50sXN6Nz+Vy8dOx2K3Pn4uP192Py8rKFm+ywGk/Ra77y8YkAVVPPDmxJAHVeWWzLr3c5nK/XydXGcRUNrYq95SjBBgbhm24nBJD1113nT388MM2YcKElBT22GMPO/jgg+24444LS6kda6PDtyN8vrrjEqhyA2BZZCRolkrUNJJLyNQq4z5Xu4FyeyZZBJLdpmpcqhKuVd5C0H1FGV9egsaJG7lwycXKu3Kl+ByLH4kWUlgC8fyqVCKpMuG6KGugt/olWfz8sYSVsGY/YRn0x2UpTLIetrngcqJUQiqVUGpMROmchFQjc4TDNgC1QSA3CDA2DNtOOSWGtt56a9N2/fXXp6Rw8skn2+TJk+31118PS6kda6PDtyN8vjr3CcjVbOmPZkvctvSnpH19bkTkSAi1pUuZrCA1b91jV6UUbkyxO1MsbmrNG3HiRiJHwoa38LnfdzP1BBJcmiPmLZbaElbJuhbLGmtl7KqZcNNMtnS2hajSvw2Joq6rJKxPLo/36x1LlNFxCXoSBPKUAGPDsA2bU2Jo5ZVXtksuucROOOGElBRuuOEGGzNmjP34oxvo5Emiw+dJQ/IYrSPgLTWywDhBs6SOqPFCp67gSZTR3JqMpxRvvfU227sKSdho3kU89yJZ4CSJHia7Z7yV+ILABPRvUv++6lpN9W80pSVV/yYTLyAktDL9skFWzRqxFIupJLHUJRZVScdkuZJrJwkCWU6AsWHYBsopMdStWze76KKL7PTTT09J4YorrvBiaMkS5w6QJ4kOnycNyWOsIKC30l7UJIuYZDGT4pwGURl1PZOgiQVMijkPDc2F0HEJHSwx9HAIpE/ACylnadK/60bFkwRUnRcgim6YyeT/Dmj+UwqxVHNMfyMS57uuGkX1w5Uvk61C3XUIMDYM2yVySgxtscUW1q9fP3vyySdTUth7773tq6++sqlTp4al1I610eHbET5f3TQBCZvFPzhhM9dtLl+cyOsJnSRrTkYHM07USKBooFLjWpM0qOmaGOT4wU7ShG8vaFgDpukGpwQE2plA3Zcp9V6sSGDFL1cS7rH6e5TJlymyQnVzokibxFG31dzWO8pTfZY7KwkCrSDA2LAV8FJcmlNi6PLLL7ezzz7bzj33XG8BKilx0YdcKisr8xajiy++2Ocqky+JDp8vLZkDz6G5BHJfkbCpJXBisRMfT3yW8NFE7kwlzX2peUNb501tqrkCOkbUqky1BvVCIHcJ+AiPbh5grbmDiRc09cRU/OLG5XLNzURSZL6GxJIEVPc+blvdbCW36W8gVqdMtEJO18nYMGzz5ZQYKi8vN0WMe/HFF03zh4YOHeppfPzxxzZv3jzbcccdfaS5WCSFRdU+tdHh24d73nyr3FG8uPnObNG3blOe2F/8feKYy2XVUblMLJCpEMd13U5S+fL7Y0mTo5kAnTfdkAeBQE4SULh0zX9KOS8x4earF0f+5ZFy97dUL5RCJoWp797XCSO3SSBJKEkk6Vjd40R4DEk+q+tibBi2eXJKDOnRJYg0N+jee++1Tz75xNMYMmSIHXrooXbqqadacXF+hXulw4ft8HlTmyI6LZjtxMycFeImFjrJwkc/0qHdQ0qdT73eanbVJpeQ5P2Em4iETSx4VB4XtLS7XlVVtS2vqHJbpS0rr7Iyt1/uRG15pdsqqq1MedJW5o5VNHjelXfXR+ej/RXXVvv9Svd9NZt7g578ucp9rnDndU/KdS75WKXKu3p9nlSPXsT7FXv8+j3xfoSgWv8lltLxWc1+7ePJ16qYVgwqcG/ItelFebQf5f6z+xAfcz9sNef8MS1NlOLaQneiuLCTFblriwqjfX/Mf04cS5yLyqhs4hpX3h9zn3Vc1xa7YyVFBVZaVOi2eL/2MR3X+ajcijL6flIeEFAEyxq3YSeOZEGXSIrFUq3P7u+zLFahkv4me4uSxFN/s55rmPVweQ/liX1ClYei3a71MDYMiz/nxFDYx8/+2ujw2d9GQe9QCznqh3PBN2YLndhRnrzvj7lNk4+DJDeKrPFzl5BJCJv4mARNzX7iXFHkntoRkgb4S8oqbGl5pS0tq3T7Lk/sL3O5xIpEixcv+uzzFcdUJhI2yedrH4uFj65b5uqSaCF1PAISdl5EFTuB5IRRnHcuLrSuJYWmvEtiv0vis47rWFSmyLqUFPjPXbSfKK+yfktcKwEmsUjKEgJafDfZsrQottg7S/7C+GWXyxe6zyH+7mt9MS+QtK25Yr9nvO9Ek+ZdkrKaAGPDsM2DGArLM3htdPjgSNuvQr0Ol3/6/Flm89yWnMeCRz9+ISw5cjfzbhTyP0+4U3hf9KRj3Zy7hcRPDoeSrXCWjSUSIQmhkixWJFq8kEkIGH8uaV9CRed1PNqvfV5lZYXpiKnQjcwL3YDZ597i4tZfdQN0WVdkDfHHnCFDVhF/Trk/7rqTt8REg239Px54R/sRTWfLiU7WlFlxvKaML5Kox2X65yOrVLRFVifltT/LilW7nM7Xutad17WxNUviU/2oPMmylc9tLr5dnTDqVlpk3d2mXKIq3o+ON3x+RbnoGoksxFUb9Rgtnit3ZwkjeQX4PLElCyeJq9asASVrfq+BZiuvldjcfi/t65jbSt0SAaR2JcDYMCx+xFBYnsFro8MHR5q5CjUK0w+TFzlfphY9rVn3RnNvvI94v+htnvJk33E/6dZtEj1Z4juuQacExZLllbY4ITwWL48EiPJIsCSLEImXKnc8EjHJ4qb2fkXkQpaDYiV2j5IVoLOzAsRuU7IEdE5YBuJjOh+7XslaELljJY4l3LqK3Zv+6FjdcyvcuXRtcVHCjStxva/LiZhCuYbVET4deXAbuwTKtVCugRVJYkmiKT4mF8PIdTByQVQ5Haux9DlroNwS9TnKnbiOrYRJ+3XLrCi/wpoYi/jM/fFqec0SV92cJaqbE1ASRyt1LnZbkfVwefR5xbF4v0eKY/p3QQpEoLI8ybPg68i7YL7yxL5yiaegwIP+AAAgAElEQVSWCia9bJMoigVSr0Fmq6zjtsHONc9ZmFhqIFBDNlwNY8OwiBFDYXkGr40OHxxp6yrUhNr5Tuj8+JnbZpr99HmU67P2Wxo2WpHTYoFTL5evtxM+suRk2Iqjwd4iJ1IWLqvwuSwni52QiXMJmuTP/rhEiyubSuxIwGjAmO0pci2q7YYUH4tckSIXJO+KlCjb2Q3e5J6kzYuXWmImOlZzLsn9KbaaZDsT7i+7CMRzybybpnfVjF8cRP8+Zd1MfrlQY+307py1XzroRYT+HevfePRvuqLd3TP176WecCqNhFUssGKRFR/r7s9Fm8SX/r2R0iQgweRf3iWLJIkm9/uml3k/fREFj2huKix1omjtSBj1Tgik3tpfN3qBh4tmc4mmLM/YMAjGmkoQQ2F5Bq+NDh8cadMVat7OPPdD8IML0KHtp4TwkeCR1aclEddkrek5wL1Nc5vP3Vu1ms/uTZpWPm/lj4QGPPOXljshoy0SNJGoaeSzFz7ltihRVoOpbEzJcyXq70uorBAy8RyLeJ6FBMyK/fqiR9YYBEo2tjr31JYEZLmSQPJCKSGQFiU+e9GU2HRM4mvFsYSocueTX6S05b3H3yXrkkRRjy6ROOrRxW0SSj4vtp7KGzin47LWkpIIKDKehFEsjvy++22MPzd3DpNe+smCJHG02vpucxGBlUsoFTkRRUqbAGPDtFGlVRAxlBam9itEh88ge/lfz/00Ejzff+zy6dG+jlW6Sa3NSZp700tvw9xWS+hI9Dixk+Yie3IrW+gGFfOXlHthM8/l85aW+Tz6nLTvPqtcfF7uNe2ZNJdE8w26OWHSNc4T7jMSJHKj8bk7H89T0ETveBK4BE3t/cgKI1exjuy21Z5tyndDoCUEFHhEwigSR/HLmChf4F+8rDgWv4iJziUdd9e2tVFZ1qm6Air5sxdTjYitDuXqF8+BlTjynhIz3G+nvCSUu03R89JNcgGXSEoWSBJKqw4xY4mFlBQZG6bbudIrhxhKj1O7laLDB0CvFcu//8js2w/c9mG0L+EjK09zkkKT6g+294+W8NF+QgApXGmKFIubuYvK7MfFy+0Hn5fZ3EXLba7P3eaOR3mZ/eS2tnIrkyGquxMjcjGJ3E0il5Rkv/94LkBdMVMjdpJET4caCDSn31AWAhBoNgH97ZQLbmy5ri2iUomsci+0FnjreCJ3gqotk17cpLJIxdaoyDJVbCu7rWdX5SXWq1uU62VQXqWlzsXOu5C7TS8YJZBioZS2+537kdLvbd+NzFbf1G0bu22TyKuilZ4Uuc6asWHYFkQMheUZvDY6fDOQKoDBvM8jwSPh853Ej9v0x7g6TauJRM2qMt27N1J6K9V7vcikr6g6xZ1rbkZvPiVovlu43L5dsMxtUa7P3+nzwmX2w8JI+GRqkr8mxUc/qG5zeU/3g6of29iHvsavvmYSc23BI6GDe1gz+hdFIQCBnCLgLVQJi5Ms67I8LVgaWaAkmvyWEE71ziXmTbbVA8sqpb/jEkY+d1uvru5veiyaEsdWdseSy+XkPCmFD//BeWN8Ny3yytALSuVaIy+dpN/pvk4USRj5zYkkWZU6kKsdY8N0Okr6ZRBD6bNql5J0+Aawa/Kn/oB+867ZbG1TIhFU7lzf0kk9nftaLHhWdYJHAkjix62pU+aiQs2Zv8y+nrfUvklssyV0EqLnOyd0vneiJ5QLh6IQr9KtxHp3K/W5Nv0AStjUFTrxj6R+MHEfS6ehKQMBCECgZQTigDK1BJQTUl5YJYuqBgSVLFuZTvodqCugevnfk+i3RNuq3aPfFh3TOUWfzMq05MeEMEqII+/R4X7X0xFJBUXuN30DszW2jLb+buvjPmdJZNXQvBkbhiWKGArLM3htdHiHVMJHb5AkemLxM+f99Ob1dHULifbd0G3uzVEf5Rva4h7r2hcLO9WIHYmeZOEj647coVuTNGl3tZVKrbf7EVq1e/SDJLHT2+2vyN2+Oy/Ro3VbSBCAAAQgkD8EFGo9tkzF4ime//mTm/8pUSXX6HmJ+Z86pn3NDc3k4sv6fdJvTyyY9LsUCafax+IXdO3uAr3IWYzmTI22b91vv3LN721qTb4i580h97o1tlohkOTerkXScjwxNgzbgIihsDyD19bhOrxUiEJUf/WG2azJZl+/Fbm6NRXQoLAkegvUZyOrdoJnYc+h9nnRIJu5pJt9MXeJ2xbbFz9GuebttDTJ9axvj85uK7U+K3W2Pi7v63Idi/eV56TrQkuhcB0EIAABCAQjoPlSWpbAi6NE8Jx4Pw6iE4smnY+FlfYzMedUv3t6ubeaE1B93G+dcn3uo2PK3W+ejsmtr81crzUXWC9JY3EkgTT7vaa9Q7Sg7BpbmA3YNtrW3NpFc+0RrO3aqqIONzbMMFjEUIYBt7b6vO/wiuj2zTuR8JEA0rbY+RM3lrSOgfMRrui7mX3bfX2bXjDYpizrZ5/MXW6fO7HzpRM/isjW3CR3gzVW7mL93aY83tfnfj0jwZN3k1ybC4nyEIAABCCQlQTigD2yNikgz49xgJ7Evg/eo/3E9oOb9xoyCqkiisolL1koJe/rN7Rfzy7+fEa8IbQshuYeffN29CL1a5frZWqV8y5pKCmSnQI0DNjObKDbJJC0BEaWp7wfG7Yxf8RQGwNv7tflXYeXufuLSW57xQmg152525m8GzN1O+FT0Wdjm9tzA/u8eIhNqRxkry9azT7+PprT0xx3Npn6B67S1dZy28DeXW1Ar662Rq8VoqeXm6dDCOfm9lDKQwACEIBALhKILVArRFIU2TT+HEdBlYDSPFltISxPEkJ9nSBa3b1klDiK8s5JeRdvdQoyt6l8WSSIJI68SHKbgjc0lhQ5VqJoreFma+8UzSfOsuh1eTc2bOd/QIihdm6Apr4+5zv8Arei9ecSP/+N8rnOz7eRVLbSAPu2x6b2UdEQ+++ywfbs3FVt9qI0I8G5eldykdMkdAb17uZzCZ+13P5abn9191aqzUz4TTUs5yEAAQhAAAI5RKDKRQ2Se55EURxIKNqPhFLyMUXpa02S9pDr3QqR1MXWdC8v13QvMZXrZaZClrfoBebSn9zLWLniv2b2pXspK6FU4dzuGkrd+5oN2sFtO0abIsy2szjK+bFhazpHBq5FDGUAasgqc67Dz//a7LMXEwLIiZ+f3GJsDaRKZ/X5vvuGNq1ofSd81ran5w2wrytTr9dTtwr9gVy3T3cbvFp3n8f7ClbQoj+OIRuNuiAAAQhAAAIdmMCy8sqEQIqE0vcuCuscF5F1tovUqmit2r6Zv9SWlaf/srMuTr38lHdHLJBaLJYq3DxizTny4ujVSCA1FsFupf6ROFrbCSNZjrQWUhunnBsbtjGf5n4dYqi5xNq4fNZ3+OULnfBxVp8ZE81muk2LmTaQygq72SelG9tLZUNswuLBNrV6HSs3Fw6zkSS3tqGrr2TrJQSPRM86TgBpYVASBCAAAQhAAAK5SUBueoqoFwukKF8afU4Ip9nOHb6lIcpjsaRxxKBVu3mPkUHyGHH7/RrzFJH/vdYn1Njm85fdC96XzBZ92zBkRagbvJvZum6T5ai0e8YbJOvHhhknEPYLEENheQavLes6fKUzfcvvNhY/CnhQldocvrhgJXu3YAN7Ydl69lrlBvZh9VpWaalX2e7qVt9e34me9fv1sA3ctmG/lWxI35XcAqLFwZlSIQQgAAEIQAACuUFgoVvbyS+B8dNS+8pvSxJ5tP+Ti6LX3KQ5xLEbvQRSLJbkUq+gSbUCPEgcKZT3504UfebEkUTSkh9Sf2WBG7MoEMPgXSNxpMVhMxDKO+vGhs1tgCwrjxjKsgapeztZ0eEXujcinzzrtmec9cf9MVg+PyW1pZ062+tO9LxUubG9WrWhfVQ9wKqtfjx/RZvZbM2ettEaPb3oWX/1Hj6wAfN5srwzcnsQgAAEIACBLCMQi6WvfqwjlOYtsVnumKxPzUklblHaAat0sbVXjV3wu0Wu+G7roRe0EkcK6y2r0cwXIstR2aLUX9GtjxNGu5itt0ckjrr0as6tNFg2K8aGQZ4kOypBDGVHO2RXh69yPrxzpphNd+JHmyxBKVKlEzpTq9a2l6s2sf9WbmJvV69Xz+1NC4pu6oTPJk74bLrmyn5f832Y15PlHY/bgwAEIAABCOQBgfnOcqRlN7Rp3UG//0O0r0h5zUmKcld3rvK6vUus7/wp1mnG885r5jm33pEbP6VKnZxnjCLUDdnLbOjeUSCGFibEUAvBNXAZYigsz+C1tVmHX+7eaugNh6w/050VaNGclM8yq2o1L35eqtrUXnHWnwW2wjdWawzI2rPVwF62+cCVvfVHFh+ET/BuQYUQgAAEIAABCLSSwALngqe1CWOB9HlikfbPnFhqzgLtmsc8eLVutp5z79+sV7ltXfmurTXvNev85YvWqaFgDL3Xc6LICaMhThgplHdh+nOh22xs2Eq+uXI5YijLWyqjHX7xXLOPnzCb9lgkhCrrvyGpqC6wN6rWt+erNnfbFjaj2kVRMRfz0iVZfbZaq5ffhrlNlh8WJc3yDsXtQQACEIAABCDQJAFZlD79fpHN0PZdlH/q8i9/XGIuynhaaZUuhbZH7+9sj6J3bbOlr1nv+W7No1Sp88qRK90G+zl3ut3NSro1Wn9Gx4ZpPVl+FUIMZXl7Bu/wWvdn2uNuezRa/LS6fljLH6u72wsSP5VbeAvQAov+USps5bZr97atB0UCSKZi5vlkeQfi9iAAAQhAAAIQCEZgeUWlc7NbUiOOYpGkvKlQ4X3sJ9u18B3br3SKbV39npVWL69/X0VdovlFG/zMWY32dPOMnFCqk4KPDYPRyc2KEENZ3m5BOrxCRMr6o03R31Kk6VVr2ISqrey5yi3t3ep1rcrNB9IipcMH97bt3Lb9Or3dhMKuWU6L24MABCAAAQhAAAJtT0CL0s5y0e0+mrPQPo63bxeaXO4qU5iSSq3Mhhd8YLsXvG27Fb5tq3dyi8HWSdUuOl2ndUY6YbS/c6nb16z7ar5EkLFh2yPK2m9EDGVt00Q31uIO/8OnZh88ZPbhI2bfvp/yKadUrWNPV25jz1QNs5nO/U0Llm4/eFUvfLZ3AkjhJpnvk+UdhNuDAAQgAAEIQCBrCWgBWlmNkgWS9rWe0opUbZt1mmF7Fb5hexVMtrUL6q9rpJfUC/tubSUb/9zeWbqGjdjzQJs0aZINH+6CMpBaRQAxlITvvvvus/Hjx9uHH35o3bp1s1GjRtlll11ma621VlqQ33rrLRszZoy9+uqrVuUism211VZ2wQUX2E47uRWKW5iaJYbmzfICqGrqg1agaHB1UlV1J3ujeqgTQFvbM277obCPbbP2KjZyyGq2k9uG9O2O+GlhO3EZBCAAAQhAAAIQSJeA5iR9NGeBfTjbbd8ssA/c9sl3C628ssqGdprlRJETRk4cbVDwZb0qX5lVYSNuW4IYShd2E+UQQwlA1157rZ188sk2YsQIO+yww+yHH36wK6+80kpLS+2NN96w/v0VOKDhpDIjR460Pn362EknneSvu/nmm+2jjz6yp556ynbf3U2Ia0FqUgxpDSBn/amYcr8VfVPfBa68utBFfdvInq7a2iZUDrMeq/b3wkcCaNt1VrGuJelHL2nB7XMJBCAAAQhAAAIQgEAaBMoqqrwgkjCSQNK2aPbHtmPFa14YbVHgvH5cQgylAbMZRRBDDtbcuXNt0KBBNmTIEHv99detqCgSCG+++aZts802dtRRR9ktt9zSKNbtt9/epk6d6q1KAwcO9GXnz59vG220kXXt2tU+/vjjFlldUoqhJT/6+T9L3rnfOn/1ijOc1g6CUOksQJOqNrbHqra3/xZuaxuvOygSQOutZgOd6xsJAhCAAAQgAAEIQCD7CWgukiLYyYL05WfTrftnz1j5e4/aUbd9gGUoUPMhhhzI2267zY4++mi744477Mgjj6yFduedd7a3337bW4pKSkpSYp85c6YNHjzYRo8ebbfffnutMmPHjrVx48Z517ntttuu2c1WI4YmTrBtV/7BFrz5T+vx9UtWWF1Rr67JVUPtscrt7Z3u/7+98wCSqvi6+C0yApKEJQfJYUHJkoOA5FwCkmGJIqBkFFQkCpIEgSIWQSQjUXIQSZIzEiWD5Jy/Pffv229mdmb3vdmddXbm3Kotit1+b7p/3fNen763b5eRQnlySIVcKTX7W5xYMSx/Li8gARIgARIgARIgARLwPgLhRg15X5W9ukYUQ8Hd0759e5k0aZKcOnVKsmULPgTLxvr27StDhgyRgwcPSr58+Zx25rx586RRo0YaFhcUFGRXZu3atVK5cmUZM2aMfPbZZ5YHgzHgN7dKLGXSh05sf+h1ZlkR7AE6m7KSvJc3r3yYO0ByBB/6xcQHllHzAhIgARIgARIgARLwegIUQ5HbRRRDwTxr1KghK1askMePH0v8+MH53W1swoQJ0qlTJ1m5cqVUrVrVKf2RI0dK9+7dZdWqVVKlSvBJwjaGsDmEyvXo0UOGDx8eZu9dvHhR8GNru3fvlm7dusnEanElMCCm/uni6xSyQwLlTqoSkiVrdj3zJ+lbcSN3ZPBuJEACJEACJEACJEACXkcA2zKwkI8FdyT7okWMAMVQML8KFSrIxo0b5dWrV8GHiNqHlBkhdAsWLJD69es7pT1w4EDp37+/bNiwQcqXL29Xxgihg6BCkoawzAipi1iX8moSIAESIAESIAESIAFfJzBx4kRp166drzfT4+2jGApGHJZnaPz48Zodzl3P0NGjRyVvcPiau56hrVu3Sp8+fWTUqFGazIEWeQSMlRU8TAIDAyPvxn5+J3L1zAAgV3L1DAHP3ZVj1jNsyZVcHz16JFhsr1atmqRLl84zQPzorhRDwZ0dHfYM8WCtyP9WMuY28pnijuRKrp4h4Jm7crx6hiufBeTqOQKeuTOfBZ7hGh3uSjEU3EtTp06VNm3auMwmh8NUkX7bVTa5M2fOSNasWcPMJocvGdJvWzV+Oa0SM1+ebM2zslKSXK3QMl+WXM2zslKSXK3QslaWbK3xMluaXM2SslaOXK3x8qXSFEPBvYm02RkzZpScOXM6PWeoZcuWKphgV69e1fODcJYQzg8yrGjRooKQuOPHj0v69On11/fv39fkCTiA9a+//nIrwxu/nJ77upGtZ9iSK7l6hoBn7srx6hmuuCvZeoYtuZKrZwj4710phv7te6S+7tq1q5QoUUKaNm2qAgn7dGLHjq2Hr6ZNm1ZL4iyhmTNnyqZNmwRnEBmGw1rx/4CAAE2hDS8S0nVDHCHLXKVKldwaZXzouYXN1EVkawqT5ULkahmZqQvI1RQmy4XI1TIy0xeQrWlUlgqSqyVcpguTq2lUPleQYsimS+fMmSNIkw0BA68P0hXijKHMmTOHlHIlhlBgz5490q9fP9m5c6dmpitUqJAeuGormqyOIKTahlcKh8IaHier92B55wTI1jMjg1zJ1TMEPHNXjlfPcMVdydYzbMmVXD1DwH/vSjHkv33PlpMACZAACZAACZAACZCAXxOgGPLr7mfjSYAESIAESIAESIAESMB/CVAM+W/fs+UkQAIkQAIkQAIkQAIk4NcEKIb8uvvZeBIgARIgARIgARIgARLwXwIUQ/7b92w5CZAACZAACZAACZAACfg1AYohv+5+Np4ESIAESIAESIAESIAE/JcAxZD/9j1bTgIkQAIkQAIkQAIkQAJ+TYBiyIu7/+eff5YRI0bIsWPHJEGCBHru0dChQyVjxoxeXOuorRrOgdq3b5/s3btXzp07p2zOnz/vshLXr1+XPn36yMqVK+XevXuSPXt26dy5swQFBTm9xl/74NSpUzJ79mxZu3atnDlzRp4+fSpZsmSRBg0a6OHEGI+2Rq7mxv2lS5f0LDIc5HzlyhXlmi5dOilXrpyOS9szzXBHcjXH1Vmpx48fS968efW50K5dO5k4cSLHrJs4gycKLq988uSJxIsXL+TvHLPWIOM9hPf64sWL5cKFC3rGYc6cOaVXr15Sq1YtcrWGU77++ms939GVxYoVS168eEGuFrn6enGKIS/t4R9//FEn6SVKlJAmTZrIP//8I6NHj5a4cePq4a5p0qTx0ppHbbXwkk6WLJkUKFBAuSRJksSlGLp7964ULlxYLl++rBN6TDyXLVumwggP0AEDBthV3p/7oHfv3jJu3DipUaOGFC9eXOLEiSObNm2S+fPnS758+fRg4fjx4ysvcjU/5iHcMfaKFSsmGTJk0EkkhOe0adP0Bb1jxw7JnTs3uZpH6rJk9+7dZdKkSfLw4cNQYohj1hpgPGdLlSolbdu2DXVh48aNJUaMGByz1pBqaRyeioWQ27dvS8uWLfW7DxF/4sQJyZUrl3z66afkapHroUOHBD+Oht99//33UqdOHRWefHdZBOvjxSmGvLCDb926JZkyZVKvxa5duwQrGTCsJhcpUkRatWolU6ZM8cKaR32Vzp49K++++65+MFbTsNLuyjOElXeswC1atEjq1q0bUtmaNWvKmjVr5OTJkyEr8/7eBxhr8AQlTZrUrlO//PJLGTRokEAodurUSf9GrhEf97t375aiRYuqh3Ly5MnkGkGk+/fv14WPYcOGCUSRo2eIY9YaYIih5s2by4wZM8K8kFytcS1btqy+d/D9T58+vcuLydUaV2el8QzAs3XFihVSrVo1PmMjjtSn7kAx5IXdiVXi1q1b64sHLyBbw8MTq8vwFGG1nvb/BMITQ1iJh7CEgLK1zZs36+ocQu7gEYGxD5yPLKyu5c+f325ySa4R/xbevHlTUqZMKfXr15cFCxboDcnVPa6vXr1SYRkQECDjx4/XBQ5HMUS21tgaYgiTyWfPnkmiRImc3oBczXPdtm2blC5dWkaNGqXe4pcvXypbxxBkPgvMM3VVEt621KlT67hFKGLMmDH5jI04Vp+6A8WQF3Zn+/btNbwD4TPZsmWzq2Hfvn110n7w4EENV6KZE0PXrl3ThyFCOubMmWOHDS8ghHzVrl07xH3OPnA+slavXi1Vq1aVr776Sr799lshV/e+gc+fP5f79+8L/oU4B8t169bJ9OnTpUWLFuTqHla9auTIkTo+jx49KpjEO4ohjlnrcMERk3R43iE2EZpcr1499RKnSJFCb0iu1rga3p5ff/1VZs6cqSHbEETY9wpvphEiR67WuDorjYVlhCEismHgwIEcrxFH6nN3oBjywi7FPg24crGaYezLMKo5YcIEDU/CPhdMSmnmxBASLBQqVEh69uypoTOOhlV5hCYiXAHGPgg9sjAJKlmypIZrHjlyRHLkyKGJK8jV+rdw4cKFmozCMEwoMTYxCYKRq3WmuAKrvnny5NEkFZhsImTWUQyRrXW2CM+G1xKh29iDBeE+a9YsfWYilBvjl1ytccXelaVLlyo7jFG81yE68Y7HnkwskEDUk6s1rs5KY7/b9u3bNRmQkaSGXCPO1ZfuQDHkhb1ZoUIF2bhxo67AGRtTjWoa4VsIpcHLiWZODBkhCYZHw5EbwjvefvttneTD2AehRxZe1nhRf/fddzrZhJGre9/AGzdu6CZfZOKCBwPfZ8Sx9+/fX0M5ydU9rlgggiA6cOCAxI4d26kYIlv32Dpe9dNPP0nHjh010c/YsWM5Zi1i/fDDD2XDhg0qKJEwAcmRYPAWI5ECsk0i2Q/eSQin47vLIuB/i2NPFkLo8U5fv359yE34HHCPp69eRTHkhT0bllcCMfBwn9MzFLrjwtozFN4qkLE6Z8Yz5I99YCROaNOmjW5CNVLtkmvkPECQchthr/AWIUSWXK1znTt3rnzyySeyZcsWnTzC3PEM8Vlgnj086tiHgRV3jlnz3FDSeM8j9B3hhraGzKbwDCEsGeMxLO87x2vY3OFxRxY5HJPRsGHDkMIcr9bGq6+Xphjywh7mfhX3OiUsMRRW3DXi4HG2A/cMOedunNvQrFkz3dNi660kV/fGqrOr4OlF2MyjR4/kzp07Lve4cbyGpofVdGTjQjgXUsIbBpGJEBnsFcSEE9kR4Y1ztX+QbK2NZ2Tsw8o79r/xWWCNXYcOHfTsK4xXY3+QcQf8Hn/H/tby5ctzvFpDG1Iae7BwjhuOLYCnzfC+oQDHq5tQffQyiiEv7NipU6cKVuBdZZPDigZSPzObnH3nhZdNDpMlhM64yiY3ePBg3WcAYx/8jy0Or4MYwllX2OTrGLaJMuQaOQ8RhMmtWrVKEEKH1V5yNc8V5wY5poF3drWRMZJszbN1VfL169c6TpMnT67JfvgssMYUz1MkS3G2j9VIlISwLoR3cbxaY2uUXrJkiR6j0aVLFz2n0dHI1T2uvngVxZAX9irSZiOjDCb3zs4ZQlYUTNZp1sQQTvQePny403OGEI6AFU7jzCL2gWiYBsI1EHqEF7eRjtRx3JGr+W8iViNTpUoV6oLDhw/rQazwWJw+fVr/Tq7muWLlF6HDjgZhibTalStXFnjckVwBGTrJ1jzb69eva5pyR8PiEfYOfvHFFzJixAiOWfNItSQEPN7ziErAnqHEiRPr7x88eKDvfngw4dnE3zleLcL9t3j16tX1uYD9mYGBgaFuQq7ucfXFqyiGvLRXx4wZo2cPlChRQpo2barnCuE8Ang2kM0rbdq0XlrzqK0WMhphwzQMzOAWx8sZliRJErvwA4QeIfYaE1KwRVYZpDNF5j5nm1P9uQ+MfVFILAFR5CiEMDmqWLGiciZX82MeK8HY3P/RRx/pxmmMVwih2bNna8KU5cuXk6t5nOGWdLZniGM2XGx2BfCsxEZ/TCwxeUeWU2STw0HV2Oj/+++/h3jl+CywxtZIiIQsfYgGwV5MLHRiYQ6RIQhN5ni1xtQojbA4vL8KFiyoi8rOjOPVPba+eBXFkBf3KuKFcWbG8ePHdXUIk0+EeRipIb246lFWNRxCiw3TzgwvbkyGbBpAy2YAAAwISURBVO3q1auCEASsFiHOPWvWrCqYsGrszPy1DzBphzfIlZUpU0ZwWK1h5GpuyEPsYLKzf/9+DYd78+aNLmxgHCOtdq5cuThezaE0VcqVGMLFHLOmEArOwUEWSWQ1w6IcQmWzZMmi4Uc9evSQhAkTcsyaQ+m0FJ4JOO4BiyR4HmDyjnDtKlWqkGsEuBqeSyT8CQoKcnknPgciANmHLqUY8qHOZFNIgARIgARIgARIgARIgATME6AYMs+KJUmABEiABEiABEiABEiABHyIAMWQD3Umm0ICJEACJEACJEACJEACJGCeAMWQeVYsSQIkQAIkQAIkQAIkQAIk4EMEKIZ8qDPZFBIgARIgARIgARIgARIgAfMEKIbMs2JJEiABEiABEiABEiABEiABHyJAMeRDncmmkAAJkAAJkAAJkAAJkAAJmCdAMWSeFUuSAAmQAAmQAAmQAAmQAAn4EAGKIR/qTDaFBEiABEiABEiABEiABEjAPAGKIfOsWJIESIAESIAESIAESIAESMCHCFAM+VBnsikkQAIkQAIkQAIkQAIkQALmCVAMmWfFkiRAAiRAAiQQikDZsmXl/Pnz+kMjARIgARKIXgQohqJXf7G2JEACJEACXkaAYsjLOoTVIQESIAELBCiGLMBiURIgARIgARJwJEAxxDFBAiRAAtGXAMVQ9O071pwESIAESMALCES1GHr48KEkTJjQC1rOKpAACZBA9CdAMRT9+5AtIAES8BMCFy9elO7du8tvv/0mL1++lCJFisiIESPk888/D7VnZe3atTJ16lTZs2ePXL16VeLGjavl+/XrJ2XKlLEjlilTJsHP5s2b7X6P/5crV06mT58uLVq0CPmblXrgoj///FMGDRok27ZtkwcPHuhnNWvWTHr16iWxYsUKt/eCX1TSvHlzadOmjfTp00f27t0rb731ltSuXVtGjx5tJwxcCRPs58mcObMMGDBAvv76a/1M2/Y9efJExowZoxyzZcsmQ4YMkerVq8uhQ4ekZ8+e8scff2hdGzduLD/88IPEiRMnpN7GZ27cuFG6desmW7Zs0f7B70eOHCk5cuSwa+ObN29k4sSJMmXKFDl+/LjEjBlTChUqJP3791fehtnWOU+ePDJ8+HA5evSoVKpUSZYuXRouNxYgARIgARIInwDFUPiMWIIESIAE/nMCd+7ckffee08uX74sQUFBki9fPtm3b58sXLhQ3nnnHXnx4oXdBn5M2m/duiUlS5aU1KlT63WYfEMYbdq0SUqVKhXSJitiyGo9Vq1aJXXq1JEsWbJIkyZNJHny5LJjxw6ZNWuW1K1bVxYsWBAuW4ih/PnzC0RYy5YtVaxAyMybN09ZTJ48OZQwcUxmEJYYghBBuyC24sWLJ+PGjZO///5b5s+fr/cHy9y5cwsE5pIlS+Sbb75R4WIYRA9ECgRa4cKFpXz58nLmzBkZP368CjX0U4YMGULKg8PcuXOlfv36Urp0aXn+/LnMmTNHDh48KIsXL5aaNWtqWaPOaDvq0759exV0EGIQhzQSIAESIIGIE6AYijhD3oEESIAEPE6gd+/eMmzYMPX2tGrVKuTzxo4dK126dJGMGTPaiaFHjx5JggQJ7Op1/fp1gYcBHiKIFMOsiCEr9Xj69KnWK2vWrCpeYseOHfKZo0aNUo8WhBnERFgGMYQfeGeKFSsWUrRatWoqUCBkjLAxdzxDadKkkWPHjknixIn13keOHJHAwED9TIhNiDbDChYsqMLy2rVrIb/DZ8IbhH6Ap8qw1atXS9WqVVUEQvzBIHbq1aunQqljx44hZeFJQtsgYM+ePaufbYghcDt8+HAoD5PHBx0/gARIgAT8gADFkB90MptIAiQQ/QnkypVLJ8rw7CCsyjB4FVKkSCFJkyZ1mdoZe0yePXsmCM+CR2Hnzp16L3fEkJV6LF++XL0c8NzAO2Rr+PycOXNq2NvgwYPDFUPFixeX7du325VDCBrCBiEU8ubNq39zRwz17dtXw/hsDcIoUaJEcunSJbvfQ/BAgN6/f1//bnwmxBD6JlWqVHbl4c2DuLl7967EiBFDhRDCHE+fPh0qRBACCSF8J0+elOzZs4eIIYQDwiNFIwESIAESiHwCFEORz5R3JAESIIFIJ4DwrQIFCqh3xNHef/999Y7YhoYhTAv7gzDxxkTc1uB1eP36tVtiyEo9sMcF+4LCMni54O0Ky1BfW++KUXbGjBkaNgevk7EPyh0xhPDB1q1b21UB3rL06dPrPidbg1hBmBxYw+tliCGEuKEPHK1Ro0YazgdPUkBAgIbbYZ9QWLZ161YNYzQ8Qz169ND9QjQSIAESIIHIJ0AxFPlMeUcSIAESiHQCYYkQeB8geAwxhCQF2LT/+PFj6dq1q4Z8wYsBzwQSA2CjP7xEhmEfCib2jgkU1q9fLxUrVrRLoGClHgjrQ1jd0KFDBeFlzgwhahAI4YkheLQgfmzNEEO2oXZIQHDu3LlQXjJ4YrDXyFUCBdsEEfgMV6GDhhjCZ6CMIYaQaOH27duhmtGwYUP55ZdfBCGKKVOmFHjWbty4ob9zZWBlePockz5E+sDiDUmABEjAzwlQDPn5AGDzSYAEogcBK+Fpy5Yt00xr06ZNU8+JrWFfyq5du+zEECbfSMCACb2tIbytXbt2dmLISj0Q2oX9Nggr69y5s9ugjWxyZsQQwtDWrVunYWy2hr1FlStX9pgYCitMDsIJXiOI0Vq1agnCB/F/Y4+SKzDOkj64DZEXkgAJkAAJOCVAMcSBQQIkQALRgADCzRAqZSaBwooVK6RGjRqhyhqCAM219QwhlGvRokXqUUmbNq3SwB4jJFqAQLJNrW2lHvBMGdnP9u/fr1nvbA3prJE4wNh746obrIgh7EGCJwqCD/WHISQQyRbWrFnjUTFkJoECEjI0aNBAOnTooEkU0DZbgwcJ4XQwiqFo8MVkFUmABKI9AYqhaN+FbAAJkIA/EEDCAewNunLlirRt21ZD3yAwIGKSJUumogJiBoaQOXhwkM0NHpl06dLJgQMHNKMZxAkSDtiKISQmQApuJDRA+mYkZUBZpIqGqLAVQ1bqgbpgzxK8VMhsh/1ByCx37949OXHihGZWg/fITDY5s2FyYIAQQSSVgDhBGmoIEPBBWzwVJofU2vHjx1cBZqTWnjBhgrbbMbU2OIDpBx98oKIVIhEZ6rAfDOF8SLhAMeQP32q2kQRIwBsIUAx5Qy+wDiRAAiRggsCFCxcEm+khMF69eqWTaRy6isk1vCxID22YcVgoBACEAELhBg4cqN6imTNn2okhXIMQNGR1gzcC3iF4LnD+ToUKFUIdumqlHrg3UlXDW4O9PTdv3tT9MDh3qEqVKtKpUycVc2GZFc8Q7rNy5UpNHoFEBTjXqGnTpsoIYs9TYgjcjENXsfcK/QORh/7B5zoaxCbCEJF4AeITWeiQIOPjjz/WH4ohE18IFiEBEiCBSCBAMRQJEHkLEiABEvivCEDowAtStGhRDQP7r8xb6vFftZ+fSwIkQAIkED0JUAxFz35jrUmABPyQALw/CMWyNePQVZy5g0NMo8K8pR5R0VZ+BgmQAAmQgG8ToBjy7f5l60iABHyIANJGIwU2wqkQOoa9PkjRjAM69+7dKwkTJoyS1npLPaKksfwQEiABEiABnyZAMeTT3cvGkQAJ+BIBeH+w1wT7U5CpLXXq1FK9enXB2TcIlYsq85Z6RFV7+TkkQAIkQAK+S4BiyHf7li0jARIgARIgARIgARIgARIIgwDFEIcHCZAACZAACZAACZAACZCAXxKgGPLLbmejSYAESIAESIAESIAESIAEKIY4BkiABEiABEiABEiABEiABPySAMWQX3Y7G00CJEACJEACJEACJEACJEAxxDFAAiRAAiRAAiRAAiRAAiTglwQohvyy29loEiABEiABEiABEiABEiABiiGOARIgARIgARIgARIgARIgAb8kQDHkl93ORpMACZAACZAACZAACZAACVAMcQyQAAmQAAmQAAmQAAmQAAn4JQGKIb/sdjaaBEiABEiABEiABEiABEiAYohjgARIgARIgARIgARIgARIwC8JUAz5Zbez0SRAAiRAAiRAAiRAAiRAAhBD/wdmAYsQ5b52SgAAAABJRU5ErkJggg==\" width=\"640.1666666666666\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot xyz values individually over time\n", "anim=xyzdif_aniplots(rot_FS_err[:,:-1,:], rot_MT_err, name1='positioning error FS', name2='positioning error MT')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }