diff --git a/frangiPANe/generate_stats.py b/frangiPANe/generate_stats.py
index dc4cd74e7a1b1cf95225b498601fbb131bf7192a..4bfd222febad2834ca4f1a04e7b6483852075fe3 100644
--- a/frangiPANe/generate_stats.py
+++ b/frangiPANe/generate_stats.py
@@ -11,6 +11,7 @@ import panel as pn
 
 import pandas as pd
 import seaborn as sns
+import param
 
 #todecomment for final version
 import warnings
@@ -156,8 +157,10 @@ def dashboard_group(df):
         # seaborn box plot for the chosen animal
         def box_view(self):
             data = df
-            plt.figure()  # figsize=(4, 3))
-            ax = sns.countplot(y=data['Species'], palette="hls")
+            plt.figure(figsize=(4, 3))
+            #ax = sns.countplot(y=data['Species'], palette="hls")
+            ax = sns.countplot(y=data['Species'], hue=data['Species'], palette="hls", legend=False)
+
             plt.close()
             return ax.figure
 
@@ -186,14 +189,13 @@ def dashboard_group(df):
                           pn.Row(stat, rd.box_view),  # box plot
                           rd.param,
                           pn.Row(rd.table_view, scroll=True, width=800, height=400),  # data table
-                          sizing_mode='stretch_both', background='WhiteSmoke', scroll=True
-                          )
+                          sizing_mode='stretch_both', scroll=True, styles={'background': 'WhiteSmoke'})
 
     # show the dashboard with the data embedded ,
     # (for using in an html download of the notebook so that
     # no 'callback' is required from the browser to get the data)
     dashboard.embed()
-
+    #display(dashboard)
 
 def dashboard_fastq(csv, total_size, group_file, output_dir):
 
diff --git a/frangiPANe/report/frangiPANe_report.ipynb b/frangiPANe/report/frangiPANe_report.ipynb
index 02b992aa30699010eb59eae0f64b47f2142b88b0..3cf61e309ac139860c5925068ee84b666a63069e 100644
--- a/frangiPANe/report/frangiPANe_report.ipynb
+++ b/frangiPANe/report/frangiPANe_report.ipynb
@@ -16,11 +16,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
-    "print(out_dir, ref_file, vec_file, group_file, fastq_dir) #,cpus)"
+    "#print(out_dir, ref_file, vec_file, group_file, fastq_dir) #,cpus)\n",
+    "group_file = '/home/christine/Dev-test/data_test/rice_group.txt'\n",
+    "ref_png = '/home/christine/Dev-test/rice-output/04-stats/04-plots/00_ref.png'\n",
+    "ref_csv = '/home/christine/Dev-test/rice-output/04-stats/04-summary/00_ref.txt'\n"
    ]
   },
   {
@@ -36,16 +39,742 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "application/javascript": [
+       "(function(root) {\n",
+       "  function now() {\n",
+       "    return new Date();\n",
+       "  }\n",
+       "\n",
+       "  var force = true;\n",
+       "  var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",
+       "  var reloading = false;\n",
+       "  var Bokeh = root.Bokeh;\n",
+       "\n",
+       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
+       "    root._bokeh_timeout = Date.now() + 5000;\n",
+       "    root._bokeh_failed_load = false;\n",
+       "  }\n",
+       "\n",
+       "  function run_callbacks() {\n",
+       "    try {\n",
+       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
+       "        if (callback != null)\n",
+       "          callback();\n",
+       "      });\n",
+       "    } finally {\n",
+       "      delete root._bokeh_onload_callbacks;\n",
+       "    }\n",
+       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
+       "  }\n",
+       "\n",
+       "  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
+       "    if (css_urls == null) css_urls = [];\n",
+       "    if (js_urls == null) js_urls = [];\n",
+       "    if (js_modules == null) js_modules = [];\n",
+       "    if (js_exports == null) js_exports = {};\n",
+       "\n",
+       "    root._bokeh_onload_callbacks.push(callback);\n",
+       "\n",
+       "    if (root._bokeh_is_loading > 0) {\n",
+       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
+       "      return null;\n",
+       "    }\n",
+       "    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
+       "      run_callbacks();\n",
+       "      return null;\n",
+       "    }\n",
+       "    if (!reloading) {\n",
+       "      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
+       "    }\n",
+       "\n",
+       "    function on_load() {\n",
+       "      root._bokeh_is_loading--;\n",
+       "      if (root._bokeh_is_loading === 0) {\n",
+       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
+       "        run_callbacks()\n",
+       "      }\n",
+       "    }\n",
+       "    window._bokeh_on_load = on_load\n",
+       "\n",
+       "    function on_error() {\n",
+       "      console.error(\"failed to load \" + url);\n",
+       "    }\n",
+       "\n",
+       "    var skip = [];\n",
+       "    if (window.requirejs) {\n",
+       "      window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",
+       "      require([\"jspanel\"], function(jsPanel) {\n",
+       "\twindow.jsPanel = jsPanel\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-modal\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-tooltip\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-hint\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-layout\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-contextmenu\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-dock\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"gridstack\"], function(GridStack) {\n",
+       "\twindow.GridStack = GridStack\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"notyf\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      root._bokeh_is_loading = css_urls.length + 9;\n",
+       "    } else {\n",
+       "      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
+       "    }\n",
+       "\n",
+       "    var existing_stylesheets = []\n",
+       "    var links = document.getElementsByTagName('link')\n",
+       "    for (var i = 0; i < links.length; i++) {\n",
+       "      var link = links[i]\n",
+       "      if (link.href != null) {\n",
+       "\texisting_stylesheets.push(link.href)\n",
+       "      }\n",
+       "    }\n",
+       "    for (var i = 0; i < css_urls.length; i++) {\n",
+       "      var url = css_urls[i];\n",
+       "      if (existing_stylesheets.indexOf(url) !== -1) {\n",
+       "\ton_load()\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      const element = document.createElement(\"link\");\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.rel = \"stylesheet\";\n",
+       "      element.type = \"text/css\";\n",
+       "      element.href = url;\n",
+       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
+       "      document.body.appendChild(element);\n",
+       "    }    if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    var existing_scripts = []\n",
+       "    var scripts = document.getElementsByTagName('script')\n",
+       "    for (var i = 0; i < scripts.length; i++) {\n",
+       "      var script = scripts[i]\n",
+       "      if (script.src != null) {\n",
+       "\texisting_scripts.push(script.src)\n",
+       "      }\n",
+       "    }\n",
+       "    for (var i = 0; i < js_urls.length; i++) {\n",
+       "      var url = js_urls[i];\n",
+       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.src = url;\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    for (var i = 0; i < js_modules.length; i++) {\n",
+       "      var url = js_modules[i];\n",
+       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.src = url;\n",
+       "      element.type = \"module\";\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    for (const name in js_exports) {\n",
+       "      var url = js_exports[name];\n",
+       "      if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.type = \"module\";\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      element.textContent = `\n",
+       "      import ${name} from \"${url}\"\n",
+       "      window.${name} = ${name}\n",
+       "      window._bokeh_on_load()\n",
+       "      `\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    if (!js_urls.length && !js_modules.length) {\n",
+       "      on_load()\n",
+       "    }\n",
+       "  };\n",
+       "\n",
+       "  function inject_raw_css(css) {\n",
+       "    const element = document.createElement(\"style\");\n",
+       "    element.appendChild(document.createTextNode(css));\n",
+       "    document.body.appendChild(element);\n",
+       "  }\n",
+       "\n",
+       "  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.5/dist/panel.min.js\"];\n",
+       "  var js_modules = [];\n",
+       "  var js_exports = {};\n",
+       "  var css_urls = [];\n",
+       "  var inline_js = [    function(Bokeh) {\n",
+       "      Bokeh.set_log_level(\"info\");\n",
+       "    },\n",
+       "function(Bokeh) {} // ensure no trailing comma for IE\n",
+       "  ];\n",
+       "\n",
+       "  function run_inline_js() {\n",
+       "    if ((root.Bokeh !== undefined) || (force === true)) {\n",
+       "      for (var i = 0; i < inline_js.length; i++) {\n",
+       "\ttry {\n",
+       "          inline_js[i].call(root, root.Bokeh);\n",
+       "\t} catch(e) {\n",
+       "\t  if (!reloading) {\n",
+       "\t    throw e;\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "      // Cache old bokeh versions\n",
+       "      if (Bokeh != undefined && !reloading) {\n",
+       "\tvar NewBokeh = root.Bokeh;\n",
+       "\tif (Bokeh.versions === undefined) {\n",
+       "\t  Bokeh.versions = new Map();\n",
+       "\t}\n",
+       "\tif (NewBokeh.version !== Bokeh.version) {\n",
+       "\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
+       "\t}\n",
+       "\troot.Bokeh = Bokeh;\n",
+       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
+       "      setTimeout(run_inline_js, 100);\n",
+       "    } else if (!root._bokeh_failed_load) {\n",
+       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
+       "      root._bokeh_failed_load = true;\n",
+       "    }\n",
+       "    root._bokeh_is_initializing = false\n",
+       "  }\n",
+       "\n",
+       "  function load_or_wait() {\n",
+       "    // Implement a backoff loop that tries to ensure we do not load multiple\n",
+       "    // versions of Bokeh and its dependencies at the same time.\n",
+       "    // In recent versions we use the root._bokeh_is_initializing flag\n",
+       "    // to determine whether there is an ongoing attempt to initialize\n",
+       "    // bokeh, however for backward compatibility we also try to ensure\n",
+       "    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
+       "    // before older versions are fully initialized.\n",
+       "    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
+       "      root._bokeh_is_initializing = false;\n",
+       "      root._bokeh_onload_callbacks = undefined;\n",
+       "      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
+       "      load_or_wait();\n",
+       "    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
+       "      setTimeout(load_or_wait, 100);\n",
+       "    } else {\n",
+       "      root._bokeh_is_initializing = true\n",
+       "      root._bokeh_onload_callbacks = []\n",
+       "      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
+       "      if (!reloading && !bokeh_loaded) {\n",
+       "\troot.Bokeh = undefined;\n",
+       "      }\n",
+       "      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
+       "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
+       "\trun_inline_js();\n",
+       "      });\n",
+       "    }\n",
+       "  }\n",
+       "  // Give older versions of the autoload script a head-start to ensure\n",
+       "  // they initialize before we start loading newer version.\n",
+       "  setTimeout(load_or_wait, 100)\n",
+       "}(window));"
+      ],
+      "application/vnd.holoviews_load.v0+json": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n  var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  var reloading = false;\n  var Bokeh = root.Bokeh;\n\n  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      run_callbacks();\n      return null;\n    }\n    if (!reloading) {\n      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    var skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n      require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n      })\n      require([\"jspanel-modal\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-tooltip\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-hint\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-layout\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-dock\"], function() {\n\ton_load()\n      })\n      require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n      })\n      require([\"notyf\"], function() {\n\ton_load()\n      })\n      root._bokeh_is_loading = css_urls.length + 9;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    var existing_stylesheets = []\n    var links = document.getElementsByTagName('link')\n    for (var i = 0; i < links.length; i++) {\n      var link = links[i]\n      if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n      }\n    }\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    var existing_scripts = []\n    var scripts = document.getElementsByTagName('script')\n    for (var i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n\texisting_scripts.push(script.src)\n      }\n    }\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (var i = 0; i < js_modules.length; i++) {\n      var url = js_modules[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      var url = js_exports[name];\n      if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.5/dist/panel.min.js\"];\n  var js_modules = [];\n  var js_exports = {};\n  var css_urls = [];\n  var inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n          inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t  if (!reloading) {\n\t    throw e;\n\t  }\n\t}\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t  Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));"
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": [
+       "\n",
+       "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
+       "  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
+       "}\n",
+       "\n",
+       "\n",
+       "    function JupyterCommManager() {\n",
+       "    }\n",
+       "\n",
+       "    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
+       "      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
+       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
+       "        comm_manager.register_target(comm_id, function(comm) {\n",
+       "          comm.on_msg(msg_handler);\n",
+       "        });\n",
+       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
+       "        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
+       "          comm.onMsg = msg_handler;\n",
+       "        });\n",
+       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
+       "        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
+       "          var messages = comm.messages[Symbol.asyncIterator]();\n",
+       "          function processIteratorResult(result) {\n",
+       "            var message = result.value;\n",
+       "            console.log(message)\n",
+       "            var content = {data: message.data, comm_id};\n",
+       "            var buffers = []\n",
+       "            for (var buffer of message.buffers || []) {\n",
+       "              buffers.push(new DataView(buffer))\n",
+       "            }\n",
+       "            var metadata = message.metadata || {};\n",
+       "            var msg = {content, buffers, metadata}\n",
+       "            msg_handler(msg);\n",
+       "            return messages.next().then(processIteratorResult);\n",
+       "          }\n",
+       "          return messages.next().then(processIteratorResult);\n",
+       "        })\n",
+       "      }\n",
+       "    }\n",
+       "\n",
+       "    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
+       "      if (comm_id in window.PyViz.comms) {\n",
+       "        return window.PyViz.comms[comm_id];\n",
+       "      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
+       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
+       "        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
+       "        if (msg_handler) {\n",
+       "          comm.on_msg(msg_handler);\n",
+       "        }\n",
+       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
+       "        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
+       "        comm.open();\n",
+       "        if (msg_handler) {\n",
+       "          comm.onMsg = msg_handler;\n",
+       "        }\n",
+       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
+       "        var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
+       "        comm_promise.then((comm) => {\n",
+       "          window.PyViz.comms[comm_id] = comm;\n",
+       "          if (msg_handler) {\n",
+       "            var messages = comm.messages[Symbol.asyncIterator]();\n",
+       "            function processIteratorResult(result) {\n",
+       "              var message = result.value;\n",
+       "              var content = {data: message.data};\n",
+       "              var metadata = message.metadata || {comm_id};\n",
+       "              var msg = {content, metadata}\n",
+       "              msg_handler(msg);\n",
+       "              return messages.next().then(processIteratorResult);\n",
+       "            }\n",
+       "            return messages.next().then(processIteratorResult);\n",
+       "          }\n",
+       "        }) \n",
+       "        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
+       "          return comm_promise.then((comm) => {\n",
+       "            comm.send(data, metadata, buffers, disposeOnDone);\n",
+       "          });\n",
+       "        };\n",
+       "        var comm = {\n",
+       "          send: sendClosure\n",
+       "        };\n",
+       "      }\n",
+       "      window.PyViz.comms[comm_id] = comm;\n",
+       "      return comm;\n",
+       "    }\n",
+       "    window.PyViz.comm_manager = new JupyterCommManager();\n",
+       "    \n",
+       "\n",
+       "\n",
+       "var JS_MIME_TYPE = 'application/javascript';\n",
+       "var HTML_MIME_TYPE = 'text/html';\n",
+       "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
+       "var CLASS_NAME = 'output';\n",
+       "\n",
+       "/**\n",
+       " * Render data to the DOM node\n",
+       " */\n",
+       "function render(props, node) {\n",
+       "  var div = document.createElement(\"div\");\n",
+       "  var script = document.createElement(\"script\");\n",
+       "  node.appendChild(div);\n",
+       "  node.appendChild(script);\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle when a new output is added\n",
+       " */\n",
+       "function handle_add_output(event, handle) {\n",
+       "  var output_area = handle.output_area;\n",
+       "  var output = handle.output;\n",
+       "  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
+       "    return\n",
+       "  }\n",
+       "  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
+       "  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
+       "  if (id !== undefined) {\n",
+       "    var nchildren = toinsert.length;\n",
+       "    var html_node = toinsert[nchildren-1].children[0];\n",
+       "    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
+       "    var scripts = [];\n",
+       "    var nodelist = html_node.querySelectorAll(\"script\");\n",
+       "    for (var i in nodelist) {\n",
+       "      if (nodelist.hasOwnProperty(i)) {\n",
+       "        scripts.push(nodelist[i])\n",
+       "      }\n",
+       "    }\n",
+       "\n",
+       "    scripts.forEach( function (oldScript) {\n",
+       "      var newScript = document.createElement(\"script\");\n",
+       "      var attrs = [];\n",
+       "      var nodemap = oldScript.attributes;\n",
+       "      for (var j in nodemap) {\n",
+       "        if (nodemap.hasOwnProperty(j)) {\n",
+       "          attrs.push(nodemap[j])\n",
+       "        }\n",
+       "      }\n",
+       "      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
+       "      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
+       "      oldScript.parentNode.replaceChild(newScript, oldScript);\n",
+       "    });\n",
+       "    if (JS_MIME_TYPE in output.data) {\n",
+       "      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
+       "    }\n",
+       "    output_area._hv_plot_id = id;\n",
+       "    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
+       "      window.PyViz.plot_index[id] = Bokeh.index[id];\n",
+       "    } else {\n",
+       "      window.PyViz.plot_index[id] = null;\n",
+       "    }\n",
+       "  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
+       "    var bk_div = document.createElement(\"div\");\n",
+       "    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
+       "    var script_attrs = bk_div.children[0].attributes;\n",
+       "    for (var i = 0; i < script_attrs.length; i++) {\n",
+       "      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
+       "    }\n",
+       "    // store reference to server id on output_area\n",
+       "    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
+       "  }\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle when an output is cleared or removed\n",
+       " */\n",
+       "function handle_clear_output(event, handle) {\n",
+       "  var id = handle.cell.output_area._hv_plot_id;\n",
+       "  var server_id = handle.cell.output_area._bokeh_server_id;\n",
+       "  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
+       "  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
+       "  if (server_id !== null) {\n",
+       "    comm.send({event_type: 'server_delete', 'id': server_id});\n",
+       "    return;\n",
+       "  } else if (comm !== null) {\n",
+       "    comm.send({event_type: 'delete', 'id': id});\n",
+       "  }\n",
+       "  delete PyViz.plot_index[id];\n",
+       "  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
+       "    var doc = window.Bokeh.index[id].model.document\n",
+       "    doc.clear();\n",
+       "    const i = window.Bokeh.documents.indexOf(doc);\n",
+       "    if (i > -1) {\n",
+       "      window.Bokeh.documents.splice(i, 1);\n",
+       "    }\n",
+       "  }\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle kernel restart event\n",
+       " */\n",
+       "function handle_kernel_cleanup(event, handle) {\n",
+       "  delete PyViz.comms[\"hv-extension-comm\"];\n",
+       "  window.PyViz.plot_index = {}\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle update_display_data messages\n",
+       " */\n",
+       "function handle_update_output(event, handle) {\n",
+       "  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
+       "  handle_add_output(event, handle)\n",
+       "}\n",
+       "\n",
+       "function register_renderer(events, OutputArea) {\n",
+       "  function append_mime(data, metadata, element) {\n",
+       "    // create a DOM node to render to\n",
+       "    var toinsert = this.create_output_subarea(\n",
+       "    metadata,\n",
+       "    CLASS_NAME,\n",
+       "    EXEC_MIME_TYPE\n",
+       "    );\n",
+       "    this.keyboard_manager.register_events(toinsert);\n",
+       "    // Render to node\n",
+       "    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
+       "    render(props, toinsert[0]);\n",
+       "    element.append(toinsert);\n",
+       "    return toinsert\n",
+       "  }\n",
+       "\n",
+       "  events.on('output_added.OutputArea', handle_add_output);\n",
+       "  events.on('output_updated.OutputArea', handle_update_output);\n",
+       "  events.on('clear_output.CodeCell', handle_clear_output);\n",
+       "  events.on('delete.Cell', handle_clear_output);\n",
+       "  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
+       "\n",
+       "  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
+       "    safe: true,\n",
+       "    index: 0\n",
+       "  });\n",
+       "}\n",
+       "\n",
+       "if (window.Jupyter !== undefined) {\n",
+       "  try {\n",
+       "    var events = require('base/js/events');\n",
+       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
+       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
+       "      register_renderer(events, OutputArea);\n",
+       "    }\n",
+       "  } catch(err) {\n",
+       "  }\n",
+       "}\n"
+      ],
+      "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n"
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<style>*[data-root-id],\n",
+       "*[data-root-id] > * {\n",
+       "  box-sizing: border-box;\n",
+       "  font-family: var(--jp-ui-font-family);\n",
+       "  font-size: var(--jp-ui-font-size1);\n",
+       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
+       "}\n",
+       "\n",
+       "/* Override VSCode background color */\n",
+       ".cell-output-ipywidget-background:has(\n",
+       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
+       "  ),\n",
+       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
+       "  background-color: transparent !important;\n",
+       "}\n",
+       "</style>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='38042207-4986-4afe-a2ad-ba61b64d77b0'>\n",
+       "  <div id=\"f66ef8a7-46fe-4df0-93a0-9e3ee8c70beb\" data-root-id=\"38042207-4986-4afe-a2ad-ba61b64d77b0\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"14f93f7f-57d3-4141-b340-0414ee2254a6\":{\"version\":\"3.3.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"38042207-4986-4afe-a2ad-ba61b64d77b0\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"aeb50a0c-3c25-4147-b574-a5ab864d417b\",\"attributes\":{\"plot_id\":\"38042207-4986-4afe-a2ad-ba61b64d77b0\",\"comm_id\":\"e4bedbfd5fe04f7f99e4fefd73a16273\",\"client_comm_id\":\"64ac976f1720420aab3993809ca510f7\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"14f93f7f-57d3-4141-b340-0414ee2254a6\",\"roots\":{\"38042207-4986-4afe-a2ad-ba61b64d77b0\":\"f66ef8a7-46fe-4df0-93a0-9e3ee8c70beb\"},\"root_ids\":[\"38042207-4986-4afe-a2ad-ba61b64d77b0\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ]
+     },
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "38042207-4986-4afe-a2ad-ba61b64d77b0"
+      }
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='0e3f4dd4-966b-4877-9548-dbee6873ab8d'>\n",
+       "  <div id=\"e5146c47-69dc-43e5-b9a3-d8df407b6161\" data-root-id=\"0e3f4dd4-966b-4877-9548-dbee6873ab8d\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"ae951da3-6f79-4960-a2b9-5f039293cb8f\":{\"version\":\"3.3.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"0e3f4dd4-966b-4877-9548-dbee6873ab8d\",\"attributes\":{\"name\":\"Column00126\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"78b3d088-b161-451a-9700-0f70568478ee\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_both\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"af025b01-9a68-4112-bdd5-69ca7c37f831\",\"attributes\":{\"css_classes\":[\"markdown\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"ca15d865-55fa-44b2-a7c4-4389d4aab8ff\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/markdown.css\"}},{\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\"},{\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;h1 id=&quot;reference-genome-file&quot;&gt;Reference genome file &lt;a class=&quot;header-anchor&quot; href=&quot;#reference-genome-file&quot;&gt;\\u00b6&lt;/a&gt;&lt;/h1&gt;\\n\"}},{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"09ef12df-9bf7-4331-89e0-d650ef67807a\",\"attributes\":{\"css_classes\":[\"markdown\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\"},{\"id\":\"ca15d865-55fa-44b2-a7c4-4389d4aab8ff\"},{\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\"},{\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;h2 id=&quot;genome-size-mb--400&quot;&gt;Genome size (Mb) : 400 &lt;a class=&quot;header-anchor&quot; href=&quot;#genome-size-mb--400&quot;&gt;\\u00b6&lt;/a&gt;&lt;/h2&gt;\\n\"}},{\"type\":\"object\",\"name\":\"Row\",\"id\":\"cb52d815-7935-48b5-a37f-d6c7754f4e42\",\"attributes\":{\"name\":\"Row00121\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\"},{\"id\":\"78b3d088-b161-451a-9700-0f70568478ee\"},{\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\"},{\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\"}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"d99b2aa1-9504-4c20-848f-7e6c47110a61\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\"},{\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\"},{\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\"}],\"width\":800,\"height\":600,\"min_width\":800,\"min_height\":600,\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1KElEQVR4nO3deXTU9b34/1dkCWuCoBCQRRYFEXFBi6l1aV0QvdSFnrr1iktr7Y1ekbql2iJueGtbl15E63Vtxa2KdYUilViroGK5igsVixWVxa9IENCI8Pn90Z+5pkIbQnjPZHg8zplzmJlPZl4vFcjTz8ykKMuyLAAAABLYKtcDAAAAWw4BAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyzXM9AP9n3bp18d5770X79u2jqKgo1+MAAPAPsiyLjz76KLp16xZbbeX/5TeEAMkj7733XvTo0SPXYwAA8C8sXLgwunfvnusxmiQBkkfat28fEX//D7qkpCTH0wAA8I9WrFgRPXr0qP2+jY0nQPLI5y+7KikpESAAAHnMy+UbzgvXAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESANcOWVV0ZRUVGMHj269rZPPvkkKioqolOnTtGuXbsYOXJkLFmyJHdDAgBAHhIgG+n555+PG2+8MQYPHlzn9rPPPjsefvjhuO+++6Kqqiree++9OProo3M0JQAA5CcBshFWrlwZJ5xwQtx0002x9dZb195eXV0dN998c/ziF7+Ib3zjGzFkyJC49dZb45lnnomZM2fmcGIAAMgvAmQjVFRUxOGHHx4HHXRQndtnz54da9asqXP7gAEDomfPnvHss89u8PFqampixYoVdS4AAFDImud6gKbi7rvvjhdffDGef/75L923ePHiaNmyZXTo0KHO7V26dInFixdv8DHHjx8f48aNa+xRAQAgbzkDUg8LFy6Ms846K+68885o1apVoz1uZWVlVFdX114WLlzYaI8NAAD5SIDUw+zZs2Pp0qWxxx57RPPmzaN58+ZRVVUV1113XTRv3jy6dOkSn376aSxfvrzO1y1ZsiTKyso2+LjFxcVRUlJS5wIAAIXMS7Dq4cADD4yXX365zm0nn3xyDBgwIM4///zo0aNHtGjRIqZPnx4jR46MiIh58+bF22+/HeXl5bkYGQAA8pIAqYf27dvHoEGD6tzWtm3b6NSpU+3tp556aowZMyY6duwYJSUlceaZZ0Z5eXnsvffem/z8Q869Y5MfI4XZV52Y6xEAAMhzAqSRXH311bHVVlvFyJEjo6amJoYNGxbXX399rscCAIC8IkAaaMaMGXWut2rVKiZMmBATJkzIzUAAANAEeBM6AACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyzXM9ADR1Q869I9cj/Euzrzox1yMAAESEMyD1NnHixBg8eHCUlJRESUlJlJeXx+OPP157/wEHHBBFRUV1LqeffnoOJwYAgPzjDEg9de/ePa688srYYYcdIsuyuP322+OII46IP//5z7HzzjtHRMT3vve9uOSSS2q/pk2bNrkaFwAA8pIAqacRI0bUuX755ZfHxIkTY+bMmbUB0qZNmygrK8vFeAAA0CR4CVYDrF27Nu6+++5YtWpVlJeX195+5513xjbbbBODBg2KysrKWL16dQ6nBACA/OMMyEZ4+eWXo7y8PD755JNo165dTJ48OQYOHBgREccff3z06tUrunXrFi+99FKcf/75MW/evHjggQc2+Hg1NTVRU1NTe33FihWbfQcAAMglAbIR+vfvH3PmzInq6ur47W9/G6NGjYqqqqoYOHBgnHbaabXH7bLLLtG1a9c48MAD480334y+ffuu9/HGjx8f48aNSzU+AADknJdgbYSWLVtGv379YsiQITF+/PjYdddd49prr13vsUOHDo2IiPnz52/w8SorK6O6urr2snDhws0yNwAA5AtnQDbBunXr6ryE6ovmzJkTERFdu3bd4NcXFxdHcXHx5hgNAADykgCpp8rKyhg+fHj07NkzPvroo5g0aVLMmDEjpk6dGm+++WZMmjQpDjvssOjUqVO89NJLcfbZZ8d+++0XgwcPzvXoAACQNwRIPS1dujROPPHEWLRoUZSWlsbgwYNj6tSpcfDBB8fChQvjiSeeiGuuuSZWrVoVPXr0iJEjR8ZFF12U67EBACCvCJB6uvnmmzd4X48ePaKqqirhNAAA0DQJEJIbcu4duR7hX5p91Ym5HgEAoCD5FCwAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIpnmuBwDyx5Bz78j1CPUy+6oTcz0CANBAzoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQESD1NnDgxBg8eHCUlJVFSUhLl5eXx+OOP197/ySefREVFRXTq1CnatWsXI0eOjCVLluRwYgAAyD8CpJ66d+8eV155ZcyePTteeOGF+MY3vhFHHHFEvPLKKxERcfbZZ8fDDz8c9913X1RVVcV7770XRx99dI6nBgCA/NI81wM0FSNGjKhz/fLLL4+JEyfGzJkzo3v37nHzzTfHpEmT4hvf+EZERNx6662x0047xcyZM2PvvffOxcgAAJB3nAFpgLVr18bdd98dq1ativLy8pg9e3asWbMmDjrooNpjBgwYED179oxnn312g49TU1MTK1asqHMBAIBCJkA2wssvvxzt2rWL4uLiOP3002Py5MkxcODAWLx4cbRs2TI6dOhQ5/guXbrE4sWLN/h448ePj9LS0tpLjx49NvMGAACQWwJkI/Tv3z/mzJkTs2bNih/84AcxatSoePXVVxv8eJWVlVFdXV17WbhwYSNOCwAA+cd7QDZCy5Yto1+/fhERMWTIkHj++efj2muvjWOOOSY+/fTTWL58eZ2zIEuWLImysrINPl5xcXEUFxdv7rEBACBvOAOyCdatWxc1NTUxZMiQaNGiRUyfPr32vnnz5sXbb78d5eXlOZwQAADyizMg9VRZWRnDhw+Pnj17xkcffRSTJk2KGTNmxNSpU6O0tDROPfXUGDNmTHTs2DFKSkrizDPPjPLycp+ABQAAXyBA6mnp0qVx4oknxqJFi6K0tDQGDx4cU6dOjYMPPjgiIq6++urYaqutYuTIkVFTUxPDhg2L66+/PsdTAwBAfhEg9XTzzTf/0/tbtWoVEyZMiAkTJiSaCAAAmh7vAQEAAJJxBgSgCRhy7h25HqFeZl91Yq5HACDPOQMCAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDLNcz0AAFueIefekesR6mX2VSfmegSAguMMCAAAkIwzIAAATURTOHvozCH/ijMgAABAMs6AAAXL/ykEgPzjDAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAk4+eAAMAm8jNnAOrPGZB6Gj9+fOy1117Rvn376Ny5cxx55JExb968OscccMABUVRUVOdy+umn52hiAADIPwKknqqqqqKioiJmzpwZ06ZNizVr1sQhhxwSq1atqnPc9773vVi0aFHt5ac//WmOJgYAgPzjJVj1NGXKlDrXb7vttujcuXPMnj079ttvv9rb27RpE2VlZanHAwCAJsEZkAaqrq6OiIiOHTvWuf3OO++MbbbZJgYNGhSVlZWxevXqXIwHAAB5yRmQBli3bl2MHj069tlnnxg0aFDt7ccff3z06tUrunXrFi+99FKcf/75MW/evHjggQfW+zg1NTVRU1NTe33FihWbfXYAgHzhAxy2TAKkASoqKmLu3Lnx9NNP17n9tNNOq/31LrvsEl27do0DDzww3nzzzejbt++XHmf8+PExbty4zT4vAADkCy/B2khnnHFGPPLII/Hkk09G9+7d/+mxQ4cOjYiI+fPnr/f+ysrKqK6urr0sXLiw0ecFAIB84gxIPWVZFmeeeWZMnjw5ZsyYEb179/6XXzNnzpyIiOjatet67y8uLo7i4uLGHBMAAPKaAKmnioqKmDRpUvzud7+L9u3bx+LFiyMiorS0NFq3bh1vvvlmTJo0KQ477LDo1KlTvPTSS3H22WfHfvvtF4MHD87x9AAAkB8ESD1NnDgxIv7+wwa/6NZbb42TTjopWrZsGU888URcc801sWrVqujRo0eMHDkyLrroohxMCwAA+UmA1FOWZf/0/h49ekRVVVWiaQAAoGnyJnQAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACCZgv9J6DU1NTFr1qz429/+FqtXr45tt902dt999+jdu3euRwMAgC1OwQbIn/70p7j22mvj4YcfjjVr1kRpaWm0bt06li1bFjU1NdGnT5847bTT4vTTT4/27dvnelwAANgiFORLsL75zW/GMcccE9tvv338/ve/j48++ig++OCDeOedd2L16tXxxhtvxEUXXRTTp0+PHXfcMaZNm5brkQEAYItQkGdADj/88Lj//vujRYsW672/T58+0adPnxg1alS8+uqrsWjRosQTAgDAlqkgA+T73/9+vY8dOHBgDBw4cDNOAwAAfK4gA2R9XnjhhXjttdciImKnnXaKPffcM8cTAQDAlqfgA+Sdd96J4447Lv70pz9Fhw4dIiJi+fLl8dWvfjXuvvvu6N69e24HBACALUhBvgn9i7773e/GmjVr4rXXXotly5bFsmXL4rXXXot169bFd7/73VyPBwAAW5SCPwNSVVUVzzzzTPTv37/2tv79+8cvf/nL2HfffXM4GQAAbHkK/gxIjx49Ys2aNV+6fe3atdGtW7ccTAQAAFuugg+Qq666Ks4888x44YUXam974YUX4qyzzoqf/exnOZwMAAC2PAX5Eqytt946ioqKaq+vWrUqhg4dGs2b/33dzz77LJo3bx6nnHJKHHnkkTmaEgAAtjwFGSDXXHNNrkcAAADWoyADZNSoUbkeAQDIA0POvSPXI9TL7KtOzPUIkEzBvwcEAADIHwV5BiQiolmzZvU6bu3atZt5EgAA4HMFGyBZlkWvXr1i1KhRsfvuu+d6HAAAIAo4QJ577rm4+eab49prr43evXvHKaecEieccEJsvfXWuR4NAAC2WAX7HpA999wzJk6cGIsWLYoxY8bE5MmTo3v37nHsscfGtGnTcj0eAABskQo2QD7XqlWr+M53vhPTp0+PuXPnxtKlS+PQQw+NZcuW5Xo0AADY4hTsS7C+6J133onbbrstbrvttli9enWce+65UVJSkuuxACAvNYWPrvWxtdB0FWyAfPrppzF58uS4+eab449//GMMHz48rrnmmhg+fHi9PyELAABoXAUbIF27do327dvHqFGj4vrrr4/OnTtHRMSqVavqHOdMCAAApFOwAfLhhx/Ghx9+GJdeemlcdtllX7o/y7IoKiryc0AAACChgg2QJ598MtcjAAAA/6BgA2T//ffP9QgAAMA/KMiP4f3H93k09vEAAEDDFGSA9OvXL6688spYtGjRBo/JsiymTZsWw4cPj+uuuy7hdAAAsOUqyJdgzZgxI370ox/FxRdfHLvuumvsueee0a1bt2jVqlV8+OGH8eqrr8azzz4bzZs3j8rKyvj+97+f65EBAGCLUJAB0r9//7j//vvj7bffjvvuuy/++Mc/xjPPPBMff/xxbLPNNrH77rvHTTfd5GeCAABAYgUZIJ/r2bNn/PCHP4wf/vCHuR4FAACIAn0PCAAAkJ8ECAAAkIwAAQAAkhEgAABAMgIEAABIZosIkD/+8Y/xne98J8rLy+Pdd9+NiIhf//rX8fTTT9f7McaPHx977bVXtG/fPjp37hxHHnlkzJs3r84xn3zySVRUVESnTp2iXbt2MXLkyFiyZEmj7gIAAE1ZwQfI/fffH8OGDYvWrVvHn//856ipqYmIiOrq6rjiiivq/ThVVVVRUVERM2fOjGnTpsWaNWvikEMOiVWrVtUec/bZZ8fDDz8c9913X1RVVcV7770XRx99dKPvBAAATVVB/xyQiIjLLrssbrjhhjjxxBPj7rvvrr19n332icsuu6zejzNlypQ612+77bbo3LlzzJ49O/bbb7+orq6Om2++OSZNmhTf+MY3IiLi1ltvjZ122ilmzpwZe++9d+MsBAAATVjBnwGZN29e7Lfffl+6vbS0NJYvX97gx62uro6IiI4dO0ZExOzZs2PNmjVx0EEH1R4zYMCA6NmzZzz77LPrfYyamppYsWJFnQsAABSygg+QsrKymD9//pduf/rpp6NPnz4Nesx169bF6NGjY5999olBgwZFRMTixYujZcuW0aFDhzrHdunSJRYvXrzexxk/fnyUlpbWXnr06NGgeQAAoKko+AD53ve+F2eddVbMmjUrioqK4r333os777wzzjnnnPjBD37QoMesqKiIuXPn1nlJV0NUVlZGdXV17WXhwoWb9HgAAJDvCv49IBdccEGsW7cuDjzwwFi9enXst99+UVxcHOecc06ceeaZG/14Z5xxRjzyyCPx1FNPRffu3WtvLysri08//TSWL19e5yzIkiVLoqysbL2PVVxcHMXFxRs9AwAANFUFfwakqKgoLrzwwli2bFnMnTs3Zs6cGe+//35ceumlG/U4WZbFGWecEZMnT44//OEP0bt37zr3DxkyJFq0aBHTp0+vvW3evHnx9ttvR3l5eaPsAgAATV3BnwG54447Yq+99oqddtopBg4cWHv7J598Evfee2+ceOKJ9XqcioqKmDRpUvzud7+L9u3b176vo7S0NFq3bh2lpaVx6qmnxpgxY6Jjx45RUlISZ555ZpSXl/sELAAA+P8V/BmQk046Kb7yla/E/fffX+f26urqOPnkk+v9OBMnTozq6uo44IADomvXrrWXe+65p/aYq6++Ov7t3/4tRo4cGfvtt1+UlZXFAw880Gi7AABAU1fwZ0AiIsaNGxf//u//Hi+//HJcfPHFDXqMLMv+5TGtWrWKCRMmxIQJExr0HAAAUOgK/gxIRMR3vvOd+MMf/hA33nhjfOtb34qPP/441yMBAMAWqeADpKioKCIi9t5775g1a1bMnz8/vvrVr8Zbb72V28EAAGALVPAB8sWXTvXs2TOeeeaZ2H777ePggw/O4VQAALBlKvgAGTt2bLRr1672eps2bWLy5Mlx9tlnx3777ZfDyQAAYMtT8G9CHzt27HpvHzduXOJJAACAggyQhx56KIYPHx4tWrSIhx56aIPHFRUVxYgRIxJOBgAAW7aCDJAjjzwyFi9eHJ07d44jjzxyg8cVFRXF2rVr0w0GAABbuIIMkHXr1q331wAAQG4V/JvQAQCA/FGwAfLss8/GI488Uue2O+64I3r37h2dO3eO0047LWpqanI0HQAAbJkKNkAuueSSeOWVV2qvv/zyy3HqqafGQQcdFBdccEE8/PDDMX78+BxOCAAAW56CDZA5c+bEgQceWHv97rvvjqFDh8ZNN90UY8aMieuuuy7uvffeHE4IAABbnoINkA8//DC6dOlSe72qqiqGDx9ee32vvfaKhQsX5mI0AADYYhVsgHTp0iUWLFgQERGffvppvPjii7H33nvX3v/RRx9FixYtcjUeAABskQo2QA477LC44IIL4o9//GNUVlZGmzZtYt999629/6WXXoq+ffvmcEIAANjyFOTPAYmIuPTSS+Poo4+O/fffP9q1axe33357tGzZsvb+W265JQ455JAcTggAAFuegg2QbbbZJp566qmorq6Odu3aRbNmzercf99990W7du1yNB0AAGyZCjZAPldaWrre2zt27Jh4EgAAoGDfAwIAAOQfAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQOrpqaeeihEjRkS3bt2iqKgoHnzwwTr3n3TSSVFUVFTncuihh+ZmWAAAyFMCpJ5WrVoVu+66a0yYMGGDxxx66KGxaNGi2stdd92VcEIAAMh/zXM9QFMxfPjwGD58+D89pri4OMrKyhJNBAAATY8zII1oxowZ0blz5+jfv3/84Ac/iA8++CDXIwEAQF5xBqSRHHrooXH00UdH7969480334wf/ehHMXz48Hj22WejWbNm6/2ampqaqKmpqb2+YsWKVOMCAEBOCJBGcuyxx9b+epdddonBgwdH3759Y8aMGXHggQeu92vGjx8f48aNSzUiAADknJdgbSZ9+vSJbbbZJubPn7/BYyorK6O6urr2snDhwoQTAgBAes6AbCbvvPNOfPDBB9G1a9cNHlNcXBzFxcUJpwIAgNwSIPW0cuXKOmczFixYEHPmzImOHTtGx44dY9y4cTFy5MgoKyuLN998M84777zo169fDBs2LIdTAwBAfhEg9fTCCy/E17/+9drrY8aMiYiIUaNGxcSJE+Oll16K22+/PZYvXx7dunWLQw45JC699FJnOAAA4AsESD0dcMABkWXZBu+fOnVqwmkAAKBp8iZ0AAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIPX01FNPxYgRI6Jbt25RVFQUDz74YJ37syyLn/zkJ9G1a9do3bp1HHTQQfHGG2/kZlgAAMhTAqSeVq1aFbvuumtMmDBhvff/9Kc/jeuuuy5uuOGGmDVrVrRt2zaGDRsWn3zySeJJAQAgfzXP9QBNxfDhw2P48OHrvS/LsrjmmmvioosuiiOOOCIiIu64447o0qVLPPjgg3HsscemHBUAAPKWMyCNYMGCBbF48eI46KCDam8rLS2NoUOHxrPPPrvBr6upqYkVK1bUuQAAQCETII1g8eLFERHRpUuXOrd36dKl9r71GT9+fJSWltZeevTosVnnBACAXBMgOVRZWRnV1dW1l4ULF+Z6JAAA2KwESCMoKyuLiIglS5bUuX3JkiW1961PcXFxlJSU1LkAAEAhEyCNoHfv3lFWVhbTp0+vvW3FihUxa9asKC8vz+FkAACQX3wKVj2tXLky5s+fX3t9wYIFMWfOnOjYsWP07NkzRo8eHZdddlnssMMO0bt37/jxj38c3bp1iyOPPDJ3QwMAQJ4RIPX0wgsvxNe//vXa62PGjImIiFGjRsVtt90W5513XqxatSpOO+20WL58eXzta1+LKVOmRKtWrXI1MgAA5B0BUk8HHHBAZFm2wfuLiorikksuiUsuuSThVAAA0LR4DwgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaANKKLL744ioqK6lwGDBiQ67EAACBvNM/1AIVm5513jieeeKL2evPm/hEDAMDnfHfcyJo3bx5lZWW5HgMAAPKSl2A1sjfeeCO6desWffr0iRNOOCHefvvtXI8EAAB5wxmQRjR06NC47bbbon///rFo0aIYN25c7LvvvjF37txo3779l46vqamJmpqa2usrVqxIOS4AACQnQBrR8OHDa389ePDgGDp0aPTq1SvuvffeOPXUU790/Pjx42PcuHEpRwQAgJzyEqzNqEOHDrHjjjvG/Pnz13t/ZWVlVFdX114WLlyYeEIAAEhLgGxGK1eujDfffDO6du263vuLi4ujpKSkzgUAAAqZAGlE55xzTlRVVcVbb70VzzzzTBx11FHRrFmzOO6443I9GgAA5AXvAWlE77zzThx33HHxwQcfxLbbbhtf+9rXYubMmbHtttvmejQAAMgLAqQR3X333bkeAQAA8pqXYAEAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjABpZBMmTIjtt98+WrVqFUOHDo3nnnsu1yMBAEDeECCN6J577okxY8bE2LFj48UXX4xdd901hg0bFkuXLs31aAAAkBcESCP6xS9+Ed/73vfi5JNPjoEDB8YNN9wQbdq0iVtuuSXXowEAQF5onusBCsWnn34as2fPjsrKytrbttpqqzjooIPi2WefXe/X1NTURE1NTe316urqiIhYsWJFnePW1ny8GSZufP8494Y0hX3qu0tEYe3TFHaJKKx9CmmXCPvkM3+u5bdC2qfQ/1v7/HqWZbkYpyAUZf7pNYr33nsvtttuu3jmmWeivLy89vbzzjsvqqqqYtasWV/6mosvvjjGjRuXckwAABrBwoULo3v37rkeo0lyBiSHKisrY8yYMbXX161bF8uWLYtOnTpFUVHRZnveFStWRI8ePWLhwoVRUlKy2Z4nlULap5B2ibBPPiukXSIKa59C2iXCPvmukPZJtUuWZfHRRx9Ft27dNttzFDoB0ki22WabaNasWSxZsqTO7UuWLImysrL1fk1xcXEUFxfXua1Dhw6ba8QvKSkpafJ/2HxRIe1TSLtE2CefFdIuEYW1TyHtEmGffFdI+6TYpbS0dLM+fqHzJvRG0rJlyxgyZEhMnz699rZ169bF9OnT67wkCwAAtmTOgDSiMWPGxKhRo2LPPfeMr3zlK3HNNdfEqlWr4uSTT871aAAAkBcESCM65phj4v3334+f/OQnsXjx4thtt91iypQp0aVLl1yPVkdxcXGMHTv2Sy//aqoKaZ9C2iXCPvmskHaJKKx9CmmXCPvku0Lap5B2KXQ+BQsAAEjGe0AAAIBkBAgAAJCMAAEAAJIRIAWmqKgoHnzwwVyP0SgKaZcI++SzQtolwj75rJB2ibBPPiukXSIKb58tnQBpYhYvXhxnnnlm9OnTJ4qLi6NHjx4xYsSIOj9/pKFmzJgRe+yxRxQXF0e/fv3itttuq3P/U089FSNGjIhu3bo1yh8Eudxl/Pjxsddee0X79u2jc+fOceSRR8a8efM26Tlzuc/EiRNj8ODBtT98qby8PB5//PFNes5c7vNFV155ZRQVFcXo0aMb/Hy53OXiiy+OoqKiOpcBAwZs0nPm+t/Nu+++G9/5zneiU6dO0bp169hll13ihRdeaPBz5nKf7bff/kv/foqKiqKioqLJ7bJ27dr48Y9/HL17947WrVtH375949JLL41N+ayZXO7z0UcfxejRo6NXr17RunXr+OpXvxrPP//8Jj3n5tpn0aJFcfzxx8eOO+4YW2211Qb/vLrvvvtiwIAB0apVq9hll13isccea/Bz5nKXV155JUaOHFn7++eaa67ZpOeMyO0+N910U+y7776x9dZbx9Zbbx0HHXRQPPfcc5v0vPwLGU3GggULsm7dumUDBw7Mfvvb32bz5s3L5s6dm/385z/P+vfvn2VZlkVENnny5Ho/5rp167I1a9Zkf/3rX7M2bdpkY8aMyV599dXsl7/8ZdasWbNsypQptcc+9thj2YUXXpg98MADG/08+bbLsGHDsltvvTWbO3duNmfOnOywww7Levbsma1cubJJ7vPQQw9ljz76aPaXv/wlmzdvXvajH/0oa9GiRTZ37twmuc/nnnvuuWz77bfPBg8enJ111llNcpexY8dmO++8c7Zo0aLay/vvv9+gXfJhn2XLlmW9evXKTjrppGzWrFnZX//612zq1KnZ/Pnzm+Q+S5curfPvZtq0aVlEZE8++WST2+Xyyy/POnXqlD3yyCPZggULsvvuuy9r165ddu211270Lvmwz7e//e1s4MCBWVVVVfbGG29kY8eOzUpKSrJ33nkn7/ZZsGBB9p//+Z/Z7bffnu22227r/fPqT3/6U9asWbPspz/9afbqq69mF110UdaiRYvs5ZdfbnK7PPfcc9k555yT3XXXXVlZWVl29dVXb/QO+bTP8ccfn02YMCH785//nL322mvZSSedlJWWljb4vzX+NQHShAwfPjzbbrvt1vtN8ocffphl2d9/g950003ZkUcembVu3Trr169f9rvf/a72uCeffDKLiOyxxx7L9thjj6xFixbZk08+mZ133nnZzjvvXOcxjznmmGzYsGHrnWVTAySfdsmyv38TEhFZVVVVQeyTZVm29dZbZ//zP//TZPf56KOPsh122CGbNm1atv/++zc4QHK9y9ixY7Ndd921QbPn4z7nn39+9rWvfa1g9vlHZ511Vta3b99s3bp1TW6Xww8/PDvllFPqHHP00UdnJ5xwwkbvkut9Vq9enTVr1ix75JFH6hyzxx57ZBdeeGHe7fNFG/rz6tvf/nZ2+OGH17lt6NCh2fe///0mt8sX9erVa5MDJJ/2ybIs++yzz7L27dtnt99++6asxT8hQJqIDz74ICsqKsquuOKKf3pcRGTdu3fPJk2alL3xxhvZf/7nf2bt2rXLPvjggyzL/u836ODBg7Pf//732fz587MPPvgg23fffb/0m/KWW27JSkpKNvg8DQ2QfNsly7LsjTfeyCKiQf8nKt/2+eyzz7K77rora9myZfbKK6802X1OPPHEbPTo0VmW1f8vjXzcZezYsVmbNm2yrl27Zr17986OP/747G9/+9tG75Iv++y0007Z6NGjs29961vZtttum+22227Zr371qya7zxfV1NRknTp1yi6//PImucvll1+e9erVK5s3b16WZVk2Z86crHPnztlvfvObJrfPihUrsojInnjiiTrH7LPPPtn++++fd/t80Yb+vOrRo8eXvlH/yU9+kg0ePLjJ7fJFmxog+bZPlv39v79WrVplDz/8cIP34p8TIE3ErFmzsojIHnjggX96XERkF110Ue31lStXZhGRPf7441mW/d9v0AcffLDO1+2www5f+s3/6KOPZhGRrV69er3P09AAybdd1q5dmx1++OHZPvvs06T3eemll7K2bdtmzZo1y0pLS7NHH320ye5z1113ZYMGDco+/vjjLMsaHiD5sMtjjz2W3Xvvvdn//u//ZlOmTMnKy8uznj17ZitWrGiS+xQXF2fFxcVZZWVl9uKLL2Y33nhj1qpVq+y2225rkvt80T333JM1a9Yse/fdd5vkLmvXrs3OP//8rKioKGvevHm9vqnL533Ky8uz/fffP3v33Xezzz77LPv1r3+dbbXVVtmOO+6Yd/t80Yb+vGrRokU2adKkOrdNmDAh69y580Zskh+7fNGmBki+7ZNlWfaDH/wg69OnT+3fQTS+5kGTkG3EmwgHDx5c++u2bdtGSUlJLF26tM4xe+65Z6PNtrHybZeKioqYO3duPP300w36+nzZp3///jFnzpyorq6O3/72tzFq1KioqqqKgQMHbtTj5HqfhQsXxllnnRXTpk2LVq1abdTX/qNc7xIRMXz48DrPMXTo0OjVq1fce++9ceqpp27UY+XDPuvWrYs999wzrrjiioiI2H333WPu3Llxww03xKhRozbqsfJhny+6+eabY/jw4dGtW7eN/tp82OXee++NO++8MyZNmhQ777xzzJkzJ0aPHh3dunVrkv9ufv3rX8cpp5wS2223XTRr1iz22GOPOO6442L27Nkb/Vj5sE9jKaRdIvJvnyuvvDLuvvvumDFjxib/HcSGCZAmYocddoiioqJ4/fXX/+WxLVq0qHO9qKgo1q1bV+e2tm3b1rleVlYWS5YsqXPbkiVLoqSkJFq3bt3Aqdcvn3Y544wz4pFHHomnnnoqunfvvjFr1MqXfVq2bBn9+vWLiIghQ4bE888/H9dee23ceOONTWqf2bNnx9KlS2OPPfaovX/t2rXx1FNPxX//939HTU1NNGvWrEnssj4dOnSIHXfcMebPn1+fFerIh326du36pajdaaed4v7776/3Hp/Lh30+97e//S2eeOKJeOCBBzZmhVr5sMu5554bF1xwQRx77LEREbHLLrvE3/72txg/fvxGB0g+7NO3b9+oqqqKVatWxYoVK6Jr165xzDHHRJ8+fTZqlxT71MeGdi4rK9uox8mHXRpTPu3zs5/9LK688sp44okn6sQOjc/H8DYRHTt2jGHDhsWECRNi1apVX7p/+fLlm/T45eXlX/qou2nTpkV5efkmPe765MMuWZbFGWecEZMnT44//OEP0bt37wY/Xz7ssz7r1q2LmpqajX6+XO9z4IEHxssvvxxz5sypvey5555xwgknxJw5c+odH/mwy/qsXLky3nzzzejatetGP18+7LPPPvt86SOr//KXv0SvXr02+vnyYZ/P3XrrrdG5c+c4/PDDG/Rc+bDL6tWrY6ut6v613qxZsy99g1Yf+bDP59q2bRtdu3aNDz/8MKZOnRpHHHHERj/f5t6nPhrr79l82KUx5cs+P/3pT+PSSy+NKVOm5Pys0JZAgDQhEyZMiLVr18ZXvvKVuP/+++ONN96I1157La677rpNDoXTTz89/vrXv8Z5550Xr7/+elx//fVx7733xtlnn117zMqVK2u/IYyIWLBgQcyZMyfefvvtJrdLRUVF/OY3v4lJkyZF+/btY/HixbF48eL4+OOPG/Scud6nsrIynnrqqXjrrbfi5ZdfjsrKypgxY0accMIJTW6f9u3bx6BBg+pc2rZtG506dYpBgwY1qV0iIs4555yoqqqKt956K5555pk46qijolmzZnHcccc16Dlzvc/ZZ58dM2fOjCuuuCLmz58fkyZNil/96lcN/rkZud4n4u+xfuutt8aoUaOiefOGvzAg17uMGDEiLr/88nj00UfjrbfeismTJ8cvfvGLOOqoo5rkPlOnTo0pU6bEggULYtq0afH1r389BgwYECeffHLe7RMRtX8/rly5Mt5///2YM2dOvPrqq7X3n3XWWTFlypT4+c9/Hq+//npcfPHF8cILL8QZZ5zR5Hb59NNPa4/59NNP49133405c+Y06MxuPuzzX//1X/HjH/84brnllth+++1rvydYuXLlJj83G5CTd57QYO+9915WUVGR9erVK2vZsmW23XbbZd/85jdrP2ou1vPm8NLS0uzWW2/Nsuz/3qT1+cfafdGTTz6Z7bbbblnLli2zPn361H7NF++PiC9dRo0a1eR2Wd8eEfGl45rKPqecckrt82677bbZgQcemP3+979v8C653ucfbcrH8OZ6l2OOOSbr2rVr7fMec8wxDf6ZGfmwT5Zl2cMPP5wNGjQoKy4uzgYMGNDgT8HKl32mTp2aRUTtp0c11V1WrFiRnXXWWVnPnj2zVq1aZX369MkuvPDCrKampknuc88992R9+vTJWrZsmZWVlWUVFRXZ8uXLG7zL5t5nfX+n9OrVq84x9957b7bjjjtmLVu2zHbeeecGf1hIrndZsGDBeo9pyCeU5cM+vXr1Wu8xY8eObfA+/HNFWbYR7/4BAADYBF6CBQAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAA2m6KionjwwQdzPQYAeUSAANBgixcvjjPPPDP69OkTxcXF0aNHjxgxYkRMnz4916MBkKea53oAAJqmt956K/bZZ5/o0KFDXHXVVbHLLrvEmjVrYurUqVFRURGvv/76Rj9mlmWxdu3aaN7cX08AhcoZEAAa5D/+4z+iqKgonnvuuRg5cmTsuOOOsfPOO8eYMWNi5syZtcf9v//3/+Koo46KNm3axA477BAPPfRQ7X0zZsyIoqKiePzxx2PIkCFRXFwcTz/9dC7WASARAQLARlu2bFlMmTIlKioqom3btl+6v0OHDrW/HjduXHz729+Ol156KQ477LA44YQTYtmyZXWOv+CCC+LKK6+M1157LQYPHry5xwcghwQIABtt/vz5kWVZDBgw4F8ee9JJJ8Vxxx0X/fr1iyuuuCJWrlwZzz33XJ1jLrnkkjj44IOjb9++0bFjx801NgB5QIAAsNGyLKv3sV88o9G2bdsoKSmJpUuX1jlmzz33bLTZAMhvAgSAjbbDDjtEUVFRvd5o3qJFizrXi4qKYt26dXVuW9/LuAAoTAIEgI3WsWPHGDZsWEyYMCFWrVr1pfuXL1+efigAmgQBAkCDTJgwIdauXRtf+cpX4v7774833ngjXnvttbjuuuuivLw81+MBkKd80DoADdKnT5948cUX4/LLL48f/vCHsWjRoth2221jyJAhMXHixFyPB0CeKso25p2EAAAAm8BLsAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGT+P7rOPFGeva32AAAAAElFTkSuQmCC&quot;  style=&quot;max-width: 100%; max-height: 100%; object-fit: contain; width: 800px; height: 600px;&quot;&gt;&lt;/img&gt;\"}},{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"3b64b0f7-45e9-4b75-8692-387e1744c2fe\",\"attributes\":{\"styles\":{\"type\":\"map\",\"entries\":[[\"background\",\"WhiteSmoke\"]]},\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"013f8ae2-7e2c-4849-99a6-892b15385520\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"4ec3d8b7-aef4-471c-88be-dc6df590d689\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/dataframe.css\"}},{\"id\":\"3d015457-647e-48f2-b586-2272bbdbb7f7\"},{\"id\":\"7654205e-ca28-4b5f-bc47-f88597e3d10c\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;table class=&quot;dataframe panel-df&quot;&gt;\\n  &lt;thead&gt;\\n    &lt;tr style=&quot;text-align: right;&quot;&gt;\\n      &lt;th&gt;&lt;/th&gt;\\n      &lt;th&gt;chr&lt;/th&gt;\\n      &lt;th&gt;start&lt;/th&gt;\\n      &lt;th&gt;size&lt;/th&gt;\\n      &lt;th&gt;id&lt;/th&gt;\\n      &lt;th&gt;type&lt;/th&gt;\\n    &lt;/tr&gt;\\n  &lt;/thead&gt;\\n  &lt;tbody&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;0&lt;/th&gt;\\n      &lt;td&gt;Chr01&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;39656874&lt;/td&gt;\\n      &lt;td&gt;Chr01&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;1&lt;/th&gt;\\n      &lt;td&gt;Chr02&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;34451705&lt;/td&gt;\\n      &lt;td&gt;Chr02&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;2&lt;/th&gt;\\n      &lt;td&gt;Chr03&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;35526803&lt;/td&gt;\\n      &lt;td&gt;Chr03&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;3&lt;/th&gt;\\n      &lt;td&gt;Chr04&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;31572833&lt;/td&gt;\\n      &lt;td&gt;Chr04&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;4&lt;/th&gt;\\n      &lt;td&gt;Chr05&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;26274044&lt;/td&gt;\\n      &lt;td&gt;Chr05&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;5&lt;/th&gt;\\n      &lt;td&gt;Chr06&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;29275207&lt;/td&gt;\\n      &lt;td&gt;Chr06&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;6&lt;/th&gt;\\n      &lt;td&gt;Chr07&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;26599613&lt;/td&gt;\\n      &lt;td&gt;Chr07&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;7&lt;/th&gt;\\n      &lt;td&gt;Chr08&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;25472746&lt;/td&gt;\\n      &lt;td&gt;Chr08&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;8&lt;/th&gt;\\n      &lt;td&gt;Chr09&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;21796210&lt;/td&gt;\\n      &lt;td&gt;Chr09&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;9&lt;/th&gt;\\n      &lt;td&gt;Chr10&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;22418183&lt;/td&gt;\\n      &lt;td&gt;Chr10&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;10&lt;/th&gt;\\n      &lt;td&gt;Chr11&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;26393633&lt;/td&gt;\\n      &lt;td&gt;Chr11&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;11&lt;/th&gt;\\n      &lt;td&gt;Chr12&lt;/td&gt;\\n      &lt;td&gt;0&lt;/td&gt;\\n      &lt;td&gt;25020142&lt;/td&gt;\\n      &lt;td&gt;Chr12&lt;/td&gt;\\n      &lt;td&gt;gvar&lt;/td&gt;\\n    &lt;/tr&gt;\\n  &lt;/tbody&gt;\\n&lt;/table&gt;\",\"disable_math\":true}}]}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"f340f601-3500-4dde-bd47-1e4bd18dd1ba\",\"attributes\":{\"plot_id\":\"0e3f4dd4-966b-4877-9548-dbee6873ab8d\",\"comm_id\":\"26ba2093a0c64e9cbd8f7a62f255727d\",\"client_comm_id\":\"379e3cbb93e6486e99f566d00a913d85\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"ae951da3-6f79-4960-a2b9-5f039293cb8f\",\"roots\":{\"0e3f4dd4-966b-4877-9548-dbee6873ab8d\":\"e5146c47-69dc-43e5-b9a3-d8df407b6161\"},\"root_ids\":[\"0e3f4dd4-966b-4877-9548-dbee6873ab8d\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       "Column(sizing_mode='stretch_both')\n",
+       "    [0] Markdown(str)\n",
+       "    [1] Markdown(str)\n",
+       "    [2] Row\n",
+       "        [0] PNG(str)\n",
+       "        [1] DataFrame(DataFrame, styles={'background': '...})"
+      ]
+     },
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "0e3f4dd4-966b-4877-9548-dbee6873ab8d"
+      }
+     },
+     "output_type": "display_data"
+    }
+   ],
    "source": [
-    "#from pathlib import Path\n",
-    "import sys\n",
-    "\n",
-    "sys.path.append(\"/home/christine/Documents/Dev/frangiPANe_snake/workflow\")\n",
-    "from scripts import generate_stats as gs\n",
-    "gs.dashboard_genome2(\"400\",png,csv)"
+    "from frangiPANe import generate_stats as gs\n",
+    "from frangiPANe.snakemake_scripts import frangiPANe\n",
+    "gs.dashboard_genome2(\"400\",ref_png,ref_csv)"
    ]
   },
   {
@@ -57,28 +786,749 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
-     "ename": "NameError",
-     "evalue": "name 'read_group_file' is not defined",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-1-e7c314ec7bb8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# Reading group file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mid_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_group\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mread_group_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup_file\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlogger\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;31m# Group file dashboard\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mdashboard_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_group\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mNameError\u001b[0m: name 'read_group_file' is not defined"
-     ]
+     "data": {
+      "application/javascript": [
+       "(function(root) {\n",
+       "  function now() {\n",
+       "    return new Date();\n",
+       "  }\n",
+       "\n",
+       "  var force = true;\n",
+       "  var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",
+       "  var reloading = false;\n",
+       "  var Bokeh = root.Bokeh;\n",
+       "\n",
+       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
+       "    root._bokeh_timeout = Date.now() + 5000;\n",
+       "    root._bokeh_failed_load = false;\n",
+       "  }\n",
+       "\n",
+       "  function run_callbacks() {\n",
+       "    try {\n",
+       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
+       "        if (callback != null)\n",
+       "          callback();\n",
+       "      });\n",
+       "    } finally {\n",
+       "      delete root._bokeh_onload_callbacks;\n",
+       "    }\n",
+       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
+       "  }\n",
+       "\n",
+       "  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
+       "    if (css_urls == null) css_urls = [];\n",
+       "    if (js_urls == null) js_urls = [];\n",
+       "    if (js_modules == null) js_modules = [];\n",
+       "    if (js_exports == null) js_exports = {};\n",
+       "\n",
+       "    root._bokeh_onload_callbacks.push(callback);\n",
+       "\n",
+       "    if (root._bokeh_is_loading > 0) {\n",
+       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
+       "      return null;\n",
+       "    }\n",
+       "    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
+       "      run_callbacks();\n",
+       "      return null;\n",
+       "    }\n",
+       "    if (!reloading) {\n",
+       "      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
+       "    }\n",
+       "\n",
+       "    function on_load() {\n",
+       "      root._bokeh_is_loading--;\n",
+       "      if (root._bokeh_is_loading === 0) {\n",
+       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
+       "        run_callbacks()\n",
+       "      }\n",
+       "    }\n",
+       "    window._bokeh_on_load = on_load\n",
+       "\n",
+       "    function on_error() {\n",
+       "      console.error(\"failed to load \" + url);\n",
+       "    }\n",
+       "\n",
+       "    var skip = [];\n",
+       "    if (window.requirejs) {\n",
+       "      window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",
+       "      require([\"jspanel\"], function(jsPanel) {\n",
+       "\twindow.jsPanel = jsPanel\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-modal\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-tooltip\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-hint\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-layout\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-contextmenu\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"jspanel-dock\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"gridstack\"], function(GridStack) {\n",
+       "\twindow.GridStack = GridStack\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      require([\"notyf\"], function() {\n",
+       "\ton_load()\n",
+       "      })\n",
+       "      root._bokeh_is_loading = css_urls.length + 9;\n",
+       "    } else {\n",
+       "      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
+       "    }\n",
+       "\n",
+       "    var existing_stylesheets = []\n",
+       "    var links = document.getElementsByTagName('link')\n",
+       "    for (var i = 0; i < links.length; i++) {\n",
+       "      var link = links[i]\n",
+       "      if (link.href != null) {\n",
+       "\texisting_stylesheets.push(link.href)\n",
+       "      }\n",
+       "    }\n",
+       "    for (var i = 0; i < css_urls.length; i++) {\n",
+       "      var url = css_urls[i];\n",
+       "      if (existing_stylesheets.indexOf(url) !== -1) {\n",
+       "\ton_load()\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      const element = document.createElement(\"link\");\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.rel = \"stylesheet\";\n",
+       "      element.type = \"text/css\";\n",
+       "      element.href = url;\n",
+       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
+       "      document.body.appendChild(element);\n",
+       "    }    if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n",
+       "      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n",
+       "      for (var i = 0; i < urls.length; i++) {\n",
+       "        skip.push(urls[i])\n",
+       "      }\n",
+       "    }    var existing_scripts = []\n",
+       "    var scripts = document.getElementsByTagName('script')\n",
+       "    for (var i = 0; i < scripts.length; i++) {\n",
+       "      var script = scripts[i]\n",
+       "      if (script.src != null) {\n",
+       "\texisting_scripts.push(script.src)\n",
+       "      }\n",
+       "    }\n",
+       "    for (var i = 0; i < js_urls.length; i++) {\n",
+       "      var url = js_urls[i];\n",
+       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.src = url;\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    for (var i = 0; i < js_modules.length; i++) {\n",
+       "      var url = js_modules[i];\n",
+       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onload = on_load;\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.src = url;\n",
+       "      element.type = \"module\";\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    for (const name in js_exports) {\n",
+       "      var url = js_exports[name];\n",
+       "      if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
+       "\tif (!window.requirejs) {\n",
+       "\t  on_load();\n",
+       "\t}\n",
+       "\tcontinue;\n",
+       "      }\n",
+       "      var element = document.createElement('script');\n",
+       "      element.onerror = on_error;\n",
+       "      element.async = false;\n",
+       "      element.type = \"module\";\n",
+       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
+       "      element.textContent = `\n",
+       "      import ${name} from \"${url}\"\n",
+       "      window.${name} = ${name}\n",
+       "      window._bokeh_on_load()\n",
+       "      `\n",
+       "      document.head.appendChild(element);\n",
+       "    }\n",
+       "    if (!js_urls.length && !js_modules.length) {\n",
+       "      on_load()\n",
+       "    }\n",
+       "  };\n",
+       "\n",
+       "  function inject_raw_css(css) {\n",
+       "    const element = document.createElement(\"style\");\n",
+       "    element.appendChild(document.createTextNode(css));\n",
+       "    document.body.appendChild(element);\n",
+       "  }\n",
+       "\n",
+       "  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.5/dist/panel.min.js\"];\n",
+       "  var js_modules = [];\n",
+       "  var js_exports = {};\n",
+       "  var css_urls = [];\n",
+       "  var inline_js = [    function(Bokeh) {\n",
+       "      Bokeh.set_log_level(\"info\");\n",
+       "    },\n",
+       "function(Bokeh) {} // ensure no trailing comma for IE\n",
+       "  ];\n",
+       "\n",
+       "  function run_inline_js() {\n",
+       "    if ((root.Bokeh !== undefined) || (force === true)) {\n",
+       "      for (var i = 0; i < inline_js.length; i++) {\n",
+       "\ttry {\n",
+       "          inline_js[i].call(root, root.Bokeh);\n",
+       "\t} catch(e) {\n",
+       "\t  if (!reloading) {\n",
+       "\t    throw e;\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "      // Cache old bokeh versions\n",
+       "      if (Bokeh != undefined && !reloading) {\n",
+       "\tvar NewBokeh = root.Bokeh;\n",
+       "\tif (Bokeh.versions === undefined) {\n",
+       "\t  Bokeh.versions = new Map();\n",
+       "\t}\n",
+       "\tif (NewBokeh.version !== Bokeh.version) {\n",
+       "\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
+       "\t}\n",
+       "\troot.Bokeh = Bokeh;\n",
+       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
+       "      setTimeout(run_inline_js, 100);\n",
+       "    } else if (!root._bokeh_failed_load) {\n",
+       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
+       "      root._bokeh_failed_load = true;\n",
+       "    }\n",
+       "    root._bokeh_is_initializing = false\n",
+       "  }\n",
+       "\n",
+       "  function load_or_wait() {\n",
+       "    // Implement a backoff loop that tries to ensure we do not load multiple\n",
+       "    // versions of Bokeh and its dependencies at the same time.\n",
+       "    // In recent versions we use the root._bokeh_is_initializing flag\n",
+       "    // to determine whether there is an ongoing attempt to initialize\n",
+       "    // bokeh, however for backward compatibility we also try to ensure\n",
+       "    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
+       "    // before older versions are fully initialized.\n",
+       "    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
+       "      root._bokeh_is_initializing = false;\n",
+       "      root._bokeh_onload_callbacks = undefined;\n",
+       "      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
+       "      load_or_wait();\n",
+       "    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
+       "      setTimeout(load_or_wait, 100);\n",
+       "    } else {\n",
+       "      root._bokeh_is_initializing = true\n",
+       "      root._bokeh_onload_callbacks = []\n",
+       "      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
+       "      if (!reloading && !bokeh_loaded) {\n",
+       "\troot.Bokeh = undefined;\n",
+       "      }\n",
+       "      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
+       "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
+       "\trun_inline_js();\n",
+       "      });\n",
+       "    }\n",
+       "  }\n",
+       "  // Give older versions of the autoload script a head-start to ensure\n",
+       "  // they initialize before we start loading newer version.\n",
+       "  setTimeout(load_or_wait, 100)\n",
+       "}(window));"
+      ],
+      "application/vnd.holoviews_load.v0+json": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n  var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  var reloading = false;\n  var Bokeh = root.Bokeh;\n\n  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      run_callbacks();\n      return null;\n    }\n    if (!reloading) {\n      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    var skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n      require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n      })\n      require([\"jspanel-modal\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-tooltip\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-hint\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-layout\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n      })\n      require([\"jspanel-dock\"], function() {\n\ton_load()\n      })\n      require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n      })\n      require([\"notyf\"], function() {\n\ton_load()\n      })\n      root._bokeh_is_loading = css_urls.length + 9;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    var existing_stylesheets = []\n    var links = document.getElementsByTagName('link')\n    for (var i = 0; i < links.length; i++) {\n      var link = links[i]\n      if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n      }\n    }\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.5/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n      var urls = ['https://cdn.holoviz.org/panel/1.3.5/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n      for (var i = 0; i < urls.length; i++) {\n        skip.push(urls[i])\n      }\n    }    var existing_scripts = []\n    var scripts = document.getElementsByTagName('script')\n    for (var i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n\texisting_scripts.push(script.src)\n      }\n    }\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (var i = 0; i < js_modules.length; i++) {\n      var url = js_modules[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      var url = js_exports[name];\n      if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.5/dist/panel.min.js\"];\n  var js_modules = [];\n  var js_exports = {};\n  var css_urls = [];\n  var inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n          inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t  if (!reloading) {\n\t    throw e;\n\t  }\n\t}\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t  Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));"
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": [
+       "\n",
+       "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
+       "  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
+       "}\n",
+       "\n",
+       "\n",
+       "    function JupyterCommManager() {\n",
+       "    }\n",
+       "\n",
+       "    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
+       "      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
+       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
+       "        comm_manager.register_target(comm_id, function(comm) {\n",
+       "          comm.on_msg(msg_handler);\n",
+       "        });\n",
+       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
+       "        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
+       "          comm.onMsg = msg_handler;\n",
+       "        });\n",
+       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
+       "        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
+       "          var messages = comm.messages[Symbol.asyncIterator]();\n",
+       "          function processIteratorResult(result) {\n",
+       "            var message = result.value;\n",
+       "            console.log(message)\n",
+       "            var content = {data: message.data, comm_id};\n",
+       "            var buffers = []\n",
+       "            for (var buffer of message.buffers || []) {\n",
+       "              buffers.push(new DataView(buffer))\n",
+       "            }\n",
+       "            var metadata = message.metadata || {};\n",
+       "            var msg = {content, buffers, metadata}\n",
+       "            msg_handler(msg);\n",
+       "            return messages.next().then(processIteratorResult);\n",
+       "          }\n",
+       "          return messages.next().then(processIteratorResult);\n",
+       "        })\n",
+       "      }\n",
+       "    }\n",
+       "\n",
+       "    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
+       "      if (comm_id in window.PyViz.comms) {\n",
+       "        return window.PyViz.comms[comm_id];\n",
+       "      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
+       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
+       "        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
+       "        if (msg_handler) {\n",
+       "          comm.on_msg(msg_handler);\n",
+       "        }\n",
+       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
+       "        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
+       "        comm.open();\n",
+       "        if (msg_handler) {\n",
+       "          comm.onMsg = msg_handler;\n",
+       "        }\n",
+       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
+       "        var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
+       "        comm_promise.then((comm) => {\n",
+       "          window.PyViz.comms[comm_id] = comm;\n",
+       "          if (msg_handler) {\n",
+       "            var messages = comm.messages[Symbol.asyncIterator]();\n",
+       "            function processIteratorResult(result) {\n",
+       "              var message = result.value;\n",
+       "              var content = {data: message.data};\n",
+       "              var metadata = message.metadata || {comm_id};\n",
+       "              var msg = {content, metadata}\n",
+       "              msg_handler(msg);\n",
+       "              return messages.next().then(processIteratorResult);\n",
+       "            }\n",
+       "            return messages.next().then(processIteratorResult);\n",
+       "          }\n",
+       "        }) \n",
+       "        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
+       "          return comm_promise.then((comm) => {\n",
+       "            comm.send(data, metadata, buffers, disposeOnDone);\n",
+       "          });\n",
+       "        };\n",
+       "        var comm = {\n",
+       "          send: sendClosure\n",
+       "        };\n",
+       "      }\n",
+       "      window.PyViz.comms[comm_id] = comm;\n",
+       "      return comm;\n",
+       "    }\n",
+       "    window.PyViz.comm_manager = new JupyterCommManager();\n",
+       "    \n",
+       "\n",
+       "\n",
+       "var JS_MIME_TYPE = 'application/javascript';\n",
+       "var HTML_MIME_TYPE = 'text/html';\n",
+       "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
+       "var CLASS_NAME = 'output';\n",
+       "\n",
+       "/**\n",
+       " * Render data to the DOM node\n",
+       " */\n",
+       "function render(props, node) {\n",
+       "  var div = document.createElement(\"div\");\n",
+       "  var script = document.createElement(\"script\");\n",
+       "  node.appendChild(div);\n",
+       "  node.appendChild(script);\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle when a new output is added\n",
+       " */\n",
+       "function handle_add_output(event, handle) {\n",
+       "  var output_area = handle.output_area;\n",
+       "  var output = handle.output;\n",
+       "  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
+       "    return\n",
+       "  }\n",
+       "  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
+       "  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
+       "  if (id !== undefined) {\n",
+       "    var nchildren = toinsert.length;\n",
+       "    var html_node = toinsert[nchildren-1].children[0];\n",
+       "    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
+       "    var scripts = [];\n",
+       "    var nodelist = html_node.querySelectorAll(\"script\");\n",
+       "    for (var i in nodelist) {\n",
+       "      if (nodelist.hasOwnProperty(i)) {\n",
+       "        scripts.push(nodelist[i])\n",
+       "      }\n",
+       "    }\n",
+       "\n",
+       "    scripts.forEach( function (oldScript) {\n",
+       "      var newScript = document.createElement(\"script\");\n",
+       "      var attrs = [];\n",
+       "      var nodemap = oldScript.attributes;\n",
+       "      for (var j in nodemap) {\n",
+       "        if (nodemap.hasOwnProperty(j)) {\n",
+       "          attrs.push(nodemap[j])\n",
+       "        }\n",
+       "      }\n",
+       "      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
+       "      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
+       "      oldScript.parentNode.replaceChild(newScript, oldScript);\n",
+       "    });\n",
+       "    if (JS_MIME_TYPE in output.data) {\n",
+       "      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
+       "    }\n",
+       "    output_area._hv_plot_id = id;\n",
+       "    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
+       "      window.PyViz.plot_index[id] = Bokeh.index[id];\n",
+       "    } else {\n",
+       "      window.PyViz.plot_index[id] = null;\n",
+       "    }\n",
+       "  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
+       "    var bk_div = document.createElement(\"div\");\n",
+       "    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
+       "    var script_attrs = bk_div.children[0].attributes;\n",
+       "    for (var i = 0; i < script_attrs.length; i++) {\n",
+       "      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
+       "    }\n",
+       "    // store reference to server id on output_area\n",
+       "    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
+       "  }\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle when an output is cleared or removed\n",
+       " */\n",
+       "function handle_clear_output(event, handle) {\n",
+       "  var id = handle.cell.output_area._hv_plot_id;\n",
+       "  var server_id = handle.cell.output_area._bokeh_server_id;\n",
+       "  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
+       "  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
+       "  if (server_id !== null) {\n",
+       "    comm.send({event_type: 'server_delete', 'id': server_id});\n",
+       "    return;\n",
+       "  } else if (comm !== null) {\n",
+       "    comm.send({event_type: 'delete', 'id': id});\n",
+       "  }\n",
+       "  delete PyViz.plot_index[id];\n",
+       "  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
+       "    var doc = window.Bokeh.index[id].model.document\n",
+       "    doc.clear();\n",
+       "    const i = window.Bokeh.documents.indexOf(doc);\n",
+       "    if (i > -1) {\n",
+       "      window.Bokeh.documents.splice(i, 1);\n",
+       "    }\n",
+       "  }\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle kernel restart event\n",
+       " */\n",
+       "function handle_kernel_cleanup(event, handle) {\n",
+       "  delete PyViz.comms[\"hv-extension-comm\"];\n",
+       "  window.PyViz.plot_index = {}\n",
+       "}\n",
+       "\n",
+       "/**\n",
+       " * Handle update_display_data messages\n",
+       " */\n",
+       "function handle_update_output(event, handle) {\n",
+       "  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
+       "  handle_add_output(event, handle)\n",
+       "}\n",
+       "\n",
+       "function register_renderer(events, OutputArea) {\n",
+       "  function append_mime(data, metadata, element) {\n",
+       "    // create a DOM node to render to\n",
+       "    var toinsert = this.create_output_subarea(\n",
+       "    metadata,\n",
+       "    CLASS_NAME,\n",
+       "    EXEC_MIME_TYPE\n",
+       "    );\n",
+       "    this.keyboard_manager.register_events(toinsert);\n",
+       "    // Render to node\n",
+       "    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
+       "    render(props, toinsert[0]);\n",
+       "    element.append(toinsert);\n",
+       "    return toinsert\n",
+       "  }\n",
+       "\n",
+       "  events.on('output_added.OutputArea', handle_add_output);\n",
+       "  events.on('output_updated.OutputArea', handle_update_output);\n",
+       "  events.on('clear_output.CodeCell', handle_clear_output);\n",
+       "  events.on('delete.Cell', handle_clear_output);\n",
+       "  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
+       "\n",
+       "  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
+       "    safe: true,\n",
+       "    index: 0\n",
+       "  });\n",
+       "}\n",
+       "\n",
+       "if (window.Jupyter !== undefined) {\n",
+       "  try {\n",
+       "    var events = require('base/js/events');\n",
+       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
+       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
+       "      register_renderer(events, OutputArea);\n",
+       "    }\n",
+       "  } catch(err) {\n",
+       "  }\n",
+       "}\n"
+      ],
+      "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n"
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<style>*[data-root-id],\n",
+       "*[data-root-id] > * {\n",
+       "  box-sizing: border-box;\n",
+       "  font-family: var(--jp-ui-font-family);\n",
+       "  font-size: var(--jp-ui-font-size1);\n",
+       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
+       "}\n",
+       "\n",
+       "/* Override VSCode background color */\n",
+       ".cell-output-ipywidget-background:has(\n",
+       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
+       "  ),\n",
+       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
+       "  background-color: transparent !important;\n",
+       "}\n",
+       "</style>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='cb1f3ccd-d267-45bf-9c15-a456bb3b55bd'>\n",
+       "  <div id=\"e180a340-795a-4e70-93c2-c6f55c979b25\" data-root-id=\"cb1f3ccd-d267-45bf-9c15-a456bb3b55bd\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"034f1f9c-3b24-44ad-9e66-08e99970af0e\":{\"version\":\"3.3.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"cb1f3ccd-d267-45bf-9c15-a456bb3b55bd\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"1e6a4f95-50c1-4b0c-a1e5-8a2fba33e09b\",\"attributes\":{\"plot_id\":\"cb1f3ccd-d267-45bf-9c15-a456bb3b55bd\",\"comm_id\":\"cf19e93294444086b0d11b38e221922a\",\"client_comm_id\":\"558638f5254443afa81fbef016f530e1\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"034f1f9c-3b24-44ad-9e66-08e99970af0e\",\"roots\":{\"cb1f3ccd-d267-45bf-9c15-a456bb3b55bd\":\"e180a340-795a-4e70-93c2-c6f55c979b25\"},\"root_ids\":[\"cb1f3ccd-d267-45bf-9c15-a456bb3b55bd\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ]
+     },
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "cb1f3ccd-d267-45bf-9c15-a456bb3b55bd"
+      }
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='16c1a687-f135-4a8d-a655-dc982e259fab'>\n",
+       "  <div id=\"de62f20f-d89f-4cb4-a57f-ab270c1f2481\" data-root-id=\"16c1a687-f135-4a8d-a655-dc982e259fab\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"2df3f4e9-ab8b-4a5c-a3b3-aaaa60d69830\":{\"version\":\"3.3.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"16c1a687-f135-4a8d-a655-dc982e259fab\",\"attributes\":{\"name\":\"Column00165\",\"css_classes\":[\"scrollable-vertical\"],\"styles\":{\"type\":\"map\",\"entries\":[[\"background\",\"WhiteSmoke\"]]},\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/bundled/theme/native.css\"}}],\"min_width\":800,\"min_height\":400,\"margin\":0,\"sizing_mode\":\"stretch_both\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"bb3a5027-5025-4399-b4a9-28f077c0c2d4\",\"attributes\":{\"css_classes\":[\"markdown\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"513cb389-423c-4bfc-bc56-58f6bc986818\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/markdown.css\"}},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;h1 id=&quot;population-group&quot;&gt;Population Group &lt;a class=&quot;header-anchor&quot; href=&quot;#population-group&quot;&gt;\\u00b6&lt;/a&gt;&lt;/h1&gt;\\n\"}},{\"type\":\"object\",\"name\":\"Row\",\"id\":\"973fc732-c206-4b39-8963-a91abefb190b\",\"attributes\":{\"name\":\"Row00148\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"dcc4c30a-8ec4-4c14-9af4-c9bc8b4485d1\",\"attributes\":{\"css_classes\":[\"markdown\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"513cb389-423c-4bfc-bc56-58f6bc986818\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;h2 id=&quot;samples--2&quot;&gt;Samples : 2 &lt;a class=&quot;header-anchor&quot; href=&quot;#samples--2&quot;&gt;\\u00b6&lt;/a&gt;&lt;/h2&gt;\\n&lt;h4&gt;Group : O. barthii O. glaberrima&lt;/h4&gt;\\n\"}},{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"d5eb53cc-95fc-4da5-b6df-9a8b4b91c77c\",\"attributes\":{\"name\":\"Column00145\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"9660fff9-a965-4920-b9aa-2d5a8a071f86\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"width\":576,\"height\":432,\"min_width\":576,\"min_height\":432,\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAYAAABB4NqyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAABYlAAAWJQFJUiTwAAAdRElEQVR4nO3ceXBV9d3A4e8NwSSgBBAQoUCAQbCLTQ2lFmQREdcaHauidYGM1XZaBbtZbTtiq2MXbdUq44xFGJe2VqtY27JMFdwYQWmtxcZSHIK2LrTFCsoqOe8fTvKaJqDADTfJ73lm8ofnJOd+z8/k5sPJuTeXZVkWAAAJKSr0AAAA+5oAAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSU1zoAdqyioqK2LBhQwwePLjQowBAq1uzZk1069Yt6urqCj1KqxNAu7Bhw4bYsmVLoccAgH0ipd95AmgXGq78rFixosCTAEDrq6qqKvQI+4x7gACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5xYUeoK3b9PJL8cwlXyj0GADQzMibbi30CO2WK0AAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJCcNhVAdXV1kcvlYurUqR/4a+bOnRu5XC7mzp3bZHtFRUVUVFTkdT4AoGPY5wGUy+ViwoQJ+/phAQAaFRd6gL116qmnxhFHHBEHH3xwk+0PP/xwgSYCANq6dh9A5eXlUV5e3mz70KFDCzANANAeFPXp0ydqamritddea7ZzxYoVMX369Pj4xz8ePXv2jNLS0hg2bFh89atfjTfeeKPZ57/3fpwFCxbEhAkTory8vHFbLpeLiIhHH300crlc48fMmTObHauuri6mTJkSvXr1itLS0hg5cmT89re/3eVjvpd7gACAnSkePnx4zJkzJ5YsWRLLli2L3r17N+687bbb4oEHHojx48fHpEmTor6+PlasWBE//vGPY/78+bFs2bI44IADmh30vvvuiwULFsTxxx8fX/jCF2Lt2rVRWVkZV155ZVx11VUxaNCgJjc6/+89QWvXro1Ro0bFkCFD4txzz43169fHPffcE9XV1fGHP/whjjrqqNZaDwAgAcWPP/54XHrppXHDDTfEN7/5zZg9e3bjzssvvzxuueWW6NSpU5Mvmj17dlxwwQUxa9asuOyyy5od9Pe//338/ve/j+OOO67J9srKyrjqqquioqKixas+DZYsWRIzZ86MK6+8snHb2WefHccdd1z86Ec/EkAAwF4pioiYOXNmlJeXx89//vPYunVr485BgwY1i5+IiJqamujWrVssXLiwxYNWV1c3i5/dMWjQoPj2t7/dZNuxxx4bAwcOjOXLl+/xcXemqqqqxY/a2tq8PxYAUHhFEe/eSFxZWRlbtmxp8kt/+/btcfPNN8eRRx4ZPXv2jE6dOkUul4uioqLYsGFD/POf/2zxoKNGjdqroSorK1sMrwEDBrR47xEAwO5ofBVY3759IyLizTffbNx55plnxgMPPBBDhgyJ6urq6Nu3b5SUlERExA033NDkatF7NRxrT3Xv3r3lYYuLo76+fq+O3ZIVK1a0uL2qqio2vfxS3h8PACisxgBqeBVYw0vKn3nmmXjggQdi0qRJMX/+/Cgu/v9XzNfX18cPf/jDnR604dVeAABtUVHEu1d9nn322SgtLY1DDz00IiJWr14dEREnn3xyk/iJiFi+fHls3rx5zx6wqCh27NixNzMDAOyVxpug33zzzTjrrLMa/8TV8B46S5YsafIF69atiy996Ut7/IAHHnhgvPzyy3v89QAAe6t47Nix8cQTT0RFRUV8//vfb9zxyU9+MsaMGRP3339/jB49Oo488sh4/fXXY/78+TF8+PDo16/fHj3g0UcfHb/85S/jM5/5TBx++OHRuXPnGDduXIwbNy5f5wQAsEtFL7zwQkydOjWWLl0affr0adzRqVOn+M1vfhNf/OIX45VXXombbropnnjiibjgggti4cKF0blz5z16wBtvvDHOOuusWL58eVx99dXxne98Jx555JF8nQ8AwPvKZVmWFXqItqrhVWB3Tjmt0KMAQDMjb7o1r8erqqqKiJ2/OrojKSr0AAAA+5oAAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5BQXeoC2rsuAgTHyplsLPQYAkEeuAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBAAkBwBBAAkRwABAMkRQABAcgQQAJAcAQQAJKe40AO0dS+9vSm+sPSZQo8BAM3cOnpkoUdot1wBAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5LRaAM2dOzdyuVzMnTu3tR4CAGCPuAIEACSnuLUOfOqpp8YRRxwRBx98cGs9BADAHmm1ACovL4/y8vLWOjwAwB4ruuiii+KVV15ptmPChAmRy+Vi27Zt8d3vfjeGDx8eJSUlMXXq1A+0f2f3AFVUVERFRUW89dZbcemll8aAAQOirKwsKisrY968eRER8c4778Q111wTw4YNi9LS0hg6dGjcfPPNzWbctm1b3HzzzXHCCSfEoEGDoqSkJHr27BmTJk2K+fPn53OdAIAOpPhnP/tZPPTQQ/HUU0/FwIEDm33CaaedFk8//XQcf/zxccopp0SfPn12a39Ltm/fHsccc0ysX78+qqurY9u2bfGLX/wiTjvttFi0aFHMmjUrli1bFscff3yUlJTEvffeGxdffHH07t07zjzzzMbjrF+/PqZPnx6jR4+OY445Jnr37h2vvvpqPPTQQ3HCCSfEbbfdFhdccMHerxIA0KEUL1q0KCZPnhzTp0+PBx54oNknrF27NlauXBm9evVq8QDvt78lr7zyShx++OGxZMmSKCkpiYiIc889N8aNGxenn356DB06NFauXBndu3ePiIivfOUrMWLEiPj+97/fJIB69OgRa9eujQ996ENNjv/mm2/GmDFj4hvf+EZ87nOfi7Kysl3OU1VV1eL22tra6Dpw0Ac+LwCgfSg6+uij4+STT46HHnooNm7c2OwTvve97+0ybt5v/87ccMMNjfETETF27NgYPHhwvPHGG/GDH/ygMX4iIoYMGRJjxoyJlStXxo4dOxq3l5SUNIufiHfvP6qpqYk33ngjnn766d2eDQDo2IpnzpwZ69atix07dsSqVauaXQ0ZNWrULg/wfvtb0r179xg6dGiz7f369Ys1a9a0eEWmf//+8c4778Rrr70W/fv3b9z+/PPPx49+9KN47LHH4tVXX40tW7Y0+bp//vOf7zvPihUrWtxeVVUVL7296X2/HgBoX4qvuuqqxv946623mn1C3759d3mA99vfkp29Oqy4uHin+xv2bd++vXHbU089FRMnTox33nknGq5kdevWLYqKiuLZZ5+NBx98MLZu3brb8wEAHVtxlmW7/IRcLrdX+1vT1VdfHZs3b47FixfHhAkTmuy79tpr48EHHyzMYABAm9au3wl69erV0bNnz2bxExHx6KOP7vuBAIB2oSji3ffTefzxxws9y26rqKiI9evXx3PPPddk++zZs2PhwoUFmgoAaOuKTznllHj88cejd+/e8cILLxR6nt0yY8aMWLhwYRx55JFxxhlnRHl5eTzzzDPxxBNPxGc/+9m47777Cj0iANAGFa1evTo++9nPxqxZswo9y2477rjj4qGHHooPf/jDcc8998Ts2bOjpKQkFi9eHCeeeGKhxwMA2qhc9n53QSes4WXwp91+Z6FHAYBmbh09Mq/Ha3gbmp29PUxH0q5vggYA2BMCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEhOcaEHaOsGdu0St44eWegxAIA8cgUIAEiOAAIAkiOAAIDkCCAAIDkCCABIjgACAJIjgACA5AggACA5AggASI4AAgCSI4AAgOQIIAAgOQIIAEiOAAIAkpPLsiwr9BBtVc+ePWPLli1x6KGHFnoUAGh1tbW1UVpaGuvXry/0KK2uuNADtGVvv/127Nixo9BjdCi1tbUREaIyj6xp/lnT/LOm+dcaa1paWhrdunXL2/HaMgG0Cx/96EcjImLFihUFnqTjqKqqighrmk/WNP+saf5Z0/yzpnvHPUAAQHIEEACQHAEEACRHAAEAyRFAAEByvA8QAJAcV4AAgOQIIAAgOQIIAEiOAAIAkiOAAIDkCCAAIDkCCABITlIB9I9//CNqamqiX79+UVJSEhUVFTFjxox44403dus469evjxkzZkRFRUWUlJREv379oqamJv7xj3+00uRt196u6dtvvx133313nH322TFixIjo2rVrHHDAATFy5Mi4/vrrY9u2ba18Bm1Tvr5X3+uxxx6LTp06RS6Xi29/+9t5nLZ9yOea/vGPf4yzzz47PvShD0VJSUkcdNBBMX78+LjjjjtaYfK2K19r+sQTT0R1dXVUVFREaWlpDBw4ME444YRYsGBBK03e9tx3331x8cUXx9ixY6Nbt26Ry+XinHPO2aNjtcbzR4eUJWL16tVZnz59sojIqqurs8suuyw76qijsojIhg8fnv373//+QMf597//nR1yyCFZRGQTJ07MLrvssqy6ujqLiKxPnz7Ziy++2Mpn0nbkY03nz5+fRUTWs2fP7LTTTssuu+yy7MILL8z69u2bRUQ2evTobPPmzfvgbNqOfH2vvteGDRuyioqKbP/9988iIvvWt77VCpO3Xflc05/+9KdZUVFRduCBB2bnnXdedvnll2cXXXRRNmbMmOzMM89sxbNoW/K1prNmzcoiIuvatWt2zjnnZN/85jezc845J+vSpUsWEdnVV1/dymfSNnz84x/PIiLbf//9sxEjRmQRkX3uc5/b7eO0xvNHR5VMAE2ePDmLiOymm25qsv3SSy/NIiK76KKLPtBxLrzwwiwisq985StNtt94441ZRGTHHnts3mZu6/Kxpn/605+yu+66K9u6dWuT7Rs2bMgOP/zwLCKy6667Lq9zt3X5+l59r2nTpmU9evTIrrnmmiQDKF9runDhwiyXy2WTJ0/ONmzY0Gz/tm3b8jJve5CPNd22bVtWXl6elZaWZi+88EKTfX/961+zkpKSrKysLNuyZUteZ2+LHnnkkWzVqlVZfX19tnjx4j0OoNZ4/uiokgig1atXZxGRVVRUZDt27Giyb8OGDVnXrl2zLl26ZG+99dYuj7Nx48asrKws69q1a7Mnvx07dmSDBg3KIiKJq0D5WtNdufvuu7OIyE466aS9HbfdaI11nTdvXhYR2Z133pnNmTMnuQDK55oedthhWZcuXZL/V3S+1vS1117LIiI77LDDWtz/sY99LIuI5NZ7TwNoXzwvdyRJ3AO0ePHiiIiYPHlyFBU1PeUDDjggxowZE5s2bYqnnnpql8d56qmnYvPmzTFmzJg44IADmuwrKiqKY489tsnjdWT5WtNd6dy5c0REFBcX7/mg7Uy+13XdunXx+c9/Pk455ZQ9vp+gvcvXmq5cuTKee+65mDx5cvTs2TMWL14c1113XVx//fXx8MMPR319faudQ1uTrzXt06dP9O7dO1atWhV///vfm+xr2FZZWRkHHnhgfk+gg9oXz8sdSRIB9Le//S0iIg455JAW9w8bNiwi3v2B2xfH6Qj2xVrcfvvtERFx3HHH7fEx2pt8r+vnP//5qK+vj1tvvTU/A7ZD+VrTp59+OiLe/aU9YcKEmDhxYnz961+Pr33tazFp0qSorKyM1atX53Hytitfa5rL5eKWW26J+vr6qKqqivPPPz8uv/zyOO+886Kqqio+8pGPxL333pvf4Tswv6N2TxL/tH7zzTcjIqK8vLzF/Q3b//vf/+6T43QErb0WN998cyxYsCAqKyujpqZmj47RHuVzXW+//fb4zW9+E/fcc08cdNBBeZuxvcnXmq5bty4iImbPnh39+/eP3/3ud3HkkUfG66+/Ht/97nfjrrvuihNPPDH+8pe/xH777Ze/E2iD8vl9evrpp0e/fv3irLPOavIquoMOOiimTZsWQ4YM2fuBE+F31O5J4goQ7cv9998fM2bMiL59+8avf/3rxj+F8cHV1dXFjBkz4vTTT48zzjij0ON0CA1/4tqxY0f88pe/jBNOOCG6desWw4YNizvuuCNGjhwZq1atil//+tcFnrR9ueuuu2LSpEkxduzYqK2tjU2bNkVtbW0cffTR8eUvfzmmTJlS6BHpoJIIoIbqbajj/9WwvXv37vvkOB1Ba63FvHnzYsqUKdGnT59YsmRJcv/6y9e61tTURFlZWcyaNSuv87VH+VrThv19+/aNT3/600325XK5qK6ujoiI5cuX78W07UO+1nTVqlVRU1MTH/nIR+LOO++MESNGRFlZWYwYMSLuvPPOqKqqinvvvTeWLFmSz/E7LL+jdk8SATR8+PCI2PnfPRtuvtvZ303zfZyOoDXW4t57743TTz89DjrooHj00UcbHyMl+VrXP/7xj7Fu3bro3bt35HK5xo9p06ZFRMQ111wTuVwuTjnllPwN30bl++d/Z788evToERERmzdv3pMx25V8remiRYti+/btMX78+GY37RYVFcW4ceMiImLFihV7O3IS/I7aPUncA3TUUUdFxLs/bPX19U1+0DZu3BhPPvlkdOnSJY444ohdHueII46IsrKyePLJJ2Pjxo1NXglWX18fixYtavJ4HVm+1rTB3XffHeeff370798/Fi9enNyVnwb5WtfzzjsvNm3a1Gz73//+93jssceisrIyqqqq4hOf+ER+T6ANyufPf9euXaOuri7efvvt6Nq1a5P9K1eujIiIwYMH5/kM2p58renWrVsjIuJf//pXi/sbtnf0e6ryJd/Pyx1eoV+Hv6/s7ptD1dbWZrW1tc2O440Q/1++1nTu3LlZUVFRNnjw4Kyurq5VZ24P8rWuLUnxfYCyLH9reskll2QRkc2YMSOrr69v3P7cc89lpaWlWXFxcbZ69erWOYk2Jh9rumzZsiwisrKysuzPf/5zk31/+tOfstLS0iyXy2UrV65snZNoo97vfYC2bduW1dbWtvi95o0QP7hclmXZvo6uQnjxxRdj9OjRsW7duqiuro5DDz00li1bFosXL45DDjkkli5d2uS9JnK5XERE/O/y/Oc//4nRo0fHqlWrYuLEiTFq1Kiora2NBx98MPr06RNLly6NoUOH7tNzK5R8rOnixYtj0qRJUV9fHzU1NTFgwIBmj9O9e/eYMWNGq59PW5Gv79WWzJ07N6ZNmxbf+ta34uqrr261c2hr8rWmGzZsiPHjx8ezzz4bn/rUp2LMmDHx+uuvx/333x+bN2+OG264IaZPn75Pz61Q8rWmNTU1MWfOnNhvv/3i1FNPjUGDBkVdXV3Mmzcvtm3bFjNmzIif/OQn+/TcCmHevHkxb968iIh47bXXYuHChTFkyJAYO3ZsRET06tUrrrvuuoh490UOgwcPblyr99rd/y9JK2B87XMvvfRSNnXq1Kxv375Z586ds4EDB2bTp0/P1q9f3+xzIyLb2fL85z//yS655JJs4MCBWefOnbO+fftm06ZNy15++eXWPoU2Z2/XtOGKxK4+Bg0atI/Opu3I1/fq/0r1ClCW5W9NN27cmF1xxRXZsGHDsv322y8rLy/PjjnmmGzhwoWtfQptTj7WtL6+PpszZ042fvz4rHv37lmnTp2yHj16ZBMnTsx+8Ytf7IvTaBOuvPLKD/w8uGbNml0+N+7O/5eUJXMFCACgQRKvAgMAeC8BBAAkRwABAMkRQABAcgQQAJAcAQQAJEcAAQDJEUAAQHIEEACQHAEEACRHAAEAyRFAAEByBBCQjLlz50Yul4u5c+cWehSgwAQQAJAcAQQAJEcAAbtt+fLlceaZZ0b//v2jpKQkDj744Jg8eXL86le/avJ5v/rVr2LcuHFRXl4eZWVl8bGPfSyuvfba2Lp1a7Nj5nK5mDBhQouPN3Xq1MjlclFXV9e4ra6uLnK5XEydOjXq6upiypQp0atXrygtLY2RI0fGb3/72ybHmDBhQkybNi0iIqZNmxa5XK7x473HBdJQXOgBgPbltttuiy9+8YvRqVOnOPnkk2PYsGGxbt26eOaZZ2LWrFlxxhlnRETEFVdcEddee2306tUrzj777Nh///1j/vz5ccUVV8TChQtj0aJFsd9+++31PGvXro1Ro0bFkCFD4txzz43169fHPffcE9XV1fGHP/whjjrqqIh4N6K6d+8eDz74YFRXV0dlZWXjMbp3777XcwDtTAbwAT3//PNZcXFx1qNHj2zlypXN9r/88stZlmXZ0qVLs4jIBgwYkL366quN+7dv356ddNJJWURk11xzTZOvjYhs/PjxLT7u+eefn0VEtmbNmsZta9asySIii4hs5syZTT5/wYIFWURkxx9/fJPtc+bMySIimzNnzm6cNdAR/R+VqfSEPaLdjQAAAABJRU5ErkJggg==&quot;  style=&quot;max-width: 100%; max-height: 100%; object-fit: contain; width: 576px; height: 432px;&quot;&gt;&lt;/img&gt;\"}}]}}]}},{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"4ae1ba59-4c51-4f4e-b886-3100edb10a93\",\"attributes\":{\"name\":\"\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":[5,10],\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Div\",\"id\":\"c21e2b73-6691-4c33-a5e9-bffbdca2a728\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"<b></b>\"}},{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"47c34e75-80d8-43ad-99e0-e048a3b03be5\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"afc8c8e3-64d6-4367-8b51-337623011df0\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/select.css\"}},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Species\",\"options\":[[\"O. barthii\",\"O. barthii\"],[\"O. glaberrima\",\"O. glaberrima\"]],\"value\":\"O. barthii\"}}]}},{\"type\":\"object\",\"name\":\"Row\",\"id\":\"134d23fd-042d-48c5-ba3c-a33baf3e9881\",\"attributes\":{\"name\":\"Row00156\",\"css_classes\":[\"scrollable-horizontal\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"width\":800,\"height\":400,\"margin\":0,\"sizing_mode\":\"fixed\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"012d71c0-b203-460f-b192-b654e08ef793\",\"attributes\":{\"name\":\"Column00153\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"id\":\"482cf69f-c5e0-4079-8cb1-29cfe1d66134\"},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"c676d637-53c3-42eb-af3d-a7e6a9aa33b4\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n  background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n  background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"3f1b6db9-f9b9-4eb6-9a43-f8c460e1bd47\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"8b115c80-1299-4956-a2ae-783899b88c5c\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.3.5/dist/css/dataframe.css\"}},{\"id\":\"6e1e4154-129e-45ca-9374-9eede3ed3ba3\"},{\"id\":\"1b6a713d-1849-4a75-aefc-d1c10610d5cf\"}],\"margin\":[5,10],\"align\":\"start\",\"text\":\"&lt;table class=&quot;dataframe panel-df&quot;&gt;\\n  &lt;thead&gt;\\n    &lt;tr style=&quot;text-align: right;&quot;&gt;\\n      &lt;th&gt;&lt;/th&gt;\\n      &lt;th&gt;sample&lt;/th&gt;\\n      &lt;th&gt;Species&lt;/th&gt;\\n    &lt;/tr&gt;\\n  &lt;/thead&gt;\\n  &lt;tbody&gt;\\n    &lt;tr&gt;\\n      &lt;th&gt;0&lt;/th&gt;\\n      &lt;td&gt;AA&lt;/td&gt;\\n      &lt;td&gt;O. barthii&lt;/td&gt;\\n    &lt;/tr&gt;\\n  &lt;/tbody&gt;\\n&lt;/table&gt;\",\"disable_math\":true}}]}}]}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"b9c637bc-2af6-48ba-979d-006a48f73fd3\",\"attributes\":{\"plot_id\":\"16c1a687-f135-4a8d-a655-dc982e259fab\",\"comm_id\":\"dd92ccaed7c64749b90e9bf7d4e49d8c\",\"client_comm_id\":\"5d3156c7ceef4ec5943df1c81dd8b893\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"2df3f4e9-ab8b-4a5c-a3b3-aaaa60d69830\",\"roots\":{\"16c1a687-f135-4a8d-a655-dc982e259fab\":\"de62f20f-d89f-4cb4-a57f-ab270c1f2481\"},\"root_ids\":[\"16c1a687-f135-4a8d-a655-dc982e259fab\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       "Column(css_classes=['scrollable-vertical'], scroll=True, sizing_mode='stretch_both', styles={'background': '...})\n",
+       "    [0] Markdown(str)\n",
+       "    [1] Row\n",
+       "        [0] Markdown(str)\n",
+       "        [1] ParamMethod(method, _pane=Matplotlib, defer_load=False)\n",
+       "    [2] Column(margin=(5, 10))\n",
+       "        [0] StaticText(value='<b></b>')\n",
+       "        [1] Select(name='Species', options=OrderedDict([('O. barthii'...]), value='O. barthii')\n",
+       "    [3] Row(css_classes=['scrollable-horizontal'], height=400, scroll=True, sizing_mode='fixed', width=800)\n",
+       "        [0] ParamMethod(method, _pane=DataFrame, defer_load=False)"
+      ]
+     },
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "16c1a687-f135-4a8d-a655-dc982e259fab"
+      }
+     },
+     "output_type": "display_data"
     }
    ],
    "source": [
     "# Reading group file\n",
-    "id_dict, df_group = read_group_file(group_file.value,logger)\n",
+    "id_dict, df_group = frangiPANe.read_group_file(group_file)\n",
     "\n",
     "# Group file dashboard\n",
-    "dashboard_group(df_group)\n",
-    "bgc('LightBlue')"
+    "gs.dashboard_group(df_group)\n",
+    "#bgc('LightBlue')"
    ]
   },
   {
@@ -282,7 +1732,7 @@
  "metadata": {
   "hide_input": false,
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
   },
@@ -296,7 +1746,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.10"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/frangiPANe/snakefiles/generate_jupyter_book.smk b/frangiPANe/snakefiles/generate_jupyter_book.smk
index 308016be2309b879a8746753af9520df05980be8..f54cdc1f9602b5bcd484b3f0d242cc1791988afb 100644
--- a/frangiPANe/snakefiles/generate_jupyter_book.smk
+++ b/frangiPANe/snakefiles/generate_jupyter_book.smk
@@ -2,7 +2,8 @@ rule generate_jupyter_book:
     input:
         jb_file=f"{ frangipane_obj.install_path }/report/frangiPANe_report.ipynb",
         ref_png=f"{frangipane_obj.path_stat_plot}/00_ref.png",
-        ref_csv = f"{frangipane_obj.path_stat_sum}/00_ref.txt"
+        ref_csv = f"{frangipane_obj.path_stat_sum}/00_ref.txt",
+        fastq_csv= merge_fastq_stats.stat_file
     output:
         jb_file=f"{ frangipane_obj.path_output }/report/frangiPANe_stats.ipynb"
     params:
diff --git a/frangiPANe/snakemake_scripts/generate_jb_frangiPANe.py b/frangiPANe/snakemake_scripts/generate_jb_frangiPANe.py
index 92777a5218cbf1cb67fe480defcd27f38e25c820..1df3c2d7c1cedad76903e363da9f37c974b302df 100644
--- a/frangiPANe/snakemake_scripts/generate_jb_frangiPANe.py
+++ b/frangiPANe/snakemake_scripts/generate_jb_frangiPANe.py
@@ -15,6 +15,7 @@ dico = {
     "group_file": snakemake.params.group_file,
     "ref_png" : snakemake.input.ref_png,
     "ref_csv" : snakemake.input.ref_csv,
+    "stat_file": snakemake.input.fastq_csv
     }
 
 with open(jb_input, "r", encoding="utf-8") as notebook_file: