Skip to content

Instantly share code, notes, and snippets.

@FMassin
Last active March 22, 2017 09:02
Show Gist options
  • Save FMassin/5c68a1a482ac4b8eb8fbfddaa7135894 to your computer and use it in GitHub Desktop.
Save FMassin/5c68a1a482ac4b8eb8fbfddaa7135894 to your computer and use it in GitHub Desktop.
FDSNws tricks.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"%matplotlib notebook \n",
"from obspy.clients.fdsn import Client\n",
"from obspy import UTCDateTime"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": 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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAQABJREFUeAHsnQecVcX1x481GsWCil1RghEBxRLQ+I/SRLFj7z1BY6+IYgMUKyZir4gtVmwIogIiRhTFSFEpAqKogAioUYMK//Od+2Z9rttY9i3v7v2dz+fse/vu3Jkzvzt37twzp5iJhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRA0SCwTNFIsnQEof8bOH+zdJpXq0JACAgBISAEhMBSQqCet/uZ86Kl1P5SbXb5pdr60m+cxd+nS18MSSAEhIAQEAJCQAgsBQQ28jZnLIV2l3qTWV8ABs3fO++8Y6uuuupSvxjlCfDRRx9Zz5497b777iuvSGZ+nzlzpv3tb3+zZ555JjN9Lq+j33//vR188MH2yCOPWL16vMhmmzp16mR9+vSxjTZiPs82HXvssXbBBRdY06ZNsw2E9/6ss86yww47zHbcccfMY3HppZda69atrW3btpnH4pprrrF7770XHDK7A5j1LeDV/OLPnzBhQlE/QH/88UebP3++rb322pm/aX/++eeARf369TOPxaJFi+zrr78OY3fZZZfNPB5gscoqq9hyyy0nLByL3//+97b88ll/x7dwj6y00kq24oorZn5czJs3z373u9/ZyiuvnHkspk+fHl8KVncwvs4iIHpqpOCqf/DBB3pjy12nzz//3Jo3b56Cq1Z4EdEANmnSJCyIC99a8bfQokULmzp1avELWgsStmvXzkaPHl0LLRV/E2jJhwwZUvyC1oKE7J4899xztdBS8Tdx+eWXF7+QBZZQGsAUaADR9KD50tu82cKFC+1///uf3mB9YmBcfPfdd0HTs8wyWb+Vzb799tuAhbShZv/9738NrZe0oWa8KK2wwgqaP33OYDeJ+0Pjwvd9v/nG/vjHP7LEkgYQFETFicCHH35oe++9d3EKV8tSYQO422671XKrxdncDz/8YB07dgxbXMUpYe1KdcABB9inn8qnC9SPP/54Gz9+fO1egCJt7bTTTrM33nijSKWrXbHOPvtsGzRoUO02WqStXXbZZUUqWe2JlXW1QZVsANGyoIFbWsTb/KRJk4wtrpoi3gKxEUqb5ohFz9tvv23/93//V1NQpLYexuSIESPsz3/+c9BwpLYjNST48OHDbYcddgjjuoaqTG01I0eOtC233NLWWGON1PahpgR/9913bZNNNrG11lqrpqpMbT28FKyzzjrWoEGD1PahpgQfM2aM7bHHHlSXWQ2gLIQrGE1Tpkyxo446yqZNm1ZBqfQeYovo0EMPtW7dugXj+TT0hMXw448/rgWgX6yffvrJ+vfvHxY9bHFlnV544YWw6OHFJus0ePDg8JDXAtDs5Zdftt13310LQL8pXnnlFWvZsqUWgI7FsGHDsj5NmBaAFQwBFn9sK3Xt2rXOeZCxeGBhe84559iBBx6Ymm0BFjqbb755BVctO4fQ4qLZkM1bcs3XX3992Tblhj9YyOs1AWODDTaQVjg3LjbeeGNbfXUUXqKGDRtmHgQtAMsZAmz7skBi8VdXw68QSuXRRx+19dZbr8SZoBw4iuZnFjtrrrlm0cizNAVh+56tnLRt4xcKs3XXXVeG/jlwmbO0AEzAQAsqLBIs2PWRM2GCheZNM4WByU2YpT+izV9dnzhiPKjY39I4FNv/2ACyjSFKtoAHDhwYtoKFhwUtNp7AIrOhQ4fa3LlzBYUjgD3krFmzhIUjMHbsWPviiy+EhSOgkFFmcgIpJwxMdBEnAPNqq+ErUjF1Of88e/utNysuVPqoo39el4uCJ2fpQ7X1P8Fz2RIo9mDYEY8FCxbYxIkTrVmzZvGnzH4SEofr1rhxY73V+yhgXGy66aYh0G1mB0Wu45MnTzZtfSZgkEkJx4eqzON1fdyABRpROcSYyQlEGsAau98JUPzRmHesyQ+Tq8SbfzvRhg4fUWPtZ6Wi2bNnh7ROWelvRf1EG0r6M2m9EpQI+DtjRiZTev5mmBDwlwDyIrMuXbrYW2+9JSgcgV69etlrr70mLByB+++/vzIcDvUCw53nOxMGJH/HtKX//6zz587znN9zPs65ItrVDy50JusITAq66c6R1vEvfZ2nOHOcz6uc81PYVFaHF7cOzpz7qfORzpGO9S+0/3j8QRrAGtIA8sbddKsmdtPum9j69fKvV4T6159PffCVjbP1bNTo/1Rqw9W6dWsjxAUR3Pfaa6+Sio4++ugQ/oN8hptttpldcskldsIJJ5Qc50ubNm3sL3/5i3Xv3v1Xv8d/0qYBjHLrUwgIASEgBIRAdRGIu3x+fnlhYAg4W9+ZsAJ3OxNqgQUU1NGZBdsLzl86t3YmQf3Rzs86l0Us3oY443uxqIwCm/lvLDofdZ7qvLlzf2dsns5xhiqrgzITnZGPReRI562c/+d8rHMfZ3Jl7un86rL+R1QDCPzhD3+wQw85xJ6cAOYV0w8/LbRnJn1jPa66utLFHzVhrMoWxrnnnpt5ey8C/TZq1KhigDNyFEclxp1svZILTopAtrhE/pTYddcQL1NYmO27775GWByR2RFHHBHCaAkLs7POOqsyGF7yAizG0KaVpoH+Qz9nFn/QMGcWd22cK6Py1l0s+q525hOi3Xudy6qzvDo4D+I4Cz0oX9GHtvIG53/ye2WVeBlRVRG49PIr7NVp8+zzbxZUeMoLk+ZZI7fbygWhrLBsPHjccceFNGj//CfXLbuEp6cm8+T649GHE4hsmxI8nnrqKdtoo42ye3Pk9fy+++6zrbbixV90yy23hGDpQsKsd+/ei/XcqcuY1XAmEBwFWjlXJQE3Czs8cVhg7uJcEbGd+24ZBSqq43QvP8D5DeeLnH9wzqde/s/azn/VAjAfliX8XhUt4OJq/6JIv/vd7+z666+3Hj162JdfxpeOeDQ7n2i7CM0jcp2+50QmiDeaQJFl/t7IHwM86D/55JP8nzL7nQWg0uIll//222+3UaNGZXYs5He8CjaA+cUr+s7WMJrC950fqqDgB36shTNbvWxjkZPvReetncuiS/xHynfLO1iVOqhzC2faQa7S9L3/cKFzDy0AHQXc4vfbbz8jk8AVV1xhV155ZdCslEatKv9XpgWsjvYvtstWBqmuLrqIRX3NEvkhDzrooGBEHwMt77TTTkYapb///e+GneFdd91lp59+ekkqNrxQKQt+OCOgjcLW8KqrrrLnn3/eolF+3LKlvv/85z9LVB9e2dGgmxRopes744wzfiUfbSMfAb2RjwU0htDId4hv2eM0wMIdWpL6BgwYUFIfXrnQzjvvHOQ79dRTDY3M3XffbVE+7DLBj7aRj2Dc+fJVpb5+/fqFRPfjxo2zXXbZJdRH29THtaS+nj172tVXX23UR9YX+rvFFswNFrKpgB+5UqN8Z555ZsBvSevr27dv6C/bLO+8807YkqS/tB3lY8yVJV8uQXuQ77333gvyVaU+gmLzgIv9Peyww0J/SYkGgTn1MYZL14edLfLRNvIxdpGPueCaa64Jc0NN1Me9Ees7/PDDg3xNmjQJ8oE58jFGeDjdc889YZsK/LDlRT76gnyMXeQrrz7yZZMPuLz62rZtG+qj7Vjfiy++GOq79tprQ3/ZLmS8RE0i28ql6yO3LPItSX2MOfrLHEN9o0ePLqmPtpGPsYt83LvIx9hGvs8++8yaNm0a8OMaIl/p+vAMP++886rdX8ZLVa5HxC9e3+qMl+rcH/nzS0X3L+MFLNlBqcr8kj9fkXqT8Ved+fSUU05ZrOcH9xzzc3nPI+rj3uB5xNzFgpa5Fvmwhcchc//99w9jJD7PsZ+nPkyI4vONjFI1QCt7Hc85swjc13mhc3k0yw+MdabMf53ZikVLd4hzaerhP5zkjM3fZ3kHF6eOvNN+8/VB/2Vy/t7wb0pk4AfUtvN5O0SLgns8npXQjz/+aNttt51VNQxMOCn355ijjrQv3hpsp+2AlvUXQvvX+YVP7OHHn1ys0C/5jhzIyiKQ5OY33HBDiRMIEwc2gp07d/6lQf/GjUsaJBxEyqLoBMKkS3YQtlinT58ebvSPP/44BBoGA7YbFy1aFLROhI0hrhYPXNLl8Tlz5swS/LBZRGM5b968Muvjd+qD0GJRH+czUWPDxWd+fZSjvijHddddFx6i06ZNC/UvSX30l3pYOBEXiqDYaBmJj5jfX+Rp2LCh4ezDJxMpAam///77YKMZ5atufUxa+fWBD/1CnigfWJPhIcpHSBy0G0z6YMPkF+WrTn30l/HPfcD5TJTkoI6Tar588foiD7gx/rh2+fJF/Ja0vq+++ipkcojyIUeUj9AvyMlC4F//+ld4kSPAOfiBU5SPhV0MjVLV+qiHeYHxnF8f14GFGNhsuOGGRn0xnibjgfOQh4clYXr4ZCHF7xyHKB/lq059PMgI5VFaPkK/cB1wGmNhxBxWlnzxxefDDz8MLyGV1cdCsaL+xvrwPOZeQvtIMOqonaa/yAFeXAcWdlw7tuznzJlTkqkj4rck9ZXuLy/2jOH27dsHz+goH/iVvh4Rv8r6W53rG8dfvH8rG8+Mc+7H/Pk0jufK7jfmp7Lmg4ceesjoG+OivPklzqfx/o3zc+n5j/ua+RvKn/94bvBiy7zFfBjro1yc76v7/KA+5jrai/VhAkN0CLKcMBfxPKL/peXjWYctPWMdbG666abwsuj1lOcEEtrwPyzChjizyMtf4K3h/7PVypbcQc4/Oi8u4eAx0vnivBNv8e+7Obdzrooav6w68qor+Xqsf2NhuUnul5ZaANaQF3AJxP6FG70sj+DF8fzNry9/AcjvvJESw4iBTmo03pyxJyQ2HtvEkbiBmXD5jbflsiguANMSB5DJnQUgmoCsU9wC5i1X+W8tmAagQVKiewua1SOPPDI86LJ+n/CgR0Op2KEWNGctWrSw7bffPuvDwh544IEQIsiBKG8ByA4piz4WgAOd6zn/7IyRfwNnbPjGOx/lzO+VEfZ8E50/dkYD0tmZB9nOztgOLufcz5kt4fbOM51LU2V1lC6f/3/pBWDwFMkvoO81gEBZtoDVtf0rSxwe+Gz7seUQifAvLATJkkFWD1zc41bxnnvi8V03CE0Mk7nIZ4vllguaZKV2SkYDmu5VV11VQ8MR4B5BgyRyy/xWrfRSkBsIeMqjRRNZ2MmpBIej/TgqexZ/EGmGMLj+izOLN2wP9nbGs5bwHzAawUi3+Zf8/1v6/686U45F4D7Oeziz+INYCB7m3Mh5kjPlvsl9+kegyuqI5ar0yQpXVAAEStsCLontH1sA+cRW0uWXXx62TuIxbILwED7//PODmpstr/fff99efvnloArPPz/N39FYogEU+WuobwFjQxfNFrKOCVphthNFHuPB5wI5gSQjAXtPtptFZnjKyyEmGQnDhg2rbEjc7wVYI6GZg+P34f69e+43tIIw5mTwXs6RTvEv+f/39P83daY8GsR2ziwII1Ev7fzeOdYX645lKqsjlivrk/7E7d9w/Ncri7JOqdu/AfL8srY/Y5BI7A2qG2Yj2gKe1KJ+tWz/agP6tG0Bo93kmrAIzjqxxc/1q1evni27LHNTtgksVllllaAZzTYSrjpwLDALkHY4wYKdg7qe170qYx57POznos1qVc6pq2Wwdd9xxx3pXnlbwHW16yX90lOjBIqa/xK1gPe9O2ux4/7VvDR1o0aMr7feeuu60Zkl7AUG7Bh0syAWebwEt23C8FzkqoV27YI3rbBwF0vfHcE0RmRGisBnnnlGUDgC5WXHyhI40gAWUAPIQEIL+MBDD4ewCh07diy6sZU2DSCu/jg/6A3Wcwm5BhAvSzQ90RSg6AZYLQpETmSwkDbUY0z897/Bcxk70awTJhJoQqUNTaJbcH9oXLhxndvJ50JOSQOY9UmiUP3vceVVdsEF5yv6eg0BjHt/hw44QonQAPJSwUQmshDrkfAhIgsxAGXrlYwEYsX9+9//1rBwBM4555wQH09gWLCjzzoO0gAWWANY7AMsbRpAFj3ELCTwZ9YJe8gRI0aEANaEA8o6EfuOGJkKieOBxUaODLEKiYWWdSKYPSGziPuXdeKlgFh4CpVkIZRaLh2rNIBZvzHU/3QgwJZnDUVwT0eHK5CSwN39+/cPQcsrKJaZQwT8ZRtYZCHbAzEzRRbs/6QZTkbCkCFDQqBwjQsLwdKzjoOcQMoZAdFGglAbdZliJPzY32LvK3Y8MZVPsctaaPmw+0OzIfu/BGmyJMjO6xcs5PWaYEF2D9kMJ1iQLYPMHqIqxQGs8zAtX+d7WM0Oso3UsGHDkHGia9eudS6EANojPCbJnIBXbVq2zTBg1rZWMqhZ+LGVI6eHBA8C3GoBmGBBGjYtABMsWPDE1GHJL9n9SzgcmYtk9/qX7rkWgKURyfv/wQcftKOOOsp69+6d92vd+cpkQJL1bt26paZTePQR0uGYY45JjcyFEhQbwIEDB4bE53rAmZHsfpdddql23M5CXaelUe/QoUNDvl3ZeiX2kOCAtjzrRApRXvbJh5x1UsgoMzmBlOMEkn9zYHfGw3ZpESEdSLBNAvWaIrRGTARp2z5kS56o/srr6VnJPSQOQcxJDJ+WLfyaGr9l1cO42HTTTaXtcXDIR87WZ1o0+2Vdz5r67aOPPgqOD9UN6F9TchRDPWDBDoocYszGjh1rpI90yqwTiDSAVbgrl/YkypsKeX0VzNRs1qxZdvjhh4ebtwqXrk4XQRvaqVMne/PNN2XX41f64IMPtqeffto222yzOn3dq9I5Av5ee+21wSu6KuXrcpkLL7wwBEDebbfd6nI3q9S3a665JoSOYt7IOt1///1Zh0AaQB8BZaaCy/zIEABCQAgIASEgBOooAgoEnSQ3rqOXt+50izhW22+/fd3p0BL0hAT3f/jDH5aghrpzKqYJYEF+T5FZ8+bNbcqUKYLCEdh1113t7bffFhaOwL777msvvviisHAEjjzySHv00UeFhSNAUOysk2wAU6ABJPXZ7NmzbaONNsr6eA0x71gEKhRMYgOITQ9YyAbQbNKkScHQXw4xFhbC6623nmwAfcZkvlhzzTVt1VVXzfz8SSalVVZZxerVq5d5LKZPn2477rgjOGTWBlBxAFNwG+AAcskll6RA0sKLSHBbbHpEFnIi48EdYzlmHZMePXrYnDlzsg5D6D+RC3jAicxuvfVWU1q8ZCTccccd9tZbb2lYOAL9+vXLPA5ZzxT+Ox8BXU8//fSi9hzEUxfPLbnuJ/crGp6a9IhO8yywaNEia9q0qeLf+UXEQxwspAG0oCkn0T3anqwT3vKNGjVSeCAfCOwUEN9WsVTd/s0jYeSySl3t0Pwvi/eJNIApuOrYehHuQ5Q82GTnlYwEFn9oeXjAicw+//xzpcXLDQS2+jAdESXjgjlUZGG+kM1wMhIUB9BMYWBSMitoMk8uFIuduXPnpuSqFVZMFoDYhvIpMps5c+ZSjddZLNeAHQPMArhX+F56fORnjinr5QEtEefBxD8tq0xFdcRzwYO289un7ngu9dZGfNX58+drMZwbnISOIguUSAiAgBaAKRgHbOP86U9/SoGkhReRnJ7t2rUrfEMpaIGHaceOHZXaKXetCOqaZUN/FlYE+CUdHvHeIBZfBJIn5AWZf0iLFhdgHGcRhl3tjz/+GBxGiHlKqjAWCdTD+Wyto0Fj8cD9Rx0s8iKxiKMOzsHZgnbyifMpw+/551GG36n722+/zT+lRr+3atXKSBMospD2E+cgkXIBMwa0AEzBnUDw43vuucfatm2bAmkLKyJv89ddd521b9++sA2loHYerD179gzBj5Xf00Le7rvvvjuznq8ssFi0EeYjOsPg5bjddtsFjSALtxkzZthzzz1XMrr//ve/h0Uzi0JyB7OQe+KJJ+z9998P9mI77bST7b333mFhx0KNMsxHTz75ZEkdJ5xwQrCvQ+uIDKTki2Ya2Oq2bt06lB0+fLi98cYbQQbGK1EN9t9//xC4G7kLtTXZt29fO+KII0Le7BKhM/rlqaeeCiGCFFHCbNiwYRkdBb90+5fXuF9+y9K31byzRR8Imgf9119/bSR4zzqhMWARWL9+/axDEbQzjAtCOuRrdbIKDFigLUczWsz0kOcYHzdu7BKJuPnmjeyvnu0jn9B+MhZatGhh7733Xji0884724gRI0o0eqeddprdcsstJaflb8+SOYRoA8w3+YRWD49JFoIQXqRo1SKRUYHc3GgA0RKyuOAehf7617/anXfeGb4Ts5KwRfmERpBFCQtBzBkKsT3JuGBhyuI168R1AQc0uVknhYFRIOhU3APjxo0zpTFKLhUaDB5wIgtbZ02aNAkvB8LDwrhIg2H3iNeG26CnHrVvRw2oFg955jEb8vLgKl3y119/3Qgkj4aNhz/asLKIFHpdunQJi782bdpY//797UFfqLJow+aWNHvkFy6L+vTpE15GaINz4uKvdNkzzjgjaF2I1/jss88GT1QWoDfccEMoWijv7UMPPVRpNHMXo3PnzmHHoPS1yeL/7J5knbQFnIIRsO2229qoUaNSIGnhRUS7II/oBGfstXiYLu1c1YW/6lVrYcyYManA4qxzzrU9fJu0Y+M1bZ1VVqha53Klvv7fz/bClG/s5vO7VHoeAcLZimWBdu+994bFH/aA8ff8Cm677bbw7wYbbGADBw4sCaXDFvIWW2wRNHto+oi1mE/URcYR8lGjFaQttNEbb7yxEb80n1gARmJhScgeFqjRbjNfGxnL1cQni1kWpyKzBx54QLsFuYHAi8fzzz+f6WGhMDApuPxoAPfbb78USFp4EQn1gbG/yIJdF04gGPiLzA444IBgX1bsWBCfr8Nuu9mTExY/hd+zE+fZDp4WsipOYXvuuadtuumm9vDDDwe7vZtvvjk4eLAtm0/Y7r388svhp7322iss/rDHY7FI/LxtttkmHCvrYXnqqaeGYyz8hgwZEmwH2c4tbWMWg5WjabzooovCfMbir6HHpLvyyitDHYWKdMC2N22JzM477zx74YUXBIUj0L1798zjoAVgCoYAk2TpN+8UiF0QEbH969WrV0HqTlul2PIwLmTPk1w5sqLgBZsGOuf8C2zIlPk2+78/VllctH/PT5pn53XpWqVzsIVkgcbC6vDDDw9buGzlrr/++r86Hxu5GOplnXXWCcfwCoah+FtZ4Zc6dOgQNIQE1L388stD+XxNX/jB/2C7C7GI5P5lCxhioRg12KU9hEOBGvgDBmgbRWZsAbds2VJQOALYrWadtABMwQj48ssv7bHHHkuBpIUXEU/EXPT2wjdW5C1gMM/2VnxQF7m4BRcPzUYhw4nUZAeqowVcHO1flPXEE08MLwho5yCyHpUmskJEL3I07BD2eNEmL/4WF4L557Pdi4aNMYizSfPmzW2XXXbJLxK+x0UeHvxTp061F198MWxFcw42elAsE/6pwT/0HdthkQVbyNKOOFnF5dVXX81q10v6rQVgCRTF+wUNDw8MkcctclsetqVESSqjTTbZ5Dex1bKKDZqtNNl6LY4WcHG1f3EMoDE/6qijwr9sG+d778YyLPQwJYCeeeaZ4FS02mqrhYUj3sRjxyYey506dYqn/Orz2GOPDd7H/Ij2ryxNXvRSx6OYHQ00h4cddlioB9tNPI8L5b3NuCjU4vJXQKTgH2wzCQckUhxAxoAsY1NwJzB5xrfxFIhbUBHBQnksE4h50DZo0EBG3bkRR7DfNC0Af9ECvmUnb5dsvZZ381RH+xfr6tq1a8idTUy/shZnlGPhxrYscQDR4LFViA3g9ddfH6ph0VDelhmLxYceeiiEeCHeXln02muvBQcE7He5TngU45gCESsQcwbaKwQxX2j+TJAlHE7U9hYCa9WZLgSkAUzB9cLIH087UeL48MorrwgKR4AtYDw2tQWcDAcCEKdlCzgO4KpoAaur/YttbLbZZnbWWWeVqf2LZciuQ4gYYo2i9SNA9Pnnnx/S6+Gxy/Z6aceOeC6f++yzT2ijPE0bTiB33XWXHXTQQfaXv/zFjj/+eCNfMYvB6IEcHUXy662J7yNHjgz9qIm60l4H2ty4pZ/2viyp/GkIGbWkfazs/GUqK1DHj6ciEDRvxtjNNGvWrI5fjsq7h0E7oU+ERWJYP3HixGCEX6jts8qvSPGUAAu8XtOm7el80on200flawEfHDvHvlitkT36xFMVgs3iC03dMM9wgGMHIVq4T7AhxgmDMCssuD799NMQG5DK9t133xBPEs062iG2YrHPIxMI2lTCwPz5z38OmkMW12DLJxo9iJiB/IbmEO0i39G4YdvHb1wPvIh5WSGU1X/+85/we9wKJqMP2j/qLJQ3O6FwcA7S1qcFLS3XJy3OUmGQFegPi+FcRAn2xL8uUDNFXa0WgCnIBIKNzDnnnFMSqqGoR1SBhfvkk0+MUBVgknXixWB7DwlCDDY93CwsNAgzgsYrTURcyz067Ga3dNz0N3EB0f51HjDNHnnsiUpDv7AAY2HFggqtMIs6XphYDEZikUi2kLgVzMKMkC98sgDE3phFXDyOdzDZPXC+ok6OMdaoG+I458fsIZyXv+XKopPzKMe58TzO5RjnMY4LFQKGdg455BA76aSTgt0h/2eZ2Npn0UPIpKwTGm5MF5y0AMzoYEiFBjCj10bdFgKZQaA8LWBVtX81CRSLuLhQi+Fbaqp+6qV+Fn8x9ExN1a16hMDiIIDGOedcmdkFoGwAF2fELKWyo0ePth122GEptV5czZK/sXHjxsUl1FKSBs0J9lloYEQWQpCw3ZdGKssWEO3fgMWI+5ff79atW1fbbpjFGQu/ml78IR+LPuqtzcUfQfSxDxWZHX300favf/1LUDgCBMXOOmkLOAVbwGyPkCi9IiPsrAxktpPYBsa+KevEQ5SYXmAhG0ALtqGExWGrMY1UWgu4JNo/bIax9yvPKSON+FRXZmwe2ZaOKeeqW09dOA/Hm1VWWaUkbE9d6FN1+4AyARtXJ2kAqwuizis8AtOmTbNLL7208A2loIU5c+YYYS1EFuymyH6BjZbIQlYUxkdaKV8LuCTaP/rfu3dv4wEnMrvlllts/PjxgsIRuOOOO4LNsMAwe/DBBzMPw3IZRwBVQVei4xez1iAaVmvrMxmtXCtih4kSQ3rSXKUp/l2hrhsOBWBRzPdyRX0nBMsH48fZ+Ekf2dR5/7PVNmtqZ559TkWnlHsMp44tttgiaHvKLZSRA2xpoyUnXmHWiXkCz2ychbJOPFdzWaWudiz+l0U8ZAOYgqtOfCw8BUUWPArTaudV09ePLWC0PLVpT1XTfajJ+ohvholAmilqAatr+xf7zlZfIT1rYztp+Pzss88KFmQ6Df3Pl5H5Yv78+fk/Zfb7xx9/nNm+x44rE0hEoog/Y7iEIhax1kRjsSOnhwRuxgW2oXyKLAT7LYTjQm1ii1ciYTrmzf2q0rAvFcnFuIihWSoql4VjhMHRYji50uCQ9pekLIzZ2uqjFoC1hfQStIPxsryAEwCJU9a2bdslQLPunMp2DjlcldopuaYsnOqCof8/+9y8xB64BGjWNl8yLlq2bBkcYurOnV/9nhAYnNzIIgtb4VnHQVvAKRgBbOfcd999KZC08CKi/Yv5SQvfWnG3gIanZ8+ecgLJXaZevXpZmp1A4mjDhnFJvXdvuumm4C0f68zy5/33329kiRGZPfXUU0YGDJHZ8OHDMw+DwsCkIAwMD3q2MTASzzqxxYcNS/369bMORdj6ZVxg3I5Bc9YJLAhxoZA4FtKqoS2Xc5Dn+PJxQZYTMqRknZg7wYGxkXUinFirVq2AQWFgsj4Yirn/eTkLi1nMWpGNmF7bbrttrbRV7I2QnqtJkya/SvVV7DIXUr4WLVoYIZNEZu3atbN33nlHUDgChx12mNJo5kbCySefHLSAGhhmV155ZeZhyLraIBWp4DDyR/Olt/kkkwCGzHqDTULAsAhku1AaQLNvv/02YBHTmGV5didLDFvJmjMsmEiAg7BIoihwf0hLnmjJlQouy7NkSvqOBnD//fdPibSFFZOQDnvssUdhG0lJ7YQHwgmEhY/IQoL7GTNmCApH4Pjjj7f3339fWDgCxHkdMWKEsHAEzj//fHv++eeFhSMgDaCZAkGnIBA0Gp5tttlG3lt+0+LxShBoUn5lndD6kQt4s8020xu9DwYC3IKHvKLNNt54Y2vUqFGwfcv6fcJcwbhYUseauoAjWBAgvC54yy/p9SBVYi4biAJBLymYOr9wCMyaNStGLC9cIympma2tXPT2lEhcODHJ9tC/f3/F9cpB/MILL0gbmsNi8ODBdcIjuibunldeecWkGU6QHDJkiE2ePLkmYE19HfICNlMYmBQMY95cc7YKKZC2sCJix4NmQ+Q3r9vy8EYvm7dkNBDfTHZev2CR1pR4NX1vb7DBBtL+5UBFM7zGGmvUNMSprI8dg6yTFoApGAE84DWZJxcKLDSBJViwBdygQQM5gOTuYbZ0tABMwCBklMKeJFisvvrqwiJ3jxAOR/dIDgx9SAOYhjHwzTff2Ntvv50GUQsuI44PbGOIzNgCHjhwYPgUHmaDBg3SFnBuIAwbNszmzp2rYeEIvPnmmyFNoMCwEASanNkiM+UCNlMYmBQEgsbujfhmTZs2zfx9SwgYbFiEhYXQQGQ4wKhbYR0sZHtgW0facgv3iLY+k+lyypQpttZaaxmawKwTWIADeGSd8uLrKhB01gdDMfefBc/ZZ59dzCLWmmwzZ860I444otbaK+aG0IZ26tTJeEEQmR188MFGmCCRWefOnRUGJjcQLrzwQhs5cqSGhSNwzTXXGNphkUUP4IqgONQPki9uvvPPzvkmcy39/2edUafOc37P+TjnimhXP7jQ+escf+Of053zqYP/M8X5U+cj8w4c69859/G83/jazpnfq0XSAKZAA1itK6uThIAQEAJCQAgIgTIRwLSqkkDQu/mJ5Bz9vfPdzis4x8VWR/++jvMLzl86t3Z+xvloZxaGZRELwCHOyzsvKquA/0bSaupmkchby1bO/3NmAdjHmdB9ezq/6gyxABzszO+LTfkr2sU+WSfUDgLY/7VsyQuHCLsNtjxFSeYL4puR31Nk1rx5c2OLS+RPo9atbdSoUYLCESCIPrayIrNjjjnGHn74YUHhCFxwwQWV4fCSF3jUuaxJhQHVz5nFHzTMmcVdG+fKqLJ1F8fjgi5fSYem8Qbnfzrn/+7/Vo9qpJLqNV0UZ6UiFdwPP/wQYnptuOGGRQHa0hRiwYIFRj7gzTfffGmKURRtkx6QBQ9YyAbQbNKkSSEsjmwAzaZOnWp4RSv4se+l+XxB5AAFPzb74osvbJVVVrF69eoVxRy2NIX45JNPrFWrVohQmQ1g1NzlawBLi85a4kPnLs4PlD6Y+z/Ww/bu75zHOvdwHu4caXf/gqaPti50ZgEKoQGk7B+dJzl3d77TuZ2zNIAOQp0lHEAuu+yyOtu/xenYV199ZRdffPHinFJny+IQ061bt5DrtM52cjE61qNHDwU/zuHVu3dveTnmsLjlllts3LhxizGS6m7RO++80954442628HF6FkuC8hinFFuURZrLNTed36o3FJmH/ixFs6bOTdyHuT8ovPWzpH4ny0uysTFXzzG5/fOLAxZDLLoXCJabonOTv/Jv/MudEUtfuaZZxqxsx577LHgKj979mzr06ePNWvWLOQYPfbYY23vvfe2HXbYwa699lqLoVmeffbZ8DZ1zjnn2D777GNt2rQJ5f/+97+H+shagbfRl19+aTfddFO16sO4nXrwcHziiSd+I9+BBx4YVPu0j3zXXXedff311yF0zHPPPRfefM8999wgf9u2bYPjwKmnnhrkW9L62rVrV259N998c0l/wRj5/vSnP9n1118f8HvnnXestHyV1cc231133WV/+9vfKqzvvPPOC/1t37592AI67bTTgufbk08+GR4GXI8oX8Rv3333DfiVJd/i1HfQQQfZ0Ucfbfvtt19JfeTrZSufPJxoIsjJuddee9luu+0W5CNfKeOP6zF+/Hhj/EX5yqtv9OjRwTscDWCXLl1+Vd8ZZ5zxq/5SHw9CxjPjCfnYGtt+++3thhtuKLkeAwYMCPKxPYJ8HTp0CP1Y0vqQb88997Tdd9891Mf9hidi/vVAPry7DznkEDvqqKPCuEI+FjPgx3iJ8pVVHwHCedB/+OGH4X6rSn1kD0EjEusjzzTjIM4HTz31VMl4ufXWW4N8hx56aJDvgAMOsO222+5X8lW1vjlz5lis77DDDrMjjzzSGIfUd+ONN5ZcD+pjvJQnH5lg6HPp+pARg3/ut6rUd9ZZZ4XrkV/fbbfdFtIuHn744UE+xuG2225r//jHP0quR2n5yE0NfktaH44b1MWYYd7ACY77A/m4P7h/b7/99iAfTmEw47q0fGz9rrfeemHbE7nKk4/6Sve3rOtBfRVdjyUdL+XdH9y/cbzE+6M69y9zEPcSjmOVzS9xvuL+qGz+y5+v4ny6pPN9fP7m11fe862y5y/yxfpwnON5ftFFF8VQSZWlgmvo64SogVtUatmzsv+P7R+LwH2dFziXR3jrzXKmjh+dWYmjwWMhx/ZxRcTCsa3zjc5jnDs5N3ZGG4jdIRrBxSYtAH0ByMMNY1DsqVhkNW7cOGwl8dtGG21kW265ZfifnKs8ZChD2ZhXkTLYpfHJuZRr2LBhSRl+IwJ7LEO91EEZ6qOe2GYsw//URzuo66dPnx4e2JTlt/z6OKe8+mI98ZNzWTDk1xProwz18kl9+f3MPxbLIB91lVcf9UZMYn30l/Njm/ll8uvLLxPPQYY111wzLHp4MMQ+RJziObHN/Pryy1Bffhlk4Frknx/lyv/keBwDbMcjD/XE+ihLGfCgvthmfplYNvaJcnynvthW6TKxvthmLMuDjTAwPDQYA7QNzpxPVgzkoyznR7niJ+0SJiSWiW1TFnnjOfn1USbWF8twDcAEps1YJn7G+miPsrTPsfyylKFe6qAMZUvXFzHid9qO9fE91sd2OC84TZo0CWViffSB7+BFf+l3VeqjDGVjm6XrY4uV+uhLLItcyBTHO/2iDG1HOWN/Yx/iNYn1UbZ0feBCnWXVh1zIyfGIMdtbO+64Y8ghXlF9nIdctE2blEW+/PritSboeOxLefLF60pZ6s2vD9lg+sD566yzTqiPtmmTc+kD7YEJ3zmfNikb5Yv9pUxV6mPubNGihW299dYl9ZWWD5kifrG/1b0e9IU64vVFRn6L9YEtfaHNOLZiWc6L44RPysT64vijLN8j1pQpXZZzIoa0RVlwjDbUvGjwexx71Bnb5pNj+Z/UT1najcfib/xPH/k/1hH7k/8b58dzkIWyyAnH80uX4f/qPN9on7aol7b4LP08Jz0gi1yn6i4A1/Bz0djhzbufM84ai0vH+AkznBdnAUgbqLRvdR7t3NG5WgvAZfzELBMr7/kTJkwoapsIbtpHH320Kkardf5aoulAI3TllVfW+b5W1kFsQy+55BK74oorZOvlYHXt2jVoini4Z524P9Dc8XDNOqH52XXXXcMCMOtY9O3bN2hN5VToe7UPPRR2YnxMlGcDuKwfW8F5V+eBzhhOEg4GLR+TzEvO452Pcub3yqiDF5jo/LHzSs6dnXs57+zMQq4iihrITfIK9fXveASv5VwtZR4dFBU5AmgA2coRma288spByyMsPJaA50VmS2uFFZijRGhCZeifjANMUdCWiywY+qN9E1kwAUEbKDJDS1gJsbWKzR2LP+hb5++c/+LM4o3MDHs7451L2BZ4gHOk2/xL/v8t/f9XnSnHInAf5z2cK1v8eZEyqav/ykKy9LZ0mYXL+lELwLJQKbLf8Ny69957i0yqpSMO6a2w0RP5a6h7RPfs2VNOILnB0KtXLzmB5LDA3phtYJHZ/fffb+zyiCzYUMohJhkJw4cPr2xI3O8FWCOhXYPjd07snvsNrSDMbiK8l3OkU/xL/v89/f9NnSmPBrGdMwvCqhCy5Gv/OOdzZ9okrmC1aJlqnVV3TgK8ot8C5kGPUwdG0FknQp8Q965+/fpZh8IWLVoUxsVqq61myyyT9VvZX6v9HsFgXSFx3CjJg9yiLUdLnHViXKy00kq24oorZh2KMHeCA2Mj67QYYWDqLFSsaEVFjsB7771neCeKLGg1MGAWWfDkw+GBB5zI4yu4of+0adMEhSOANz1e0yILtpAvvYS5lojoFHgqi9z4zncMsk5ZVxukQgOIpgfNl97mPQ/PwoVG/Du9wbrhh4+L7777LjiASAOYZEYh8PGyy+q9ljAfBMTWnGHBRAIchIXHHvnxx3B/SEueaMnxDHYqzwmkzq8PNVOm4BITR5DYRSKzzz77LDg+CAu3Tv7++4AFcb1EFuJvEtpBZHb88ceHeHnCwowwXyNGjBAUjgDxPYm9KjK76qqrMg8Dho1Zpt9557sShLeY00eh1dhmm21CLKcsXyz6zlv8VlttFeI6ZR0LtH7EuiI2l97o3bra48aBh7yiLcRsAwts37JOMbac0uK5F4HHwyOunrzlLcSEfOCBB7g9rnauTgy/1N9a0gCm4BLOmjUrZAJJgagFF5GtLbJliJLtHDIjsK0jMiMrhbShyUgYPHiwPKJzN8WQIUNCPmDdI2ZDhw4NObOFhdlrr72WeRi0AEzBEODNNWerkAJpCysiGkAFt00wxtaNN3rZvCV4EN9Mdl6/YFHMuxqFnSV+XTvjAu9wUaIZXmMNEliImDuzTloApmAEsNWnEAbJhWKrUxNYggXjgqwXWgAmeBDsVwvABAtCRmkrPMGC+ULzZ4KFHIMSHPQ3QUALwBSMBGJ6KaRDcqHwemVLR2T2008/Gcnp+RSZDRo0SFvAuYEwbNiwmOg+80Nj5MiRRjB9kSeQHTdOWOQGAjmis04KA5OCQNDYNZEPuGlTMs9kmwgBM3nyZGHhw4DQQBMnTgxG3XIC8SSbjgWOINr6tHCPbLDBBsoR7ffJlClTbK211rLVVyfaR7YJLMABPLJOLIY7dCA9r8LAZH0sFHX/J02aZOecc05Ry1hbwvEmf9RR5N4WEQaG8EA4xojMDj744BAmSFh4otLOnRUGJjcQunbtam+88YaGhSNw3XXXaQclNxIeeuihzI8JaQBToAHM/CgVAEJACAgBISAEahABTKsUCLoGAVVVhUHgrbfesh133LEwlaesVlJ9bbnllimTujDiYhpArDelgkvwbd68edjuKwza6aq1TZs2NmrUqHQJXSBp0ZJjKysyO/bYY02ar2QkXHjhhZkfEtIApkAD+MMPP4SYXhtuuGHmB+yCBQtCTC+FgklsALHpAQvZAFqIb0ZoB9kAmk2dOtXwilbwYwvzBZ7ACn5sNnPmzDAm6tWrl/lnySeffGKtWrUCB6WCy/xoKGIAmMwvv/zyIpaw9kSbM2eOXXzxxbXXYBG3hENMt27dQm7kIhaz1kTr0aOHgh/n0O7du3dwHKs18Iu4oVtvvdVIpykyu/POO2UPmRsIDz/8cOaHhFLBpSAVHHHe8Nxiu09kQcNDOjiR2aJFi4JHtDSAZmiH8ZSXBjAJEUTKLwVATu4RtOTyAk5SaeIpv+aaa2Z++uS5+thjj4GDUsFlfjQUMQDEviPEhShJf8a2p8hs4cKFRiwrPkVmn3/+udLi5QYC3vIsiEUWPMPlKZ+MBLY9582bp2HhCGBPnnVSIOgUjAAe8Gz3iZJFjyawZCSg/Zs9e7YWgLkbA/smYiOKLIwLLQCTkTB//nwthnM3Bfbkyh2uGSIisHz8os/iRQCD3R122KF4BaxFyTBqb9u2bS22WLxNkfasY8eOSvmVu0S77767DP1zWOAFrG2+BAwM/XGIEZk1a9ZMWOQGQsOGDTM/JKQBTMEQ+Oyzz+y+++5LgaSFF/Grr76yG264ofANpaAFNDw9e/aUdjh3rXr16iUnkBwWffr0Mbb7RGb9+vWzDz/8UFA4Ak8//bSNGTNGWDgCr732WuZxUBiYFISB4UFPrDcSvGed2OJjS6d+/fpZhyI4gDAuVlttNVtmmazfyhbuEZwe5BBjRpDblVde2dASZ524R1ZaaSVbccUVsw5FmDvBgbGRdVIYGDNpAFNwF7z77rthqy8FohZcRHIib7/99gVvJw0NEAi6SZMm4WGfBnkLLWOLFi1k2J0DuX379vbOO+8UGvJU1H/EEUfY4MGDUyFroYU89dRT7Yknnih0M6mo/5prrkmFnIUUMutqg9Uc3PkTJkywYg6MibE/mi+9zSdOIDjE6A02CW+Bhzh2kdIAmrEgBgvCO2Sd8HolHI7mDDMcH8BBWCRRFLg/pCVPtORKBZf1mTIF/X/vvffswAMPTIGkhRdxxowZtueeexa+oRS0wOIPJxCFuEgu1gEHHGCMD5HZ8ccfb+PHjxcUjsCZZ54pe6/cSOjSpYs9++yzGheOwNVXE/4v26RA0CkIBI1WY5tttrH1118/26PVe7/CCiuEYL8bb7xx5rHgTZ7g4Jtttpne6H00EOAWPBgjWSdS4jVq1CjYvmUdC+aKxo0bKy2eDwTGBVgoLZ4Fb+gHHniA20OBoLM+SRRz/4lvJruN5AqxzScsEiyI59W/f3/F9crdvC+88ELYBi7me7m2ZMPmjbSJIrOhQ4fKIzo3EMBi0qRJGhaOwIgRIzKPg4xlUjAE8GzM2SqkQNrCioh2B42XyD24XAPIG71s3pLRgIZcdl6/YKGUeL9goZR4CRZoQ9dYY43kn4z/Ze7MOmkBmIIRwANeIQySCwUWCnCbYIHjR4MGDbQAzN3DBPvVAjABg5BR2gpPsCAHsObPBAteCjQuchOGPhQGJg1jgDhWCumQXCkcH9jGEJn99NNPNnDgwPApPMwGDRqkLeDcQBg2bJjNnTtXw8IRePPNNw0zGpHZuHHjQs5sYWEhj3rWcVAYmBSEgcHujfh3TZs2zfp4DVkvJk+eLCx8JBAaaOLEibbFFlvICcTxAAscQbT1acY9ssEGG8jxwcfFlClTbK211jI0gVknsAAH8Mg6sRju0KEDMDAwvs4iHtoCTsFVJ07heeedlwJJCy/i559/bkcffXThG0pBC2hDO3XqpDAwuWt18MEHG2kTRWadO3dWGJjcQLjooovs3//+t4aFI3D99dfbyy+/LCwcgUceeSTzOEgDmAINYOZHqQAQAkJACAgBIVCDCJAuUYGgaxBQVVUYBLBh2WmnnQpTecpqnTp1akh/ljKxCyIuExhx77ARFZk1b948bPcJC7M2bdrYqFGjBIUjQIBwQgSJzI477jh78MEHBYUjgGY46yQNYAo0gKQyIqbXhhtumPXxagsWLLBPP/3UNt9888xjgQ0gNj1godROFuKbEdpBNoBmvCjhFU0Q+awT8wWhTxT82IIzDGk0V1uNLKjZpk8++cRatWoFCLIBzPZQKO7ef/TRR3bFFVcUt5C1JN2XX35p3bp1q6XWirsZciKDBZ8isx49eij4cW4g9O7dOziOaVyY3XbbbTZ27FhB4QjcddddsofMjQTZAJopFVwKUsER+443WLb7RBbSWzVp0iTzUCxatChggHe4NIAWtMNgIQ1gEiII73AFQDbjPkFLLi9gf+Avt5w1bNhQsVR95iSO6mOPPcYcqlRw4UmiP0WJAN6ehLgQJQ95NKIis4ULF4ZYVnyKLMQ3Iz2eyOyLL76QZjg3EIgc8N///lfDwhFgO1zxIZOhQGi1rJPCwKRgBPCA1zZfcqHAYv78+Sm4aoUXEc3G7Nmzg4aj8K0VfwsE+8UuUmRhXGAvK3Ijb58vhEUyErAnJ4C8SAiAwPKCofgRqFevnu2www7FL2gtSIhROx6OIgspnTp27KjUTrnBsPvuu8vQP4cF90j9+vV1mzgCLVu2DA4xAsOsWbNmts466wgKR4Cg8VknaQBTMAIIbtu3b98USFp4Edm+wMBdZEEr3LNnT2mHc4OhV69ecgLJYdGnTx+lusph8cADD9gHH3ygKcMRePrpp23MmDHCwhEYMWJE5nFYJuMI4As/n0wbaNmKldi+IOab0vck6c/Y0pF2IzFuJwYgIR0waM46gQVOD3KIsTBfEO5j+eW1ycPciWPQiiuumPVbJGyHgwNjI+ukMDBm0gCm4C4YPXq07bnnnimQtPAiTps2TdvhOZjJEY03NJ8isxYtWhjjQ2TWvn17e/vttwWFI3DEEUfYiy++KCwcgdNPP90ef/xxYeEIXHfddZnHIetqg1RoADH2x7hdb/OJ5ysOMXqDTTSAeIhjFykNoIWFMFgQNinrhNcrWi/NGWY4PoCDsDDDS577Q1ryREuuVHBZnylT0P93333XDjrooBRIWngRCWOw1157Fb6hFLTA4g8nED5FScqvGTNmCApH4Pjjj7dx48YJC0fgzDPPtOHDhwsLR+DCCy+0Z555Rlg4Atdcc03mcVAg6BQEgsauaeutt7b1118/8wN2hRVWsK222so23njjzGPBmzzBwTfbbDNpvXw04NUHHoyRrBMp8cBipZVWyjoUYa4ACwXFNmNcECBcafEseIbjIOSkQNCZnyWKGADimz355JNFLGHtiYZBt7BI8GY7p3///mFbp/auQPG29MILL8geMnd5Bg8ebKRNFJkNHTo0BEAWFgkWSiqQjAR5AcsJJBVzAnZNOVuFVMhbSCHR7qDxEvnN6xpA3uhl85aMBjTksvP6BQtp/37BQtq/BAt2TkgrKjLtIvkgkLV0Cu4EHvAKYZBcKIyX11xzzRRctcKLiONHgwYN5ACSg3rdddfVAjCHxdprr62t8BwW5ADW/JmAwUuBTCRyA0MfWgCmYQwQ34xQMCILDg9s6YgspHQaOHCgUjvlBgNYKCROAsawYcPsq6++0m3iCLz11luGGY3IgmMQuZFFZsQBzDopDEwKAkHzUJs+fXpwfsj6gCWkw0cffWRNmzbNOhQhNBD2PBh1K6yDGVjgCEL4k6zT5MmTbYMNNnYkTTQAAEAASURBVAghgrKOxZQpU0IQfTSBWaepU6eGwPFKKmA2fvx422233RgSDIyvszg2tAWcgqv+4Ycf2nnnnZcCSQsvIm+vxxxzTOEbSkELhH/p1KmTwsDkrhWhkkibKDLr3LmzwsDkBsJFF11k//73vzUsHIEbbrjBXn75ZWHhCDzyyCOV4XCoFyB+0Hznn53z10st/f9nnVGnznN+z/k456rSmV5woXP3vBMIbfGNM4vRyD/49x+d6ztDuzpzXjxO+enO+dTB/5ni/KnzkXkHjvXvnFsSCVwawBRoAPMuoL4KASEgBISAEBACS4gAESUqCQSNepCF1++d73YmvhQLKKij8zrOLzjjbt/amQCLRzs/61wR/dEPch6LN8pe6lweEf6DfI775QqwAByS+21R7rfSHxP9B+RjkTjSeSvn/zmzAOzjTPg/Uou9mr+i9f9FxYjAyJEjbeeddy5G0WpdJrZ/iQMoSiLZE9+MiUxk1qxZM2O7T2TWpk2bYPsmLMwOPPBAGzBggKBwBE444QTLxb7LPB7dunWrDIOXvMCjzmVNKgP9937OMdbSMP/OwqyNc0XEmut+57Od51ZU0I9t6LyP8y1llKts7cZxFnpQvqIPbeUNzv/k9/wD/n/mKBWp4LB7mzNnjm24IeMh27RgwYIQ02vzzTfPNhDee9IDsuABC9kAmk2aNCmExZENoBm2XnhFE0Iq60T2IOz/6tWrl3UogjMMaTRXW41HX7YJJ5BWrVoBQmU2gFHrlq8BLA0egH7o3MX5gdIH8/5n1YkGEE3hUOfXnC91Lou6+4+HOzfOOxhlYXv3d85jnXs4D3eOtLt/QdOHvBc6s4iF0ABSlvYnOXdnlSgqcgQw6O7enbEgmj17tl1yySUCwhEgJzJvsXyKfGbr0SO8KAkLs969e9u0adMEhSNw22232dixPCdF99xzj73++usCwhF49NG4LlpiOFhoUdn7zg9VUFsLP3aS8+kVlImH2PY90fm2+EPu8wP/pJ7NnBs5D3J+0Xlr50j8v4UzZcrq5Pf+OwvDHsv5nywTK+iuRx55ZDCOJVjoK6+8EoynSaZ+1113WfPmze3EE08MuXhPPfXU4HGJCn3u3LnB63DQoEEhLt3ll18e8rJSV+vWre3qq68Ob99DhgwJkw/13X333aG+k046KWxLVLW+du3ahWj2ePXl18fNzLbXX//611DfaaedZo0bN7YHH3ywRL4XX3wxyHfFFVfYHnvsYUcddVSQjzyIaAcIqULOUOSryfpwUIj1/e1vf7MDDjjATj/99F/Jh8Ym4scCF/mOPvpo23XXXUOexnz58uvDeBdHkIrqYzGw++67h3LUd+211xpvvoTH4GGQXx8G88h3xhlnhPRZDz30UAihkS/fktT38MMPh+tBffF6xPqOPfbY0N+K5Dv55JODs0eUL9bHiwEP+SZNmtiVV14Z+ltWfVxf+nvvvfeG8RLrI0cqW8ixvsrk43qAX6Hqu++++4J8p5xySujvWWedVXI95s2bFzR8ZLggDmTPnj1Df4877rgS/NZbb73gBILTFP2tSn0vvfRSCIwLfh06dAg5dHfZZRe77rrrSsYL3oLU17dv3+B9/ve//932339/i/Ll47ck9Z199tkl14P+4tUc67vqqquCfGzhId/1118f7t9XX301eDNy/0b5mFfIl808sOWWW4brW5367r///tBf5pX99tvPzjnnHGvUqFEwno/XI8rXq1ev4FHJXPmXv/wlzKfcb/nyLUl9LGipj5y+77//fpiv+vXrF8xBmAeQ79xzzw3y/etf/yq533B4IED4888/HzCJ8pWFX2n5uB7Mp1zfyvCr7nipaDyXvt/ieM6/f5GP+YrnUWX3L/gxpmKopDg/x/qYX/Lro2ycn+N8xbybPz+XNZ9WZ76Pz8vFfR5F+Uo/fxmPPM/zn5fx+Ruf5zfeeGMMBVNZKriGvk6I2rNFpRZMK/v/2P6xCNzXeYFzWcSCbqAzC6//5Aoc55/TnYfm/s//OMj/Ocz5GOcf8g7817/PckaOH53fcG7njAaSLeiKiIVjW+cbncc4d9IC0BeATHAEx2QrjUGzzjrrlGyfMOEtXLgw5OJF08KESraBjTbaKDyI2FogujpbcByjDItGzqE+buJYHzdg6fowQqVttneJ0B7rI/gzD3bqYwIbM2ZMeABE+QgATFBP6mMrkFzBbBVTH/KVVx9lonxk1Ijy5df3008/hfq+//77UB99i/WxdUDfo3yUoW1koD76SBDamq4PDNnaY1tr1KhRJd6vYI4syAd2UT6CJIMfD0bko0/58sX6wI+Uattss00oW7o+to1i3mHqY/KkLOdQH9cg9hf5qI9taspQlvqQhcV73IYCPyjWh3wV1ccYKKs+rh3jghcErhG2kdgDUh8yIB8yIR/9JRgu8jEGWrRo8Rv5wI4cofR30aJF5dZHCIn8+hgD1Efb+f2N9dHfWB8xLUvLV159lGU8gx/3QH593F/0lwcz2IDRxx9/HOoGa+TjvqK/LN623XZbmz9/fol81Me1pb/Ix/gltFB+fQ0bNgz41a9fP9THfUV9jKn8+riWsT7uT+pjvFEfD2bkA/N4PVjAIh/XjAU444T6aBv8wIrFLP2N9TE+qI/YftQH5lG+0vVxHaiT677ddtuFuSjiF+tjfPDyiGkJ1w6MkI8xQn2cy32FfFwH6qFtxizYx/4yBulvVerjOrLA4DpQH23TX+qjv1wP6mP8cT2Rj3R2yAfm9DdfvqrUx3w0Y8aMMLfutNNOJfVVpb9cuyhfafxKX4+Krm9F46Wi8RfHS3n3R7zfGH+M+Xh/VHT/fvDBBwFr7p04H5Q3v8T5qqz5r/R8z3iO8x/YMEbBGPyq8/xgni/r+UZ9FT3f6AvPN+6hyp6/b7/9dpg/Hb7qLgDX8HPRtmGEjZNGRVsxePhe6dze+YIcN/bPVs6HO9/mnE83+z8jnMvS4OWX4zuLxBnOi7MA5Lxxy/A3w8Sqef6ECROK2j4Ee56nnnoqvOFm+FqFrs+aNctuuummoAHKOhZMsJdddlkwD+BBl3W68MILg5aKl4+sExrDQw89NCxYs47FzTffHLSSLEqyTmhNiRu64447Zh2KsAWMltepPBvAZf0Ymr1dndHeYUT6szNaPiaZl5zHOx/lzO8VEWut9UsVeML/f9OZBejMvGN4OY5zbun8dt7vfCXEC16+Hzuv5NzZuZfzzs6jnSuiY/1gD+dNYiHUkqIiR4A3u+23377Ipawd8dBg4OEo8pnJNVwdO3YMn8LDggkBGhVR4gWM5lLkT9GWLcPOgbCwoEVGWyeqUi7gox2n+5zZboW+deY7D6DWzmQj2Mx5nnMs85p/38sZQqvHYov/Of6Zcz6xtYv2MH/xx/GTnVn4lV78cYxF4V3O3NzfO2PcuodzZYs/L/JbYoUrKnIE2MLAPkVkYRsK2w1R4gSCLRzbHiIztF5sK4rcBbBPn5A9SFi4S6bbbGMXKnJjtWeesffee09QOAJVCA7OQ5c1EqZycPw+3L93z/2GVhBmNxGOiz//aqeU+p/f8qmt/3Np/g+572f4Jwu9sqin/7ipM22ihWzn/KpzVYj+lGj/OGGZqpxVh8twwYp+Cxj7Guw9lL4nCX2CDZG0G/5K6XYu2GehIcYeKusEFmiIsTnKOjFfYBaAvVTWCSywd8NGLevE3MnOAbaWWSfCA6EddipvC7jOQ8SKVlTkCLzzzju29957F7mUtSMe9pB/+tOfaqexIm+FB1t0JClyUWtFPJwFpk2bVittFXsj5DjFyF1kdsQRRwTve2Hh8UfcY/qxxx4TFI4AnuBZp6yrDVKhAUTTg9eV3uY9D497DLLlKaeHRAOIIwhv89IAuoGOe76CBd6rWSc8T9F4ac7wGBrugQ0OwsLjhriHLveHtORJJqVKUsHV+WlEM2UKLvHo0aPtkEMOSYGkhReR6O3ShiY485DHCYRFoMiDWnXqFEJ+CIsk5RfxGkUW4jUSP1BkdtFFF9nTTz8tKBwBYjdmnbJuLINRSFfU4sVsH4JdEyEMiJWVdcKWhxhWMTZVlvGIcdCIFyatl4U4ccStw8Yp67TJJpuEGH7EUss6MVcwLphHs06MC2IxKi2ee1B4uKhcXuSrfVxk0pNOGsAUzAgzZ860J598MgWSFl5E7N6ERYIz2zn9+/cP2zqFR774WxgwYEDYBi5+SQsvIRkmCKIs8jQLnu2InQOR2TDP5EOGD1GVvIDrPExaAKbgEmPXlLNVSIG0hRUR7Q4R3kUek8BteXijl/YvGQ1kQ5CdV4IFmSuk/fsFC2n/EizI2kKmF5GFDDZZx0ELwBSMAB7wbH2KPBiTh/ggZZ4oWQCyjSEHkGQ0kD5KC8AEC1K5aSs8wYIwSZo/EywwddK4SLDQ3ySwoXAocgSIb0YoGJGFnKBs6Ygs5JsdOHBg+BQenqvJscATWJRs9ZG7V2T21ltvGWY0Is9bNn68ffZZ6YQU2USGOIBZJ4WBSUEgaOzesGHB+SHrREiHKVOmCAsfCIQGwp6H3J4K6+AJMh2LTTfdtKgdumrr/p08ebKxJa6Av2bEDiVw/OqrE+832wQWOICgIc46sRgmXqaTAkFnfTAUc/9JY3TBBRcUs4i1Jhtp8Y4+mhSNIsLAEPrk++9JCSk66KCDpN3IDYOTTz7ZFAYmAYPQJ1VI+5WJG6h379720ksvZaKvlXXy0UcfraxInT8uDWAKNIB1fhSqg0JACAgBISAEahEBdtYUCLoWAVdT1UPgjTfesP/7v/+r3sl17Cy2tpo2bVrHelW97mAbSnwz2b0l+DVr1iyYB1QPzbp1Vtu2bYPtW93qVfV6g2b4+eefr97JdeysE0880e6///461qvqdeeSSy6p3ol16CxpAFOgAcTuDYNubHqyTgsWLAjZHgh+nHXCBhB7SMLiyAbQbNKkSSEsTjEHda+tMYutF17RsgE0w9gf+z8FP7bgDEMaTTyjs07Y1bdq1QoYZAOY9cFQzP3nwda9e/diFrHWZJs1a5bpzS2Bm5zI3bp1C7mRa+0CFHFDPXr0sDlz5hSxhLUn2o033mjTpk2rvQaLuKXbb7/dxowZU8QS1p5o9957r73++uu112ARt/TYY48VsXS1I5pSwaUgFRxxAAne2ahRo9oZFUXeChqeJk2aFLmUhRdv0aJFoRG2PqUBNEM7jHmANIBJiCC8wxUA2Yz7hB0DeQFbiJNJajy8orNOxE/NLQKVCi7rg6GY+4+Nl9L3JFeI9Gdse4rMFi5caNOnTw+fwsOCBzDjQ2T2xRdfSDOcGwiff/55iB+qcWEhnNi8efMEhSOg9IAKBJ2KG4EHPdoNURL7DucHUbIAnD17dtBwCI/Evgm7SJEZ40JzRjIS5s+fLyxyNwVmIz/99JNuESEQEFheOBQ/AqQ+22677Ypf0FqQkC2t1q1b10JLxd8EKZ06duyo9Ge5S7XHHnvYqquuWvwXrhYkbNOmjbb5cji3bNkyOMTUAuxF3wQmEmuttVbRy1kbArIVnnVSLuAUjAC82Pr165cCSQsvIkb+GLiLLGzx9ezZU9qN3GC46qqr5ASSw6JPnz7BPED3idkDDzxgH3zwgaBwBJ599ll77733hIUjoODgZgoDk4IwMKjtsQPUm1uyBcyWjoyYE+N2tsMJ6YBBc9YJLNAQyyHGjCC3hPtYfnlt8oDFiiuuKOcgnyCYO9k5UHigJDwQ2mEnhYHJ+sOjmPv/9ttv27777lvMItaabDiA5G7aWmuzWBviwYY3NCnhRGYtWrRQ6JPcQCDH6ahRozQsHIEjjzzSBg0aJCwcgTPPPNOUAi0ZCjfccEPmx0TW1QZEw5w/YcKEog4SihMIrLf5xPEBjSjajawT4S2+++678DYvDaAFLTmaDcImZZ14KSAcjuYMMwLpg4OwMMNLnvtDWvJES65UcFmfKVPQ/9GjR9uhhx6aAkkLLyJhT/bZZ5/CN5SCFjALwAnk+++/T4G0hRexU6dOIUtM4Vsq/hZOOOEEGzduXPELWgsSnn322fbqq6/WQkvF38TFF19sTz31VPELWgsSXn/99bXQSnE3oUDQKQgEjV3T1ltvbeutt15xj6ZakA5bnq222srkweUxnPxNvnHjxiHIrbReZg0bNgy5kbFxyjptsskmIXC8NOUW5gpyZisodoIFAcKVFs+CZ3jOuVKBoLM+YRZz/wnq2r9//2IWsdZkw9D/ySefrLX2irkhtnMYFwp+nFylAQMGhG3gYr5mtSXb4MGD5RGdA3vo0KEK+pvDYtiwYYbJk0hewIwBGcuk4E7gzZW3NpEFDzbSOokSDSCaHmn/ktGwwQYbyM4rd2Osv/768nrNw0LavwQMpYHLDQr/2GijjX75J6PftABMwYXHwF/bWsmFwniZwNgij+Hk46JBgwYKAZMbDOuuu64WgDks1l577RD6RPeJhTBJmI6ITI5BGgS/QkALwF/BUZz/ELvp3XffLU7halkqvBvZxhBZSOk0cOBApXbKDQawwDFGZOEeIWi6yOytt94KuZGFhdn7778fcmYLC5PDmA8ChYFJQRgY4r2RuBrnh6wTIR2IBSgskqDYEydODOYBCutgBhabbrqptj59kpg8ebKxJa6Av2ZTp061NddcUzsHPi7AAgcQNMRZJxbD7du3BwYFgs76YCjm/jNQu3TpUswi1ppsM2bMsGOOOabW2ivmhtCGEvpEYWCSq3TQQQdJu5EbsCeffLKNHTu2mIdvrclG6BOl/Urg/sc//mE4CInMHnvssczDIA1gCjSAmR+lAkAICAEhIASEQA0iwM6aAkHXIKCqqjAIvP7667bLLrsUpvKU1Tpp0iRr2rRpyqQujLjYhhLfTHZvCb7NmjUL5gGFQTtdtbZt29befPPNdAldIGkPPvhge+655wpUe7qq/etf/2p9+/ZNl9AFkvayyy4rUM3pqVYawBRoANnimzt3brDpSc/QKoykCxYsCMa7CgWT2ABiD7n55psrtZMPN14OCItDCrSsE7ZeeEXLBtDs008/tdVXX13Bj/2mmDlzZkijudpqZEHNNjEucnnlZQOY7aFQ3L3nwdajR4/iFrKWpJs1a5ZdeumltdRacTeDQ0y3bt2M3MgiC/eIPF+TkXDjjTfatGnTNCwcgTvuuMPGjBkjLByB++67z1577TVh4QjIBtBMqeBSkAqOQL94sTVq1CjzN+6iRYuChqdJkybCwrGA2PqUF7AZ2mHMA6QBTEIEkSZw1VVX1X3i9wk7BmgBs07ME2jJ69evn3UoQv9zi0ClgtNoKF4EsPEixIXIQtoztrdEZgsXLrTp06eHT+FhwQNYafGSkUD6SBbEIrPPP/9cdrK5gcC2J+ZEosQ0IOs4KBB0CkYAD3pN5smF+vnnnw3nB5EZ2tDZs2eHT+GR2DcxPkQWxoVMA5KRwHyh+TPBgjGhlyTNEBGB5eMXfRYvAmxdbLfddsUrYC1KRk7P1q1b12KLxdsU6QE7duyo9Ge5S7THHntoyzOHRZs2bWyttdYq3sFbi5Jh6L/eeuvVYovF2xQB9DUukuujXMCeT754h6okiwiQBeSBBx6I/2b6EyN/DNxFZjiB9OzZU9qN3GC46qqrTE4gCRh9+vSxjz/+WLeJI/Dggw/aBx98ICwcAcLhKK1oMhRGjhyZ+TGhMDApCAOD2h47QL25JcbtX3/9tYyYfepiCxgsCOmwzDJZv5UtYIGGWA4xZgS5XXnllaUd9vsELFZccUU5BzkWbIezc6DwQIkNoMLAZH4NXPwAkMx8v/32K35Ba0FCHEBatWpVCy0VfxMs/vCG/u6774pf2FqQsEWLFgp9ksO5Q4cONmrUqFpAvfibOOqoo2zgwIHFL2gtSHj22WfbI488UgstFX8T2kkyy7ragGiY8ydMmFDUQUJxAoGXX14mm+CARhTtRtYJDSCLP97mpQG0oCUHC8ImZZ3IE004HM0ZiakEOAiLJIoC94e05IlmWKngsj5TpqD/b7/9th1++OEpkLTwImLXtM8++xS+oRS0gFkATiBkihGZderUKWSJERZmJ554oo0bN05QOAJovYYNGyYsHAECxz/55JPCwhHo3bt35nFQIOgUBIImmOvWW28tTza/XdFq4Mm28cYbZ/7m5U2eYL8EuZXWy6xhw4YhNzI2Tlkn7g8Cx0tTbmGuIGc29qFZJ8bFFltsUdQ7XrV1jRo0aGD9+vWjOQWCri3Q1c7iI0Ag0/79+y/+iXXwDIyYn3rqqTrYs8XvEvG8GBc//fTT4p9cB88YMGCAAv7mrutLL70kj+gcFmj/iKQgMhs+fLhh8iQye+ONNzIPg4xlUjAE0ACi6RFZ8OZD4yXyGE6uASStk7R/yWjYYIMNZOeVuzGIe6eUeAkY66+/vrR/uXGx4YYbhrSiuX8z/aE4gIoDmIobAAN/whiIkkWPcnomI4FxwTaGHEASPNZdd10tAHOTxNprr605I4cFYZK0GE7AWGmllXSP5MaFPrQATMUYYNtz9OjRqZC10ELi3fjqq68WuplU1M/WL+EttAWcXC6wwDFGZMHpQUGxk5FAGC1yI4vM3n//fTlK5QYCeZGzTgoDk4IwMMR7mzFjRoj5lvUBS/aLKVOmBEeQrGNB3tuJEycGo26FdbCAxaabbiptj98YH330kbH1qYC/ZsQOXXPNNW2NNdbI+pQR4mRiUoSGOOvEYrh9+/bAsLrz11nEQzaAKbjqDNQuXbqkQNLCi8hb27HHHlv4hlLQAtpQQp+wKBaZHXTQQfbZZ58JCkegc+fONnbsWGHhCBD65PXXXxcWjsA//vEPe/HFF4WFI/D4449XhsOhXmC483znn53z10st/f9nnT93nuf8nvNxzlWlM73gQufupU4Y5v//z5kF6Te5z5P9MxIhDojkPdf5BWcWr5Gm+Rc8AreOP+Q+X/PPS0v9Fv6VBjAFGsCyLpx+EwJCQAgIASEgBKqHACkCKwkEvZvXXN/59853O7P4YtEGdXRex5lF2JfOrZ2fcT7amYVhRfRHP8h5LPAom784G+r/s+i8zLksOsF/bOXc2fliZ2S63Bma6oys453bOkdiAfiSc/f4Q/xcNn7RZ/Ei8Nprr9muu+5avALWomSTJk2y5s2b12KLxdsUtqHEN0MTKDJr1qxZMA8QFmbt2rWzN998U1A4Aocccog9+2xlz+RsQPW3v/3N7r333mx0tpJeXn755ZWUCIumR73QlDIKDvTf+jmz+IOGOQ9xbuNcEbHmut/5bGe0eGVRRYq5eGw5P7Gs9dsN/vs2zgeUVXHp32JlpX/Pyv+reUeLPhUcmR7mzp1rhLnIOpEGjm0+hYLxPQm3AcQekoC/CgVjxssBYXHk8ZnYveEVLRtAM8xGiBxQr169rE+fNmvWrHB/KJJCMi5atmQnt1IbQLQvLO7yNYCcl0+sJT50xlbrgfwDpb538//RAKIpHOpcenuW35o5s7ib6YxWsadzfMsnHAgLyHbOI52Pcv7aGZrq3MN5VeeznLd0XuBMG9IAOgipJAz9r7zyylTKXtNCM4FddtllNV1tKuvjxQD7JhbFIp/5evRQ8OPcQMDWa9q0aRoWjsCdd95p772HiZbovvvusxEjRggIR+CJJ56oKRxYGKIpfN/5oQoqbeHHTnI+vYIyXf1YY+e1nLFB3N2Z7edILOgOd27gvK9zXPz51xK61b9hGH5eyS/lfFmunN+z8vPvvKNdTzjhBLvnnnvCGyI3BxMnnrfPPfdcSC/Vs2fPsKVyxRVXhC03MlHw8J08eXLYZiG20t133228TVx00UW200472W233VZufSzm2KLp3r17qI9sDuXVd/HFF9vOO+9sI0eONDwcMWZGPuwXkI/fFre+HXfcsUS+f//738FLjvqef/75UN9VV11lbdu2DQ9UthijfHgWsq1Ef8GL/rIAob7bb7899Bf58Lpb0vruuOOOkvri9UC+hg0b2ssvv2wHHnigcV3Qfj399NMl+BHyoSz5KqqvV69eob8V1ce2yZ/+9Ce75JJLrFWrVhbrA794PchEwfW4+uqrrU2bNuG6IN8zzzzzG/kWp75rrrkm1Md12XzzzUN9OH5wPVgQc43uv//+IN+ll14a5OOhh8YD+cifzPWI8pVXH+N51KhRAT8eFPS3dH1Ez6c+7o8XXngh9Pfaa6+11q1bG/KV7i95rNHI9e3b13bYYYeweAe/KN+S1sc2DvXdddddISbivHnzgsd8fn+vu+66IB/XGfnYDuR+Az/kY7xE+fLrAz/uu9L4VVTfO++8E+rjemy//fbGnMF9wvxAffR3+vTp4XqAHxrLWB/jhuubL1916rv++uvDnDF48OBg4xTrQ1sc+0sKLORjDkK+OP/F/hJOh7A6yEd9mKAwbvLlq2p9sb+DBg0KadluuOGGUB/jBk0+81i8HvSX8RLlY1HPOOR+wXsV+Ra3PrRd1Ms8GuvL72+sr7L+Ml6qcz3i9S09/rjf4vUob/wt7v1R2f1Lm9CiRYtK5oMlma+Y7+N8EOfn8uZTNPTlzc/5zw/mU+aX+DxanOdbVZ6/8XnOHIdyxelq54reohv68WOd0a4tcs6nlf0ftHQsAlmQsUAri5b3H9k2vtD5P7kCx/nndOehuf/5+NQ5evXN8u8fOCPftc44olREaP2GO7/j/JHzP537Oh/szDb2q86/IoTKPBFIl2ChBFsmXyQTEMyEzdZa/fr1A0aEElh++eXD7xyHKE/uUc6HKMM5nJtfH9+ZwDgWwxEwMRG+gzpioOfS9VGWyZEJmTJs6dA2bVKW+qI6HxmojzKU5Sbne5QZ+SjLOchCGR5+MPVRlmOxL/ShdH3kFqU+zocoyzlRbmSjPsosTn2cD9Em1yO2Q31wrI+Yd9HrFRmQj7LIv3DhwtB2xJT6KFNefTFPauxLxDPKT520HTGgPsrk1weGsQznxTJ8xv5H+amP8lHmWKZ0fbEM50FRTuoH63iceljwcH5sm7Lxf45Tlnb5HuuLZfk/1scnGFOW7/llqS+W5TjlYt3IF8vySdlYB+Xg2EbpsrFN6oI5D0Lm+El9sY7YLufFsvmfmAZgJkFd5ZWhvng8thvboE3aiJ/UAcfy+cdiGc6N5fjk/9gGZTg3fpYuG4/Fevk/nh/Lxv+pO9bDZ2wrfsby8Rhx7zARiOeX9RnL8ln6ePytvE/K5x8L//if8n6Px2vik3kNqugzHqPc7NmzbcGCXz+Xo5wcjxR/i1jzfz6XhXW8hvHaUSZyPBavL5/UF4/zfzwvlskfz5SLZSgXj1V0v1GG82IZ7nXa5JM6sBuO82YswzwFMXdwLvcf7VIXZTgvlik9/3E8lqcMbTGHQ7Ed6qUuxiPfqTvO96WfH8gJUz7On6Wfb5xLm1xjvlM2PrMqev4iF/2Lz3OeF0tIa/j5A5y/dN7H+Ufn8mhDP9DM+U7nu3KF8OBlD7qTc/Pcb+V9JDdceUd/+/sg/4kF3zW/PfTLL4tb6S9n1o1vrNqK3gaQtzbehs46iwV+tmnmzJl26623Bs1KtpEw++6774JGDa0Gk2bW6cILL7RzzjknaAKzjgVamIMPPjhoh7OOBfMFuzLbbrtt1qGwhx56KGhd//znP2ceC7aAzzjjDHBgIVbWVipvXbyV7uqM9o6VLVo43ibYgsWubrwzdniVaedYa63vnE/sQb/pjIZvpjN1Mkix2fvOualzX+dpzmjxKqOpXgAt5b25glv45xhn+nazc3fnX5E0gL+Cozj/QQuoySu5NrzxtW7dujgvVC1LxZtvx44dS7RWtdx80TW3xx57lGimi064WhaIe2SttTAjErGFTG5kkYUA+lEDlnU8yItcCR3tx+9zTlTOZqQZ4nsb59bOLNA2c57nHMuweNvLGbrNeRNn/uf4Z875xFYvoWBY/EG8xbNIY+HG1sEXzk8693SuCkUZYtmJ/uUW53I1R8vGkvosXgQ++eQTe/DBB4tXwFqU7Msvv7Qbb7yxFlss3qYwDcCepfT2VvFKXFjJsEFU+rME4z59+gTbrMIino7a0Xp98AGmVCLsQZVWNBkHVQiTdL+XZI3EYgyO34f79+6539AKwuwmwnHx51/tlFL/81s+tfV/Ls37Ybp/b+W8pjN1sRDEKeS/zlWhzb1Q1P7F8uf6F2RH3t8QasksEyAX/RYwXp7YAOqN3sOcuw0gBv7YemSdsGEBC+xfsL3JOmE4joYYm6WsE+Mi2lsJi2+CzVi0ecsyHtwj2OBFm74sY0F4IBygnMrbAq7z8Cxb53tYBzqI59v+++9fB3qy5F3AEw+vT5Ebdvhk3qRJk2ALKDzMWrRoYdPcg1Bk1qFDh+DRLSw84NrRRwePdWHh0YfPPtsefvhhQeEIECop65R1tUEqNIBoemDe3LJO4IBGFO1G1gkvOBxBovdd1vFASx49B7OOBdlh0HhpzvCYGh4yCRyEhbup/vhj8ISVltyN71xLXkkquDo/jUgDmIJLTGynI444IgWSFl5ENDz77rtv4RtKQQtMYDiBYAso8lgKnTqFGIDCwuzEE0+0cePGCQpHAM/woUOHCgtHgDimNRgAOdWYypY8MQ5M9UVcQuEJtNb19NNPL4mbtIT1FeR04iltvfXW8mRzdIn/tNVWW4WAsgUBO0WVEtOqcePGIawD37NODRs2DGFP8I7OOm288cYh6LU05WYbbbRRGBfYh2adGBfMGTFWX5bxaNCgQQg47hgQhqWiQNB1FiY9NVJwaQlwS7YLkXvseCBTMpOIku0csMAxRuQRWT0TC9vAIg9Q9tJLhse8yKPhvvpqyB4iLBIsJkyYICgcAbKsZJ20AEzBCOBtjXRfoiTrBOmjREnWBVJ1SfuXjAaygMjOK8GCuHcKDv4LFjHbT9bnDbShiqCQjAKwyDppAZiCEUCID4UwSC4Ui52YGigFl66gIoIF2xgKAZPAvO6662oBmBtxa6+9dkiRVdABmJLKCZOE6YjIIw3n0qwJCyEAAloApmAckO/13XffTYGkhRcR70a2dETJFjAJ7MmxKfJcTY6FtoCTkTBs2DD76quvNCwcAZzoyI0s8rxl48fLUSo3EIgDmHVSGJgUBIIm3tuMGTNCzLesD1g8XqdOnRocQbKOBQu/iRMnhlAG2ga2gMWmm24qbbnfGMTLXH/99RXw17FgvmDbk5SaWSeiKOAMs84662QdipAdpl27duCgQNCZHw1FDABvbV27khFGxFvbcccdJyAcAbRdhD4hzpnI7KCDDjIcpkRmnTt3trFjxwoKR4DQJyNGjBAWjgDBj1988UVh4QgoHI7bkWd8JKQiEHTGr5G6LwSEgBAQAkKgRhFQIGjZANbogCpUZdi8tWnTplDVp6petjyJiSgywzYU73CygYjMmjVrZlOmTBEUjgBbW1VIdp8JrA455BB75plnMtHXyjqJZviee+6prFgmjnfv3j0T/ayok9IApsAGELu3uXPnGmEusk6kgWObT6FgLDh/sOBp1KiRQsH4jTFp0iQjLI485hO7N7yiSY2XdcJshMgBCn5sNmvWrHB/KJKCGeOiZcuW3B6yAcz6JFHM/f/www/tqquuKmYRa002JrDLLrus1tor5oZ4MejWrVvIjVzMctaWbD169LA5c+bUVnNF3Q62Xjg/iMzuvPNO+89//iMoHIG+ffva8OHDhYUj8OSTT2Yeh+Uzj0AKAEDzt//++6dA0sKLSEwvHB9EFuK8gYWCHyejYa+99jIF/E2waN++vRELUGTWunXroBmuCAviBJYOnI1z1YIFC8JpaFLz77NFixYZIakWLlwYjpN+kLR7lCEzD175nJ/voIX37XLLLVciBudivsEnv9NGfkzPH3/8MZwfY/fF9inPMc5FjsWhXXbZxdZaa63FOaXOlm3VqlWd7VtVO6YFYFWRWorl8PZke4tJPevEhCzNRjIKeBBMnz59sR8CdXUMYRqgtHjJ1SXuHeYSIrPPP//c2A4vj1is1a9f/1eLL8qyICOdHguwsraPWfQRoovwMnxnMcb/LPoIs8KCkHuU9JUs8Hh5LU0sPInXSPtxgVe6TPyf5wCLPhb21M3LDnXnLzJj2fI+CSeWv8gsr1wWflfEADmBpGKcM4nEN9FUCFxAIYl9x6QnsvDAmT17thaAucEwc+ZMBcXOYcHCpa7NGSzuucaLyyx6WBBzHrbUpYmFF4uiCy64ICzEWIztuuuuoRhaOxaCvIDze+SRI0cGWzq0aczP1113XXBCYjFIGj5iMJ511llh8UkMwriAZCEa68AZA3tVjiED4WrisZ122qlEzLPPPttIW0Y5zmfxh2MLNmy0l69VLDmpnC8sFvWSVA44GfxZGsAUXHRu8m233TYFkhZeRCZktnREyRZwx44dF+sBUJdx22OPPUKQ27rcx6r2jXuExURdohtvvNHgJSG0fcRVLcsJAu1aXCBiJ4cX9Y477hiau+WWW0qO8UNcRLH423fffW3w4MGh3BZbbBHqHj16tP3zn/+0xx9/3N566y3bcMMNw3HqZ/sW4vgJJ5wQNHm0feutt5a0kf+SO2DAgHDOwQcfHI6//PLLoV40WMQ3ZE5E81gV2mqrrZQLOAeUnCrNtACsyl2zlMuwzffQQw8Z9htZJzQbGLgrLI4ZTiA9e/a0559/vtLtoyyMGxyl7r33Xnm++sXu06dPiUarrlz7ffbZx27pc5PdsmdDW2vlxX909Rs7x75ep0mZi798jNDGscADQxaAxItjXMXf88ty78XF3xVXXBG0eGgTCd3Vtm3bELHgmmuusZtuuin/tFAXgbpZaKJtfPjhh8NWcFltoF3kRS/mMz711FPDYvH1118PXr0oCKpKyNu0aVNr2LBhVU+ps+VYmGedls06AGnoP/HN5AWcXKmNN97Y+ronm8iC5qB///5hS0h4JJH92XoTmd1xxx1hS7IuYbHlllvabru1t6cnuE3dssssFn+z4GcbNHm+ndela6WQNG/e3Bo3bhy0bGwd9+vXLywC0cCVJl7MIbStF154YTDHwEyFRR2aQehf//pXicYw/OB/yFoDscjEdpBPFo4HHHBA+D3/z3777Rf+jZrDqLmK28doIatKZ555pqEpF5kdeOCBmYdBC8AUDIE33nijzIkhBaLXuIiTJ08u2Zap8cpTViHbPk2aNAmawJSJXhBxW7RoYR9//HFB6k5bpR06dAhbj2mTuzJ5zz2/i708ZZ59+V2yjVpZ+Xi8/4dz7c877WiMkcqIbeLTTjstbLvefvvtYXGGnd0pp5zym1PHjRsXfvvjH/8YNHQ4auDUAfHiDmGnC+cTW/Qcf/rpp8PuzpgxYwwNZ+n4pngaE/oKhx4cTcjxHLWJ2AZiD7g4zj7nnntuaC9flqx+Zws+66QFYApGAFu/r7zySgokLbyI2NgopleCM3ZMGKfzEBCZ8RDV1lYyErATywW5rVNDAy1g+/bt7KkPq+4INu+Hn2zQR19XSfsXwTrO843jZXv11VfbhAkTgrYo2vHFMnyyWITQ+kWKXrb5v5V21KDM6aefHs476aSTwqn/z96ZwH81pY//jGUMM0M/2zSWSow1wlhDi1ZJlCVtyl4olEpFqLSMpZKQrVAIkURJKRkVpayhSPJvJPsYzNi+/+d9Pp/zdft0P/vyvfdzn+f1er7f+7n33HPPec5yn/us/E4EpIO0AweQpUuXmnr16lmGsHPnzoa4ly4cTOJ9yX5jZ4jdoUIsR3TU6aAMYAhmALYKHTt2DEFLi99EQsBoTMQYnbFNwjYIW0AFY+NDamiH2Ew499xzDTZm5QjZSgGfeOdLs88+e2ck/XP0ImQLTKCTrvXs2dNd2uj/YYcdZn+/8847BukfzJqzyYNhAzBb8YvJyJ6OhzDPQJJP+r5EoD68kJ955hmD1BBpIJI/zGCwF4RBTGQuE+vw/h40aJBVbXvPRfUYW/KogzKAIZgBfPUOHDgwBC0tfhMJsYCxtYKxkj+kAJr6LDYbXBgNnRvGMgnlKg3NRgqI9G+mSP/6ZGD7lzhvUAMT5uW4446zkrfE6/zu1KmTPc3HGOpVpH4wZDh1PPfcc/YajJ6TFNoT8T9471500UX2GTB1TnLoLcMx4WKwJ0QdjNMX+x/HPJNn+Xk0J9bhfsPUqjNhjBrODtPRJor/lQEMwagTxwpjfwVJ3CwxAJUWsZlAnDdo4UJSRH1+EC6DF6OCMaiA8ZgvV8hUCjjtva9Njd138w3CnI422PVBQzx1kzFnBOeHqQJIOYf0b+edd67U2GDn169fP3vd7w8MHc84//zz/S7bc4MHD65UMZP6EemkQ6S82UgAX3zxRUNqUQVjw/xEnQ7Z+9JHnWJV0H/sP/BKUzDW0LpcJRvZji9ShRo1aiR9OWVbX9jL4x2Zzcsw7P1N1X4CBiemNktVPmzXfpMCvmouONQ/5Z2V/onn70WXnJVRfMiaNWuaww8/3KpjoQfSPJdlA2kdknauA6hmUb/igUuImJYtW5r77rvPEJoFk4y///3vBjs9F+fPSQZRGfPBRqYQwH2wMG8ZLwI+8wyvM0jdunWTZjJBPZwNYMdYbvEhs+m/t6yfTaf3ehSOlQEMwSjzolc1X2ygoEU2Ko8QDG/OTUQqgbQhmXQi54pDeiNMD3ZRCsYyGHiNljMgBTyheTPTdt/tzI7bbNpXpH94/iKFS7V/4kgBI9enTx+L0Azmzhu0mXMwDN7YcTB6eOKzHxEixi9MDHV/8cUX1oOXcgsXLqQqC1zzBnBm/qJ2Br0wffp0789NjgkinSlAB10jmVKr/MupCjgEY8xGRGR5BWNzYRJkVSGWjWDmzJmV6qGo0wRaOIlK1Gkxf/78ynAk5UqL36SAm3oEO+kfcf+WLFliU7IlowPMHmpYzEtgyECYNhg0B5z7+uuvK69zTHkYR/ZnnDMoAzMG4hBCnSD1cI7wMK5+7nXhYtwz/NpAO9w9fv9dO1wd6f6vWLHCppBLVy4K1zGtijr8LuIE2Fb6/w1u/qhZgwosfCYrnmJRB76616xZo7SQiYAqiTAw2Cr5GZlHba6sXLnSoMZLJe2JCk2IF0dQ7GxVhGGjD/ZsSAFva1lzIyngxNeFoZOsH5MemmKIHIC3rfPODVsfC9le9k7U2U4FXci6w1YXnttxz+vtpO2Z5dILWyfTtFclgGkIFITLGPoOGDAgCE2p8jaQAN0ZXVd5Y6q4AUgZ2rRpU2mnVMXNqfLH49X3ySefVHk7gtCAbt26lW0YGC99/aSAXukfZQl9gvODQiz/MJJyhVjmoKjTQSWAIZAARn2Sav+VAkoBpUAyCiRKAb3Sv2T36HmlAGF00J4IqARQp0NwKYA9j1+Q0OC2uHgtQ12PV5yCsbZHe+21l7UvUnrEUm+h7lMwki2jSWTCXHilgInSP+ZCu3btbMo1nRfGprO7++67lRRCAULwRB1UAhgCCSB2bxgauyTgUZ60RM0n24M3TEJU6UFoidWrV5s999xTbQBlEmAPSVgctQE01u4Nr9JytwF0a99JAY/a7U9m8xoHWts/dw2zETxwg2zn7dpa7P84q7A+NJKCsc4w8XSJKgEs9sTT+nOnAMaqw4cPz72CMrpz/fr15pprrimjHuXeFTwLCQzr0lXlXlN53ElWlETPyvLoWfa9INF9lKShTgr4wodfb5Lz96677jLLly/PnohleAexCjWKQmxgNaGAMZuX4RzPpktbSeH+JOEOstSAOG8E76xdu3Y2fSvbsgRMVY/o34aXOGcaANkYMqPsv//+gV7Lv41acY8IPULweAIWRwUOqnuwqS5ST9KmeYEwLwSPVy9gY2MAIiUnxZ2CMVOmTIEMIwT/F0V6qBdwCEYdb8/3338/BC0tfhN5yRPKQCGWqWDt2rU2aK3Sw1jTAE2LF5sJn376aeQkwzB5FycEUYYaeIZrfMjYvCCcmErJf6NF7Ci6f5UBDMHYE2wUxkchxvQQRFUhRoHPPvtMGcD4ZIDpwS5SwRjmhe4ZsZlAHFU1k4jRgtR23gDXulaiTQHNmxSC8SeI6cEHHxyClha/iai0GjRoUPwHheAJpHQ64YQTNLVTfKxatGiRUc7XEAxt3k1s2LCh5nyNU5HcugTFVjDWREIdQGIzQXMBi0mALorgUwCV5+TJk039+vWD39gitxDJBgbujRo1KvKTClc9jBo2nN6cvUiqiEOFPSM5W50NH/ZKlOO/k2ZxjBT497//vT1PWXf90EMPNdtuu639qsfLkWsuKwhlkHyg/sLGlWdxjfrdMyjj0NtjVKlIWrkWFhg2bJi59957I+P5mmpcbr31VpvXlnkXdWDvPPHEE5UJlIkwY8YMaz+tURTMRnmdo7pGNAxMCMLA8BLHDlANd2Ppz2CckIqGBXbccUfL5BGmxKlf+PqEcYMRg9lCNYM9HwCThlcjDBjHLnzF22+/bUh3BiN45JFHGuqFMaQM//EKTqwDBo5nAB9//LFlOjlmLhEmxAH34zXKXIOJJEAqdGbehQVQ9ZHmyjHTYWl3MdrJ2G299dYqHRbiQgvWTJAd/YoxB/zqZI3wQRqV8EB+NHDnsIdEOiwQ2TAwKgF0syHA/xcuXGgGDx5s5s2bF+BWlqZpMFFt27Y1hMYpJMAoESIh3wThRx99tDn++OM3ahoMGtC0aVPz0Ucf2eMLLrjAjB8/3h6zIROUdOTIkfY3KhqSvDtVzaxZs0z//v3Na6+9Zq/zh3tOOukkM3bsWAMzyTMWLVpkmjVrVllm6dKl9msfSSIvPzY77OSAK664wtxwww32+PLLLzf33HNPJXMIY4mk1bXbFgrBH8wk5syZo97yMlbNmzc3N954o6lXr14IRq64TezSpYvp1KmT3TeK+6Tg1866//vf/24uvPDC4De2yC1k74w6qAQwBBJApDMgL/2oA3RASoV0o5CApOuA/fYxW23+u42SymfzjA3f/WR2qr6LWfTyKxvdtvPOO1upVK1atSoZQL7ACVCLJBPJ3e67717pnecYQCohhynqbpg4ypDvlqDgkyZNspLDvffe2yxbtsxKvp577rmNGEBefBMnTrRtQQ3GS9CBlwE89dRTzeeff26dBhYvXmwlizCAqI6RGIQFGEPoGjbGtRj0dWp/3TOMla5DB6WFsRoI1odKyWOSYU0FV4zdR+ssKAVefvnljV7eBa08ZJWR+aJNmzYFbzXOJUccebTZYrPfmRub1TJjTtgjKxzZtKZtU68r+qRtGwweTB/2asCDDz5omT8n8fNWgJQO5g9GEYnezTffbCZMmGAZQMqhEvYLaEpdDz30kCHyP3DLLbfY/6idE+Gxxx6zwWFhLsMMzAuyxCgYc95555k333xTSSEU4GNn7ty5SguhAEH047HvIk8PtydGmRAx3VSUKRCCvmMPNmDAgBC0tPhNxJvv2muvLcqDbrzpJvPDTxVmrmQTyBZmrvrK/Gnb7ayELt29HTt2tCrZcePGWeYOVQR2el27dt3oVmyXZs6cac+deeaZBkkizNobb7xhTj/9dPubi4888shG9/HjnHPOsRI9siDwAfHKK69Y6SBSRC88++yzBslhOcDVV1+tnq/xgbzssssMEmcFYzC3OOSQQ5QUQgH2GI2iEJsKmBJFHZQBDMEMQKoxbdq0ELS0+E3ENs5P4lWIJ9esWdMcduRR5qE3Pzc//ZK59+t/f/7VPPL2F2bgoGsrHS5StWennXYyMHQ4XfTr188ydNjzJWZ6Ie2dC2zsXuZXXnmltX9EjUN7AWdX6H0mDCDq0Ntvv91KDbnWs2dPbxF7TCq53r17b3I+jCeefvppDfgbHzhsIVHrKxgr3fZbI1GkzYIFCwx5kxXUC5g5oAxgCFYC6knSOikYKzkrZgiDXKSA2Uj/3BiSfhC4SaSOgPttf8T/eD31nC3eLrvsYho2bGhLuIDYeL4mAirjzp07W6cWJIR77rmnjRmYWO6ggw6y3saJ58P4G9qobVNs5PDwJuyPgjHVq1ePVEq8VGOOw5iGBopRSOMAKgOYaq0E5hrSHsIYKMRCpPjZsRWKNtlKAbOV/rl24onnPDTJa9y4cWN3qfI/DA3qf2D27Nk2Jh+e4LzcsYV06QHxLvaDSzxpsS6++GJf54g777zTEF7GD2AseVmExXgeuoSlrX70LuQ5pMzEl1QwNtyS7p+xmcBHga4RXRWOAioBdJQI8H+8Pr0hQALc1KI3De/GF154oajPyUYKmIv0zzUem7WTTz7ZXHfddb6qY+wCUeUCS5YsMYRr+eCDDwyeuu3atav0DPd697q6+V+nTh17zymnnGLOPvts76XKYyRmzC8cBsiZCqB25jdIG1wcwsqbAnqAvSTzQ8GY+fPnmy+++EJJIRRg7bi5HXWCrFixIu9QV+VCw3xDfpUDHTSuSAhGEakUjgMKxoYowcC9mFApBVz2smm8RzWzpYSG8QMn/Rt+4yhfBs7vHu85UpeBqQCmjxfYo48+ajOgkAXFAV/yd999d0rzALyG0wFektTvADtLVMMADGei44grF7T/AwcOVPVWfFCQ/qL6VDB27wxT4PhijlmrVq00CHScwEcccUQxSR2KupUBDMEw4fU5atQo8/jjj4egtcVtIpkukGYhBSsmIAVseGw96xHcYi//rCOZSv9cOrVzzz3XStsIFg0Qz5AAzYRrad++vc33DMPnbLf4Wsd2j7ANffr0saFf3nvvPWsOQFrADh06GNTEDmrUqGElfvzGbpTMHzgQEQDaxcY766yzDM4lxx13nLvNpsnabbfdKn97Dwgn49rvPR/EY8LYTJ8+3TiHmSC2sVRt6tatmw0uTsaYqAOhT5gbrVu3jjopbDgoPu6IERp10PepMf6ijejMjG2lq9/wUg2Lmis6Q1P1PT1dXhpvixTw7tZ7bSIFRPp39rT3DdI/QrKkApixxPlFQOsvv/zSpmRzqdqS1UEcQMo4Ji6xHAwaqeSSBcfmGnEHkYKke1Zi3fzG2YT7FZQCSgGlQLlQgDBbaQJBt5O+XixYV/BPghjV/ioIID68SvBwQbISfCQ4SnCiYCZwqRSi/FDBQfEbdpL/pGeqL7ijIG78DwteK/ijINBAcJ6gy9EJD/eVYA1BB6SDukMQx4F+gpMFAbj+CYJTBe1LS20AhRJBBwz/mzRpEvRmlqR9pIAj5VcpIGYL+KtvXMBMpX+0kwwVZNaAkQKxuSMlG3mBCdSMrRaI6pX/MIYgx4TyoAzlOUcZh4S2IMk9/zlHOcrjMQy6czwPaaOrg2tsfq4tXOc+P6TOsDB/2DwSWkfB2P2i2FLysNCZkEvFCh0VFhq4dnbv3t3g+KVgzLBhw9KR4UspME7Qz+ZoBzn/mOCBgtUEYeiwz8lEzLyPlOsp+IagF2AyidGDRyDCKV76JwqOEPRChfzYTpAyfxb0Mn/y09wq2FSQ4JeDBbcSdADj2FKwASdUAhgCCSAvYF7WBEGOOsDIoNYsZigYL439pIDZSP+8dRX6GMkg3sCoiZNJBwv9zCDXR55o1OCo1aMOMMJ4RXtDCUWVJqRcJHJAMaMHhIW2fNCxPvyyDoWlD4VqJ04gmMcIwEylynkJs/S8oFcCKD83gSfkzBrByze58tsJhG4LBeE+Kfei4CDBZABj2VUQZg5wbUG694s9s+mflXIKxvFbwZcEDxD8r2AXwSGCEwVhVA9RCaBQIeiA1GvEiMSPgKC3ujjtw5uvWJlA/FrsJwXMRvrnV2ehzvFhQCDnH3902oFC1RzOeoYMGWKlpOFsfWFbjbMQHwcKxjpKaRSF2Ey47777rIe4zgtTaKkw0jgMbpeloe0Aub5KcHqacu5yMzlY7n54/rO41wuSxqm+5zyHPQSfFlwkyPNg/rwwXH6gYj5/c+/ZCB4jKuiPU8GsWbOscT0x0XA04KWK6hUPSETmGFPFjrPnAABAAElEQVSTgxXPun/+85823ATMCBsL8dJI0YVq8tZbbzX777+/NUYn9lQu9WEzNnXqVFO3bl1DujBUW8R8I3AljgEY9yMJc+0j3RceTRMnTrRf/YntS6yPuHNPPfWUjRPmVx+epa4++vviiy9W9vf111+3/cWAlvbddtttG/XXWx+hKKBfoeoj/Av1kdYM1SebmXc8cG5w7UPlg7EzmTBcfxkPb/uoD+eHe+65x34J+tWHenWt0PuFt1abVntvb376tcIMe3GdOanNaVYKCXOOhIHxoL/UR45fvizvv/9+Ox4vvfSSpZ+3fWR2oX133HGHbd+MGTPseGRaH8wfKl3Utq5/Bx54oBk/fryNHUh99Ndbn+sv8/iwww4zDzzwQGX7qI/24XCE1OjJJ580mdTHeLj6Jk2aZOtbuHBhZX8JJcP6oL/Ux1oitqFrH1kJHP3c+OZaH3aW2FYi5WD9kvWA8WBdEHdx8uTJtn2LFi2y7YN+9Jf2uf6ylrALIqsI9HPty7U+5j71PfPMM5X1IXlgvrCuaB/zLln7oJ93PDKtj7n11ltvWYkoqmDC49BfzlEfzjLsK8z9vffe26YcdP117WMfYc9hHh966KE2ZzXpCAtVH85P1EeqQm/7GA/2J2/72J+Ja4i9Nu1jPKCft33J6qtWrZpBOsyelm9/cxmPbOZfvusj3fpljRM9AClgLvtVrvspZjC8L93+nMn7I5f3WzbvX9b4smWWX0O68r8U/E8tueakZxU+5baUc48LfinYV9CvjJw22C79Q/BkQZiyroJrBecJ+sHVcrKVYHtBpHnAD4KTBAcK3iaI+nmC4FOCnwoCHwiOFRwj+LagA55/vCB2hiSJH6ESQKECcc/WrFlTaauFvRZ2Urz8sdNi0wFgwjCoZwNydlqoI3/44YfKoLy8MLiH+rCz4mXk6uMc11wqHurjXlcfNl8c8zJmwwJ4gWPLxX/qYxOnTtrn6uMawD3UxwuVurz1rVyJVNhYBog2IB1w9VEn9aE24poLDMw9tMVbH8ecczShLJsx9VEHGwzIMeeoj5cOwD3cCwPr7NtcfY4mlPXWx6ZBfajAoRf3u/5yD79h2GGEoDN1e8uwYVMf91IH9YGuPq6xaQLe+qgLpO7eV/Qx3/8UswVE+vfHP29rHSqog/EHGSOeQX1scgDtpC3MI299vOxgRAE+ILgHWlMf4w9663PSC+6hPsadOcC4MeZsrm7Mli9fXlkfdXjroyzPogzAPbSFcacukLo558YsWX3YDdJmGJn4JmrjBtIWxt3VR92cc/VR1vWX9jH+oLe+V1991baPcUmsj7o5x7gClKU+5hZ0ZvxB1ifjSfuWLl1qyzIu3EtoG9rHvHL1uTlAWepj7GgT4+/q4xz1EZYHYFyoj3GnPuYVdXPOzQE+VqiPsaNN9oNC6uSYc9RHmWT1UTfr1M0BmCXqY+xcfdTJenL1UYb2uP4yTm7eMweoz80BmDnqY3wS6+MZtM/ZEjJ29M3Vx7znmPrcHIC55h7qo03MJ9c+znGNMgBjx72MHe1z9bF3uDng6mO8qY/5RJ2sd85RHx8cAGNHfYy7W5e0jzF09HP1+bUvXX9pY+J4ZDK+yeaL3/zzzmfmn5vP3vXhaE3/GQ/veoM2qdYv9GCOptpfGK9k+xXrhPkCHfz2U/Z7tza9+2my/R6aUx99SHx/uPcR8xqg7enelzyTNkAH5oLrB3XTL665d5f7byvP/Q8OIDBfMIGtBX8V9IMt5OR9gpcJfu1XIOEcqtrzBBsI/stzDcaNzY/nfCd4kyAL6gzBbAAm8n21AQyBDSAT/9lnn/VNF5bNiJdDWTZ2pDSEdiglOFvAHyVHcCaev6VoGxs96vChQ4eq3ZsQnDzJ5DUmC0bUYfjw4Tb0iaaQFHdIkbIj/UOKGXVASorU2RsGKqo0QUtEhiSB7QRzsQFE+oaq9XPB0wR/EkwGNeUCatsvBB3fxXO5h/MHCjoYJwdNBRsLfuxOpvg/V64tFkQqmAq6yEUYyxrxQkeoBDAVuQJyDRVGqTxfA9LlpM1AzdegAR9FpQVsAZEC/mnb7eyLtbRP938aKrETTjhBUzvFyUNQbdSHCsbmi95hhx2UFEIBzB3UgS42FTAXgQFUMBvFUE1CD/ijreJIkT/Ej2Hg/iK4QHCtYFvBVMyfXLbldpf/qGHrxhHVxJ2CTQSBzQUnC9YXPE7Qj/lrJudrCdIGpI9IFOsJThXMFl5RBjBbklVBecTZ2C8piOGCqD692TAKSRNUEagb+J8IZAe5fsQ/zMQHJucUSy+xvkL8Rh2C9M+vvYWoP2x1ENYBNaaCxIEQW2RUXgryRpW9E5WvgoirxO7NqdejTg+nmk9Bh85yDZu7mfEy/5H/3wvCnF0oeIAgNnqodJEggkgEHdwuB+53hRyjyvUidoDfCjrbvWPk+EzBPQVXCVIf1/nv4Ag5eEGQcyzwkwRbCC4TzBrgIqMM20rnAx8IGjsXbD30iz5mr4ltRzFSO8H8kRINY3gM0FEZkWkjl+DJpVhUODxAC8JbBLWNpaCDewZ2PkgAyW8cdWBekFEGKXHUAVqwpjU8kHANskZwAtHwQMbaR2cYBqZsl5BKAEMwtHjjpcs2EYJuFKSJ2EMecwwfSoUHDJVh+nr16mWzauD9iFctRvVI24IGGHKj0gli26qCVphJqNQrRvnmzZtXOpdUxVgE6Zldu3a1XudBalNVtYWUkuxrChLhWSJsRB1UAhgCCSCSHpAvt6gDdEAimiztWT70IRQIEj+XMxSPb9QlMOB4EhLe55BDDrG5ZoMgcSMFHF7BfM0HoT350L4Q9yIlhxYaFFvcA8VBCImX7hkSb0PWMXRQWsQ0KOwVKiUX3apIhtOkgivEthToOlQCGOjhiTWO0AVnnXVWCFpa/CYSwqBNmzZFeRASQOKSOUCFhrSxX79+ZuDAgfYa8R6xryIGGRtIVQLqHJxAeMEpGDsv8BJXkPgR551XGd4o6vRA6jV37tyok8H2n6gBDz/8sNJCKMA+HnWIurEMHj79e/ToEWj7EDxfCexKaqeoA0wZkrhieLLxkmjUqJGvfSFjcMABB5jjjz/e2mISvwqDamKDYWeFTWKpJU88jzAfpMUr9bODOA9r1apl0+Kp3ZuxAdP32muvokjKgzj2qdrEXgEtCIgfdYAWBP7WtHjG2gs/+OCDTIkRgqkCQZfttFGdYgiGlkC5RO6HCYw6EBCVrBJHHXVUQUmBFA0VYjomG+aCrA0gwWgJQjtz5kyroiczCiri7bffvqBtS1YZQU2JZQUtVKUT83DEJlIN3I2ZM2eOnYfFcJZKNh+Dep4MM2RySre2g9r+QrYLzQURDcigElUgkgRmPTj8RR2UAQzBDED6xBesggRlErsmJD2FBtS/MA7ZxJHbcccdrb1gq1atbPgYNlcMi9lgYQRJeVZMaRS2PDVq1FDpX3wyYL+pjHCMGDA76vUaowUxAFX6F6MFa6RUH6jxZRmYf5iHsEeTDefoo482F154oeHjIMqgDGAIRp+XGmEMFIxldrbbjgDqhQXix3nt/7KpHfUrYWNA0iOROos8tEgGyX+LZ3ExpA88lzarA0hstKCxGvrHaEE2FN0zYrTgA1qZ4RgtohgaiMgAMH448h177LGmS5cu1mSH/NxRB3UCCcEMQO3pclmGoLlFbSJq2mJ8tSEBLASTBnNKCI4hQ4aY7t27W1qQuo4k9OTwxIO5UIAKGCbzl19+KVSVoa4HWuD9qmDM/Pnzbe5cpUUsRzC2ugqx/OSYFJU7ECGBfMUTJkwwpL9Dg0ag+Hbt2lXaeMMQRh00DEwIwsC4pNuoFKMOxLwjMwq2XoWExx9/3KqWTzzxxEJWa+siVAtJ4/kKxf7EBZnGDicf6d3PP/9s1RmEMlAnkFiyeNTvKu0xBm/56tWrZ2XSUPCJH5AK2S/4MFN7SEkdIdIwQmjlqu0IyJAmbQZhwt577z1r40ec1MaNG1vHPj+74DfffNPZ1afLBZz0eWG/oBLAEIzg66+/bq666qoQtLT4TWQDO+eccwr+oHxUwOkaw+bTsGFDc/XVVxtCUmCPNGnSJJukHnUxDGIuQBgaQuIUUqqYSzuCcs9pp51mvbKD0p6qbAfSZ01/FhuBQYMGWZOMqhyPoDx77NixNnpBUNpTqHagBXnjjTfsnjpr1ixTr149M3z4cMMHvR/zx3ORDEYdVAIYAglg1CdpsfuPuuAf//iHzQCCU0UpgPy9BJlGKghTi0TTBZlWaV4pRkCfoRRQCoSdAmhBEJC89NJLtivERcXBIxPnO+Koxu3JVQIY9olQzu0nPl3Tpk3LuYsZ9418vTBKhQQkcKiWS6kWwUCfjapv375WMoi6DjU0wUlxIGFzSgdILbFt0VRwMUqhWv/www/TkS0S15s0aWKdkSLR2TSdbN++vV1baYpF4vLFF19s01uGvbN8QKM9QaKJeQ3Zm4YOHWrq16+fEfNH/wcMGBB2MuTdfpUAhkACCIOCHSDhDKIOqDsx6C5kKJiPP/7YxoS64YYbqpS8fM2ixkAqiB0LzB3MLsGe/cKbUB6GZ88991QbQBk5wjsgwVUbQGPnBU5NydRfVTrRS/xwnB4IfKzBj4357LPPrHd4MSIplGJYide6ZMkSm5+9WrVqpmXLlnaPzEVrghMINsMCKgEsxeDpM3KjAFknRo4cmdvNZXYXzN91111X0F7hAUzYjKoGQpgQMubSSy+1X7Mwfs8++6wZPXq0DexLO72A5A/bULyBFYz1vEYqqmDMmDFjzOrVq5UUQoG7777bLF++XGkhFLj//vvNvHnzQkcLhCC0m3nNR2/Xrl3t3kdA/lyYPwigKfGM0VRwIUgFxwTfYYcdbMqv0K3cAjcYez1iWRXSIxoGG0nJwQcfXODW5l4dnnp495J6jvRNhDSYMWOG9YBmPhDMFQ9iENVnrptg7i0M3p2ohUgTqBJAY5AO8wGhAZCNYc9AY4DEKOqAJgEpOe+TMACOboT9wjwGs5kOHTpYdS/S7XwiKLi+33vvvRxqKjhHEP0fPAoQ+w4GAGYg6sBLnrAOhQTiLPKyDCLA2JGDGMQuELsXVMTEvCOn5zvvvGNfcEFse6nbRKR/GB8FY9avX6/e4fGJgNYgCBL+IMzLdevWhWK/IIQLjh1Ibvmo69WrV8EFIJj+RB00E0gIZgCxjTTUR2ygcPfHHrKQgGr1mGOOKWSVRakLG6ZmzZpZhyDivD333HN2kyTI9OGHH24lgVGWfn366acaFDs+88hTrXtGjBh8OCktYrSADnxEBxWYt+TpJYQRudX79+9vNSBBbW/Y26UMYAhGkACmQVJPViXJSOvUoEGDgjUB9VChsoAUrFFpKkL1gYMIqhwcg2AMFy5caO0FkRRiR4jauBAqkjRNCdTlFi1aaODj+IiwRsKi5iv2JOLjSB3oYlRGmsYeGjRAYg3j9+6779qPWWI3FiIzU6p+7r777qkuR+KaBoIOwTBj9KpBK2MDhZTnlltuKdiooV7niziMKiIMowkuTdBTnEEIMg0zOHnyZHP77bebRYsWRSo1Gqme1AkktjTGjRtn40sWbKGEuCLWA3a+CsYGgSb+aFAAD23ebTjq8MEyePBg6+BRbOaP/rvYgUGhRVW0Q8PAhCAMDK7v5DjVL/qYcTuGwYVK64Q94bRp00LpZY1pgAtm6pX2wdCSd5gvajxBXZDpPfbYo6ydRaDFH//4R9+QOVWxuVblM1kjOEtlEhC3KttZimdDCxwIomwe4ejMGiHaQFWGB0Lrwr6LLTM2icTuI85tqUPTaBgYY1QC6FZGgP+zUEhirWBsfLxjjz22YKQIm/rX23GcV2CE+UDwAi+7o446ylxxxRXmmmuuMeQchsklaCoedYW2ofQ+uyqPMZMgq4qCMajDCZCrYMzZZ59tnnrqKSWFUIDA8xMnTqwSWsD4rVy50uB5+8gjj9gPU9K1kcKx1MwfBKjquK9VMggJD1UJYAgkgEh6QL7cog7OIYYwKYUAHCkIjdCxY8dCVFfSOthQkQwj9fJKAP0agfMMyc/5mMBzmODRBJnGk9gvyLRfHUE/hzofyYaGxDF2XiDx0j3D2A8k6KC0iGlQ2CtKuebZs9lz0EggjUXah41qofbwXPclpz2R+zUQdK5E1PuKTwFsFbp06VL8B4XgCYTDadu2bcFais1YKVPAFazhUhGSPAzcM/FwZMNHQtajRw8bZJoYgzC/o0aNsv8Tg0wXsp2lqqtNmzaGUDAKxpx//vk2q4zSIib1mjNnjpJCKEAQ/VLZk/PR+dprr1l7ZPYaVL1I/JBOVzXzx2Qg/3vUQSWAIZAAwqRgLHvQQQdFfb4apDyECEDFWQi47bbbzOmnnx5K2mLrh0qX+JC5fNHzZY7XHVJBEqrjFYdUEE/BMNqOkUP5sMMOq1L7pkLMyULU8fLLL1vpbqFsZQvRpqqqg/SKOBWUwrGgqvqY6XNRwaIxwCykWEBmIhg/IhMgdYXhY78OmgSW98iBBx4IGSIrAVSdYrFWQQHrhfmbPn16KJmUApLBVkWA0CeffLIgDCAMUJglgEj+HnzwQatOyYUBRFUKsweimoFpgBkkyDQfGzCDYQqf8fTTT1u7oqo0cC/0fM+1PiReZItRBtDYj6QjjzxSGUCZTKhh+dArBgPIB+nSpUtt9AEy0KCpIVVbLntTrvM+m/tgUKMOygCGYAYQtymomSpKTT4cHEjrVAjABgQ1xY477liI6kpeBxsrnr3p7P8yaRhzrEmTJqZx48bWc5gXxYQJEyxtYAT5UsarNMiwyy67BPZlU2q6Va9eXb1e40TnI0ZT4sWIwRopdDQJcpLjcMQHJOG0OnXqZD8gg26Lq3EAjVEGsNQ7cw7P40UfRpVcDl1Newu0INZdIQC7NzbDoKkmMu0bGywv+kIwgO6Z1IWDCHjGGWeYJUuWWKnB7NmzbTo6mEECUBfyme7Z+f5HxRfWscy374n381HDx5KCsfuFhoCJzQQ+4gq1RnBAI9YoewTMFHanhJwK4t6g68CfAhoGxp8ugTpLuA9stBSMtQHE1qsQAAMYVgcQ+o8K+Iknniha+jMMtTHcHjBggOnXr59VJz788MMGu0nUJ9hjBglQXfNSUoipPcvBsacQYwmDos5BMUrijUvsvXwA5zPW2ujRo60JTc+ePW0QekxJwsT8aS5gY9QJJAROICw4Eprvu++++azbsrgXdQNBRPnSzBdmzZplvdHOPPPMfKuqkvt//vlnG16B9G+lUrdg54OBN7aC5CNmTiIVrF27dsnakIzYGLjXrFlTVZ9CIMYG6TAG/1EH9gvizKk9pLFxMvmwy+XDF3tpIlIgjKhTp45p2bKlXW9hnV/qBKIq4FDMXV64pHYieGbUgc38vPPOK0gaHzY08uaGFfgwOO644+zHQanCKqBWPOKIIyxu2LDBjgMOSjCghJkBq1WrViUkJaAsbcnERtRlycC0grYjucAeFKYadOe4zjViLuLdyH9+o0ajDPfwm3tcOTpPOYAyriy/YaBJ4UfZRJtKAnpT1qui45mcpx3e8tSTKvxP9+7dzZAhQwzOD1EHgqETIuiUU06JOinse4SPtnPOOSdjWrDOsQlesWKF3S8HDhxosCUMO6DNiDqoBDAEEsCoT9Ji9Z/MGASARoKmkDsFYIL4mkYqyEsCaSBSQYJMe5mZ3J9Q2DuxB8ND1guojmFus7W1hdGD+Ut3n2MunS2aYyS9bUh2jIc2TgwwjV74/PPPLVPqPafHSoFCUQC1OYwfknXCuBDOJYw505PRQwNBayq4ZHMjUOcJotm8efNAtamqGkNSd0IL5Au8kLGtDHNsMBgAGAPU4lUJOObUrVvXXHLJJeb666+36vm5c+daGyGcR2hnLoCkDNOHTBEbJDwRveX97BSdc8Snn35q04ShGoSOnN9tt90MJgGEXgLIqYyBO/j888/bjDwnnXSS/c0LkVBCLhUfQW4pt9dee1WmpHvvvffMqaeealWxSPBgjJHkw8xhQO/q7t+/fyWJkNBwHkaavuChTfnevXvb89QHpGI68ehevHhxZZ1RPujQoYN5/PHHo0yCyr6zRm+//fbK334HpFOcNGmSmSgp4zAjGDp0qOncuXNZMX/0++qrr/brfqTObfxJGamu287iTvoNmzSbbFCBFyHqvjDFZCsWLVF78VKsVatWXo/AQB5nhltvvdWq6fKqrIpuRvK0atUqQ1YPVI1BAhgj1hUSBEwYiDsG8wOT5hiwdO09YL99zFfffJuuWMrrf9r6D2blB6s3KoP0D0nciSeeaJ555hnLSMHAusDYSC1ZbwBM1NFHH22PiTOI3ROBhQk4jXp25MiRNr8qjCLqVsaEDAN9+vSxDikwg+vXr7d1EEqHlyrqW7IxwGjWq1fPMoIXXnihueOOO+xz2Isc43rRRRdZtR0XUNsRmodc2EhbaSN7gx98+OGH9uNGYyIay8wTOaBQ0QP86B2Wc5999pmd74lmGkikV69ebecV87Vhw4Y2JFQ502zt2rXOhlEDQYdlAkexnajXCPiL11XUAbXE4MGD7YswH1rAABIqI2iMUzZ9Qm2JB96MGTMC5/gAXXHUAWFm/IJMp7MjqndsffPqC7PNTc1rmc2y/FTFBG/A3LVm9zqHbUJSJJa0CeYPmDp1qkGqB/CBMX/+fHuc7A9BskmphXc0UgRiJ5KqEebvmGOOMb169bK3Ui8vUxjKZ5991n5kcsyHx4033mgZQOzSkAQmgzvvvNPWR1iebGDMmDHWVhZj/ajDPffcY4Olw9REHR544AEbOxSbSICPHlS8fFAQZJ+5fOmll0Yim86UKVOiPh00DmAYZgDqoNatW4ehqUVvI1+uhTDmDnMGEEdkpFiot2BoggyoV3mxkLJujTjx8LJBEkYMRqSCSMb8nFhgkurWOcC8teF7c9Ru2UnoX1//nVn37x/NVGGEEgFpB1JI6IYpAFI1nk9eZbxFU5lbwCC++eabVsKHwwkSQhxxUMMjbaNfbjzoK8B5p2FwJgevvvqqQRqDRJEQO34AXXjWoEGDzOTJk/2KJD2HCjisAc6TdirHC4QywjtcwdgPFEweYPwwp0FCz9xt1qyZncdeR6Nypxcfa1GHYOmNoj4aSfqPEThhHRRiXpTuxZoPPZAAupdxPvVU5b0wL6j6YGjCANixkbnkrLPOMjfccIPNPILTyM0332zjGTKu3r7AjDVtcYJ54PXPNjqfrq/UwT1H1TvG12yClx8M4AUXXGCrIpZi06ZNrWMI6lVUvckAtS/tpy/33XefrcfZYI4YMcLa/+FcBDhbVYzNsaliDXtt0VBBJTqjeJ/btWtXWx/q4mzjgCJ5TOUl7H1OuR9DC6dSL/e+pusftq1InIkqMW/ePPthNmzYMDv/o8T8QSeNA6hhYNKtl0Bc54Wlm3lsKFCzoarIF5AA4qUaZmBe8HLzMk1h6Q8vG5gtkMC0SCJwjkBahlQQmzwkh04K+PK6/2QsBXzj0+/Nmq//Zx72kf5BH2zwkJ5i/4l9H9I1no9KnThnrVq1slJK2uYHqGOR8r3//vu2LleGILuA85TESQTGEicujOgTAScOGMpkwHUM8LEVJPRGNrHbcLyhnwrGwIBHff9knmGnitkDEkCcQQjn5KTVOk+iSQFNBReCcWfBEl9NwVhVWoMGDfImBQxg2CWAMDHY8oR9E8dBpF27djZ5vAsyjcctzi0wg02atzAP/HOOOXLXTUOhJE6EdNI/yjvvWewUYcxAPizmzJljzQtgFnhR+jGAMKV33XWXzYBAPEoAr913333XeldinuACizMu1IP93wsvvGCdEDCqx8aKAM3k904n2Tv99NOtowlSSeiRKbBGCp3zNdNnB60cDjtRdaBjLpMJBVMFJOrt27e3jF82cylo41mo9mBaFXVQFXAIZgBqPtRACsYQusOp2HKlB1/DSBGzkajk+qxi3ofEqm/fvpZ5KeZzSlU3jBl2eDhR4GSB3RYOLkjcNnz3s0EKmA6c9G90Eukf98OYwSjyHDyVAZwziHXmvGYdk2gvJvwhNEaPHj2sNzofEUgPnVH9ueeeu5GEGikc3sbOMxi7QYBz2B1ybyqASSW8DODamqq8u4aKD5W6grEOdDjSRQnwDkfFi+MgpgddxZwAhyU+VDQ8UGwmIO2POqgEMAQzAOkf0gIFY23I7r777rxIQfw/XvB8EYcZaD8OFZmGVQlTX1GjIk3DOxdjdfr5wOsrUkoBM5H+eWkwatQoAyIdwmGCDy1sxWC6nBTPW94dP/bYY5ap4DfSQCRt48ePt8wcNlaXXXaZmSjOIAAMLbEFkeLjCQ1ThiMTnuxAOo9jymCg31A8WDMpS3mAWG9Rs+mK9XzTv9dee21ZrpFNe2oM9uLY+C1dutSGyiIjDKYu2KwCfDDysaNg7BqHHlEGlQCGYPQXLFiQ8oUUgi4UrInYWfmp5rJ5AOrfsIeAob/0A8ainO2bkNYRdgVpxobvU0sBM5H+QTdnM4mUkbmEEwfetqiB8VSeNm1aZa5ppHTELgRR/yJ1RQLNb1S5MKiocWFYYQY5j8rtlVde4VHWdINjQk4gdSbeH7+dCg4mnnu8KkpUypxzDiK8vJECcg6slUEMTOwPYTgVYvETneS1XOnB3MLc4JZbbrE2j5dffrkNHM48c8wffYchRDqsYMxNN90UeTJkGV2r7OgVikDQGPuD+uUWi1sFw+MXNiTT2YnoHyP5bt26ZXpLIMvByMCQYE/m3eQD2dgCNIpcvy8/95S5teUem/QXWvSZ/ZH5y/5/F2eSR1M+jbmTGAgXj2okf46OrDd+pwPHTLr7kpWnfmerSd2o6GAo0wFMKZlGEsvyXDzZkzmRMC+wEdU9w1j6QYdypAX7GPsZHzB8KBFWKJVtG/OJuermYrr5V87XNRWcegGHYn5jJ4R0gSCeUQc8L1Gx8bWbK5SDAwh956ufTBI4TvCyL3dA9V99px2sLWBiXECkfx+K5++pxx5nvYoJMp2MKUPiB0MGI8iLkHIwVDBmMFR8YHDMddTrXOc3L0/KuRco93Ie4FoiUA6mw71sqRebQBg66uG3V33PeS+jQhnO0Vbqd/XwHOpJxvxx/fzzz7cSIBeKhnNRBdR8J5xwgsVyoQG20LwX0IhgZoB9H7ap6eCKK66w0m0k0VEHQlFFHVQCGIJUcDAs2BbxhRd1wEYLmzDSbuUKxG8jeG/YA4HCBOBditrSyxzkSpcw3OcnBYRRQvq31V9rm0svu9ymakM1jgcxayYfaXEYaOLXRtS/2A07NbJfmaicI3Ufzjph9/pnvHgPwPjxIczHH6r+bLy9YRjRGNSoUSMqw5+0nzgGEWxdILKp4NLrOJKSTy+UigIs+qeeeqpUjwv0c3DgwEYrHyiHIND0HwkSKQKdFCofmoTlXqSAnyXYAjrbv7oHH2Jt8vC4xXECr1nsfAi+HKaA2YUYC0LaMM8VjMGGGuebsAIfOMxfNED333+/VfESvLljx45ZMX/0n/BK6UIPhZVO2bY7VQrGbOsKa3l1BwrByJFGiqTyCsaqOskmkSsgNcP2I+whYOg/Uj9ogaoxKoDtXquT25gHxBaQuIAAWT/qN2pkVVuoUPF+RboLkjsaGyk8dzmPRz3oUrOVK91QB0bBLCCT8YMWiTaUmdxX1WVg/FatWmUlfqQNbCRz/KKLLsqrL9gHukDlVd2/qn4+3vlRB2UAQzADMEb32gqFoMlFayJMD8F0cwXU6TAC5cAAMC8ysfvJlVZBvc9rC7j1FpvZrB/PT7zPZtxINPTHFpBgyoSUQfJBOBnCqaAeRUXMh1U5qs/xck8VyzCoY1uMdrFfhIkZRqKPqhZVL2FdyOvcUMIAFcKUATrovCjGLAtnncoAhmDcYFp4eblgsyFoctGayIaYT1gc1GJI/8pBaoYKmDy2XSXIa5TASQHvFykgDCDSP77moQWqX7/4jrz0yAgBOs9JHImQsiARhBnEbrBcANtQAmh7w8uUS9+y7Qcx8fjoC7oWBWcf7NJg/HDwad68uQ1TVMiPf+qvVatWZZ7qbGlZTuUxrYo6REd35D/SoQgDg7cnXl8udph/V6JxlvAZH330UWWctmx7DfOIChgvybADnqFICg444ICMQpaEvb/e9rMm8Aj+9dcKs/qjtZYBXLFihWV6MpX2IGlxQabdixFGkDh8iZJE77PDcEz2B6TDGPxHHbD/46MgqAw+6xhPfkwVkEbjsUxWmmLMQWwJkSRGUXOQuA7UCcQYdQJJnBUB/M3mMGjQoAC2rPRNYjPPh3krlxAwUP6bb76x3szYNUYNkAL26tPPXNCtu2X+6D82Utl81aNCxwsQuyoCLdetW9d6Vd98881m1qxZ9qMrrHQl4C+x4RSMufbaa63aP2i0YN3iiEDwZqSUbdu2tRliCE5eDOaP/uMg9eijqeNkBo1OxWrPI488kq7qdlJggeA3gr8IevmlI+Q3eR0/Efxa8HXBroKZwqVSkBhSgxNuaCa/VwsinuzoudZFjimfOHiN4+c9RTM/VAlgCMLAZD6cWjIdBe69915rU5NPGJl0z9Dr4aWA1/D+1VdftSpUpIJIWTOVLIa399ryUlCA2I5kgyFUD2F6yAvNx0cmgcdL0b6oPCODQNBNhRbbC24jSP7RLQVhwoATBHcSJCDt54INBZ8U7CwYS/gtB0lgHznPfd8KUnaQoIOVckDd/xZcLLi/4P8EYQDHCm4u2FLwBUEABnC2IOezBi9Hm/XNekNpKDB79uyyCmKaD9UQ2+cT3NbZAObThqDciy0b3o28UBRkN5Z0bMRHywewDSV36jnnnGMIFIs0ZtmyZTacDOnEkDDCJAYdcBzQMBexUSJcytSpU6t8yMjOMnfuXJt/GjOWc8891wwcONDan5aK+TvrrLPsvK5yYgSgAddcc026VjwnBaYIIpFLhJly4n5BmD9gvuDzgo0EUwE8132Clwt+laQgZRxD5xXSIWkkf90YQe95+ZkbFKSS3B4diLtCYQOI3RvqPjXojqV1Wr9+vTVkznYGkQFi5MiRBhVfOdhGYTtEmAhsQ0v1AsmW5qUsjz1k7dq1iyKpW7t2rfUgRnKDPRlSQYJMb7MNwoHgAaYSODsFtX2lpNi6deus138+0QPyaS+SpoULFxokyjiiIPHDC70qAFtynEqCag9ZSpp8/PHHLiB2ukDQDaRdMHdeCWBiU+El3hXsJ/hA4kXP76vkGAkgksJ5gi8KeiWAzeU3kj6edaUgDCjQRXCIIPeuEhwseKdgY0GVAAoRyhaw5dG0NbHhJa7b4MHM/ewB+z8Yv3Jg/ug9EoWePXv6piHLnjrhv6NPnz7Ww7cYPSFzApIkbKgw0ofx5kMCydLq1asDF4x79OjRtl3FoEXY6iRsEFLcUgNB62fMmGFt/Pj4JA0baSyrivmj/3feeaeZORPhlUIGNoCZEglmDUZtheDkFDcdLNfOE+yRosyzcm1vwT0EHfPnLf6D/IAxhBmE6cwLNs/r7vDfvJV0oT9OBUuWLLGSAzZz1ISE2IDxwkYDg3CkLCwc4msRkgUDXoJz8qXNFxVfeDVr1rQZO3Czx5UfmyG8rqgPNZ2r79lnn62sD7VVuvqQavDlRv2Z1kcYAVSEqBoIgYE6iPvZkPjv1z7Uq/QXlTNqMPrt+pttfdDP1ffcc89lXN/TTz9tpXt4xBG6gfGAcXP1kfYID0fiYmXSPlcf4wM9kOQQMoTxgO70D5rst99+BhUfUhNeFozvhg0b7PMZX7yHGQeyShBeY77EkqN9qBypN9v6iEdHEGdCl1AfYTtcfcwXXhiuffSB9pENhvYtX768sn2ExcE+DXplWx/9Zv65+pjPzC/6y/ygPrKu0G/6T/ugvbe/jAfhVPCczbc+UnZRH+uM+ui36y/zj/FgvTGf6S/r7Mknn6xsH4w9Ho6kC2Q88qmP8XHzz7t+aQ+ew6iI8USmLWRjQTL4ySefWA9zpG7sJwTdZa3DPGLvxX7AeoQxoH1ILJHEzJs3z0qGUA/Sf+qnvzwXlTMOATgJMG9Zm9TL8xgn5nNifcxN1jh7xq677mrwjmY+51Mfc5R2sj9Qn2sfUhRv+1jrtM/tp97+vvvuu7a/tC/f+tgPXH2sHeYo9UJP6OptH3MCDQpzKl37cC5y7SNrhutvOvp5x5c1wjhNnjzZjgPzlHcMexDrDac+t7+kms9uvbn5x36Q7XpL3F9Y40hCoUmy/SXX/Y9+sZ+yT+2///52bZJ+D8kn/WU+sp8zb92YEaCduQCt6S8fVuwv7H/sS371sRZcfdCa+ubH5xQOLkhZWUv00Vsf/aI+9gz2TNpAOYERgtjZJYNacsFJ4CoSCm0tv7H9gwlsLfijoB9sISfhvGHeXosX6Cr/1woiCUwHMI/HC44SfEOwjeDfBJEGIk3MSSqymdwYeWAz4UXHZgqjxITlxc6LDfE9uWMBNnoWI2mW2GRYQEwipFJMPOI43XPPPXZzd/Wx6Jmw3vomTpxYWR+TnU0psT6+TqiPr1fK8CKhfbz42Fypjxck7ZswYYKtjw2Hsmw+bNIsSDZt2jdlyhRb31133bVR+7z18QKnPhwlAFIPuWfzUmJBuvoefvjhjepjo/G2b+XKlXYjYOOlD5nWxxcqix9Gi5cH7eNl5+pjA2NcANIi8RtG0LWPjYT+uvaNHz/e1oekhhcG6mNe7tAHmvDyHDWKNWXMbbfdZjcp+gLt2NR5Fi85xpXxuPHGGw0qeZ7NGDAXqI/n80zqQzIEjBs3rrI+aLd48WJbH3RiHKgPiRL1McdcfTBb3vpIZwbceuuttj5ow2ZGfWx81AfdqA8VN/Uxx6iPucUcpb6HHnrIto8+AHgfsilDG+pj7jMHqA+6Ud+IESNsfcwxNlPmFvXB3LMe6K+TTo8ZM8bWx6bu6uNlQH133HGHrQ9vW9rHHKM+5jV9oL5JkybZ+ugDgBSL8WJtsSZpH0w69d1+++22PlJiufr4wKK/zFGOXX30AWCcXX2sSdamq4+xp7/XX3+9rY85y5xjbrn6WA/0lz4A0ARnIl5yMFysS64xVxgrXlLQhPkMrXj5MT9hrpmL0AkmcuxYND7G0hwmlzaxt1Afz4cJhF60jz5QH2ud+niBMf/YP1x9jCv9ZE5RHy886mMdwVxTn5vPzFXqg1aJ9UF32kcfAGhEfextzGfWR2J9zFXqg1a8nL3tY0+DfowrwPpIVx9zlfrceqM+7/rg49CtN2hOfaxf1z7WL7Rm7kO/dO3z9pc55qVfqvFgfLkOrRgj+ol9buvWre240l/aybhABzf/GBvms5t/3vns1gfzj/XBmFMvewbg1pt3/br15tav335Afex/br9K3F8c/dhfeMfQPtYD9HP7nxtft/9RX+L4Qj/2F/rIfuqdf8nmM21jz3frg/dH4vqgj3zcQUP2D+Yzc532MfeZL/SN+czewjqnPvZN6oPWAO3NE6rJ/XMEYR5PEPxeMBnsKhfqCKK2/SyOx8j/3oJvCmYLl8sNFwnum+2N3vK/8/6I4DEi1G/IGRrkzBAsLhbGxRdfHMEh2rjL7mWYS1gcNgCkWi1btty40pD+QvrXu3dv+yJFEhV1IPQJIT9gyKoKYEh4gcHk8ULCu/PQQw+1kqRStokXP2FFqlLdWMr+pnoWH0eMAUHAiwEwSDDhSPNwGiIYOZLDIAIfhmTHoY1RBxjAdu3aQYZkNoAIyNhYGwgivfuz4C+CSPl2FnxO8G3BToKcTwXwWn9NKPCY/H5ZkC/UTxOuJf7sIidQ+9bwXJgox7zMdhDMSZuLWFIh4BRA7M+LREGMHkR9Ub9+/ZxIgfS2nMK/oFIkO4w6gMSmA7So6pyvvPhPOukka+iPVA7GAEkXamCYENSQpWDWGzRoYNWFOS2UMruJqAGFdqDDExwJE4w+GgdMUi644IK80lSWguzEvQyysKMUNHDPyCAXMKpV1GsV8Xv+Ez9uJP8bCh4guIfg14KuzItyfKIgcLsgDBu/uf4vQS/8V358K5iO+fPe4z3uLz/aCrpne69ldKwMYEZkqtpCbDSItPm6jDqgUkDVw4abDbBhwwBWpXQom/ZmUhZbt759+5rjjz++LPPZZkIDb5krr7zSqv+C4OQDU46dEYgkEHUyEgdUkngPwwxiK8fL2JuWEHU2mC/AdF5++eWBlUTl279s7kf927RpUyv5yuY+v7LsI2iMYPyQ9jZu3Nj06NEjNI5laEGwkcPGO+qASUkauE+ug36wQE4O9rvgOdfdc+x3eLzfySTn/NryiZTNyxHkd0keFpXToVABYzCOxyeSwKgDoU9QfWYbxgD6YauG3QzGxuUApDLDZpOwJF4mohz6lksfsO9BAkg6rUwBpxcvwwXziKNHqvApmCFgY4ajAc4HMHReKSw2SNhA8rHCPEV6j2TQSY2wYeOj7qqrrrL2uNQHYKDOBwr3Mbb5AGuEeV4KaWM+7SzFvdACR4F8Anm7tIEwfowvKtTjjjsudHsJawSnnSB8JJVi7FM9I4swMKmqCfU1lQCGYPgwZMWwGIPXqAP2kB06dLBG0dnQAukf6uNyYf7oO32CWeGFVE798o4rzgtIXDKBTp06WSY/Ud3Hb17WftC5c2drs+e9BjONxAhDejw4HWB0TqgZnGBg5hzgAALDB5OHAwcewoyNA8ZmyJAhNgwIHo8gUkGYRpwEcKwBCAo8dOhQez5fBpBQNTi/qNbA2IDLp512mjnjjDPckGT8nw9OHA6w62TMmzdvbo455pjQMtakPUQNjLQ86sA7NeqgEsAQOIHwMgCLlR8yTIsAOuC1jYt/NoDEBk9YXuDlAryQkGzyNV+uEsA2J7c2c2bPMjV3SK/pqLCmML/bKET++m9Ecl59F/Peqg98hx0GiZc76tgzzzzTMm7Oo5APDTwvARjRevXqWWkh9IaZwK4P1S5ejvwn5ArMIE4B1IuEj/vxmEQSh6QPht0BnuDYjTlwDCCelTCe+UhpmBdIvHTPiAWPhw7Z0ALprvNkR3oIQ439cDbSZTeuQfoPQ8teEfZ+FIKmTnsidSVzAinEYwJdh0oAAz08scahMsJtnlAIUQdCI+D5SriSbAB7nXKy/6PvhIRAGkGIhXzUW9nQsdRle13RRxjA2ab/kdubP2+VuWqXdv7ya4W5fO5PpneffmmbjV2UC69B5gik7XwwOHDha2AGCGdBnDMHhPZAugxDTlgiAMki0iLU8zCAMBSEGHEMICGOmMfYkKGGRiXsAEYRWy1iP5JxBM91r4rZlUv1n7hz1J9P2sRU9YfpWr9+/UyLFi0ySqfJxyWSXuzDGLvTTz/d2mtmS/+g0gebYez/unXrFtQmlqxdLvxNyR4YwAcpAxjAQUlsEjZG5SS5SuxfNr+Rslx99dXZ3GLLwgASzLucAHs34l5lI9kIW/9R3R52+OHmqVUrTYc62YXWeOnjb80vW25tunbtmrbbMH2ofFHdYucFkLILwNmG2GgAUkIv88e56tWr88/CJZdcUmlrirSaGG0ADIgLyQKjSB5YgA87mEAv0F4kTrSD5yI9PPjggy3ClGQCl156qWUcMylb7mWgdbqPP+xAYeyJbUjZLl26WFVpuUnW+TDIR7JcTnMF5j7XrFLlQgdlAEMwkhir4j2I7UbUAakXgWizDedSjhJAnIMIQItHdDmrdAZfP8y0bNbUnPS37TKWAiL9e2zlf8zV199gHQDSrRtUuF6pCLHSkOIBZPggqDNAGJdUgG0VjAR2gsQlBGD8cD5yzASMJgGNCa6LGtkPYEJOPfVUc8opp1gbNMLJwOxjP4hUEClOqjGnfmwSwagDGpTD5SPCjwmEuUfaRxBn1O7MAT4U3ViVG+2IJ0v4k2Tzrtz6m6o/GXgBp7q9LK4pAxiCYSRUBBu/grEvc1Ri2QASFzKaOPVbNvcGuSwMALQo15eVo30uUsBspH88h48rsoBgO4dxOEwcjiBkU/HGTeNDIhlgX9WoUSPLsBGTECkcpgpkTzj66KNttg7GCml+kyZNTPv27a0DD5JCADUxDj1e+1bGGIYP5NlkNSDbCRkaXJBpv+gAMDvlahaQjP7JzuMElBgfEnU8tMQ2GIaPHL1R2GOxdcXbXMFYu9+o02GzqBMgDP3H/kTDOcRGCnVnpmowN7aEgeDlTB7OcgLmhVf9WE59S+wLUsCnV31jvv3fL4mXNvldKf27dnBG0j8q4KVIAGdUvM5DEls87AChMSpYAOmzkwbaE54/eKjjMQpcc801hmDM2A7C9MG8wbhhI4jUCUcPVHGEm3H2f9ggpmJCkOa1atXKMqqoNWEWSWtFdgecVGAgHdAf3TNi1ICBd8wwKn48tYklyp6AfSBx/FLR3dG0HP5DB+xYFZQCUEAZwBDMA14e7sUSguYWtYl4bqHSyQbY9InHVm4vRAzWsRFzEqRsaBK2sr9JAb9J2/RspX9UiOSPcDN4fsJQATBuTlpC+AwAiSC2Q9iKoRpG1Yu3MNkgvJJCVIoAEiYk0ADXke5hvuBFx5ygdiZAdDqA8ccO8cILL7S5n1Fvos4i1yymIjil0C5vKJp0dZbzdfJIw8hjj0l+Whgg7IihHxKxKAE5hddIyjoFY3O8R50OGgYmBGFgUFcQHLbcnBhyWXwYaxNmI50tlrduXgDYePXq1ct7OvTHSDBIN0a2iXLxUkw1KNjBYQt4R8saSW0BY56/n5gBYvvnDbGSrF4XBsbvOgzCHXfcYS/BxDF/Ro8e7VfUhnjBQYn8u85hhJAwOJcwTqzdN9980/cjBBtBGEsXBsb3AWlO0j4kiTiO4MUK80rfYA7LNUZkGpLYy9Cf8YApJmMOntmOqc/k/nIrg8c58yExVma59TOT/vBRUKdOHYpGNgyMMoAhYACff/55Q0Jz0sFFHVi0vJidp2Ym9CDQLtI/JDXlBNg1Er6EjwMnRSqn/vn1pVH948zOX71nOh7onxVnwUf/NlM+/MV8sGZtRqqusWPH2jAs7lmYGLjA0Ycddpg7XfmfDwkcb/ioQBWM6pBgzmSGgAlHDUvKN1S8MB3Y58GEERzaKyGsrFAOhg0bZm1UsQts2ZLc7vkBqmFU1uTMZl7wgeBSz8EYljvADBNmhw8GHOgWL15s94zzzjuv3Luetn9IsvkYwT416nDttdea6667DjIoAxjRyRCKVHARHZuCdRvGGSN/XrAK4aYAL/UTmjUx41vW3EQKmK30L9yUyKz1MEAEuoYJwhECZxKcR8oxFAiMH5JU5siGDRusxI8QO4kOIJlRTkuVOwU0ELTaAIZijs+aNasyJlkoGlzERmIL6SeZSfVIbCj9QkCkuicM13Ao4OWGLWBUAFvAww8/wkxf+fUmXcb273+/+70hjl7UAUYPO0CX4QQHEySV2H9hK/joo49aZqkc7EfpAw44ZFYhKwvSTtLgnXzyyXZ9IFUlGLeCsfENR44cqaQQCsSlf5GmRfnrA1IPbygkgNi98bUSFY/PVENG7DtUa7Vq1UpVrPIaLwfCe+CVWW5MILZlZEZBpRMFG0A3qH5SQKR/l81ZZ/peN8JcfPHFrmhk/3/wwQd2v/CT9CEdQypIGBTmDepiGMZsveurmrjkU8apgb7wEYR9Hx8IiV6uSEHJ1BK2/hWDvpiLQB+c4qIOzIt4PMTIqoDVCzgEqwDj8RtuuCEELS1+EzHqHjJkSMYP+uabb6wXZjkafhNOpGfPntbJIGOClEFBPykg0r8vv/+pIDZ0ZUAiM3ToUPtx4NcX4mESpxApGXax2JISZJq8xUjS+LAIMtA+HF3GjRtnIwJgf8lHHureROaPftA3VOAKxkpJiSGpYKwUPOp00EDQIZgBqHGIUaZg7Jcrqp1MgVAYGOKnypqQaV1BK4c3Hy/wcuxbOloTFxBbwNZ7VzPbbLmZzfpx6hlnauaLOOFIY5cu8DnzBntAkAw7SATJIEIoGdJPokoN0ocTTjc43xDyhviJZEnBHCTd/Mf2Nypx/tKtGwKVqyQ0RiWCs0cdlAEMwQxA/Ytxc8OGDUPQ2uI2EVUPdkyZAvZ/6V6EmdYVtHKowAjrgPF71OA3KeB7Zvdtt7Q5fwm7EnTpVanGibiEmEtkCqgEYRrJQUw8RLzsCYFDaBvUw8Qd9JOuZVp/PuXoh8vTSzBsMqigts7U7AFalFsQ+FzpSXDzZIHMc60zrPdBi6iDMoAhmAHYsemijQ0UTA9xETMFJIDlZvvn+s68wB4yigwgNHBSwP/bZitz9fAbbRBnZQBjswM7v1ycg2Cq9ttvP4uYGBDwGpvLmTNnWqkgzCABq0sBBOfm+TB/MKKE0iGkTbahbNgvsmGGS9G3qnoGdPBmjKmqduhzg0EBZQCDMQ4pW8FXL2oahVg2BeKbZQpIAGvXrp1p8VCVI8YbtlzpVGCh6lQWjXVSwPffX2U9f3EM0pAfMQJiF5ev1AtaYldHAGWk7jCCZEnBpAJGkNBK3rzFWQxdyqJoPFDzou5FdYtTz957753ynlQXUfXBQCoYG/g4WTzKqNFnt912i1qXN+mvOoFsQpLgncCjb8qUKcFrWBW0CC82jL8zhXJWASOh6du3b6TVnvdPftDMmPmsVU+S1xWHBgVjU8RhNlIIQOK2xx57mLPOOss6o2FTh7MI4WTIskHQ5UJIobFDnDFjhnXaQPrXu3dvc9lll+XF/NH/e++910qHC0GLsNdBLmu8phWMOgbJJNAwMCHIBILYng2RL++oAyq+b7/9NqMwBqiL8Q7EazhIxuyFGkNUwC6YabZqsUK1IUj14PGN1CqqElHvWDAvkM4VM/81HvnYCuJhi1MGUkE0FdlKYYlnST1k+cG2j7h9hZTYQQuk5VHJluOdB4nHrBGy3fiFB0osW+6/NQyMBoIOxRyfN2+e6dixYyjaWuxGInlo0KBBRo9BooBNEyr0cgTsGzHeV/vQ2Ohi60k+XAVjvWMXLFhQVFLApLVr184QZBqPXHJ0jxo1yqbCIz4lHyip4JNPPrGhOMaPH28ZEmJ1nn/++QVl/ng++ZkfeuihVE2JzLVLLrnESlgj0+EUHR0zZkyKq9G4pBLAEEgA2UhBvtyiDtAB4/ZMbI/I20oe5XKN+I7aDckwX/MqATRWMgwtMvUOLee1hHkAYYJKvWcgzXNBpqGvCzJdrVq1SnIjecGeEA/2Y4891uZRLuZHGhoU6FBqWlR2OEAHaFDYK1RKbiq1JzI8Ggg6QHNUm5JAAb7kzz333ISz0fwJU3fGGWdk1HkkZOUaAgYCIOE8/PDD1asvPhtwCoG5UDDmtNNOM0uWLCk5KXA8QRo4fPhw06lTJztHx44dayZNmmTbc99999ljbAqHDRtmzjyz+LEbu3XrZqZPn15yWgTxgdjJInFVMFZaHXU6qAQwBBJAGBliWeF1F3XA/g818JFHHpmWFBiUoyLlZViOgOqXfK94aqrUy5g5c+YYPD7VvslYmzrCuQTBbhi7M7x6ly9fbvcwghGXcoyWLVtm0+KVKnxNkPead955x9prEjMz6oDNaZ06dSCDSgCjPhmC3H+kGpq+JzZCSL1I+J4JULZcYwDSf1RbDz74oMHZRSGW2gnVp4Kx+wUe80EAMk+0aNHC9O/f37Rq1aqkzB/958OASAoKxmBP/tprrykphAKaHtAYNSoLwVIgbpOmMooNFJ58qI8ygXIOAk3/seOBFmr/F5sNpExUO68YLZB2YQOoYGzg6m233VZJIRRgjQRBKhyEwdA4gOoFHIR5mLYNvOiLGc4hbQMCVABaZLKZE+0e1VM52wCi9q1evboygPH5iVeqMoAxYjDvNexJjBY4oCgtYrTgo6CqUvrFl6n+CxAFNBB0gAYjWVOQZL3xxhvJLkfqPDG98CBMB6h/YZrLOfE5kzmFbAAAIbFJREFU3tAE4lUVcGw2PP7440ZVwDFazJ492+CRq2Cs/aE6B8VmwltvvWW9r3VeGKO5gDUQNHqBb0h+HuT0OOSyxJ5nn332ify6/f777228sX333TclLTB2JrjsoEGDUpYL80VCOtBP8qOqE4ixzkGYSqi0xxi85VEDZxuUOczrIVnbsf/DGayYoWaSPTto5wm9gxTwr3/9a9CaVvL2qBOIqoBLPulyeeDSpUvLNpZdtvRgMydYbDood/s/+o+Uk9Anmtw9NhsaNmyoX/XxhdG+fXubSzf+M9L/rrjiCjNz5sxI08B1/sYbb9S0onFiTJ061ZElsv81DEwIJICRnZ15dJy4X3gAE5NMQSmgFFAKKAWUAl4KuDSack7DwHgJo8fBogBfr4RPUDDWFpLgx+ngyy+/LOsQMPQfGy9UfNgCKhib7/n9999XUggFyMs7f/58pYVQ4MQTTzT333+/0kIocPbZZ5sRI0YoLYQC5IiPOqgEMAQSQOze+FrB4zPqQOy79evXm1q1aqUkxU033WS6d+9e1uFzsAEk5yq2oWoDaKw9ZO3atdUGUFYGphLsF6UMuJxyQVbhRRxAiBxQzg5hmZIXW3K8gLGJjDowL2rUqAEZVAIY9ckQ5P6//vrrBtsNhZjn1tChQ1OSAokYGUPKOQg0BKCPPXv2NDCCCsZg6/X5558rKYQCrBEcQRSMueWWW6wnsNLCmLvvvluTCsQngtoAaiDoUOwJfKWoCjg2VHy5tm7dOuW4of7deuuty176gTdfhw4dNLF7fDacfvrp6vUapwVqz3L/AEq5CXguNmnSxCAZVjCGNHyZxFGNAq2OOuqoKHQzZR81DmBK8gTjIupfTWUUGwukex999FHKgcEDmKT05Z4hg/h/hHWoqKhISY+oXESlo9LQ2GiTOxxzCQVj86izhyoYwxrZsGGDkkIooHEANQxMKBbCr7/+an788cdQtLXYjYQWZPhIBVEIAUP/oQX2kMoAxmbDunXrlAGMLwxe8uocFCMG+4XSIkYL6KDvkvgi0X+aCzgMc4DcjXXr1g1DU4veRgJ2E/suFaACJudluQMBj9u0aaMq4PhAt23bVlXAcVo0a9bMSsHLfQ1k0r+jjz7aBsXOpGy5l6lTp46ukfggay5glQCGYr0T2mLKlCmhaGuxG4nEa9y4cSkfQ4DkKNg/kfasb9++KvWKz4Z+/fqpE0icFv/4xz+MhsSJEeOee+7RoNjxeTFt2rSMUmnGi5f1v5dffrms+5dJ5zQMTAjCwGDLQygYTWVkLLOD92uqMAa8/C699NK0oWIyWSBBLoMK2AUzLXd7x0zGAVUfcRE333zzTIqXdRnmBY5Q5MOOOkALpOWaItDY/YL1oeGBYvaQGgYm6rtDCPo/d+5c06lTpxC0tPhNJH8jKb+SwQ8//GCZ5ShIAAl5AiOsqeBis4ExX716dbKpEanzBEtfsGBBpPqcrLOnnnqqefDBB5NdjtT5Hj16mNGjR0eqz8k6O3bs2GSXInNeJYAhkAAi6QG32GKLyEzMZB2FDhgyI93wAzy7Hn74YUMg6HIHaIFkmK95lQDG4iJCCw2KbQzmAYQJ0j3DWG9o6KC0iGlQ2CtUSh6ThsaDg2sg6HJ/WYa5f6R0Ou+888LchYK1/b333jNnnHFG0vrwAN55552TXi+nC9g6IulRCWBsVHEOIsyFgjHERFyyZImSQihARqAnn3xSaSEU6N+/v7njjjuUFkKBMWPGRJ4OUTeW2Yo1gVg8yPYhBO488MADI+HYkG5FItXYb7/9TDIPrnfeecdKBw8++OB0VYX+OhKN/fff3+y1114qAZTRhA6kxSPVVdSBVIn77ruv2WabbaJOClOzZk1LCyIIRB2weTvggANMtWrVok4Kmzv8tttugw4kR45kQnUNBB2CZUDg42eeeSYELS1+EwnxMn369KQP4noU7P8gAM5B2DahClYw5tFHH7WqT6WFsfsFeV8VjJkzZ456RMcnAtqk5cuX67QQCqgXsIaBCcVCQAK45557hqKtxW4kklqkG8kgSipg7Hj22GMPlf7FJwOxH9XOK0aMXXbZxdoAJlsnUToPLTT9WWzE0ZxExUQm3RxPpkVKd185XVcJYAhGkxe9hnOIDRQv+GSbORkxosQA4uxQvXr1EMzg0jRx1113VQYwTmpe8kE2aynNjIg9BUN/TEcUjKWDvktiM0Ed51QCGIo9AabmjTfeCEVbi91IYr29+OKLvo/57rvvrIdwVL5w8YZ+4oknVAUcnw2PP/64qoDjtJg9e7b57LPPfNdJ1E4uWrTIrF27Nmrd9u3vW2+9ZfOH+16M2EnNBWyMhoEJQRgYvD3ZzPfee++ILdFNu0vYEzZzDNwTAVtJmAACQUcBfv75Z4PTC0bdGvrEmBUrVlhTCZV8GbNy5Uqb/ozA2FEHYkPi9KCB9I1l/pCG/vWvf436tLD7BXungIaBifxsCDABli5daq677roAt7B0TSO91QUXXOD7QBxAoiL9gwB8GBD6BEZQwdgA4fpVH5sJHTp00PRn8UVxxRVXqBNdnBbER33ooYd0uxAKICyIOqgEMAQSwKhP0kz7j7cfdh2aNSVTimk5pYBSQCkQTQq4NJrS+2QSwHZy7WLBuoKI0smr6EIuHCHHVwkeLkhWgo8ERwlOFEwGreXCEMHd4wVIWzRccGr8N+dXCFbEf/OPmFaE6/uL4JeCDQTnCf5HEICH+0qwBj/i0Ez+E+yRe/sJThYEughOEOR5pwsadQKBCgGHp59+2px00kkBb2Vpmvf666+bI45g7W0KUZMAYhaAiu/HH3/clBgRPLPjjjtquI/4uB966KGGkB8KxrRq1crcd999SgqhwDnnnGOGDRumtBAKXH/99enoAMM1TvAyn4I7yLnHBA8UJKjipYJElobJSwZEZm8huH0cL5f/DwhSB/Cx4J8Ft/Xg03JMDDja4qBCDrYTpBzlvcyf/DS3CjYVPERwsCDxjh3AOLYUbMAJlQCGQAKI3RtfK+rxGYt9R3wzgrsmAhHu27Zta+rWrZt4qSx/o/pdtWqVtYdUjzZj7SFr166t3q8y2z/44AO7X5AaL+pAdhgiB8TTfkWaHOydBEonh3jUgXlBYGwBmKl/p6AHzNLzglsK/pqi3BNybY0gjF06gPc6RnC2YCfBxwUTYVc58aFgK0HKAa4tSPd+sWc2/bNSTp0o+K3gS4IHCP5XsIsgEsiJgq0FD1EJoFAh6PDaa69FIrdtJuPAoh06dOgmRQmGHKUQMBDg22+/NT179lQbwPhswNbr888/32RuRPEE0g0cQRSMGTt2rFm4cKGSQihw7733mqeeekppIRQosA0g0rgjBZelIS7lvhKEIVsgiFQQKZ8fXCgnPxJ0zJ+3zGr5sV7wOcH63gty3EOQOhcJDhDkWV4YLj92FDwf3XKUYSvpfH+cCvAsxZOSFwjStl9++cXgVUr6INSOBBMlFAtf1DAh5F8l7Ij7onr33XdtBopXX33V7LDDDvYLnPpgSqgPaQ3PoD7qwQvrzTfftPVhuI4aj/o2bNhgY/6R85aMFsuWLbMpa3gegSuzrQ81IXGfeBngIEEUeNqHMwXxBb310S9UirTLtY/ftI/nk2A+n/oIQQD91q1bV0k/+ssXKZIs2gezi7ceEgwv/RgP2gf9aPORRx5pvPWh/iXcA7lxt956aysNQmJKPtSddtrJQE/6S/sJJUN9a9assVIBaML4Ms70140v/XXji7ct9eGQg6oRerr63HzJpz76T32J8w/JBTTxm3+0j2wgSDxpD/OF+Uf7cqkv2fzzmy/Qj/lM+6Cbmy+Mb7r5nGl93vF1683Nl2TzmXYQHsfbPrfecqmPuQaj7Z1/rA/mwttvv73JfHbrw28+u/WWT33QmvWBZ6u3Pj6A3Pqgn9CY68z9f/3rX3a9oUlw7WP9cy3T+ugvXtaklvPWx3xlf2G9Uh+0Rrr04Ycf2vXLunT9ZV6wvqAbc5U1RX2ffPJJZfvyrY/5l9g+vMKhxd/+9reU7fPSL1l/E+nn3a+845HpfEk3n93+7J3P3vXm9udk74/E/YA1zvxhjHi/pdtfMtn/3H7KmFMf+ykxOaEN7WOfoH3sV+vXr7f7PXMJGr/yyit23vD+JMYr9HDvS/ZT6uMdSH3Um6o+1j7ZPbz7PfV9/fXXdv2yZpACs4fzLuWZ8RzRI4QPSJUKrpZcd9KzCjlOBCSDjwt+KdhX0K+MnLbAc0YKEqpiuSD3wAgmwhZy4n7BWwQXeS7+IMeTBAcK3iaI+nmCIFy9S/3zgRyPFRwj+Lagg4Pl4HjBGwQ3CNLvSAPceIXElato0qRJhdiJVPTq1auid+/eFRMnTrTnZPJVyEStkE2l4qCDDqqYNWtWhTgZVEioEYscc45rlKEs91AfdVAfmGt9slFWPPzwwxUSAsbWcfnll9v6JkyYYJ8hC7yCMjxb8gXbtnTs2NG2beTIkbatM2fOrGwfZb3ty7Y+6qY+nsUzhWmz9TVu3Ni277LLLqugTm/7KEPZOnXq2PaJh2Jl+7KtT1LiVcgmb+sTF/7K+vr06VPRvHnzivPOO69CmL6KQw45ROJCV1jaCMNZccIJJ1TIYq+4+uqrKwYNGmSPW7ZsWSEvJVuGspI/uEI2B1uHqJMrbr/99ozrmzZtmn0G9dFfQBgzW9+5555bkVgfzwIoS/tatGhh23TVVVfZNmZS36hRo2w/hfG1bac+2fzS1kcZgDkLrcQuyPZV8mJW0FbZlG3bKZNvfdRNfTwLEObUto+xoo8DBw6soM8cQwPoRxmAOZbYvlT1tW/f3s69xPqEGbL1Mf+o7+yzz66gr+PGjbN9p308C6As49GsWbON2ifxFu38on351DdgwADbZ+rjGdQnL2T7bOYz7evatWtl+2gr7aPtAGVpX9OmTW37ktUnie4rhOFJW58wArYN1EebqA/kmHO0jzIA7aMttA/agRxzjmtAPvXdeuuttj55iVfWJ+FbbBvYT2lT//79bftEemPbJ0xbBWUAyYtt29KlSxfbNlcfa15MA2yZXNvn5kuy8XDzBdox/2grczxxvkArv/mXy/rIZf2KiYx9JyTbX5h/fvtV4n7K3pluP+Uet5+OHz/e7oHnn3++nZNio2rHg/cl85n6JMWn3ZuvueYaW7fYblr6CWNny3IP9VGHq0+EN/bc3//+d1tGPpRtfdxLfdQFcsw5nkUZgDnB+18QPiAVNJCLqFs38ymEA8gswTmC2/hcT3cKSd3FPoXOkHPfCWaiq0c9valabNNKu8iptZ7TL6kNYAhsAPmi/+c//2m6devmGbtoHvKVjkG3bLIbEYCvOqQQwoBudL6cf/CljNqThOaaAs3Y9UG4JKRLUQfWh3xcmf322y/qpDCjR4+2moFjjsHkKtrwwAMPWAmZfGxFmxDS+6lTp5rTTjsNOuRqA4j0DQYOuxMq+kkwW0C9+65gz4Qb58nvDwXPSTjv93OunFwsiFQwFcAAYgNYI17oCD+ONlUFeq0KKIA6R772quDJwXskKgFi3yUCqhKRpiWeLuvfqLbatGljVW1l3dEMO4cDECoiBWNEImVf9EoLY44++mhn7B95coik1uYPjzwhhAAZ5AKGP8JMDAT+IMgxgjO+MhcIrhVsK5gJ89dZyv1NkHqpq5tgI8FnBL2wv/xoIIiKNxGayYlagrQB6SMSj3qCUwWzhVdoiELAKYC9ziOPPBLwVpamedgLieppk4cRFBmbkigBNjV9+/a19i1R6neyvvbr10+dQOLEIRsO+4ZCzPEBDYGCsTZvyVJpRo0+2AumARg2bO5mxssRQuV7QSQQFwriXdtK8GtBvIhBJIIObpcD7+895fezgt8IfixI/e0FUSF7AcaQCes3aY+Q8y8I8qyPBE8SbCG4TDBrgIuMMqD7/wYHAZwLggoY+mPAjfFu1AFnGozKxZZnI1LAFJ555plGbKU2Ol/OPzD8Rw2MYbOGgZGFLM49SAAxxo86MC9whsJBI+oALZCWa4pA4RqEFqwPnGWiDpgTZRgGpmxJhadJ5AFJSpBBnEys+75KAY314uvevbt56aWXKocMRgjvPF54bHBRATzc8Gyk73hSRx0wAVi8eLHNBxx1WhAImrRfjRo1ijopzCmnnGJOPfVU07kzApdoA3bke+yxh0FaHnW4+eabo04Cq0eOMhF2lc7/vygTQPuuFFAKKAWUAkqBCFNgN+n7uij2P+oqYPq/iyARsxWUAkoBpYBSQCmgFIgOBbD9+pdgRXS6rD1VCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApEC0K7CzdfVBwveCXgsQiqS/ogFgcwwTXCBJbhlQunQRTAZ7IJHf+XJAYJm8KumB2O8nxRMHVglzjP/XzHAdEDP9VkOsgDi1EJ/dCM/nBvXg8d4xfIP0N0csJIukF7k2MINtazv1XcIpgofqeSbv3lec9I/iZIPS5R/BPgl5IRT9vOYx91wj+IugNgL6l/H5I8CtBngVdgBsFEyOFniPnoPVFgg8KOlow1vcJOmB8hgmuEcxkHmRCC6nKdBV8Q5A6efZoQQcEHWXsvfOAto5yBeR/OnqGhRZPSl+YywRUXSfIvNhe0AHOXX0EVwlCj9cFTxT0Qro6wkKLIdKpZYIkmV/g7aDn+DQ5fkfwO8G3BdsIOthdDrzzBnqx1tkbHE2DQAtpTiVcKkfM7cGVZ2IHh8m/5wXZmzcIThWsIeigsxz8U/ALQfYUypJFwQvp6JkLLXgHeN8dP8vvjwXrex6c7Z7hudUko8d8KcS8YEzdGHeTYwfs66wN6AUuFTxVMBG6yok3BP32nVzp4X3GMvkB3RWUAoGmABvKC4JsjLxkegmyuMgJCEwXJNL3HvwQ2FHwb/bI/8//yWmYxH8Iujr2lGPuA6jnyvh/ftcWZMHezI84wDzA1NCeZLBSLlAvDOUHglsJAosEYXQc7C0HMBZgLUEHt8gBG+oLgtsL8qxegv8WdO2eLsfZ9D1du2HY1gqyMWwhSNvnCzIGDtLRz5Xj/z2CMwWh1WaCDs6Rg/HxHwPl/7Xx4+byn5egYwg5/aAg9F8j6GjBWP0qyMu1WLSQqk1vQcaOFxbtJw3QwYLJ4EC5QF8PiRfIhJ5hoQV9c3OY8XlI8LF4P/l3uSDrCoaXudpOkBehl17p6ggLLbpIv2BuxwouEEyEI+XED4KnCG4u2Fbwe8FDBZPBVLnwpOdiEGjhmrOPHLAOXhMc7E7Kf8b5U0H2RvaLPwrywfqSoIPuctBUkGvQAsaJPYxIEA7S0TMXWkyUyqEpe8ZegqxLxotnVxMEpgtms3/am+RPMnpwfZ7gdRwkgb/KedDBcXLA3GBtOEi37+RKD1c/+yf0ONad0P9KgaBSgE2nh6dxbCS8/A8XbCwIE+CYNzlMCzA3r6QttXEBNq3lnlMN5JgFxIaWDGAAYUSrC34g+AdBgM0BhsbBxXIwSRBG53x3Uv6/I/gvwUL2PV27W8jz/iPoBWjM1/Ou8ZOZ0u8kKf+y4PGC0GozQQfnysF4Qeh3teC1ggA04sXZhh9x4AXTSvBHQUeLM+WYjTyfeZCOFn+W+r8VbCmYKdwhBRd5CmdCzzDQwtMle/h/8ney4BueC4vluJ/nN4cvCjLOfuBXR9hocY10bIFP5+6Vc1MTzj8uv+9KOOd+sraY383cCfkfBFrQHNYtY9tacJ7gYEEHMFKs7QPdCfl/oiB7cir4Si6e7FMgGT1zocU6qd+9O9x+sa2cy2fPoMmp6MH1RBpxLhnAQMOEwQC2jRfKZN/JlR7xRxhHD5h2hRJTgAmkkDkFRkpRGILqglsKXiK4SpCXTxPBDwWvFIRZ+kiQzXcHwWTAPasF2ZC/EITRukow1biwMXsZQPlpgXrWCz4nWN+e+e1PDzl8WhCGYIDgfwWB2YJ1BP/CD4GmgnME5wq6F8DucsxX5q2Chey7VGchWbvZkAD3n+PN478P5odAJvSD/mMFuwrygkiEB+QEm/EngjDyNwsC0OifgtAEOEQQhnCGIAxfR0HmAdf/n2A+80But5CMFvXk6jaC+wquFGScZwoeJOgHbNwdBMd5Ljo6uv9cSqRnGGjhujRMDhgH1g0v8GsFHXj76M6xpg51P+L/U9URJlokdGujn6yVxI/MJXKO+ewHF8rJjwTZGxwEhRYDpEGss+muYZ7/X8sx8/18wa0Fqwl2FZwqmAyOlAt8xL+erIDP+Vxowb4zSZD98yTBBYLdBfPdM1LRQ6q3wHNYIysEhwvSXy+w98EEs9/RLuYG7wqgnmC6fSdXeuxvnxDbw1+QYz7sFZQCgaZADWndM4K/Cv4oyIv4aEHgLkHOjxH8g+BOgrMFKZ8M2ACY+O0FNxfkhb5WsI+gH1wtJ9cJ7uK5uLMcHyjIC47F3VsQRiUZcyCXKoFnsnF2FHTHu8lxTcHPBYFzBD8TLHTf07V7O3kmTBmbFvTcVZCNgs0UegGZ0G+KlOtvSxvTQP5zP7TKBBgHngFwfLc9MuYR+b9CkPGuEIQRyWcepKMF48Oz6D9M51aCIwT/JfhnwUTgw2SD4O89FzKhp6f4JodBoUViw2rLicGC3vnOeMPEcG4LQejHOntP0A/86vAr584FkRbXSOMWuAZ6/r8vxxd6fnPYTXBlwjl+Qiv2l178yBBKRQsY2TWCMHbAPEHG3Qv15Qfr8idBxnup4E6CfrC7nPxQ8Dq/i3IuGT2TFLenk9FiQry+Z+R/hSBtWy+Yz56RCT2Okmc4evGOWCb4kKAfsFfAoPYT/F28QLb7Tvy2yn+p6HFpvBTrtEflHXqgFAgoBVgUHwjeI8jLdDPB1oJfC/KiuUmQhQ2z4oAFmHjOXeP/q4KLvCfk+EqfcxQZIshi2YsfaeB5uT40TRl3eZocTBSsJ/iuoINVcnCY4IOCDwsWuu9S5SaQ2O66UgIm+lNBXlgXCMIINREE0tHvTCnDFy1jBTQU/EUQZjcTYJOl/B6CtIP6mAe0Z60gEiXaw1d2PvNAbt8EvLQ4Sa7ynGaeUvTpO8HmnnPu8C05GOF+eP4no2dTT5lkh0GhhV/7DpeTnwi6cYU2gwSZM3zIMH8fEHxJMBkk1pGsHOeDSItkDAsvfV7qXoBBhjlKhDPkBHPq/xIvpPhdClrAmL4ueIqnHfPkeLDnN/vi/wQvFNxScGvB6wTfjx/Lv0qg7GrB4ZVnNj1IRs9NS/52xo8WXO0kCF0fFWQd7yeYz7sjE3rIIzaB+nLmR8GtNrny24mn5fDi+M9s953faokdpaIHmpS9BaHHvrHi+rfUFGCjVMiMAmyKMAK3CH4jyMSdLghj1FyQjZavOy/ALHCO/37gd49fuXFysp3gsYJsaOkg1TMT74WxgQGAuZjjuchxC8HGggsFC913qXITSGw3mz7t+osgmwWMFxvpy4KAH/28tGZc2Fy4DynmNEGufyLYWTAdvCYFkKSxWdcTnCvIPNhJENVyQ8H/J3i7YD7zQG7fBLy0WL7J1eRzqqGUpc93+NyTjJ6LfcomngoKLRLbxe/fCyJF5cMMYG3CHDBndhSEcUfl5J3f8nMjSKxjo4sJP4JMi4SmWtuzwxNO8ttvTnWX81MEv0oon+pnKWixqzSgjuCdgqxj8BhBtB1vCgIHCX4vOF7wJ8EfBG8UrC3IvQ4ot0DwbkEY4UKCHy2onw/VbQQ/EmS/eEcwn3dHJvSQRyQF7x6ZWAjmeZ/4Sb85kurexLqS0YN9tIFgK0Ho8a6gglIg8BRAssIm9GdBFgITmI2mkaBb4DfL8VaCMAizBKcJJgMkSP8V5Mt7M8EDBNcIXiYIINGYLMgm9xdBP2gmJ2sJ0p6tBbmXNlF3JrCXFOKFyUI8xXPD6XK8TvAXwd0FC933TNpNH6ArdDhOcLVgL0EH6egHQ7CLB0+TY/qzmyC0ygQmSSHo8JqnMLT4UvBfgvcI5jsPMqHFVHnOfEEYHebXMMGPBf8k6IVH5MfT3hOe43T09BT1PaxKWhwSb9Hf5H8bQdYgwMvqJcFF/IgDNNozfsw6vElwjSDMO5BJHbGSyf9WJS0YRwdbyMEfBIcKvijI3AAdHCkHMEYnC1L2VMHvBL11yE/LILMPHMaPLKHYtGBv865jjhcKjhJ0+2INOaZf5wmyX0CTawS/EWQfAOoJfiHYkx9JABqlomeS2ypP+9GCi+zztO9+QfqTz56RCT1YA80F2T8B3i1LBB/lRxw6y3/WAu8e+txNEOa5haCDTPcdVz7xfzJ6vC0F1wmyfyooBUJBAV4qTwh+Kvi1IIzZuYIO9paD2YLfCv4/Qb5Gqwk6uF0OnnY/4v9PlP9vCHLPKsE+gg7qywEMCxv4v+NIOY4dXCUHHwlyfoPgXEG+rrIBGKsfBbf13LS9HP8s+E78XKH7nkm7x8mzPxf8j+CbgmcLJkIq+iWWhS7Qkw0vUzhLCnLPDZ4boMX7ghWC3wnStnzmQSa0gNG7WxDG8zPBZwT3F/QCL0NeNC29Jz3HmdDTU3yTwyDQgjX2oiB0YB0wd28T5IXn4GA5YN5ynfkzWRCpiYNM6nBlk/0PAi1o2wTBXwWZo6A7lsNKOFWOoAf7yArBUwQT4RY58UriyQx/l4IWiU15Xk4MTjjZRH7DGDI3YPTmCx4r6IB7fhZkXrBfghxfKeggE3q6sn7//WhBuYmC7Be8N8B89wypYiNIpEcNufqy4FeC9HGl4HDBPwo6uFYOVgtCB/aUlwT5SPZCJvuOt3zicTJ6jJGCzNd2iTfob6WAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAJKAaWAUkApoBRQCigFlAL/vx06EAAAAAAQ5G89yIWQAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAeiCVcTHF2cm3hQAAAABJRU5ErkJggg==\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment