{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Joint fitting XRT and GBM data with XSPEC models\n", "\n", "### Goals\n", "\n", "3ML is designed to properly joint fit data from different instruments with thier instrument dependent likelihoods.\n", "We demostrate this with joint fitting data from GBM and XRT while simultaneously showing hwo to use the XSPEC models form **astromodels**\n", "\n", "### Setup\n", "\n", "You must have you HEASARC initiated so that **astromodels** can find the XSPEC libraries. \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Configuration read from /Users/jburgess/.threeML/threeML_config.yml\n" ] } ], "source": [ "%matplotlib inline\n", "%matplotlib notebook\n", "from threeML import *\n", "import os" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load XRT data\n", "\n", "Make a likelihood for the XRT including all the appropriate files" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Auto-probed noise models:\n", "- observation: poisson\n", "- background: poisson\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width);\n", " canvas.attr('height', height);\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'];\n", " var y0 = fig.canvas.height - msg['y0'];\n", " var x1 = msg['x1'];\n", " var y1 = fig.canvas.height - msg['y1'];\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x;\n", " var y = canvas_pos.y;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAAAXNSR0IArs4c6QAAQABJREFUeAHtnQmcHUW1/8/s+ySTmclkzySQkI0kkLAjhGAMu4igAiqggn9RkAdPFBRkcXn4XN4fwacCivo3oCj7IjwkiQ8SlgRISMhGksk2WWcmmX2f/zl9b93bt2/fuvu93ff+zudzpqurqmv5Vk+dW93VVUQQEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEEgSgZwkpeuEZIecUAiUAQRAAARcSMAVtiHfhWAjLvL3v//9kHGXLVtGCxYsoEPVh2j1/NU0b9U8qmmqMeKrMOvFdv5WP+u5XfrWdOM5N6e/7u/rjDrFk55ca66DOX3Fx5q+Ob41zHxuF8+cvq78dtdK2nb+Zj+V/sA9A3TeSeeZi5MQt0rffP+YEzaXxewfqVul3/BoA+39zd5IL6O77rrL0HAXhIunCw8VZucfqV+48iYi3K4ssaQbSzqRXBMuji5cwhoaGqi+vj6gSnb3YSi/5cuXB1zr5JM8JxcuzrLdJQZKJ/1H9QcZLxV/+PDhyhlwtPM3+5lvHtX5hOrcAhKO4cQufXNZYkjSd4mkY5e+L4LFEWm+5nh26ZvDLVlQqDA7f/Ezp9+ytiXon9qafrTn5vRDGXdJ0658keRlTn/3+N10w7wbIrnMF8faifkCLI5w8XThocLs/K1+dh2opWhJO7WWJdaMYkknkmvCxdGFv//++7b3nN19aPWT/mvHjh2C4+5YmaTyupxUZpbivIZ0IzBz56DrfKIts/qnTFb6qjxIX5GwP1r5qHaxjx29rzX96FPQX2FN/7mL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\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "trigger=\"GRB110731A\"\n", "dec=-28.546\n", "ra=280.52\n", "xrt_dir='xrt'\n", "xrt = SwiftXRTLike(\"XRT\",pha_file=os.path.join(xrt_dir,\"xrt_src.pha\"),\n", " bak_file=os.path.join(xrt_dir,\"xrt_bkg.pha\"),\n", " rsp_file=os.path.join(xrt_dir,\"xrt.rmf\"),\n", " arf_file=os.path.join(xrt_dir,\"xrt.arf\"))\n", "\n", "\n", "\n", "xrt.view_count_spectrum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load GBM data\n", "\n", "Load all the GBM data you need and make appropriate background, source time, and energy selections. Make sure to check the light curves! " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glg_cspec_n3_bn110731465_v00.rsp2 already downloaded into /Users/jburgess/coding/3ML/examples/gbm/bn110731A -> skipping\n", "glg_tte_n3_bn110731465_v00.fit.gz already downloaded into /Users/jburgess/coding/3ML/examples/gbm/bn110731A -> skipping\n", "Auto-determined polynomial order: 1\n", "\n", "\n", "Unbinned 1-order polynomial fit with the Nelder-Mead method\n", "\n", "\n", "Auto-probed noise models:\n", "- observation: poisson\n", "- background: gaussian\n" ] } ], "source": [ "\n", "data_dir_gbm=os.path.join('gbm','bn110731A')\n", "trigger_number = 'bn110731465'\n", "gbm_data = download_GBM_trigger_data(trigger_number,detectors=['n3'],destination_directory=data_dir_gbm,compress_tte=True)\n", "\n", "# Select the time interval\n", "src_selection = \"100.169342-150.169342\"\n", "\n", "nai3 = FermiGBMTTELike('NAI3',\n", " os.path.join(data_dir_gbm,\"glg_tte_n3_bn110731465_v00.fit.gz\"),\n", " \"20-90,160-250\", # background selection\n", " src_selection, # source interval\n", " rsp_file=os.path.join(data_dir_gbm, \"glg_cspec_n3_bn110731465_v00.rsp2\"))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "View the light curve" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width);\n", " canvas.attr('height', height);\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'];\n", " var y0 = fig.canvas.height - msg['y0'];\n", " var x1 = msg['x1'];\n", " var y1 = fig.canvas.height - msg['y1'];\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x;\n", " var y = canvas_pos.y;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAAAXNSR0IArs4c6QAAQABJREFUeAHtnQd8W9XZxl9vO3GcOHtB2PMjhQ5WGaYUGigEaFlhr7KhpUBZhYRVCmWUWUiB0FBWCHu0BT6a0kBLGB8Eygg0ZE+CMz3ioe95jnSdG0WyJVuSdaXn/H6P77nnrnP+V9ar90wzBREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARFIE4GCNN03G24byoZMKA8iIAIiEEACgbANhQEEm3CWQ6GQBUVjx44NTF67g6n4dPxZFiMxSsX/ZsJfsFlwYk4bsCzgqyyIgAiIgAikiYAMWJrA6rYiIAIiIALpJSADll6+Cd+9pqYm4XPz8UTx6fiti5EYdUwgt84IRENdJ5GjOlj9ODrJTpeJgAjkKYGCAmcWAmEbivP0HanYIiACnSCwySab2OzZsztxpS7JNgIjRoywWbNmZVu2kspPIKxsUiVad7I8sHUsFBOBlBDgr3PVbKQEZbffJN67DJIHpjawbv8YKQMiIAIiIAKdISAD1hlqukYEREAERKDbCciAdfsrUAZEQAREQAQ6Q0AGrDPUdI0IiEBgCEydOtW23XbbhPL7j3/8wzbaaKOEztVJ3U9ABqz734FyIAIikAICm266qb3++usb3GmPPfawTz/9dIP0eAmRTgwxD5988sl21VVXxTzmT7zjjjtshx12sMrKStt4443tqKOOsv/85z/+UxRPAQEZsBRA1C1EQAREwCNw/vnn25133ml33XWX1dbW2owZM+zQQw+1l156yTsl4W1LS0vC5+rE3CLAbvQKIiACKSSAr4gU3i21t8IYtdD//u//bnDTKVOmhIYPH96W/t5774V22mmnUFVVVeiII44IwTsKXXnlle64d+4tt9wSGjhwYGjo0KGhCRMmuGPjx48PlZSUhMrKykK9evUKjR49uu2eXuSLL74IFRUVhd59910vaYMtZkwJPfDAA23pDz30UAheYts+PMDQ3XffHdpyyy1Dm222WejMM88MXXTRRW3HGTnkkENCt912m0tbsGBB6Kc//WlowIAB7nx4f+udG28n3rtkelBMgTywoLwp5VMERKDTBLxqwaamJvvJT35ip5xyin3zzTc2ZswYe+aZZ9a776JFi2zVqlUGw2D333+/nXPOObZixQr72c9+Zscee6z96le/spUrV9pzzz233nXcgQF1bWjf+c53NjjWXoKXP+8c3vudd96xTz75xI455hibNGmSd8iWL19ur7zyiss7jJMdfPDBBoNsCxcudM+//fbb7dVXX207P5cjmokjl9+uyiYCGSZQO7IkJU+snt6UkvtE3+Rf//qXsVru3HPPdYcOO+ww23nnndc7rbS01OCRWWFhoR1wwAGuHevzzz/f4Lz1LorsLFu2zIYMGRLrUFJpl19+ufXu3dtds+eeexoNHDujsD1v8uTJtvvuu9ugQYPs7bfftq+//tquuOIKdy5nSjnttNPs8ccft/322y+pZwbxZBmwIL415VkEspRAugxPqopLL2XYsGHr3S6612G/fv2c8fJO6tGjh61evdrbbXfLa/mMrgZUea53C3YCeeyxx5wBe/TRR+344493x+fMmWPz58+3vn37un16ZK2trbbXXnutd32u7qgKMVffrMolAiKwAQF6R/zC94e5c+f6d9uNR1f1RZ+877772rx58+z999+PPtS237NnT6urq2vbZ5VldIh+Dqs66XnRYNHrQpuXu4TGF+1krjqUVaLsNMLqzhdeeCH6ljm5LwOWk69VhRKB/CSwdu1aa2xsbFN0L77ddtvN0MnC0EnCVSWyrWnatGkJw2K13cyZM+Oev8UWW9jZZ5/t2qc4poxtbszPE088YTfddJO7bscdd7Snn37a6uvr7csvvzR06Ih7P+8Ar+nfv7+rHhw1apShA4o7xOpPxnnvhoYGVyZ210cnEu/SnN7KgOX061XhRCC/CPz4xz82VvlVVFS47dVXX70eAPQidMaDnTOqq6uN1XHsBIGeheud59/xe0OnnnqqG8/FKjt2BokV2ImCbWzs/MFn0Kg9++yz7jk8/4ILLjDmY/DgwcZxZccdd9x6t/E/z3+AXhg7ibAjiRfYTkdv64MPPjCOg0PPSdfZhJ1M8iFoNvp8eMsqowikiAC/XNnOkkth1113tbPOOstOPPHEXCpWh2WJ9y4jBjQQtkEeWIevWSeIgAjkEoE33njDFi9e7Krb/vSnP9lHH31krJZTCB6BTBowVvQuhqb7MD2OOFs7qa8iW2xcuAx/v4A4B8z+LiX8h5+0z6AZ0CXhJP0VAREQgcQIsEv8t771LevTp49hMLA99dRTrkt6YlfrrGwikEk3cQ8UnH1RJ0IjY0C4GWnLoesgzrz5KPQ9iP1JX4O2hJhfGq59oQXQO9DREA1adOAA9Og07YuACHSBQLxqpy7cUpd2E4F47zJIVYiZHAc2Fe9pRDvv6kgcq4kcPwRbemfN0CyInhhHG9KAMT4bYuA5PDeWAeNxBREQAREQgRwlkMkqxPYQ7omDiyCvf+owxP2DMzhwg2nR6fMiadgoiIAIiIAI5BOBbDFgYwD9MR/4WFWbrA+Ml+67VFEREAEREIF8IJDJKsR4PItwgAMqvu07gZ7VRr59toOxzYsGbOMY6b6kddFx48a17WAGaKMUREAEREAE1hHADPxGBTHE8mjSWY5NcHPOcbKD7yHsVcjehPv40rZD/BFoF4jVhq9C7MRBj/FziJ04OOEYh9DTe2NPxeigThzRRLQvAl0kEK/hv4u31eXdQCDeuwxSJ45MViE+inf0FrQVNAc6GWI4CvJXHzLtE2hSZPsytmdDrEJsgTiN9CsQlzdlJ45YxgvJCiIgAiLQNQKJrsDctaek/mpOYxU9SXHqn9L9d8xkFeIxcYrrGbLowzcggYoOf0XC1tGJ2hcBEchvAlxKZMmSJVZcXOymauKSI/fee+8Gs8/nC6WIJ5XTxc2kB5bTIFU4ERCB7iXAL+yXXnrJLTbJJU04L+B5553XvZmKPD16UuGsyFQOZEIGLAdeooogAiIQJuBNXsBFKQ8//HC3ojGPvPzyy/btb3/bLRI5YsQIi57kl4tFfv/733eT7/L4xIkTN0DKVZp/8IMf2C9+8Qt3jMuXcCJgLjy5yy67uEUwufikFzjR7j333GNbbbWVE9PfeusttzAmJ/nlNVxg0wubbrqpvf76696uy6O37tfs2bPdGmXMF/NH4/yb3/ym7VzORH/SSSe5dcH+53/+x63m3HYwhyOZrELMYYwqmgiIwKT9G1IG4chXyrt0L663xSVMuHwKQ2VlpT388MO2/fbb28cff+xWK95pp51s9OjRbo2tAw880DhDPdfZ4kzu0WuE0VhxdWbOmegZPy6b0qtXL1dtySVWfvSjHxmrMf2By7W88847Vl5e7tbqOuigg+yuu+6yo48+2iZNmmScPf+///2vM5z+67x4dDXgm2++aV988YV99tlnzhAyv1tvvbWxx/VXX33lxMU382VuR3lg3idFWxEQgcATOPTQQ50XQq/otddes4suusiViSsU03gx0EOhAWFHBwYuqbLffvvZkUce6dYKo3c0cuS62e64AObee+9tXBXZM15c9Zhrel1zzTVuKZZtt9025mz2l19+ufPQuFwLqzfpjR1zzDHOm2Iettlmm4QXn6Qxo6Gid8n8cT7HDz/80JXhySeftF//+tfuWVxx+vzzz3fpuf5HHliuv2GVTwQyRKCrXlMqskmPZ5999nFLvnANLhquTz/91Hkml112mfO+uOgldcQRR7hH0tvafPPN4z6ehoee1hlnnNF2ztKlS91s9sOHc4hqOMTq9ec/vmDBAlf9553PLasDo1eI9h+PjnNBTS9w3TN6Wwy8t/9ZvG8+BHlg+fCWVUYRyBMCXhsYvZXDDjvMeVRs3+IikPTOaCyWL1/ujJF3Lg0PV0aOF04//XRXJccqRFZNMgwYMMD1dpw3b17bZdHVjjzgrwIcOnSozZo1q+18RubMmdPWS7Jnz55t9+exRYs4u15iYciQIetVe7LNLB+CDFg+vGWVUQTykAC9MRorVu/RU2HVIFdCnjZtmqs29JDQuHGl48mTJzuviu1dXtWcd86dd97p2prYhsUOE+ygwRWZWaVXX1/v2qRidfzwrueW7Wxsv3r88cfdc9hGR++Q92TYcccd3bHm5mZ79913XX7cgcgfz+D607w4qz9vuOEGV14aVbaz5UOQAcuHt6wyikCeEGCvwKqqKtcWdOWVV7rehDRgd999t+slyLax6667zrVneUjogbGX4s033+zaz9i5Y/p0/7KF4TPHjx9vG2+8sfPkWAVJo0YDSe+HqzmzbYttXV7we19M69u3r7344ovuOf3793dbVk8yneHaa691niD32dZGw+oP0ffz748dO9bljT0Z2YHjhBNO8F+as/GCnC0ZZu5o7xdLDpdbRROBtBHgl6b+r2LjvfTSS91KzxMmTIh9QpalxnuXEcMYCNsgDyzLPlTKjgiIQDAIcGXnjz76yGWW1ZIPPPCAq1YMRu5zI5fqhZgb71GlEAERyDABDmweM2aMebN+XHzxxW5gc4azkdePC4Sb2Mk3pCrEToLTZSIQj0C8aqd45ys9ewnEe5eqQszed6aciYAIiIAI5AgBtYHlyItUMURABEQg3wjIgOXbG1d5RUAERCBHCKgTR468SBVDBDJBgFMURdpIMvE4PSONBHJhuil14kjjB0S3FgEREIGgEVAnjqC9MeVXBERABEQgcATUBha4V6YMi4AIiIAIkIAMmD4HIiACIiACgSQgAxbI16ZMi4AIiIAIyIDpMyACIiACIhBIAjJggXxtyrQIiIAIiIAMmD4DIiACIiACgSQgAxbI16ZMi4AIiIAIyIDpMyACIiACIhBIAjJggXxtyrQIiIAIiIAMmD4DIiACIiACgSSQSQP2AAgthqZHkToP+59BXJv7t75jlyH+BfQptL8vfRTiPH8GdIkvXVEREAEREIE8IpDJyXz3ANfV0ERoZIRxDbaXQwdCzVB/6GtoW+hR6HvQcOg1aEuI+aXh2hdaAL0DHQ3RoEUHrcgcTUT7IiACItABgSBN5pvJ5VSmgtuIKHZnYZ9eF40XA40XwyHQ4xDTZ0H0xHaGaMAYnw0x8ByeG8uA8biCCIiACIhAjhLIZBViLIRbIXEv6N/Q36HvQAzDoLkuFv4zP5IWnT4vku47VVEREAEREIF8IJBJDywWTz6/D7QrxOrCJ6HNoFhVmyGkxzK4TFcQAREQARHIMwLdbcDoZT0dYc72rBaoH0TPamPIC2wHY5sXDVusdO+89bbjxo1r26+pqTFKQQREQAREYB2BKVOmGBXEEMvTSWc5NsHNX4B2iDzkdGxZLTgW2gp6FRoBbQc9Au0C8TjT2YmDHtjnEDtxLISmQWMg9lSMDurEEU1E+yIgAiLQAQF14ogN6FEk10D0sOZANFoPQhOgj6BG6ASI4RNoUmTbhO3ZUAiih3Yu9ApEY8au+bGMF5IVREAEREAEcplApj2wTLKUB5ZJ2nqWCIhAThAIkgdGL0ZBBERABERABAJHQAYscK9MGRYBERABESABGTB9DkRABERABAJJQAYskK9NmRYBERABEZAB02dABERABEQgkARkwAL52pRpERABERABGTB9BkRABERABAJJQAYskK9NmRYBERABEZAB02dABERABEQgkARkwAL52pRpERABERABGTB9BkRABERABAJJQAYskK9NmRYBERABEUhmPbBy4DoI2hMaCtVDH0MvQf+BFERABERABEQgYwQSnY1+HHJ0MDQFeg9aAtGgcQ2vfSLxC7GdDmVL0Gz02fImlA8REIHAEAjSbPSJGrAfgz49rXhhIA5wpeR3453QDekyYN0AXY8UAREINoFcNGCx3gjbzyqhlbEOZkGaDFgWvARlQQREIFgEgmTAku3EwVWVq6CeENu/uHLyxZCCCIiACIiACGSUQLIGbDvkjh7XodBfoE2h4yEFERABERABEcgogWQNWAlyR9GAPQ81QSFIQQREQAREQAQySiBZA3YfcjcLYhXiG9AIKFvbwJA1BREQAREQgVwlkGgvxN0A4N9QtLfF64ugZijbgjpxZNsbUX5EQASynkAuduI4EdQ5/utx6CRoMMRAg5aNxstlTn9EQAREQARyl0CiHphHYBtEDoB+BPWG/g79FXoTaoGyKcgDy6a3obyIgAgEgkCQPLBkDZj/BVRgZx+IBo1VjN+FsinIgGXT21BeREAEAkEglw3Y5ngD86BGqAYaCU2ElkPZFmTAsu2NKD8iIAJZTyBIBizZXohPgT6rCreAxkMbQRzcrCACIiACIiACGSWQrAFrRe7YaeMw6E6Is3AMgRREQAREQAREIKMEkjVgHLg8BmKvxBcjOeXAZgUREAEREAERyCiBZA3YycgdO2xcD30FbQr9GUokPICTFkPTfSePRZxtau9HNMp37DLEv4A+hfb3pfOcz6AZ0CW+dEVFQAREQATyiEBxkmXdD+ef77uGRowLWyYSJuAkVjtOjDr5VuxT/rAtdo6EuB0OvQZtCbHX5F3QvtAC6B3oOYgGTUEEREAERCCPCCTrgZ0Yg81JMdJiJU1FYm2MAzRK0eEQJHDQNNvbZkH0xHaOiPHZEKszeQ7PVRABERABEcgzAol6YGz3OgZilSEn8fVCL0SWeTud3J6D646HuBgmV3VeAQ2D/gV5YT4iTKOxm+slYsvqRxo2BREQAREQgTwjkKgBewtcFkL9oVt8jFYh7m/T8h1KKHoPzroGCkHXQbz3aVAsr4zn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\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nai3.view_lightcurve(20,250)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make energy selections and check them out" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Range 8-900 translates to channels 4-123\n", "Now using 120 channels out of 128\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width);\n", " canvas.attr('height', height);\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'];\n", " var y0 = fig.canvas.height - msg['y0'];\n", " var x1 = msg['x1'];\n", " var y1 = fig.canvas.height - msg['y1'];\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x;\n", " var y = canvas_pos.y;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAAAXNSR0IArs4c6QAAPfFJREFUeAHtnQl8VcX1x08SEhJICCSsghCsG1orLixVW9FqEZGKuAAuVbTaUq24IKi1AgqyFPd9AXEXLQgqIP3/VeifumHdEEGxEgTZImsSsif/85u8+7x5vCRvS9699/3O53Ny525zZ7735Z03M2fOiFBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIkIJDVRvk7ItsYJhWAZSIAESMCFBFxhG1q4EGzIRT755JMlLy/PaOBNy5YtkwEDBgQe3m8/lOsaumbBggXy2Wef7ZfvxIkTBRoo9R0PvK6595uqXNHmG+79oV7f2HUNnY/kXEP3NPe7tp7XVGWKNt9w7w/1+lCua+ia+s717t1bhg4damH1bxv63vBf1IyJ/Px8gS5fvrwZnxrdozxtwBoyUDBsoUgo1zV0TefOnYM+pqGyBb0hzgebqrzR5hvu/aFe39h1DZ2P9FycX/F+j2+oHvtdHMaBaPMN9/5Qrw/luoauqe9cfd8BYSBrlkvxPQZ1kwFLahYy8XlIzYQJE+LzZNtT8Ytmzpw5tiMNJ+v7FdfwXTzrdgJ8725/g/WX/7LLLjOGIfAKp7XArPJNmjQJSVfYhmSr0Nw6g0B9v+KcUTqWoqkI8L03FVnn5ovWDiU6AjRg0fGL+d38Ios5UldkyPfuitcU00LSgEWP09NjYGii40PCD0r0HxTmQAIggP+lDRs2EIYHCOTm5so111zjr4nlxOE/4IKEpw0Yf9W64BPIIrqKAIxXTQ1nqLjqpdVT2KSkpDpn8OME6iYn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\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nai3.set_active_measurements(\"8-900\")\n", "nai3.view_count_spectrum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup the model\n", "\n", "**astromodels** allows you to use XSPEC models if you have XSPEC installed.\n", "Set all the normal parameters you would in XSPEC and build a model the normal **3ML/astromodel** way!\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "xspec_abund('angr')\n", "\n", "spectral_model = XS_phabs()* XS_zphabs() * XS_powerlaw()\n", "\n", "\n", "spectral_model.nh_1=0.101\n", "spectral_model.nh_1.fix = True\n", "\n", "spectral_model.nh_2=0.1114424\n", "spectral_model.nh_2.fix = True\n", "\n", "spectral_model.redshift_2 = 0.618\n", "spectral_model.redshift_2.fix =True" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<ul>\n", "\n", "<li>description: ((XS_phabs{1} * XS_zphabs{2}) * XS_powerlaw{3})</li>\n", "\n", "<li>formula: (no latex formula available)</li>\n", "\n", "<li>parameters: \n", "<ul>\n", "\n", "<li>nh_1: \n", "<ul>\n", "\n", "<li>value: 0.101</li>\n", "\n", "<li>desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)</li>\n", "\n", "<li>min_value: 0.0</li>\n", "\n", "<li>max_value: 1000000.0</li>\n", "\n", "<li>unit: 1e+22</li>\n", "\n", "<li>delta: 0.001</li>\n", "\n", "<li>free: False</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "<li>nh_2: \n", "<ul>\n", "\n", "<li>value: 0.1114424</li>\n", "\n", "<li>desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)</li>\n", "\n", "<li>min_value: 0.0</li>\n", "\n", "<li>max_value: 1000000.0</li>\n", "\n", "<li>unit: 1e+22</li>\n", "\n", "<li>delta: 0.001</li>\n", "\n", "<li>free: False</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "<li>redshift_2: \n", "<ul>\n", "\n", "<li>value: 0.618</li>\n", "\n", "<li>desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)</li>\n", "\n", "<li>min_value: -0.999</li>\n", "\n", "<li>max_value: 10.0</li>\n", "\n", "<li>unit: </li>\n", "\n", "<li>delta: 0.01</li>\n", "\n", "<li>free: False</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "<li>phoindex_3: \n", "<ul>\n", "\n", "<li>value: 1.0</li>\n", "\n", "<li>desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)</li>\n", "\n", "<li>min_value: -3.0</li>\n", "\n", "<li>max_value: 10.0</li>\n", "\n", "<li>unit: </li>\n", "\n", "<li>delta: 0.01</li>\n", "\n", "<li>free: True</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "<li>norm_3: \n", "<ul>\n", "\n", "<li>value: 1.0</li>\n", "\n", "<li>desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)</li>\n", "\n", "<li>min_value: 0.0</li>\n", "\n", "<li>max_value: None</li>\n", "\n", "<li>unit: keV / (cm2 s)</li>\n", "\n", "<li>delta: 0.1</li>\n", "\n", "<li>free: True</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "</ul>\n", "\n", "</li>\n", "\n", "</ul>\n" ], "text/plain": [ " * description: ((XS_phabs{1} * XS_zphabs{2}) * XS_powerlaw{3})\n", " * formula: (no latex formula available)\n", " * parameters: \n", " * nh_1: \n", " * value: 0.101\n", " * desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)\n", " * min_value: 0.0\n", " * max_value: 1000000.0\n", " * unit: 1e+22\n", " * delta: 0.001\n", " * free: False\n", " * nh_2: \n", " * value: 0.1114424\n", " * desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)\n", " * min_value: 0.0\n", " * max_value: 1000000.0\n", " * unit: 1e+22\n", " * delta: 0.001\n", " * free: False\n", " * redshift_2: \n", " * value: 0.618\n", " * desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)\n", " * min_value: -0.999\n", " * max_value: 10.0\n", " * unit: \n", " * delta: 0.01\n", " * free: False\n", " * phoindex_3: \n", " * value: 1.0\n", " * desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)\n", " * min_value: -3.0\n", " * max_value: 10.0\n", " * unit: \n", " * delta: 0.01\n", " * free: True\n", " * norm_3: \n", " * value: 1.0\n", " * desc: (see https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XspecModels.html)\n", " * min_value: 0.0\n", " * max_value: None\n", " * unit: keV / (cm2 s)\n", " * delta: 0.1\n", " * free: True\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "spectral_model.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup the joint likelihood\n", "\n", "Create a point source object and model. \n", "\n", "Load the data into a data list and create the joint likelihood\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ptsrc = PointSource(trigger,ra,dec,spectral_shape=spectral_model)\n", "model = Model(ptsrc)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "Point sources: GRB110731A<br><br>Extended sources: (none)<br><br>Particle sources: (none)<br><br>Free parameters:<br><table id=\"table140231632475472\">\n", "<thead><tr><th>name</th><th>value</th><th>min_value</th><th>max_value</th><th>unit</th><th>delta</th><th>free</th></tr></thead>\n", "<tr><td>GRB110731A.spectrum.main.composite.phoindex_3</td><td>1.0</td><td>-3.0</td><td>10.0</td><td></td><td>0.01</td><td>True</td></tr>\n", "<tr><td>GRB110731A.spectrum.main.composite.norm_3</td><td>1.0</td><td>0.0</td><td>None</td><td>keV / (cm2 s)</td><td>0.1</td><td>True</td></tr>\n", "</table>" ], "text/plain": [ "Point sources: GRB110731A\n", "\n", "Extended sources: (none)\n", "\n", "Particle sources: (none)\n", "\n", "Free parameters:\n", " name value min_value ... delta free\n", "--------------------------------------------- ----- --------- ... ----- ----\n", "GRB110731A.spectrum.main.composite.phoindex_3 1.0 -3.0 ... 0.01 True\n", " GRB110731A.spectrum.main.composite.norm_3 1.0 0.0 ... 0.1 True" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = DataList(xrt,nai3)\n", "\n", "jl = JointLikelihood(model, data, verbose=False)\n", "model.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fitting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Maximum Likelihood style" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best fit values:\n", "\n" ] }, { "data": { "text/html": [ "<table id=\"table140231635415248\">\n", "<thead><tr><th>#</th><th>Name</th><th>Best fit value</th><th>Unit</th></tr></thead>\n", "<tr><td>0</td><td>GRB110731A.spectrum.main.composite.phoindex_3</td><td>2.05 +/- 0.05</td><td></td></tr>\n", "<tr><td>1</td><td>GRB110731A.spectrum.main.composite.norm_3</td><td>0.209 +/- 0.008</td><td>keV / (cm2 s)</td></tr>\n", "</table>" ], "text/plain": [ " # Name Best fit value Unit \n", "--- --------------------------------------------- --------------- -------------\n", " 0 GRB110731A.spectrum.main.composite.phoindex_3 2.05 +/- 0.05 \n", " 1 GRB110731A.spectrum.main.composite.norm_3 0.209 +/- 0.008 keV / (cm2 s)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "NOTE: errors on parameters are approximate. Use get_errors().\n", "\n", "\n", "Correlation matrix:\n", "\n" ] }, { "data": { "text/html": [ "<table id=\"table140231633268816\">\n", "<tr><td>1.00</td><td>0.59</td></tr>\n", "<tr><td>0.59</td><td>1.00</td></tr>\n", "</table>" ], "text/plain": [ "1.00 0.59\n", "0.59 1.00" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Values of -log(likelihood) at the minimum:\n", "\n" ] }, { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>-log(likelihood)</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>total</th>\n", " <td>2528.925579</td>\n", " </tr>\n", " <tr>\n", " <th>XRT</th>\n", " <td>1634.050459</td>\n", " </tr>\n", " <tr>\n", " <th>NAI3</th>\n", " <td>894.875120</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " -log(likelihood)\n", "total 2528.925579\n", "XRT 1634.050459\n", "NAI3 894.875120" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "res = jl.fit()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<table id=\"table140231635393232\">\n", "<thead><tr><th>Name</th><th>Value</th><th>Unit</th></tr></thead>\n", "<tr><td>GRB110731A.spectrum.main.composite.phoindex_3</td><td>2.05 -0.05 +0.06</td><td></td></tr>\n", "<tr><td>GRB110731A.spectrum.main.composite.norm_3</td><td>0.209 -0.008 +0.009</td><td>keV / (cm2 s)</td></tr>\n", "</table>" ], "text/plain": [ " Name Value Unit \n", "--------------------------------------------- ------------------- -------------\n", "GRB110731A.spectrum.main.composite.phoindex_3 2.05 -0.05 +0.06 \n", " GRB110731A.spectrum.main.composite.norm_3 0.209 -0.008 +0.009 keV / (cm2 s)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "res = jl.get_errors()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nzS0+HSvcTBQAAAAASUVORK5CYII=\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f8a391feb50>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "res = jl.get_contours(spectral_model.phoindex_3,1.5,2.5,50)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f8a39411390>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "res = jl.get_contours(spectral_model.norm_3,.1,.3,25,spectral_model.phoindex_3,1.5,2.5,50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And then go Bayesian!" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "spectral_model.phoindex_3.prior = Uniform_prior(lower_bound=-5.0, upper_bound=5.0)\n", "spectral_model.norm_3.prior = Log_uniform_prior(lower_bound=1E-5, upper_bound=1)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "bayes = BayesianAnalysis(model, data)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running burn-in of 100 samples...\n", "\n", "\n", "Sampling...\n", "\n", "\n", "Mean acceptance fraction: 0.71478\n" ] } ], "source": [ "samples = bayes.sample(n_walkers=50,burn_in=100, n_samples=1000)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nERFxID0uVmJixYoVHDlyhEWLFk1YGy+99BJf+cpX2Lx5M4888gjTpw/9n/snP/lJrrnmmktqLxqv\nSURkpJTgJSaSk5MpLCyc0DYeeugh9u3bx5o1azh37tyQ9V555RU8Hg87d+68pPai8ZpEREZKCV6m\nnAsXLtDY2BixXk9PDxs2bIiYuLds2TJeoYmITBpK8DLl3HfffTz00EMjqvsP//APExyNiMjkpAQv\nU86rr77KVVddxX333Rex7k033TTxAYmITEJK8DIlzZo1i3e84x2xDkNEZNLSNjkREREHUg9+Amzb\nto2MjIwBZcXFxRQXF8coIpHoKikpoaSkZEBZe3t7jKIRuTwpwU+A7du3s27duliHMak1NDSwY8cO\ntm7ditvtnvLtRLutyS7cB9pDhw5RVFQUo4hELj8aopeYaGho4MEHH6ShocER7US7LRGRSJTgRURE\nHEgJXkRExIGU4EVERBxICV5ERMSBtIpeBN8CuSeffDJivTe/+c2kp6dHISIRkUujBC+XvXXr1vHg\ngw9y6623Rqx7++2384Mf/GDigxIRuURK8BITSUlJFBQUkJSUFPN27r//fj7+8Y9HvNf73/9+Wltb\nL6ktEZFoUYKXmCgoKKC8vHxStGOMITs7O+K9EhISLrktEZFo0SI7ERERB1IPXiaNjo4Onn322Yj1\n6uvrmT17dhQiEhGZupTgZdL42Mc+xg9/+MMR1dWjYkVEhqcEL5NGW1sbmzZtuugpZOFkZmZGISIR\nkalLCV4mlYSEBLKysmIdhojIlKdFdiIiIg6kBC8iIuJASvASExUVFRQWFlJRUeGIdqLdlohIJErw\nEhM9PT1UVFTQ09PjiHai3ZaISCRK8CIiIg6kBC8iIuJASvAiIiIOpAQvIiLiQErwIiIiDqST7CbA\ntm3byMjIGFBWXFxMcXFxjCISia6SkpKLjhxub2+PUTQilycl+Amwfft21q1bF+swJjW3283999+P\n2+12RDvRbmuyC/eB9tChQxQVFcUoIpHLjxK8xITb7eaBBx5wTDvRbktEJBLNwYuIiDiQEryIiIgD\nKcGLiIg4kBK8iIiIAynBi4iIOJASvIiIiAMpwUtMeL1eysvL8Xq9jmgn2m2JiESiBC8xUVlZycqV\nK6msrHREO9FuS0QkEiV4ERERB1KCFxERcSAleBEREQdSghcREXEgJXgREREHUoIXERFxICV4ERER\nB9Lz4CUmVqxYwZEjR1i0aJEj2ol2WyIikSjBS0wkJydTWFjomHai3ZaISCQaohcREXEg9eBFRqGl\npYW9e/dGrLd+/XqSkpKiEJGISHhK8CIjtHTpUp566iluvPHGiHXvvPNOvvnNb0YhKhGR8JTgRUbo\nS1/6EnfccUfEev/0T/9EXV1dFCISERmaErzICE2fPp0rrrgiYr3U1NQoRCMiMjwl+Amwbds2MjIy\nBpQVFxdTXFwco4hEoqukpISSkpIBZe3t7TGKRuTypAQ/AbZv3866detiHcak1tDQwI4dO9i6dStu\nt3vKtxPaVk9Pz2W/wC7cB9pDhw5RVFQUo4hELj/aJicx0dDQwIMPPkhDQ4Mj2gltq6enZ8LbEhGJ\nRAleRETEgZTgRUREHEgJXkRExIGU4EVERBxICV5ERMSBlOBFREQcSPvgZcLt3r2br3zlKwPKOjs7\nSU1N5ZOf/CRpaWkAHDhwgGuvvXZc205KSqKgoCAq+9IDbcXFxU14WyIikagHLxNu+/btlJaWkpiY\nGPzKycnhLW95Czk5OcGyG264gbvvvntc2y4oKKC8vJyCgoJxve9wbQU+sIiIxJJ68BIVV199NU8+\n+WSswxARuWyoBy8iIuJASvAiIiIOpAQvIiLiQErwIiIiDqQELyIi4kBK8CIiIg6kBC8xUVFRQWFh\nIRUVFY5oJ7Stzs7OCW9LRCQSJXiJiZ6eHioqKujp6XFEO6Ft9ff3T3hbIiKRKMGLiIg4kBK8iIiI\nAynBi4iIOJASvIiIiAMpwYuIiDiQniY3AbZt20ZGRsaAsuLiYoqLi2MUkUh0lZSUUFJSMqCsvb09\nRtGIXJ6U4CfA9u3bWbduXazDmNTcbjf3338/brfbEe2EtrVv374Jb2uyC/eB9tChQxQVFcUoIpHL\nj4boJSbcbjcPPPBAVBJ8NNoJbSspKWnC2xIRiUQJXkRExIGU4EVERBxICV5ERMSBlOBFREQcSAle\nRETEgZTgRUREHEgJXmLC6/VSXl6O1+t1RDuhbelxsSIyGSjBS0xUVlaycuVKKisrHdFOaFudnZ0T\n3paISCRK8CIiIg6kBC8iIuJASvAiIiIOpAQvIiLiQErwIiIiDqQELyIi4kBK8CIiIg6kBC8xsWLF\nCo4cOcKKFSsc0U5oW2lpaRPelohIJNNjHYBcnpKTkyksLHRMO6FtxcXFRaU9EZHhKMGLjDNjDLt3\n72bNmjUR637uc5/j1ltvjUJUInK5UYIXGWcPP/ww3/zmNyPW27VrF48//rgSvIhMCCV4kXFWWFjI\n17/+9Yj1Tp48GYVoRORypQQvY/bzn/+cz3/+8xHrVVdXc/PNN0chIhERCVCClzH77//+bzweD1u2\nbIlYd+vWrVGISEREApTg5ZKsXLmSxx57LNZhiIjIIErwE2Dbtm1kZGQMKCsuLqa4uDhGEU0+DQ0N\n7Nixg61bt+J2u6d8O9Fua7IrKSmhpKRkQFl7e3uMohG5PBlrbaxjcAxjzDqgtLS0lHXr1sU6nAkX\nGJrfuXPnqK89dOgQRUVFTPR7Fa12xtLWpbx/U1Hg/QGKrLWHYh2PiNPpJDsREREHUoIXERFxICV4\nERERB1KCFxERcSAleBEREQdSghcREXEgJXiJiaSkJAoKCkhKSnJEO9FuS0QkEh10IzFRUFBAeXm5\nY9qJdlsiIpGoBy8iIuJASvAiIiIOpAQvIiLiQErwIiIiDqQELyIi4kBK8CIiIg6kBC8iIuJASvAS\nExUVFRQWFlJRUeGIdqLdlohIJErwEhM9PT1UVFTQ09PjiHai3ZaISCRK8CIiIg6kBC8iIuJASvAi\nIiIOpAQvIiLiQErwIiIiDqTHxYrEiDGG3bt3s2bNmoh1P/vZz/Le9743ClGJiFMowU+Abdu2kZGR\nMaCsuLiY4uLiGEU0+bjdbu6//37cbrcj2hlLWw8//DDf+ta3ItbbtWsXP/zhD6dUgi8pKaGkpGRA\nWXt7e4yiEbk8GWttrGNwDGPMOqC0tLSUdevWxTqcCbdlyxYAdu7cGeNInM0p7/OhQ4coKioCKLLW\nHop1PCJOpzl4ERERB1KCFxERcSAleBEREQdSghcREXEgJXgREREHUoIXERFxICV4iQmv10t5eTle\nr9cR7US7LRGRSJTgJSYqKytZuXIllZWVjmgn2m2JiESik+zkIt/+9re59957I9Zrb28PHsIiIiKT\nixK8XGTXrl3k5ORw++23R6x72223RSEiEREZLSV4CWvp0qXcc889sQ5DRETGSHPwIiIiDqQELyIi\n4kBK8CIiIg6kBC8iIuJAWmQnMbFixQqOHDnCokWLHNFOtNsSEYlECV5iIjk5mcLCQse0E+22REQi\n0RC9iIiIAynBi4iIOJASvIiIiANpDl5kCujp6eH06dMR6+Xl5TFtmj63i4gSvMikl5OTw/e//33c\nbnfEuvfeey9f+MIXohCViEx2SvAik9zXvvY13vOe90Ss9/nPf55XX301ChGJyFSgBD8Btm3bRkZG\nxoCy4uJiiouLYxTR5NPQ0MCOHTvYunXriHqmk72diWwrNTWVd7zjHRHrffvb3x63Ni9VSUkJJSUl\nA8ra29tjFI3I5clYa2Mdg2MYY9YBpaWlpaxbty7W4YxZ4BnvO3funLA2Dh06RFFRERP9XkWrnWi3\nFU40/t4uReD9AYqstYdiHY+I02k1joiIiAMpwYuIiDiQ5uAvI52dnfzhD3+IWK+hoWHC56tFRGRi\nKcFfRj72sY/x+OOPj6jufffdN8HRiIjIRFKCv4y0trayadMmfvSjH0Wsm52dHYWIRERkoijBX2YS\nEhKYMWNGrMMQEZEJpkV2EhNJSUkUFBSQlJTkiHai3ZaISCTqwUtMFBQUUF5e7ph2ot2WiEgk6sGL\niIg4kBK8iIiIAynBi4iIOJDm4EUcxOPxUFVVFbHevHnziIuLi0JEIrFnjPmQ/49pQJ219snR1h2m\n/FYg3l9+2lr7lL98LfBnIA5YZq398zi+pBFRghdxiFmzZvGd73yHRYsWRax7991386UvfSkKUYlE\njzFmjrW2blDZbGCrtfY6/8+lxpinrLXnw1wfti6QO0T5QmC+tfY//OU/Ap7y3+57wDzgFeCjE/By\nI1KCF3GIr371q7zvfe+LWO+zn/0slZWVUYhIJOr+EXhwUNmNQGnIz7XAdcCeMNcPrnvSX9c9xD1q\ngY8aY54HKoHGkDrbrbU/HMNrGDdK8A7wm9/8hkceeSRivYqKCm644YYoRCSxkJyczM033xyx3le/\n+tUoRCMTxRhTADwAFAGzgG6gAviytXZXDEObDMI9/3wO0BHycycwe4jrB9ft8tedHe4e1to9xpgH\ngReAfUDoJ+wCY8xmYDlw1Fr79GheyHjQIjsH2LFjBzU1NSxdunTYr3e961088MADsQ4X8H3YKCws\npKKiwhHtRLstuazNB1KBHwAfBz6PL7HtNMb8Y7SDMcZ8xhjzFWPMA8aYx40xaaO4NsV/3deMMXv8\n188MU+9mY8yfRnLLMGXTgL6Qn6cD/UNcP1TdsOXGmER8CXwj0AP82hgTOOnqM/6k/hjwn8aYjBHE\nP67Ug3eItWvX8v3vfz/WYYxYT08PFRUV9PT0OKKdaLclk4sxJsVa2x2NtvxJY0Bv0BjzdeAQ8Cng\nu9GIw9/uPwMbrbWb/T/fA/w3cMsIb/E54GvW2gb/9b8DnjPGrLHWnjfG/C3wN/g+0MwL0/4S4F34\nPuAY4DpjzKf8f7bAr4E6fD3zgHSgYYh4hqo7fYjyvwd+a619GfgbY8yXgbcZYwxwM3CXtdYaY+KA\nZcCBkb0t40M9eAcpKSmJdQiXZKrH/7vf/S7WIYzZVH/vh+PvIV4wxiw2xvzAGNNmjDlrjPleSG8r\nUHetMeZpY0y7MabTGPMHY8w1Q9xvhTHmx8aYVuB/B/1uqTHmCX87jcaYz/t/n2+M+ZX//g3+ZHTJ\nrLUW33xw5njcbxT+BQh9ROUPgS3+xDssf+/3LuD/hBQ/CqwAtgBYa39urf0HIOzUg7X2uLX2UWvt\nf1hrHwX2Bf7s//468Edgtb/NacBifB+GMMYsHHTLoeoOVd4HJIRcfxDfvH1r4H0xxqT760R9aE89\neAcpKSmhuLg41mGM2VSP/5lnnol1CCP20ksv8c53vjP484EDB/jxj398Ub1Pf/rTvOENb4hmaBMh\nMC/7M+AEcA+wDt+CrDPAZyA4t70HaAe+iO9/3luBPxljNlprDwy638+BY/7rzaDf/RTf/9D/FXg7\ncK//g8BWfMniX4H3A182xrxsrd072hdljEkBkoEMfL3YzcCwn9SMMdP99Uei1f/BYah7LcXXqw4m\nLmttvTGmHXgjcDzC/eOAZsAVUlbj/754hDFeFNbgAmttozHm1/7pi1zgnpDRlqeMMbdYa49HqNsd\nrtwY89/Ap4wx8/H93TdbawMfHm4zxqwElgK3Wms9Y3xNY6YEP4lZa+nujjzq19fXx/Tp+quUkfmX\nf/kXHn300QFlxpiL9sXv37+fRx991AkJPqDUWntH4AdjTA6+3uNn/EUP4ft/4vXW2hp/nf8GXgP+\nf3xJK9Qr1toPDNHWfmvtR/33+A5QDXwF+Fd/TxNjTAlQD3wYGHWCx9fb3er/8wXgF8DHIlxzPbB7\nBPe2+LaAnRymzmJ/vY5B5Z2EGU6/qAFf4hzcg17g/x75MIchbjtEW2FXllprV46i7kXl1tp+4MtD\n1I/8XO4JpqwwiX3hC1/gvvvuG1HdD3zgA7S3t09wROIEN954IzfeeOOAsi1btvCrX/3qorIzZ87w\nm9/8JuI9b7rpJlwuV8R6MWSBHYPK/he4xRiTim8l+luAXwaSO4C19rQx5sfAR4wxqdbarpD7fWuY\ntv4r5B4XjDEH8fWyvx9S3m6MeQ2IfHBBeNvxjSLMBv4OX484McI1rwBvHuH9T0f4fZb/++CeaVfI\n70arGN8Hql9FqjiEb4zxOkdSgp8Ahw4dwuMZejRmx44d/OhHP4r4WNHe3l6uv/567rrrrohtvu1t\nb+ODH/zgqGMVGcqqVat46qmneMc73jGi+nfeeeewv29qahqPsC7F4N5om/97Fr5h4hR8Q+6DVeIb\n+s33/zlguF7m4LbagR5rbWuY8uxh7jMka+0x/hrvE/4FaruAq4e5ph14bizthdE/6HtAPGPILcaY\nK/EtzntLuENoRsJa2zKW65xKCX58JQF85CMfiVgxLy+P22+/PWK9N7/5zeTk5ESsd+LECdrb2zl0\n6NAIwoy9wEEroQeuTET84dqZKJ2dnVFra7yFe+/f/e53s3HjxojX/ulPf+LJJ5/kT3/607D1jh49\nGvjj8J9sJ85QW6MM4bdXReIdZVvDtT8efgF8yxiz1Fr7l7ANGRPPyD9QNFlrLwz3e//3wYu1Xfg+\nuIyYfxTlO8B7rLUHR3OtDE0JfnwtGGnFxsZGvvzlsFM3A4ykTqiioqJR1Y+1D3xg4BTmRMU/uJ2J\nFM22xlMU/9tZgO9QkMmkEd8w/RVhfrcC37B7bVQjGr1k//fhFtFtYPzm4AMjGDPxLZbDvz0sE99i\nxtH4JvBpa21gN8JCa+1Y5+EvorPoZTw8A9yGb0GNNkOLDJSEL7lPuu0G/nny3wPvMsbMs9aeBPAf\nulIM7AmZf48pY0yutbZpUNl04HZ8owrDbccatzl4a221MeY4vg9F5f7i5fjWAYx4GsAYcy/weEhy\nnwe8gbEvtBt8f51FL5fOP/9z8V4jEQmYbD33UJ/Fl/xeMMb8J74h9Tvw7WG+O5aBDbLDv7d6D76D\nWWbh61hcAXxquAN3xnkOHnz73j8IBHrEHwJ2BqYIjDFb8e1SuMZae2bwxcaY9+HbndBnjAkMIRVy\n8QLGOMZ+bovOohcRuZxZayuMMTcCj+DbKz8N2A+8f5zmhYfaUz7kXvMh/ATf9r47gRn4tqWVAv9i\nrY285WF8fQl4xBjzVXzb5WbhS/IBBl+P/qLkbIzJxtfLTWLgFkSL70Q+jDFvw3dewQ1ArjHmf/Gd\n6x55odNfXbZn0ZthzjEQERGZ1Iwxn8E3Bz6gGN8IzCPANiDdWnufv34J8KS19udh7vXpcHXxnf8f\nrnwncB++I3EfwLf+4E3W2h5jjPEfU2vwrUlY4x9BiRr14EVEZMqy1g77KE1jjM6iFxGR2DDGTDPG\nzIzwNamA0RkBAAAgAElEQVRPEprELtuz6DVELyISY/6zzIdbNW6BB621n49SSI5ijPkEvhP3coFK\na+2v/OVHgOBZ9BHqXlTu75l/Ct+ZAIGz6H/jr38bvsS+FPiNtfaFqLzYEErwIiIx5n+y2vURqp2w\n1lZHIRxxCCX4cWSMmQFsQvvgRcIJ7oMf7khR/TsSGdaI/h2BFtmNt01AzJ8gJDLJ3cbw50Xo35FI\nZJH+HSnBj7NqgCeeeIIVK1ZEvfFt27axffv2qLc7XhT/QK2trbS1tZGVlUV29pieRzJi0XjvKysr\nA8f4VkeoWg0j+3c01f+bGY6TXxvo9Y3VKP4dKcGPsx6AFStWsG7duqg3npGREZN2x4vij50oxx5p\n2H3E/46m8nseiZNfG+j1jYOI01faJiciIuJASvAiIiIOpAQvIiLiQErwDlJcXBzrEC6J4o+dqRr7\nVI17JJz82kCvLxq0D34cGWPWAaWlpaWOXjwiMhaHDh2iqKgIoMhae2ioevp3JDK0kf47AvXgRUQm\nPa/XS3l5OV6vV/eXEVOCFxGZ5CorK1m5ciWVlZW6v4yYEnwIY0y6MSYl1nGIiIhcKiV4P2PMUuA5\n4EPGmLRYxyMiInIpdJLdX30AWIfvcYBeY8zPrLUeY4yxWokoIiJTjBL8X72A7+D+PuDfgDhjzA+s\ntX2xDUtERGT0lOAHyrfWvsEY8wTwKeCsMeYWYLe19r9iHJuIiMiIaQ7+r54Hzhtjkq21HwBeBL4D\nvAOoBDDGmBjGJyIiMmJK8AQT9wVgFnCtvzgOSABagUXGmFTNxYuIyFRx2Q3RG2NmAnOBbOAFa223\nP3GfN8a8APQYY74BvBlfst8GPApYY8yPleRFJNpWrFjBkSNHWLRo0bjd86WXXuKxxx4DoK+vj82b\nN/PII48wffrFaeGTn/wk11xzzZjbmoj4JbLLKsEbY1YBPwXOAVcCTxtj/tVae8RfpRHfYrszwDut\ntX8GPmyM+RawX8ldRGIhOTmZwsLCcb3nQw89xL59+1izZk2w7Ny5cxfVe+WVV/B4POzcuXPMbU1E\n/BLZZZPg/fvcnwH+C/gevuH3PwD/B18vHWAnvp79d621h40xcdbafmvtnbGIWURkIm3YsCFi4t6y\nZUuUopHxdlkkeGNMMvD/Ab8F/h3ot9b2G2O+AHzMGJNkre2x1h4wxlRaa7sArLX9MQxbRERkzC6L\nBM9fF8ztsdaGjkGdxtdjjzfGnPf31rvAt/BOQ/Iy3hobG2lqaiI3N5e8vLwJbWvPnj2UlZWxevVq\nNm7cOKFtyeRx+vRpfvazn0Wsd+LECc2JO9xlkeCttV3GmHuttQ0AgaF3fAm+BegKJHNjzHJr7VEl\nd5kITU1N9Pb20tTUNOEJvqysjI6ODsrKypTgLyOf+MQn+J//+R8SExMj1r3jjjuiEJHEymWR4AFC\nkvu0kKH3aUA6kAJ4jDEPAeuNMX9nrW0fa1vbtm0jIyNjQFlxcTHFxcVjvaU4RG5ubrAHP9FWr14d\n7MFHW0lJCSUlJQPK2tvH/E9KRsHr9fL2t7/9khbFiTNcNgk+wFp7IeTHBCAN6DPGPAjcDVx3Kckd\nYPv27axbt+5SbiEOlZeXN+E994CNGzfGrOce7gPtoUOHKCoqikk8IpcjxyV4Y8w0wIQukPP32i+E\nqd4D/AX4AvAx4FprbWl0IpXLlcfjwePx4HK5cLlcsQ5nQlRVVVFbW0t+fj4LFy4c0z00EvZXDQ0N\n7Nixg61bt+J2u3X/y8SljoQ5KsEbYwrwPShmljHmL8Aua+1vrLUXQubdQ00DrgKWABustYeiHLJc\nhjweD319fcEk70S1tbV4vV5qa2vHnOA1EvZXDQ0NPPjgg2zZsmXCEvBUvr9TXepImGOOqjXGXAHs\nw7di/gBwHfCAMWY7+La8GWMSBl3WABwEblRyl5FobGykvLycxsbGMd/D5XIxffr0qCX3wTFXVVWx\nZ88eqqqqJqzN/Px8kpOTyc/Pn7A2RGR4jujB+8+S/yDwjLW22F/2MPBx4L3GmB3W2q2BLXLGmC3A\ny9baamPMjdba3pgFLzEzlqHy0FXwNTU1VFRUUFBQwFVXXXXRfQMG338k7Y10O12koXCPx8PRo0eJ\ni4sDfGsAxqN3HcnChQsn7N4iMjKO6MH7t7TNxvewmEBZJ/A14EfAOmPMPQDGmLcD38B3wE0cvmNr\n5TIUOlQe+LmxsXFAch4sNzeXxMREcnNzqaiooKuri4qKirD3bWpqGnD/0Qj9IBEu7kCcocl6qNeY\nmZlJf38/ubm5eDwekpOTAca1dz2S905EomvKJ/iQR7geAuL8Q/VAMMn/F3AYeKcxJsFa+xt8R9X+\nl/9gG+13v0wNHiofnPDDycvLo7CwkLy8PAoKCkhNTaWgoOCi+9bV1XH8+HGOHz9+UY8+ksbGRlpa\nWujq6gq7nS40zkhD4S6Xi1mzZlFUVEReXh4ej4c5c+awdu3aYXvYo03YI3nvRCS6pvwQfUiC/i1w\nH3C3MeYT/sNtjLW2zRjz70AN8FZ8C+/uj1W8MnmEGzofzcK3q666asDQfOh9vF4vSUlJtLW1sWTJ\nklHdt6mpidTUVBITE3G5XDQ2Ng6INTTOvLy8YKION+Uw1tc42oWAo33vRGTiTfkEH2Ctfd0Y83fA\n04DXGPOAtbbZ/+vzwKv4Tq0TCWs8tq2Vl5dz/PhxkpKSSE5OJjk5mePHjw/Zw66qquLYsWNkZ2dT\nUFCAy+UacBjO4EQ73LqBkSTl4V5j6Lz/aBO2k7f8iUxVjknwANba3caYvwV+DriNMT/Dl9g/COQB\n4ScqRUKES6IjXZB3/Phx6uvr6evr433ve19wLr27uzts/draWqqrqzl69CgpKSnB4X/w9eRTUlKC\n7QWGzBMTE8Mm3+GS8kjiH3yMrhL25JGUlERBQQFJSUm6v4yYoxI8gLX2KWPMBuA/gC8BfUA/8HZr\n7amYBidTQrie8EiHrJcsWcLJkyeZNWsWNTU1pKSkBBe4DdbY2IjX66Wzs5OZM2cO+BAQSLbgW5He\n2NhIX18fwJBb7IZL3sPFH0j+KSkpAFE5RldGp6CggPLyct1fRsVxCR7AWnvIvxUuG99RtA0hw/Ui\nwxrcEw5dJDf4ZLXBCgsLaWlpoaysjISEBK666qoht7oFhsOvvvpqZsyYEUyszzzzDM8//zwLFizg\nlltuGRBTRkbGsB8whuqpR+rd9/X14XK5tLVNxEEcmeABrLUdQEes45DJITA3vmTJEgoLC4etOzg5\nVlRUjOrY1ba2NmbMmEFPTw9tbW3BnvngJB+Ya587d+6A35WWltLf309zc3OwfKRz3KE99YqKigH7\n9Iebl9cCORHnmfLb5ERGIrBd7fjx46O6bs+ePXz7299m37591NfXj+iaJUuW4HK5WLlyJQBxcXFh\n97Pn5eWxYMEC4K8978bGRubMmUNnZyc5OTmj3nYW2Prn8Xh49tlnqauru2iffrhrNOcu4jyO7cGL\nhFqyZEmwBz8aZWVlTJ8+nba2NmbPnj2iE+YCQ+2B74HFcoO3u8HF+8f7+vqYNWsWb3zjGyP2rBsb\nGzl8+DA9PT1ceeWVLFy4MHj/8vJy8vPzqa2tvWif/ngY6Ul7IhI7SvByWSgsLIw4NB/OvHnzKC0t\nDc69D15pDhfPe4fWCayKDyySG5ywXS4X1dXVdHd3k5OTg8vlIjs7m/7+flJTU4fdGtfU1ERtbS1n\nz57l7NmzwZ44+D5crFu3jk2bNg3YS+/xeC4pMQeOxvV6vcEpBiV4kclJCV5kGEuWLOHKK6/k/Pnz\nPPvsswDMmTOHzZs3B+sMXqEeuo89kBADi+jCbW0D3zB+d3d3sBcemtCH+nCQm5tLfn4+Xq+X7Ozs\nAck29LnzjY2NdHR00NTURHd3d3DKYCyJOZDce3p6gkf2jpTX6x11ezI5VFdX861vfStivfe85z36\nwDeJKMHLpDJRQ79jfQZ7bm4uixcv5uTJk+zfv5/k5GTKy8t57bXXuOaaa3jzm9884Ez4uXPn0t3d\nTWtrKykpKcHylpaWIUcQUlJSOHLkyIA2A3EOt4I/Ly+P5ORkOjs7aW1t5Zprrgl7/6amJg4ePMi8\nefMG9PDHIjDsv2zZslGvuFeCn5puuukm7r77bu66665h6/X39/OnP/2Jn/zkJ1GKTCLRIjuZVIZ7\nyMqlGOqs9Ehnrufl5fGud72La6+9lv7+fg4fPsyxY8eor69n7969wYNnGhoaaGtr48iRI9TW1tLW\n1hZceR/psakul4v4+HjAtxgwEGdVVRW7du3ilVdeobk5/C7PsrIyent7qauro6mpiT179gQfDRt4\nTS0tLWRmZtLR0cGCBQsGHKYzWgsXLmTjxo2jSu6B91jGrqKigsLCwogLJifi/p/61Kfo6+uL+PXO\nd75zyAOdJjp+CU89eJlUQoe3L4XH46G6upqWlpbg8Hi4A2I8Hk9w+HrBggUDTo0LHUkInCi3fPly\nenp6SEtLY968ecHDbNxuN83NzRw9epRjx46xYMECrrnmmgGJNNze+sCcfXNzM4mJiaxcuZLp06fT\n1NTEc889R0dHB9ZaMjMzqa6uDr5HgfuuXr2avXv3smDBAg4ePEhSUhJVVVVcf/31gO/DQ+DDRX5+\nfnDIP/S17dmzh7KyMlavXs3GjRsv6X0f6u8icEiPjE1PTw8VFRX09PTo/jJiSvAyqYTOHV+KQK+x\nubmZ/v7+AUe+hnK5XNTU1NDf309jY2OwZxo6kuByuUhJSeGtb30rtbW1rFq1irVr11JTUxN8znpR\nUREej4cXX3wRILhwrrq6Oth73bNnD01NTaxatYq5c+eSmJgI+HrY8+fPJzk5mcLCQqqqqnjuueeC\nPfP09HQaGxtJTU29aP5848aNFBUVBds5efIkaWlpvPDCC8yaNSv41LjQHnfoa/N4PPziF79g+vTp\nwfuFey/HMr0R+h6HPqZWRKJDCV4cyeVykZqaSkdHB6mpqQBDHtVaX1/Pa6+9xsyZM4NJLDCPvmzZ\nsuAw/Bvf+MaLeuTHjh0jOTk5+AFi5cqV7N69mzlz5vDaa6+Rk5NDcnIyNTU1vPjii8THx3Pu3Dnc\nbjfl5eVkZWUBvh7O3LlzAd9CNmstJ06c4Pz588EjZOfPn09NTQ2nTp3i1KlTZGdnk5KSwqlTp6ip\nqWH+/PnMmjWL559/HmMM58+fJzs7e8gDdnJzczl69GhwXn316tVh38vRPlku3N+Fy+Xi1CmdFC0S\nTUrw4liBh7ekp6cPuac80Dvt7u6mq6sr2Kvt6uoKHgs71LUulwu3201LSwudnZ3U1tYyb948Pvzh\nD+P1eunv7wcgLS2NpKQkFixYQENDA4sXL6a3tzeY7BMSEujv7+fnP/85Bw8eJDMzE2NMcPi+s7MT\nt9sd3E9fW1vLuXPnOH36NCkpKfzP//wPbrebY8eOcfr0aeLj47HWBj8wDB6SDx0lCczT33rrrUPO\nq4/mpLuJHu4XkZFTghdHCSSYefPmUVhYSG9vbzBJDzVEv3TpUuLi4sjMzAze4/Tp02RlZdHe3s6y\nZcvIy8sLJsPAfWpqajh8+DAzZ84MJu+Ojg5mzpzJDTfcQHV1Nf39/Zw6dYr6+noaGhqYOXMm8+fP\nJycnB6/XS0NDA4sWLeLVV1/l9OnTnDlzhltvvZVly5bR0tJCfHw8V1xxBVVVVezbt4+FCxeSlJTE\niRMnSEtL48iRI0ybNo2TJ0+Snp5OWloa1dXVXHnllWRkZJCTk3PRwsXQZD94+D6c0HUDoT+HU1ZW\nRkdHB2VlZUrwIjGmVfTiKGVlZTQ3N3P48GHi4uIGLJwLJ/C7np4esrOzAd+cuNfrDa5cr62tpbGx\nkdOnTwdXpzc2NlJRUUF/fz/l5eXs2bOHs2fPkpOTw4wZM3C5XCxYsIDe3l48Hk8w+R87dowDBw7g\ncrmYMWMGS5cuBWDGjBm0tbXR0dFBZWUlycnJvO1tb2P16tVkZmby6quv8pe//IXaWt8Tj+fMmUN/\nfz8LFiwgMTGRgoICli1bhjGGhIQE+vr6OH/+PHl5eeTm5gb3rA+1S6G8vJyf/vSn7NmzJ+yOgqF2\nIQy2evVq0tPThxzuF5HoUQ9eHCWwqnz58uVhj4UNt1isoqKCrq4uKioq2Lx5MzNmzCAuLo5Zs2aR\nnJxMcnIyr776Kh6PJzjsnZiYSFJSEm1tbZw5cwbwDcUHjpgF39D4iRMn8Hg8JCUlBVfxB4beU1JS\naGlp4ejRozQ2NpKRkYHH4+Ho0aMkJiaydu1aFi1aRFdXF1lZWVy4cIGuri5aW1vp6upi4cKFnDx5\nkra2Npqamli9ejXWWhISEuju7qagoCDYXug8fKAHH/p+HD9+nJaWFrq7u4PvXajAMH3gdQ01IrJx\n40b13EUmCSV4mXQu5bCbwKryQOIK9LaPHTtGTU1NcDi+ra0t+GS5goKC4FPX8vLy2LhxI52dncG9\n7W1tbUybNo0TJ05w9OhR5s6dy/XXX8/KlSvp7u7m9OnTNDQ0sGTJEg4fPszatWtxuVzU1taSlJRE\nY2Mj+fn5xMXFkZWVxZw5c0hMTMTlcpGcnExLSwvt7e10dHTg9XrxeDwsXrwYr9fL7NmzAdi0aRP7\n9+/nzJkz1NXVUVRUxPLlyzlz5gwXLlzgwoULNDU1ER8fjzGGa6+9FoBf//rXA56gF5h/93g8lJaW\n0tXVxfz581myZAk9PT243e5hnzU/1Kl6MrHcbjf3338/brdb95cRU4KXSSOQ2FtaWkhNTQ17nOpI\nkv/gveadnZ0cPXoUay0nT54kKSmJ/v5+jh8/TmFhIVdddRUFBQXB+oEnq1VWVlJTU0N1dTVr1qxh\n2rRp9Pb20traCsCCBQt47LHHaGhoID4+njVr1gTPhu/p6SEzM5OsrCySkpL47W9/S11dHatXr2b+\n/PmUlpbidruDIwStra2kp6djrSUxMZELFy6QnJzM66+/ztmzZ2lvb6ehoQGXy0ViYmJw9f3atWup\nr6+nsbGR+Ph4pk2bxvr16ykoKKC+vj74BL3Bp+gFFhJ6PB5aWlpITk4mMzMzuFd+KHq0bGy43W4e\neOAB3V9GRQleJo3A/DAw5Dnn4R72EhA65Bx6uEpaWhrLly/n7NmzwUe4HjlyhKysrGD9wDPf6+rq\nOHnyJDNnzmTp0qXU1dWRlpbGhQsXmDNnDq2trVy4cCHYXltbGz09PWRlZbF48WIyMzM5duxY8MPA\nddddR01NDadPn+a1117D6/Uyc+ZMenp6KC8vp7CwkJSUFJYsWUJzc3PwYJqlS5eyf/9+du7cSXt7\nO6tWrcLtdjN37lzWr18fHGJPSUnhox/9KC+++CJ/+MMfOHjwIDfddBMw/BP0XC4X8+fPp6WlBfCd\noGeMoba2dthFd2PdCy8i0acEL5NGYBHY3Llzh30U61An3Q3er+3xeIJb3QYnrdzc3AF16+vraW5u\nZv/+/XR0dPDnP/8ZgDVr1tDS0oLb7aa1tRVjzIAny82cOZOWlhauueYa3ve+9wX3xj/99NMkJiZy\n5swZMjMzg1vmTp06xbFjxzh//jynTp1i165d9Pf3s3LlSt761rfS399PX18fs2fPZteuXTQ3N9PX\n10dXVxfz5s1j4cKFnDp1Knhq3dy5c2lpaaGnp4eDBw+SmJhIY2Mj8+fPJy8vb0DP/cCBAxw+fJj5\n8+dzww03BA/Vqa6u5ty5c9TV1XH06FHg4gNvLvWwGxGJPiV4mTRGcordUHVCH8oyffr04Olx4Y6G\nDZ1PDqxyz8rKorq6mpycHCorK/F6vezcuZMrrriC+Pj44HnzTU1NnDx5kvj4eDIyMqioqKC5uZny\n8nLKy8s5cuQIhw8fpru7m7Nnz/Lyyy+zatUq8vLyOHXqFNZampubSUlJob6+ntraWtLT03n99deD\n8ebl5VFfX09hYSEdHR2kp6dz3XXXcfLkSVpaWjh9+jQzZ84kISEBt9tNf38/ZWVlJCQk0NTUxFvf\n+tbgPHvoaz58+HBwUV5gnUDA8uXLqaurIz4+PuwWt+EOuzlw4EBwDcNVV101yr91EZkoSvAyaQ03\n3x54DGt+fj4LFy7E4/EEt6ydOXOGnJwclixZMuCgmr6+vuAKcIDu7m4aGxt59tlng1MDy5Yto6ys\njNbWVmpqajDGYK2lpqaGjIwMGhsbSUtLo7y8nHPnzg1YdHb8+HGam5tJSkqit7eXjo4O2traSE1N\n5corryQ+Pp6TJ08Gt9y5XC7mzZtHXFwcM2fO5KWXXgo+133RokX09vZy8803s3z5cp577jn27t0b\n3H4XOA8/dP4+Li6ONWvWUFVVxb/927+xYMECrr32Wnp7e/F6vXR0dGCMGbB1MPR9LSoq4tixY2G3\nuA039x66C0EJXmTyUIKXSWu4+fbAY1gDc8aBrWcNDQ3Bx5KuXbsWj8dDeXl58CjZ3t5e+vr6aGtr\no7+/nyNHjlBRUUFHRwdut5u8vDz6+vowxpCSkkJaWhq9vb10dnYGF+ClpKSQlZXF2bNnmTNnDt3d\n3cyePZuzZ8+SmprKokWLSEtL4/nnnwfAWsvZs2epq6sjIyODlpYW0tPTSUpK4u///u8B39B9WVkZ\nVVVVdHV1cebMGfLz8+ns7KS+vp7Kykq6urpITExk+fLltLW1BT8s5Ofn43a7+Zu/+RvOnTtHWVkZ\nfX191NTUkJOTw/nz5+ns7KSxsTF47O3evXuDj3wNTF8sXLiQTZs2hf27GO6wm9BdCCIyeSjBy6Q1\n3Hx74Px08J08l5+fT25uLm63m7Nnz7J+/XoWLlzIgQMHOHr0KGfOnGHVqlVkZ2fj9XpJTk7G6/Wy\nePFiSktLg/vHExISWLJkCfHx8cydO5fFixdz+vRpDh8+TFpaGsYYli1bRlpaGq+//jo9PT0kJCRQ\nXl5ORUUFfX19uFwumpubaWlpobm5mZdeegmAefPmER8fT1ZWFp2dnbzpTW8iPz+fp556ioqKCs6d\nO4fH42H69Ol4vd4Be9UDe+hnz54dHB2or6+nt7eXlJQUrr32WjZv3kxeXh6PP/44Bw8eZMaMGcTH\nx9Pc3Ex9fT1dXV2kpKRw7Ngxli1bFnZB3XBz7UMN0w/ehaA5epHJQQleJq3B8+3PPPMMpaWlFBUV\nsWnTJhYuXMiePXuCPfnAcH1aWtqAxFVeXk5LSwvTpk1jxowZwTPnr7zySlwuF8uWLaOtrY3s7GzK\ny8upra0lJSWFpKQkjh8/jrWW5ORkOjo6aG9vxxjDyy+/TFVVFQDx8fHBE+xycnKC7YeWZWRk8JWv\nfIUXXniBxsZG5s2bF4ypsbEx2Ptfvnw54BsuX7t2Ld3d3dTV1QWP3A0cn9vS0kJcXBw9PT388Y9/\npLe3lwULFgDw3ve+l82bN+PxeKitreX8+fMkJyeTmppKbm4umZmZJCUlMWPGjAGH1jQ2NnL06FEy\nMzOZNWvWkIfdhEvgl/pAGhme1+vlxIkTLFq0aEKeyjfV7y/hKcHLlFFaWkp7ezulpaXBoeRATz7w\nzPPBcnJymD9/Pq2trRw/fpz6+nrKy8tpa2vjwIEDXHXVVcFnx589e5bXXnuN9vZ2ZsyYwUsvvRSc\nHjhy5Ehwb3pSUhK33HILV199NVdffTULFy7EGBMx/re//e08/PDDPPjgg2RkZATPvl+xYkVwi1xB\nQQFz5syhr6+PP//5z9TX15OQkMCZM2fIyMigp6cHYww5OTlMnz6d3t5eLly4wGuvvUZtbW3w8bcp\nKSksWLCAvLw8qqurOX78OHPnzg3OvweOqg0k5cbGRvbs2RMcwl+8eHEw7tCe+XBnDyi5T5zKykqK\nioooLS1l3bp1ur+MiBK8TBmB/0EUFRUFy0LnkAcPLQfmi9evX09bWxtxcXFUVlaSmZnJyZMnyc3N\npa6ujnPnzgWPa62traWtrY2//OUv9Pb2snLlSq6++mruuusurr76agoLC4PPTh+tuLg4Pve5z3Hz\nzTdz2223ceTIEV599VUSExODWwM9Hg81NTX09vYGh+KttbS3t9Pd3c3ixYuZNm0aGRkZLFiwgCVL\nlrB79+7gEbpNTU20t7cHh+MDi/JSUlLo7OwM1unt7aW/v5/c3FxcLlfweNzAUbWBDz25ubn86le/\n4qWXXuKaa67hjjvuCPvatH1OZPJRgpdJKdxc8KZNm7jhhhuGnOsNHWqurq4GCJ74Br5V+bNnz8bj\n8bBhw4bg42Tj4+Opqamhvb2drKwsTp48ycc+9rFgT3u8bdiwgVdeeYU777yTn/zkJ9x+++2cPXuW\nJUuWcPLkyeCz3s+dO0d/fz/Tpk3j9OnT9PT0MH36dFauXEl+fj6LFi1i/vz5bNy4Mbj1LiUlhZdf\nfjn4yNY3velNnDt3jvz8/OCwu8fjuWh3Qn5+Pl6vl+zsbFwuF9XV1cEFjq+88gqdnZ288sorA97L\nsR4nLCLRoQQvk1K4Od3h5ohDE07o6vuWlhYaGhpISEggPT2d7OxsEhISOHjwYHAucOXKlfz0pz/l\n2WefZdWqVezfv3/Ct3tlZGTw4x//mM2bN/PP//zPzJw5E7fbTUNDA83NzVRVVZGbm0thYSHt7e0k\nJycHz5mfMWMGHR0dHD58mK6uLs6dO0dpaSlNTU1kZGSwf/9+rLWUlZWRk5NDV1cXL7/8Mm94wxvI\nycmhu7ub7u5ujh49isfjCY6CuFyu4HseeBBOVlYWb3jDG9i3bx8bNmwIxj/cDgcRmRyU4CXmAnva\nq6qqgg9SCfTUQ5N4U1MTcXFxnD17NjhHHPowmdTUVLq7u9m/fz979+5l1qxZrF+/njNnznDu3Dn6\n+vpoaGjA4/HQ29vLCy+8wC9/+Ut6e3s5c+YMjzzyCNu2bSM+Pj4qr9sYwwc/+EE2bNjA+9//fr77\n3e/idrvp6ekJPn0uPT2dlStX8vrrr3P+/HmWLl3K2bNng0fetrW1BR+PW1FRQUpKCtOnT6etrY2U\nlMkoDDgAACAASURBVBQ6OjqC9Y8fP47X6yU1NZWKigpmzZo1YCX94Hn0JUuWUFdXh9vt5pOf/OSA\nhYvD7XCQiVNVVRVxkVpnZydpaWlRikgmMyV4mTAjHcYN7Gnfu3cv2dnZlJaWcsMNN1xULzc3lxde\neIHq6mq8Xi+bNm3C4/Fw5syZ4Hz73LlzOXbsGB6PhyNHjtDe3k5RURH5+fkcPnyY119/Ha/XGzyA\n5tixY7zlLW/hj3/844CFZdG0ZMkSXnjhBe6//36++MUvcsstt9DV1cX69et529veRkNDQ3Dhndfr\npbW1lcbGRurq6pgxYwYzZ87k7NmzwQ8m2dnZ5ObmMmfOHNLT08nPz6e1tZWUlBSSk5Pp7++noKAA\nr9d70eLEpqam4P55l8sVfLDO4C11Izl1UMbfe9/73hHVu/POOyc4EpkKlOBlwox0GDewEv6GG24I\n9uBDh+jhrwvompub6e/vD66kd7lcxMXFBeeOwffkqrKyMjo6OoJz6nl5eTQ1NZGQkMAvf/lLrLXc\neOON/OhHP6K4uHhEq+AnUnx8PA8//DDXXnstt9xyC1deeSXZ2dmcOnWKffv2cerUKVJTU4OH9TQ1\nNeF2u6mqqmLFihVs2LCBmpoa0tLSqK+vJzExkfT0dNauXTtgj3piYiLTp08fcJRtVVVVcNi+traW\nhIQEUlJSWLhwYXC/fOCDgM6kj63Vq1fzjW98I2K99evXRyEameyU4IdgjJlmrb0Q6zimsuGGcUN7\n9wsXLiQvLy+YRJqbm9m9ezdutzuY7E+cOMGZM2eYM2cO4Nv+FnjWeUFBAaWlpdTW1nLixAkyMjLI\nzc0lISEheJb7r3/9a/bu3UtnZyePPfYYf/u3f8vMmTOj+n6MxJYtW/jCF77AvffeizGG1atXc/To\nUWpra8nLy2POnDlcf/31wQNzAtMSLpeLd7/73ZSXl5OYmIjH4yEzM5MTJ04Ee+OBhBy6y6Cjo4Py\n8vLgXH1WVhbnzp0L/p2F7lI4cOAA+/fvZ/Hixaxfv14JPgbS09O5/vrrYx2GTBFK8H7GmHnARmAu\n8Htr7SFjjLHW2hiHNmUN92CYF198kaamJtLS0rj66qsBgtu4Kioqgg89CTyOtaysDLfbzbJly1i/\nfj1PP/00FRUV7Nq1K3jca0NDA6+//jqZmZlkZ2eTk5PDzJkz+f3vf8++ffu4/vrreeKJJ5g3b170\n3oQxuOeeezhw4AC7d++ms7OTvr4++vr6OHfuXHCNwYIF/4+98w6Pqkz78H0yKZOZlEkvEFIJpIEQ\nuhCkuNhWVERkdS2oiwVX2VVUxK7YwAK62FnXAqioKDYgIAFBICQC6SSE9GSSSZ2ayeR8f4Q5X4Lp\nBBA593VxQWbOec8zk2Ge8z7l94Rx4YUXEhwcLE21c3NzIzAwkNLSUkwmE6WlpdhsNjQaDQkJCR12\n7vZhPBaLhYCAAKqqqlAqlfj7+3fQqrdj1+xvbm4GYOrUqWf8fTmfiYmJ4aKLLpJ0Ck7H+hkZGURE\nRJyT68t0jsPZNuCPgCAICcAO4B5gAfCrIAiXiqIoCmc7dvsnxD4YprGxEaPRKDl2d3d33N3diY2N\nlRxMbW0t27Ztw2w2U1FRgbe3N7m5uRgMBnJychBFkf379+Pj44NKpcLPzw8vLy9mzpzJ5Zdfzvbt\n29mzZw9PPPEE27dv/8M7dwAHBwc+/PBDAgICUCqVGI1GlEolbm5uWK1WCgoKyM7OpqqqitDQUJqa\nmigoKKCuro7w8HASEhJITEzEZDJRU1NDUVER+fn5HdIdLS0tAISFhaFQKKRCRKBD10JmZqYUbQkJ\nCcHZ2ZkJEybIu/czjKurK+7u7igUitO2flxc3GlTmTvd68t0znm/gxcEIRzYDHwKLAeswHPAa4Ig\n7BNFsfZs2vdnRK1WM2zYMHx9faUvLn9/f8lptA8Jf/XVV9TU1KDX60lMTKS2tlaaez569GgcHR0J\nCQlBpVIRGRmJ2WwmJyeHwsJC1q1bh0ajISUl5bSENXU6HWvWrEGj0XDXXXcN6Jevh4cHX3/9NePG\njeOyyy6jvLwcq9VKcXGxdHOUnJxMY2MjNTU1aDQaqqqqiIqKorm5WRqEY7PZKC8vZ8yYMdTU1HD4\n8GEyMzOl9zw+Pp7y8nIaGxuxWCyMHz9ecug6nQ43NzcplTJ69GhmzZp1xorrFi9e/Dsdgvnz5zN/\n/vwzcn0ZmbPNunXrWLduXYfHGhoaen3+ee3gBUFwAv4B7AeeEUXReOLx74Grz6Ztf1ZSUlIkERZ7\nfr2rgi17y5d9QIzBYOCLL77AZrNhMBiYNWsWUVFRVFRU8Morr2A2mwGw2WysXbuWefPm8dZbb0mS\nsANFZWUlK1euZM2aNbS2tmI2m/nyyy/56KOPpBqBgSAmJoYPP/yQOXPmSEp3arWa5uZmnJycOHLk\nCAqFQuqLNxqNpKamEhsbS0JCAmazmczMTCwWCyUlJURFRXHkyBHq6+vJyspixowZ5Ofno1Qq0Wg0\nhISE4O/vL50D4OLiInVB9MaxD6QAzquvvirLmsqc13R2Q5uWltZBzbM7zmsHL4qiVRCErBP/NrZ7\nKh1wBYIFQWgQRdF2Vgz8E3Lo0CFqamrYvXs3ISEh2Gw2qqurMRqNHDt2DI1GQ3R0NADvvPMOBw4c\nwN3dnRkzZlBSUkJjYyNFRUU4OzuzceNGpk6dyuHDhyksLKS1tRWdTkd5eTkffPABt9xyy4BWxxcX\nF/Pyyy/z7rvv4uLiwn333cf9999PRkYGN954IyNHjuSDDz7gyiuvHLBrXnPNNTz88MO89NJL0uAa\nLy8vqqqqMJvNHDt2rMMQmsbGRmprayWFu+rqamw2G2azmbCwMJRKJQcPHsTNzY2KigrGjRuHn58f\ngwcPlgrr7MWR9psKe6jeLmvb3U2ZLIAjI/PH4bzPwYui+JEoio+c9LAD0Aq02p27IAiJgiC4nXED\n/2SMHDlSmmkObUVeLi4uZGVlodPpOHToEHv37mXjxo0cPnxYGr86bdo0oqOjiYyMRKPR0NzcTF1d\nHfv27cPBwYHCwkIOHjyIu7s7aWlp3HrrrQPm3PPz87n99tuJiori008/ZdmyZRQVFfHcc8/h5+fH\ntGnTOHToEBdeeCGzZ89m0aJF0kz6geDZZ59l+vTplJWVoVQqsVqt2Gw2XFxcUKvVVFRUUFpaSkhI\nCB4eHpIuvdFoxM/PD6vVilKpRKvVUlJSgiAICILAoEGDiIuL63CtwsJCcnJyUKlUkoNu77RPbl88\nGT8/P2nXLyMjc3Y573bwgiAE0FYp7w380i4sL5woqlMAzkALoD/x3IvA7cAw+2My/SMpKalDaB7a\nir5iY2M5duwYPj4+1NXVIYoi3t7etLS0SLPbJ0yYQFZWFv7+/mzbto36+nqKi4vR6XRotVr+/e9/\n88wzz+Ds7DwgtmZlZbF8+XLWrVuHn58fy5cv584778TN7ff3eb6+vnz99desWbOGf/3rX+zcuZP1\n69f/zoH2B4VCwbp166ShORUVFbi5ueHv709gYCA5OTnU1tbi5+cnVSnv2LGDmpoaWltbGTlyJM7O\nzuzfvx+DwYAoigwaNEiqdThZ2vfYsWMcOnSI6dOn4+fnJ1Vun7yD7wxZAEdG5o/DeeXgT1TLbwCa\ngRHAD4IgPCSKYob9GFEUbYIgNNP23jgIgvA0bdX100VRrDkbdv+RGAihk5PPtf8cGhqKwWDg8OHD\nVFZWEhcXR2hoKEOGDOHQoUOo1WqysrJwcXGhsrISpVJJamoql1xyCd999x0xMTH9fl2tra0UFBSQ\nmprKwYMH2b9/P7t27SIkJIRVq1axYMGCHiuABUHg7rvvZsqUKcyfP58xY8awZcsWpkyZ0m+77Pj6\n+vLll19y4YUX4ubmhq+vL/Hx8URERKDX69FqtZJ+fUhICEajEZPJhJ+fnzSatr6+ntjYWGkIjX1+\nvD0kbzQaqaio4Pjx4wQHB5OamsqFF16Ih4dHBxU7uYJeRubc4Lxx8IIgDAV+At4HPqBtl74NuA1Y\nfFK/uxVoAN4ALgYmiaJ48MxafHboyYF3NgSmOzoruursMbvoSnl5OQEBAXh5eZGTk0NxcTFZWVlS\nC1dFRYUk1ZqUlMR3333HZZdd1qfXKIqiFNJPTU2VnLq9OjUsLIwxY8bw/vvvc+ONN/Y5IpCQkMCB\nAwdISkrikUceYdeuXQOSLhg9ejRz584lPz8flUqFUqlEr9dLuXUfHx9CQkIIDQ0F2loMo6Ojpd53\nd3d3KWxv34lrtVrpMfsgn5iYGJRKJR4eHlgsFtmh/wGoqKggNzdX+t2ejvXffvttFi5cSFBQ0Dm3\nvkznnBcOXhAEV+DfwPfAM4DtxE79WeBeQRBcgOYTIXoHwAsYDgwBxomieOhs2X6m6cmB9xSita9h\nP8Ye/s3JyZGcun00q12BzZ7PraurIy0tjby8PFQqFZWVlQiCwNGjR4mJieH777/H3d2dm2++mYUL\nF/Y5/F1VVcXSpUv56quvqKurA9pkcseMGcOSJUsYM2YMiYmJ+Pj49GndznB1deXJJ5/kiiuu4Oef\nf2batGmnvCbAoEGD2LVrF6NGjSIvLw9RFPHy8uKiiy7CYDCQm5uLRqNh4sSJHfQE2v++CgsL2bt3\nLwEBATQ3N+Pm5kZRUZGUChk3bpx0UyBL0v4xqKioIC8v77SpL1ZUVPDUU09x5ZVXnjYHfzrXl+mc\n88LBA/a8eooois3tHq+kLRfvTFvYnhPytMcFQXgU2CyK4pEzbezZpCcHrlarOXjwoNTqlpSU9Ltj\n2t8k2HeGhYWFNDc3k5+fT3FxMY6OjqhUKnbu3Elrayuurq54eHhQUFBAc3MzFosFHx8fMjIyOHbs\nGF5eXrz77rtcf/31fXY4LS0trFmzhmXLluHo6MiiRYuYMGECiYmJp1Wu9rLLLmP06NE8/fTTA+bg\ng4ODKS8vJzQ0FJVKhV6vR6lUYjAYKCkpwWw289VXX+Hh4UFYWJgUWrdP7LPr/ldVVZGZmcnkyZPR\n6/WSSM6oUaOkqIrs2GVkzm0GxMGfKFxzEUWxeCDWG2hEUdQLgvCoKIoVAIIgKE5Ux1cCOkBvD9EL\nghArimKWKIrPn0WTzxq92bG1b3Xz8fFBp9MREhLS6dhR+y6+ubkZg8FAfX09bm5u6PV6SkpKyMzM\npKmpicDAQCIjI4mOjqaiogKtVktycjIWi4WUlJR+57H37NnD3XffzeHDh7njjjtYvnz5gOzQe4Mg\nCCxbtoxrrrmG3bt3dzohr68EBQXR3NxMUFAQTk5OqFQqvLy8iIiIQK1Wk5aWRnh4uDQtzx5+Lykp\noby8nMLCQmJjY7FYLOTl5bFjxw4uvPBCJk+eTGFhIYGBgb+7Zndpm8zMTPLz84mKihqQgkIZGZmB\no08OXhAEd2ANMAX4GbgDeBW4CxAFQdgN/FUUxcYBtvOUaefcHdr1tTsAHoAKMAiC8BwwVhCEuaIo\n9l4u6CT+7ApcI0eOZPfu3QwfPlwSSjl5rrharUar1XL8+HGgzTHZw/Pp6ekMGTKE9PR0RFFEoVBI\n1dtJSUno9Xo2btzI4MGD2blzZ7/kZbVaLQ8//DBr165lzJgx/Prrr5Lm/Zlk9uzZxMfH88wzz/DT\nTz+d8nrBwcEABAYGotfrMRqNKBQKUlNTaW5uZvLkyQQGBkrhdoVCQU5OjqRNb49YXHHFFXz55ZeY\nzWZ+/fVXwsPDaW1tpaioqENdRPspdJ1FduwSuPn5+R0c/KkqcMnIyJw6fd3BLwcSgRXANcBnQCRt\nDl9Bm/N/CHh0AG0cUE6aEOcMuAMtgiA8BSwBJp6Kc4c/vwJX+1Y3e2vVyXPF4f/br+x90dXV1ahU\nKiZMmACA2WympaUFnU7Hvn37UCqVfPLJJxQVFXHRRRfx+eef/+5GqSdsNhvvvPMOS5cuRRAE3nrr\nLW6//fbTpuHdEw4ODixbtozrr7+e/fv3n/JNhj1/GRsbS0ZGBnV1dZI2vaOjIxqNhvDwcGw2GwqF\nAhcXF44ePUpTUxMeHh6o1WopxH/55ZezY8cORo8ejVKpRBRFaf47dNSsd3Rs+6rQarUd2hsBjh8/\n/jtlrVNV4JKRkTl1+urgZwM3i6K4QxCEjUApMFsUxV8ABEFYAqzkLDr4E0VyQnv1uW5Gv5qBo8Cz\nwL3AhPOlWr6vnBymtf9p3/N88jHtx8Xm5ORQVVWFh4cHZrOZo0ePMnToUFQqFYWFhbS0tJCbm0tt\nbS0LFizgrbfewsnJqU827tu3j7vvvpu0tDRuu+02XnjhBXx9fQf6regz1157LcOHD2fZsmX89NNP\np1RRb3fwubm5WCwWampqsFgsKBQKzGaz1Orm4OBAQEAAcXFx5OfndxgmExQURHV1NXfddRdz5syh\npqaG8vJy6uvrgTYnbpfFzcrKkqrx1Wp1B5Ebu/NPTEyUh4jI4ODgwPbt2xkxYsTvnrMLP82bNw9X\nV1cee+wx5s6de6ZNPO/oq4P3B/IBRFEsFwTBBOS2ez4D+P1W7gwhCEIssBQIFAThKG1Fct+Jotja\nLu/eHgdgLBBFWytc2hk2+ZzBvpvLysrCZDJJOff2LW+ANLd9xIgRhIeHS/n4uro6srKysFgs1NfX\nYzKZpKIvLy8vEhMTOXLkCM8++6y0++4tVVVVPProo7z//vuMGjWKvXv3SlGC/iCKIocOHcJisZCY\nmCjtXvuLQqHgxRdfZPbs2WzatImrrrqq32splUq8vb3Jyspi0KBBODk54eLiIuXj7Tc0CoUCV1dX\nMjMzOXr0KLW1tYSEhODt7U1ra6vUKufv709JSYl0npubGzk5OdJNmv2LuaSkpFOBInvRn109T+b8\nZfny5bz99tudPqfVasnPz5fSZR999JHs4M8Aff3m0gF+QMmJnzcB9e2edwMsA2BXnxEEYRiwB/gB\nOABcCowRBGGmKIqLT7TFOZ9URV8BpAK3iKKYdeatPjv0R6zG7qjtIdy8vDzUajVFRUUoFAopVL9x\n40bJaavVat577z2OHDmCv78/SqUSaJvCZrPZEEURQRDIyclh165dfPzxx9xwww29fh0Wi4VVq1bx\nzDPP4OjoyBtvvMGdd97Z73B8RkYGGzZsYP369eTn5wNtU92mTp3KzJkzmTFjBrGxsf3agf/1r3/l\n0ksvZfHixcyaNeuUdrxBQUEcP34cQRCkNEhoaCgJCQm0trYSERGBi4sLFRUVfPXVV5hMJjQajSQ/\nO3z48A55drsITlRUFDqdDo1GI30+7FX3ISEhnQoUQVvr3qneBMl0j31c8OlKNSmVSmJjY6X/o/0h\nNjaW119/vdPnsrKyOHz4MI899hgPP/xwv68h0zf6+r/yMG073jQAURT/dtLzY4HsAbCrT5yY2X4T\n8JMoivNPPLYc+CdwrSAIb4uiuNDu3AVBuBLYL4ricUEQpoiieFZuSs4WfRWrgf8vnIuOjqakpARX\nV1daWlo6yJimpqbi5eVFbW0tPj4+5OTkcOjQIcrKyqisrCQmJgaj0Uh4eDgeHh4cPnyY5ORkysrK\n2LJlC1OnTu31a9i9ezcLFizg2LFj3HXXXTz55JP9qo6vqqrio48+4sMPPyQjIwONRsPVV1/NG2+8\ngYeHB8nJySQnJ/Pggw/S3NxMcHAwX3/9NWPHju3TdQRB4LXXXiM+Pp5Vq1bx0EMP9dlWO4GBgaSn\np+Pt7Y0oinh6euLg4ICrqyvNzc38+uuvAPz00080NTXh5OREeHg4Q4cOlWYApKSkAG06APYOBvtN\nXPvPRXh4uFQ82dmNYW90EWROndjY2AFrtexq/czMzHN2fZnO6euwmRtok3rtiirOQv79RItbMBDY\n7rEmYBXwCTBaEISHAQRBuBx4kzaBGwUn+t/PJ9RqNY6Ojn36UrZPFFOr1SQlJREbG4ujoyNhYWHE\nxcVRXV1NWloaGRkZDBs2DD8/P/R6vZRHt88VV6lUuLm5YTabycvLo7q6ml9++aXXzt1kMvHvf/+b\npKQk/Pz8+O2331i9enWfnLvVauXrr79m9uzZDBo0iGXLlhEfH8+3335LVVUVH3zwAbNmzWLixIks\nW7aMHTt2UFdXx5YtW/Dw8OCpp57q9bXaEx0dzRVXXMGPP/7Yr/OhLX2Ql5eHUqlEqVRKofbJkyeT\nkJBAbW0tmZmZ7Ny5k/LycmpqalAqlcTExKDT6SgqKuK9997j22+/JS8vD6PRKOXbASls35OKoZ3u\njpeRkTm79GkHL4pibQ/P/9D+Z0EQ/gM8fjo13O1DYmiLKgwVBGGYKIq5J+xpEgThfSAa+KsgCK+I\novidIAgfAB+er2Ngexuab9/jDHQYA9p+DYPBQGpqKk1NTXh7e2OxWDAYDBQUFODo6IiXlxcmkwmj\n0YjRaMTBwYHMzEwKCwvZuXNnrzXk9+3bxy233EJhYSEvvfQSixcv7lPIsqqqitdff533338frVbL\nmDFjWLVqFfPnz8fLy6vbc1UqFRdffDFLlixhwYIFUpFgXxk3bhzLly+Xqtz7Sl5eHiUlJUyZMgVv\nb2/8/f0ZNmyY9HxDQwM1NTWo1WoGDRqEQqFg6NChFBUVERUVRVZWFvX19dTU1EhFjvbK+J4+E/Ju\nXUbm3OJ0j4u9kbY+89NGOw3572mb9rbEPtb1hPOvo02ediLwlxPnPCGK4rHTadefgfY9zn5+fths\nNoxGI4WFhR12cQaDAScnJ1pbW3F0dMRisbBp0yZ27tzJ8ePHKS0tpaGhgYyMDPbu3Utrayu7d+9m\n06ZNnVbcnozFYmHp0qVMmjQJNzc30tLSeOCBB3rtIIuKili0aBFhYWGsXr2a+fPnc+jQIQ4cOMDd\nd9/do3Nvz/z58/Hz82P16tW9Pqc948aNo6mpidzc3J4P7oRt27bh5OREc3MzDg4OKBQKmpqaMJvN\n7N27F4vFgr+/Pz4+PkRERDB58mTi4+Px8vLi2LFj0g1aUlISF1544e8q47tD3q3LyJxbnG4HPzAD\nuXuBKIoFwHW0pRFeEATBt53zt9JWP6A7U/b8GYiKikKtVhMVFYW/vz+hoaHo9XrS09MlARt7Xlav\n15OYmIharSYnJ4fNmzejUChwc3MjOjoaQRCwWq00NTWxZs0a3nzzzU5lbk/m8OHDjB07lhUrVvDU\nU0+xd+9eYmNje2V/dnY2N998M1FRUaxfv55HH32U4uJiXnvttV7dWHSGUqlk4cKFrF27lsbGvus5\n2fvADxw40K/rb9u2jYkTJ9La2kpFRQUNDQ0cOnSIn3/+mbS0NBwdHVEqlRiNRpqbm6mtrWXYsGE0\nNzdLA2kuvfRSxo0bJ4X36+rqKCoqQqvV9ssmGRmZPyan28GfUURR3AHMpW12+9uCIMwTBCEGuI+2\nFr+S7s6X6UhcXByzZ8+WFMrUajXNzc04OTmRmprKhx9+yO7du3FxccHT0xNXV1fKy8spLS2lpaWF\n5uZmIiMjmTFjBtdeey3e3t4A3HPPPfzjH//o8frp6elSbv7AgQOSlnxPHDhwgGuuuYa4uDiSk5NZ\nsWIFRUVFLFu2rE+79a646667MJvNrF27ts/nenp6Mnz4cPbv39/nc1taWtixYwdNTU34+Pjg5eVF\nXl4eBQUFFBQU0NTUhNFoZNKkScTFxeHg4EBYWBgRERHccMMNXHTRRcTHx0vytvD/lfD2TggZGZk/\nD3+63hZRFL8VBGES8ArwItAC2IDLRVEsPavGnUNotVqKiopQqVSEhYVJOdpRo0ZRVFTEwYNtekCN\njY2MGjWKcePGYTQaqa+vp7i4mJaWFry9vVEoFJSXlwNt+eEpU6bw6quv9nj9zMxM/vKXvzB06FC2\nbduGh0f3mR5RFPn55595/vnn2bp1K0OHDuW9997r17jXnggODmbu3LmsXr2aRYsW9TmXPnbs2H7t\n4FNTU2loaCAqKoqgoCApNF9fX49CoUAURQYNGoRSqeTiiy/mwgsvJDQ0VAqr23fsQIdcentBonfe\neYeUlBSSkpJ6dRMmIyPzx+VP5+ABRFFMO9EK502bFG3F6Sz0+yPTn553aJOZbWhoQK/Xd3AM9v7p\n6Ohojh07Js0bt1/LXnhmz9lnZ2fT0NDAvn37cHd35/PPP+9Roe7o0aPMnDmT4OBgfvzxxx6du06n\n48Ybb+THH3/kggsuYMOGDcyZM+e0ytPed999TJgwge+//56//vWvfTp33LhxrF+/XpLx7S32Gx17\n6sPR0VHS9A8ICMDX1xcvLy/MZjMqlarD3PesrCxaW1vx9/eXBIjs+Pv7S7/DlJQU6uvrSUlJ+Z2D\n7+9nSUZG5uzwpwrRt0cUxUZRFI+LonjkfHXu0Hlr08kUFhaSkpJCYWGh9Jifnx+enp6dFlVVV1ej\nUChISkrqMCHNPo+8oKCA3NxciouLqaqqora2lmPHjvHNN9/02M52/PhxZsyYgUajYevWrVJYvyvS\n09MZM2YMBw4c4OuvvyYtLY3rrrvutGvPjx8/nvHjx3cp7NEdY8eOxWq1cvjw4T6dt23bNqZNm4Yo\niri6uhIVFUVZWZlU3+Dt7S21xpWUlEjKg5s3byYjIwOdrucSlKSkJDQaTY9jgE+ms8+QzMCRlZUl\npWdO1/pxcXFkZZ0eva/Tvb5M55xuB/8x8IebLHc+0Zue95KSEkk61o6/vz9jx46V8u9arVb6Yrer\nndlp/1x1dTV6vZ7MzExqamrYs2cPGzdu5OOPPyY+Pr5bW8vKypgxYwbOzs4kJyd30LnvjI8//phJ\nkybh4+PDwYMHmT179inpvPeV++67j+TkZDIyMvp03siRI3FycupTHt5gMLBnzx5SU1Ol/vWWlhaC\ng4Ox2WyMHDkSg8GAp6cnZWVlhISEcOTIEdauXcvOnTulELx9yp/995WZmcmmTZskEZJ//OMffPzx\nx52G57v7LHX2GZIZOMxmM3q9Hpvt9HT2ms1msrKyMJvN5+T6Mp3T7xC9IAhKYARtxWsdbhRErxLN\n4AAAIABJREFUUfzmxN93nZJ1MqdMb8Kp7eVIO+P48ePk5uaiUCgYMWIErq6u1NXVSZroNTU1UkX5\noEGDqK6uJjw8nIyMDAoKCnjmmWeYPXt2tzZUV1czc+ZMrFYru3btksaidoYoijz66KM8//zz3Hzz\nzaxZs+asDDuZM2cOwcHBvPXWW7zxxhu9Ps/FxYWIiAjS09N7fc7PP/+M1WqViuPKy8txdnYmIiIC\nX19fLBYLPj4+UmEjtLUHAjQ1NREaGkpsbOzvVAy7GvfaGd19lnr6DMnIyJx5+uXgBUG4BPgf0Nmo\nLpG20bEy5wCFhYXSF7NdkvRkjEYjtbW1uLi4sH//fpycnCgrK5OmwGk0GioqKlAqlRQWFkrrZGVl\ncdlll/Hoo92LG9bX1zNr1izq6urYtWsXoaGhXR4riiJLlixhxYoVrFixgn/9619ndNfeHmdnZ4YO\nHUpdXV2fznv33XfJzc3l8ccf7/U57733HnFxcUybNo2GhgZsNhseHh7SaNjS0lJJO97FxUVy6va+\n+GnTpnVaYBcVFdVBzKi/tJe0lZGR+WPQ3x38auBz4GlRFKsG0B6ZM4w9tHr48GEOHz5MfX09Y8aM\nkXZzBoMBlUpFSEgIrq6u5OTkUF1dzf79+2ltbcVoNHLRRRfR0NDA7t27sdls6PV6nJ2dMRgMvP32\n2906YKPRyBVXXMHx48fZuXNnt+pw7Z3766+/zj//+c8Bfz/6ik6n61NP/b59+7j33nu56667+Nvf\nTh7l0DnFxcV88803TJ06lcjISOrq6mhsbKS8vByTyUReXh47d+5k5MiRDBs2TJoPYLFYGDJkiKRj\nAL/fhcfFxfW4c5eRkTk36a+DDwBekZ37uY89tApt+Vir1dohXGswGPDy8sLPzw9/f39MJhOVlZVY\nrVYqKioICAigpqZGmnRVV1dHTU0Nhw4d4p133ul2jKjFYuGaa67ht99+Izk5mYSEhC6PFUWRBx98\nkJUrV7Jq1SruvffegX0j+klNTU2vZ85rtVrmzJnD6NGjee2113p9jbfeegs3NzeGDBnCb7/9RktL\nCw4ODoSGhpKXl0d+fj7u7u4UFBRI5+Tl5bFu3Tpp5K3sxGVkzj/66+C/AC4CCno4TuYPjr1lKicn\nR6pwj4qKklqigA6FVfY++JCQEJydnXFxcWH48OEYDAYiIyNpampCq9UyY8YMbr/99i6v29LSwg03\n3MDPP//M999/z/jx47s8VhRFHnjgAV555ZU/lHMXRRGdTterQTctLS3MmzcPq9XKF1980evefIvF\nwnvvvUdQUBDh4eHs3buXxsZGXF1dcXZ2JiEhAYvFQm5uLlFRUdhsNkpKSigpKSEnJ4e6uroOrXhy\nq5uMzPlDfx38IuBzQRCmAEdok4KVEEVx1akaJtM7tFqtVCHdU9V5ZxgMBnJyclAoFB1C81qtlpaW\nFhwdHfH398dgMEhDSYYPH05FRQUGg4GJEyeiUCiora1FpVIxbNgw0tLS2LFjR7eh+XvvvZevv/6a\nL7/8kunTp3d5XHvnbheW6Q96vZ4dO3awZcsWRowYwR133NGvddrT1NSE1Wrt1Q7+ySefZNeuXSQn\nJzNo0KBeX+Pzzz+nurqawMBAvv32Wzw8PHBzc2PQoEH4+flhNBpJSEhg8uTJ7N69my1btpCQkEBI\nSAgajQalUimF7KHt99rU1IS7u7ucM5eR+ZPTXwc/n7bBLWbadvJiu+dE2sa0ypwBqqurO0x56w3t\np8T5+fnh7OxMVVVVh8r1oqIisrKy0Gg0eHl5UVFRgdFoJDIyEh8fHywWC4MGDaKhoYHa2lpycnLI\nysqisLCQ999/v1vnsXbtWt566y3ee+89rrzyyi6Ps4flX3nlFd544w3uueeeXr8voiiSmZnJjz/+\nyA8//MCuXbuwWq0EBwfzxhtvUFVVxbJly3q9XmfY+8p72sFXVFSwcuVKHnnkkT7NvAd44403mDlz\nJunp6dhsNpycnLj44osJDQ3Fzc1Naldsbm7GarVis9morKzk2muvBeDgwYPExcWRkpJCRUUFGo2G\noKAgaX2tVktOTg4Aw4cP79VnSI4CnHmCgoKIjo5GqVSetvWfeOKJDp+Nc2l9mc7pr4N/DngCeEEU\nxdYBtEemj7SXGe2JAwcOkJWVRXV1NcHBwfzyyy9SxXr7nXt1dTVbt27F0dGRjIwMQkJC2LdvH15e\nXuh0OqZOncqoUaM4evQoXl5ebN26ldzcXCorK3nkkUdYsGBBlzb89ttv3H333dx2223cdttt3dr7\n5JNPSjn33jj3+vp6tm3bxo8//siPP/5IWVkZrq6uTJs2jZUrV3LJJZcQFRXFs88+y2OPPQZwSk6+\npqZNP6mnHfxLL72Ei4sL//73v/u0fmpqKvv27SMqKgpBENDr9Xh5eWGxWBg1ahQBAQEcOHAAnU6H\ns7Mz7u7uAAwZMgSDwcCsWbMYNWoUOTk5bN26lbq6OoKDg5k/f77kyKurq6mqaiul8fHx6dLBt3fq\nJ7fayZx+goKCOowFPh3rP/nkk+fs+jKd018H7wxskJ372ae9zKidk1vf7D/v378fV1dXmpubUavV\nWK1W8vLypH7pwYMH09TUxObNm8nLy8NqtRIREUFWVhZubm40NDRQVFREeno6w4cPx8PDg9WrV5OZ\nmUlTUxPz5s3j2Wef7dLW+vp6rr32WmJiYnoct/ryyy/z9NNP88ILL/SYc29paeHOO+/kv//9Lzab\njdjYWObNm8cll1zClClTfrfrsTv3U3XyvdnBV1RU8NZbb/Hwww93EAfqDW+++SZDhgzBw8MDs9mM\nRqPBwcGBmpoatm/fTlxcHIcPH6a8vJyAgABmz57NzJkzpdoJ+zwBhUJBY2OjpF1gNBqla/j5+REQ\nECD9uytOduqyc5eR+ePTXwf/ITAPWD6AtsgMEO1VxcLDw6WfPTw8cHFxYdy4cYwdO5bCwkJee+01\nydEPHjyY/Px88vLygLadaUREBIGBgbS2tqLT6dDr9dTW1kpiN/X19UDbGNS1a9fi4NC5OKIoitxy\nyy3odDq2bNnSrTDNf/7zH5YsWcKyZct46KGHun2tLS0t3HjjjWzcuJEXX3yRa6+9tts+ejsD4eTt\nO/juHLx9937ffff1aW2dTsf69etxc3PDxcUFPz8/vLy8MBqNDB48mPLychwcHNBqteh0OlxdXaUb\nGX9/fzIzM9FqtSgUCnx8fJg0aRI1NTU4OTnh4uIiOejObhA7o71Tl0PzMjLnBv118ApgiSAIs2ib\ns35ykd2/TtUwmf5zsqqY/eeLL764Q248PDycSZMmkZOTg7+/P0ajkf3796PX61EqlYwfP57Bgwfj\n6uqKSqWiqalJ6nX/9ddfsVqt1NbW4unpyddff91tfnDFihVs2rSJb775hoiIiC6P27x5M/fccw/3\n338/Tz/9dLevUxRFFixYwMaNG9mwYQPXXHNNn96nxx57DFEUeeyxxwgLC+PGG2/s0/kFBQXSe9MZ\nJSUl/d69r1mzhtbWVuLj41Gr1VIaIDo6mqqqKhoaGnB2dsbR0RFXV1c0Gg2enp6SEy4tLSUzMxM3\nNzeuuuoqpk2bRnV1NSqVql8OWnbqMjLnHv118AmAXWfzZIFxEZkzysmV9PbWt+rqarRabZcqY5s2\nbWLPnj1ERUUxbdo0ioqKaGxspLW1lfDwcEaOHCmNirVX0Q8dOpRvvvmG7OxsjEYjeXl5HDp0qNs8\n9L59+1i6dClLlizpdvKaXYJ2xowZvPLKKz0q1L366qt89NFHfPrpp3127nZsNpvUU94X9u/fz/PP\nP88tt9zS6fOiKHL33Xfj5eXF/fff36e1jx49ynPPPYebmxv+/v44ODig0WgYPHgwjY2NVFZWMnz4\ncGJjY2ltbaWurk5y+nYnbI+Q6HQ6fvjhB5KSks56L/yePXvO6vVlZM43+uXgRVGcNtCGyPSfzirp\ne1Ndv2/fPkmwBqC2thZo00rvbGdqNBqx2WzSsJLi4mIWLlzYreNoaGhg/vz5jB49utv8PLTt3g8f\nPszOnTt7dO7bt2/nwQcfZMmSJcyfP7/bY7tiy5YtPPPMMzz99NNMmTKl1+dVVFRw9dVXM2rUqC6n\nyX3++eds3ryZL7/8Ek9Pz16v3drayh133EFwcDCBgYE4OztTWlqKzWajpqaG7OxsHBwccHV1ZfTo\n0QQEBBAcHIyvry/e3t6Sgx8+fDgAhw4dorq6mg8//JDp06eTmJh41nbi2dnZZ+W6f3RWr17NI488\n0uNxJpOJOXPmnAGLZP4s9NnBC4LgSFt73AWiKPZtjJbMacFeSQ9tLXB+fn7SYyqVSupft3+x23f8\nw4YNY8uWLRQXF3PXXXcREREh9UcrlUr27t2LXq/H09MTrVaLm5sbDg4OREREkJ2djc1m44knnujS\nLlEUueuuu9DpdGzbtq3bOfCiKPLcc88xefLkTkeVtqeoqIjrrruO6dOn89xzz/XjHYPS0lJuuOEG\n/vKXv7B06dJen2dX3wP48ssvO53nXltby7333svVV1/N1Vdf3Se73nnnHXbu3Mn111/P8OHDqays\nRKVS4eTkRFNTE56enrS0tBAbG4tarSYhIYGhQ4dSX19PeXm5NAvAflNnMpnYuXMnSqWSgoIChg8f\nfkoO/lRa5GJiYvp93T8zW7duJSwsrFfaDNddd90ZsEjmz0KfHbwoii2CIBQjD5T5w2AvlMrMzJR2\n7XFxcfj7+0uCNfYv5cLCQjZv3oxer8fHx4fQ0FAOHjxITU0NarWayZMnExoaitlspqCggJqaGqmN\nqqmpiTFjxhAdHc2aNWt46qmnui3Q+u9//8u6detYt25dt3l3aNuR79u3jx9++KHb40wmE9dccw3u\n7u6sX78eR8e+B6GsVivz5s1DqVTy8ccfd1kYeDL2sHt6ejopKSld9vQ++OCDmM3mPk2Yg7ac/ZIl\nS7jjjjuIjo7Gz8+P4cOH88MPP9DQ0EBYWBheXl64ubmRkJCAp6cnoaGh+Pv7k5KS0qGwEpDSNuPH\nj8dsNhMUFHTKu/dTaZGbNGnSKV37z0xERES3hZgmk4ljx471uZajt9jXj4iIOC2TGduvL3Pm6O88\n+OeA5YIgeA+kMTKnhp+fn1RxbefkGd4lJSVYLBaOHTtGRUUFnp6eDBkyhISEBGbMmMFVV13FrFmz\niIqKorGxUbppKCsrQ6/Xs23bNn7++WcCAgK6zS3n5OSwaNEiFixYwPXXX9+j7c8++yyJiYnMmjWr\ny2NEUeTOO+8kOzubr776qlcSsZ3xyCOPsH//fjZs2NBrHXloa1v74IMPeOeddxg3blynx2zfvp0P\nPviAl19+uduRtydjj3a4u7vj4ODAb7/9RmVlJUFBQQQEBEhV9BMnTkSj0bB3715qa2ul36t9GFD7\nca32z8PEiROZN28eSUlJp+zgu5sJL3P6yM7OJj4+/rSlOc719WU651SkaqOAckEQigBD+ydFURx9\nqobJ9J3OWp5ODqWGhIRIOXcfHx8iIyNZtGhRh1GihYWF5Ofn09LSIvVgt7S0YLPZKCoqorCwkA8/\n/LDLO32z2cz1119PSEgIq1b1LGq4Z88efv75Z7788stuc+9vvvkm//vf//jkk0+44IILely3M776\n6itWrlzJypUr+7Sj3LFjB/fffz/3338/N910U6fHmEwm/vGPfzBlypRudfg7Y926dXz33XdMmDBB\nqm8oLi6mqKgIBwcHRFEkNDQUZ2dnjh07JuXVKysrufTSS8/YuFa5ml5G5tyhvw7+6wG1QmbA6ClH\n6u/vT3x8PDExMVRUVGAymaRKe2ib4Z6RkYHZbMbDwwOlUklDQwOtra2UlJQQGBiIp6dnty1lDz30\nENnZ2ezbt69XzuC5554jLi6O2bNnd3lMSkoKixcv5v777+/1mNWT2bRpE9dffz3XXnstixcv7vV5\nhYWFzJ07l4suuoiXX365y+OeeuopSkpK+O6773od9oe2UPo///lP5s2bR0hICDabjerqapydnTl6\n9Cje3t4MGjSI4OBgwsLCmDp1KuvWraOpqYnk5GQ0Gg3BwcFkZWURGxtLbGwsBoOBoqIimpub0el0\nsmOWkTkP6W8V/VMDbYjMwNBVjtTu+NPT0yksLCQoKAilUkldXR1bt26VBsikpqaiVqtxc3OjpaUF\ni8VCUFAQ2dnZtLS0sHfvXpKTk7t0YN9++y2rVq1i1apVvdplp6en8/3333ebCy8tLWXu3LlMnjyZ\nl156qV/vy6effspNN93E1VdfzSeffNJjlb4dg8HAVVddhaenJxs2bOgy55+ens6KFSt46qmn+iwp\nev/99yOKImVlZZSXlzNs2DCSkpLQ6/XU19djtVpRqVR4e3sTHh6O0Whk/PjxJCcn4+HhQXFxMZmZ\nmdJrCg0NpaWlBZVKhclkQqPRnJPKc4sXL/5dB8L8+fP73TUhI3OuYa9hak9DQ0Ovz+/vDh4AQRAS\ngRjaet+zRFFM7+EUmdNMVzKidsefl5eH0WjE1dWVpKQktm7dik6n491336W8vFzqo4+NjeWbb76h\nrKwMJycnJk6cSFlZGZdffnmX09+Kioq4+eab+etf/9rrqW/Lly8nIiKCefPmdfq8xWJhzpw5uLi4\nsGHDhm4r8bvinXfe4c477+Tmm2/m3Xff7XVhnl19r6CggF9//bXLnH9LSwu33347MTExPPjgg32y\nbfPmzXz66aeEh4fT1NSEwWBAp9NRU1ODp6cniYmJQFs/+7Fjx4C2mwmtVouvry+urq54eHig0Wgo\nKSmRqusNBgNhYWGEhYWRlZVFeno60dHR59QEuVdffZXRo+Vsn8z5S2c3tGlpadL3Qk/0y8ELguAP\nrKdtklw9IACegiDsAK4XRbG6P+vK9J+TxW60Wi3Hjx+XlMsA8vPzKS4upqmpCZVKxcaNG9m6dSvN\nzc3YbDZcXV1RKBRcffXV+Pr6kpWVxdGjR2ltbWXHjh0cP36cb7/9tksbbr31Vjw8PPjvf//bqx1y\nQUEBGzdu5O233+7S6T7//PPs37+fyy67jOTkZMaMGUNkZGSPIXCDwcCPP/7IZ599xmeffcaiRYt4\n/fXX+xQ6f/zxx/niiy/YuHEj8fEn6zl1tDE9PZ29e/f2es47QEZGBgsXLuSSSy7BaDRSXFwsSf/m\n5+fj7u5OQ0MDV111FRaLhZqaGrRaLWazmdLSUjw9PaU58fa+eLswUfsbPJPJBNChwl5GRubPT393\n8KsBDyBOFMVsAEEQYmnTqF9F2zhZmTNIdXU19fX1lJaWEh0dTU1NDc3NzeTn5xMXF4eHhwd1dXWY\nTCaOHz+O1WqluLiY8vJy3NzciImJISwsTHIAarWaOXPmUFlZyYEDB8jJySExMZHY2NhOr2+1WklJ\nSWHVqlV4e/euuWLfvn2Iothtb+/06dPJzMzk4MGDUu7dw8ODxMRExowZI/0dERFBU1MT3333HRs3\nbuT777/HZDIxcuRIVq9ezT333NPrsLzVauXxxx/nhRde4IUXXuhWJW/9+vU8/vjjPP7444wfP75X\n6wN8/PHHLFy4kMjISLRaLUqlEj8/P0RRpLq6GoVCQVNTEzk5ORw5coTIyEi8vb0xm81YrVaGDRuG\no6Mj9fX11NXV4ePjg5eXV6fRm5Oli2VkZM4P+uvgLwFm2p07gCiKWYIg3ANsGRDLZPqEn5+fNDbU\nvkM3mUwEBARgsVhQq9VERUXx2WefYTAYqKmpYdCgQTg4OODo6Iinpyc+Pj6SHv3OnTsBUKlUODo6\nEhcXR1hYWJfXLywsxGazSQpqvSE3N1cq2uuKpKQkSfhGp9ORlpZGamoqqampfPbZZ50WvY0dO5Yn\nnniCOXPmEBUV1Wt7oG2c7a233sqRI0d48cUXWbJkSZfHbt68mb///e/cdNNNvR6FabFYWLx4MWvW\nrOGmm26iqqqKpqYmIiIiMJlMODk54eXlhVarxWq14unpiV6vZ8yYMUBbeF6hUBAXF4erq6tUSGc0\nGvHz8+s0z36mKuxlZGT+WPTXwTtw0oCZE1jpf2+9zCng7++PWq1Gq9VKP6tUKkpKSqQwfVxcHBMm\nTMDNzQ0PDw9mzpxJfX09n332GRkZGRQWFpKYmMjRo0cRRZGWlhY0Gg1BQUGsW7eu29Yv+wS6vhSY\n5eXlER0d3evjfXx8uPjii7n44oulx6qrq0lLSyMnJwcvLy+mTp3aZ115gObmZpYvX85zzz1HTEwM\n+/bt6zbPtXXrVubMmcOVV17J+++/36voQFFREXPnzuXQoUMMHToUURQJDAxkyJAhuLi4EBkZSUJC\nAk5OTtTW1vLrr79isViIiorC19eX48ePo9PpaG5ult6PwsJCWltbJVlh+6jYc62gTqZ7YmJiyMjI\nOG1CMef6+jKd018Hvx14XRCE+aIolgMIgjAIeBVIHijjZDrn5Hy7HbVa3WGnZjQacXNz6zD/e/r0\n6QwZMkTa2TY2NmKz2WhqakKv11NcXAy0OQpXV1fUajXHjx+ntbW1WxGa3NxcVCpVn8RdcnNzpZ1p\nf/Hz82PWrFnd2tYT6enp3HrrrWRmZrJ06VIeffTRbnPpu3btkmavr1u3rldFe9u3b2fu3Lm4u7sT\nFRXFhAkTGDZsGKGhoRQVFWEwGGhtbWXIkCFER0ezfft2fH19cXd3Z+rUqVKOXhRFfH19MZvNGI1G\nEhIS0Ov1eHl5UV1d3WWYXubcxtXV9bQOCzrX15fpnFMRutkEHBcEoYS2KvpQ2kbH/n2AbJPpgp4G\nydhvAIDfKdvFxcVJ/9FSUlJIT08nODgYhUIhCaoYDAZqa2sJCQkhISGBn376iYSEBAYPHtylTfbd\neG/z3KIokpeX1++e9oGgubmZZ599lueff564uDj279/PqFGjuj1n//79XH755UycOJEvvviiV0V1\nmZmZzJ49mwkTJlBVVUVcXBxXXnklI0aMkG6+zGYzgYGBeHt7ExoaSl1dHXV1dURFRREaGkpOTg6B\ngYFoNBq8vLzQaDRYLBZ++eUXKioqGD9+PBMnTgTk3buMjEwb/e2DLwFGC4Iwk7Y2OYG2NrltA2mc\nzO/RarXodDqADg63/a6+qKiIhoYGPD09UalU7N27l+DgYEJDQzso1lVUVKBSqbBarQwePJiWlhYG\nDRpEVlaWpEFfVlZGbW0tf/979/dtfQ23l5WVYTAY+twzPlCkpaVxyy23kJ2dzbJly3jkkUd6dNaH\nDh1i1qxZJCQksGnTpl5pdtfV1XHVVVdJkZXg4GAGDx6Ml5cXJSUlmEwmfHx8MBgMREdHSxXwUVFR\nhISE4OLigr+/PwaDgZKSEqKjo6Wfc3Jy+O2333B2dqa4uLhboSAZGZnzj373wQuCMAOYDvjTlne/\nQBCEvwGIorhgYMyTOZnq6mrc3NykL/72j9t39SqVCr1ej0ql4pdffqG0tJSjR49y1VVX8cMPP5Cb\nm4u/vz8tLS1UV1fj6upKaGgoXl5ejBs3Dl9fXzZs2EBVVRWbN2+msrKSSy65pFu78vLymDx5cq9f\nR39y9gOBxWLhmWee4YUXXiAhIYEDBw70SpAnOzubiy++mMjISL7//nvc3Nx6PMdmszF//nx0Oh3X\nX3895eXl+Pn5cdlll0lywQBKpRK1Ws3hw4fx8PDA399fmgZoj76cXCinVqtJT09HrVZz8OBBTCYT\nKSkpPU7ik5GROX/obx/8E8DjQCpQQVuIXuYMcPIXf2ePq9Vq/Pz8MBgMHD9+nLKyMhISEqirq+Pw\n4cM0NDRQVVVFVFQUQUFBUi81tPVfu7i4EBQUJO0S7VPmukKv11NeXt6nHXxubi6Ojo5nrLrbZDKx\ndu1aVqxYQWlpKU888QQPP/xwr4Rz8vPzmTFjBgEBAfz000+9nu++dOlStm7dKgkDRUVF4ebmhpub\nG8XFxWRnZxMREYFSqaSsrExy9EajsUPRpH1S3ODBg6Xfr1qtJjo6mry8PHQ6HY6Ojhw6dEh28DIy\nMhL93cHfCdwiiuJHA2nM2UQQhCjgr0AQsANIE0Wx6uxa9Xtt+c4GykDHQTP2cL1Op8PX1xer1Upl\nZSVvvvkmNpsNhUJBdHQ0Tk5OODg4EBgYSFJSEpmZmezYsYOSkhIqKyupr69n5MiRaDSabsPX/dmN\n5+bmEhER0S9lur5QV1fHf/7zH15//XV0Oh1z587lm2++6Va4pj3FxcXMmDEDd3d3tm7d2usJduvX\nr+ell15i6NChqFQqXF1dMRqNeHl5UVtbi1KpJDQ0lPLycmk3f8EFFxAUFCTdvBkMBpqamigoKECl\nUmE2mzsU0YWHh3PFFVcAbS2EI0eOBNpaFu197+Hh4ac0w11GRubcpb8O3hnYM5CGnE0EQYgHUoBM\nwAn4J/ClIAgfiaLY/YDy00xP2vJ22n9528P1AJGRkQQGBrJx40YUCgWNjY0kJCRgMpmIjIzEw8MD\nV1dXfvrpJw4ePMiRI0eoqqqisrISDw8P9uzZw+rVq7u18ejRowB96jnPzc0lLy/vtAmwGAwGXn75\nZVauXInVauXWW2/lgQceIDIystdr5Ofnc8kll+Dg4EBycjKBgYG9Om/nzp0sWLCAG264QUqplJaW\n4uTkhMViIT4+Xtq5q1Qq0tLSaGxsZPjw4VIkJj09naKiIgICAoiMjJR28Pn5+VRUVBAfH09cXBzh\n4eHce++9Ha5vz+3bletOZYa7jIzMuUt/e9bfA85e+fMAIgiCK/A88DFwkSiKE4CrAB9giSAIV59N\n+7qav23/0q6urpa+vO3Y54APHz6cmTNnMnLkSKZMmYKnpyfx8fE0NzdjNptRKpUMGTIEjUbDpk2b\nyM3NpaamRtKq12q1ODo6cvXV3b8F9pnqlZWVvX5dDzzwAJ6enkRERHDDDTdw8ODBPrwrXdPa2sr/\n/vc/hg0bxvPPP8+dd95JUVERa9as6ZNz37FjB+PHj0ehULB9+/ZuOwja88UXX/CXv/w6ne14AAAg\nAElEQVSFSZMmodfrqaysRBAEdDodpaWlVFZWSr+rmTNnkpSUREBAAFFRUSiVSunm7ODBg1itVurr\n60lKSmLWrFnExcVRV1eHzWYjPz+/SxtOng0vz3A/96moqODJJ5/sULshry/TE/118ErgX4Ig7BQE\nYbUgCK+0/zOQBp4BmoFgQCuKog1AFMUfgSeAJuAOQRB6r0E6wNjD8id/Odu/tP38/H735e3v709c\nXJx0nkqlYvTo0SxdupR77rmHSZMmMWbMGLy8vCgtLaWwsBBXV1f0er00uUyj0WAymbj99tsJCAjo\n1sZx48bh4ODAnj29D+rMmDGDkpISVqxYwZ49exgzZgwXXXQR33zzDa2trX17k06we/duxo8fz803\n38zEiRPJzs7m5Zdf7tH+9uj1eu69916mT5/OBRdcwN69e3tdJ/DGG29w3XXXMWfOHLy9vaVWxYKC\nAhwdHXFwcJDqIEpKStBqtajVaqZPn058fLwUAbHZbCQmJuLm5vY7aeCoqCipyr4rwsPDSUpK6iA7\n3NlnSObcoaKigqeeeuq0OuBzeX2ZzulviH4E8NuJf5+czDxnCu4EQXAAXIBK2nbsCIKgEEXRJori\nr4IgrADW0Laj3ycIgiCK4h/i9fUln2oPhZtMJkaNGkVQUBDQ9p9Oq9VSUVFBXFwcDg4O1NbWolAo\nsNlsNDQ08MADD/S4vru7OyNGjGDv3r3dqt11dt59993HPffcw6ZNm1i5ciWzZ89m6NChLF68mJtv\nvllSaGtPa2srxcXFZGVlkZ2dLc2w379/P4mJiaSkpDBlypRe22Fn27Zt3HHHHWi1Wl5//XXuuece\nFApFj+eJosiyZctYvnw5kZGRVFdXM2jQIEaMGEF6ejqDBw+WbpgcHByor6+noaFBipYoFAomTpwo\n5dx9fX0ZO3astH77Fsj2OgYyMuciTk5ObN68uVeiWM888wy33XbbGbDqz0l/++CnDbQhZwNRFFsB\noyAI3wGvCoLwgyiKWwRBcBBFsVUUxRRBEN4AXhQE4ZVzYUqewWDoIFerVqspKirit99+o7S0FEAK\n7zo5OVFaWopSqZSK6lxdXTEYDBQUFHDDDTf0WvZ14sSJ7Nixo182Ozo6MmfOHObMmcPevXt59dVX\nWbRoEcuWLePOO+8kMTGR7OxsyZnn5uZKAjEqlYqYmBhiYmL45z//yfz58/s0MQ6QbmTee+89pk2b\nRnJycq8lNa1WKwsXLmTt2rVERUXh4+OD1dqm4iwIAhqNBrVazaRJk/D09OTYsWM4Ojri4uKCyWTC\nZrNhMpk6pFhOxq5rYK+ul5E5l1m5cqVUENodn3zyCZs2bZId/ClwSvPgz0UEQQgABgPewF5RFPWi\nKP5HEITRwBeCIFwqiuIv7U7JB44DtjNv7f/TUyW0/Xn7LhD+f5fv4uICtDkcs9mMq6srgiAQHByM\nr68vx44dkwbTVFdX09DQQHl5OQ899FCv7Zs0aRJr1qyhtra219PkOmPixIlMnDiRwsJCVq1axapV\nqyQp1tjYWBITE/n73/8uOfWQkJA+O/T2fPfddyxcuJDGxkbefvttbr/99l6vp9Pp+Nvf/sb27du5\n4IIL8PHxwWKxIIoi3t7eFBcXExAQwJAhQwgODsZsNpOQkEB9fT3Ozs64urpiMpkwmUwYjcbfjXpt\nX0ipUCg6jWbIyJxrhIWF8fjjj/d4XGpq6hmw5s/NeeXgBUFIADbQlncfAfwgCML/sXfm8VGV9/5/\nfzNJJslk3yAJkAQSCIGILCGCFAVBiwtitddLN2t7tddatV67WNuf2KKt7W1La2t7bWst1avVtlaF\nXqVWUCqyQ6EQQhJIQvaEyT6Z7M/vjzNzHIZAFkhmEp736zUvyJkzZ77PmZnzOc/3+S4PK6X+BXwD\nI7bgbyJyD0ZUfTlwHdDnevgM70hob8F3939vaWkxhdstFOnp6dTW1hIaGkpHRwcNDQ1kZmaaUdnZ\n2dnmevGkSZP48Y9/zC233MLMmTMHbZ+7TOquXbu4/vrrL3i86enpbNiwgfXr1+NwOEhMTBx0GdzB\nYLfb+fKXv8wLL7zAqlWreOaZZ4YUzb93715uu+02HA6HWZ2uu7ubrq4uZs2aRVZWFnFxcVRWVjJ/\n/nxiY2MpLS2ltLSUhIQEoqOjzeBEd/c/75s3h8NBS0sLYFwU9exdo9EMhUtG4EUkE9gCPAv8FiPV\n7+/A54EvK6XqReQuDFHfALQBdUA6sFIp1eQTw124Rd1zdtfT00NpaSlgNJZpbGwkKCiIqqoqTp48\nSVJSEvPnzyc0NJSIiAiioqIoLy+nq6uLgwcPAkZ71L179zJjxgyWLl1KYWEhRUVFvPjii0Oyb+rU\nqSQmJrJz586LIvBu3IVhLiZ//vOf+eIXv0hXVxcbN27k05/+9JBq6P/qV7/i/vvv5/LLL0cpxYIF\nC4iMjDSb8hw+fJjo6GjmzJnDJz7xCdLT06mrq+PkyZPExsZis9nOEGz3Msrhw4fJyMgw19htNpvZ\nQEbnsGs0mqFySQi8KxXuIeD/gPVAr1KqV0QeB+5zPd+hlHIC3xCR1zHc+MHAB0qpUh+ZbuJ9gXcL\nfnt7O3//+9/55z//SW5uLldddRX5+fm0t7fT3t5u9mevq6tj165dJCYmEhQUREpKCg0NDbz77rvY\n7XaOHDnCtm3bUEqxcuXKIXd5ExEWL148pEj60aagoICvf/3rvPHGG6xZs4Zf/OIXZsDhYGhvb+ee\ne+7h97//PV/84hdpaGhg2bJl5jk+dOgQf/rTnwgMDOTUqVPk5RnJF0ePHiUsLIzZs2fT3t5Oamrq\nWV0Ad+7cSUNDA/v27TvDVZ+Wlqbz1zUazbC4JAQesGCI9XalVJfH9hqMtfhAMKLqXcF1u3xg45Dw\nFPyjR48CRoGT3NxcwsLCOHLkiCleTqeTiooKenp6sFqtXHvttYSGhrJr1y66u7tpaWmhubmZxsZG\nWlpa2Lp167BsWrRoEd/5znfo6ekZVAvV0aKqqorHHnuMZ599lilTpvDKK69w2223DcnlX1xczK23\n3kpRURGRkZGUlZWxbt064uPjKSwsJDY2lttvv53Ozk7efvttwEh3KywsJCEhAbvdTkZGhllq1p0i\n5/4MMzIy2LdvH1OmTDlD0PXMXQNGv4Ls7GxCQkL08TWDxn+uwiOIUqpNRL6plKqGD1PhMATeDrS5\n0t+UiMxUSh27kPd78MEHz6pXvnbtWtauXXve1w2lpKhn6tRNN93EBx98wOLFiwGjJWx7ezv5+flm\nYZSsrCzsdjs5OTlkZWXhcDgoLi5GREhLS6O+vp7JkyfT1NTE1VdfPaxxL168GIfDwbvvvsuKFSuG\ndYyLSW1tLT/84Q95+umnCQsL40c/+hH33HOPGXQ4WN59913WrFlDQkICUVFRxMfHk5GRgdPppLCw\nkNLSUqqqqnA6ndhsNubOnUtTUxMdHR1mR7iYmBizXkF/leVmzZo14Gx9LJWcfemll3jppZfO2Nbc\n3Owja8Y+2dnZ5o28Pr5msFwSAg/gIe4B7oI2GIV+IoEwwCEiTwALROTflFLDvhpt2LCBefPmDfl1\nQykpWl9fz8mTJ9m3bx/Z2dnMnj2bhIQEU/j/8pe/UF5eTnd3N7NnzyYgIICPfvSjprjv2bOHsLAw\nQkJCcDgcWK1WgoODCQ4OHnYwW15eHtdffz0rV67k29/+Nl/5yld8EvldVVXFD37wA5555hmCg4N5\n6KGHzMp5Q+Vvf/sbN998M0uWLKGnp4ewsDBiYmIIDg6moKCAqKgompubCQgIwGq10tjYSE1NDU6n\nk9dff53rr7+eVatWneGSr6ur67dE70DC7f39OHr0KMXFxWes2/sL/d3QHjhwgPnz5/vIIo3m0mP4\n+UVjFFfuu5tgIALoEZFvA18Dvnkh4n4u3Pnp3vnOJSUlbN++nZKSkrNKip7rNWCUo3U3LcnPz2fL\nli08+OCDPPHEE+zcuZOmpiYzZctdYKWtrY36+npaW1uJiIggKyuL3NxcIiIiiImJ4fjx4+zYsYOG\nhoZhjTEoKIiXXnqJr371qzzxxBPMmDGDF154YdiV6YbKqVOnuPfee5k6dSobN27k4YcfprS0lPXr\n1w9L3Ddt2sRNN93ENddcQ2BgIN3d3cybN4+4uDiio6MpLCyktbWVgIAAs3HMrFmzmD17Np2dnVRW\nVrJnzx4zQ8FNe3s74eHhZi7/YPH+fhQXF5ueGI1Go/Fm3Am8iASIiMV72zl27wCKgMeBrwNXKKVG\nJPnSc/bliWdjEO+Soud6DRhFbJYuXUpSUhLZ2dkcO3aMtrY2Dh8+zNGjR5k0aRIrVqxgyZIl2Gw2\noqKiCA8PJywsjKamJsLDw1m6dCkzZsww18USExPp6+vjzTeH318nMjKSH/zgB+Tn55OXl8enP/1p\nFi1axM6dO4d9zIEoLi7mrrvuIiMjg5dffplHH33UXCOPiYkZ8vF6e3v59a9/zcc+9jFuuukm4uPj\nsVgsTJ482SwD3NfXZ3onEhISiI+PJzMzE4CcnByio6MJCQlBKdVva1+r1XrW9oHw/n4MpmytRqO5\ndBlXLnoRyQYeASaKSBGwWSn1V6VUn8e6uycBQC6QASxWSh0YKdu809zcTJ48+Zwd1Ww2G6WlpeZM\nzzsPOj093aw3XlVVZQbH2Ww2Ojo6SE1NJTY2lq6uLrO+ucPhIDg4mIaGBvbs2cOhQ4fo6+ujpaUF\nm83G/Pnz2bx5M5/85CcvaLzTpk3jT3/6E++99x4PPvggixcv5t///d958sknB10dbyAOHTrEk08+\nySuvvEJCQgJPPPEE99xzz7DT6np6evjDH/7A448/zvHjx7nzzjux2+20t7cTGxtLdnY2c+bMITQ0\nlNraWqqqqoiIiGDq1KmkpqaaSx2NjY3MnTsXm83GwoULz/rcztXy15PBrLfrsrUajeZ8jBuBF5EZ\nGC1s3wT2Aqsw1tNXKKUedKXFBXtF0VcD+zB62+ePpH3nulB7inR/rwGjill9fT0Oh+OMPt+e3Hzz\nzaxYsYLS0lK2bt1KZ2cnVVVVhIaGEhoaSmpqqnnD8P777+N0OomMjKShocF08fb29uJwOHjzzTfp\n7u6+KL3ar7rqKvbu3cvvf/97HnnkEbKysnjooYd4+OGHhy3EO3bs4Hvf+x5//etfSUtL4+c//zl3\n3nnnsCN03cK+fv16CgsLuemmm4iKiqKpqYne3l5CQkKwWq0EBARQXV3N1KlTiYyMJCgoyJyNu2/g\nOjs7KS4u5siRI0yYMGHQjWq80S1eNRrNhTIuXPRiRIV9BtiilFqrlPoG8BHgNeBqEXkGwC3uIrJa\nRCa68ts/MtLiPlzcrvne3l4SEhLOcOefa/+YmBjmzJnD5MmTiY2Npbe3l6qqKnNGeOTIEY4cOcIH\nH3xAY2MjUVFRJCcnExgYSG5uLvPmzaO5uZn333//oo3DYrFw5513UlRUxEMPPcSPfvQjMjMzWbdu\nHa+88gqHDh0acD1aKcWWLVu46qqrWLJkCaWlpTz//PMUFRVxzz33DEvce3p6eP7558nOzubTn/40\nM2bM4Ic//CFpaWlMnDiRoKAgpk2bRmJiIpdffjlWq5WwsDCcTifR0dF0dHTQ1tZGQkICDoeD3t5e\n2tvbKSoqIi4ujr6+PjNHfqjoFq8ajeZCGRczeKWUEpFkYKLHtlYReQroBG53laR9UkRuAJ4Gfi8i\nj2KUrfVL3IKdkJBAYmLiGTN49/PuR3t7u9lvPDo6mpkzZ2KxWCguLqampoZTp05xxRVXEBERQUND\ngxl0N2vWLJqbmwkLC8NisRAbG0tycjKbN29m2bKL21MoPDycxx9/nLvvvptvfvOb/OIXv+D06dOA\nUShnypQpZGVlMWPGDPPfGTNmsHPnTr773e9y8OBBFi5cyGuvvcZNN9007Br0PT09vPjii6xfv57i\n4mJWr17NtGnT+PznP8/+/fvZvXs3PT09JCQkkJeXR1xcHNnZ2VRVVdHe3k5fXx9vvfUWPT09XHnl\nlSQmJlJXV0dVVRXR0dFYrVbsdjtLliwZdnnZsZAKp9Fo/JsxP4OXD3O6DgAWl6seMEQeozTtQeAm\nl4v+rxilap91tYX1i/av3pSUlHDw4EEqKyvPqCk/f/78M2rR19TUsH37dvLz83nvvfdwOBzU1tYC\nRqe1yy67jK6uLqqrq/nVr35FRUUFS5cuZfLkyaZ7uaenh6CgIJqamti3bx8tLS1s2rRpxMY2ZcoU\nnn/+eerr6zl9+jQ7duzg2Wef5fbbbyckJIQtW7Zw//33c8011zBp0iQ+/vGPExsbyzvvvMOuXbu4\n+eabhyXuZWVl/OxnP2PmzJnccccdzJo1i7y8PP71r3/R0tLC7t27CQwMpKWlhba2NkpLSzly5Ijp\nzcjIyCAzM5Ompibq6+s5fvw4RUVF5vGTk5OxWCwkJiaybNkyoqOjL9o501za5OfnM2vWLPLzR8bZ\nONaPr+mfMT+D9xDo/wMeBb4mIg+4ituIUqpRRNYDZcC1GIF363xl72Bxu+HdxVPceK/NNjU1mY1M\npk6ditPpJDc3l87OTqqrq5k+fTo33ngjP/nJTwgMDOTEiRPMmzeP5ORkCgsLqa6uJiYmhpCQEJxO\nJ11dXVitVoqKiigsLGT69OkjOs64uDgWL15sFulx093dzcmTJzl+/DgpKSnDyp/u6+tj7969bNq0\niU2bNnH48GECAwO56aab+OpXvwrAK6+8QmNjIw6Hg+3bt5OSkmLeQE2cOJGSkhKCgoJ44YUXuPXW\nWwGjaMfx48cJDQ01I+E9K88BZn66RnMx6OjoID8/n46ODn18zaAZ8wLvRil1QkT+DSPIzikijyml\nTrue7gYOY1StGxOcK7reMxrfZrORlZVFfX292b88LCyM8vJytm7dSnJyMgBz585l+fLlHDx4kODg\nYA4fPsz+/fuJiooiOjoai8XCnDlzsFqtWCwWgoKCcDgcvPLKK3zrW98a9bGDkVPvdtEPle7ubp56\n6in++7//m9raWmJjY7n++utxOBxcfvnlZGRkkJWVxZ49e8jOzj4jFbGmpoaZM2dSU1PDokWLOHny\nJO3t7TQ3NxMeHo7VamXWrFnEx8ef8fl4utR1dLtGo/EHxo3AAyiltonIx4E/Akki8gqGsH8GSMTo\nFDcmSE9PN9fd+6tN7m4Pm5CQcIaY1NXVceLECXp7ezl69ChWq5WamhqSk5OZMGECZWVlvP7667S0\ntNDY2Gg2NnnnnXdYsmQJ8+bNIyAggLy8PL73ve+xdu1apk2b5qvTMGTeffdd7r33XgoKCggODmbK\nlClcdtlltLS0MG3aNKKjowkMDCQ0NJSFCxdSU1NDXl4eHR0dlJeXm93eLr/8cmJjY5k2bRotLS1M\nmTLFzF13fx7u5RKNRqPxR8aVwAMopTaJyGLgx8D3gR6gF7hBKVXhU+MGibsEaUxMDBkZGf32gK+v\nr6ezs5P6+nozkKuuro6ysjJiY2PNNLeAgAAOHjxIS0sLhYWFREdHExwcTF9fHykpKcyePdtcez52\n7Bh5eXk4HA4OHjzIhAkT+NznPse2bduGHdA2WlRWVvKVr3yFP/zhD1x55ZXMnTuXnp4eli1bxvTp\n0zlx4gTh4eG0tbXR0NDAwYMHycrKIjY2ltraWmJiYli+fDlgrKU3NDRQVVVFS0sL06dPZ/r06WaR\nmbq6unOmsI2levEajWZ8M+4EHkApdUBEVmN0iosAqj3c9X6PuwRpR0eH6YIvKCggNDSUlJQUHA4H\nCQkJZrMZ9w0BGK79jIwMFi1aREFBAQUFBcTExHDgwAGCg4MpLy9n9uzZpKSkMHHiRKZPn47FYuHQ\noUPExsYyadIkMjMzaWhoQETYvn07Tz/9NPfdd5+Pz0r/9PX18T//8z88/PDDhIWFcfvtt5uNXVJT\nU8118z179lBZWUllZSWhoaG8+uqrXHPNNZSUlNDW1kZXVxd2u93MXJg+fTplZWX09PRw6NAhgoOD\nAcOzcq6iRXB29UEt9pcue/bs4Sc/+cmA++3fv1/X6NeMCONS4AGUUi1Ai6/tGA4ZGRlmkFZiYiIF\nBQU4nU6cTqdZsMZdthRg27ZtlJaW4nQ6iYmJISYmhvr6epKTk6murqaqqsrsarZw4UI6OjqIjIwk\nNTWVmpoaJk+ejM1mo6+vj/z8fGbPng1ARUUFS5Ys4eGHH+b666/3O1f9kSNHuPvuu9m5cydf+MIX\nWLlyJZmZmWzdupXTp08TGRlJe3s7YWFh1NXV0djYSFhYmHmudu7cyeTJkwkICMDhcPDqq68ybdo0\nWltbWbRoERMmTKC2tpaWlhacTqf5vucTbE/x18VqLm0ef/xxPvjgAy677LLz7jdjxgzuvffeUbJK\ncykxbgV+rLJ3714OHjxIamoqaWlp1NXV4XQ66ejo4LLLLjsrr7quro6Ojg4aGxvJyMggLi4Om81G\nb28vnZ2dhISEEBUVRWhoKDfeeCM2m429e/fyj3/8g1/96lfmTD4iIoLCwkIaGhro6OggNjaWEydO\ncOzYMb9z1Xd0dPD444/z/e9/n8zMTJKTk8nIyKCnpweLxcK8efOorq4mIiKCuro64uLimDJlCs3N\nzQQHBxMXF0dnZyddXV00NTUxceJEgoODCQkJob29nZSUFHp7e83juivaDSan3Vv8tbhf2ixevJg3\n3njD12ZoLlG0wPsY7zXb/Px8Tp8+TV1dHaGhocCHzUn6K3taX19PRkYGISEhREdHY7fbqaioMGun\n2+12jh49SlZWFqWlpQA0NDRw9OhRM1Dv9ttvZ86cOezfv5/Gxkbeeecd4uLiaGlpITg4mKSkJLZv\n384jjzzCunXrTLt8wbvvvsvdd99NWVkZiYmJZgzCG2+8QVJSEuXl5axatYrk5GRzxh4WFsaiRYto\namoiMDCQtrY2cnJyeP/996mpqaGtrY2rr76azs5OrrrqKsDI242KijLT4BISEoYs1No1r7lYJCUl\nsW7dOpKSkvTxNYNGC7yP8XbjZmdn09nZCRiFWQ4fPkxMTAwrV67s9/VuAYqOjiYmJoa9e/eaOe2e\naVuAme5VVlZGTk4Op06dIikpifb2drKyskhLS6O0tJTjx4+ba83usq3XXnst69ev57nnnuPBBx/k\nnnvuGVYL1uHS0NDA1772NZ599lmWLFlCTEwM8+fPp6KigubmZlOorVYrmZmZdHR0EB0dfUY/evcN\n0syZMwkJCeHAgQPU1dXR3NzMlVdeaabAbdmyBavVSkNDA7m5uWcEMbrjHrxn8yUlJefsE6DRXChJ\nSUk89thj+viaIaEFfgTwXK8dCO+ArdzcXHJzc6mrq+Pll1+mt7eXrq4unE4ne/fuJT8/n+zsbHJz\ncwHMWeyRI0c4ceIER48eJT4+nk996lOAEXTndDqJjY0lPj6ekydPYrfbKS8vJyUlBTCixh0OBzfc\ncAObN29GRGhubuazn/0sQUFBpnCmp6dzzTXXsG7dOp588knuu+8+HnjgAeLj4y/yGfwQpRQvv/wy\nDzzwAJ2dnURHR5tpf4mJicybN4+3334bMM77pEmTzNcdOnSIY8eOMWXKFGw2G8HBwWRnZ5OdnQ3A\ne++9Zxbz8WzfGhsby8mTJ2lpaaGkpMQU7P4yF9x49gnQAq/RaPwBLfAjwFAF3tuN654NuoXHarUy\nefJktm/fTltbG/n5+abAgxF139vby+7duwGjuYt75uqeiff09BAYGMjs2bMpKioy69d75tTPmjWL\nlJQUUyizsrLYunUrR44cwWazER0dzbZt27j66qsJDQ1lw4YN/PjHP+buu+/moYceMsV1KPT09FBb\nW0tFRYUZ5e5+VFRUcOrUKU6ePMltt91GV1cXDQ0NtLa2EhUVRVtbG06nk+TkZIKCgkhPTycjI8MM\njOvp6SE6OprTp08TExNDY2MjAKWlpaSlpXHXXXf1O+t2150HzhBsz8wFb87X9tcTnUan0WhGCy3w\nI8CFrlG7Z4OhoaHcfffd5vbTp0+bM3hP3FH3eXl5nDhxgmnTpp0hQp5egrKyMtrb2xERoqOjza5l\nXV1d2Gw2PvGJT/Dmm2+a9eKPHDli5tRbLBaSkpKYO3cuy5YtY8qUKfzlL39h48aNPP3009xwww2s\nXLmSlJQUuru7aWpqorm5mebm5n7/X1dXR01NDX19faatwcHBJCcnk5KSwp49exARkpKSzEYuGRkZ\nlJaW0t3dTUlJCUlJSebaem9vLxaLherqarq7u82ljlmzZpk92Nvb27FarWY8QlZWFomJiWe52C+7\n7LKzBPt8fdzP1/bXEx1Zr9FoRgst8CPAhQr8uWaDbve9w+Ggrq7OnAW6S6OuWLHijNlhf+vCVVVV\nREVFERkZSWxsLKdPnyY2Npbp06djs9lYtmwZQUFBbNu2jaKiImpqauju7mbKlCmEh4cTExPDzJkz\niY2Nxel0YrFYaG9vx2KxYLfb+frXv05bW5tpc0REBNHR0URFRZmlcffv34+IEBQURFpaGkFBQdhs\nNjIzM8nJyWHBggX8+te/JjMz0/Q0lJaWkpOTw6xZs4iMjKSiogKlFHa7HaWUmcqWlJREUFAQDQ0N\nBAYGEhAQQG9vL2FhYaSnp5sz6LKyMpqbmykuLmbRokVnudgHK9hD5Xw59BqNRnMx0QLvhwwkLuea\nBdpsNvbv38/7779PREQE8GEQnvt47rQvMPrMgxE8VlhYaOaMt7a2EhAQQFxcnFnlTSlFYmKiuQb9\n3nvvmQJrsVgA6Ozs5NprryUkJIT9+/ebXoGwsDCqqqqorKwkMDCQkJAQIiMjyczMZOLEiXR2dpKT\nk2PO3gEWLlyIiHDy5EkCAwPNZYqcnBzmz5/Pa6+9Zkb4R0RE8MYbb5h16xctWsTOnTsBYz09Jibm\njHPkcDhwOp0cO3aM0NBQCgoKBu1iv1C0a37wPPjgg2cFcq5du5a1a9f6yCKNZijXgEkAACAASURB\nVHR56aWXeOmll87Y1tzcPOjXa4Efg/Q3C3TP6rdu3UpFRQUOh8PsKucpWu7ZvsPhID8/n5qaGiIj\nIyksLMRisRAVFUV2djbl5eV0d3cTGBhIaWkpFouF+vp62traePnll5k9ezYRERHMmjWLiooKpk6d\nytVXX01ISAgpKSnMmjWLkpISioqKaG5uZsKECYgItbW19Pb2EhERwYoVKwgKCiI6OpqJEyfy+uuv\n8/bbbzN//nxiY2PNVMGMjAyWLFlCXFwcoaGhxMXFsXz5cqqrqwkNDcVutzN37lyam5uJjIykpaWF\nnJwcwsPDzVr7nueqvr6e8PBwIiMjz4hV0MFx/sWGDRuYN2+er83QaHxGfze0Bw4cGHTlQy3wYxC3\nWLnLoboFv7W1lSlTplBZWUlcXBxxcXGsWrXKDKTrz3W/cuVK8vPzCQkJoauri6qqKmJiYoiKikIp\nRUdHh5kDfvr0aex2Oz09PezatYu8vDxWrlxJX18fXV1dprhWVlYSERFBbm4ura2txMfHExISwsqV\nK3nrrbfYt28fQUFBdHV1ce211xIREUF7ezsVFRV0dnaya9culi5dSl9fH319fcTFxTFnzhzAWP5w\nex7i4uKwWCzMnDmT8PBwAFJSUggODj5jmcRb4N3Bcunp6TQ2NhIXFzcqn5tGM1ycTicnT55k6tSp\nI1KHYqwfX9M/WuBHgcFETnt3jSstLaW9vZ3U1NR+A7u83fQ2m42IiAjy8vKw2Wx0dXWZr3UHs733\n3nu0trYSERHB9OnTKS8vJy4ujpycHHOduqyszBTrY8eOUVtbS2RkJOHh4eZrdu7ciYhQU1PD9OnT\nOX78OA6Hg4aGBjIyMmhubmbixIn09PQwY8YMTpw4QUZGBrGxsaSnp1NRUWHaa7FYOH36NPHx8dx4\n44288847TJw4kba2NpKTk811+3379tHe3k5TUxMdHR10dnaSkJDAnDlzmD9/PnV1dRw7doyuri6W\nLFli3qhYrdazvB3uYLktW7ZQX19PSEiIbu+q8WuOHTvG/Pnz2b9//4h4Nfz1+DU1NWzatGnA/ZYt\nW2be5Gs+RAv8KDBQ5HRJSQmHDx9mwoQJTJgwgfb2dsrKyggODu435xrOdtO7Rb68vJygoCCCgoJw\nOp28/vrr5mtOnDhBX18ftbW12O124uLiuOKKK0w3td1up7u7m/r6eiorK5kwYQLNzc04nU5ycnJY\nsmQJoaGhREVFceTIEUJCQoiJiaGjowOHw4HFYiEuLo6pU6dSU1OD3W7n9OnT2Gw2RIS+vj6SkpKY\nNm0agYGBTJ8+nYqKCurq6ggODmbNmjWsWbOGnTt3UlpaSlZWFgkJCZw6dYqqqipOnTpFVFQUx48f\nJzY2lsjISKKjo4mMjMRutxMYaHydGxsbz2jW0985P3r0KO+99x5BQUH9pr1pNBrfMmfOHDZt2sTq\n1asH3Pezn/0szz333ChYNbbwfWHxSwB3Ktq5Zu/l5Uab+traWgCsVivh4eFnlErt75ju9qVuysrK\naGlpwWKxMHfuXDo6OigqKqKiooKYmBjmzp3LxIkTycjIIDw8nM7OTpxOJ2lpadjtdnN93F1QJigo\niMzMTFpaWvjLX/7CG2+8gdPpZNasWSxYsIDU1FSKi4uJiIjA6XTS09NDU1MTISEh2O12RATAjGp3\nN89xR9SD0eb13XffpbKy0ryZSU5Opr29nbfffpuDBw/S2dlJcXExJ06coK6ujrS0NDPAzt3Gdfny\n5WRmZrJkyRIyMjKw2WzMnj37rHPkpri42CwBPFAzEI1GM/p85zvfoba2dsDHtddei91u97W5fome\nwY8CA0VOu4PgJk+eTGJiIg6Hg6SkpEFFW3uWTw0LC8NmsxEeHo7NZiMmJobm5mZOnjxJRkYGCxYs\nICQkhI6ODurr67FarYSGhlJaWmr2iI+Pj8disVBUVER8fDxWq5W3336bjo4O9uzZQ1ZWFk6nk5qa\nGrNjW3h4OCkpKTQ1NZnNajIzM6mtrWXixIkUFBSQk5MDGNHxzc3NhIaGEhoaSk9PD+np6WYu/NGj\nRwkLC0MphdVqpaamhtjYWKqqqujs7KSmpobs7GwsFgtWq9U8D0uXLmXp0qXm3wO53DMyMsx/dXCd\nRuN/iMigGjx5Xgc0Z6IF3g/wjuAeirDb7XbCw8Opr68nLS2NhIQEc0nAfcMQExNDTU0NTU1NlJaW\nIiLk5uaaQWruH8iyZctwOBzs2bOH6upqADIzM7nlllv4xz/+YeasOxwOjh8/Tnl5OVlZWSxevJjO\nzk6am5vJzs5m6tSpOJ1OEhMTzXV6t4AnJiayZs0a86YkLi6OHTt2YLVaKS4uxmKx4HA4SElJoa2t\nzXTF2+12du/eTVpaGs3NzURERNDR0THo0rDeNQHc2QQajUYzXtECP0YpKCigtrbWbH/qjnR3r807\nHA6ioqK44oorzOp3TqeTsrIyAgICsFgsZvS6u1+8u6JbWVkZnZ2dlJeXs3DhQu655x5uvfVWUyC3\nb99uVrfr6uqiurraLFLjdpmXlpbS1NRES0sLoaGh9PX10draSl1dnXlX7ra3uLgYgKamJoKCgsxe\n9h/96EfNwJygoCDmz5+P1Wpl4sSJgNE2NjQ0lKNHj/bbAMaT/mrFe3o/6uvrKS4uJiMjQwu/RqMZ\nF2iBH+OEhIQAxvo7YK45OxwOSktLSU1NJTc3l+3bt7Nnzx56enqIioqipKSErKws2tvbCQ8Pp729\n3Sx4Ex8fT09PD0lJSQQHB5vV5Hp7e2lvbyc9PZ2cnBxqamrMXuqnTp1i2rRpZ9Rtt9vtzJ49m5aW\nFjPoD84MOgSYMGECtbW1LFiwgPb2dqKjo6moqMBisVBaWkpoaCiTJ08mKirKbMRTX19PWFgY5eXl\ndHV1mWM/F/0VsvFsHlNcXIzD4aC4uFgLvEajGRdogR8hLqR96Pbt2zl06BBz5sw5Y13Zk6ysLDN/\nu6ysDLvdTkNDA0uWLMFms53V+czd+9zpdDJt2jQ6OzspKysjNTX1jFmsOxLenTpnsVjMGva9vb3Y\n7XZCQ0PJy8ujtraWmTNn0tHRQVBQEHFxcWeIr6eYnj59mrCwMFOE3RkADoeDiIgIpk6dasYfOBwO\nwsPD6erqor29nfj4eJxOp9m1rr6+nurqaiorK5kyZQrAOYMR3cdLTEw863Pwbh7jnsFrNBrNeEAL\n/AhxIe1DDx06REtLC4cOHWLp0qX93iy4c7kdDgd2u52mpiZztm2z2c4SL3cQXGZmptl0xfs49fX1\n9Pb2kp6ebtaYDwsLY/PmzXzwwQdkZGSwfPlyrFYrPT09pKamEhISwo033mjm7RcUFBAeHo7dbicj\nI4PAwEAcDgdWq9UMAoQzi/V4l5J1P1dfXw/A4cOH6e3tNW9owsLCqKysJCwszLwhKSgowOFwnHWu\nz5ei6Nk8JjEx8ayZ+/n6v2s0o8nMmTM5cuQIU6dO1cfXDBot8CPEhdQ2nzNnjjmDh3PfLLhnp1lZ\nWeb7uEXMu/PZqlWrWLBggRmEd/DgQQ4ePAhgzuJ7e3uJjY01a8tbrVZaW1t59dVXaW9vp7u7m899\n7nM4HA6uuOIKqqqqqK2t5ac//Snx8fEsWLAAMIS5qamJPXv2UFtbS2ZmJldccUW/Yz1X8xW3/UeP\nHqW+vp6WlhZzBm+z2Zg7dy5NTU2EhoaydetWs/a+t8BfSHOX8/V/12hGk9DQ0BFdOhrrx9f0jxb4\nEeJCapt7p3yd62bBPTsNDAw03+vo0aP9Bot5ztQdDgenT58mKCiI/Px8UlJSzPr1NpuNlJQUs9Vq\nU1MTMTExtLW1MWnSJHOG7Ra8Rx55hOrqampra7nyyiuZNGmSeeOwd+9e4uLiKCoqYs2aNf2KbH8p\nhJ5V/RISEkhISCA2NtacwdtsNiZOnMi0adPYv3+/WSLX8/x4HmOw4uztKTlf/3eNRqPxd7TA+yme\nAnWumwXv2anD4WDfvn309fWdFSzmdjcDxMTEkJWVRWNjI8nJyVRWVlJYWEh0dDTx8fGmuLuFcfXq\n1bS2trJw4cKzbEhKSqK6upqMjAzCwsIoKCgw1+Rzc3NpaGggLy9vUCLraaPVajVT/9xtcN37eIq2\nZw0Bb+/GUPuue3tKztf/XaPRaPwdLfB+ymAEynv263A4mDJlCqdOnTorWMztbt6xYwfV1dWkpaWR\nlZVFfHw85eXltLS0cPjwYW677TYKCwspKCggKyvLDNorKChg+/btnD59mtzcXPO4y5cvNyvGuQUy\nJCSEuXPnsmTJEtPOc43Rs5a+20Z3Mxl3HXl3ZkBdXd1Z52SwNz+DYbRaxmo0Gs1ooAXeTxmOQNls\nNmbNmsXChQvPep3b3VxdXU1vby979+4lNTXVFLTS0lJaWlrYv38/8fHxOBwOysrKuO6667DZbLz5\n5pu0tbWxa9cuwAh0S0tLM4vruPu+u4/nXj935733t/7mfRPj6RLvb/xDOSfuGwJ3r/fBLJfolrEa\njWY8oQXeBwymu5z7ubq6OkpLS8+K5N67d69ZwMY9oy4tLTXX39PS0s54D7e7+aqrrmL//v1kZ2eb\n+eXp6enMmDGDoqIigoODmTt3rnls9/t0dnbS19dHZGQkzc3NtLW1mTZ5BvZ5jskzd/5cY/QUbG+X\nuPe5GajkrzcXksmg0Wg0Yx0t8D5gKOvD9fX15OfnU1NTw/Lly82ZcH5+Pm1tbeTn55sC71msJSEh\nod/3uO6667juuuuAD4PKwKgR39DQQFdXF2FhYdxxxx3U1dXxm9/8BoCIiAhuvfVWGhsbzfS5/oLj\nPN/TM8e+P4Yq2ENFu9w1I4HD4WD79u0D7ldbW8uECRNGwSKNpn+0wPuAobiaExISqKmpITAw8IzA\nuezsbHOWDR/mk3d0dJjd1LwD8Ly9Bp4z3Li4OLN07ZEjR0hLS6OgoMDsJz9nzhwCAwNJS0szX//6\n66+ze/du8vLyuPnmmweckQ+WwXg4BoN2uWtGgvvvv5/f/va3g9r3G9/4xkV5z+rqap555hm+8IUv\nkJSUdFGOOZ6Or+kfLfAjiHfa1blS2M6HuxWqd5W13NzcM4LdHA4HGRkZZGVlnVHr3W1DaGgoKSkp\nZwiw5wzXZrORnJxMeXk5HR0dlJaWEh0dzfTp01m9enW/Qr17926amprYvXs3K1asMIvdpKamnvfG\nwhvvffrzcFws0ddoLpT6+npWrlzJ7373uwH3dfdNuFCqq6v59re/zerVq0dMgMfy8TX9owXeCxER\npZS6GMfyXgMebr3zsLAws9qbO02sv/Xp/rwC5eXlVFVV0dLSQlhYGAkJCeYxvGe4t912G/v37zer\n2KWmpjJt2rR+BdXhcDBjxgyOHDlCXl4eDoeDuro6ent7zygMM5jlCO99+hvLcNLeNJqRIiQkhOTk\nZF+bodGcFy3wLkTEBijAArRejGN6rwFnZGQMq965+0ahuLiYmJiYfkXuXDPbyZMnU1JScsZds6dQ\nes+Ms7KyBlWe1eFwsHLlSlatWmUW0HGXwPVccx/McoT3PkO5gdFoNBpN/2iBB0RkFvAkkAoUi8hz\nSqlNF3pcm81GXFycKUrD7UHuvlGYNGkSgYGBQxK59PR0M8e8v/Qzh8NBS0uLWVRmsOvmNpuN/Px8\nGhoaiI2NNb0D3q8djEv9Yu2j0Wg0mg+55AVeRLKBfwC/B94FlgO3iMj/AX0X4q4fTi3z/taaLzRY\n7HzpZ27xdxeVGayI2mw2s/1rfn4+OTk5gxqnXkvXaDQXm6amJvbv3z/gfjk5OQQHB4+CRf7BJS3w\nIhIGfBf4nVLqv1zbTgOrgUhAgAbX9iGvzQ+nlvlorzXbbLYzcuaHgtuzkJ2djdVqHdQ49Vq6RqO5\nmKSnp/PUU0+Zza7Ox5e+9CV+9rOfjYJV/sElLfBAN5AC7PbYNhPIAfYDlSLyN6XU+uHM5IeTJuaL\ntebhzqaH41m40PFpD4BGo/Hkhz/8IXfeeeeA+z3wwAOUlZWNgkX+wyUr8CIiQAhQBuSJyF1AOnAf\n8EWMQLtpwJdE5LBS6vXRsGu8C9eFjk97ADSXIiEhIWRnZxMSEqKP70VQUBCXX375gPtFRUVd9Pf2\ndy5Jgfdwt7eKyG+AzwPXAbOBe5VSG137TQL+A0Po/RJ3BzbPALfRnOVu377d7F3v2eJ2pNDR9JpL\nkezsbI4ePaqPrxkSAb42YDQRkXARCVRKKRGxACil3gI+C3wG6AQ8C6fXAtWA0/V6GV2LP8ThcFBS\nUkJJSYnZOhXODOTz3Nc9yx1pDh06REtLC4cOHRrx93LX5Ydzd6jTaDQajcElI/AiMhP4E/BxEQlS\nSvW6RR5D1BVQB0wVkWQRCQEeBTKAtwAuVgGc4eBwOGhtbaW1tfUM4U5ISDgrwM1msw05nQ6Mynvb\nt2+npKRk0K+ZM2cOkZGRzJkzZ0jvNRz6u5nRaDQaTf9cEi56EUkDXsVwtUcAnSKySSnV7eGud4rI\nJmA9cAdgx8iLv0kpNXjFGyFsNhsRERHm/z1d89659cN1zQ+n+9rSpUtHxTUPw8tK0Gg0mkuVcS/w\nIhII3AYUAp8Avg884nrOLfKBSqkepdRTInISyAbagDf9QdwBs7Ssm9LS0kHl2A+l/r2/d18bbvMa\njUajuRQZ9wIP9AJbgTKl1EERuQH4Kx+K/GalVJeHyG8GNvvQ3kEx2NnsUOrfj3b3teE039FoRor2\n9nZ27Ngx4H51dXX6RlMzJhj3Au8KqDuklDrg+rtbRG4GXscQeeWayfeIyM0XIx3uwQcfPCslY+3a\ntaxdu/a8r+svIv5cDHY2O9z696PBjh07qKiooLa2Vgv8OOOll17ipZdeOmNbc3Ozj6wZHA888AC/\n+c1vBrXv17/+9RG2RqO5cMa9wAMopXrd/xcRi1LKKSJrgNcwRD5QRJYDq0Vkj1Kq+kLeb8OGDcyb\nN2/IrxtOaduBGG79+9HAarUiIlitVl+bornI9HdDe+DAAebPn+8jiwamtraWa665hmeffXbAff11\nGUtzfux2O++///6A+y1YsGDEagKMJpeEwHviip4PVEq1i8hqDJF/AaOq3dILFfcL4VILIlu6dCnp\n6en6YqnxG8LCwkhNTfW1GWeRn5/Pxz/+cf74xz+SnZ2tjz8MMjMz2bRpEx/5yEcG3Pc///M/+eUv\nfzkKVo0s40rgRSQAEK8Ze4BSqs9zP5c73qKU6hCREiAXQ9xHvRKDt1v+UlrbG+01f41mrNLR0UF+\nfj4dHR36+MPk+9//PnfdddeA+91zzz1UVlaOgkUjz7jJg3d1hfs9sEVEfukKpkMp1eeR727imsl/\nCfgCsMIX4g4XN7fbe81zrKHt9x1j1faxavdgGM9jg9EfX2BgIFlZWQM+3OnIF4o/fH7jQuBFZAbw\nAWAB9gKLgMdEZAOYYt5fj8CXgUyl1MFRM9aL/grVDBd/+EJdCNp+3zFWbR+rdg+G8Tw20OMbDca8\ni95VPvYzwBal1FrXtu8C9wO3icgzSqkvKKW6XM+tBnYqpeqVUvWAT8uiXWpueY1mtNm4cSOPPvro\ngPvV1dWxatWqUbBI4+90dXXR2Ng44H7R0dH4sIL5gIx5gXelwSUDEz22tYrIUxi15W8XkYeVUk+6\n3PZPAxtF5FHvtXmNRjP++POf/4zVauX2228fcN/BtB3VjG9iY2PZuHEjsbGxA+67bt06HnvssZE3\napiMaYH3KDN7AMgUkRlKqeNgivyzwHTgJhH5sVLqryLyW2CjFneNxr+prq4+b//u0tJSCgoK+H//\n7/+d9zgFBQVkZWWxfv36i22iZhzy1FNPsXr16gH3+973vsevf/1rioqK+n3+wIEDfPKTnwSMGgsL\nFy68qHYOhjEt8B7NX/4PozHM10TkAaVUm0v8G0VkPUbP92uBzUqpdSNoUgjAsWPHRvAt+qehoYGq\nqir+/ve/D+rO0x9pbm7mwIEDvjZj2Ixl+0fDdo/fxUAJxiEAN95446COO5jiNAsWLBhzn43nZ+I+\ndyN1bfHF8f3595KWljbgPnfccQcbN26ksLCw3+fb2tooLCxk3759vPjiiwMes6uri56eHgICzh8a\n55GfP3CivlJqXDyAZUAH8HMg3mP7ROCfwKJRsOETGF3p9EM/9OPcj0/o35F+6McFP877O1JKje0Z\nvCdKqW0i8nHgj0CSiLwCHMYIwEsEykfBjC3AJ4FSjJsNjUbzISFAGsbv5Hzo35FGc24G+ztCPvRy\njw9EZB7wY4wT0IPRbObffZkKp9FoNBrNaDPuBB5ARCKBWIze79VKqdM+Nkmj0Wg0mlFlXAq8RqPR\naDSXOuOikp1Go9FoNJoz0QKv0Wg0Gs04RAu8RqPRaDTjEC3wGo1mXCH+XBxcoxlFxk0evGbsIyKT\ngFlAJLBHKXXuOqV+jEcJ5TGDiEwAJmFkn+xQSrX72KQhIyI2jAIgFqDVx+ZoLgARCRhv5cRd2V09\no/nb0lH04wwRsSilen1tx1ARkRzgbYyywvOBgxhd/+73qWFDQETCgQ6lVM9YEnnXuX8Z6AIuA94E\nvq6UOuJTw4aAiMwCngRSgWLgOaXUJt9adfEQkQzgJiAJ2AYcUErV+taqi4eITAGWYtxk/k0pdWAs\n/YYGQkQygZeA3wLPK6VG5QZUu+jHESIyE3hKRN4Ske+6WuP6PSISBTyP8QNYiXGRfh1YJiKbfWnb\nYHGd+z8BHxeRIKWUGguuYteFZwvwZ+AWYCaGyH/el3YNBRHJBv4BnAA2AlbgFhGxjIXPYCBEZDaw\nB/gYhgj+BdggIuOit63rBnMbcC/wOWCXiKwaK7+hQfIpYB5wO0YbcxuM/HKSFvhxgusitwMQ4Dgw\nBXhZRB7wqWGDIxoIBV5RSrUopSqBnwDfATJE5GWfWjcAIpIGvAosB76E0b3Q70VeREKBhzCaNa0H\nTimjG+PjwEoRsfqz/QAiEgZ8F/idUurLSqkfAa8AURhLPTEe+/r1WPrD9Rl9D3gBuFopdQWwBojD\naK51iy/tu1BEJB3YjPGZXYtxc/kz4CciEjteZvAY1+YXgRLgEWCtiASO9Pi0wI8DRCQEo5veRqXU\nF5VSDwDfxKjlvUFEzt9P0/c0Y8SDLHZvUEq1AZswLt5ZIvIFH9l2XkQkELgNKATyAAfGD3gsiLwF\nCAbeV0p1eSzt1GCsxQf7zLLB0w2kAPUe22YCOcB+4HX393+MikUXkAzUuT8fpdRbwDqMOIO7RCTP\nh/YNGxEJAu7G8E6sV0q1KqU6MG44g3xq3MgwWSn1WWA38F/AGhF5QURGzFumBX58oIBMXA11XHeG\nZcA7GK7XdSJyhw/tGwgnhot1hctdB4Drx/4njBuVq31i2cD0AluBF1z9Dm4AGvhQ5IP9VeRdN1Hf\nVEr9Doz4DddTNYAdaHOLoohk+cTI8+A6pyEYcRt5InKXiHwXuA94AvgK8AbwHyJys+8sHR4iEoCx\n3FCDMWM3PyOl1C7ghxjLWWtcz/ndd+x8KKW6gXyg2Cvw7CCGRy/Z4zs51nkP6BaRUKXUp4CdwK+B\nG4FjMDKfnxb48UEgUAGkikiCK8grHfg3DIF8DsMlFOKPFwGlVCfGxWou8C0RmebxXDvGj2O6yx3r\nV7gE8JBS6o+uv7uBm/lQ5G9wu+L8MSZCKVUNZtSyewYfgOHeDnM99wTwU1eshF/gDsByBSv9BmMm\nfx3GOvW9SqmNSqlXMeI6OoBp5z6af6KU6nN9//8KfFFErlVK9bqEH6XUdoz22Pe6fvdjzkOhlHpe\nKfUNr80BQB/Q5/5Oish8VxDrmMN1ze3DaF1+hWuz23vWAEwVkfCR+Px0mtw4QCnlEJG/AfdjuLML\ngP/AcNm/LCI9wC+BcNes2K9wicsR1yzrHSBARH6hlNrm2iUL4wamx2dGngfPrAVXFoNTRNYAr2GI\nfKCILAdWi8het6j6E14pScEYjZp6ROTbwNeARUqpZp8Y54FXpoJFKdWrlHpLRP6B4cnaCXjOBmuB\nagwvkd+nMMqZ6Yo7lVJtSqlfiNEl80+u4LMdHi8pxvBwjYnMGTlHOqb7c3HN2IMxfuttrue+j3E9\nm+He5q/0Nz7X961bRHYAHSLyNLACQ+wfBH4EKBF58aJ/N70bxOvH2HrgSnV0/f/TGG6fPwL3eWxf\ng+H2svnaXm+bPbZZXP+6U+T2A4cwRLIZmONru4cwvkDXvyHAW0AnxoVpnh/Ydta572efPIx1wv/G\nmP3O97XdLrtmus7nWiDI63sjGG7dt4GHMdatQzCCByuAdF/bP4jx5WC4rP+JMeP7K5Djei4BI9DO\nAXwGox22BcPz9U8g2tf2D3N8s72/l0A8UOka43dcv52Fvrb/Qsbnen69a3s1sMBj+/8A00bEJl+f\nFP24CB8iBHj9bfH6+2nXhc9nAg/YMGaFkefZx32xnoKRsvVzjNljlq/PsZedgxFJ91h+ibGePcuf\nz73X/otcFyK7P9yUuGxKw1ir7MKISP6Yh8h7isP9GDeEx4D3MeJS5vra/kGMLxOocolAOsZstRz4\nicc+7oh6O0bcwV7g9Bgf34Z+9o1yCeVmjJtjv7jBvNDxAbmua/Fc19+WEbfL1ydGP4bwYQ3xC4GR\nd/lLoAm4zId2Z2PkWh/AuDP/pGu754U5wHubPz2GKpKu13zJJZQ+uwAP5dx7/J2GEdmc7evz7rIn\nECNg7nWMOI2/Afu8RD7QY/8bMW4Mv8jYmLmHYszifoPhnnbfHH4BOOJ63vPzugIjc+MTQJqv7b8I\n47O6x4ex/p7m+t20MQY8d4MYX4jHvuGjaZtegx8jiMh0jKjsF9Ug1nBdhRQmYNxZXqWUOjzSNp7D\njmxgO/B7jIvyfOA5ETmqlPqnez/14RrwahHZqZSqG31r+8c1hg0YbtIJIvI1pdT/eq7nSv+lNV8G\n3lRKnRhlk3HZNKRz7woC3KOUKhWRjygj+NEfcGcqlCmlDorIDRjuz0cA3SLfLAAADDhJREFURGSz\nUqrLFczYo5TajDH7Gyu41523K6W6PLa70xUD4cPvmDIi6McSA40vGMMz4/4ulorIN4HNSql/jbax\nw2Cg8QWJSLcy4kXccQWjEwvi67sf/Rj4AWRguOX6MPLC4/vZp791bSujfMfo9f6xGLPHn3pt3wY8\n5W03xsyrHKPQSsBo2TnAGLIx3KA/xpgx/QjjYnT5OfZfDST4gd3DPfdPYFyw/MqTwtnLTqF8OJO/\nhQ/jHm72ta3DHF+S91gxYiH+5fU5zfS1rSM8Pr/wGo3g+EZ1uVGnyfk5rpn4NzDyee/DCCD6mojE\ne+6nXN8eEfmqiDzq2tapXHeMPiIIo0rdn1y2ub9vJRgCZNrt+v9mjJS+3yo/aDQhIrEYM/f/VUr9\nl1LqRaXUQxhrwJ9z7SMe+9+Iscb2gMdYfcVwz/2zyphp+FWkueonUwEjeNSdjniLiPwS+IWIJPnI\nzGGjBp+u+BN/SlccLHp8vkk31S56/6cPI6LcroyUt3rgDwAi8gOl1Gn3ji5Bmg+kicjPlVINPrHY\nhVKqVkQ+pZQqcm2yYIynEqNAh4mIRCulmpRSj462nefhLJF03XicUyRFZCFG2VSf3qCMg3N/TpSR\nCx6olGp3LSu8hhFh3g0sVX6YhjhY1BhJVxwuenyjOz4t8H6OMnKqNyqlHK6/X3HNGl/CmEA+qZSy\nu/JH+zACi6y+Fnc3boFxiWO3a7MAie59ROQbQKeIPKWU8ptc97EukmPx3Ls8DeI1Yz8rvkF9mAff\nISIlGBHKS5VSR0fZ5CEx2PG56ACKMJas7gOuUErtHx1Lh4ce3xn4fHxa4McAbnF3i7hrJi8YzQuU\niPwE+CpG9Om/+4u4e6KU6vMKLHEHdn0H+BZGpLnPBcabsSiS3oyVc+8KCnwEmCgiRRhBVn912X9W\nG2TXTP5LGNHK88eAuA9pfBgu3lyMGJzFSqkDo2zykNDj87/x+XqdUDME1IdlGwOUUn/AKPjxZYwI\n4y8B31H+E/ncH+716h6gXES+guG2WqCUOuQ7swbGLZIemzxF8gngHX8QyfPg1+deRGYAH2B4SfZi\n5OI/JiIbwBTz/prfvAxkKqMPgN8yzPFVYwQRfmQMiJ8enx+Oz517qBlDuIVGKaVE5B3gcoxWkmMh\npQRXCsx6oAVYoZTa52OTBoXbFScijwFJfOh+8/vZhxt/PPeu7/PjQIZS6nbXtgiMojW3YaTufcFj\n/9UYZVzr+zuevzHM8e1RStWIiNXPb9r1+Px4fHoGPwZxuVoDROTHwDJg2VgRdxdbXP8u9geBGSwe\n62zdwF0Y7u0lY0XcXfjduXd9n5MxmnG4t7UCTwH/C8wTkYcBxMiB95dMhUExzPHd51qS6zr7iP6F\nHp//jm9M/EA05+QoRilRnxSxGS4uYYlQSuX72pZh4nciOVj87dx7LHscACwuVyhgXkSfxehN4G69\n+1fgt/hJKuVAXMD4/DJd0Rs9Pv8en3bRj2G8Aqc0o4iI2NzBj5oLR4wWwbsw6j08oJRqc3+/RWQy\nRu311crI1x9z6PHp8fkCPYMfw2hx9x1a3C8uyijn+2/AJ4EnRSTe4/vdDRzGqOY4JtHj0+PzBTpN\nTqPR+AVKqW0i8nGMdsdJIvIKxoXzMxhpieW+tO9C0ePT4xtttIteo9H4FSIyD6P2fxpGWl8vRn0H\nv06FGyx6fGObsTQ+LfAajcbvEJFIjHLAEUC18ijJPB7Q4xvbjJXxaYHXaDQajWYcooPsNBqNRqMZ\nh2iB12g0Go1mHKIFXqPRaDSacYgWeI1Go9FoxiFa4DUajUajGYdogddoNBqNZhyiBV6j0Wg0mnGI\nFniNRqPRaMYhWuA1Go1GoxmHaIHXaDQajWYcogVeo9FoNJpxiBZ4jUaj0WjGIVrgNRqNRqMZh2iB\n12g0Go1mHKIFXqPRaDSacYgWeI1Go9FoxiFa4DUajUajGYdogddoNBqNZhyiBV6j0Wg0mnGIFniN\nRqPRaMYhWuA1Go1GoxmHaIHXaDQajWYcogVeo9FoNJpxiBZ4jUaj0WjGIVrgNRqNRqMZh2iB14w4\nIlIiIvdf4DGeE5FXL4ItfSKy+kKPo9FoNP6OFnjNWOF+4LO+NmIoiMh0EdkqIjUi4hSREyKyXkQC\nfW2bRjPaiEisiLwpIpUi0iEip0TkZyIS4Wvbxiv6QqMZEyilWn1twzDoBjYCB4AmYA7wG0CAb/nQ\nLo3mnIhIoFKqZwQO3Qe8BnwTqAcygF8AMcCnRuD9Lnn0DF5zwYjINted+M9EpElE6kXkO1672UTk\nWRFpEZEyEbnL6xizReQdEWkXkdMi8oyI2DyeP8NF73rPn4rI90XELiLVIrLO65gZIrLdNXs+IiIr\n+rF9koi8LCKNrvd9TURSXc9ZXa97xmP/aa4x3DHQeVFKlSilNiql/qWUKldKbQb+F/jIQK/VaAbL\nQL8FEZksIq+LSKuINLu+74kez68TkYMi8nkROQl0eBz3KRHZICINLk/U50UkTER+6/odFInIRwdj\np1KqSSn1jFLqgOv3sA1D4PXvYYTQAq+5WHwGY8aai+FO/y8R+bzH8/8F7AUux/hR/1JEpgOISCjw\nFmAH5gO3ASuAnw3iPduAhcDXgEdF5BrXMQX4C8bFKhf4T+D7gHK/2OUq3wI0A1e6Hq3AW65ZTCfw\nSeAOEVktIgHA88AWpdTGoZ4gEckAPgq8O9TXajQDcM7fAvA6EI0hpCuAacAfvF6fAXwMuAXjN+p5\n3HqM39BTwP8AfwR2AHOBvwG/F5GQoRosIsmu93x3qK/VDBKllH7oxwU9gG3AEa9t33NvA0qA33k9\nXwPc7fr/XcBpIMTj+VVAD5Dg+vs54FWv93zP65i7ge+6/n8t0AlM8Hj+Ogw34WrX358C8r2OEQw4\ngBUe2x4C6jAucBVAzBDPzw7A+f/bt5/QOMowjuPfHwWrIApFDFa0eqhNFIpSqH+ookcpYi8WLYh6\n8KBVEEEsggjqzWo9GagiWEgVwYMXLxaKVFFELLUQtRXBin8jqaRIRK2Ph+ddHcfd6W7c7sLk94GB\nnffdmXlI8uT9O8BJYHrcvy8f7TqacoFs0H8DVlfqpkoebCjnT5Ad4VVN9yUHhCequQxMlHttHCDe\nvSXHOlP2Z4z7Z9jWwyN4G5YPaufvA2vLSBrgcK3+e6AzTTgJHIqIXyv175H/UNY1PPOT2vl3tXt+\nHRE/1GKqWl9iPNE5yFmEleQop+M54HNgO3BPRBxviKmbreRoZxuwWdIjA15vdiq9cmGKzINvOxUR\n8Sm5J2Sq8v2vImK+6b4R8SeZH4crZZ38Op/+PUTmw61knu0a4FobgDfZ2aj8XjsP/lkiEpWp8y7f\nG9Y96+dnAx+RDa9qdXOVzxNkR+MkcBnwdkNM/xER35SPn5Vlgd2SdkYZzpgNQa9c6JVb9fJfBrhv\nvQwGWO6NiB/JGbEjkuaBA5KerHXGbQg8grdhuaZ2fi1wtM9GbBa4sqzFd2wiG9QjS4xnFrhY0kSl\n7Lradz4G1gJzEfFl7aju2n+ZHLXcBTwjaXKJMQGsIDvW9Q6F2ekwC6yRdGGnQNLlwLmlbtxWkJ2G\nleMOpI3cwNuwXCRpZ3n3+w7gAeD5Pq+dIdcAX5F0haSbyPXuPREx13xpT/uAo+QGoPWSrgee5t+j\nlhly7f9NSZskXSLpxrIjeTWApO3A1cCdEfEquXFvbz/vskvaJuk2SZOSLpW0lVwXfa1Md5qdVhGx\nj5xmn5F0laSN5Kub+yPi4ChjkXSzpLtLjq+RtBmYBt6NiGOjjGW5cANvw7IHOAv4kNz9visiXip1\n3Ubxf5dFxCK5AW5Vuf51chr8wYbnNc4MlJmDLcCZ5Iaj3cBjte8sAjcAx4A3yBHNi+RoYkHSOnLn\n/X2VNcz7yfd2n2p6fvEH8Gh5/iHgcbLjcm/TRWYDOtUs2RbgOPAOuev9C+D2Jd6337JuFsm//QNk\nrj1LbrK7pc/rbUDyMqD9X5L2Awcj4uFxx2JmZskjeDMzsxZyA2/DsCyngSS9VX3FrnIsSNox7vjM\nRknSdEM+vDDu+JYjT9GbLZGkC8h9B93MR8TPo4zHbJwknQec06N6ISJ+GmU85gbezMyslTxFb2Zm\n1kJu4M3MzFrIDbyZmVkLuYE3MzNrITfwZmZmLeQG3szMrIXcwJuZmbXQX6a6XTg+Q35TAAAAAElF\nTkSuQmCC\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f8a391e3a90>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = bayes.corner_plot(plot_contours=True, plot_density=False)\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<table id=\"table140231644903184\">\n", "<thead><tr><th>Name</th><th>Value</th><th>Unit</th></tr></thead>\n", "<tr><td>GRB110731A.spectrum.main.composite.phoindex_3</td><td>2.05 -0.11 +0.11</td><td></td></tr>\n", "<tr><td>GRB110731A.spectrum.main.composite.norm_3</td><td>0.210 -0.017 +0.017</td><td>keV / (cm2 s)</td></tr>\n", "</table>" ], "text/plain": [ " Name Value Unit \n", "--------------------------------------------- ------------------- -------------\n", "GRB110731A.spectrum.main.composite.phoindex_3 2.05 -0.11 +0.11 \n", " GRB110731A.spectrum.main.composite.norm_3 0.210 -0.017 +0.017 keV / (cm2 s)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "OrderedDict([('GRB110731A.spectrum.main.composite.phoindex_3',\n", " {'lower bound': 1.9378758501195972,\n", " 'median': 2.0470182213962556,\n", " 'upper bound': 2.1544203775899127}),\n", " ('GRB110731A.spectrum.main.composite.norm_3',\n", " {'lower bound': 0.19310005904270033,\n", " 'median': 0.20986057245173392,\n", " 'upper bound': 0.22669524128769092})])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bayes.get_highest_density_interval()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Removing: /Users/jburgess/coding/3ML/examples/gbm/bn110731A/glg_cspec_n3_bn110731465_v00.rsp2\n", "Removing: /Users/jburgess/coding/3ML/examples/gbm/bn110731A/glg_tte_n3_bn110731465_v00.fit.gz\n", "\n", "\n" ] } ], "source": [ "cleanup_downloaded_GBM_data(gbm_data)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" }, "widgets": { "state": { "21528bc915564626a5b3ef7e539cca76": { "views": [ { "cell_index": 5 } ] }, "3e68045ba3704902a54076cc2b85178d": { "views": [ { "cell_index": 5 } ] } }, "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 0 }