Created
October 16, 2016 20:11
-
-
Save otto-gebb/1ed74aa4b3ddd4e94ac29d5d061f9333 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Various helpers for plots.\n", | |
| "\n", | |
| "from matplotlib import pyplot as plt\n", | |
| "#%matplotlib inline\n", | |
| "%matplotlib notebook\n", | |
| "\n", | |
| "def set_axes_equal(ax):\n", | |
| " '''Make axes of 3D plot have equal scale so that spheres appear as spheres,\n", | |
| " cubes as cubes, etc.. This is one possible solution to Matplotlib's\n", | |
| " ax.set_aspect('equal') and ax.axis('equal') not working for 3D.\n", | |
| "\n", | |
| " Input\n", | |
| " ax: a matplotlib axis, e.g., as output from plt.gca().\n", | |
| " '''\n", | |
| "\n", | |
| " x_limits = ax.get_xlim3d()\n", | |
| " y_limits = ax.get_ylim3d()\n", | |
| " z_limits = ax.get_zlim3d()\n", | |
| "\n", | |
| " x_range = abs(x_limits[1] - x_limits[0])\n", | |
| " x_middle = np.mean(x_limits)\n", | |
| " y_range = abs(y_limits[1] - y_limits[0])\n", | |
| " y_middle = np.mean(y_limits)\n", | |
| " z_range = abs(z_limits[1] - z_limits[0])\n", | |
| " z_middle = np.mean(z_limits)\n", | |
| "\n", | |
| " # The plot bounding box is a sphere in the sense of the infinity\n", | |
| " # norm, hence I call half the max range the plot radius.\n", | |
| " plot_radius = 0.5*max([x_range, y_range, z_range])\n", | |
| "\n", | |
| " ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius])\n", | |
| " ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius])\n", | |
| " ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius])\n", | |
| "\n", | |
| "from mpl_toolkits.mplot3d import proj3d\n", | |
| "from matplotlib.patches import FancyArrowPatch\n", | |
| "class Arrow3D(FancyArrowPatch):\n", | |
| " def __init__(self, xs, ys, zs, *args, **kwargs):\n", | |
| " FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)\n", | |
| " self._verts3d = xs, ys, zs\n", | |
| "\n", | |
| " def draw(self, renderer):\n", | |
| " xs3d, ys3d, zs3d = self._verts3d\n", | |
| " xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)\n", | |
| " self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))\n", | |
| " FancyArrowPatch.draw(self, renderer)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Define vertices and triangles.\n", | |
| "import numpy as np\n", | |
| "import math\n", | |
| "\n", | |
| "vertices = np.array([\n", | |
| " [0,0,1],\n", | |
| " [2,0,0],\n", | |
| " [1,1,1],\n", | |
| " [1,2,3],\n", | |
| " [2,2,3],\n", | |
| " [2,2,2]\n", | |
| " ])\n", | |
| "faces = np.array([\n", | |
| " [0,1,2],\n", | |
| " [3,4,5]\n", | |
| " ])\n", | |
| "\n", | |
| "\n", | |
| "tris = vertices[faces]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "/* Put everything inside the global mpl namespace */\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('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", | |
| "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 = $('<div/>');\n", | |
| " this._root_extra_style(this.root)\n", | |
| " this.root.attr('style', 'display: inline-block');\n", | |
| "\n", | |
| " $(parent_element).append(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", | |
| " 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", | |
| " this.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 = $(\n", | |
| " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
| " 'ui-helper-clearfix\"/>');\n", | |
| " var titletext = $(\n", | |
| " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
| " 'text-align: center; padding: 3px;\"/>');\n", | |
| " titlebar.append(titletext)\n", | |
| " this.root.append(titlebar);\n", | |
| " this.header = titletext[0];\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_canvas = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var canvas_div = $('<div/>');\n", | |
| "\n", | |
| " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
| "\n", | |
| " function canvas_keyboard_event(event) {\n", | |
| " return fig.key_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
| " canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
| " this.canvas_div = canvas_div\n", | |
| " this._canvas_extra_style(canvas_div)\n", | |
| " this.root.append(canvas_div);\n", | |
| "\n", | |
| " var canvas = $('<canvas/>');\n", | |
| " canvas.addClass('mpl-canvas');\n", | |
| " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
| "\n", | |
| " this.canvas = canvas[0];\n", | |
| " this.context = canvas[0].getContext(\"2d\");\n", | |
| "\n", | |
| " var rubberband = $('<canvas/>');\n", | |
| " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
| "\n", | |
| " var pass_mouse_events = true;\n", | |
| "\n", | |
| " canvas_div.resizable({\n", | |
| " start: function(event, ui) {\n", | |
| " pass_mouse_events = false;\n", | |
| " },\n", | |
| " resize: function(event, ui) {\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " stop: function(event, ui) {\n", | |
| " pass_mouse_events = true;\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " });\n", | |
| "\n", | |
| " function mouse_event_fn(event) {\n", | |
| " if (pass_mouse_events)\n", | |
| " return fig.mouse_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " rubberband.mousedown('button_press', mouse_event_fn);\n", | |
| " rubberband.mouseup('button_release', mouse_event_fn);\n", | |
| " // Throttle sequential mouse events to 1 every 20ms.\n", | |
| " rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
| "\n", | |
| " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
| " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
| "\n", | |
| " canvas_div.on(\"wheel\", function (event) {\n", | |
| " event = event.originalEvent;\n", | |
| " event['data'] = 'scroll'\n", | |
| " if (event.deltaY < 0) {\n", | |
| " event.step = 1;\n", | |
| " } else {\n", | |
| " event.step = -1;\n", | |
| " }\n", | |
| " mouse_event_fn(event);\n", | |
| " });\n", | |
| "\n", | |
| " canvas_div.append(canvas);\n", | |
| " canvas_div.append(rubberband);\n", | |
| "\n", | |
| " this.rubberband = rubberband;\n", | |
| " this.rubberband_canvas = rubberband[0];\n", | |
| " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
| " this.rubberband_context.strokeStyle = \"#000000\";\n", | |
| "\n", | |
| " this._resize_canvas = function(width, height) {\n", | |
| " // Keep the size of the canvas, canvas container, and rubber band\n", | |
| " // canvas in synch.\n", | |
| " canvas_div.css('width', width)\n", | |
| " canvas_div.css('height', height)\n", | |
| "\n", | |
| " canvas.attr('width', width);\n", | |
| " canvas.attr('height', height);\n", | |
| "\n", | |
| " rubberband.attr('width', width);\n", | |
| " rubberband.attr('height', height);\n", | |
| " }\n", | |
| "\n", | |
| " // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
| " // upon first draw.\n", | |
| " this._resize_canvas(600, 600);\n", | |
| "\n", | |
| " // Disable right mouse context menu.\n", | |
| " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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", | |
| " // put a spacer in here.\n", | |
| " continue;\n", | |
| " }\n", | |
| " var button = $('<button/>');\n", | |
| " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
| " 'ui-button-icon-only');\n", | |
| " button.attr('role', 'button');\n", | |
| " button.attr('aria-disabled', 'false');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| "\n", | |
| " var icon_img = $('<span/>');\n", | |
| " icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
| " icon_img.addClass(image);\n", | |
| " icon_img.addClass('ui-corner-all');\n", | |
| "\n", | |
| " var tooltip_span = $('<span/>');\n", | |
| " tooltip_span.addClass('ui-button-text');\n", | |
| " tooltip_span.html(tooltip);\n", | |
| "\n", | |
| " button.append(icon_img);\n", | |
| " button.append(tooltip_span);\n", | |
| "\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " var fmt_picker_span = $('<span/>');\n", | |
| "\n", | |
| " var fmt_picker = $('<select/>');\n", | |
| " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
| " fmt_picker_span.append(fmt_picker);\n", | |
| " nav_element.append(fmt_picker_span);\n", | |
| " this.format_dropdown = fmt_picker[0];\n", | |
| "\n", | |
| " for (var ind in mpl.extensions) {\n", | |
| " var fmt = mpl.extensions[ind];\n", | |
| " var option = $(\n", | |
| " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
| " fmt_picker.append(option)\n", | |
| " }\n", | |
| "\n", | |
| " // Add hover states to the ui-buttons\n", | |
| " $( \".ui-button\" ).hover(\n", | |
| " function() { $(this).addClass(\"ui-state-hover\");},\n", | |
| " function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
| " );\n", | |
| "\n", | |
| " var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\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", | |
| "\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", | |
| "\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]);\n", | |
| " fig.send_message(\"refresh\", {});\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
| " var x0 = msg['x0'];\n", | |
| " var y0 = fig.canvas.height - msg['y0'];\n", | |
| " var x1 = msg['x1'];\n", | |
| " var y1 = fig.canvas.height - msg['y1'];\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, 0, fig.canvas.width, fig.canvas.height);\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", | |
| " var cursor = msg['cursor'];\n", | |
| " switch(cursor)\n", | |
| " {\n", | |
| " case 0:\n", | |
| " cursor = 'pointer';\n", | |
| " break;\n", | |
| " case 1:\n", | |
| " cursor = 'default';\n", | |
| " break;\n", | |
| " case 2:\n", | |
| " cursor = 'crosshair';\n", | |
| " break;\n", | |
| " case 3:\n", | |
| " cursor = 'move';\n", | |
| " break;\n", | |
| " }\n", | |
| " fig.rubberband_canvas.style.cursor = 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.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", | |
| " /* 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", | |
| " evt.data.type = \"image/png\";\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", | |
| " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
| " evt.data);\n", | |
| " fig.updated_canvas_event();\n", | |
| " fig.waiting = false;\n", | |
| " return;\n", | |
| " }\n", | |
| " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
| " }\n", | |
| " }\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "// from http://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", | |
| " if (e.target)\n", | |
| " targ = e.target;\n", | |
| " else if (e.srcElement)\n", | |
| " targ = e.srcElement;\n", | |
| " if (targ.nodeType == 3) // defeat Safari bug\n", | |
| " targ = targ.parentNode;\n", | |
| "\n", | |
| " // jQuery normalizes the pageX and pageY\n", | |
| " // pageX,Y are the mouse positions relative to the document\n", | |
| " // offset() returns the position of the element relative to the document\n", | |
| " var x = e.pageX - $(targ).offset().left;\n", | |
| " var y = e.pageY - $(targ).offset().top;\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", | |
| " * http://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", | |
| " 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", | |
| " {\n", | |
| " this.canvas.focus();\n", | |
| " this.canvas_div.focus();\n", | |
| " }\n", | |
| "\n", | |
| " var x = canvas_pos.x;\n", | |
| " var y = canvas_pos.y;\n", | |
| "\n", | |
| " this.send_message(name, {x: x, y: y, button: event.button,\n", | |
| " step: event.step,\n", | |
| " guiEvent: simpleKeys(event)});\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", | |
| "\n", | |
| " // Prevent repeat events\n", | |
| " if (name == 'key_press')\n", | |
| " {\n", | |
| " if (event.which === this._key)\n", | |
| " return;\n", | |
| " else\n", | |
| " this._key = event.which;\n", | |
| " }\n", | |
| " if (name == 'key_release')\n", | |
| " this._key = null;\n", | |
| "\n", | |
| " var value = '';\n", | |
| " if (event.ctrlKey && event.which != 17)\n", | |
| " value += \"ctrl+\";\n", | |
| " if (event.altKey && event.which != 18)\n", | |
| " value += \"alt+\";\n", | |
| " if (event.shiftKey && event.which != 16)\n", | |
| " value += \"shift+\";\n", | |
| "\n", | |
| " value += 'k';\n", | |
| " value += event.which.toString();\n", | |
| "\n", | |
| " this._key_event_extra(event, name);\n", | |
| "\n", | |
| " this.send_message(name, {key: value,\n", | |
| " 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", | |
| "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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
| "\n", | |
| "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
| "\n", | |
| "mpl.default_extension = \"png\";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.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", | |
| " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", | |
| " ws.onmessage(msg['content']['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 = $(\"#\" + id);\n", | |
| " var ws_proxy = comm_websocket_adapter(comm)\n", | |
| "\n", | |
| " function ondownload(figure, format) {\n", | |
| " window.open(figure.imageObj.src);\n", | |
| " }\n", | |
| "\n", | |
| " var fig = new mpl.figure(id, ws_proxy,\n", | |
| " ondownload,\n", | |
| " element.get(0));\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.get(0);\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", | |
| "\n", | |
| " var output_index = fig.cell_info[2]\n", | |
| " var cell = fig.cell_info[0];\n", | |
| "\n", | |
| "};\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
| " fig.root.unbind('remove')\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).html('<img src=\"' + dataURL + '\">');\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 dataURL = this.canvas.toDataURL();\n", | |
| " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\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 () { fig.push_to_output() }, 1000);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_toolbar = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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) { continue; };\n", | |
| "\n", | |
| " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " // Add the status bar.\n", | |
| " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\n", | |
| "\n", | |
| " // Add the close button to the window.\n", | |
| " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
| " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
| " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
| " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
| " buttongrp.append(button);\n", | |
| " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
| " titlebar.prepend(buttongrp);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(el){\n", | |
| " var fig = this\n", | |
| " el.on(\"remove\", function(){\n", | |
| "\tfig.close_ws(fig, {});\n", | |
| " });\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
| " // this is important to make the div 'focusable\n", | |
| " el.attr('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", | |
| " }\n", | |
| " else {\n", | |
| " // location in version 2\n", | |
| " IPython.keyboard_manager.register_events(el);\n", | |
| " }\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
| " var manager = IPython.notebook.keyboard_manager;\n", | |
| " if (!manager)\n", | |
| " manager = IPython.keyboard_manager;\n", | |
| "\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", | |
| "\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('matplotlib', mpl.mpl_figure_comm);\n", | |
| "}\n" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Javascript object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydCbQeRZn3KwlhD5AESAIBAoIgELYQ9lUWRUBEQDYdBURxAEfkZEYHRAFHMSqMyqLIfGNQhgFUFgEZURlABGQNZGMxkIBJiKyCISEh+c6/7/wvRaW6u7buft+3nz7nnpvct7u66qnq6t/7rAOUHCIBkYBIQCQgEhAJiAREAq2SwIBWjVYGKxIQCYgERAIiAZGASEAkoAQAZRGIBEQCIgGRgEhAJCASaJkEBABbNuEyXJGASEAkIBIQCYgERAICgLIGRAIiAZGASEAkIBIQCbRMAgKALZtwGa5IQCQgEhAJiAREAiIBAUBZAyIBkYBIQCQgEhAJiARaJgEBwJZNuAxXJCASEAmIBEQCIgGRgACgrAGRgEhAJCASEAmIBEQCLZOAAGDLJlyGKxIQCYgERAIiAZGASEAAUNaASEAkIBIQCYgERAIigZZJQACwZRMuwxUJiAREAiIBkYBIQCQgAChrQCQgEhAJiAREAiIBkUDLJCAA2LIJl+GKBEQCIgGRgEhAJCASEACUNSASEAmIBEQCIgGRgEigZRIQAGzZhMtwRQIiAZGASEAkIBIQCQgAyhoQCYgERAIiAZGASEAk0DIJCAC2bMJluCIBkYBIQCQgEhAJiAQEAGUNiAREAiIBkYBIQCQgEmiZBAQAWzbhMlyRgEhAJCASEAmIBEQCAoCyBkQCIgGRgEhAJCASEAm0TAICgC2bcBmuSEAkIBIQCYgERAIiAQFAWQMiAZGASEAkIBIQCYgEWiYBAcCWTbgMVyQgEhAJiAREAiIBkYAAoKwBkYBIQCQgEhAJiAREAi2TgABgyyZchisSEAmIBEQCIgGRgEhAAFDWgEhAJCASEAmIBEQCIoGWSUAAsGUTLsMVCYgERAIiAZGASEAkIAAoa0AkIBIQCYgERAIiAZFAyyQgANiyCZfhigREAiIBkYBIQCQgEhAAlDUgEhAJiAREAiIBkYBIoGUSEABs2YTLcEUCIgGRgEhAJCASEAkIAMoaEAmIBEQCIgGRgEhAJNAyCQgAtmzCZbgiAZGASEAkIBIQCYgEBABlDYgERAIiAZGASEAkIBJomQQEAFs24TJckYBIQCQgEhAJiAREAgKAsgZEAiIBkYBIQCQgEhAJtEwCAoAtm3AZrkhAJCASEAmIBEQCIgEBQFkDIgGRgEhAJCASEAmIBFomAQHAlk24DFckIBIQCYgERAIiAZGAAKCsAZGASEAkIBIQCYgERAItk4AAYMsmXIYrEhAJiAREAiIBkYBIQABQ1oBIQCQgEhAJiAREAiKBlklAALBlEy7DFQmIBEQCIgGRgEhAJCAAKGtAJCASEAmIBEQCIgGRQMskIADYsgmX4YoERAIiAZGASEAkIBIQAJQ1IBIQCYgERAIiAZGASKBlEhAAbNmEy3BFAiIBkYBIQCQgEhAJCABGroFly5Yti2xCLhcJiAREAiIBkYBIoGYJDBgwoNUM1OrBp1hrAoAppChtiAREAiIBkYBIoF4JCADWK++eu5sAYM9NqQxIJCASEAmIBFogAQHAFkxylUMUAKxSutK2SEAkIBIQCYgEqpGAAGA1cm1NqwKArZlqGahIQCQgEhAJ9JAEBAB7aDKbGIoAYBNSl3uKBEQCIgGRgEggTgICgHHya/3VAoCtXwIiAJGASEAkIBLoQgkIAHbhpHVSlwUAO2k2pC8iAZGASEAkIBJwk4AAoJuc5KwcCQgAytIQCYgERAIiAZFA90lAALD75qyjeiwA2FHTIZ0RCYgERAIiAZGAkwQEAJ3EJCflSUAAUNaGSEAkIBIQCYgEuk8CAoDdN2cd1WMBwI6aDumMSEAkIBIQCYgEnCQgAOgkJjlJNICyBkQCIgGRgEhAJNA7EhAA7J25bGQkogFsROxyU5GASEAkIBIQCURJQAAwSnxysQCgrAGRgEhAJCASEAl0nwQEALtvzjqqxwKAHTUd0hmRgEhAJCASEAk4SUAA0ElMclKeBAQAZW2IBEQCIgGRgEig+yQgANh9c9ZRPRYA7KjpkM6IBEQCIgGRgEjASQICgE5ikpNEAyhrQCQgEhAJiAREAr0jAQHA3pnLRkYiGsBGxC43FQmIBEQCIgGRQJQEBACjxCcXCwDKGhAJiAREAiIBkUD3SUAAsPvmrKN6LADYUdMhnREJiAREAiIBkYCTBAQAncQkJ+VJQABQ1oZIQCQgEhAJiAS6TwICgN03Zx3VYwHAjpoO6YxIQCQgEhAJiAScJCAA6CQmOUk0gLIGRALxEli2bJlasmSJGjBggBo0aFD2Ww6RgEhAJNCEBAQAm5B6D91TNIA9NJkylMokQPB7++231cKFCxX+j2OFFVbIQFD/ESisbBqkYZGASECTgACgLIcoCQgARolPLu5xCQD0li5dqhYsWNCv8Vu8eHGm+cNn+Fm0aFEmhRVXXDH7P2BQB8OBAwcq/MghEhAJiARSSkAAMKU0W9iWAGALJ12G7CQBgB9gD79fffVVtcYaa2Rw99Zbb73L9EsAXGmllfqhkHCIGwEW8QMoxA9gkOZj0RY6TYWcJBIQCVgkIAAoyyJKAgKAUeKTi3tQAoA3gB/MvQS4V155Ra255prZ32ACplYPv3EuDgCg7SAM2qDQ1BYSFntQrDIkkYBIILEEBAATC7RtzQkAtm3GZbx5EqCfH4I8dM0d/v3yyy9n2jt8ht84AIP0BaSGD0AHKCwDOR0K2R/8jdpBmpAJmqIplHUrEhAJmBIQAJQ1ESUBAcAo8cnFPSAB+vlBk4d/6/AG8++bb76Z+fkNHjxYrbrqqv2aQQwd5zMoBLCG8/GDNghvIVDIfvA3gZAmZEJmD4hfhiASEAkESkAAMFBwclmfBAQAZSW0VQLUwtHPj1o2BngA+gB/ADho/ugDSJMv5Ybz0NbKK6/MZyqDQGgICYT4jYMw6OoHSA0jrtf/jbZgctajjwUK27qSZdxtlYAAYFtnPtG4BQATCVKa6SoJAKgAdbqfH8EPgIeoXxzQ+EHzhyCQIUOG9AeB4DMCowmANkFQy2iCIc4lDOp+hUUmX2gc8Tn6RbBkf3SfQh0yu2pypLMiAZGAkwQEAJ3EJCflSUAAUNZGmyRQ5OcHIAT4AQpXWWWVTMNGEEMQSB4AIioYIEYNoKs8dSjUwbAMCgmAetAJtYNskzCLtkzzsSSwdp0hOU8k0NkSEADs7Pnp+N4JAHb8FEkHE0gAYASwA+QV+fkBqgB/Zt4+aABXW221DKYAfLoGMBQA8zSF7KsNCulnCMADcJYFh5gRyARDyVWYYFFJEyKBhiUgANjwBHT77QUAu30Gpf9FEqBGDODH4AxCEwM44OfHAA+Ake2oCwBdoJAQS02hLdikTCZmFLKeq9CsalIGmbICRQIigWYkIADYjNx75q4CgD0zlTIQQwJM5Pz6669nVTrwY/r54f/08ysSYJMAaPYLJmAcGI/pU0jtpi3YJBQKAZhMYi0JrOUxEwl0jgQEADtnLrqyJwKAXTlt0ukCCZh+fgBAmHUBTLqfH8CPUFgmUB0A9XQxuA4mYPoNlrWT4nObDyDb1aOOGYUcC4VMis1KJ5KrMMUsShsigXgJCADGy7DVLQgAtnr6e2rwBD8maKZZ87XXXstAD38HrMF3DkDoY9pEG7gGpuJOBkDbhOo+hdQYEgptEchmGxgvfgDMeT6FeiJsyVXYU4+VDKaDJSAA2MGT0w1dEwDshlmSPpaZL2nuNQM88H9o7/AbEAiIy/PzK7pHJwGgXns4dGWUQaEOhtCa4gcAmAeY+Lueq5BwbQs28QHv0PHJdSKBNkhAALANs1zhGAUAKxSuNF25BAh+DPDADennB20f0rowSXMewLh0sggAoR0DIAEu6zhSAGAeyOUlsMb50H76JrBmEA7vh7mRXIV1rBK5RxskIADYhlmucIwCgBUKV5quTAJ5iZxxQyZyBnwAyuAzB/813zx9eucJgNAiAiypaeT9egEA86AQ48X4AG70McS5upbQJThEchVW9jhIwy2VgABgSyc+1bAFAFNJUtqpQwJFiZzh44eULgAWgB/z5CEIBNqrGAD829/+lkEkftoEgDbADU1gnbc+bH6FAE74EgK4mZaG6W7qWGdyD5FAN0hAALAbZqmD+ygA2MGTI13rl0BRImd8BvCDpg/AAFOvnshZADBuIbmYuMug0Aw2KfMDhOmeFUyoOZRchXHzKFf3ngQEAHtvTmsdkQBgreKWm3lKoCyRM/zhAH/QEgH8AA3mAQDE32N89Mo0gIyS9Rxe0OlV+QDmdcYFAG3XUrPHdDT0L8S5et1j5izUoRAACJjX59PUFKIdQqEZbMK/BwlYLhIJdIkEBAC7ZKI6tZsCgJ06M9IvAANgR4/sJSTofn5M5JynVXrjjTcyQBQADFtToQBYBIW2BNY6FOKeAECY7osOs6IJzsXfJFdh2FzLVd0lAQHA7pqvjuutAGDHTUnrO6T7+SGFyxprrNGvCYI2Cdoh+IjBp8+lHm4KANTNyDYfQNEAhi9bQpwOhZhnavhiq5owKlxyFYbPkVzZmRIQAOzMeemaXgkAds1U9XxHbX5+AMAhQ4ZkGh2YeqERRCAGtHm6n1+RcP7+979npsKYNDA6AAL29LQzgFFAYUz7PpPbLSZgnzGZ52LOWKVFB0OfBNZ6m/QjlFyFMbMi13aaBAQAO21Guqw/AoBdNmE92N0iP7+XX365P/IW/mCALN9EzgKAcYsmpQnYtSeYM4C+6dPpk8C6zA/QTEsDsIbJmVHHDELRcx+69l/OEwnUIQEBwDqk3MP3EADs4cntgqHpiZxp8qPJDuAB8y1ewKzbGzIkAcAQqb1zTVMACPO+C+zzC4QebEINLf0K9UCTIl9RapbZJtcipEEgZKk75j6Mk65cLRIIl4AAYLjs5Mo+h+llIgiRQN0SKMrnB5Mq/PzoB7baaqtl5sDQAwCIA+2EHrofIQNTaIIWE3CoVPOvw5y5AqCtlTwoxLk2n0KAHubYTCHEtm25CvE3W6k7V9eE9FKTFtsmAQHAts144vEKACYWqDRXKIEi8IPWhn5+DPCA7x20MjEAyHJwsQCIFzv6Tx88ljXDgAGBaL8sv12K5UEAjUls7dOPTtcAuo5Fz1WoawtxPeYW64+Jp/H/srksSktDbSHNyWXmaNcxyHkiAV0CAoCyHqIkIAAYJT652FECfPkCJvS0Lrgc/0cSZ8AffLB0Pz+9BJvjrZY7LRYA0T/kAQQ0oH+ABAYTsCQdfuMgFOqJj8tAwndcAoC+Ess/X9cUIpCHIEgo9E1gLbkK082NtFQuAQHAchnJGQUSEACU5VG1BHQ/P8IQfavw0gX4MUrXzPuWCgDRh9VXX917qABWmCOpHUIbtihgQBk0layVSw0TYZdmR1vSY99OtQEAYY6FPF18AH3lZzsf84R5ppbYFmySAgp5b+YqxLrHmqdfoYvmMcV4pY3ekIAAYG/MY2OjEABsTPQ9f2Nqx/ScbgRA3c+PAR42TZlegSNUYABM9MEHAPV8gwAR9JfBKCYA4lxoMG0mZgKhLZVJKBQKAIauhGJNIAHQtg6LchWWVTXJA05qvulHyC8LZrCJQGH6+e6VFgUAe2UmGxqHAGBDgu/h29JPDqCEl5nu/wQQgkkWmj/4sAGuikykdQMg+s66wnq+QT2S2AcAbdMcC4UCgOkfHl0D6Gqyt0EhXQN0V4CiNDJ6yTvJVZh+Xnu9RQHAXp/hiscnAFixgFvUPM1m0JZBIwZQQhUPHDpYwYfO1bynJ2AOFSWADn1CQum8A/0DlOKFbKsrrAMg2qJGEO0VaQBd++wDhaxEUlcQCO6HMcaU0nOVA8+r2wTMLyYpAnmK5lL3KcQ6w9o0ax7rsiIU0leRnxEwJVeh78rqrfMFAHtrPmsfjQBg7SLvuRvy5QQoYv41QAM0VYAughVefnjBmsl9iwSSAgAJo3kA6FJXuGoA9NEU4lz6jqXwKSxbkE0BYF5KlrL+hnyeEgBt97f5FBLu8FyYPoBFWkgTCiVXYciM98Y1AoC9MY+NjUIAsDHR98SN8/z8AH8AL2r/mMrF1bxG4VQJgLo5Gv0rqiusRxLbNIDQ5Pj4GIZOPvoMICNo20yOqaGwTQBYxxxy7ml25hciaFnpB+iTwFpvT49CJhhKrsLQp63zrxMA7Pw56ugeCgB29PR0bOfwoiEIUSNFuMOLDCY8mg2LwKpsgHoC5rJz8z4HiAJidHM0087A/OaiaeoUAMQYCYA0AfuYj30BnPdrwgTsMi+ha8K8jl8G6gRA9MFMeK2npdHnFefmJbAukoEtLQ3OR9tMtE3to+QqTLWa6mtHALA+WffknQQAe3JaKxsUwU/XVhAq8FIBWOEHLxX8f6211orqSwoAhDaS5miae/PSzuR1tpMB0NZnMx1NjKZQNIBRS7jwYhdfR0KhHknOvJOmT6ELxOEZYBAWzcm8ztQWurRXnXSk5TIJCACWSUg+L5SAAKAsEBcJ2Pz8CH6M+oUZlAEUNG/FAmCKOr40R6O/ANeitDMhAFi39sjUALrMH7U+JkTQ5FiUkqZuAOTaqVMDiHVRlxlfn6+i8nNlmj2b5hfXmMmrzTQyttKFuqaQ98Xf2JYebCJpaVyfuOrPEwCsXsY9fQcBwJ6e3iSDw4uGqU/QoK4VyAugYALlpgEQfcdLFi89l7QzeQLTcwmaPoDdAoChmkKCBoCsjqMpAMzL5VjlmEMB0NYnXVOogz6hkDDHz8rm0zQf06cQvyVXYZWrwr1tAUB3WcmZFgkIAMqyyJMAXgAAOVsiZz1RMuv26v5lgCQEcAwdOjRKwKFl3HStJGv4xsBorwKgCxTq8x+avNpnEbQFAOsYJyFOr33M+QxNYE1tsm4+xt9swSYhPqc+a6Xt5woAtn0FRI5fADBSgD14eVGAB7QHgCGYVfVEyaYYmgRAah/RJ2o50Oc111wzeLbaBICmkGACxnwiYEYHCRfzcYjACUYpcvK53j9FLkfXe/G8JsaJe+PZxXjL5rMogbU+VjMtDT+TXIW+K8L/fAFAf5nJFZoEBABlOegvJCZxNit46Bo1fAawKqrTihcM6vgOGzYsSsA+GkCzfBsAFS8h5iGsWgNYF7CE+gCGTkSeD2DKQBMTKIrKsoWOo+g6rHuAka2cXxX3Q5tNAaBt/VBTaM6pCfmhUIjnEDLGgeeS2kLX9qqag25vVwCw22ew4f4LADY8AR1we27+0JzhB35JgCX6/OiRs8znV9ZtAiBMwDFmIJc6vui/rXwb+5jCH1FPJo2xoU28vHBUnUTYlHWnAKBtDaSAwibAqAkArHvdcL58SgkWpRiyBZsU7Qu8LzSP3HMkV2HZTlr8uQBgnPxaf7UAYLuXgJnIGf9H/V1o7vBShAaOOeCoUXORGNp59dVXMx/AqgAQL5Gi8m0CgC4zVX5OLHD6QmFTAIhxlgVGlEvL/YwmAZCaOPfevnMm5sf0KaSmsCiBNQDQdl8z2ATnMNDMDDaRtDTvnjEBwJAVLNf0S0AAsJ2LIc/Pj5o7fEtnrjAEeVDb5SqtVACYV8bNpXybDoDQasYEpBRpAOsGllggc51DnlfF/cqgkFHbMBXGfIFwHastNYrrtaHn1R09rmsAYwDQNl5GIOtgyFyFDBzCZ9hHXL5IFkGh5Cp8ZwYEAEOfPrkuk4AAYLsWAr+944XHb+16Pj+aUgcPHlzq51ckObT9yiuvZKZkX3jU2zUBkC9NQElZ+Ta2kyIgpdMAsM7KHFUAoG3tEAqZZofmwZBoVd+nugkAbCr3INYyZAsQq/IgFDLtDH0Acc/YqibsN+7R5lyFAoBVruAWtC0A2IJJ/j+Hc5p78Vs3pdCUCvhjsuRYcEsNgCjR5Vu+LSUAspoIysmZPoBNaAB7EQA5X7pp1KZZ4kvfZm4MfZrp/1qnCbhJAITsoOWv88D+gvuySpCuLUQ/yhJY52kedW1h23IVCgDWuYJ78F4CgD04qcaQihI5635+ePlB8wffvVgARBdefvnlLPVKUbRwmfRZWg7n+ZZv0wGQfo1l98v7XACwr3ZsHUeZb1ye+ThGU9gUADaRfJoVe5oAQMAf9hj90DWFRQmsOb9lLgFMS4O29LZxX5qP8Xe4hay77rp1LOnK7iEAWJlo29GwAGDvznOenx9GTO0D/fxgTuW3Z5huY8EtBQACTrFJYyNHeg68sMo2f9tspkhJ4wKAdZUuq7s0W10mYFMDCK2v6xELhQBArDc8B3UdTeQexNgAgDYQq3rcCCgDhJkAWKTZK0pgrZuRi/YFwj3mlkA4c+ZM9ZWvfEXdeuutVQ+70vYFACsVb+83LgDYe3NM8MPmWeTnB6DCpmhq6FJo7iBVgOSQIUOyl43PoSebxssC44jJ4ZcSAAF5yFGHPuomK2hyBAB9Zjn/3FTBET5QSL/DOgGwidQzTQMg9hzf/YArhaZeXUvoUtXE9oXp4YcfVpdeeqm65ppr0izahloRAGxI8L1yWwHAXpnJvsSyNPfawM8lZUoMuJmS9AVA9BmaNmooAFTUVMZU8UiRkxD9YlJqOs/r6TAo7zpKpYkGMPyZLYo+Rqs0EwLuQ7TNPj1rIvAE/fPRxPmMp+xcfHHCsxMKgEWaQh0KafplJRKCI60caOeuu+5S119/vbriiivKut3RnwsAdvT0dH7nBAA7f45cesjABIIIruELTE+ZwkTORS83X3DL6x98CWG6dTH5EE7Rln5NiioeMSlpCKV4aeIAiLK6iB7dDFM1Xm4mFMb4peXJVQDQ5YlwPwfrgzLFfBEgqpg7vVdNAmCMJs5dsu8+EwAIP9IYn2DXexP09S/EuPa6665Tt99+u1pvvfUyH+VLLrnE2Q/wvPPOU1deeaV68cUXM3eUcePGqQsuuEBtu+22ud3aZ5991L333tu/N2DvmDhxojrllFNch1J4ngBgEjG2txEBwO6ee0b2sj4volQJdyyNBgB0TZkCafiAW5H0XNrJK9/GdlNU8QgFQB2cseHj/wBAAoMJgKYJ2NQ2meYqVx8mU8Z1+6t1gw9g7FNsjtHHfByqKWwi8ARyqkIT5yJ/fEmyuZy4XBtzDtPe4Bl+/PHH1W9+85sMyh566KEMAkePHq122GEH9eEPf1iddNJJubd66qmnMljEHgB4//73v5/B3Ny5c3O1xfvuu6/aa6+91LnnnhszhNxrBQArEWt7GhUA7M65NgM8sCEBAgkojJ6FVgqbrk8uPtTwdS35ViS9onbQ/6LybVUAoGtksy3XIF7WunwBDGUAaMqmzIdJB8IiE2SvA2AT6VFcIDc1FNY9j1yPdWri9GcAAFiXn6x+X+yFZtobmH6xZ37mM59Rjz76qIJPIPbOE0880emFAJeQyy67TJ155plq/vz5avjw4dbrAIB77rmngvawikMAsAqptqhNAcDumuy8RM6s4QtwY5oHbLYh/jZVAiBzDsKkCuAp62OKJM6uOQlxnp5rUNdW6JpIVw2gy8oiFDLakb9xrR5kwooY0DbVDQ4ucOQyVtdzOhUAXYDex3xc9zyy/01o4pgrswkAtKW9ueiii9SIESPUZz/7WddlmZ2HqOHjjz9eYY/E83nGGWeob3/727ltAACnTJmSWQ1wv8MOO0ydffbZmZtLikMAMIUUW9yGAGB3TD4DPABE2EzMmpgAF0AVNiXm8ws1TSFnHjSHsZUCzHZ8yrdxVuoCQAJeXq5BFwBMZd4qyotG/ymsATq1h86z68pvAwBCowO5x+Y6tGl586CQz3KdkceY8yY0cQRAgE/V69Vc17a0N+eff77afvvt1bHHHuv6GLzrPLi3TJo0KTMfH3HEEblt3HfffWqLLbbIshjA/PzJT35Sbb755urqq68Ouq95kQBgEjG2txEBwM6fe/r50YdMhz/dzw8jQb3b2A02NQAiCARw6lO+jbOSIoULNYC23IZlPojsR50AaFuROhSiL1gTPGyRx7FrQO9DEwBYd4JkACCO2C89eXPH+dPz2uFvOKCl17W9KefO1p8mAJBuFU0AIPYeM+jlX/7lX9RBBx2kDj300OAXAOYP++3dd9+txo4d69TOnXfeqQ444AD1+uuvJ1lrAoBOYpeT8iQgANi5a8P089PBT8+Vh5cWNjhsKsOGDYseENoBtMVqQwCSNFmifyHmnxQACIGYuQ1Nc29Z35oGQH1SaTrE/Nj80iBzs0yajw+ouYAEAKMfqeUaoCsE1jcAnvOIv1cZfdyUKTZVbseQmbAFvfzjP/6jOvnkk7MAjdADGlx8qfzpT3+qPvrRjzo1g/Qz+++/v8LeGLu/4oYCgE5il5MEALtnDeT5+WEEBBdoSKA5ALjwBQKzRAoNIDQEaDPUNIU+0icRLzPXVDC2GUqRw08HQPSHpmiAEvrm4iepm6JtPoB1OtYX+Y6ZmiY9GbjNp9DlqUhlHnW5F85pokJGlRrAvHGbcvUxH4fmKWzKFNuEXyflbns2YYqFLx6if10PRP0ec8wxWSTwX//6V3XWWWepn//852r69OmZf595IDjkkUceyYJAsE9PnTpVfepTn1JjxozJ0tGkOAQAU0ixxW2IBrBzJr/Iz49QBXOGzU+NZs6mAVCvLYyXFDSJ2PxCj9AULub9oAEE7OGli5cR+uRTWq5bANAmZ36h0LWF+BsT5eraQpv5sQ0AyFQhVZiAiwAQnxXdMzUUNmWKbQLqKXdb0As0doji3XTTTZ23JpiLH3zwwcyHEum2xo8fr84555x+iHzuuefUlltuqW677Ta1++67q9mzZ6ujjjpKPfnkk9meM3LkyMxfUIJAnEVeeuKA0jPkhEIJCAB2xgJhwlL6dunmXh2qoJXDC8N8UbtGurqMFt+YCZku5+Mc3SQN0wb6iXZiNIlsN1azSdnwZeubFgfXdTMAlkEh/dJMKKRvIUzAKQIkXNdSEyXSOhUA8+Yuz6ewzHzcFAA2MaeQXZ7JG354N+eTjxgAACAASURBVN10k3MSaNe1W/d5ogGsW+I9dj8BwGYnlJo9W4CHCVUAqyJfrlQ1fH0AEP03y7cxUtWnnbxZiAFb+lmxhBs0gKEanl4DQJu89eoJOhTiXHwhgMaUgFFloEITsGDLFVf1zpASOl01hZg3PK+rr7561cN7V/tNVT3JM3nvuuuu6oEHHgh2c6lVeAU3EwDslJno0n4IADYzcQzwgDkBPmgwlfKlqgco0ITqUj4pVQk3HZiKpMMybXmpU5oEQF1rCnMv+jJkyBCnsnS2MevBKHk+gKnrnObJvq78cYQKAAPGDPhLVc2kaF21CQDNBMUpdyMbFJrzV1f0cVNVT2waT8gF5lv47sUER6Wcq9C2BABDJSfXZRIQAKx3IdB0gw0R/0bELTR7rCMLqELeqjyoKuptSgDExpmnJXBNneIKkkVjogbQlsIlT4vFsng0RUOWLmXpivrRRgCkPHQfQEKFns5EhwrXaiYCgCpLOl4lANpkDLjGffFsmClpyszHMTtlXV9azD7aoo8JgDNmzIhOmRUjkxTXCgCmkGKL2xAArG/ydT8/avsAgMxRBWAKCVDgCGIhh+0AoNAPEwDRf58ScykAEH1yMW0XmaLRRqxsOg0A8UKNCa7xWfVlQSAmFLpUMykDQHwRqmt86IutWoSPjELObeKeNu2qq/mYcB9i/sd8Yl2EZhYIkS+usUUfY7w77bRTpgEMGUtoX6q4TgCwCqm2qE0BwOonuyiRM/JBMUpT11iF9CpVCTdAHgADJlMcui+dS/m2MpD0HVsZAJoVRgDU5gEAZOSv7/35IoF8EWVNeejmI1uy2ZD7uFxTtzmtDABtfaam28xTiHPLElc34S/WBIw1cU9X2aaGwrpzSXJN2qKPsZ5Rog2VObr9EADs9hlsuP8CgNVNAP38sOni0CN78RleAIAtvBABW7H+KFUAYEj5ttQAmGfapnnHpcJIrGz0dDQCgGHPjA6FuvnRhEIGRtWtAaQvbtjo/K+ylSjzb8XvClcAzIP60OjjkC8RfiOzn20b74svvpjV8/3jH/+Y4haNtiEA2Kj4u//mAoDp55AaPWw++LcJfgyeAPgxF1uKl12qEm7YrAmmLnCVJ0FTkxgqaRMA9SAZaPtcavAKAIZKX2VRo5B5isoFZi9sQMFUSHg+dG1hlea6JmAMWmMEeeGnriO19thVUwjgx/xVsYaKZGcb78yZM9WECRPUb37zm7rEXtl9BAArE207GhYATDfPfJmxyLsOfriLrk0DtABe8OLBdUhREnukKOGGviAyGX0NLd/GcaQCQN1/jyXZfINkUgIgxgcw1oFETMCxq/ed6yFbzDPACDCYoppJWe+agLEm7llHMEanRR9jP9Z9Dx977DF14YUXql/84hdly6LjPxcA7Pgp6uwOCgCmmZ8iPz9GzWLzxUaEb8GEh1SBEhhFDADS7Ib+8FhrrbWihAPNEX6QNT/mAABCbgADbua2ZNhF94jVjuom4DwArEubk1qLUzY3VZVJw3zixww2so2PWnUCIX5Tu27zKSwbk/l5EzBW55cGjrepYAx80WXKmTqjj23jveeee9R///d/q5/85Ce+y6TjzhcA7Lgp6a4OCQDGzVeRn59L1GxexG1Ir0Jr+Jo58wCneDl1AgBCvgBA/I7RSMYCIO4PUzRkAvnYNIACgG6rFs/FzTf/j7rppvvUm28uUWPHrq9OPPHI/qoMroCbEgqbgLEm7tlUMIYt4MXVfBwbfYz1ppueUartrrvuUj/4wQ/cFmwHnyUA2MGT0w1dEwAMmyWCn26e0hM5szpGWdRsKjMpRuGbeNlWvg1joJk1FgCZ0xA5/HwPXSOJfkIDGJNCAgAIgAz1QSIAQpuJOcPY9CS6+D8A0BaB7Dv2svNjHPnL2rZ9nloDCOf7f//3P6mRIz+hVl55mPrLX25Xm2zyuDr33DMymboCoK2vZtQxNYV6vWNbNZMmYAzPa13JwymrKv05i9aWq49laii0rd2f//zn6umnn1b/9m//FvI4dNQ1AoAdNR3d1xkBQL85o58fEzmbfn6EHpyHwA69wkfeyzWFmdQHANG3vPJtaEcve+YnnXefHQqAgGq8HJk3DMAVk8IFvYoxj+N6moDxb8wpwN4MYMBnpjkyNrLbJv9uB8BvfvMy9fTTe6i11x6rFiyYrwYNWknNmXOh+s53TlIbbrhhBoCm31boOnTxR8OcYa0C3usMyMAaxxcSlyo/oeM3r0sN8679ijGxx0Chrdzef/7nf2YWji996Uuu3e/Y8wQAO3ZquqNjAoDu88REzjC14sUOjRS1fq7VMWwbMjapEC2Z2ZaLP2FZ+baUAOirScRGz9Q40IxAvpBzrPk2FgAZvIM5RrAOQMFmAmZUd9WBC90OgN/97o/VlCk7qHXXHa9eeeUJtXTpAvXii1erz372QLXRRhuoVVft06QOHz48uHZz0VNNoKAvWmziavcd5N1ntg0AmfA+VF76da5QiLnFHqLXAIfpF/vtqaeemqIrjbYhANio+Lv/5gKA5XNIcyRLXuml2nQzqg4t5a32nRGqJbO1X+RP6AOoetUL13HYznMFQMhXT40DbR9ysvFIBYBo08eMbOYZhHzx4sALxQRAm4krpY+aLt9uB8BHHnlETZx4mxoy5Ag1ePCq6plnfqG2334VdfLJ/6AWLnxTvf7639SiRfiStUQNHjxArbHGqmr11VdVq622arQmOG8940sdAAVf6PRAE5yvm/oJ+SlS0uCeLimMYp5B81qbRixl+3lt1WHuLtP2XnvttZllYd68eWqrrbZSJ598svPQzzvvPHXllVcq5BDEOhk3bpy64IIL1LbbbpvbBnyXAZm33HJLtoYOPvhgdfHFFyf5ss+bCgA6T6GcaJOAAGD+usgL8ICmDS8JvAywoQIsAC0hphxXSHJZvTYAdAlEMdvWI15jXnQupmQzAIUvYb1PKQDQJ0Amz0TOiiSuAGibM9NHTa+jq4MG/p0n+24HQMj3/vv/pG688W71yisL1I47bqze974t1Gqrra9GjRqdmX8hF6wFAOGCBX9Xixa9qd56C24BC9WKKw7MoHDIkD4gpKuFyzNSBCimOZYmfh0I9RyF+nyZriAufcGaRN+rcBPIu38T9YfRlya0nbwvzPqQMaJ+b731VvXwww9ngWVbbrllBnL4+eAHP6g222yz3Gl76qmnsiAlfAHE+vz+97+vJk6cqObOnZv7nAL4sL9fc801mbvI0UcfnVkQbrjhBpfl4XSOAKCTmOSkPAkIAC4vGWpu8hI5YzODBogBHjF+Qy6Q5Lp69YCSMq1aUZt1AGBeAIqtX7H+e2jTFQAxH5hf+nDqQR1lAIj14BsEEmKO7HYAtM0xfNOmT39aKTVUrb32iOwLlm624zV962aBWrhwQfZ7yRL8LFSrrDJYrbHGKmrIkNUyrRpetD5fyFwBJQ8KAYC2QJOi56wJAGyi/Byfv7q1nbivLbjn9NNPVwcddFDmf/nggw+qhx56SB177LHqE5/4hNNWi7V62WWXqTPPPFPNnz8/c1Uwj9mzZ6sxY8Yo5Bzceuuts4/x7+22207hs9GjRzvdq+wkAcAyCcnnhRIQAHxHPHwZ41sbXjTmt3pqq/AbLxdEhMZoyHBntAUN17Bhw6JXKvPuYaOlP6BLIIp5Yz3lSYx2wmZKLgtAqRIAMZa8iis6kJq5GtmnKgDQNt4yzROuYWR0zPy4Lri6AgcIgUuWrK7WXXc9Z/8/rDPAIH4WLVqQaQqXLXtLrbrqiv3mY2oK8+QVY441g4FcElfjGkBn3RpA12hc17Xhcl5TY0XfbKbnE044Qf3zP/+z2mmnnVy6338OtIcoIYek8lhHZ5xxhvr2t79tbeOmm25SxxxzTLYP6wegE1HIhxxyiNe9804WAEwixvY2IgDYN/dFiZx1XzA8wDQBxiY4xn0JSUOHDo2GSQZQYMPNgxiXlZ4aADm20LrCrtq7orHlpcjxAVKWpGPUqA7/VWtWdMhgpRmMl5qnKkum1QWAGA/u9dhj09XSpWupMWM2cVmu1nMgIx0KFy8GFC5WQ4asrFZf/R1NIQAMMowBwCKI1wNNMIcs/ch0SwKAwVPsdKFNs3vUUUep733ve2rzzTd3asM8CebjSZMmZVq8I444wtrGz372s6zcHEzE+jFy5MisCslxxx0XdG/zIgHAJGJsbyNtB8A8Pz+sCHwGsype7nrNWdbKTRG5m8LcqvcTLxYGKsSsamq7fMxo5v04NvQHMgytK1wVABaZe22yKwLAOn2raAIG5JuRrDpkmD5qoeuhTgBEH2HynzbtabXSSiMyn8BUB76AvPnm37O1uGjR3zPzsVJvZ1C4wgrLMlMeqpLolXpS3Zv7iT5f9P8kFKaar6I+x6RjCZUFNYAwy8daTHz7YDOzw/x73XXXqVGjRvk2138+xoQvtnfffbcaO3bscu2IBjBYtF4XDvA6W05eTgJtBcAyPz9G59pqzqaM3I3RttHPj1HJ8JkCiMQmcMYiAQBCw6lH4/o+PtRu4jodoH3b8U1wbWsfbeDAS8jH/1Bvq9MA0GbOThFkYsqvbgDk8zVz5vNqwIChSSHQNjb4E7788ktq4MC3M3/CQYOWqdVXXzkzH6+6ap8/YWgC8by1TqsC5tCcMzzX9CdMDYVNJLzmWOsGwDzT85577qn+8Ic/LFeC0GdfwpcwfLH96U9/qj760Y8udyn8/DbeeGM1efLkd/kAbr/99mrWrFniA+gj7IJzBQAjBdk2AKQpjWY0m58fYAGbFpMPm99aU0buEgCxmfho22zRs9RopQBAwk4oAFJGkCM2fptDv+vSTQGAjNxGwA7+HRK53Q0AaMo0JMikEwCQPrjQBFYNgRgv1gTdOxYtWphFHiMCGf6ES5a8maWjARQi8pjpaGLWdBEUVQHxnNM60rGY64djNWs+uz7/oefZNI/42/jx49W0adO89ltE/cKnD5HAf/3rX9VZZ52V+fJNnz5djRgxwtrFQw89NIsCvuqqqzJrEvwH8U65/vrrQ4e03HViAk4mynY21CYAxEbEAA/Mtg5/fY7kbmbKlJG71La5AmCR9iplv+DnAnDzjXDW8w3ihQqZAkhjghVSACBMQZh7XaPra46iTACPaEs/mjAB5wW0lO1kZUEmZjqaJjSAWOdYP7h31RAIeWCdEgBtEE0o7EtH80amKUQ6miFDVlFrrPFO5LHteZk06Ur1jW9cpF56aa7aa6/3q+9971tq/fXXz6DTBYoI8Xo6Gj19EP0/bSXuzLG4RjuXrSGfz7m3uozVp92yc22QTQCcMWOGlzkaMIeIYewjsIwAIs855xy1ww47ZN147rnnsrQyqDO8++67Z3/DfnHaaaepm2++ObsX2kAewBS+4xy7AGDZKpDPCyXQBgCko78e2avX7WXwBMyULk7ZqRIlc2JctG0uwQop++ULgKa/JOWYwpfQpcJJ3iLXgTk2crsMALGmYrRCrlsVQB9gBEBPdRRFsvLLEp4PJkJOdV9bOzABEwDxOSFw4MBhauTI9ZPfugwAbTdE/6AhZEqaxYuRjgYQuYJac82+xNV4Bu644w510kmfV2+9dZlSagu1wgrfVaNHP6AeeuiebFyhUBSq2W0KAPEFKeV6dVkENs0j5IboX2jufL8Autyz7nMEAOuWeI/dr5cBkAEeBCM4zfMFTf85wAXz+bmaO1MEbujLqAy2XMq3ob2UEcVIdQB5leW1gxwZ3YsNFZu8LsemANCcX9buDX3h8hs9x4c5IRjhd50VFqoAQNu2Rj9ZjBX/xlFFkIl5b4AR7qP73VUJgQRAvbRjyDbPHIUINGHi6rPO+oqaPHk7tXjxZ9WyZUOVUqurlVZaX11//aQsJ1zMejT7qGt2dW0hzqOWEM8q9kA8o3UBUN15KykX7IcmeGL8e+yxR2YC7oVDALAXZrHBMfQyAOLFhU0AGx0iC7Hx4Sc0HQmnKSZwwzbVebDlU74N7aYEUxcAdOmfi3azbPkXlbizXav7R9KMjRcB+hvzwtU1gG0AQMpWNwFX6Z+m388EQHxWFQSmAkDbWvzc576gHn98V7V06X7q1VcXqMWLN1crr7yhuuaaSzNNVNVaMdPcj2eDh546iJVnqoDCpgDQ9kUJX0g/9rGPqfvvv79s2+mKzwUAu2KaOreTvQyAAD0dALHh4f/YGKBdCE33EBq4kbcKTNjqMy8tzH586gunBNOi8mt8Ybr0r04ARL+g0QUoYG51jY4vRBaBOvy8TACs00+uLg0gZVCk3Qw1RRbtiDYNoA6H8AlMaQ7m8xarAbSN6ZZbblUXXfQTtXDhv6qXX15RLVlyvRo2bJKaOvXhTMtZNQDqfcL9YAJmPWxdS0j3GNP/M8Z3l/fGPoyfUJ/V0LenDTwRnfv5z39e/e53vwtttqOuEwDsqOnovs70MgAS9rC5AWjw2weoimYzhWmT7RO2YG7Fy49JhbFhupql0VZKALSVXwsxm5eZt12emDJ4M/tlKwOml8lzuacA4DsS8DVvm1onag3Roql1sgFGGUyn1gRWCYCQxeWX/z/13//9X2revEfVxhtvof7zPy/JAgZS+3GWrWsCoC0dS5EPqA6FIT6ggD/AGMGzrJ+pPreB59SpU9UFF1yQtB5vqv6GtCMAGCI1uaZfAr0MgEyLAoDAAc1NjAlQXzYpNFtsD7CFTZa1h0PKt7GtVGBqAqAt7YyLuSgFABbBGyAfWg38zkvbA9kIAIZver4AaLuTD2BQu1oUUPNOdPAwNWpUXGAIAbBKDdULL8xTf//7LLXLLjtmLilNmEWLADBvzpi4mtpC0weUcFi0F5hBPeEr0e9KG3jed9996sorr8zy9/XCIQDYC7PY4Bh6GQARss96m0zbkcrkkgJsMO3YYAFb2GBjyrdxCaUCU1bfwEu4r3LC8mZVl2Xr4ktY1o4N3nQztGnutbWXGgCxnvgyxP3KtFZlY/T5vJNMwD79Ns9lkIluimSwCYACX9ioMbQBRioIrAMAX3rpr2qFFV5V733vezIxNAGARbkHXecxb86Kqpk0BYC2+/72t79Vt99+u7r00ktdh9zR5wkAdvT0dH7nehkAAVfM/VZmRvSdqViwwUbKMnP4Fo2XXQo4BQBCy+mbv88cP6CUL6qQpMlsL1ZOhCu87JE/K8QMbbbhO9c8XzfV2wDQFrgQeq+i62zRjVXch22m0AC69g+QQh9AQIWe7870T8PnKSCwHgCcrwYP/pvabLO++sZN+MVVlZDZDAzC//EsMC8h/QtDfa5d1455ns2X9IYbblBTpkxR3/rWt0Kb7ajrBAA7ajq6rzO9DIDYeKj5S6EB0me3KEiiaBUQYFi+DdCHjYoJimNXUArNJGQGDSAORtG6mHttfQ+Vk94W5EN/KRdzr60fbCMmCasA4Eqxy9Ppel2b6hJkgvX6xBPPqEGDhgeVjXv7bUDnwkqDFF588QW18spvqPe8Z+N+AKzbL66uhMycM2p26dqCgRMK9eTVoXtL2WKyaeVh/sWX5LPPPrvs8q74XACwK6apczvZFgBMAQD6LNqCJMpmOc+PLibRsXnPGI0bNQQwnUDrh8061mcyFQBSRqFBPJh/fAlAxZXQg2OBdpUvF6bPKIpcDb1f3nW9rAHEmMs0jrYgE3yhmjFjpho8eJ0MAhms4BLFWgcAzp8/T62++ptq4403ahQAm0jIzPnEc2P6FBIK9eAgszxn6PNjW0cw/cLX8/TTTw9ttqOuEwDsqOnovs70MgBS24ZZSQEA+uzSR84lsk2vRmHzV0tpngYA4h4+FSlojsaGSXMvgSbWLB0CypQz+sWawvg3tHc+UdH6fAFqIedYAMRLjM7laB8vK0IG+lhFKhFzV2k7ANp2WfqETpnyZFY7eJ11Rvb7aFLrlFcqDQD41luLKo1SfeGFuWqNNRapMWM2zLrPHKUu+0eqt0rdvqPsN7MamEnlXbS7epCJr6bQVp5x4sSJapNNNlEnnHBCKrE22o4AYKPi7/6btwUAUwCACYDYnIoiB21ghW+65pHSPO2rcSNg6TVy0b9UUBoKgHqSabw40E/UFA49Yucfcwm4ZiohgKj+AsPLFZ8RCjHPVZm5BADzVwG+uEyd+pQaOHC4GjlyvWxO9B8G7gwcOEgNHAh4x/O4LAOyKmFs3rw5aujQxWrDDTfoB0D0S692Erq2Xa9rIvCEewmeFxe/ZF27m1fNRA8MKoJC7GHmfb/yla9klUCOPPJIV7F19HkCgB09PZ3fubYAIEEnBiL02YQvWpHfnmv5NrSZEgBdgausikcqAPTRlEIWenQvzb1M9RIzdzEAyLlE39AnQD/Lo/EFxIhDwKr+4tKDGFKZudoAgPhyVVaGMG931SHQTBHDAAXIkBGtbGfQoBXUoEED1YABAzM49NU4Fe32c+f+Ra2zzlK1/vp9KWuaiIxtCgDhvgH4cwFAmwxtJn9+2SrKK2m77xlnnKGOPvpodcABB3T+y9mhhwKADkKSU/Il0MsAiFHTVwubH+Bo6FDU44w/8vz2ysDKdueU/ollwKVHH+MFC5ix+UmlgtKy/ujy0KFZrymcAt5D2sBLBqBPZ330DzKD1iYPAE2NTpGZS395+STYFQAsf36LIFC/GvOD+cX6gLZIT1ptMx2HQuGcOc+pESMGqPXWWy+7fZ0+oxxvE5HHuDf2Sjw3oe4bRVCo+xSa1UwwXtxXB8+TTz5ZfeELX1C77LJL+SLqgjMEALtgkjq5i70OgHxRY6OACQ8AGLqJ6/NoasiYSsKlPJq5HmK0U2ZbecBFfzpsxhi/Dli29YlxoF8xUbNot0xTinPKoDkFvPsAIGSFFzRfXIRkXbtqA0CMw8WMSI0GX17URhXlUtPnqAkAjNHI+e5/Nt8t3zYIWTQHFyWLZroownvf/CxTy5YtVfAPxG9d48R50v0/y/o3Z85sNXLkIDVq1Kh+AMQ/fHx1y+5R9nlTFTmwB2CcKQHQBQpZ9xjz9I1vfCNzIXn88cfVhAkT1G677VYmrv7Pv/zlL6tbbrlFzZo1KwuK23vvvRV8CUePHp3bBnwMr7rqquzLIt0OTj31VPXNb37T+b4uJwoAukhJzsmVQFsAEBs4UqSkAkBqyLAhxJRvw8T4wEnZUrYBVxlg2dpMpZUsAkBdG1kU3VsnAGIudO2urj3Q4ToGAPNeXjoQmrnU6FOIlxm/bMQG6JStJX6eCsiauB81gYMGrZ35BNoOEwDz4QJg+HYGh/j9jj8hTMbv/Ni+YM6ZM0uNGjVYjRw5sjEAbCLwhF8CAUI2/2fXNRFyHsET1yL69/7771f33nuvevHFF9Wmm26qdtxxx+znuOOO6wdz233OOuuszGdw7Nix2d7wuc99Tk2bNk098sgjhQCIdYW0M1UeAoBVSrcFbbcFALFZI/8TvgW6pIYom3pGFeM8tB1Tvi0lAOrwYvOncx17Kq1knqk8z9xrk3sKACxrQ4/UzqvIogMg5owmJ/Q59cu1LEKSAQQEj7L1GvN53QCYFzUaOoYyCHQBwHwoLA8ygT/hX/7yrNpgg1XUuuuumzVVluomdKxF1zXhd4j+4LnBM1U3AOK+povLPvvso6677jr15JNPqgcffDD7gXYQtZldj8mTJ6sddthBseym7TpoAAUAXSUaft6A8Evlyv+Dl2W9LAm+qDHGVHVyGZRA37DYDPdlcOIzPwAuwAE0V/g3Nl1sgr7ml6oAMEQbSfP9sGHDfETxrnPzZMxUQZBVWcWTIgCsw7xG0zF91gB/pt+TS21WXyF2OwBivEUQCHniJ0VEbl6QCTSAG264aqYBxBzh+cKzGRro4juH/JJSd+QxATDP1zhkHC7X4FlhGVA9TdNOO+2kpk6dGgWjMP/+8Ic/VDNnzsztCgDwxhtvzO4DpcP++++vzj//fLX22mu7dN/5HNEAOotKTsz5FtsaAIytk6ubLAELAJMUQSUpAIdzi00PLxcc2HTxggnxeUyllaSvJMyVLH1XFHxiW6Mp5GMDQII8frtUPGkaACkb9BdyhfuB7k9IEzL+lrLiQi8AYBEEpgRAc/1Skzt79tNq9OhVsv1CTxfEhOsMAgp5Vl3fbE0EnthAzLW/MefxvniuKVP8bfz48Wr69OnBViDUEj788MPVL3/5y8JIYpiHEfENjS9A8ZRTTsk0oX/84x9jhrXctQKAScXZvsZ63QSsawBDy6RRS6SXb+MGE5OahKsthX+ibsLEyx8Jj2NeJikBUDeX0lTu86SlkI8OkaZpHH1ykZXuz2iagOvQANoA0CZHRrLqPoU4T6+l6wMcvQKAeRAIAISsqgzImD37KbXJJmup4cOH96c6YsULPfK4KK2JzzNjO9dWGi22zbLrbSBWdk2Kz1nVyARAaAABgC7Pu9mPm2++WX3iE59QkyZNUh/+8Ie9uokAko033jgzPcP/MNUhAJhKki1tp9cBkJs7pjekTFpe+baUZtsY/0RGrDLpKV4geJkNGTIkakWnGB/6gW+9+A3Iwgs2ZONNCYDQmrlGQpsC7BYAzNNCYR70tBmMYjXzE5rXNwGAromDQxY5xjNt2tOKgSF1AOCsWXjxD1N0YzD9HIsiw23gHjpuzHmVoGv2ywZiIX33vYb31UtZ4m9I/4IADt99CBG9p512WuY/CHOu7zF79uwMAGfMmKE222wz38tzzxcATCbKdjbUJgD0qZKha9Rs5dtSmCW54kIBUI9YpWYN5l98049N3xIzPt1UTk1TTH9C5aM/0ZAV0rhg44dDegiMlgEg7lFUGSbVDqObgEPb9ElFg/VUZxoYWwWH0HHmXadD4PDh6/RXeEl9H7Y3a9YTarPN1u53GXEZI+bIFhnumi6oaZDH/ZsCQFuqJOz/0Nw99NBDXtN88cUXq3POOUf96le/UrvvvnvptXheoC1Esmnse88++2wWOQwfdEQipzwEAFNKs4Vt9ToA2xzYZgAAIABJREFUYiNgPiiXKhmEF70uri16LYVWSl9uPgEq3FRZvkoPQkkVvBEKgGZpOfQ1FkhjAFCHUcgbpvHQaEQAIA6YlWwm4G4CQNtWZwIH1gAPACACi3xMx6HbqQschbatX0cIXLZszax2cJWasVmzpqv3vndEfznD0OoYReZ9XVOIf5tarro1uZB1ii8rIXNtq3v8l7/8RX32s59Vd955p1eTXPtcH0z/8+tf/7ofCGFxufzyy9Wxxx6b+ed+4AMfyDSN2PsQ+HHQQQepr33ta/1R4F4dKDhZADCVJFvaTpsAsKwqhU/5thgosS01lwAVFzhNBYC+gKtDqW7uTZFPMFTWuoYUWj8AXEweSD2lTS8CoLkuGcAAcOChJ0Q2gSPVFloXAKK/GNvkyTPUoEHD1AYbjEk1hOXaefbZaep971uvXzMfCoB5c2RqCnGeaTrGWGNKsoUIx6aJC2nH9xpb2bsnnnhCnXvuuZkmr1cOAcBemcmGxtEmAMxLShySmoRQEqNR0qe8LECFmjVqoPLqaqYK3nAFQF3DZovuTQWkvhpSQATgkzn90M/YROBFAFhnndW6tSq65oimY6yPPH9C+hT6+lnxeUgFR65bKkyD8AlcZZX1cpNFu7aVd94zz0xVW201ut83t4ryaLx33hzhc8wJ/Cs5R655QUPHb9PEhbblc52t7B1y/v34xz9W//Vf/+XTVEefKwDY0dPT+Z3rdQDEiwqbAQ4zKTErKoSUb0N7gBL4ePjm2LOtijwA9IXTFMEb6J+L1o0aNpyfF91bJwAyWtuW089lPGVPq75+mDqEL9C2AKBNRnm+aqGpaOoGQGr+Z858vj8wpGwt+H7+zDNT1NZbb5il7uFelLo+blGfMEfMC4rzsK/QlJkqyMR2/zqfC/3+tsTsd9xxR+abB1NtrxwCgL0ykw2No00AqOekiy3fhulyMdu6TqsZoVymWctrNzUA2jScRT6IZr9SaSTLZM1obfTNVpWllwDQFuHous5CzgvxHStLRaNrCU1NYd0AyPx4kI0eHRwiq7xrZs58TG277Sb9QUJ11cfV+2NqHVMHmdjGbtPEpZRrXlu2qicw/T788MPqO9/5Th1dqOUeAoC1iLl3b9ImAMSLjLmwsPnFlG/Diigz2/qsGkYoQytAzRpejL5580KDN2x9Nc2uesoZmKBdsvtXDYDoE8Aec2uL1ua4UgAgv0BAi9OkBrAbANBcTy6mY2qiIOc6tWN6gmQzRYzPM1x07p//PFltv/2mmUsCDgBg3fVxXaAzJsgkDwBZMSmVLF3asSW9hul33rx56qtf/apLE11xjgBgV0xT53ay1wGQZkE9J11erVffWQrJK5h3D0QoM4cfN8yQVCWuvnsuY9W1bnpABatmuLSRSiNp0wDSdAdwcCl35+NHaBtbGQDipQPZVH10IwDaZJKXigbnYk51X7VQf0KXuTATJFcBgX/+86Nqhx3e219urikA9IVOBgK5BJkwsbUu89Q1sl3mE+fYkl7D9Is+fvGLX3RtpuPPEwDs+Cnq7A72OgDiZQlQY1oX/D9F9Q7Mqk9ewaJVgE0WfUTfAH0A1FDn7NQACKDBJm5LOeOyslMBoK5t9fWLZD8FAF1mbPlzQkzAYXfqyxsH0Ob6Zyqa0ComLv2wwQIhcIUV1lEjRoxyaabwnD//+RE1btwW/almkJEAz3loSqKQDqWCzqIgE7OSCZ5/zGmKOss+Y7at2e9+97tZebaTTz7Zp6mOPlcAsKOnp/M71+sAiBcItEfYbLFxYRNMBYAueQXLwI9aLJwHs1esBimFqRN9YdQsftPcG/KySmWSBgBCy8cIWN96whiTAGDYfmRWrQhrxf0q3VetSAOlwwbzE7rf5Z0z80qkpYJAjAEAuNNOW2XPEg4AoIsLRch48q6pEjqLtLnQumHchPgqtbkcu23NIgUMSsF97GMfSynWRtsSAGxU/N1/814HQMwQN/hU2ijOellewaLVYZaYg4mVpsyYVZUiPQ36BlAGbOGbe0x1CwJgTP49yAMAiCPEL5LyLAskKZM7gIDJniEfaDYAHgTjXjUBNwmAtjnJg42YChl5JdJSQCDWycyZj6qdd966P2NAUwBYJ3QykI3RxpAD/21qClNDoS2X5IQJE7JKIB/60IfKHvWu+VwAsGumqjM72gYAhJaNEW8wtbIeZ+yM5OUVLGo3r8ScmaImpm+hmi69b9CYAmjwwoC2LfSINUnrfaKGNPRlEQuAzC2IPlGTw3WF3zjgt6abK0P7WraGsF70Oqeh8+NyXd0A6BKsYPY7JhVNmYk7FgLxJejZZyernXcem31ZoCWibhiDXOu8J+YIstPhOnWQSd76tUWSn3LKKVlJtj322MNl2XfFOQKAXTFNndvJNgFgLIyYs6iXBiubYT2CFpCAjVg3qWLDQv9SvNR9QSevbyl8HENlzuAd5vTDS5Q1fMtknfe5r1z0dqD5g9YG/WJdY2hK9TyArLTAJMm4vgrftbqDQLoBAG1AqGsKGcSA80ztE74gltU6joFArJNZsx5Tu+66bQZDBEC4e1TxBSFPa4r9qs57EgCLZBsbZFIEgGYk+fHHH6++/vWvq2222SZ0C+m46wQAO25KuqtDbQLAVP5xnGFXrR1Nqrh/XuoZPcI0dgX5pKcx+6Zr+1IAYIjMbTn94G+JAJmYeq0+cuEc6BpIaP0IgGYaGLPkVd6LDS/82MS7AoBhT0hR8IKLn1ooBAIwn3tuitptt+2yjrcJAEO+PPgEmeQFy9kCXj7ykY+oK664Qm288cZhC6gDrxIA7MBJ6aYutQEAWbc1hX+cPrdl0OaTMJn+ZSgqHnswYKLIdJtnitbvHRvkwpcdNG8IvCmLbMb85OX0SwGjPgBoaiAB7ixrBQ0ggI9+mxinS3m2PN8134oZbQBA33Qloc8M1xw1cfRTy5uTEAiEK8WcOdPULrtsm3WT81enNq6Je2Ksqeo6F/l92r5Q2QJe9ttvP/XrX/9aDR8+PHS5dNx1AoAdNyXd1aE2ASBmJmX5tjxoKzP32lYIXhL4oXkxZhUV5Se0gU1edG8KAKTMy2oml+X0S9EXVwAEzDEIhjkPAQj6HIUAoG1O83yiTDOlDs8CgDFPx/LXmlqqIj81zAvW6hNPPKMGD17XqXbwokUL1bx5M9ROO/WZHpuAsbrXDKVcZVWXPL9PmtmhsYe7DZ5VfBneeeed1aOPPhrl05x25cW3JgAYL8NWt9A2AIzxAzMXig3aQhMmp6qZiz7mactcTNH6GGOinPV2ioJS9Jx+DDix+UWlAMCyxN2MWgQQ2PIxVgGA5prKM3/pEa6E0bo0SCFmvJhNNVW+Otc+lGmpbOZ8gM2MGc+olVceoUaOXD/TbuPHtnbffHOBevHFp9SOO459FwCm8Pd1HaOLhtq1LZ/zzPJzPteGnEv/WzyrmA/sYVtvvbV673vfm4HgGWeckYHg+973vtIcjF/+8pfVLbfcombNmpX5Zu+9995q4sSJavTo0bldwz6Oe1x77bXZFwVcc+mllxZeEzJOXiMAGCM9uRb+KH3hiz18AHyYUNZVC+QiDh3aCDIAwJBKI6kBEN94mXzVxdxrG29IlLOtHRt067DlktMvBYwWASDBHf3PK79XBIBValhMTUcdyZH1eWw7ANrWNOYEcDNlylNqhRWGq+HD1+1PcTJw4CA1cCB8Pft+AwBfeunPascdt86aagLGTB9Vl/0txTkhEd2x99V9LPHvZ599Vj344IPqggsuUKNGjVIPPfRQBurjxo1TN998s8pzuznrrLPUkUceqcaOHZvNNSKIp02bph555JHcLp566qnqnnvuydqF2wv+//jjj2c1iKs4BACrkGqL2mwbAJZpgXymnpGhAC3WLw1Ns5CqZi76T20ZtFg0rcJ0BY2RTzLnqgDQBbbMeagKAM3UN5jLvMhME/h1H8AqAdCUBQEC80uNB37jYF7ClEl3ex0AY8yUcAOZOvVpNXjwOmrddUdm86GbkDEnCxcuUK+9NkuNG7d1Nj/4HNfVrQHEPWMTzfvsjzi3bm0u7mkzseNv0PxNnz49A3D8Bsh94hOfcI7Enjx5stphhx36E8qbssAXRKQYu+aaa9QhhxySffzSSy9l0HnHHXeo3Xff3Vd8pecLAJaKSE4okkDbADBFMAHkqWuwsKnnaY1cV1/KJNWAJUAMU1/kRR6X9c01yrmsHWpdISe0GVJWLgUA6nOv+0K6wnGnAKDtBVfkJK9DYZ6ZsmgO6wbAKitW2MYZA4B9gPcOBOpl42g6fv3119Srrz6rtt56swxOeMBHjb6eZQFSZc9Y2efYX7B+Y5K6l93D9nndc4k+2DSsANEPfvCDmQ9g6AHz7w9/+EM1c+ZMaxOPPfaY2n777dWcOXPUiBEj+s/ZfPPN1emnn65OO+200FvnXicAmFyk7WqwDQCIDQEbII4UvmS63xo2+dgqF9y0UiSpxgsGY2QVD5ijQ3ONpQJAmIBh5sULyJYD0eWJS6GNJACiDxgb1kSR36HZr04GQJsMaTrmFwHTdEz4wPooWiNlPnIu8+dzTt3QkMJPLQ8C+/ac19SCBX9R22yzRfbFEZpjPgvUFurpgfR58ZFb0blNAmCoVSR07DZz9wsvvKBOOOEEdffddwc1+9vf/lYdfvjh6pe//KU64IADrG384Q9/yHz+sJ70dFW77LJLVoHkX//1X4PuXXSRAGBykbarwbYBYIwmSU9TggccUAPYSgmAoW3pGi2sYGgXYk1MZWluXJ4UvHgAXnjBwfwUWlUkBQACsKFpwQvYFuRRNh4XAKwjMCM0ilQPZiAUoq2y3IQCgGUro+/zPAj8299eVYsWzVVbb715dh7TCdEcmxfN6pseqKiXWPMsY+g2mviz6ItXNwCa8sVInn766QzAkAbG94A/H0zFkyZNykAu7xANoK9k488fEN9Eu1toGwCGgIRpLsSGBi0SXp4wb4ZCm77yYtoy6wpT2xnr7xOTm1CHZdbvjUniHKuN1EEUYMxSbj5Pv+6naaaBCYUyn/vz3JT30k3HhEL8TYcPjBvrPRTefcdYd53cFBpAjtEGga+99opavPgFtdVW7+0HwDJzbFkqGt3H00XDjznEMwCLQF2HHozh0sdU/bJpO+Hvd8kll2T+eT7HVVddlZlur7vuOrX//vsXXmrzAXzxxRfV+uuvr37/+9+LD6CP4B3PFQB0FFTeaW0AQGym2ABx+IKECVd4CXIzwwbnmuS4bJpC2tIhC8ELNPem0Nyhv6EAaOb0o0mkCQDUgzzw0qTmr2w+bJ/rAIh2WUIM56aEsrK+Vf1i1eGjqIRaVX5rdQNg6khVEwJfeGGuWrx4nho3ri8RdIg5NlR7y7WEtcpyimXrK9XndT4Tep9tsHvXXXdl5tv/+I//cB7exRdfrM455xz1q1/9yhneAIt//OMf1Y033phFAeP/U6ZMySKPqzjEBFyFVFvUZtsA0BWOXFKnENrKkhy7LCeftvI0kryP6xjL+uWbnDovp1+KwBtfcKevFV7uDPKgsz/T45SN3/y8CACrhjK9L3Xei1+a6JeGOcYP+qDnJkzpt9btAMgvT5Mnz1APPjhLTZv2gvrb355Te+yxhTr66IMzV4gU5tiywB+9QgarIYWufd9nRf9SFOuK4ntvG+zeeuut6t5771X//u//7twc5AdLAb+4cs3DjMyIXqSQufzyy9Wxxx6btYt7n3nmmerqq6/uzwOIwBFoAas4BACrkGqL2mwbAJZptfCQA3zo9wRzb1HqlJSJpV2qlOhVKvICGMrG6Lq8XQFQj4i25fRLEXjjA7V5IBrj/wmZtRUAbT6Apt9aytyETQBgFaXnbr751+rKK59Q66+/v1phhZXV668/q7bbbp466aSjKzPH5gX+0GqB5xP7WVngj+seUXReE/kOCWH4Aq/DLky/SOh8/vnnpxhax7QhANgxU9GdHWkDAFJjhhkqghrfShloDwAY6lNmrpgimDQDUGDuzTPBuYJb2Yp1SU7tktOvLgAsA9FYANRT9Zgm4Dq1cnXeC2vEJQhEN1HG5CZsInCgqlx15557mXrjjQ+opUvfUiuuuLoaMmR99fzzF6rzz/9UFn1ehz8e5wV7AgN+9JyRupYwtUm/qeTTGCvGrQPgFVdckUH3hAkTyra9rvpcALCrpqvzOts2ALRBDX1VQvLTpawsYmuLpkyYL7FBMwClaCXVAYA+MosFL5rUAJt5Wft1eGf9XlNGsf0QABzstYGVmSj1HHi6Xy2ArM7I0aoA8IILrlAvv7yfWmutMWrZMiSIXqzmz79EnX/+SVG+qF6T8H8nY0/AAXMm54WgXpVJ3xaNG9J332v0sfJamH7XWWcddcopp/g219HnCwB29PR0fufaAIDU/OG3bsbzNffaZjNlZRGzLRdzr61PLpo7l5Vpq04SIrNY8CoCQPQHcIxNv6wEX0gEuC4nFwCsA1w6UQPosp5wjkt0K+ayDjmyz1XlHXzggQfUj3/8qBo69AA1aNCKav78u9WBB66iPvKRD2ZyqNMfD24hgOy8QCzTpI/+4W8xqWhCgl1c11HReRgr+q1HrcP0u91226njjjsuxS06pg0BwI6Ziu7sSNsAkC9xmG31wIKQtCCY8RQBDlw5bAsbF8xu2MhC8tWlKitnVidhRDReDvQ/dFn1seBFgAcYrLHGGv23BOjqQR5lZe5i+yEA6KcBdFkbpjaqrsTIet+q9DkEBP7ud5PVwoWL1a67bqb23Xev7NZNAKAJRUXzQ9OxriWk6Zhm47JE4k3kHsSYbJVrvvSlL2WVQA499FCXZdk15wgAds1UdWZH2wKAgAWaU+GThqNMY+QyYyn823gfaACRbw0bJxMn4/++R2oARDoDAqmebsa1X7HgZQJgXpBHWX9i+4H7slpLng9gHZqrbtYAls0Rx4Z1pvsSmtqolIEMVQKgbbw2H7UyucR+btOK+bbpAut6fsImcg8SALFv6l/qTz31VHXSSSdllTp66RAA7KXZbGAsbQFARvYCZHCkSN2CdlKYN9EO4AIaQGyyrJgRmjw1VV1hJk+mGcjF/9C2hH1TuOS9NKkRZeJeX9iK7QcBEIm/sZ7wpYJ1djFXdfmutQEA9YoqRdooaqH0efDdRpsAQPQxJi+m7xirqudc5OeJZ4LBGCE1qH3HyPNttZ0/+clPqrPOOkuNGzcutNmOvE4AsCOnpXs61QYAxCaEjOz4DWiA1g5arRRRb7FaJT26lyaa2ILtuqYqdCXS/5D1cvGyCgXSWPDit3q8xCCjvCCPsrHG9oNyhXYB/wZ00GTJe0PrEAMjZWPA520DQJtMUgUyNBF1bAtScJn3mHNcIrlj2tev5TNBqwtkjEOPOE6pwTX7bavs8tGPflRdeumlarPNNks1zI5oRwCwI6ahezvRBgAkQBBgkG4llQYQAIgjpOwaK2bQ3IsXA8umxawoXVPlC23YrKFpwwsDvojoY2ypO58cfua4dUDGWADuvmPSNQPUsPrKV+8H5AITJeAYLzXCCLUsNgf6lC88AUD77JmBDC65CZsAwLKADN+16XK+TSvmcl3MOTR1M/KYVWXyqsvwGYm5J661RXUfeOCBWXWOddddN7b5jrpeALCjpqP7OtMWAGQmfMxQyuTNIVol3YcNfojUrsXApPkNPKRGMX0HCaHQdKUodRcKgHpJOUAXXpwAwNAjtB96ihnAHYAY4KCXgkOfdFNiUTk13WwZArO9DIApy4fRdGyCB2Sua6OwrnSTc+j6cr0uhT+e6730Lz94hkJ8in3vxfOLNJ1FpmP9+QgxHduiunfbbTf1pz/9qZbci6HyCrlOADBEanJNvwTaAoB4iVMjkDJ3nw9U6No1W3RvCEzaljLu4wNueTn9fNvJe6x8K5OgP4BhFq+HrAhhdQKgrvWDxg/9QBAIAZDBOhx3UTqRsheeLSdenjzr1lrVbT7Ec1AVkKWch9DXSFsA0FfTaWpwQzTptmcDfxs/fryaPn16Eref0Hmv4joBwCqk2qI22wiAKXP3ucKNae61fRP3gcmiJeoKbjivrOwdytPFmstdZaT3B750epBHishmH/nq2lDACOYLLyRqVvM0gNDolqWj4dzl5cQrC2yoGwDrNB+m1AC6bOOUJeBenw9ca2qiUvgMo92qAjKKxosvVBhjnRrAWNClBteWiiZvbmzacQLgjBkzgt1HXNZSE+cIADYh9R66ZxsBMGXuvrKqG3nmXtsScgUll+VXBm6uOf3K2nHpS5mM0EZZJY8Ukc0u8tW1oQBQPfglNQCasqN2Kq9Cg553DVDmGwXtMle2c3oZAG3Aac6Dnpsw1jzZJABWUe+4aE1VAbpFc8NsBfjypj8buGbnnXdW06ZNEwAM3QQ69LoBHdqvrulWWwAQIAaIwAEApCN/7ETlVd3Qzb24l8vLGoCC9vRkx6H9y/NzNM2a0FgV+aGl8JcsAkDX/lQNgNToAXagJcF8mZo8XbOKeTF9AKsoKUazmO7HxjWBfuKHL77QtVJ2XRMAiETtdRyuGsci86Tp01nm11mnSZ0yrKraSRkAmvn4qphT3ayP54SuPi+99JL6xje+kVUAufbaa9W99977rtyAZX255ppr1CWXXKImT56c+fcCLIu0wPvss092Dwa9YB1MnDix0vJzogEsm0X5vFACbQRApIHBxpSiGLvNNGkGU7hWGXHRlLkuZxPcsEmiXz41hXGvFP6SeZCsB3mU5RhMkdomTwPomli6CQDM0xJSu8KXH142KbRTnaIBrBsAfe9H82RIZGudQK0DoMuXUNf9xeW8JsaJ+cCzgbHOnTtX/ehHP1IPPfSQuv/++7PnY4cddlA77bSTQlDIkUceWTiM22+/XcECgnF8+tOfLgXAfffdV+21117q3HPPdRFPknMEAJOIsb2NtBEA8W0O3+Ri8+1h1ZjlwbBZALT06F7X1ZWqhq8Jbq6AY+tnFQBIrYuPnFIAoAnY9Dl0TSytAyCAC/Ola3uq0ADa5sT0ATS1U2b6Ez3AxHUt6ufV+SLn2vAFspBx4ZqU99M1UTTj428mnOOLCKwCrl8MQ8fG6+r2GeV9bfn4YsdSdj3WPqO6ee4zzzyjzjzzTPWDH/wgA0FEA0MJcOWVV5Y1l31+5513qve///1OALjnnnuq8847z6ndFCcJAKaQYovbaAsAYkMGcOBIlW6FAAiTMoCPufNCv2mnCHTgUkagC8tpoV8hNYXRVoqAGY4LwSQMOjGDPMoeQd3/rszElteWDoBlPod54MXo6iYBEH0rql6ha6eooYL8QrWEvQyA1BhVBZx5JnzMBc33KXNEFn1hqCqyOu95ayLwBM81vpjpX+4ff/xx9d3vflf94he/KNtmrJ/7AOCUKVOyLxUjRoxQhx12mDr77LODcsS6dlQA0FVScp5VAm0EwFTpViBQQAU2upgKFZyYFH5ubAuaO7x8qOkM1TakAkCWzMPmiM0ZGhCfIxUAQjsAWeB3SF1jBsVArjYNYF2Rlr7ly8q0hHoNVxOw6wTAqoHMXHN13w/zQD9TPaDBzE2YKikyxmuLjPV59kLPrUsjrvcPXzYZBMK/33PPPerqq69WkyZNChqKKwDed999aosttshylQI6UX5u8803z+5d1SEAWJVkW9JuGwHQJx1I3jLQo0VxTorScikAUO8XICv2W39sxDRfPoClEOCi/FMAIOadvnNM7eL7mHcrAJrjzPNh00GEpmPIDNAc+iXCR8Z1A5nNZOjT35BzTc2YGcRgy3/HQJ8Q7bdroEvIWIqu8f2SkuL+gD/mD2V7//M//5OZcWECDjlcAdBsG9cdcMABmbm5qrrPAoAhMyrX9EugLQDIKE8M3CUdSN4SMf3GYPqFliwFAMb4ubFfjDDE/1NEOsdETNP0C1niJTRs2LDgJ0/3v/PNx4Z7Qy4stRdTTq5XANA2EXkggnMhc9Y5BoSEgIjL5LcFAMtSsug5CfNKp7lGf6f0c3SZQ5zTlN8hvmhCXnqAH0y/Tz75ZBYRHHKEAuBdd92l9t9//yzrBOa7ikMAsAqptqjNNgJgaLQto2ixuUGDhBciwSQ2WTIhKaSEm+7PRvNqqkhntINx+mxgZpAHfJ2wCTYBgHghQOMCbRaAGHOPuQo9igCwTqf3OrQr1BICnvWax1WaK+vWyNV9P6y7ENOobi5mqhNbgImtdFrdUK0DYKwFwvc5xfOO/Uffr37yk59kPrNf/vKXvZqj3zgA8KCDDso0edxHzC9A8+fPV4888ohCEAj24KlTp6pPfepTasyYMeq6667zuq/PyQKAPtKSc5eTQBsB0DfaVjer4pslNhd9A0iRK4+bpk8JN/oTAWpM8yp97mJT3fi0Y2ohsfnjhUTNJkqohWqOfEEbc8ZycoTiFOXkONd4EZg+gL0GgNws9HHlRbpSGwW5xAQ11A1kWBN4frBW6zpS5eRz9evEs1D3GJvyO7TVH4bpF7lVTzvtNK8phs/gCSec0L9nEbjvuOMOtfHGG6stt9xS3XbbbWr33XdXs2fPVkcddVSmacQaHjlypDriiCMkCMRL4v4nSyJof5m964q2ACAGzc3BNdrWBBpbcmC0myJVig8Aol8cA162eHmZSYsBP4Ct2FQ3rgCITQ/3tAV5pPDfg3xcqpLoc1ZFObm2A6BtuykyV5pJksu2qyYA0IwaLetj7OdVaW/z/DrZX2jA9WCf2HEUXd+U36Gt/vA3v/nNLDjjH/7hH6occiNtiwawEbH3zk3bBIDY6LFJugRb6ObesqhVAGDZOa4rpgxyXHP6pUp1UwaSkCdMhEVRtXUBYBGEQv6u4F80VwKA5SvZRUuYF9QgAFguX58z+GURex9cMSBf3XSs54gM1c7nfSmA5riq9Dp5MrDVHz7rrLMUkjQffvjhPqLrinMFALtimjq3k20EwCKTZJm51zaTKVKlsN2iEm7Y3FyT/p95AAAgAElEQVRz+qVKdVMEgHrFk6Ko2pgADl3errIBjNteZi7gX/aklgFgXdGyVWmRbONPYdp2CWoAjOA8M5Fv2ZzEfG7LGxfTXtm1TQRHmGPU54IJq9FvagdjE4ejrbpBnnK31R/+/Oc/rz7+8Y+r/fbbr2x6uu5zAcCum7LO6nAbAdCmkXI199pmLzZVit6mzZwcUlouRaob9MsGkjokA7aQ4qBIe1AlANKvD30tS+2SAgA5P9Cm2HwABQDd9reioAZ8hjUVk/rErRd9WmEzb5zrtSHnNeEbVzZG3XRsJg43odBVS9iEbyXmw1Zn+cQTT1QTJkzISsD12iEA2GszWvN42gSA2AiZY0sPtrBF0fpMQ0ikbF77ujnZF7T0NmNS3ejt6CCJFwXr9wKA8nwibWMrM227yFuHYz0AxhaYY2tPANBFysufk0ID6HJnri88p9BCsaSd7keYMkEy+lQGRy799jmnKQA0c+OV9Vk34xMK8TfXYJ+6Nascj22tfuxjH1MXXXRR5gfYa4cAYK/NaM3jaSMAQsQAkiFDhmRAg+AQV4iwTY9roITL1LKEG33rAFqMpnW5nuekBkDIB+ZgvAzQH99KHikBkPDH6itmAEyenGLyLLJNQii1DdSQ4DdkjvmqI2Fyt5mAXdeurjkq0hLqUGhLfeJ6P1viYNdrQ85rIjgixRipJaTJOC83IQG9brDmXNjKz33oQx9S11xzjVpvvfVCpqyjrxEA7Ojp6fzOtREAaZJkPU4fTZZtRssCJXxWAQAQ/cMRE1gSmuvQ7CsTKGPjh1kuz7+ubIwpUuUAvphWhrJxNUmhfykAEOMA5OEFh9+EFM4ZXoD4e0wqlDJZ4vNUqURc7lWXBhB9KdMcQc6ED+bDw3Wh/msp4MhFhjynCQC0JUf26XPeuUWAjucSnyM9VQyg+/bTlmMRufn+8Ic/1B6Q4tv3kPMFAEOkJtf0S6BNAEjtAjVZ0GrF5smDIFMEXOgmTQAEtJM+cGMuad9ch7ZHAi9HgAb6hjxa6FfoEQOANA1i3tAHRBb6VgNJAYCQKeSBe6MPeJnjoHYEsMw5w2e2smoxc6rLvq0AaK6/Iv81Fy1hUwBYZ3SsLTly6HNcdh0BHXKlCV8H9KKa02Vtu3xuPhfoD3z/kJjZ1VLgcp9OOUcAsFNmokv70SYARLAGvyEy95evKdM2zQBAvPBDNnVsUHpOP2olY8E0BgB130PIBxt5TPUMyCw0V6Ke2gXtxGhFQ9PR6JVN9D5g3vRDd0A3faj4MgzVVJnrTgAwf8P10RJWpR3L610TVTlgDaA2rq7XFKETVgNzPswvR6lyE9K/EnsEvyDib+PHj1czZsyI+kJdl9x87yMA6CsxOf9dEmgTAMJHC5sPvgmmjNwNjbi15fRj2bJYAAzJeWcL8uALq24ARF/0tDfY1FlUPbSweggAspQcfTHRB8wN/PzMKGBbCgo+bLGaKgHA8I1blz192AghaBVfuhh1nEpD22kAiP6EPjchki+CTv3LEefDDDAJiQAnAOrl56gBnD59ugBgyER2+DVSCSRygtoEgIAZmIFxpIzc9Q24MOEGQMFvrKn8CX0jXqlpY5AHAAcvwxhNor40fXIl6qldAH4MqoiFdh8AxLlmKTnIg+MgABIg8LsIAG2PqYumKi/qVTSAcRsfIYSaKrRGCDGrl6SEwiby49nKo8VJr/xq33umyE1o86/EXrLbbrspAGAvHqIB7MVZrXFMbQXAlJG7PgEXZcmTU/gTYvm4AmARjKKdEE2ibfm6ACD6wqoitqjsWGhH+2W1lnUtqFlKDuMihMI0DniIAUBTTqaWsKhqA+AUMqrDr6nOIJC6o0d9TJUEwxggbCI/nq06RtWvGFtJNp97EtB1jW2ZXy0BUHfFwfN+5JFHqj/96U8+t++acwUAu2aqOrOjbQXAVJo2zKqLlsw1p1+oOdlcXS4Rryx3h2vzkiinAsAy7R3vU5TapWoANLWgNv/QIgCs4kVLLaEe+cq5hllajziuaofpZQB0NVWG5MKzzUebABDPcgofa8rR5kuom44B5thHdBPw7Nmz1emnn65+//vfV/V4NNquAGCj4u/+m7cJAAFhdNxPpWkr05Jhg8JLhgECZTn9UgFgkbkTnzG9S1n+Q1dNYtmTkAeAeoAF+lJUVaQqAOQcYU3g/rpJ3hxX3QBo0xJy/lg6Df3Hyw//5w/+H6Op0u/bVgC0rWndVGnmwjNNx3kAyAC0smcm1ee+rgkp7lvHPfN8O9H/mTNnqhtuuEFttNFG6re//W32b9cDOQMvueQSNXny5CzqH++MoqwDCHA79dRT1S233JKdd/DBB6uLL744OnDOpb8CgC5SknNyJdBWAEwFWhBsHiSFVBjx9SfMm1gbANqCPMpMiBgDoGfYsGFRT5EJb2ZfysAYN48129MEjIAWjluPMkYfypI46wCIFwPhC/2rQgOYJ3Q931kslJRNbN0A6Fu1oqz/RZ/7+qrlAbmuoTUDGvSckGV5DmPGknetrTxaFffR22zintSuIvfgY489lkHYAw88oJ599lm16aabqp133lntsssuaq+99lLbbLNNrghuv/32rFAA1v2nP/3pUgAE8GEvADhi7o8++uhMC+kDnaHzIQAYKjm5LpNAmwCQ0MGXNR5a5NuLPUxzK+6DzQMvF2xG0Ci5amN8/AmL+m36u9kijl365GJKdpGfDoB6XwhdLn2JBUD0kxVJWLkDLyqfOeI4oCnsFACMhZKy+RMALJPQuz8vAnKcic9DE6r79aTvbMxfXTWq2b8m7mnzH/3d736nbrzxRoVycPfff7+677771CabbKIuvfTSUlHeeeed6v3vf38hAMLEPGbMmAw4t95666xN/Hu77bZT+Gz06NGl94k5QQAwRnpybWsBMBVoYQkRktZaa61ss8Dmh2/9gJsyDZu5BF38CV2WLQEQCZzRJ4BOmXnT1q5P5GxRv5hAGeDlYmq1tZXCbxMACCdxyANHnu9j3ljKAJApRVzmKOYcW8WDovbKtIRFAQ4CgDEz1RddzGAGaKnwbxy62T4k7Ylrr+qcPx0A4f8XkzzedXw8z5bUG1q4xx9/XE2cONG3OeUCgDfddJM65phjsj1NP/Cl8uc//7k65JBDvO/rc4EAoI+05NzlJNBWDSAAECa72Px2ECghCZsdYDCkTBknBgCIzQQwGXsAdliGSU+n4tNuKgCE6RSywUvPxdRaBQASitG2j9ZP70u3AqApTx1KzAAH05eNwF7Hy7zuyhyx0ao+zxLO5fiw/ljKjnCIz3XZ56UA8r1nEwBoq8nr22/f821JvX/6059mWv+zzz7btzknAPzZz36mJkyYoObOnfuu9keOHKkuvPBCddxxx3nf1+cCAUAfacm5rQZADJ4+P6lAS09dgm+8ehb6kOWWIupWD/KIqd+L/rukTikapy4fvNCgkXQx9+YBIP4OgPQ9KFfIBteHJsXtFQC0AaEtypI1XQF/MCNWXde17socdfptQuZ54zPTnhSlAPJ9fpqAMV8Nte/zbDvfFtF92WWXZc/6P/3TP3nfQjSA3iKr/QJJBB0p8jZpAHUATAFaek4/lkvzNfma0xcTdYuXiF5WDn2CubMssKEM4Mpy5+Vdr8uH5Z4AyKFHSOS27o8JX0yYfmPqGut+iHiZ60EgsQEFPnKp4wVLKIHMMH+MukxVzs423jYAIL6EQANYduSlAPKVfx1rxRxLnYnKeW/b8wfT78Ybb6xOPPHEMnEv97kLAMLPD+0jYlj3Adx+++3VrFmzxAfQW+p+FwgA+slrubPbBoB8aceAli2nH1IBIKAk1kwWGnRhC/JA8uVQc6u+UBg44Qq3NvkAIvBCC9HesS++AEgtr55bMLQmMfvQJgDkmKlBwvybUMLkvLrpMkZLKACYv6HraU9otneRfxMwhnvGWkN8X202c/4555yjdt999ywZtOvBdGEAwIMOOiirGoX1DQuPTft66KGHZl+8r7rqquz5OP7447OxX3/99a63DD5PTMDBopMLIYG2AiBBa+jQoc4mST2nn1klIhYsuBp9fe7QJ71mrp7DzqX6hstTAA2gC9wWpZnxhTdbv1xT9xTlFoydpzYDoO3LjWk2xnOFw1dLxfmuGwDryFenr+WixNMuz6J5jov8sT/UCWPoE7401HlPyMVmzv/iF7+ojjrqKHXggQc6i3fSpEnqhBNO6H8vUMt/xx13ZNq+LbfcUt12220ZWOLAnnLaaaepm2++ObsGQIgUNLA0VH0IAFYt4R5vv20AiG9qjIjEg+sKgGU5/VLBlg8A6n2yafrKqm+4Lm0XACxLM+MKb0V9cmkDAIGXD2DFlltQANB11t85z8eHrExLRU1hnpaQpdlcTKT+I1n+iiYAEL0I9UEtG3OR/E0o9/UlLLs3PycA6hU5XK+NOc+We/Azn/mM+vznP6923XXXmKY79loBwI6dmu7oWFsB0DW4QQ+oKIocBQDi89iN3aVfpl8b7mvbzFMBYBE0USvKSMO8b/0u8Fb2xBQlycY8AVQAxUVR2LGgrqeisfkAQh51wEudfl0+AGibwzxfNlvEaxMAyACXsvWX4vM6/UTRX8IY9iVdW4h/Ewj5O1X1GGrg6wZAW+7BY489Vl1wwQX9/nkp5rCT2hAA7KTZ6MK+tBUAMVVFvm26OdMlp18q2CrqlxnkUZZnMLZ0GpdzHgACtrDpMrK2KNgkRYUTWxv6PJlmedvjmBIAqU0mfKc27xVtJ90EgOY4GFzC9Cd6xCtlCWCJ8SV03YrrrlhRd9oZmzZO1xJyDuhLmEJLSABEAFqdhy3dDcyxV155pdpwww3r7Ept9xIArE3UvXmjtgEgoIV+SnmmTZYH88nplwq2sMps/SozsdpWZ4rKGWjXhCa8QPDixMvMNZ9eFQCozxNg2KXwfC8BICApNujIZVeL1QC63IPaKWpV8X8crG2sa6lc2nM9pwkAxFhc1qrrGIrOc9XGEcr13IShWkK0AbnWDYC2dbrvvvtmtYBT5FVNMR+p2xAATC3RlrXXZgA0NVtFARVlyyIVbJkA6GpizQNAvGxiUq8QAGne1lO7+FTRSFF5hW0gIAX/DqkoEmuqx0sGB7SNNAfTlEnfUgTiVH3UAWUcQ533ohYVcKtrp6glZMUMgmGs2bLukmV15x0M1cblaQldoBxzhXHGRPyHPD82rfj48ePVlClTavmiFNLn2GsEAGMl2PLr2wyAujYoFGz0lyReRrGwhfYIpmgPmxo245B0LilKp6E/MG9DY4GNHS9oAE6e32He45QKAGlCczE72/oSa6qHTFkDmH5VOqjoL8ii8mqx206dUFanubnIjF5Wzi5ES1h3lYy6g05SauN0LSHXPLWEuukY94Qmt24ANFPPoG8AwOnTp2fuBL14CAD24qzWOKa2ASA2J5iBCTbQ5HDDArzhpR4SHZcizQmnHQAIeABouJpYbUsmVZ8AytjwXXwh85ZubI1j+jKhnRiZhAIgfQ0BQ3iZIMUDc7HpPoCUE01pkIf+ckxV3quNAGiurSIgMcvZ5T3TbQDAKrVxeVCOucKXxhAoD3n9cX/Qg9Dwt5133llNmzYtaE8P6Ufd1wgA1i3xHrtfWwEQmwPBJkUJtxRRrlhaABx8k8XGCVOna/LlPADEBh3qi8PIWoAoZBQT1RcDgHq6G4wzxp+H2kyfSF09whg+dzSrY0zoG+cI/9arPOhmNAIh/gYYoQmTQOj7paOXARBzHBpNb5qNy4IbmgDAOqOO6zbH8osSnwub6Z5mfN81X/TqtQW7YO532WUXAcAeYxZ9OFIJJHJy2wiA+EaMFyg2J4BNKCDpogcAYtMDtIUcOmRgY8QLMNaXLBRK6XeI66Ehxf/x0orpT0jpPTPYBLCEuVtzzTVDRJxd4xOsY4swxv0JeQQ+HfTwb2qRbWYnBjvozvbolw6ELtGvAoBuS6AsuAHrEvMVUy7RrSd9Z9Xtc4g1CrN6neZYyBT35X6hawkJ6FzzunY8BghtwS74soco4IcffthnirrqXNEAdtV0dV5n2waAgBqYWKEBwqaRIkgCsxoa5WoL8sDLHS8kHy2VbWWF9ImRtZAN8+lRIxnj3+gLgDafTN82bDJxBUAdyBlhjLnCCxyaP8wPoBg/OBcvWfQPf9fBD9dQy5cHhHo6FPxbj77UEyfr4wkFQPRz6tQn1LPPvqzWXHNlNXbsJmrdddct3Jjq9gGM0QCW7bBmcAPmDAe1snpuvBggyetHEwCI9Rrz7JbJ1Py8rJoLoVxf96Zm3FdLaAt2mTNnjkIiaJR069VDALBXZ7amcbUNABnIgBdrKh85TFVIkENeJY9UEcU+fTIjoPHC4AswRTCJa+1lQpYt2CQFAJbJ1qb1w8vI1NzRlxR/J0BAm6yn96D5Cy8nHDyXGj7I14RCE1B0P0Pdrw1w75sGBm3/5jf3qJkzV1fDhm2k3nzzdbV06RPqsMN2UMOHD8/dcXoJAM1BEqTxdx1I8P/QcnZFW3fdJmc8M/ipGwB1VwiXV5n+fOVpCQmFtvZspu4nn3xSffWrX81KtPXqIQDYqzNb07jaBoDYXPitP9REapsaHx8307QJU4mubUgBXD5QShDFNbbULilA2QUAIUPcCxu9Lcm1Sxtlj00RAOq5FnWtH01YBD3MFYGZ2kD8jWZd/BuaQQAbfQZNMzH/z/6WaQkJgjHBJS+88IK69tpH1MiRu6lly5aq1VYbqubOfUpts80baqedtmstAELTrvvamr6bnP8UWsImAFA3x5Y9Hyk+T5EQ3dQSls2BzdT94IMPqssvv1xdffXVKYbVkW0IAHbktHRPp9oGgNTwYIZCTKR5M+uqndIhB9/KbYl8UwAX+lkGpUXaNn2cKfoDcEHQzbBhw5YTIc03kCFgOC8SuyoANH0eGUlIrQRdBQjprIBC9wHT5EvtoB5xThjkb0IGTb42LSHbtWkJMSeEFsiNJdTol9hnlsbfkZPtLfXWW0vUSy+9rO67b54aNWpHtWTJYjVixKhMC/ie97yg9txzfEcAYN2VMly1m/pa0CHcVs6uaPcPNd2HvlFMf7zQdnyuq6rcXd4cUKOONY/9g8/L//7v/6pf/epXGQT26iEA2KszW9O42gyAPibSsukogxNXyMF9UgAX2imC0jJtmz7eFJpSAuDQoUP7tZ3Y0NlHgDC0bkX5uoogsmx++LmpXaXPI377aP2gNYK5t8xPjJoMVqChJg/jpJaQEKFrPQiINOERJtHO4sVL1Kuvwny7TL399rIM8vBvpVZQAwYMUgMGIFIZ2sfBaqWV+vq50kqrZMD4v//7qHrrrTFqwAC4LcxXSv1VHXLIJmqDDTZoJQBCIwxo8I22D/VjcwVO1/Vcdl6ZP17Z9SGf1wXxuqaWZRnR39tuu03dcMMN2ZpGIAgA0NefGqbjK664Irt+3Lhx6pJLLlFbbbWVVRz77LOPuvfee7MvrvRlnDhxojrllFNCxOd1jQCgl7jkZFMCbQbAMg2Zz2rJg5M87VJR2ymAKw8AfUCUfUzRH9wXwTcEQD3IgsEmZTCVEgDx0rdVE6GWgRu5i9bPZ53gXIwdIMdyenhhUnO3ZAmg+O3MnLxwIaIpl6qlS+ErCKhDXjWYlldA2IJaZZVVsxfbiisuH8XaByj4ARwu7S9/iCCYxx57Rr300iL12mvw/9tVbbPNloUgWye01AUPnDMzebDvXOrnu/ixYXwhwBnaL2qGfQEo9H64ru5qJ9zr8AxhnMj7B7+/u+66Sz300EPZs7X99ttnKWGOOuootfvuuxcO79vf/ra6+OKL1a9//Wv1nve8R5177rlZPWH4FNp8KVFubq+99srOq/sQAKxb4j12v7YBIKaPJgpXs63LlJuAg2v0IA9CjktbqUzTulZSD25w0bbp/UzRH8oHOfwgd0ZD6olby2Rj0yKWXWN+zsoq9ClihRVdo4NrWGJM9/Vz1foxsThNs32/F2dA1/f7rQzy3gG7wf2auwEDBmZa0D7t3Upq5ZVX6dcUol9sG/3CPNIfkf0lsOYFlxAGIYfnn39Sbb31BhmU69HGJojXDYDoe121clMCoOXLdQbfRdGuoXkgXdd9Cn8813vpXxgxrrrmEPe1gS40f3hODj/88ExDd99996ldd91VHX/88YVD2mSTTdQXv/hFddppp2Xn4ZkbNWqUuuiii6zXAgD33HNPdd555/mKKvp8AcBoEba7gTYCIAvOl5ltfVaGDoC4jtqdkKoVqUzTBCbkzWPeQ5o5fcaWoj/YiF955ZUMWnRzq08/bJDtcz36AA0Y5h1wxUhnV60fwIgmWawh/hu+dvgB2OE3zLJKDVKDBiElzGA1aNCKmdZu8OAV/y99zODs3wS45cEBEcPQ2uGnL7k0fgh7fLnCzKsUtHz4HPdclr3w3q29HJCZe22m9blzn1dDhixSo0ev9y4tIXMSMgoWsG4GSvjI3efcurVHVQKgbdy4H8BI92fDeabMy7ThrjKtyh+v6P7Y++pMdo2+2ED3wgsvVOutt546+eSTXcWVmXzxJRXAiCoiPD7wgQ+osWPHqu985zvLtQUARL1hPIcjRoxQhx12mDr77LNryb0oAOg8tXKiTQJtBsAUJkXKlIADwMIGiA3cFlHrsgqxmcUmPMZ9ADrY0HDowOPSB/2cWACkFg1yiam6EgOAuq8fXk5I2G36cdFhHnAHUAT4LF2KFDDQMCzJfpDRpQ/q+sAO/+7LCdgHdfy3r09Z0ZxQfhhDn/kXvn9vZ2usz9dvUAZ4BEKOizBIIMRvnEMgfOON19Wrrz6jxo3bOrs9r9MjjvE3Agp9Fov8NH3Xlnl+nQCIseGLkY8WOnZ8tnq11BDyd9889WmCCYbU8PrevwkArDvXIQGQ+xxlBJMsagEfffTRzmJ7/vnn1YYbbpjVD9588837rzvmmGOy8o+2gBJoFrfYYosMHB9//HH1yU9+Mru2juhjAUDnqZUTBQD7JEANYAxQmLJkW/h7TE1h9g+wFFPxguZnvMwBOzGVDmJ8JQle1GJhTCYc4YWHFCU48A06T/tByMZG6wohuC9eugBhXEPNHXzpFixY2B8hC63dsmUDM1Ms/O4GDVpJrbZan9wArQC8PsiDuba+AkRMbwGZ6dHR4DL69y1ZAnPy2xnAmVGpXKeYB1wDzSIPyObZZ6eobbfdJKuGY5MpfUbRLgExRTqUvN24lwHQFThNszG1v2ZeQpd1WLdPJea17lQ3uKdtnBMmTMgqgRx88MHOL/8QDaDZOBJPH3DAAdmXyNCShq4dFgB0lZScZ5VAGzWAjBgLAQpTiGgD37IBbPg3XqSxvi8xvonog25+xsboA0y2RRICgLrWj2ZwmIBNAMTfvvWtS9XDD8/JNFvjx2+oJkw4xVrv15wvQI3uZ4d/L1qElCd9/nZvvrlQvfbaG5lJdtVVh6gVV1xZIcgC5llAep8ZFhGyMNEOzlKj0DwM2KuR85YTO9cVxtgX5AHNX/7Rp6hbpgiDerTxuzVJA/tNxTAxP//8M2rEiEFqvfVG9VcgobaJQKj7AOqmy5h0KJ0EgDE1rn1eKwRA3/vpmlnOK7WEOvDbtIR1AjVlUXeqGwKg6TuKKNzPfe5zao899vCZJmXzAYQpGSblMv9B3AjBJ/vvv3/2pbPq4BsBQK+plZMtANNn42nRYQKgTSvlIg5duwWgwDdfBhW4XJ93TqhvIsGRiZTxG4AVC4C+QJqXWBp9gTZSz334jW98T/3+92uoDTf8hwxMZs/+ifrABxaqL3zhs/3aOmrt4F83f/5f1YorrpKZY6GpUwpmsj5z7IABfVo6/PRFwKKc3WrZPVnNg+ZsarGojcTf8W9s2C6alZj5LbuWWj+Ya1deeaXg/gAK6UP4blhDJHGfefH11/+mFi6co8aO3bzf15BmX/6G/CEXW85K04zep2kMN2Hiy0tdAQShQFY2f3mfp7ofTfu6qT5PSwgArEueOgDW5TPKe9r8Dj/+8Y9ngRnbbrut15TBzw9RwLfccksGg1//+tezKOAnnnhiuSjg+fPnq0ceeSQLAsE7YOrUqepTn/qUGjNmjLruuuu87htysgBgiNTkmn4JtFkDCCG8/PLLmW+H7eVWtJHbgjyQ6BgpHmI1gPTdsyVNtvWpKLULxhcKuLwXABBmVESLFh269hFyMGHKBEC0+5GPnKqGDZuYpTdZuHCeevPNuervf/+x+upXP59BHTR0ADv8G+bXBQveVGutNTRrGxo805yMlyK1segD5lX3iWP/6W+FPuh+bu844/f5ytV5ANgWLepLCYP8fX1BIul6QBMwYZC5BZ97bqraccf3ZS8wVi5hqhrmkdPXdFEpO/TWZsLE3ylbaq1soN3LAMjn1FcD6LICTC0h5pYH5M0a1a6uEy73zDsnNLdizD1tfoeI/oXPHiDO9/ja176mfvSjH2Vm3B133LE/D+Bzzz2nttxyyyzXINLJzJ49O0stgxQxkPnIkSPVEUccIUEgvgIPPD/h9hjYgy6/rI0AyKS8mDpACcy2rj5y1IbZgjyg8ofPR6zfh2u6E2z6TOicl9rFpnXzXbIuGskiufB+yAOoa0jxQjz66H9SAweeqVZbbbR6441n1IIFf1ZrrPGA+s53zrb6pAGyMV82P0KYfwFQnANGzcLUCe0icucRqHQtG0zAOHQwsvnTVakZ7Mv7tzAL0ojR+vnOLcb5zDMz1OjRq2aAr2uS+oJOBmVfat6RZZ+Gjz86ZPQFpcDE/O6jzISpp6CpEwCrBDLbPNR5P84PA9II5lX6b+Iern6Ovuu07Hyb3+F+++2X5fIrqnNd1m6nfy4awE6foQ7vX9sB0ISSvOni5g3gygvyAABCUxLr9+ESnIKXMzY9gAyhygYoKQCwKFoaGz76AROqTeuny9Mm62uv/aX60Y8eVkOGHJ4FKLz66n+pQw/dTO2990Fq5MgNlq3jzuQAACAASURBVANzyBhmXUS+8oDf28KFfT6YSI6Mz5bX+vXBn6uWDdeb/nS62bgvfxuCRuIe8L4I40WZLyPAtQnfwxdfnK8GD35Nbb75phkAAhqwrgBz+D8OjFevb0zAwOeUNQEAvxnFyn/rUtJNmDRjEjx5L2qsqoTuOoGMAIZnBV9g6jp0MMrz39R9RJmXMLR/TQGgze8QiZ9hno21yITKoo7rBADrkHIP36PtAFhmtnXRsnF5wFyAF1csAOKeeb57+MxWwSJviboCbtESz9NI+pSTQ/s2WeMlfPvtv1W33npfBlMHH7yr2nvvvdXzz/9FzZmDnFzrqeHD1+n3g9MBsE8WYVo/Xy2biz8dU6y4bheQK+YSkAP4q8M8Z+sb+jBnzlQ1btxW/f1htQrCHbXm+E0fPx0IqSGk+dfUEpaZjQknTFtimuUJKSmBkABYF5DRPaGu+2GuiyJyTRCn/6b+RYcg7yp3AmAVZu6i58pMVo5+IAUM0rk09Vy57gMx5wkAxkhPrsVm3rogEPo+YfqLzLZmkEfZN0n4vtBkFrO0CICm755eWcQ12KQMcF36aWoki3wOi9rz7QvmZubM59SCBYPUqFEbZdo9QDbgBOZcaP1w9FXLiNf6uciC57imYbG9ODtB6/dujZxSTz01WW200ZpZGh493YxNJvSf1OsbExr0+sa6lpCaQn27obZJf0HTmR/t8D78TfAsi3x1ncc2AKBvRC5BXA8woVbWzEuYtzYYDOcKja7zVXSeLb8iAHDGjBnBQVQp+lV1GwKAVUu4x9tvOwDatHbYBBnk4ZNAGZstNj1bvUjfZaQHb+j98a0s4gtdeZs6NImIJiaE+paTK4PtPPngJT137jw1a9Z8tfLKa6tVVlk9AxSaTAkrfS+uYl8/X62fz5yVp2Hpi7zFeKA5bVrrx7GhP9C6zZs3R6299lK12Wab+gw7O5fQoAMh/qabjXWfTWqaaF4mFDJPI9aW7cuWLbiEfod6JQ1X8KhbI0c/T3x5q+uILeNHDTAh3KYlJMhD7nVDNdefmdAb/UAlD2gAXddDXXOS8j4CgCml2cK22giA2BwAEDhMrZ1LMEPeMsE3X2yYKTZ4+u7RpGILOnFZrikCU6iRhHkbL3nWNfbdWGP6ggCJP//5GfXcc6+otdfeUI0cuV7tWj8Xeb9bs9ZXsUN/eeJzgM47VTXqjzbue2n2VYpB0Azn9aWXnlLjx28T/cIkNFDTruck1KGQqXkIdugPnj/KhnntXINLGPnq6tNWNwAy8CjF/uC6FquIyLWBOPpDEKRfsu/+4Dom8zyb2Rl78YEHHqgmT54c2mxXXCcA2BXT1LmdbDsAUmsHzRo2jaIgj7JZhNYQL5UUPj6sm4sXYkxlkVi/RN3nEKCAl1eoT01oX3QNKDSR8+a9rAYNWkuNGLFBFjRRFOFbpdavbD3oWjYALMaBpM56wmZqykyzpmvbIefhngsXLsqqh/QFnvQlmZ4583E1duxGWd7E1EeR2RhjJywyfxwhUjcZ0wSsB5iYwK2bMP9/e+cBbVdRtv+BBARMiKR3aighAZJQBPwUWCDyp7cVmoSmghQFzEeTHkBFYSkWQPSjS5MOooD6UQIoIAQIzZSbm04SSgKRDxL+6zeX92buzi6z2zn73PPute66yT17z555Zs6eZ7/leZOsVbW2yNWLAJZd6s4l/JJJLy86RZSzS1qLYck8VBZCj++pp55KuryhP1cC2NDTV//OKwH8sF3+g42Qh2VQYsR3ltjkIWx5NlAepqK7Rz/CJE98+8N5WUkX10oMpGykefUEs/QlKCoNYYeIzp0737S2LjTdu/czffoMMKuuuop3hm8a/PKci5Xtk0+oTPJ/1qWJbqGbNbxCl295u2Azm9mKOrBtbuMiso1lHFGl5fh89uwZpm/fVc3gwYPyDNvrWiFqUslFLhJXrlgB5e9xbmOxFEZJ0LjyPm5WM9fV0lrFveQF0wuknCeJZaxsAuh2U9YXcbqu5dvFPYu7Pg6KMEvulClTzFlnnWVlYDrzoQSwM89uDcbWjASQB6MI3EJKeDiJFmAet4VUmUBYOstBPyA4PEQ5xPKXpS25Jktiimv1w0LEw5xYwmAVj7T9StMX1+rnysvQD8gBJBCL67RprWbxYmN69hxgCVatdfSiMJDYOsYBhr4vFWFB+G0uUGRYunxODtO7jYPyN2Gl5T744D3z4YczzahRm6ed2tTny3eQlybwgSAHYwmFDIe5jeVcfsuPSyJ93MZ8z4SYBOvsZrVyxwHRLAQwjOQGrYSSFCS4u1neaZ/BYZbcl156yVx11VXmjjvuSL02G+kCJYCNNFsV7GszEkAePsSjScYh05KVtLlTmpUAuoSLjRDiB1kqQlQ6bWKKm/nsZhoXoSfoSwDD4jBlA2HOpHqHuE3nzp1rpk2ba7p1628GDlw3sW5umV/Dttg6ahJ/bEkqLt88WoGSbdxmxVpu3bYru43jK4bIBplEjvleTJs2yYwZs0luKaM4jMVlxzikWkvY+Xzuys8wDleiRKyEQgCFVIQllwihc4kdbUNA+b65sZpcX4ZgMutWQjrKXIPSdlhsXNn39R2jzFkY7kEynkQIw1zrTz75pLnrrrvM73//+7KHXNf2lQDWFf7Gv3kzEkAeGBAaefCzWRdBAHnzhaDgKvU9oghXFndp2D0hgBxJgedtcWH/sf0PyzQuQk8wiYxGWf1ca49sBkKawZyD37NmzTWLFv3H9O69rundG+3A/ELNvvPIeYIhBKKsWqhxbuM2QtxmKUQmpw2XdCLTra1TzJAha9mSVmUcEAR58ZIKI773Ccb3iSZh0G0sAtaSrBC0EoomoSSDBbP25T7B5B03TjOLYDJjp89tMkblH2GxcWXfNc8Yk6yEbsUYdxxhltWHH37YTJw40fz85z8ve8h1bV8JYF3hb/ybNyMBZNZEcDYLaYuadbFcIZeSdLhkJ4xw+VrLku7jk5kcjLMLq4tchJxMHBl1rX4S9ygbglh0JNZLsOMaNlMsbbJpI5/z73/PMB9/vLrp12+wWWutbrlcp0n4thG/jhm1ea1+Pvd0z4lyG/N3MKM/vnWFFy1aYIxZaIYP3zhtN2LPlzkTAuRbejGuUSF2rpVQrHeuSLVkG7vrScgdv+lLmCah3Nu9TuIJ+duKWM0u7dfHWavykKMsk1EPAiihNUWQXNdKKJbCMOuszIl7T1y/06dPNxdffHEW6BrmGiWADTNV1exosxPANKQtaQbZiLDcUVM17vCRmoEAssHk1RSMy0yOsriF9b0IAhhGRulDsJRcG6n6zMZnCYmRjVUsSCK4HRarxXWzZ88x06fPM6uv3tP06tXPlpnjEGuRWMvyuGeln2EZtUlrpazPXZFpiTsUeZQuXdqSSuLGDr6tra+Ybbcd2Z4dnLevfC+YY1nPZcTXuWTN1SOUeNogIZTvBSEXYjGU+eS3m2kctcaCSQ5JmoRFkiOfORECWIQqgc/9OIcxigXc95o050VZZ2kDIk/2L3P60EMP2b7893//d5rmG+5cJYANN2XV6nCzEkAeDhJj5EPafGaNjRai1LNnz9DTw8hOlMUgyV3q0x/OiSKAPiTUvUceDT9pJ0gApQ9ssLioISZBq59svmFWv6TYIMY+fXqreffdT0yvXoNN9+5rt2d8S1ZpVreea/WDXHzhC2vkivXznc+486IST1a4jYkjbPsRC5brNhY8W1reNBtt1Mv06tUrV7fETY+1HSs3G3PSnOW6YcjFsp5cKyF/E8LA3LVZR8kib3vpkBcPsUC5eoQ+ySVBKRR56RDc85aK9MWo1jqH9Es8K8Qv1+JgjoRY86z46U9/ai6//HIzePBgM2DAACsFs/3225sRI0Z4vdCcf/755rrrrrMx4mPGjDG/+tWvzOabhydFERZz4oknWrLJvffcc0/zy1/+MlUIUF6MlADmRbDJr292AphE2tIsDzYOHgpYAIMbHQ8pSB2bgZCduLZ9XLc+fQtK06QhoUUTQCGjjF+sfm6mcx6rXxwWCxYsMNOmzTbGdLduYaky0fYCgFBzGymSrNO2IPRoCRauq5rVzxV19nFBh41dEh8WLnzHdOu21Gy88UaZCZuQD+6TR1rJZ437nOOSUam77MrDMHa3jJ28jISRQiGLSW7joGteQhlWiICvaolDWaS41jqH9SCAck+wFmJNGMhll11m5s+fb5Ppnn32Wfvdvv76681BBx0UuVwgjhA4pGM23HBDc+GFF5obb7zRvPXWW6GeGAgfL7G33367fXkYO3asfbbfe++9PkuykHOUABYCY/M20qwEkC+uvO1Hkba0q4KHAMklxACK5Yp7iLRLmgoaRYlKu5nJkFBxxfmQUHf8RSSlSAavEK0kqx/nCYGVWL+smyUEqbV1lpk9+z3To8cA06tX35U2XgxDy5a1SYMIOQhKsCxfjsXhY0vkk2rmpl0/Wc4vioy6Y//wwyVm9uzXzejRm1my7MqwJOFPf8RNz7VsyknXZBl3mmvcrOMwMipEzbUS0r47bkibWA6DmoScKxbVOE1C1jJ9oV1ZY3KfMoTA6yE8zRh59iXVTU8zf0nnhlkd0QCkEsg+++xjv8uTJ082ffr0iU1u2mCDDcxpp51mTjrpJHtLrsOKeOWVV5rDDz+8QzdmzJhh1ltvPTNp0iRrXeTg31tttZXhMyyQtTiUANYC5U58j2YngGGkLet0u22xEfBggvQQm5JWjLUIUWnGIaSPDUySJrIQFwggbWQN7gYb3Co8VGth9YuaQ8YxdWqr+eijVU2/fkPNWmtF12UVCRY2ayEHtMsGBxZiKcwbR5h1vcWJOmdtU66bMuUVs9lmA61FgzmLy7iVa8BJXlyEsOftR97rJckrDRkVq5+M27UOu1ZCN7lESKG4jWWduIQwSFTc+wgh7Oial3jNVTPBUGvdQTpZDwIYdk9I3NFHH2122mknL+x4NvHi/swzz9gawnLsvvvuZuTIkda17B7333+/OeSQQ+wLtXvwwoP8zF577eV137wnKQHMi2CTX68EsM1ql7fKhSwj3A8EXcvbvlj90i6zIgigxM3RVt4ybnmykoWEyqaI5I7rWpO/87tIq18U5tybYPHp0+ea1VfvZfr2pa5wWzm0sEOIFhu+m3EcjKWTWK+yLV4+os5p11vw/DlzZppevZaboUOH2I+E2AQzbl0BX+YZDNK+7OTta9j1svaLyjoWguYmmIjL3CWFgpMbSyj4cS3XyAtY2Dpxs5OFeGbVJKwHARSJnyKyvH3XBfdk3blWx3Hjxpmzzz7bbL311l7NzJw50wwdOtS8/vrrZpNNNmm/BpLH8+raa6/t0M7NN99sxo8fb+bMmdPh78gnXXHFFeawww7zum/ek5QA5kWwya9vVgLoWnSKEDmWhzxtcfCQZyPMSgayikrLcnZdz/yNt9usfeH6LEkp4npzKwPwbwhy1gzfIr+uYEySyIIFS03PnoPMOut0THoIEq0wKZWscYRZx+Er6py1fblu8eIPzAcfTDdjxoyMbErcveAo8W1hpCjPussyDjDCMsN9yyKjbnyfPEv4m+s2FreuzBnnQYzEcsjYJAYwLrnEFUtekdHdVhUm7qXDV5Q5C8ZR14A7Y6w1AZTqQNKvAw880CZwDBs2zGt4agH0gqlyJ7WpneqRGQElgMYmbrhVL7KAKVp64uLMm+mXVZ+QTUgsbvIg5qGcJE2TNOa0BFCSXtz6yuISxz3oymzUwuoXNz5I+7RpM80nn6xp+vcfYjN6sxItnzhCxJrTuo1deRdeLrp2XS11G0lz7H7OOpo6dZIZNWqjSCkil2jJnErsZJAUBcu5pemL77my9qW8XJZQB997Bc+LcxtL7KBUPRErYZjbmHaTkkvEuhjM6A4SQuaglsLT9J1nDZa4OIt6VozTkE5ct/fcc4/p16+f9+3CYgAHDhxoLXphMYDrr7++efnllzvEAI4aNcq0tLRoDKA36vlOVAKYDz9cO22aCE12uBbAPBp3wOfq2EFysrp93SnIok/IhgBR4zeElgexrzZh0vT7ZiWL1U9KXrkZt5IcwDmSdcl9+Xu9XYdghnbgjBkLzOqrr2N69Oj5eZmyfESrYxxhW8axWIpWBP7Hl3ITgizuwzJ19Nx1MHPmNDNo0BdsIHyQHELwk4hWHCkKEsK8VkI3/pDvXy0JSNR3R17ixMrHGhMLqTt+120smNEm/w4mlYTNvWuNFGsh1wumvIyWmW3sjr9eBDBIOnfYYQfz3HPPpdJRJc6PLGBkXSCDEyZMsFnAb775Zmg7e++9t3123XLLLXauIImsPYhnrQ51AdcK6U56n2YlgBLgzbRm1bgLy6rN2lZweaUhgDx8IJ48fLF6iDWGNhlnnDah77L2IYCu1Q8CKq4usVjIZhbmOqQfrlhvllJbvmOJOg+yvHDhQjNjxqzPK4msa7UDizx8S7m1SY1Ajv/PWnTZ4FZbDR29InsT39Z77y0yn3wyz4wcuWn7iXmJlm8sXRpCmKe8XBlosr4hx8wb30X3JcjXQirfGQmViEsuCY5BSKSIMguZdC2ErgW+SAx4AS2rDGJUP4P3ZPzbbLONjedL+7J0wQUXmGuuucYK+hM/KDqAra2tZvjw4eaRRx4xO+64o+0KniOSTR588EFLtiGEEMgiyor6zokSQF+k9LxQBJQAthFAyRL0WSaulYsHvOtqKkIuhT74Wu7E6kefwtzY/L0ImZs4WZo4q59PrB8PT8m0jYqnErFen/lJe467YbN54TqHCKIduOqqPax2YJkxTWEWHJcApSnllnbsceczFy0tr5htthluvx9lEC2fWLqouQ8SLeYoDXEsEitpK0lyxr1nUmKNWAndbGP5PslvaS/MbcxLIffg+eTi7L6QSQyhEMK8+JEsxjNRqtCUgXGwzeA9Geu2225rCWDe8dSi/3nuoQQwD3p6bdO6gF0LoK/EiRtfx6YkVi53Gfm2lbT0kix3svlBzMJqCbsbUhEEMCor2dfqR3/ElQmxEKIV9oCOcx1K5QZxnybhmPQ5fQFD+hHcuNrKos0yc+Z88Ll2YJ/SN5S2CiOfWItu0HVI7GDXrm3B/1niCJOwCPt8xoy3zXrrrW0Td0RGqEyNt6S5F1IklsiwecsyziKuySI5E7wv43czrSXpI2gdl8gdiSOUJBz5O2tEyuCFxSMHCaGbXJJHkxAyVlbiTdQcBe+pBLCI1dwYbdTQIdIYgKTtZbNaAHlgsqFx+NTdDYuvC8M6j1yK216c5U4STjgfEhoX78TDMChOnXaNcH6QAOa1+qV1zYiFUIg7/xeXlltZwfeNX9zmEC0sJHEJA1iI0Q5curSr6d9/qFlzzbWyQJh4TRupJ6N2me2PzGsRcYSJN484Yd68OWbZsnlm4403rPnG7r7EyLyz9oXsiCyPZNb6zn1WLKKuY954iShKcsa9jxBilxTyN9GidK2ErtsYvHi+yXkSfhGXbRyVXBIkhFE40y/csbUkgGH3hIh/9atfNa+99lrRU1259tQCWLkpaawOKQFskzgRMhX2Rg754QEfjK8Lm+m02bJxm0qQuMlGQ3+wVvlUWRACmFfnUGRpunfv3kFcOi7Wj7H5Wv3SfmvCLCWuBIkINYdtVpK9yj19y5Qxjrlz55mWlnlmjTX6mL59BxTq5koj6pwmjjAtrnK+xB8uWbLYLFgwxeyww6i6J1aI1U8syGLFEktXsHJHLQhhLSRngnMY9jIkSVXiehXtT6y1QiLFOkh7QiLjYgGDhJD/C4F0XceCs5Axngm1wF7GwTPXvSfhG4ceeqgVde7shxLAzj7DJY9PCWCbdAEPLx4i7iGWNvnMJw7MJ1nCZ0qDljtJCuHBmmT1C7aPOHURBFAU98FFsoxlcxGrjFga6IPEjLFZuIkpPuNPe45LBlz3vus6Y7PDOuBj9Yu6PxigHbhw4cemd+/BpkePddJ2tcP5RYk6h7n03IzTthgx6s4md1fCC/jNS0ZLyxtm003755YSSr5z9BmsOb5bYWspjZUsTx/ca7mnrO8kC3JR94x7WZQ1z/oWopdUyo7z5Ie2fTQJJYlHklnkOolB5P61JIDiiXDvOX36dFvS7dFHHy0b+rq3rwSw7lPQ2B1oVgLIg4+HFUcwwcG1tMXF14XNfFE1fGkb4kZGmVjffK1+wX7lFboGD5G6waIgLh6X/LnEryyrX5pvWhQpoA3RR8yTWMLcTJ060yxf/kXTrx/agV9I0z17blatQZ8bidu4baOmtvGn9rIuXbqaLl2kxFhHPcK2+MNPzccft1WOIfkEwjhv3iyz9tqfmPXXX9fn1oWewzzK+ue7yPrzsS4lWcniLMRJA3BdvlWRnHGTT3hOgJFbtURCJtwXorZM8zYSmFWT0H3xkDZWfvFYxWvOknAP+5x78swlRlWOV155xZZuu/vuu7M02VDXKAFsqOmqXmeVAHaMb8tjaWN2iyjhJqsEkiEPU95ws2bW5RG6ZuPAxSJuNgSlq2L18/k2CdEXlxgYivUibFNME5tIO7NmzTYzZy4y3bv3M7179/fa6Got6gxOSXGEWAdJPgETN/6Qaz/8cIlZtGiK2XrrkV7j85kXn3PSZNQmtedjIfaRHpKkIdZJ2VbtpDHJ52KJhLRHhYWI5c4lhW7IhLh0hRC62cZt66dNLtZ1GQe/K0LG6IP7HWt78ejS/lOkJqG8RLnem4kTJ5pbb73V3HDDDb4QNux5SgAbduqq0XElgMZaGCAIPKSkbFnWKgJ5S7ixKmTjoy95S8rRXhYCKMRJSjtheeHfuJJdGQmxxlTB6hf8RgmO/A6z1LiboiQXSCxVmsQSCPLUqTPM4sXG9O07xHTr1j3yyy04cR/mNg3hLPKJ4cYRtpGCNguhJNZIxrEx+IypCvKK2XLL9TtYWorsT7CtIjJq4/oXZSEWouLOvxAgH/HrMjEJti2u+qDeoE8fgoRYrHeu21iSP9zkkji3sfTHJWOCswhUy32K0iSU2Fn3nn/5y1/M3/72N6vJ19kPJYCdfYZLHl+zEkBgFZ0scW/yBu2bFBA1LVlLuLmbDP1hA+LhhmvDJ/YwbpmkrXTiWv0k1g8rAxnOEmtTr1g/n6+DG58l+o4+bkOuC0pwhFlJoqRr5s+fb6ZNm2NWW62n6ddvUIekiXqLOofhFrREsuELKZbfMv65c2eaAQNWM0OHDinVCui6V7Gw5V37PutFvnvB+RcLMWRFSBDPh1r1Ka7vRVpHZfxBK6GMP1i1xbUSiqXQJdTigo6qWiLk011rss5WvIAQr5ocsMr31a01zlhw/b7xxhvmsssu853+hj1PCWDDTl01Ot7MBJDYEde9+aUvfcnroRM3c1kJoEu6pJQc8iNuJYGsK8a3OknQ6ufG+vGghQByjis9IdUG4nT9svY7y3XgKHGYeQmEG9/E+MUNHlexBDxaWmaaefOWmJ49B5mePXtb8uCK8mZ15WfBI+oaH0ukG0dIHOmSJS1mxIiNS6vY4moy1lJKJAojN/5Q4uXc+DZZBz5Epci5K0OQO6x/adzGklwlmAip5Hec21jOcy2EriahaykMwxksRH5HxnD99dfbSh5nn312kbBXsi0lgJWclsbpVLMSQB7uWGx4YOGKg9wQ35b3SFPCLWj1EwukvDn7ErekPvu0E6ZzGIz1k/7ywGWc8qAWrTERaa71hij9cmOhxAqRhE2az9O4DbG64hb+8MMu5ktf6mtLyklSRZp7Fn2uKzSdprwcZGDKlJfM6NFtBFCyTuWFIGglStNvN06z3hm10m+X/EnyCZ9JbJtYiosYvy9Wbp+KeDH0va+LSdj4hRyzniSsIcptLJ4D+R1lJZTr5X6MXYikuOlpQ55D4CEHrl/kqijT1tkPJYCdfYZLHl+zEkBgJe6PhwgPGTZsCGBe8sLGwNunD5lMEpcuqqxcXDuyqQTrCLvkL5jhKxY2NkZxVcuGmDexIstyL9Lql+b+4goT66BYMcRqweY0e/Ycs3Dhh6Zbt/6mb9+BdYv5E5IsQtNZ6rW2tk4xQ4eS9dzPwpQ0fveFIOp7JXPHbzbxOFHzNHOT51xf96ob3xZc/0FCnPe54tunPONOe61oIIKDvBSkdRsLeQwrZef2J0gI+b9g6sbT8u8f/ehHZuONNzbjxo1LO6SGO18JYMNNWbU63MwEkA1aHixFlEsTCwFksmfPnpETHUW6ghcURQCjqpMIAQUDqSMctPoJ+ZO4OkmWicqADEusyFOxI+nb4rrDIDX1SqqQfoq7F5eYbG5gNnv2PPPBB8tNv37rmh49enrp8SWNPc3nHYWm18h0/4UL3zGrrLLIDB++ceSto9yGQT1Gsd7wMsFnZVhs0+Aj5+Z1r8r4xULKb9840qj+5u1TFhySronqU1gcLW35lrKTFwtfTUIJreC6c845xyAB079/f7PZZpuZ008/3fTt2zdpKJGf33XXXebcc881M2bMMOutt56ZMGGC2X///SPPv/DCC83FF19s48jBgXnfe++9zS233JK5D0kXKgFMQkg/j0VACeBy+2UtolwaQLMBxJHJMNIVNUFFlZULthMkoDywhKwIIY6y+qWNq4tKrAgjBGm+qhLDJlUhyqxP69svSWBwa+ZKHCH9nDdvnpk2bbZZZZW1zYABlJRbs/S6vkUJTYMBpHbmzFfNttuO9LbUueN3Bbpdt6FPRRvfOch6Hv2EqGfJqI27ZzCONC7bNthOvV2+YeNK2yd3/ElhA5JQEqZJyHoRUui+5EEAOfj+T5s2zTz11FPmjjvusKStpaXFbLjhhmaHHXaw8YCbbLKJ9/J47rnnzE477WT+8Ic/WBJ33333mSOOOMK2P3r06NB2IICPP/64eeKJJ7zvk/dEJYB5EWzy65UALrcroIhqGfL2GkYmZYPB4uErLl1UWTm3naxWPwhbERY2lxCI2yythaSWFUZ8Hw9xlSrcNuh7oeM+GAAAIABJREFUS8sMM3Pmu+aLX+xn1lmnzVLcUSeto0Czbx+C5zHXbJDgWxTJmj79DTNsWG/Tq1evTN0SnGTMLiHKE0eYqTOfX1RL92qc21heiiRJiGcF5+dVJsiDjXut667P2ic3bEAIobhzgy+Fcq4QQ37LM5bfEEGpd+wKsR977LHmBz/4gRk2bJh59tlnzdNPP22OO+44a8XzPY455hgbFvTHP/6x/ZIDDjjArvvf/va3SgB9gSz5vOQ88ZI70OjNNzMBFALCHOatliHrQKyJbuk1KSnHOWnKuBVVVo52eHjygJVYvzKtfmm+E0ELSVymbdDCRtJM3tiqNH0NO9e1HKWpVIF7f+rUVvPhh6uYPn0GmzXWWLM9wYA2RYPNDXj37WuZkjPz588xa6211Gy00fq+3WnftMN09KIIQZlhA27Hy9Yb9AEpzG3OdaxtLFv1yjZ2++6+4Mizw2dsPudEWYldQixVewQruYb5C9Ylpg7wFVdcYd3AWQ+sfGPHjjVnnHFGexPIykAIn3/++UgCSAUS8OEHy+Mll1ySinim7a9aANMipud3QEAJ4DKLRxax5KilJNZENjHe4nEtZSnjJsTNLXOUZfniAuZNmQ0lTaxfUVa/NH0WC4mrx8ffRIuN31mtD2n64XOuBMGDK/ObVt6FceEWnj59rll99V42SQTM29zmy8zy5ZRx4/dyJwOyq+natQv0IDSOTwgpv4uw2AZxWLr0IzNv3ptmu+229CbfbpKOT+m0MuLoguMQnMRdXwVtP9e9KiXvXLd5sLZvLV5+6JMQ9zQvOD7fn6hz4p4BQgpl/tpKFq5uvyP8DWUHiNeTTz5phg8fvtItjj76aFshREIQgifg9v3rX/9qNtpoIzN+/Hjzne98p/2Uq6++2hLLt956K7TrkydPttnHQ4YMMXPmzLHXY4GcNGmSfWaVcSgBLAPVJmqzmQmg+3BNK5Yct0SwJkIIJMs4jdXPbTdvXWHX7QxxwipZVqxfWV8ZifVjoxahYiGEkmUq1rKy+hBGHqTiSxGyJbSFduA773xktQPXWaeje9W1kgo5Ere5ayGENAbr+JaBydSpr5oRI4bYOtVJh69rPK6dJAtRWguZS9yroDfI2OPc0EFC5L4UBN2mSfOR5nOxuDOHPsQ9Tdtpz3WtpDwL6BvfAV7cEX7efvvt7cvSKaecYpNBDjnkkNAXMl6qeS5HHRBKSFwWC2CwTYgzz9wHHnjA7LrrrmmH7HW+EkAvmPSkmLettiKPTXi4BNBHK88HInEBcy4Pzawl5bg+T11hxibCzTzUeIBiSZQkD9oPy/Cth9UvCldXGNi1sDEG10IYlJ5gDGVlA4OrxGYVLVvCi8O0aTPNJ5+safr3H2K+8IU1QqFxBZpFJ01OZOzMN6XcPAop+Czplc6ZPbvV9O79ma0KEvNcsfGH/BRtOYqyEEWVcZM+cp3EjxZB3DOBF3KRkOQ02dBpsq2z9LOqJJnvHmMX3b/XX3/d/PCHPzT/+Mc/bHjLqFGjzNe//nVrBYQU+shxheFDDCB7ApnAchx44IFW3SEqBjCMAFJcgASS3XbbLcs0JF6jBDARIj0hDgG1ALbVQC1CcoU3PnHbQv7Y+PIcWeoKu1Y/STahHfqGJVICrsV95Lrn0mb45hlbwppsz8j0IQ9xm6FYSPIWoHfJQ5rycmkxYuNFO7C1daHp1q2v6d27fyyZFUIq5GfZsuXWdSxxhCtiCbsWRggXL/7AVgUZNWpE6PBcklwrd33SSwHzz/eAvlVpnct3XPqU1a1bpJUUksxzrMx1nuV7QTIb69mNQeQlGbkXPDi4XF999VWb9MHPmDFjzG233Zb2VvZ8soB33nlnmwW85557WiseWcC4lqOygO+8806zyy672EQRQjvoD1nDSNO4tYozdSjiIiWARaLZhG01MwFk0+Bhx5FHckXcNxJPJFYPNzMty9JKW1ZOkk3YDLD2STwZD0nenLEMueK89JfPGsHqlwY/dzMMyzQWC6HvZlsPkswGPH16q3nvvWWmT58htpKIewTr+HbtSkJM2xl89tlnyw1kcNmyTy3pyZtY0vHen5kpU142o0cPWym2qQpJFW0YrKjrLHqf/N0NGxDx4TRrq6hzi8ioTXqJCpJi96XALeco7cjLo9TWrUJcJH2TNRW02ra2tpojjzzS7LvvvubMM89c6UWJec8zBhI+sC4iJ0MG8aWXXmr222+/dthHjBhhSSH35qAfxPxBVLE8fvWrX7W6gBtssEFRy2aldpQAlgZtczSsBLCNAGaRXJEAaTZrNhbe8rA0FGFNdB98xJEkPeyF5LkSM+IqEzehK7sg7bnlm+q54t0A+KLdc3msI/UUmqbfCxYssNqBq67aw/TrN9huaBIXyXz5Jnq0EaJsiSVh62LmzGlm0KAvmAEDBnxOOj+zLxlSlzXPxlvUOnQTGCSb1iVFQojcODrfl4I8fczi8s1zP7k2zErKeOWFSGLreI6lTWgqon/BNoSQBhN1+DuWuFNPPdVceeWVZvfdd/dOSCqjn/VsUwlgPdHvBPdWAthGANNKrvAwhTRKgLRk7dFWHmuiu6R86gqHScwI8RPdrGCsHxu1uAbdgHKxCpQZQxf2lZF4Iz6rhcvQjSEL1nR1pSckBrMedVeD66C1dZaZPft96xb+4he7W/dcntrCWAnFOhidWLJqpNv43XcXmk8/nW9GjtzUfgdYU7z8RFWIqfWjMinzOCqO0K1rXXRykfuS4xPaUDZmYiXlOSOeEO4ZrNpRC1IcHKubFCMv1pzD36n1i3UO9y5Cz818KAFs5tkvYOzNTADFQgCMvhm3rtUPK0dYFiEEUORK8kxRXF1hydCDpIRZ/dLE+slGIGRIylcFs2yL3gjKtPqlwd21lEpdX/7GwRzzUzQZSNM/2fiQuJg6dYb57LNuZuDA9c2aaxYnLdExsaTNdczRpUtX06XLqp+Pf0ViCTi1tEwyW2yxkd2Uq0BoBNOsmcdJcYSyBrJ8D8p2+aZdT5zvfv8kocl1nYOj6zZ242mz3M/3migLKS/cJ554on35ueaaa0qLq/PtZxXOUwJYhVlo4D4oAfw/O3s+GbdSRYPfvJVGlR/L4k6OsoyF1RXOYvVLE+sX3ARcQujGDmXZCGWcZWbTZv06ujFQuKEh8a7bXKxDYfFTWe/pc53rhqZf8+bNNy0t88waa/QxffsOKMVdtyKOcFm769glA6ussqqZMuU1s+66bbpnkIN6H0Vb2KK+B64en08cYZkiylkxZ2x4PeRZFuby5ZwgBsGM+zykONh312UffKGYMmWKGTdunP05+eSTS8vyz4pnva5TAlgv5DvJfZUAthHAuIxb2VikikaSmyutOzlqKfFwhgASUCz6fWHC0hLjxu+iavi6fZL2XekVt3xbmqSKYFxWUSXK8n4dk0Sda5FpHLYhuvVp3con/J0kkYULPza9ew82PXqskxeC2OvdxJJPP/3EEoeFC+eb1VdfbDbddFi727As+Z2kwcXp6CVd6/u5fA/kpcBNrgmLI4wjNL73LOM8eZENZtT63KsoUhy21iWG1NUc5H5//vOfrbYfQsxf+9rXfLrZNOcoAWyaqS5noM1MAIX4yW821WDChaunJ1U0kmbC152c1A6bGkKnEEB5aHONCEuL6zIu1g/S4JsokNQf+Ty4EcaVb3PbdDfpojX0fPsetvFkEXUu20rqq8NG1ZmpU2ea5cu/aPr1QzvwC1mhSLyuY+bxGmbZsk9Ma+srZvTo4e36krUq4eZ21rWQsq7yWKYTQXBOCIYOBONp5f9ZheDT9MXnXPpbtA5iHCn2re0s8dTMmxtSA36XX365eeyxx8ztt99uLc16dERACaCuiFwINDsBRGJA3tSx3CHcySHuQMicG2PnA7aPO9mnHfqAODCbOiTFLSdXttXPp38uIZT4qaikCslcrZq2WFGizmFWUvBJKzviujF9s6HZKGfNmm1mzlxkunfvZ7UDiyZBMn+061ptp0+fbDbddID93iRZh9JYin3Wn+uyr3eijvQXnHim8H2VQzJti9Kk9MEm7EUnzMKWpa24a5JIcRADIaTyoirrFs/Ht7/9bTNw4EDzi1/8otQXm6IxqGV7SgBriXYnvJcSwDYC6GbchsXYpZn6LALOYe3TJyRleJOut9UvzfhlE5CECrEQYh2ShAop7p6m3aLOdS0hZRHSJHdhWPmyvBZSYk9JElm82Ji+fYeYbt2654YMqx8uX9Y0WK222uodMoPnzp1pevT41Ky//ror3SuOFLvWoSxktRYu37Tghbl8acMNnZB42rRxhGn74p7va03Oc4+4a6PCJ5h3PuNFh7Ul4QPU1D322GNtrB+/s6yPssZStXaVAFZtRhqsP0oA2wggD2lK/2DdwILnWtvSTmlaAeeot3WpWUltSoiTbKgSiF31ah5BDT2JnQrLLqwVIayHqDPz65JiwYG/SQUPzmHdMM953Ji0SbbwtGlzzGqr9TT9+g3KnKDRZmH72FYW4XsRlijw4YdLzLvvTjFjxoxM3KjjMEijxVfFShWMTZIq4urmJr0YCDEsivRUESsh73wPpL73XnvtZYng+uuvb5544gnz+9//vrT6uWmf51U+XwlglWenAfrW7ARQqgRg4ZBSQ3ljdqQknLiT0ywDsUSyAVDNA1LKb96Oax3rl6bf7rk+JCvoMhZSG5SeydqHKIsqbrAqVD6BCIglkrXHvzmKyjRmDba0zDTz5i0xPXsOMj179k4FJZszLyDUFG5z+YZfTr+nTn3FbLXVBqllOeLchS4hFMuQ6/KFZFVBbFosfJA/yExSgljYy17QQuZ+F7JmnFcVK7FGupqR9PW1114zv/nNb8yLL75ovR7Tp083VNrYcccdbQWOrDV9Uy36BjxZCWADTlqVutzsBFCIn8TsQNryZjL6CDiHbQRsIsFYP5JAeDMOyi34kKx6rLOslTPcTRALYRGboIyfDQbiJxUFouR7ao1XUK+O+7tW0qDkhlhJ01iHiKWaOrXVfPzx6qZ//6FmjTXWjB1mMNGj7Z7xyMya1WL69+9qBg0amBvCsHUgGefiPq2FWLjPQMJcvmnmJuoecRnnPjJMVXSPM1axRgZjW6l2c/TRR5utttrK/OhHP7LEfu7cuWbixIn257LLLqsM2fdZF7U8RwlgLdHuhPdqdgLIw4cHOZsK1rYiCGCcgHOUZQrrI8RTyjCJdUSqjbiWIXm7z+suLHI5S5IAYxcNrzztFyW7klUUOE/fk651Ez3iBJSjkiqC1rEk0gGWc+bMNTNmzDdrrol24MDQlxzOE2tkmszx999/1/znP7PNllsOTxp66s+lT1g0RQrJlSASF3oSBqlvnHCBr8u3iPu6sZQST0i7YRU76lVmLm6ccdbIf/3rXzbZg5q7hxxySGIYQRF4dqY2lAB2ptmsw1ianQCysbDJsIEgqYEMTN46mEH9vqhplU2ETRcCypuxbHKiMSYbGw92t2STm1lY69JtwfGI1S+LC8x3yaclQ+6mU6UqFa4AdlpLVhgRSEOGsIKiHfjuu59Y7cC115aM97ZEhY8//o+1tKQtMceYpk+fZLbeerNCszXFckvfcK26cbCupTSKDPmurbTn1fulIiqOUJ4dZUg/pcVIzo+yRjKGW265xVx11VX29xZbbJH1FpHXXXTRRebGG2+09bSx+o8ZM8ZaGLfccsvIa/C4UG3koYcesi9Je+65py09l1SPvfDOezaoBNATKD0tHIFmJ4DuGzWSKyRc5K1qwENP9PuiLBPiJg6z+vnE+rlitG6lDomhcwWhy1r7QdeqK1Rc1j2l3TgyBKbgK7pieQl9EWNx3YVFZR4HiYCvHiMb4rRps40x3U3fvoPNZ59R+m2ZJW9Z1/6MGf82661He32LgMv2h5CIoDZcsPG4xBJfHTrfDpfl8vW9f9R5blIF88f/w0IoavFMcPsYZY3kpfvMM880ra2t5qabbjI9e/bMC0Ho9W+//bZdj5A3+oKczE9+8hMzZ86cSEsjhI9nB7qDzPfYsWOtV+bee+8tpY95G1UCmBfBJr9eCeCndrPhgLT5ij3HLRseHJDJMHeyr9UvTYZvnHWsLO2xeltBwohAmxXr4/b55Jy0OnxlPA7ceM24DNG8944jQ8EsW7CaPr3FTJs233zpS4PNoEGDc8W+Llz4junS5V1bFSTP4ZIsXx1E935cL98HebkrIp7UtUaWOYdpsQtLqqCNvHGEafsRPF+UEILWd2L7jjzySLPLLruY888/P7e3xbefPBdIMjn99NNtlnyvXr1WunTGjBlmvfXWM5MmTbIJKBz8m9hEPhs8eLDv7Wp2nhLAmkHdOW/U7ARQLGnMLgHzRQjKCgEMupMlOziL1S+NNEiUdSxt7FjYim8E1ypYibyEaBGKSz0sbqrMb3Yt3ONR/RdC6FqLXQkh/k7/Zs6cZ5Yu7WK1A7/4xW6Z4GBtz5z5qtluuy0yb+plEeW8ZCiKZGUCqsCLhGT5EGX3meA+84r+PsjzgXUVJMrPPPOM1fYjq3ffffetSbzfww8/bA4//HD7bOe5e+qpp9rqImHH/fffb+MQsTy7ByT2rrvuMkjVVO1QAli1GWmw/igBpNj9p3bWSAKRh2neaXTdyeKikSzUqFi/NFa/NP1Lih3zrdAATsSR0U8hWWn6Uca5jE1IVpxrNY11rIh+ukRZ4tdqnagQNg6x3NI/kRaiXwsWLDSzZy80a67ZN7N2YEvLG2bYsD6ZXHq1tCgnfR+C2ozI4fiQrCLWjU8bYbGRPte555ThOpfnHPdxS7rx9+uuu87ccMMN5rbbbjObbLJJ2u7mPh/vDvfHinfggQeGtnfzzTeb8ePHWxexe/Tv399cccUV5rDDDsvdj6IbUAJYNKJN1p4SwBUEEP0pCaDOuwyEAPLwI5MXkiVB//LwTYr1S2P1S9PfMGuAm0wQJIRVtfrlkcIJWseKFKd249eqQpRZH2E1c13rGJaPlpZWs2jRx6Z376GmV6++pkuXVc0qq/CTvMLmzZttunf/2GywwXrJJ39+BvMglXPqlawTjKV0E7D4rF79CgNRnidJsZHeE+DMQ5TrXGIp42SIouL9eGH8/ve/bzUlf/e735m11147bdcKO5/xoSf45JNPmpEjR67UrloAC4O6Zg15PJZq1peGvFGzE0AeqGyMHEuWLGkXc807mRBAHpxsJhA/rFNhGb5lWf3S9D/OPVTFhIogmUkjWRKHC2vBdRm7sWNuLGVUG3nj19LMWZpzxWIkbrk4AWXOJUnk3/9uNf/3f6uZ3r0HWu1ABKG7du1i13QUIVy69CPzzjtvmW222cLLvVdVvTohM3w3Wf9CCMUy6LMW0syP77m1rurh4zoHI/ol1ZNcjc2WlhYzbtw4c9BBB5kf/OAHuWJMfTGKO495JSyHxJMDDjhgpVOJ86MSycsvv9whBnDUqFGGsWgMYBGzUGwbSgBz4qkEcAUBxFInb9Z5YCU2R8gkWcVsIvW2+qUZjxBCHuqSIMP1VUiocMlMEfGaPoRQYqbikglcMkO/smbTppknn3N9s2mDbXHd7NlzzIwZC6x2IJVEEIletqwtXKJLl67WOtgmUA4pbGthypRXzBZbrGuz6eOOMGukz3jKPMcNJwi6fOXlILgWfKxjefvsWknLXvNxfY16UeQaXipwnfbr188m0v3973+3pI/M21133dXrhSAvTsHruTcxfWQCv/POO+acc86xsXyvv/667WfYsffee1tCizQN4yV+kBf4e+65p+juFdKeuoALgbF5G1ECuIIA4gLjS88DLMvhxvpBJLFM8SMPTn67Ugx5XJhZ+ud7jZAGzpdYnqB1jLEUHUCe1L9axomF9cW1iLjVSphTMAOPtKXAksac9fOirJF8J9AOfO+9ZaZPnyGmW7e122VjPv10ma0TzL3EOjZv3izTr18XM3TokNCuVzU20o2r88ny9bGO8eKXN+6zqlZS1ru8MEP+6CfWvr/85S9m4403tpqqZPliaStKGijtdwEy9/zzz9uXcVzP22yzjTnvvPPM6NGjbVPI0AwfPtw88sgjtuQcB7GCJ510knnwwQft3NEGOoD1dF3HjVsJYNpVoed3QKDZCaBslIBCvAoPNmrvpj2w+kmsHwSSf/NglIcj7Qn5cy0NVarm4Voa4oLe3QBykdoQEuBaCfNufjIHVY5BhCCxZtyEimA946Jw8F2TRWfTilsY7cBVV+1h+vUb3F6aC6tgm44gP5+a99571yxZMsNstdVwSwpdd2mVyYyP5mAc/mHWsTQi3WFtV7GqB/2MckWTaUuWLTGdyKw8++yzZvLkyWbYsGHmD3/4Qzvx8l3Hel4yAkoAkzHSM2IQUAL4mYG8ceDy5OGW5L5y4XStfm6sHwklHMTEtMVNtfnIqmz1gwCzkaV1YbqEUFxkRRHCqiZUhFkjXRIgxDguuaaMB1OZrlXabm2dZebM+cD06DHA9OrVZyULF+t76tSXzciR69u1L5ZSiX+VajFVEecWvIrO8pW14ErwuN8JIcdhLweu9bZKCShxrmhEl4866ihz7LHHmu9+97vt8X5YAqnni4WNBAw9ikVACWCxeDZda81OAJlw3ljlN//2MffLQxrLAVYOrH5urB/tSJk5/i4bHhtO1ax+9BPyW2SFiqC71Hfzc61+kh1a9Oac50vuboJJm3MZVqGovtfStYpc0tSprWbp0q6mf/+hZs011+rQrdbWqWbIkDUN8hniWmXd8z0RTCA+9bSUpnX55lkzXCsvSW4JO/4mNb7FUgouYlX2cUXn7Zfv9fLiym+3hCFjQGsPd++1115rvvKVr/g2qecVgIASwAJAbOYmlACuIIAirJpU91GkGLBuJGX4SpYxZIaHJYc89MUKwP/rcdQqcSFq83NdhCIxAQ5sklmtkWXi6PYrbR1fIQG04ZIA/p43ljIYs1kL6xprZ+7ceaalZZ5ZY40+pm/fAe0vOe++u9AsX/6O2XTTjULLubEexELqWkqLECr3mf+siTE+bac5JyyxhOshgVKWr4g4wjR9CjtX4v1YV6x7sVry98suu8zKqlA6beDAgXlvFXr9WWedZWvzkolLeM7XvvY1W9ItLiv36KOPtokcEoNNn6nxS38706EEsDPNZh3GogTQWEudxOURu0cJt7DDtfphxZMECSE4Ybp+Qeta0E0Yl1la1nKQsUKyirL6pe1rlOQKGx6koGpWUh+x6bQY5I2lrMI8YjkmSWThQrQDB5sePdYxn3zyqXnppf81Xbr8x2yxxRZm0KBBsckQYZZSIcZCCt0wirQ4u+enqZ6R5z5pr5V+iQanvCiIpdR9WaxlTGkUXshcHXfccWaDDTYwV155pX2OlHWQvYuUDNp9WEdPOOEEG1v4r3/9K/KWEEAwvPHGG8vqViXaVQJYiWlo3E4oAVxBACEexO6Fxaq4Vj/cvfLAk82L38EMXx5WXCeVIMJWSVRmadAaUtQKq2oMolQZoX8SLxZ0j9XDUlpLvNJYSl0XZtz6KmrdJLVDrNfUqTPNsmVrmT//+e/muut+ZZYsWWyWLVtksOCceeb4pCbaP89LjKNe3njhYZ1VAS/po7jupUqQq9EYR4xd63kZhDCuX6+++qqN9aOuLpm/Zdw/brGg00cmL2suylujBND769bQJ6oOYM7pUwK4ggDyxkgmW8+ePTtsRlLDN6vVL80DsixC6FqLqmRdA2g3cUFEnaN014JxYzmXf+zl9azjS8eYM3GXiqtULMbyO4sruizM+J7cc8+95nvfO9984QtXmUWLNjfLl79vVlttJ/PnP99ntttuu0y3dglhMMkoqMMXdoOquHyDfZMQDP7ulk6LAimJGMcllqQB3g0NkdhmWY/o6OF+vf76662sSj0O7n/11VebqVOnxloA77vvPhuWgEcHLcKLL77Y9O7dux5dLu2eagEsDdrmaFgJYBsB4aHHDzpQWAAhbXmsfkUFcBdBCGtpxUrzrXETBJIEbovAwbdvtUyo8O2TbMC4XCFabGxCCOodUyqhEfTtZz/7mfn5z2eZzz4716yyysfm009Hma5djzKnntrXXHDBBWmGG3luHDEOWs6r6vKVlwspPZnmJdG1HrrfC4hu3pCSKOkZ+kuix2uvvWZuvfVW06dPn0LmMm0jjz32mNl///3N3XffbXbbbbfIy3EPE3qABiFE8fjjj7d6gGQkd6ZDCWBnms06jEUJ4AoCyMZCbAtuBXkQ1sLql2baXYuQK0Yc5TIOs66luV9Z5+YVdY4ihK5FKIvLuKqyM65VxrX6lYWD77y7Lxf0i0zQ88673yxd+neUNY0xXzRrrrmTueCC/2cFdss6wnCQexGuQVKFG6JRVj+S2uX7K9ntSS89SW2FfR5lOQ9qMgYJp0vig9nt8+fPN7hUsfhdeumldatygzjzN7/5TXPDDTeYffbZJxU8JJBQ5u2tt94yG220Uaprq3yyEsAqz04D9E0JoGnPSBQCCJmCCKSN9SvK6pdm2UQRQh74simWsdGk6aN7rmtdS5JRSXOPoKtUxJl9CaG7AVZJdgYMxIrlk7AThkNZkithJH7hwoVmiy22MYsX72GWLdvXdOlyv+nW7SEzadI/a+Z+c6tUyHeZv9U7oSKKxKdZ52nPlfXg6hEGtSn5P9ZbUTVwyxi+8MIL5jvf+Y613h588ME1j/eT8ZLRywvEnXfead25aQ+p8/vGG29YYerOcigB7CwzWadxKAFsI4D88GZO4gZWv6Cun0+GbxY3TtHT7hIsabveLkLpRy2ta1EbX5j2XNCKVZU6vkUkesThkDWz1LVihZF4XG4XXfQj88ILr5jRo0eYc889o2ZWlyiy7CZUhIl0Sym7sr7DVanqEZVYwneUF4x///vfZsMNN7SJMjfddJP59a9/bV2+I0aMKPpR5d0epdgo4fbAAw+0l2yLu5jnONZCXMRoV+INAAAgAElEQVRouk6fPt1mDpM08txzz3nftxFOVALYCLNU4T4qAWzTAUTcVuIAqQQiJdz4Gw/NqAzfelj9opZTMKZOMgqF4Pq4jMtYqi5hqJd1LYoIQY6rVseXOSgrcSGMAKSpVlIPK5bPmpQXn7Bs2rDrBYdgpY68mozBe8W5Vn3GVeY5UtJNXorAAo09qnog78L/SZzYfffd61rFg+8ozzKeHRzyPP7Tn/7UTgh5ZhN+cOihh1oNUfqMVAzPdhI/9thjD2vFrFdd4rLmUQlgWcg2SbtKAI0lf+L+IAtYYqwaxerHUvWNqUsbQ5j3a1BVUWchMmF1fLNaxvJiJZubaEfWgiwHiRDriCOMCJVZZi4PdkWQZUmocQWq+VuUWLlPf10LbtVeFKPiEGfNmmUFkyFKWASfeuopaxXEAgjhIrFCj+ogoASwOnPRkD1RAtgxBhAyyObHG6erwi9EBuJQtYe5ZIZmianLGzsXZ40sQzy5iC+ZaA5i+XLFvN0KHRIzFowhLMtFyLiq4Ip2iZCQIbG48FsSKrIk2BQxd8E2xIrlEx+Z5v6Cg2shdDNshSBH4VAEKU3TX99zGZeUmiPMxa0aA9n73ve+Z2Ve9tprr/Z4v3nz5lkiuO+++9YtAcR3fM12nhLAZpvxgserBLDN3SZSMEKm5O1f5Db4vOhNJu9UukSGmJ0iSoAVQQirLDsjlo8kspzXVZp2bqtuXZPvA9+VvJaxtNiEne/GukLiXQHlItoPayMpw1aqeFRVekZIKaSV54WQV8aFrt4f/vAHc9ttt3WqJImy1kJV2lUCWJWZaNB+KAE05sUXX7TSL7g9xOrHQ5GgYUgfmw2Haw0qqjRVlmXjbn5JRCZL++41aQlhVWVnXFd0FvHkOFdpnnJl7lxKhYoyrYxp1kOYdS1oGeMlxH1ZkniyMseQVkA5zZjTnBvU4GONycFzg58q1PKlTzKXwbACrIGnnHKKtT5fd911ttZuGUeWer4Q6VNPPdXccccdNhOe+ESSUuJqAJfR9yq3qQSwyrPTAH1TAmhs8DDK9pSBo1rBV77yFVt4/PLLLzePP/642Xzzze0m57oIXSuIEIAyNz1ZSmVY/dIs0zhCWFXZmTJc0Wli56LwrWVWdNo5Fku4j3VNLGPBaiVlVG0py+WbBp8o6yB1xDmC0jO1DCMI9i3OUjpt2jRbyo3ECYhWmW79LPV8iUV8+umnbUYv1Tz4/yuvvGJf2PVoQ0AJoK6EXAgoAWyDjwclSvG33367ufDCCw0P8zFjxthsuK9+9avmv/7rv0yvXr3a69QG3UFlE0LaF/dlLZIDfBeV2y+5ho3EV3/P9z5ZzqulKzoqdi4smYJzhZRWaS7BuIjYtTKqttTD5eu75qKqeoSFEQhBLLuWL/eJytimX7zYnnHGGQaJlV122aXm+n5J9Xx51lGSk+cx8YgcaEwOGDDA/O1vf/OSg/Gdv0Y+TwlgI89eBfquBHDFJOAC+f73v2+OOeYYq3iPReOJJ54wf//7382TTz5p/7/DDjtYQoiVkLdSrH7u5u/WKi1KUkI2ZXqaxX1Z1jILc0VzL5Gdod9pBZmL6qtvVnRR9wuzvAQtY/KSIOvFx7pWVv/C2k0jOJ2mX2Gu0jTi1FWWnklT1SPqJSFPpnHUPLjrn3Um3gmwvOKKK2xGL/F+6667bpqpLOzcpHq+kyZNMqNGjTKzZ882/fr1a7/vJptsYk4++eRSq8oUNsgaNKQEsAYgd+ZbKAFcMbv33HOPfesk1iRsQ6dM3P/+7//aN1Cy4nio7rjjjpYQ8hvR0SAhdDMpXZeYTwxhVa1+QUtRXAJK2hjCvN+1WsZHpumra/WTzbhsq7Fv/+gH2mmsVYlD9L02y3myJoLVKYLlDMGpyi5fMBNVgCwJWD7xlLSb1jUrRD4YH4zCATVx8WT86le/Mnxej8Onni/PV57DxCiK/h99/fKXv2zLwJ199tn16Hrl7qkEsHJT0lgdUgKYbb54eC9YsMBaB/khVoVMRFzFEMLtt9/eBlSHEUJXa01IYTBYvKr6eXlJaZmEsMoxdcHsY1Zd0FXqEkKxCpUdV1qEyzfbN2jFVcH4WpHg4Qw+q5qbPMq6lhcHWROuFqErPePqU4bdS15+IM1BqSpKoOHZoKwbJLDsdRWFhW89X7UA+q0mJYB+OOlZEQgoASxmafDwRS8LMoiFcOLEibacnBBC3lzFFRN0BQXFd/mct/iqyc6UQUqLIISCF4kLVSMLvu5LxuBiUXZ2bZUxE1JKH6VSC9/StBb0Yr7ZHYmqiHSXnX0vd/V1n4MV1jIO0bYUAk0JtYsuushm+RLCUq8jTT3fsBhAXrgRov7rX/+qMYCfT6ISwHqt5k5yXyWA5UwkD2TiV4QQPvvss1ZqBkKIa2Pbbbe1LhixELqbnvRINjzRF6vXW7vrviyblKYlhFUQT45aQXlj6sKya6VmbR65lSpjFpZQERU7V1SMrc8TwHWT11MIPsp9LmQZL4SsDV4iJkyYYOvfkkzRv39/n6GWck7aer504qSTTrIv0vfdd5+Nt+b/r776qnnhhRdK6WMjNqoEsBFnrUJ9VgJYm8ngAd3a2mqtg/z84x//sDUqIYT8vPbaazbxhKQTArODWcZp6rUWOaJaZtJGubWikkrABJLFpkfsWr0IcrDfZcXURQkRp5FbqXdyTNTadGM3mUteNOLOjcvCL9p9XgU3edR3Q0ILWANgiIsVSZdtttnGELOMigESV3gj6nmkredLX/lun3766VagWnQAEazWcnQrZlIJYD1XdSe4txLA+kwiD+vp06ebP/7xjzYrD/fNzjvvbLbYYgtLCLfeeuv2TTAqRiosaL7I0VRR1FksILh7IQEcbkapWEuLxCFNW2Fl5tJcn+bcNITQjd2slfvSdyy+bvIkQhim0+nKEWV5QahqVY8oiyTfWVy+N954o3nvvffM1KlT7bOFmOSDDjrInHDCCb7Touc1AAJKABtgkqrcRSWA9ZsdiYnZb7/9LAlE54r4FtzGuDmGDBliE0r4QRJByl3FEUK3RmmWDQ80ZHNhM0myxtQavSDBYoxu0LwkEATd52X3swoxdVH6e5AgKeEWrP9aNi5J7ZdVAi+vOLVrkayaXE+URZI+4+rlWQIBHD16tP0uv/7661bGinVw3HHHJU2Jft5ACCgBbKDJqmJXlQDWb1aQYoDkIWsQPNjA3n77bUsIcRm/9NJL1p0jSSVbbrlle2H2JEKYxipWZRehTx3fqBipMgmhuMn5DWHmXlU46A+YYcWSoyoi3a5FshYvGXHW0mB2rWuRhDCnlWEpc+6jZHGY4x/+8If2mXHrrbdaqRc9Oj8CSgA7/xyXOkIlgKXCW1jjbEq8yYuFEJmEjTfeuD2pZMSIEfYNXyx4rjvMxyrmWjw6k4uwbEJYlgUr78IJEiyxHgfjKYPuc/6f1XLs2+e8Ll/f+8SdF2UtheyBESQeYloV8hdHmFEfOOqoo2xmLNm+Zb2AYF3kpZUqHlRNYu3H4bPTTjuZZ555xmbm03/WFQLQyNDoUQwCSgCLwbFpW1EC2JhTzwZGRpwQQpJINttss3ZCOHz48PaHcxgJci1BPJiJqeN3nKhzrZEqI/u4KEKYJmmh1rj5EqwkLESEuEhCWFXCLFZcyB/fDf6fplpJmXPMPBHHFyY6TTLZd7/7XUv8DjzwwFLJ+6OPPmoWLVpk+4IrOYkAEtNM+AqlNfUoBwElgOXg2jStKgHsHFONlQ83Me5iqpW8+eabBquguIwpoSRv67Lxs9nxEJe38zLdpGlRLiuTNtiPJBIU5j6vquA0Y8tTOSMOC9dNmoUQ1trlm2a9uS58KbUYFVYRrHGdBYs0fZO1xnfXLelG//7nf/7Havvh8uWFr1YHzxfqB/sQQJ4/kFM9ykFACWA5uDZNq0oAO+dUQ+5efPFFSwhJKpkyZYrNMJakEkZNVYDx48eb3XbbzYIg7sE01QfKQK+ecYhJJAhsiLeqmuB0GUkLcbGlaQihr0WyjLWU1KZvVQ8XCwmvoO0yxamjMpCx1iOPQpYvEi/oi9bySEMA8VIw/9Tz3XfffW2cYr0laWqJVdn3UgJYNsKdvH0lgJ18gj8fHm/r//znP63LGIsBhBAXzZ577mmI1Vl//fVDLYRskC4hdLOMi0auinGIrrVUkinqETcXh3WtdOqyWMWEYElMXdkWM981yVjyVPUQLNxYWyGEQo596n2H9TeOzKMlOm7cOLP33nubs846qy4xir4EEPH7TTfd1Io4v/LKK7bfeCLQ9dOjGASUABaDY9O2ogSweaZ+7ty55lvf+pa1DF5zzTXWciAWQqqWjBkzpj2GcOjQoe3xRFEB867LOO/GLiSG2RA3XFVmxrUSkSDj4hGWYFOLRArBJm+1kTwYh1nFRLAc8gNOIiVEEkreNZKnr+61bnhBUVU9aDMoPcPfXJexDyGMspbSFlIuiDwj8/KNb3yjbnj6EsDgfHEd3obFixdbC7oe+RFQApgfw6ZuQQlg80w/otN33nmn+fWvf2169uzZYeBLly61JaOEEL7zzju2msBXvvIVW7oO9X3ZwIskhK4lpopu1STpGZ8YwjIIYa1iJNN8O4QQQvpc6Zky3aRp+se5tbSWBr8nLiEMq1YSZS2lHbJv77rrLnPbbbeZDTfcMO2wCz0/KwGkytGuu+5qPvjgA1sGU4/8CCgBzI9hU7egBLCppz908EIukHCQLGPijbbbbrv2pBLqirqE0BVjZsPyqVkrwfdsykVZYoqaTfoEKQaLNBbJuLg5t35vHmtYrUhMFixdEsMm77rQ+YyjljV83THkSZDJgkXQ6uhiwRy6oRV8Rv+CEkwffvihOfHEE60I/LXXXlvX+Dmx6EIA99hjD2vJ43tO2b7gep4/f77517/+ZZ8XfH9QKUCqZr311rMvoXoUg4ASwGJwbNpWmoEAopl35pln2gcSmlmPPfaYzWJLOs4//3ybZccbK+5R3sI333zzpMs63edsTmxETz/9tLUQ8ibPw//LX/5yey3jvn37rkQIhRQKIXQ3fqnoUbXYMCavSLdqkYSwM1hLw9ykZRPCMhJkiviSCxZYmfk3B30la3bbbbe1cbkkexA7d/LJJ9cl3s8d5w033GCOPvro9u85fYX48Uygr2QiP/LII1aPcMaMGebggw82b731lrW68sKITI0mgRSxcla0oQSwWDybrrVmIIBvvPGGJS+UU8OtiZ5VEgG8/PLLzS9/+Uvzpz/9ybpc0LKivBIPNN5om/ngwQ8BJCZJCCGbGPVGyTLmrR8Xc9BCKFnGXC+WIKwHEIA8FrGi5qIWbtWshJDr0F+rorU0TEbFZ07cuDlJpsgSNxd3rypnINM3XqxY+/JMwdI+YcIE+91C+J3Qi913392GYfDdWnfddX2g1XOaBAElgE0y0WUNsxkIoIsdelo+FkDKrp122mnmpJNOspezQQ0YMMBceeWV5vDDDy9rOhqyXTbt999/31oGIYRsXuC1ww472E2LOEIyAalvTBzT2WefbYPAy9r0s4AoFknWRy0rQCQRQkmmwB3Nv2vZNx8ci8zyLZoQFtk3HyzSnCOC2Lh2cfvKCxDfCV4+eUbh8m1pabG6nny3qMCxYMGCurqB04xRzy0fASWA5WPcqe+gBHDl6cXlC2EhBo64Nzl4Ex85cqT56U9/2qnXRN7BsZG/++67Vn9QCCGWDdzvuLPOPfdciy+bHucG48SKtgLFjYd7JSV65MUjzfVhhJDrIaZiLeXf9baY1gI3IYSu1EpSIgVYuX2DMFctA1nWW7AGMi9R3/72t+2L5lVXXbVSpiz6f5o8kebb1PnPVQLY+ee41BE2MgEkHoW4FCESQaDQtyOJIa0FcObMmQYZFFww6FbJccghh5i1117bvpnr4YcAFowjjzzSgCnC09OnT7fueMiMVCnBUog4rMxjXPakxIsVQYBc9yCbcVk1VP2Q6niWmyAjtVQlprLeJcqyunyz4OBeE/ey4GrvYS2FNLKmpD523nsXcb3rxg/2bfLkyebYY4+1CR9INRWxvsP6nLaeLy9u9Omhhx6yLyHohhIaU2vx6SLw74xtKAHsjLNawzE1MgEkJoq34qiDN//u3bunJoBqASxmAbLhEXeJFRXtMqkAwN/RJBQLIZbWbt26WVcxLmOSS6TsVZRbMG/iQFVr0oJ8nOvSx2VcpoXQt3JGMSsouRU3qYS+SXypWEulnnFyS+We4ZZ0c9349Pfee+81l1xyiS3t5nocyuhR2nq+ED6+KxBH+jp27Fj7PabPetQfASWA9Z+Dhu5BIxPALMDniQEcOHCgJTIaA+iPPBYE3L1xBxsLQtS4i/mhggDXYCEk+J2MSImTcgmhWMT4m6/WHOfy0kCmb9AF5z+qcs7M4rqsFSHkPnkqZ5SDWFur9E0IPcQP0idu41pVsYkbn8jPBHUuWb9k/BIbi74f5dJqdfho+ZHJi2wLKgrUFefg31tttZXN8h08eHCtuqv3iUBACaAujVwINAsBJO6GjQLLEpm9uIfFihQGIHF+uDpwfZAQQmYeWcBvvvmmVxYwyQ7EuslDlOv333//yLkiy/jiiy+2bdNPXECUe7rllltyzW8jXsz4KXmF+x5C+I9//MMgMwMh5AdCKJUEkgghcywWsSrr5xWVrVoGIayyXiPjxeULmQrTkhQLYRghdOsZl/E9cQk9fcMjIQfJHISwbLnllubHP/5xh8/K6EuwTR8CeP/99xvCXvC0uAcvYzzf9tprr1p0Ve8Rg4ASQF0euRBoBgJIHBo6VcG4GnT+zjvvPIsfb7hHHHGE1QuU44ILLrAl05A82Xrrrb11AKmoAcGk5iUk7r777rNtP/XUU2b06NGh8wUBfPzxx222nx4dEWAjnTZtWnuVEmoaY42VGEI0GrH8cAQJoYgPQwIhA5J1yf+rckRlhBbRv7yEsGouXxeTLIQ+ropNkYQwLk4SPVKSPc455xxz6KGHlhbvF7d+fAjgzTffbMaPH2/mzJnToSk0/fCEHHbYYUUsUW0jBwJKAHOAp5faDbNNlE2PwhA45phjrCwKpdfkOOCAA0yvXr3Mb3/7WyWAOZFmc50yZUp7lRJqG5O0I4SQuEOxtlCRACvssGHD2l2DUq9W3MZlxszFDbUe7mhfQki/q+rypW9FVfWIIoRuDd+0LwsQU/T9aENiWeXl5NZbbzW/+MUvDOQK61+9Dh8CqBbAes2O/32VAPpjpWeGIKAEsPhlgZWPYOkzzjijvfHLLrvMEsLnn38+kgDidmbD4IfMWALDicHRIx4BNnEEusVl/NJLL1nxbn5wVX3jG9+w1ls2ciFArrRIPQhhFutVGesgihAKYamijIrEcAbdqkXgAx4iWM4c8eNmXYtoeVSWrlSRCZZ04+94F3gZgfwFa3EX0fc0bfgQQPqK5wT9QTcGkBcsvCoaA5gG8XLOVQJYDq5N06oSQP+p9pWd2WijjazrBNkTOa6++mrrNoGohB3IQJCxPGTIEOty4XqSIQi6bvbKI/4z1HYmBOG73/2ujZ9EuxFskfORpBI2M5EHcQmQkELZ8F2XYJGyHEWWmkuLTdL5YlljvBDmIAGSrNoi8Ujqk3xeVJyk7/2EBLt1rqPwkHUHfsFYRDLekULaeeedDWEl9ZSmSVPPlzERwsKY+C7xXSEBjvHdc889aWDUc0tCQAlgScA2S7NKAP1n2ld2JosFMNgLSAJaWw888IDZdddd/TvZ5GdC/pCSAT9iMDfbbDMb+weRJqEE6RkIIXVLhRByjrj5fF2kWQiQm7AglrWqTFdUlm+ZeKQZe1WqesRZTBkP8+pKzyBxRDWhSy+91Oy33351ifdzcU5Tz5fryOKn/w8++GB7YhrJceih6lF/BJQA1n8OGroHSgCLnz5iANESxP0oB4XQcftExQCGEUCkUEgg2W233YrvZCdu8e6777aCtZIpHBwqVhwC8SGD/JDZTYUXiSHEWuhLCJNcgnLvqrh8w6YdUuNbZziOEJZhMa2y/AxYisVU4kgXLlxoE8DQ8yPmFwKItYyXDD0UgaIRUAJYNKJN1p4SwOInnCxg3D1YoCAiWPHIAqZGblQW8J133ml22WUXu2lQMg0XMFnDr7zySmjtTzKYr7vuOks0yYIlxm3zzTcPHYyq+cfPMdYltNjEQjh16lQboI8lEVKISz8NIXSTBlwCE9SBK37lpW8xSqDYt6UyCWEaYurb36LOiyKmWJ75nl9//fX2JYPvMlZB1hKalmT/8n89FIEiEFACWASKTdyGEsByJp+Ejx/+8Ic2WJpEDnEByd2CsjP77ruvjfkje3CdddaxGwa6gGgQBg+KxeOGQc+QRAckZNAoJL4wLF5Q1fzTzTGbOMk6QggJhifwnTnhx5UUkqQBiR90Y8SwiGEhwgUdplGXrlfFnl0WMS2KEOYlpsWi1bG1OO1BKX140EEH2Zc4xsFaIumCF0Ne9KpUcrBMnLTt8hFQAlg+xp36DkoAG296IYWnnXaajc3hYJOhgPyVV165UpUSVfPPP7+IiLN5CyEkSQddSErXYdVBgkZiAoUQEosI8eMIZpGmlRXJPwJ/AlPGvdyM6yBBdoW65d6SJFNliylzCql3LcOEE5x++ulW5oWwjSxxokXjr+11bgSUAHbu+S19dEoAS4e40BukrVOsWl6Fwm8bo/IEhBDZGTb9d955x1YnkUolaL0Rh8hnkBjXOsi/IQ1uLeNaEsJ6W9aSLIQiwVKGxEvelRClPQjRh/QRr0tJNyzEZR9pQkCISSQWkbUI/hDTn/zkJ+b4448vu5vafskIKAEsGeDO3rwSwMaa4ZkzZ1qL0+uvv26lTeSgZBOZeddee22HAamaf7nzK+7AiRMn2ljPm266yVYlwe0uFkJqvAYthEJ0alWrtiyXb150hRBCrrD8uRbTMpJKsvSXPmIF5idYP3rJkiXmhBNOsHG6VA2qRXxf2hAQ4pEJXSBURI/OhYASwM41nzUfjRLAmkOe64ZqAcwFX2kXP/bYY+ab3/ymdQn/7Gc/M6+++qq1EFLaD5Lw5S9/uT2ppE+fPu2EMK40mVgJ81oI42LWSgMkRcOuZQ0rldTvFf29snUZ47oqiSgSx+lq+L399tvmqKOOMscee6zVncw7T76QpQkBoU0IINbpiy66yPcWel6DIKAEsEEmqqrdVAJY1ZmJ7lfYBkBtXISmEWp1D1Xzr838IhK+4447WjLgxn5BIKglDREkhpAMUSxJ22+/fTshRB5IrkkihCI74zuqqsvPRFnWZHxJLuOwGEJfbJLOc93lwZJuDz/8sK0jjsUdclWrI+0LoBBAXkhYW1ijSTgjQQ2rpR6NjYASwMaev7r3Xglg3acgdQcoGUcW8EMPPWSzhCdMmGCzgNGzC8sCLkrNX+OOUk/VShdAaKgTTVaoEEL+Ruk/3HSQSPQfXULoVqIIuoyjCCFtYlkjXrGKyRRZq3rUihBGJaJACinrCKG/4447DC9etTzShoDQN9QFNt10U7uukJUaN26cDR9BpkqPxkZACWBjz1/de68EsO5TkKkDlJQi5gjrEhmpogPY2tpqq1w88sgjlkxwFKHmr3FHmaYp8SIIzaJFi9pFqdF+xJVI/KAQQkoEBgmhkEKIFG5JiZcTiRGIH+dUTX4GQIqs6uESwiJK+dFeVK3hd9991xx33HE2yYOM+yih8cRJz3FCFgtg8Ha8fJClzLOjHmPIMXy9NICAEkBdErkQUAKYC76muVjjjmoz1RAQsorJIMZCSHIJm7RkGGMpxHUXRwjpKZ+vscYaZrXVVquMHEktqnrkIYRxVklcqLj3kV8i7q+eEi9pQkDCVi3WS8pLQiZZI3o0LgJKABt37irRcyWAlZiGSncii9WBwHONO8o/rRCauXPnWjLID3IeWAQlw5jkEjJPISSEAVCCbPDgwfb/WNq43rUO8u96kJd6VfWIIoQuJlhcJd4PC6rgyexxPSUdkU2husc222yTf1JztpAmBGT+/Pm2IgkvEFiDX3vtNUtgEadHlFqPxkZACWBjz1/de68EsO5TUPkOaNxRdaYIQjJr1qx2Qkh8V48ePaz0DJv7DTfcYGvRhlkI60UI66096M5eGCGUzyWeEqsYpJAYSuJeeZEhXo7s7aocviEgJIEdfPDBtkoQ89C/f39DXXJNAqnKTObrhxLAfPg1/dVKAJt+CSQCkMUCGGxU444SYc50wuTJk81+++1nCQuZxRDCvn37WosPMYRYrCTOC/ITzDIu20JY5aoeYpWEGOMq5/+//e1vrYwPltXZs2fbmtBk+kKw9VAEqoaAEsCqzUiD9UcJYINNWJ26q3FHdQI+5ra49iB5J598stV4w4IFiZk2bVp7lZJ//vOfZtCgQe2EcMyYMe1kRgihm2XM39wqJVldxpJMgRUNlyoEq0qHxPvRJ7ekG7I0VHGhogexmGj98Tk4Q7TRetRDEagKAkoAqzITDdoPJYANOnE17rbGHdUYcI/bQdyw+BEPGHVAdKZMmWIJITGEL774oll33XUtoeFnq622aidnLiEUUpiFEEaRK48h1eQUyUKGlOLudau0UMnl17/+taGc34gRI2x1khdeeMEm5UCMx48fX5M+6k0UAR8ElAD6oKTnRCKgBFAXhy8CtYw7uv322620zcsvv2wraWBJiqu0gNTNiSeeaLUROY9SbGglEh+nxwoEIGfoRUod45deeslsuOGG7YRwiy22sESHI44QipUwaCEU7cEguarCHLhZyMGSblj+IHfz5s2z5fzQzCvzSKOpqWu7zJlo7LaVADb2/NW990oA6z4F2oEQBB599FGrj/fRRx9Z7bUkAgjh4xyIIxv92LFjrVzKvffeq/jGIAAhJI5QCCFCwYgEE0NIWbvNN9/cZhGHEUIsaRxCBmlLXL5Vi5lzs5BZF25JN2L9jjzySLP77rvb5Aj3s1vxvC8AABGsSURBVDIWT1pNTV3bZcxC52hTCWDnmMe6jUIJYN2g1xt7IEDyyC677BJLAMl0RNZi0qRJ1m3Hwb9xb/IZsih6+CFApijY4S7G7Qk5hAQKIdxss83aLbFiIUQ4mev4vxBCSGGZZdr8RtN2VlwWMsLb3/ve98yPf/xjQ8WcWkjkpNHU1LWdZqab71wlgM0354WOWAlgoXBqYwUj4EMA77//fnPIIYdYa6F7EN+Fhttee+1VcK+apznIE8kmQgiRE8FNLMLUWGm/9a1vWZmUkSNHrpRlDKEKau7VgmTJDGGRZF0Ey+FhraSSDrF+9H3jjTeuyaSmzajXtV2TaWnYmygBbNipq0bHlQBWYx60F+EI+BDAm2++2cZvzZkzp0MjaJ5dccUV5rDDDlN4C0IAt+/zzz9vXcbEypFgss8++9gYQlzGxBNKrGaeqhx5u8u9ievjhyxeNwsZQnjKKadYsorsC8LatTrSamrq2q7VzDTmfZQANua8VabXSgArMxXakRAEfAigWklqu3RIyiEu88knn7QWNFy9YiGkFvXo0aPbZWeom+tm2Uq9Xsky5jNxF2MphDzmtRBC7KiFzG/InxvTh0TOuHHjrMWYsm5xiUVloKoWwDJQbd42lQA279wXMnIlgIXAqI2UhIAPASROCqJBxrAbAzhq1CjT0tKiMYAFzw2JNWRYQ/4QnXYP4gGfe+65dkKIVRYxaokhHDJkSKmEEIL54YcfWtIH+XPJ5+OPP27OOOMM23fiSvMSzaywptHU1LWdFeXmuE4JYHPMc2mjVAJYGrTacA4EJKMUArjHHnuYxYsX202d7NKwjZsAfuK9brnlFpuMcPjhh1sCcM8996TqRVr5GcquUZ+XGDPuS9+oG3v88cenum+jncz8JFnPRAwarULJMl6wYIHZdttt2wnhwIEDvQmhJJVEYRVVdYS+Egrw8MMP2yxxdBDreaTR1KSfRa3teo5Z710OAkoAy8G1aVpVAtg0U91QA6Wm7dFHH92BHECucDVi7Rs+fLh55JFHzI477mjHhVbaSSedZB588EF7DZsmlp6111471bjTys/svPPONv7twgsvTHWfZjxZpFgmTpzYbiF8//33bdk1KV3Xr1+/1IQwruoILlfIeM+ePa3AM4lBVTh8NTWLXNtVGLf2oVgElAAWi2fTtaYEsOmmXAfsgYCP65lmIICQF0qx6ZEOAYgb8YRPP/20tRA+8cQT1n0LIZRKJb179+5ACN2ydbh7XWswFl8RsaYnb7zxhjnmmGPMt7/9bXPCCSfUzeWbDhU9WxHwR0AJoD9WemYIAkoAdVkoAisjkIYAvvrqqzbhAOvVvvvua8WEERvWIx0CEEIsdhBBNAhJMsGtu/3221tCSMk7LHlC+og1xBpMVQ8OrIlI/nD+gAEDzB//+Edz/fXXt1uJ0/VGz1YEqo+AEsDqz1Gle6gEsNLTo52rEwK+BJD4tk033dSWDqOKBhmmVNJAW06PfAhACHHtMxe4/iGE/G2HHXaw8Ye/+93vbMzn17/+dUsKSUAhLODOO++0cZnvvPOOnQviNLHUUlEDK6EeikBnQUAJYGeZyTqNQwlgnYDX21YaAV8CGBwE1+222242aYXEED2KQwDyh8wMCT5kfJNMAkHEMogbnrhQqnpAyEm0wJ2MNVEkasgC7tWrV3Ed0pYUgTojoASwzhPQ6LdXAtjoM6j9LwOBrAQQwrHrrrtaV2ZVEg7KwKcebUL+cPFibSWbF5f7/PnzrbsYknfHHXfYZBySgWot8ULFmXPPPdeWHqQs4YQJE8z+++8fCRP9vPjii61FUrLHSVzCoqmHIuCLgBJAX6T0vFAElADqwlAEViCQRn4G8kGZNKxPbOSvvfaaOeqooywBwA2pR7EIYFW96qqrbNUXt7KH3EWIVLF3TW6NWETczLj9IXH33XefOeKIIwx1hhHFDjsggFgkeWHQQxHIioASwKzI6XUWASWAuhAUgRUIpJGfwdpz8MEHG+rjkpFK6bkDDzwwdRLIWWedZR566CErWt2tWzdbUg0twcGDB0dODckRp556qrV68W+uQeYk7hqd53IQINOYBBSSTuQ44IADrLuZUnNKAMvBXVs1WLpXaWYcmnrwRUy8EsAiUNQ2FIHsCJxzzjnmoIMOMiNHjjTUqUWyZPLkyda6GHWceOKJVj4F3UNcovyfJJQXX3wxe0f0ykwIYOUbO3asrTIix2WXXWYJIXWTowggcYpYjvkhseWSSy6x1mM9FAFfBJQA+iKl54UioARQF4YiUC0ESHCAVCxatMj06NFjpc59/PHHVg6FODhi4jgWLlxopU+IhRNx7GqNqvF6gxA5FmGMLLiXgwduX/QLN9poI+uW/s53vtN+ytVXX22rj2AdDjsg+N27dzeUxqNcHteTUT5p0iTNVG68pVK3HisBrBv0nePGSgA7xzzqKDoPArh/IRBTp04NHRQkgTrHs2fPtokQciB5cvLJJ9skCD3yI4A1FmmZqIM4REhcFgtgsE3c+JD9Bx54wCYR6aEI+CCgBNAHJT0nEgElgLo4FIHqIPDYY4/Z7NG7777bysmEHSQXEPMHQXGlZqigsc8++5izzz67OgNqgp4QA0jWN5nAchALipU2KgYwjADiyieBJGremwBKHWJKBJQApgRMT++IgBJAXRGKQDUQIJ7vm9/8pnU7QuSiDrUAVmO+pBdkASM0TRYwYtNY8cgCRrg6KguYLPFddtnFJorMmzfPuoAh9sRxahWZas1vlXujBLDKs9MAfVMC2ACTpF3s9Aig/4brFmKQ5AIMiwFcsGCBGTRokI1J0xjA2i8XEj4oAUgmN4kcl156qdlvv/3aOzJixAhLCs8880z7N0oGEvOHWPU666xjS92hC7jBBhvUvvN6x4ZFQAlgw05dNTquBLAa86C9aF4EfvnLX5rzzjvPWo58yRtkceLEidZliOuQ/1OT+IUXXmheIHXkikCTIaAEsMkmvOjhKgEsGlFtTxFIhwB1bUkokHg+ETT+05/+1E4ISTa49tprzaGHHmobJ2ng9NNPt25H0QEkcQQroM+RRXuQrFgslVQ4kT4iP4PkiR6KgCJQewSUANYe8051RyWAnWo6dTCKgBcCWbQHIYAIXt94441e99CTFAFFoFwElACWi2+nb10JYKefYh2gIpCIQJL2IA0oAUyEUU9QBGqKgBLAmsLd+W6mBLDzzamOSBFIi0CS9qAQQGIOu3TpYuMOSVYhcaF3795pb6fnKwKKQAEIKAEsAMRmbkIJYDPPvo5dETDGR3sQnChNR4xh3759rUj18ccfb5YsWWKTURr1QFKHzFzGhhwLWCDPknScf/755rrrrrP6f2PGjDG/+tWvzOabb550mX6uCBSKgBLAQuFsvsaUADbfnOuIFQFBwFd7MAwxJE/WX399W+6McmiNeLzxxhu2pjKVVbbZZhvz6KOPJhLAyy+/3JC5TZLOhhtuaC688EIbFwkO1PXVQxGoFQJKAGuFdCe9jxLATjqxOixFIAGBNNqDYU3NmDHDEkBI1LBhwxoeb7KxfSyAaPWddtpp7SX3SIyhDvOVV15pDj/88IbHQQfQOAgoAWycuapkT5UAVnJatFOKQKkIpNUeRHwaayFlytZee20zffp0c8IJJ5hFixYZKmGkOS666CJrMUO8evXVV7cu1B/96Edmyy23jGzmvffeM0jOPPTQQwaiRsUNxkD93KIOHwKIy5f4x2eeecZst9127bfefffdzciRI81Pf/rTorqj7SgCiQgoAUyESE+IQ0AJoK4PRaD5EEirPbh06VIDyZk8ebKBDJL4sccee5gLLrjAxgSmOd5++217DeTt008/Nb/4xS8MSShz5swxq6yySmhTEL5PPvnE3H777VaDcOzYsbZk2r333ht6PhnLlNSjPc4PHjvttJOtmuIePgRw5syZZujQoeb11183m2yySfvlhxxyiCXGaDXqoQjUCgElgLVCupPeRwlgJ51YHZYi0AAIQCZ/85vfWFHr+fPn29q4wQNXM+XVSNigpBoH/95qq60Mnw0ePHilaz766CPzn//8JxIBhLcR105LANUC2ACLqom6qASwiSa7jKEqASwDVW1TEVAE4hB4+OGHbbzc+++/b126p556qiG5Iuy4//77DRY2SJ17UJHkrrvuMnvttVchYPtYALlRWAzgwIEDzRVXXKExgIXMhDbii4ASQF+k9LxQBJQA6sJQBBSBeiFAbB+uWqx4Bx54YGg3br75ZjN+/HjrInaP/v37W9J12GGH5eo+VkjcxGTwktmLe7hr165W7zDsIM6P+EPiESGDEyZMsDGNb775pmYB55oJvTgtAkoA0yKm53dAQAmgLghFQBGoJwKQr3XWWcc8+eSTNpEieJRpARQpm2DsITp/5513nu0KbucjjjjC6gXKQezjNddcYxYvXmy23npr1QGs5wJq4nsrAWziyS9i6EoAi0BR21AEFIGsCJAIQkLITTfdZA444ICVmhG5GcrVuTGAaPdB4MJiALP2Ra9TBBoJASWAjTRb2ldFQBFQBBSBU4wxtxlj5htj+hhjLjHGHGSM2cwYMy8CngeMMasZYxDaI1X4FmMMQYH7K5yKgCLQnAiEawY0JxY6akVAEVAEGgEByNzWxphuxpgPjDH/NMZcZIx58fPODzHGTDbGfMMY8/Tnf/uSMeaXxhgyPtB1oY2TPr++EcasfVQEFIGCEVACWDCg2pwioAgoAoqAIqAIKAJVR0AJYNVnSPunCCgCioAioAgoAopAwQgoASwYUG1OEVAEFAFFQBFQBBSBqiOgBLDqM6T9UwQUAUVAEVAEFAFFoGAElAAWDKg2pwgoAoqAIqAIKAKKQNURUAJY9RnS/ikCioAioAgoAoqAIlAwAkoACwZUm1MEFAFFQBFQBBQBRaDqCCgBrPoMaf8UAUVAEVAEFAFFQBEoGAElgAUDqs0pAoqAIqAIKAKKgCJQdQSUAFZ9hrR/ioAioAgoAoqAIqAIFIyAEsCCAdXmFAFFQBFQBBQBRUARqDoCSgCrPkPaP0VAEVAEFAFFQBFQBApGQAlgwYBqc4qAIqAIKAKKgCKgCFQdASWAVZ8h7Z8ioAgoAoqAIqAIKAIFI6AEsGBAtTlFQBFQBBQBRUARUASqjoASwKrPkPZPEVAEFAFFQBFQBBSBghFQAlgwoNqcIqAIKAKKgCKgCCgCVUdACWDVZ0j7pwgoAoqAIqAIKAKKQMEIKAEsGFBtThFQBBQBRUARUAQUgaojoASw6jOk/VMEFAFFQBFQBBQBRaBgBJQAFgyoNqcIKAKKgCKgCCgCikDVEVACWPUZ0v4pAoqAIqAIKAKKgCJQMAJKAAsGVJtTBBQBRUARUAQUAUWg6ggoAaz6DGn/FAFFQBFQBBQBRUARKBgBJYAFA6rNKQKKgCKgCCgCioAiUHUElABWfYa0f4qAIqAIKAKKgCKgCBSMgBLAggHV5hQBRUARUAQUAUVAEag6AkoAqz5D2j9FQBFQBBQBRUARUAQKRkAJYMGAanOKgCKgCCgCioAioAhUHQElgFWfIe2fIqAIKAKKgCKgCCgCBSOgBLBgQLU5RUARUAQUAUVAEVAEqo6AEsCqz5D2TxFQBBQBRUARUAQUgYIRUAJYMKDanCKgCCgCioAioAgoAlVHQAlg1WdI+6cIKAKKgCKgCCgCikDBCCgBLBhQbU4RUAQUAUVAEVAEFIGqI6AEsOozpP1TBBQBRUARUAQUAUWgYASUABYMqDanCCgCioAioAgoAopA1RFQAlj1GdL+KQKKgCKgCCgCioAiUDACSgALBlSbUwQUAUVAEVAEFAFFoOoIKAGs+gxp/xQBRUARUAQUAUVAESgYASWABQOqzSkCioAioAgoAoqAIlB1BJQAVn2GtH+KgCKgCCgCioAioAgUjIASwIIB1eYUAUVAEVAEFAFFQBGoOgJKAKs+Q9o/RUARUAQUAUVAEVAECkZACWDBgGpzioAioAgoAoqAIqAIVB0BJYBVnyHtnyKgCCgCioAioAgoAgUj8P8BGrJLxeijtrUAAAAASUVORK5CYII=\">" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.HTML object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Draw original triangles.\n", | |
| "\n", | |
| "from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", | |
| "\n", | |
| "fig = plt.figure()\n", | |
| "ax = fig.add_subplot(111, projection='3d')\n", | |
| "\n", | |
| "ax.scatter(vertices[:,0],vertices[:,1],vertices[:,2])\n", | |
| "collection = Poly3DCollection(tris, linewidths=1, alpha=0.2)\n", | |
| "face_color = [0.5, 0.5, 1]\n", | |
| "collection.set_facecolor(face_color)\n", | |
| "ax.add_collection3d(collection)\n", | |
| "set_axes_equal(ax)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[ 0.40824828, -0.40824828, 0.81649655],\n", | |
| " [-0. , 1. , 0. ]], dtype=float32)" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Convert to float so that devision in normalize_v3 doesn't complain.\n", | |
| "tris = tris.astype(np.float32, copy=False)\n", | |
| "\n", | |
| "# Calculate the normal for all the triangles, by taking the cross product of the vectors v1-v0, and v2-v0 in each triangle. \n", | |
| "n = np.cross( tris[::,1 ] - tris[::,0] , tris[::,2 ] - tris[::,0] )\n", | |
| "\n", | |
| "def normalize_v3(arr):\n", | |
| " ''' Normalize a numpy array of 3 component vectors shape=(n,3) '''\n", | |
| " lens = np.sqrt( arr[:,0]**2 + arr[:,1]**2 + arr[:,2]**2 )\n", | |
| " arr[:,0] /= lens\n", | |
| " arr[:,1] /= lens\n", | |
| " arr[:,2] /= lens \n", | |
| " return arr\n", | |
| "\n", | |
| "# n is now an array of normals per triangle. The length of each normal is dependent on the vertices, \n", | |
| "# we need to normalize these.\n", | |
| "normalize_v3(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "centroids: [[ 1. 0.33333334 0.66666669]\n", | |
| " [ 1.66666663 2. 2.66666675]]\n", | |
| "normals: [[ 0.40824828 -0.40824828 0.81649655]\n", | |
| " [-0. 1. 0. ]]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Centroid c = (v1 + v2 + ... + vk)/k\n", | |
| "centroids = np.mean(tris, axis=1)\n", | |
| "print(\"centroids: \", centroids)\n", | |
| "print(\"normals: \", n)\n", | |
| "\n", | |
| "# The rotation-axis is the cross product of the normal of the triangle and the z-axis.\n", | |
| "z_axis = np.array([0.,0.,1.])\n", | |
| "rot_axes = normalize_v3(np.cross( z_axis, n ))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "/* Put everything inside the global mpl namespace */\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('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", | |
| "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 = $('<div/>');\n", | |
| " this._root_extra_style(this.root)\n", | |
| " this.root.attr('style', 'display: inline-block');\n", | |
| "\n", | |
| " $(parent_element).append(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", | |
| " 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", | |
| " this.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 = $(\n", | |
| " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
| " 'ui-helper-clearfix\"/>');\n", | |
| " var titletext = $(\n", | |
| " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
| " 'text-align: center; padding: 3px;\"/>');\n", | |
| " titlebar.append(titletext)\n", | |
| " this.root.append(titlebar);\n", | |
| " this.header = titletext[0];\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_canvas = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var canvas_div = $('<div/>');\n", | |
| "\n", | |
| " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
| "\n", | |
| " function canvas_keyboard_event(event) {\n", | |
| " return fig.key_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
| " canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
| " this.canvas_div = canvas_div\n", | |
| " this._canvas_extra_style(canvas_div)\n", | |
| " this.root.append(canvas_div);\n", | |
| "\n", | |
| " var canvas = $('<canvas/>');\n", | |
| " canvas.addClass('mpl-canvas');\n", | |
| " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
| "\n", | |
| " this.canvas = canvas[0];\n", | |
| " this.context = canvas[0].getContext(\"2d\");\n", | |
| "\n", | |
| " var rubberband = $('<canvas/>');\n", | |
| " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
| "\n", | |
| " var pass_mouse_events = true;\n", | |
| "\n", | |
| " canvas_div.resizable({\n", | |
| " start: function(event, ui) {\n", | |
| " pass_mouse_events = false;\n", | |
| " },\n", | |
| " resize: function(event, ui) {\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " stop: function(event, ui) {\n", | |
| " pass_mouse_events = true;\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " });\n", | |
| "\n", | |
| " function mouse_event_fn(event) {\n", | |
| " if (pass_mouse_events)\n", | |
| " return fig.mouse_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " rubberband.mousedown('button_press', mouse_event_fn);\n", | |
| " rubberband.mouseup('button_release', mouse_event_fn);\n", | |
| " // Throttle sequential mouse events to 1 every 20ms.\n", | |
| " rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
| "\n", | |
| " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
| " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
| "\n", | |
| " canvas_div.on(\"wheel\", function (event) {\n", | |
| " event = event.originalEvent;\n", | |
| " event['data'] = 'scroll'\n", | |
| " if (event.deltaY < 0) {\n", | |
| " event.step = 1;\n", | |
| " } else {\n", | |
| " event.step = -1;\n", | |
| " }\n", | |
| " mouse_event_fn(event);\n", | |
| " });\n", | |
| "\n", | |
| " canvas_div.append(canvas);\n", | |
| " canvas_div.append(rubberband);\n", | |
| "\n", | |
| " this.rubberband = rubberband;\n", | |
| " this.rubberband_canvas = rubberband[0];\n", | |
| " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
| " this.rubberband_context.strokeStyle = \"#000000\";\n", | |
| "\n", | |
| " this._resize_canvas = function(width, height) {\n", | |
| " // Keep the size of the canvas, canvas container, and rubber band\n", | |
| " // canvas in synch.\n", | |
| " canvas_div.css('width', width)\n", | |
| " canvas_div.css('height', height)\n", | |
| "\n", | |
| " canvas.attr('width', width);\n", | |
| " canvas.attr('height', height);\n", | |
| "\n", | |
| " rubberband.attr('width', width);\n", | |
| " rubberband.attr('height', height);\n", | |
| " }\n", | |
| "\n", | |
| " // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
| " // upon first draw.\n", | |
| " this._resize_canvas(600, 600);\n", | |
| "\n", | |
| " // Disable right mouse context menu.\n", | |
| " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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", | |
| " // put a spacer in here.\n", | |
| " continue;\n", | |
| " }\n", | |
| " var button = $('<button/>');\n", | |
| " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
| " 'ui-button-icon-only');\n", | |
| " button.attr('role', 'button');\n", | |
| " button.attr('aria-disabled', 'false');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| "\n", | |
| " var icon_img = $('<span/>');\n", | |
| " icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
| " icon_img.addClass(image);\n", | |
| " icon_img.addClass('ui-corner-all');\n", | |
| "\n", | |
| " var tooltip_span = $('<span/>');\n", | |
| " tooltip_span.addClass('ui-button-text');\n", | |
| " tooltip_span.html(tooltip);\n", | |
| "\n", | |
| " button.append(icon_img);\n", | |
| " button.append(tooltip_span);\n", | |
| "\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " var fmt_picker_span = $('<span/>');\n", | |
| "\n", | |
| " var fmt_picker = $('<select/>');\n", | |
| " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
| " fmt_picker_span.append(fmt_picker);\n", | |
| " nav_element.append(fmt_picker_span);\n", | |
| " this.format_dropdown = fmt_picker[0];\n", | |
| "\n", | |
| " for (var ind in mpl.extensions) {\n", | |
| " var fmt = mpl.extensions[ind];\n", | |
| " var option = $(\n", | |
| " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
| " fmt_picker.append(option)\n", | |
| " }\n", | |
| "\n", | |
| " // Add hover states to the ui-buttons\n", | |
| " $( \".ui-button\" ).hover(\n", | |
| " function() { $(this).addClass(\"ui-state-hover\");},\n", | |
| " function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
| " );\n", | |
| "\n", | |
| " var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\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", | |
| "\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", | |
| "\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]);\n", | |
| " fig.send_message(\"refresh\", {});\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
| " var x0 = msg['x0'];\n", | |
| " var y0 = fig.canvas.height - msg['y0'];\n", | |
| " var x1 = msg['x1'];\n", | |
| " var y1 = fig.canvas.height - msg['y1'];\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, 0, fig.canvas.width, fig.canvas.height);\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", | |
| " var cursor = msg['cursor'];\n", | |
| " switch(cursor)\n", | |
| " {\n", | |
| " case 0:\n", | |
| " cursor = 'pointer';\n", | |
| " break;\n", | |
| " case 1:\n", | |
| " cursor = 'default';\n", | |
| " break;\n", | |
| " case 2:\n", | |
| " cursor = 'crosshair';\n", | |
| " break;\n", | |
| " case 3:\n", | |
| " cursor = 'move';\n", | |
| " break;\n", | |
| " }\n", | |
| " fig.rubberband_canvas.style.cursor = 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.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", | |
| " /* 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", | |
| " evt.data.type = \"image/png\";\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", | |
| " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
| " evt.data);\n", | |
| " fig.updated_canvas_event();\n", | |
| " fig.waiting = false;\n", | |
| " return;\n", | |
| " }\n", | |
| " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
| " }\n", | |
| " }\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "// from http://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", | |
| " if (e.target)\n", | |
| " targ = e.target;\n", | |
| " else if (e.srcElement)\n", | |
| " targ = e.srcElement;\n", | |
| " if (targ.nodeType == 3) // defeat Safari bug\n", | |
| " targ = targ.parentNode;\n", | |
| "\n", | |
| " // jQuery normalizes the pageX and pageY\n", | |
| " // pageX,Y are the mouse positions relative to the document\n", | |
| " // offset() returns the position of the element relative to the document\n", | |
| " var x = e.pageX - $(targ).offset().left;\n", | |
| " var y = e.pageY - $(targ).offset().top;\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", | |
| " * http://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", | |
| " 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", | |
| " {\n", | |
| " this.canvas.focus();\n", | |
| " this.canvas_div.focus();\n", | |
| " }\n", | |
| "\n", | |
| " var x = canvas_pos.x;\n", | |
| " var y = canvas_pos.y;\n", | |
| "\n", | |
| " this.send_message(name, {x: x, y: y, button: event.button,\n", | |
| " step: event.step,\n", | |
| " guiEvent: simpleKeys(event)});\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", | |
| "\n", | |
| " // Prevent repeat events\n", | |
| " if (name == 'key_press')\n", | |
| " {\n", | |
| " if (event.which === this._key)\n", | |
| " return;\n", | |
| " else\n", | |
| " this._key = event.which;\n", | |
| " }\n", | |
| " if (name == 'key_release')\n", | |
| " this._key = null;\n", | |
| "\n", | |
| " var value = '';\n", | |
| " if (event.ctrlKey && event.which != 17)\n", | |
| " value += \"ctrl+\";\n", | |
| " if (event.altKey && event.which != 18)\n", | |
| " value += \"alt+\";\n", | |
| " if (event.shiftKey && event.which != 16)\n", | |
| " value += \"shift+\";\n", | |
| "\n", | |
| " value += 'k';\n", | |
| " value += event.which.toString();\n", | |
| "\n", | |
| " this._key_event_extra(event, name);\n", | |
| "\n", | |
| " this.send_message(name, {key: value,\n", | |
| " 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", | |
| "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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
| "\n", | |
| "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
| "\n", | |
| "mpl.default_extension = \"png\";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.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", | |
| " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", | |
| " ws.onmessage(msg['content']['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 = $(\"#\" + id);\n", | |
| " var ws_proxy = comm_websocket_adapter(comm)\n", | |
| "\n", | |
| " function ondownload(figure, format) {\n", | |
| " window.open(figure.imageObj.src);\n", | |
| " }\n", | |
| "\n", | |
| " var fig = new mpl.figure(id, ws_proxy,\n", | |
| " ondownload,\n", | |
| " element.get(0));\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.get(0);\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", | |
| "\n", | |
| " var output_index = fig.cell_info[2]\n", | |
| " var cell = fig.cell_info[0];\n", | |
| "\n", | |
| "};\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
| " fig.root.unbind('remove')\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).html('<img src=\"' + dataURL + '\">');\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 dataURL = this.canvas.toDataURL();\n", | |
| " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\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 () { fig.push_to_output() }, 1000);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_toolbar = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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) { continue; };\n", | |
| "\n", | |
| " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " // Add the status bar.\n", | |
| " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\n", | |
| "\n", | |
| " // Add the close button to the window.\n", | |
| " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
| " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
| " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
| " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
| " buttongrp.append(button);\n", | |
| " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
| " titlebar.prepend(buttongrp);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(el){\n", | |
| " var fig = this\n", | |
| " el.on(\"remove\", function(){\n", | |
| "\tfig.close_ws(fig, {});\n", | |
| " });\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
| " // this is important to make the div 'focusable\n", | |
| " el.attr('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", | |
| " }\n", | |
| " else {\n", | |
| " // location in version 2\n", | |
| " IPython.keyboard_manager.register_events(el);\n", | |
| " }\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
| " var manager = IPython.notebook.keyboard_manager;\n", | |
| " if (!manager)\n", | |
| " manager = IPython.keyboard_manager;\n", | |
| "\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", | |
| "\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('matplotlib', mpl.mpl_figure_comm);\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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\">" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.HTML object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Draw original triangles, normals (red) and rotation axes (blue).\n", | |
| "\n", | |
| "fig = plt.figure()\n", | |
| "ax = fig.add_subplot(111, projection='3d')\n", | |
| "v = np.vstack([vertices, centroids])\n", | |
| "ax.scatter(v[:,0],v[:,1],v[:,2])\n", | |
| "collection = Poly3DCollection(tris, linewidths=1, alpha=0.2)\n", | |
| "face_color = [0.5, 0.5, 1]\n", | |
| "collection.set_facecolor(face_color)\n", | |
| "ax.add_collection3d(collection)\n", | |
| "\n", | |
| "for i in range(centroids.shape[0]):\n", | |
| " c = centroids[i]\n", | |
| " nv = n[i] + c\n", | |
| " a = Arrow3D([c[0],nv[0]], [c[1],nv[1]], [c[2],nv[2]], mutation_scale=20, \n", | |
| " lw=2, arrowstyle=\"-|>\", color=\"r\")\n", | |
| " ax.add_artist(a)\n", | |
| " r = rot_axes[i] + c\n", | |
| " a = Arrow3D([c[0],r[0]], [c[1],r[1]], [c[2],r[2]], mutation_scale=20, \n", | |
| " lw=2, arrowstyle=\"-|>\", color=\"b\")\n", | |
| " ax.add_artist(a)\n", | |
| " \n", | |
| "set_axes_equal(ax)\n", | |
| "plt.show()\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.61547966, 1.57079633])" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Calculate rotation angles.\n", | |
| "\n", | |
| "def get_rot_angle(v1, v2):\n", | |
| " ''' Get rotaton angle between vectors, shape=(3,) '''\n", | |
| " nv1 = v1 / np.linalg.norm(v1)\n", | |
| " nv2 = v2 / np.linalg.norm(v2)\n", | |
| " return math.acos(np.dot(nv1,nv2))\n", | |
| "\n", | |
| "rot_angles = np.apply_along_axis(lambda x: get_rot_angle(z_axis,x), 1, n)\n", | |
| "rot_angles\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[[-0.40824828, 0.40824828, 0.81649661],\n", | |
| " [ 1.81649661, 0.18350339, 0.81649655],\n", | |
| " [ 0.59175175, 1.40824831, 0.81649661]],\n", | |
| "\n", | |
| " [[ 1. , -3. , 2. ],\n", | |
| " [ 2. , -3. , 2. ],\n", | |
| " [ 2. , -2. , 2. ]]], dtype=float32)" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Calculate rotated triangles via rotation matrices using the Euler-Rodrigues formula.\n", | |
| "\n", | |
| "def rotation_matrix(axis, theta):\n", | |
| " \"\"\"\n", | |
| " Return the rotation matrix associated with counterclockwise rotation about\n", | |
| " the given axis by theta radians.\n", | |
| " \"\"\"\n", | |
| " axis = np.asarray(axis)\n", | |
| " axis = axis/np.linalg.norm(axis)\n", | |
| " a = math.cos(theta/2.0)\n", | |
| " b, c, d = -axis*math.sin(theta/2.0)\n", | |
| " aa, bb, cc, dd = a*a, b*b, c*c, d*d\n", | |
| " bc, ad, ac, ab, bd, cd = b*c, a*d, a*c, a*b, b*d, c*d\n", | |
| " return np.array([[aa+bb-cc-dd, 2*(bc+ad), 2*(bd-ac)],\n", | |
| " [2*(bc-ad), aa+cc-bb-dd, 2*(cd+ab)],\n", | |
| " [2*(bd+ac), 2*(cd-ab), aa+dd-bb-cc]])\n", | |
| "\n", | |
| "rotated_tris = np.zeros( tris.shape, dtype=tris.dtype )\n", | |
| "for i in range(tris.shape[0]):\n", | |
| " matrix = rotation_matrix(rot_axes[i], rot_angles[i])\n", | |
| " rotated_tris[i] += np.dot(tris[i],matrix)\n", | |
| "\n", | |
| "rotated_tris" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "/* Put everything inside the global mpl namespace */\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('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", | |
| "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 = $('<div/>');\n", | |
| " this._root_extra_style(this.root)\n", | |
| " this.root.attr('style', 'display: inline-block');\n", | |
| "\n", | |
| " $(parent_element).append(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", | |
| " 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", | |
| " this.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 = $(\n", | |
| " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
| " 'ui-helper-clearfix\"/>');\n", | |
| " var titletext = $(\n", | |
| " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
| " 'text-align: center; padding: 3px;\"/>');\n", | |
| " titlebar.append(titletext)\n", | |
| " this.root.append(titlebar);\n", | |
| " this.header = titletext[0];\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_canvas = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var canvas_div = $('<div/>');\n", | |
| "\n", | |
| " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
| "\n", | |
| " function canvas_keyboard_event(event) {\n", | |
| " return fig.key_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
| " canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
| " this.canvas_div = canvas_div\n", | |
| " this._canvas_extra_style(canvas_div)\n", | |
| " this.root.append(canvas_div);\n", | |
| "\n", | |
| " var canvas = $('<canvas/>');\n", | |
| " canvas.addClass('mpl-canvas');\n", | |
| " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
| "\n", | |
| " this.canvas = canvas[0];\n", | |
| " this.context = canvas[0].getContext(\"2d\");\n", | |
| "\n", | |
| " var rubberband = $('<canvas/>');\n", | |
| " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
| "\n", | |
| " var pass_mouse_events = true;\n", | |
| "\n", | |
| " canvas_div.resizable({\n", | |
| " start: function(event, ui) {\n", | |
| " pass_mouse_events = false;\n", | |
| " },\n", | |
| " resize: function(event, ui) {\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " stop: function(event, ui) {\n", | |
| " pass_mouse_events = true;\n", | |
| " fig.request_resize(ui.size.width, ui.size.height);\n", | |
| " },\n", | |
| " });\n", | |
| "\n", | |
| " function mouse_event_fn(event) {\n", | |
| " if (pass_mouse_events)\n", | |
| " return fig.mouse_event(event, event['data']);\n", | |
| " }\n", | |
| "\n", | |
| " rubberband.mousedown('button_press', mouse_event_fn);\n", | |
| " rubberband.mouseup('button_release', mouse_event_fn);\n", | |
| " // Throttle sequential mouse events to 1 every 20ms.\n", | |
| " rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
| "\n", | |
| " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
| " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
| "\n", | |
| " canvas_div.on(\"wheel\", function (event) {\n", | |
| " event = event.originalEvent;\n", | |
| " event['data'] = 'scroll'\n", | |
| " if (event.deltaY < 0) {\n", | |
| " event.step = 1;\n", | |
| " } else {\n", | |
| " event.step = -1;\n", | |
| " }\n", | |
| " mouse_event_fn(event);\n", | |
| " });\n", | |
| "\n", | |
| " canvas_div.append(canvas);\n", | |
| " canvas_div.append(rubberband);\n", | |
| "\n", | |
| " this.rubberband = rubberband;\n", | |
| " this.rubberband_canvas = rubberband[0];\n", | |
| " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
| " this.rubberband_context.strokeStyle = \"#000000\";\n", | |
| "\n", | |
| " this._resize_canvas = function(width, height) {\n", | |
| " // Keep the size of the canvas, canvas container, and rubber band\n", | |
| " // canvas in synch.\n", | |
| " canvas_div.css('width', width)\n", | |
| " canvas_div.css('height', height)\n", | |
| "\n", | |
| " canvas.attr('width', width);\n", | |
| " canvas.attr('height', height);\n", | |
| "\n", | |
| " rubberband.attr('width', width);\n", | |
| " rubberband.attr('height', height);\n", | |
| " }\n", | |
| "\n", | |
| " // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
| " // upon first draw.\n", | |
| " this._resize_canvas(600, 600);\n", | |
| "\n", | |
| " // Disable right mouse context menu.\n", | |
| " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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", | |
| " // put a spacer in here.\n", | |
| " continue;\n", | |
| " }\n", | |
| " var button = $('<button/>');\n", | |
| " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
| " 'ui-button-icon-only');\n", | |
| " button.attr('role', 'button');\n", | |
| " button.attr('aria-disabled', 'false');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| "\n", | |
| " var icon_img = $('<span/>');\n", | |
| " icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
| " icon_img.addClass(image);\n", | |
| " icon_img.addClass('ui-corner-all');\n", | |
| "\n", | |
| " var tooltip_span = $('<span/>');\n", | |
| " tooltip_span.addClass('ui-button-text');\n", | |
| " tooltip_span.html(tooltip);\n", | |
| "\n", | |
| " button.append(icon_img);\n", | |
| " button.append(tooltip_span);\n", | |
| "\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " var fmt_picker_span = $('<span/>');\n", | |
| "\n", | |
| " var fmt_picker = $('<select/>');\n", | |
| " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
| " fmt_picker_span.append(fmt_picker);\n", | |
| " nav_element.append(fmt_picker_span);\n", | |
| " this.format_dropdown = fmt_picker[0];\n", | |
| "\n", | |
| " for (var ind in mpl.extensions) {\n", | |
| " var fmt = mpl.extensions[ind];\n", | |
| " var option = $(\n", | |
| " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
| " fmt_picker.append(option)\n", | |
| " }\n", | |
| "\n", | |
| " // Add hover states to the ui-buttons\n", | |
| " $( \".ui-button\" ).hover(\n", | |
| " function() { $(this).addClass(\"ui-state-hover\");},\n", | |
| " function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
| " );\n", | |
| "\n", | |
| " var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\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", | |
| "\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", | |
| "\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]);\n", | |
| " fig.send_message(\"refresh\", {});\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
| " var x0 = msg['x0'];\n", | |
| " var y0 = fig.canvas.height - msg['y0'];\n", | |
| " var x1 = msg['x1'];\n", | |
| " var y1 = fig.canvas.height - msg['y1'];\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, 0, fig.canvas.width, fig.canvas.height);\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", | |
| " var cursor = msg['cursor'];\n", | |
| " switch(cursor)\n", | |
| " {\n", | |
| " case 0:\n", | |
| " cursor = 'pointer';\n", | |
| " break;\n", | |
| " case 1:\n", | |
| " cursor = 'default';\n", | |
| " break;\n", | |
| " case 2:\n", | |
| " cursor = 'crosshair';\n", | |
| " break;\n", | |
| " case 3:\n", | |
| " cursor = 'move';\n", | |
| " break;\n", | |
| " }\n", | |
| " fig.rubberband_canvas.style.cursor = 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.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", | |
| " /* 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", | |
| " evt.data.type = \"image/png\";\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", | |
| " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
| " evt.data);\n", | |
| " fig.updated_canvas_event();\n", | |
| " fig.waiting = false;\n", | |
| " return;\n", | |
| " }\n", | |
| " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
| " }\n", | |
| " }\n", | |
| " };\n", | |
| "}\n", | |
| "\n", | |
| "// from http://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", | |
| " if (e.target)\n", | |
| " targ = e.target;\n", | |
| " else if (e.srcElement)\n", | |
| " targ = e.srcElement;\n", | |
| " if (targ.nodeType == 3) // defeat Safari bug\n", | |
| " targ = targ.parentNode;\n", | |
| "\n", | |
| " // jQuery normalizes the pageX and pageY\n", | |
| " // pageX,Y are the mouse positions relative to the document\n", | |
| " // offset() returns the position of the element relative to the document\n", | |
| " var x = e.pageX - $(targ).offset().left;\n", | |
| " var y = e.pageY - $(targ).offset().top;\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", | |
| " * http://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", | |
| " 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", | |
| " {\n", | |
| " this.canvas.focus();\n", | |
| " this.canvas_div.focus();\n", | |
| " }\n", | |
| "\n", | |
| " var x = canvas_pos.x;\n", | |
| " var y = canvas_pos.y;\n", | |
| "\n", | |
| " this.send_message(name, {x: x, y: y, button: event.button,\n", | |
| " step: event.step,\n", | |
| " guiEvent: simpleKeys(event)});\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", | |
| "\n", | |
| " // Prevent repeat events\n", | |
| " if (name == 'key_press')\n", | |
| " {\n", | |
| " if (event.which === this._key)\n", | |
| " return;\n", | |
| " else\n", | |
| " this._key = event.which;\n", | |
| " }\n", | |
| " if (name == 'key_release')\n", | |
| " this._key = null;\n", | |
| "\n", | |
| " var value = '';\n", | |
| " if (event.ctrlKey && event.which != 17)\n", | |
| " value += \"ctrl+\";\n", | |
| " if (event.altKey && event.which != 18)\n", | |
| " value += \"alt+\";\n", | |
| " if (event.shiftKey && event.which != 16)\n", | |
| " value += \"shift+\";\n", | |
| "\n", | |
| " value += 'k';\n", | |
| " value += event.which.toString();\n", | |
| "\n", | |
| " this._key_event_extra(event, name);\n", | |
| "\n", | |
| " this.send_message(name, {key: value,\n", | |
| " 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", | |
| "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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
| "\n", | |
| "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
| "\n", | |
| "mpl.default_extension = \"png\";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.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", | |
| " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", | |
| " ws.onmessage(msg['content']['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 = $(\"#\" + id);\n", | |
| " var ws_proxy = comm_websocket_adapter(comm)\n", | |
| "\n", | |
| " function ondownload(figure, format) {\n", | |
| " window.open(figure.imageObj.src);\n", | |
| " }\n", | |
| "\n", | |
| " var fig = new mpl.figure(id, ws_proxy,\n", | |
| " ondownload,\n", | |
| " element.get(0));\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.get(0);\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", | |
| "\n", | |
| " var output_index = fig.cell_info[2]\n", | |
| " var cell = fig.cell_info[0];\n", | |
| "\n", | |
| "};\n", | |
| "\n", | |
| "mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
| " fig.root.unbind('remove')\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).html('<img src=\"' + dataURL + '\">');\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 dataURL = this.canvas.toDataURL();\n", | |
| " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\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 () { fig.push_to_output() }, 1000);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._init_toolbar = function() {\n", | |
| " var fig = this;\n", | |
| "\n", | |
| " var nav_element = $('<div/>')\n", | |
| " nav_element.attr('style', 'width: 100%');\n", | |
| " this.root.append(nav_element);\n", | |
| "\n", | |
| " // Define a callback function for later on.\n", | |
| " function toolbar_event(event) {\n", | |
| " return fig.toolbar_button_onclick(event['data']);\n", | |
| " }\n", | |
| " function toolbar_mouse_event(event) {\n", | |
| " return fig.toolbar_button_onmouseover(event['data']);\n", | |
| " }\n", | |
| "\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) { continue; };\n", | |
| "\n", | |
| " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
| " button.click(method_name, toolbar_event);\n", | |
| " button.mouseover(tooltip, toolbar_mouse_event);\n", | |
| " nav_element.append(button);\n", | |
| " }\n", | |
| "\n", | |
| " // Add the status bar.\n", | |
| " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
| " nav_element.append(status_bar);\n", | |
| " this.message = status_bar[0];\n", | |
| "\n", | |
| " // Add the close button to the window.\n", | |
| " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
| " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
| " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
| " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
| " buttongrp.append(button);\n", | |
| " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
| " titlebar.prepend(buttongrp);\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._root_extra_style = function(el){\n", | |
| " var fig = this\n", | |
| " el.on(\"remove\", function(){\n", | |
| "\tfig.close_ws(fig, {});\n", | |
| " });\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
| " // this is important to make the div 'focusable\n", | |
| " el.attr('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", | |
| " }\n", | |
| " else {\n", | |
| " // location in version 2\n", | |
| " IPython.keyboard_manager.register_events(el);\n", | |
| " }\n", | |
| "\n", | |
| "}\n", | |
| "\n", | |
| "mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
| " var manager = IPython.notebook.keyboard_manager;\n", | |
| " if (!manager)\n", | |
| " manager = IPython.keyboard_manager;\n", | |
| "\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", | |
| "\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('matplotlib', mpl.mpl_figure_comm);\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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\">" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.HTML object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Draw rotated triangles (green).\n", | |
| "\n", | |
| "fig = plt.figure()\n", | |
| "ax = fig.add_subplot(111, projection='3d')\n", | |
| "v = np.vstack([vertices, centroids, [[0,0,0]]])\n", | |
| "ax.scatter(v[:,0],v[:,1],v[:,2])\n", | |
| "collection = Poly3DCollection(tris, linewidths=1, alpha=0.2)\n", | |
| "c2 = Poly3DCollection(rotated_tris, linewidths=2, alpha=0.2)\n", | |
| "collection.set_facecolor([0.5, 0.5, 1])\n", | |
| "c2.set_facecolor([0.5, 0.9, 0.1])\n", | |
| "ax.add_collection3d(collection)\n", | |
| "ax.add_collection3d(c2)\n", | |
| "\n", | |
| "for i in range(centroids.shape[0]):\n", | |
| " c = centroids[i]\n", | |
| " r = rot_axes[i] + c\n", | |
| " a = Arrow3D([c[0],r[0]], [c[1],r[1]], [c[2],r[2]], mutation_scale=20, \n", | |
| " lw=2, arrowstyle=\"-|>\", color=\"b\")\n", | |
| " ax.add_artist(a)\n", | |
| " \n", | |
| "set_axes_equal(ax)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "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.5.2" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 1 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment