Repository: Textualize/textual

Issue:
OSError when the file system is not available
Textual (specifically App and DOMNode) assumes that the file containing source code for Widget classes is available and raises an `OSError` when this is not the case. This information is used to render the location of CSS styles.

I'm trying to get a Textual app running in an environment in which `getpath` doesn't work (Pyodide) because there's no file system in WebAssembly. Obviously, this is a pretty extreme environment, but I think the bug remains reasonable to address.

The calls to `getfile` are already wrapped in a try/except for `TypeError` with fallback behavior, so I propose that `OSError` be handled here, too. I *can* provide a standalone test case, though it's a little involved, so I'd rather just open a PR shortly, if you'll consider it.

<img width="574" alt="image" src="https://user-images.githubusercontent.com/156560/235913223-7ebd14eb-d9d2-4014-9215-9f60118e5263.png">

Discussion:

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index af9aa228c..6e2d125b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,25 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 
 ### Fixed
 
+- Fixed crash when creating a `DirectoryTree` starting anywhere other than `.`
+- Fixed line drawing in `Tree` when `Tree.show_root` is `True` https://github.com/Textualize/textual/issues/2397
+- Fixed line drawing in `Tree` not marking branches as selected when first getting focus https://github.com/Textualize/textual/issues/2397
+
+### Changed
+
+- The DataTable cursor is now scrolled into view when the cursor coordinate is changed programmatically https://github.com/Textualize/textual/issues/2459
+- run_worker exclusive parameter is now `False` by default https://github.com/Textualize/textual/pull/2470
+- Added `always_update` as an optional argument for `reactive.var`
+
+
+### Added
+
+- Method `DataTable.move_cursor` https://github.com/Textualize/textual/issues/2472
+
+## [0.23.0] - 2023-05-03
+
+### Fixed
+
 - Fixed `outline` top and bottom not handling alpha - https://github.com/Textualize/textual/issues/2371
 - Fixed `!important` not applying to `align` https://github.com/Textualize/textual/issues/2420
 - Fixed `!important` not applying to `border` https://github.com/Textualize/textual/issues/2420
@@ -17,6 +36,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 - Fixed `!important` not applying to `overflow` https://github.com/Textualize/textual/issues/2420
 - Fixed `!important` not applying to `scrollbar-size` https://github.com/Textualize/textual/issues/2420
 - Fixed `outline-right` not being recognised https://github.com/Textualize/textual/issues/2446
+- Fixed OSError when a file system is not available https://github.com/Textualize/textual/issues/2468
 
 ### Changed
 
@@ -873,6 +893,7 @@ https://textual.textualize.io/blog/2022/11/08/version-040/#version-040
 - New handler system for messages that doesn't require inheritance
 - Improved traceback handling
 
+[0.23.0]: https://github.com/Textualize/textual/compare/v0.22.3...v0.23.0
 [0.22.3]: https://github.com/Textualize/textual/compare/v0.22.2...v0.22.3
 [0.22.2]: https://github.com/Textualize/textual/compare/v0.22.1...v0.22.2
 [0.22.1]: https://github.com/Textualize/textual/compare/v0.22.0...v0.22.1
diff --git a/FAQ.md b/FAQ.md
index ffb91b1d7..c2b268c85 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -2,20 +2,22 @@
 <!-- Do not edit by hand! -->
 
 # Frequently Asked Questions
-- [Does Textual support images?](#does-textual-support-images)
-- [How can I fix ImportError cannot import name ComposeResult from textual.app ?](#how-can-i-fix-importerror-cannot-import-name-composeresult-from-textualapp-)
-- [How can I select and copy text in a Textual app?](#how-can-i-select-and-copy-text-in-a-textual-app)
-- [How can I set a translucent app background?](#how-can-i-set-a-translucent-app-background)
-- [How do I center a widget in a screen?](#how-do-i-center-a-widget-in-a-screen)
-- [How do I pass arguments to an app?](#how-do-i-pass-arguments-to-an-app)
-- [Why do some key combinations never make it to my app?](#why-do-some-key-combinations-never-make-it-to-my-app)
-- [Why doesn't Textual look good on macOS?](#why-doesn't-textual-look-good-on-macos)
-- [Why doesn't Textual support ANSI themes?](#why-doesn't-textual-support-ansi-themes)
+- [Frequently Asked Questions](#frequently-asked-questions)
+  - [Does Textual support images?](#does-textual-support-images)
+  - [How can I fix ImportError cannot import name ComposeResult from textual.app ?](#how-can-i-fix-importerror-cannot-import-name-composeresult-from-textualapp-)
+  - [How can I select and copy text in a Textual app?](#how-can-i-select-and-copy-text-in-a-textual-app)
+  - [How can I set a translucent app background?](#how-can-i-set-a-translucent-app-background)
+  - [How do I center a widget in a screen?](#how-do-i-center-a-widget-in-a-screen)
+  - [How do I pass arguments to an app?](#how-do-i-pass-arguments-to-an-app)
+  - [Why do some key combinations never make it to my app?](#why-do-some-key-combinations-never-make-it-to-my-app)
+  - [Why doesn't Textual look good on macOS?](#why-doesnt-textual-look-good-on-macos)
+  - [Why doesn't Textual support ANSI themes?](#why-doesnt-textual-support-ansi-themes)
+  - [Why doesn't the `DataTable` scroll programmatically?](#why-doesnt-the-datatable-scroll-programmatically)
 
 <a name="does-textual-support-images"></a>
 ## Does Textual support images?
 
-Textual doesn't have built in support for images yet, but it is on the [Roadmap](https://textual.textualize.io/roadmap/).
+Textual doesn't have built-in support for images yet, but it is on the [Roadmap](https://textual.textualize.io/roadmap/).
 
 See also the [rich-pixels](https://github.com/darrenburns/rich-pixels) project for a Rich renderable for images that works with Textual.
 
@@ -231,6 +233,13 @@ Textual has a design system which guarantees apps will be readable on all platfo
 
 There is currently a light and dark version of the design system, but more are planned. It will also be possible for users to customize the source colors on a per-app or per-system basis. This means that in the future you will be able to modify the core colors to blend in with your chosen terminal theme.
 
+<a name="why-doesn't-the-`datatable`-scroll-programmatically"></a>
+## Why doesn't the `DataTable` scroll programmatically?
+
+If scrolling in your `DataTable` is _apparently_ broken, it may be because your `DataTable` is using the default value of `height: auto`.
+This means that the table will be sized to fit its rows without scrolling, which may cause the *container* (typically the screen) to scroll.
+If you would like the table itself to scroll, set the height to something other than `auto`, like `100%`.
+
 <hr>
 
 Generated by [FAQtory](https://github.com/willmcgugan/faqtory)
diff --git a/docs/blog/images/frogmouth.svg b/docs/blog/images/frogmouth.svg
new file mode 100644
index 000000000..685064d26
--- /dev/null
+++ b/docs/blog/images/frogmouth.svg
@@ -0,0 +1,268 @@
+<svg class="rich-terminal" viewBox="0 0 2092 1172.3999999999999" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-3557953295-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-3557953295-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-3557953295-r1 { fill: #00ff00 }
+.terminal-3557953295-r2 { fill: #c5c8c6 }
+.terminal-3557953295-r3 { fill: #e2e2e2 }
+.terminal-3557953295-r4 { fill: #e1e1e1 }
+.terminal-3557953295-r5 { fill: #e2e3e3;font-weight: bold }
+.terminal-3557953295-r6 { fill: #777a7e }
+.terminal-3557953295-r7 { fill: #121212 }
+.terminal-3557953295-r8 { fill: #383c42 }
+.terminal-3557953295-r9 { fill: #0178d4 }
+.terminal-3557953295-r10 { fill: #24292f }
+.terminal-3557953295-r11 { fill: #e2e3e3 }
+.terminal-3557953295-r12 { fill: #96989b }
+.terminal-3557953295-r13 { fill: #008139 }
+.terminal-3557953295-r14 { fill: #939393;font-weight: bold }
+.terminal-3557953295-r15 { fill: #d2d2d2 }
+.terminal-3557953295-r16 { fill: #89ddff;font-style: italic; }
+.terminal-3557953295-r17 { fill: #eeffff }
+.terminal-3557953295-r18 { fill: #ffcb6b }
+.terminal-3557953295-r19 { fill: #89ddff }
+.terminal-3557953295-r20 { fill: #8dabc2;font-weight: bold }
+.terminal-3557953295-r21 { fill: #e0e8ee;font-weight: bold }
+.terminal-3557953295-r22 { fill: #bb80b3 }
+.terminal-3557953295-r23 { fill: #999c9f;text-decoration: underline; }
+.terminal-3557953295-r24 { fill: #e3e4e5;text-decoration: underline; }
+.terminal-3557953295-r25 { fill: #41565f;font-style: italic; }
+.terminal-3557953295-r26 { fill: #82aaff }
+.terminal-3557953295-r27 { fill: #c3e88d }
+.terminal-3557953295-r28 { fill: #23568b }
+.terminal-3557953295-r29 { fill: #546e7a;font-style: italic; }
+.terminal-3557953295-r30 { fill: #14191f }
+.terminal-3557953295-r31 { fill: #dde8f3;font-weight: bold }
+.terminal-3557953295-r32 { fill: #ddedf9 }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-3557953295-clip-terminal">
+      <rect x="0" y="0" width="2073.0" height="1121.3999999999999" />
+    </clipPath>
+    <clipPath id="terminal-3557953295-line-0">
+    <rect x="0" y="1.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-1">
+    <rect x="0" y="25.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-2">
+    <rect x="0" y="50.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-3">
+    <rect x="0" y="74.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-4">
+    <rect x="0" y="99.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-5">
+    <rect x="0" y="123.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-6">
+    <rect x="0" y="147.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-7">
+    <rect x="0" y="172.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-8">
+    <rect x="0" y="196.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-9">
+    <rect x="0" y="221.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-10">
+    <rect x="0" y="245.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-11">
+    <rect x="0" y="269.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-12">
+    <rect x="0" y="294.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-13">
+    <rect x="0" y="318.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-14">
+    <rect x="0" y="343.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-15">
+    <rect x="0" y="367.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-16">
+    <rect x="0" y="391.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-17">
+    <rect x="0" y="416.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-18">
+    <rect x="0" y="440.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-19">
+    <rect x="0" y="465.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-20">
+    <rect x="0" y="489.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-21">
+    <rect x="0" y="513.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-22">
+    <rect x="0" y="538.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-23">
+    <rect x="0" y="562.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-24">
+    <rect x="0" y="587.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-25">
+    <rect x="0" y="611.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-26">
+    <rect x="0" y="635.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-27">
+    <rect x="0" y="660.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-28">
+    <rect x="0" y="684.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-29">
+    <rect x="0" y="709.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-30">
+    <rect x="0" y="733.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-31">
+    <rect x="0" y="757.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-32">
+    <rect x="0" y="782.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-33">
+    <rect x="0" y="806.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-34">
+    <rect x="0" y="831.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-35">
+    <rect x="0" y="855.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-36">
+    <rect x="0" y="879.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-37">
+    <rect x="0" y="904.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-38">
+    <rect x="0" y="928.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-39">
+    <rect x="0" y="953.1" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-40">
+    <rect x="0" y="977.5" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-41">
+    <rect x="0" y="1001.9" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-42">
+    <rect x="0" y="1026.3" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-43">
+    <rect x="0" y="1050.7" width="2074" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3557953295-line-44">
+    <rect x="0" y="1075.1" width="2074" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="2090" height="1170.4" rx="8"/><text class="terminal-3557953295-title" fill="#c5c8c6" text-anchor="middle" x="1045" y="27">Frogmouth</text>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3557953295-clip-terminal)">
+    <rect fill="#262626" x="0" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="12.2" y="1.5" width="2049.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="2061.8" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="0" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="12.2" y="25.9" width="512.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="524.6" y="25.9" width="1537.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="2061.8" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="0" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="12.2" y="50.3" width="2049.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#262626" x="2061.8" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="74.7" width="512.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="74.7" width="1512.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="99.1" width="134.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="146.4" y="99.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="244" y="99.1" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="390.4" y="99.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="99.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="99.1" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="99.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="99.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="123.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="36.6" y="123.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="134.2" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="146.4" y="123.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="170.8" y="123.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="231.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="244" y="123.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="268.4" y="123.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="378.2" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="390.4" y="123.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="414.8" y="123.5" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="500.2" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="123.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="610" y="123.5" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1976.4" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="123.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="123.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="36.6" y="147.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="134.2" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="146.4" y="147.9" width="378.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="147.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="597.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="610" y="147.9" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#121212" x="1976.4" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="147.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="147.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="172.3" width="512.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="597.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="610" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="622.2" y="172.3" width="463.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="1085.8" y="172.3" width="414.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="1500.6" y="172.3" width="463.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="1964.2" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#121212" x="1976.4" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="172.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="196.7" width="512.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="196.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="597.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="610" y="196.7" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#121212" x="1976.4" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="196.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="196.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="221.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="48.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="61" y="221.1" width="329.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="390.4" y="221.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="221.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="610" y="221.1" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1976.4" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="221.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="221.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="245.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="245.5" width="353.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="439.2" y="245.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="245.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="245.5" width="231.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="829.6" y="245.5" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="866.2" y="245.5" width="207.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1073.6" y="245.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1171.2" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1390.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1403" y="245.5" width="402.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1805.6" y="245.5" width="183" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="245.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="245.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="269.9" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="269.9" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="294.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="294.3" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="294.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="294.3" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="294.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="294.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="318.7" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="318.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="683.2" y="318.7" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="768.6" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="318.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="829.6" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="318.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="951.6" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="963.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="976" y="318.7" width="158.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1134.6" y="318.7" width="829.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="318.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="318.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="343.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="343.1" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="343.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="343.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="343.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="683.2" y="343.1" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="768.6" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="343.1" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="866.2" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="343.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="951.6" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="963.8" y="343.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1037" y="343.1" width="927.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="343.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="343.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="343.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="367.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#125081" x="73.2" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#125081" x="85.4" y="367.5" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="367.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="367.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="367.5" width="1342" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="367.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="367.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="367.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="391.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="391.9" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="391.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="391.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="391.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="683.2" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="695.4" y="391.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="805.2" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="391.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="854" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="866.2" y="391.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="927.2" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="939.4" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="951.6" y="391.9" width="1012.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="391.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="391.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="391.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#2c3137" x="24.4" y="416.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#2c3137" x="73.2" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#2c3137" x="85.4" y="416.3" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="416.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="416.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="416.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="416.3" width="1293.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="416.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="416.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="416.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="73.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="85.4" y="440.7" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="440.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="440.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="707.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="440.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="829.6" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="440.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1000.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1012.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1024.8" y="440.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1061.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1073.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1085.8" y="440.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1146.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1159" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1171.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1183.4" y="440.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1281" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1293.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1305.4" y="440.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1342" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1354.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1366.4" y="440.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1427.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1439.6" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1451.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1464" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1476.2" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1488.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1500.6" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1549.4" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1561.6" y="440.7" width="402.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="440.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="440.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="440.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="465.1" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="465.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="768.6" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1012.6" y="465.1" width="951.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="465.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="465.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="489.5" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="489.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="489.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="489.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="489.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="768.6" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="489.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="489.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1012.6" y="489.5" width="951.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="489.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="489.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="489.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="513.9" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="513.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="513.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="513.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="513.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="793" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="805.2" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="513.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="927.2" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="939.4" y="513.9" width="1024.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="513.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="513.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="513.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="538.3" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="538.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="538.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="538.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="538.3" width="1293.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="538.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="538.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="538.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="562.7" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="562.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="562.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="562.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="671" y="562.7" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="707.6" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="562.7" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="805.2" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="562.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="866.2" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="927.2" y="562.7" width="158.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1085.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1098" y="562.7" width="866.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="562.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="562.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="562.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="587.1" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="587.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="587.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="587.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="719.8" y="587.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="780.8" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="793" y="587.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="866.2" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="587.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="963.8" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="976" y="587.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1073.6" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1085.8" y="587.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1110.2" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1122.4" y="587.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1171.2" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1183.4" y="587.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1281" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1293.2" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1305.4" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1317.6" y="587.1" width="646.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="587.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="587.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="587.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="587.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="611.5" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="611.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="611.5" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="611.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="611.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="611.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="635.9" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="635.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="635.9" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="635.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="635.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="635.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="660.3" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="660.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="660.3" width="817.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1415.2" y="660.3" width="573.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="660.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="660.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="660.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="684.7" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="684.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="684.7" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="684.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="684.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="684.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="709.1" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="709.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="709.1" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="709.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="709.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="709.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="733.5" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="733.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="733.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="733.5" width="402.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1024.8" y="733.5" width="939.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="733.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="733.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="733.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="733.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="757.9" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="757.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="757.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="757.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="732" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="744.2" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="756.4" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="768.6" y="757.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="805.2" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="817.4" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="829.6" y="757.9" width="1134.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="757.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="757.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="757.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="757.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="782.3" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="782.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="782.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="782.3" width="1342" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="782.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="782.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="782.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="782.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="806.7" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="806.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="806.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="806.7" width="427" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1049.2" y="806.7" width="915" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="806.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="806.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="806.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="806.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="831.1" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="831.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="831.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="831.1" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="732" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="744.2" y="831.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="841.8" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="854" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="866.2" y="831.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="927.2" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="939.4" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="951.6" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="963.8" y="831.1" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1000.4" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1012.6" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1024.8" y="831.1" width="939.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="831.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="831.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="2037.4" y="831.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="831.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="855.5" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="855.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="855.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="855.5" width="1342" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="855.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="855.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="855.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="855.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="879.9" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="879.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="879.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="879.9" width="500.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1122.4" y="879.9" width="841.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="879.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="879.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="879.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="879.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="904.3" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="904.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="904.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="622.2" y="904.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="732" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="744.2" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="756.4" y="904.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="878.4" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="890.6" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="902.8" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="915" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="927.2" y="904.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="988.2" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1000.4" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1012.6" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1024.8" y="904.3" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1061.4" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1073.6" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1085.8" y="904.3" width="878.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="1964.2" y="904.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="904.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="904.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="904.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="928.7" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="928.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#263238" x="597.8" y="928.7" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="928.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="928.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="928.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="953.1" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="953.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="953.1" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="953.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="953.1" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="953.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="977.5" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="977.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="977.5" width="0" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="977.5" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="977.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="977.5" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="977.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="1001.9" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="1001.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="1001.9" width="1390.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="1001.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="1001.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="1001.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="24.4" y="1026.3" width="488" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="1026.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="597.8" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="610" y="1026.3" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1976.4" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="1026.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="1026.3" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="1026.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="24.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="36.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="48.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="61" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="73.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="85.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="97.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="109.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="122" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="134.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="146.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="158.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="170.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="183" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="195.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="207.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="219.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#23568b" x="231.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="244" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="256.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="268.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="280.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="292.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="305" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="317.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="329.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="341.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="353.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="366" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="378.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="390.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="402.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="414.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="427" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="439.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="451.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="463.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="475.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="488" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="500.2" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="512.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="1050.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="597.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="610" y="1050.7" width="1366.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#121212" x="1976.4" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="1988.6" y="1050.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#14191f" x="2037.4" y="1050.7" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="1050.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="0" y="1075.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="12.2" y="1075.1" width="512.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#24292f" x="524.6" y="1075.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="536.8" y="1075.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="549" y="1075.1" width="1512.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="2061.8" y="1075.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0053aa" x="0" y="1099.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="48.8" y="1099.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0053aa" x="122" y="1099.5" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="170.8" y="1099.5" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#0053aa" x="256.2" y="1099.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="353.8" y="1099.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#0053aa" x="500.2" y="1099.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="597.8" y="1099.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="671" y="1099.5" width="1403" height="24.65" shape-rendering="crispEdges"/>
+    <g class="terminal-3557953295-matrix">
+    <text class="terminal-3557953295-r2" x="2074" y="20" textLength="12.2" clip-path="url(#terminal-3557953295-line-0)">
+</text><text class="terminal-3557953295-r3" x="12.2" y="44.4" textLength="512.4" clip-path="url(#terminal-3557953295-line-1)">/Users/willmcgugan/projects/textual/FAQ.md</text><text class="terminal-3557953295-r2" x="2074" y="44.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-1)">
+</text><text class="terminal-3557953295-r2" x="2074" y="68.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-2)">
+</text><text class="terminal-3557953295-r2" x="2074" y="93.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-3)">
+</text><text class="terminal-3557953295-r2" x="2074" y="117.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-4)">
+</text><text class="terminal-3557953295-r5" x="36.6" y="142" textLength="97.6" clip-path="url(#terminal-3557953295-line-5)">Contents</text><text class="terminal-3557953295-r6" x="170.8" y="142" textLength="61" clip-path="url(#terminal-3557953295-line-5)">Local</text><text class="terminal-3557953295-r6" x="268.4" y="142" textLength="109.8" clip-path="url(#terminal-3557953295-line-5)">Bookmarks</text><text class="terminal-3557953295-r6" x="414.8" y="142" textLength="85.4" clip-path="url(#terminal-3557953295-line-5)">History</text><text class="terminal-3557953295-r7" x="597.8" y="142" textLength="12.2" clip-path="url(#terminal-3557953295-line-5)">▁</text><text class="terminal-3557953295-r7" x="610" y="142" textLength="1366.4" clip-path="url(#terminal-3557953295-line-5)">▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁</text><text class="terminal-3557953295-r7" x="1976.4" y="142" textLength="12.2" clip-path="url(#terminal-3557953295-line-5)">▁</text><text class="terminal-3557953295-r2" x="2074" y="142" textLength="12.2" clip-path="url(#terminal-3557953295-line-5)">
+</text><text class="terminal-3557953295-r8" x="12.2" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">━</text><text class="terminal-3557953295-r8" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">╸</text><text class="terminal-3557953295-r9" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-3557953295-line-6)">━━━━━━━━</text><text class="terminal-3557953295-r8" x="134.2" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">╺</text><text class="terminal-3557953295-r8" x="146.4" y="166.4" textLength="378.2" clip-path="url(#terminal-3557953295-line-6)">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</text><text class="terminal-3557953295-r7" x="597.8" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">▎</text><text class="terminal-3557953295-r10" x="1976.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">▊</text><text class="terminal-3557953295-r2" x="2074" y="166.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-6)">
+</text><text class="terminal-3557953295-r7" x="597.8" y="190.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-7)">▎</text><text class="terminal-3557953295-r5" x="1085.8" y="190.8" textLength="414.8" clip-path="url(#terminal-3557953295-line-7)">How&#160;do&#160;I&#160;pass&#160;arguments&#160;to&#160;an&#160;app?</text><text class="terminal-3557953295-r10" x="1976.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-7)">▊</text><text class="terminal-3557953295-r2" x="2074" y="190.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-7)">
+</text><text class="terminal-3557953295-r9" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-8)">┏</text><text class="terminal-3557953295-r9" x="12.2" y="215.2" textLength="512.4" clip-path="url(#terminal-3557953295-line-8)">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</text><text class="terminal-3557953295-r9" x="524.6" y="215.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-8)">┓</text><text class="terminal-3557953295-r7" x="597.8" y="215.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-8)">▎</text><text class="terminal-3557953295-r10" x="1976.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-8)">▊</text><text class="terminal-3557953295-r2" x="2074" y="215.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-8)">
+</text><text class="terminal-3557953295-r9" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">┃</text><text class="terminal-3557953295-r11" x="24.4" y="239.6" textLength="24.4" clip-path="url(#terminal-3557953295-line-9)">▼&#160;</text><text class="terminal-3557953295-r12" x="48.8" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">Ⅰ</text><text class="terminal-3557953295-r11" x="61" y="239.6" textLength="329.4" clip-path="url(#terminal-3557953295-line-9)">&#160;Frequently&#160;Asked&#160;Questions</text><text class="terminal-3557953295-r9" x="524.6" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">┃</text><text class="terminal-3557953295-r7" x="597.8" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">▔</text><text class="terminal-3557953295-r7" x="610" y="239.6" textLength="1366.4" clip-path="url(#terminal-3557953295-line-9)">▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔</text><text class="terminal-3557953295-r7" x="1976.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">▔</text><text class="terminal-3557953295-r2" x="2074" y="239.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-9)">
+</text><text class="terminal-3557953295-r9" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3557953295-line-10)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="264" textLength="48.8" clip-path="url(#terminal-3557953295-line-10)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="264" textLength="12.2" clip-path="url(#terminal-3557953295-line-10)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="264" textLength="353.8" clip-path="url(#terminal-3557953295-line-10)">&#160;Does&#160;Textual&#160;support&#160;images?</text><text class="terminal-3557953295-r9" x="524.6" y="264" textLength="12.2" clip-path="url(#terminal-3557953295-line-10)">┃</text><text class="terminal-3557953295-r4" x="597.8" y="264" textLength="231.8" clip-path="url(#terminal-3557953295-line-10)">When&#160;creating&#160;your&#160;</text><text class="terminal-3557953295-r14" x="829.6" y="264" textLength="36.6" clip-path="url(#terminal-3557953295-line-10)">App</text><text class="terminal-3557953295-r4" x="866.2" y="264" textLength="207.4" clip-path="url(#terminal-3557953295-line-10)">&#160;class,&#160;override&#160;</text><text class="terminal-3557953295-r14" x="1073.6" y="264" textLength="97.6" clip-path="url(#terminal-3557953295-line-10)">__init__</text><text class="terminal-3557953295-r4" x="1171.2" y="264" textLength="219.6" clip-path="url(#terminal-3557953295-line-10)">&#160;as&#160;you&#160;would&#160;when</text><text class="terminal-3557953295-r4" x="1403" y="264" textLength="402.6" clip-path="url(#terminal-3557953295-line-10)">inheriting&#160;normally.&#160;For&#160;example:</text><text class="terminal-3557953295-r2" x="2074" y="264" textLength="12.2" clip-path="url(#terminal-3557953295-line-10)">
+</text><text class="terminal-3557953295-r9" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-11)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="288.4" textLength="48.8" clip-path="url(#terminal-3557953295-line-11)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="288.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-11)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="288.4" textLength="427" clip-path="url(#terminal-3557953295-line-11)">&#160;How&#160;can&#160;I&#160;fix&#160;ImportError&#160;cannot&#160;i</text><text class="terminal-3557953295-r9" x="524.6" y="288.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-11)">┃</text><text class="terminal-3557953295-r2" x="2074" y="288.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-11)">
+</text><text class="terminal-3557953295-r9" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-12)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="312.8" textLength="48.8" clip-path="url(#terminal-3557953295-line-12)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="312.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-12)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="312.8" textLength="427" clip-path="url(#terminal-3557953295-line-12)">&#160;How&#160;can&#160;I&#160;select&#160;and&#160;copy&#160;text&#160;in&#160;</text><text class="terminal-3557953295-r9" x="524.6" y="312.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-12)">┃</text><text class="terminal-3557953295-r2" x="2074" y="312.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-12)">
+</text><text class="terminal-3557953295-r9" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="337.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-13)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="337.2" textLength="427" clip-path="url(#terminal-3557953295-line-13)">&#160;How&#160;can&#160;I&#160;set&#160;a&#160;translucent&#160;app&#160;ba</text><text class="terminal-3557953295-r9" x="524.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">┃</text><text class="terminal-3557953295-r16" x="622.2" y="337.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-13)">from</text><text class="terminal-3557953295-r18" x="683.2" y="337.2" textLength="85.4" clip-path="url(#terminal-3557953295-line-13)">textual</text><text class="terminal-3557953295-r18" x="768.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">.</text><text class="terminal-3557953295-r18" x="780.8" y="337.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-13)">app</text><text class="terminal-3557953295-r16" x="829.6" y="337.2" textLength="73.2" clip-path="url(#terminal-3557953295-line-13)">import</text><text class="terminal-3557953295-r17" x="915" y="337.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-13)">App</text><text class="terminal-3557953295-r19" x="951.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">,</text><text class="terminal-3557953295-r17" x="976" y="337.2" textLength="158.6" clip-path="url(#terminal-3557953295-line-13)">ComposeResult</text><text class="terminal-3557953295-r2" x="2074" y="337.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-13)">
+</text><text class="terminal-3557953295-r9" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-14)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="361.6" textLength="48.8" clip-path="url(#terminal-3557953295-line-14)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="361.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-14)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="361.6" textLength="427" clip-path="url(#terminal-3557953295-line-14)">&#160;How&#160;do&#160;I&#160;center&#160;a&#160;widget&#160;in&#160;a&#160;scre</text><text class="terminal-3557953295-r9" x="524.6" y="361.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-14)">┃</text><text class="terminal-3557953295-r16" x="622.2" y="361.6" textLength="48.8" clip-path="url(#terminal-3557953295-line-14)">from</text><text class="terminal-3557953295-r18" x="683.2" y="361.6" textLength="85.4" clip-path="url(#terminal-3557953295-line-14)">textual</text><text class="terminal-3557953295-r18" x="768.6" y="361.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-14)">.</text><text class="terminal-3557953295-r18" x="780.8" y="361.6" textLength="85.4" clip-path="url(#terminal-3557953295-line-14)">widgets</text><text class="terminal-3557953295-r16" x="878.4" y="361.6" textLength="73.2" clip-path="url(#terminal-3557953295-line-14)">import</text><text class="terminal-3557953295-r17" x="963.8" y="361.6" textLength="73.2" clip-path="url(#terminal-3557953295-line-14)">Static</text><text class="terminal-3557953295-r2" x="2074" y="361.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-14)">
+</text><text class="terminal-3557953295-r9" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3557953295-line-15)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="386" textLength="48.8" clip-path="url(#terminal-3557953295-line-15)">├──&#160;</text><text class="terminal-3557953295-r20" x="73.2" y="386" textLength="12.2" clip-path="url(#terminal-3557953295-line-15)">Ⅱ</text><text class="terminal-3557953295-r21" x="85.4" y="386" textLength="427" clip-path="url(#terminal-3557953295-line-15)">&#160;How&#160;do&#160;I&#160;pass&#160;arguments&#160;to&#160;an&#160;app?</text><text class="terminal-3557953295-r9" x="524.6" y="386" textLength="12.2" clip-path="url(#terminal-3557953295-line-15)">┃</text><text class="terminal-3557953295-r2" x="2074" y="386" textLength="12.2" clip-path="url(#terminal-3557953295-line-15)">
+</text><text class="terminal-3557953295-r9" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="410.4" textLength="48.8" clip-path="url(#terminal-3557953295-line-16)">├──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="410.4" textLength="427" clip-path="url(#terminal-3557953295-line-16)">&#160;Why&#160;do&#160;some&#160;key&#160;combinations&#160;never</text><text class="terminal-3557953295-r9" x="524.6" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">┃</text><text class="terminal-3557953295-r22" x="622.2" y="410.4" textLength="61" clip-path="url(#terminal-3557953295-line-16)">class</text><text class="terminal-3557953295-r18" x="695.4" y="410.4" textLength="109.8" clip-path="url(#terminal-3557953295-line-16)">Greetings</text><text class="terminal-3557953295-r19" x="805.2" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">(</text><text class="terminal-3557953295-r17" x="817.4" y="410.4" textLength="36.6" clip-path="url(#terminal-3557953295-line-16)">App</text><text class="terminal-3557953295-r19" x="854" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">[</text><text class="terminal-3557953295-r19" x="866.2" y="410.4" textLength="48.8" clip-path="url(#terminal-3557953295-line-16)">None</text><text class="terminal-3557953295-r19" x="915" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">]</text><text class="terminal-3557953295-r19" x="927.2" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">)</text><text class="terminal-3557953295-r19" x="939.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">:</text><text class="terminal-3557953295-r2" x="2074" y="410.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-16)">
+</text><text class="terminal-3557953295-r9" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-17)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="434.8" textLength="48.8" clip-path="url(#terminal-3557953295-line-17)">├──&#160;</text><text class="terminal-3557953295-r23" x="73.2" y="434.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-17)">Ⅱ</text><text class="terminal-3557953295-r24" x="85.4" y="434.8" textLength="427" clip-path="url(#terminal-3557953295-line-17)">&#160;Why&#160;doesn&#x27;t&#160;Textual&#160;look&#160;good&#160;on&#160;m</text><text class="terminal-3557953295-r9" x="524.6" y="434.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-17)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="434.8" textLength="48.8" clip-path="url(#terminal-3557953295-line-17)">│&#160;&#160;&#160;</text><text class="terminal-3557953295-r2" x="2074" y="434.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-17)">
+</text><text class="terminal-3557953295-r9" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">┃</text><text class="terminal-3557953295-r13" x="24.4" y="459.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-18)">└──&#160;</text><text class="terminal-3557953295-r12" x="73.2" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">Ⅱ</text><text class="terminal-3557953295-r11" x="85.4" y="459.2" textLength="427" clip-path="url(#terminal-3557953295-line-18)">&#160;Why&#160;doesn&#x27;t&#160;Textual&#160;support&#160;ANSI&#160;t</text><text class="terminal-3557953295-r9" x="524.6" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="459.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-18)">│&#160;&#160;&#160;</text><text class="terminal-3557953295-r22" x="671" y="459.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-18)">def</text><text class="terminal-3557953295-r26" x="719.8" y="459.2" textLength="97.6" clip-path="url(#terminal-3557953295-line-18)">__init__</text><text class="terminal-3557953295-r19" x="817.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">(</text><text class="terminal-3557953295-r19" x="829.6" y="459.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-18)">self</text><text class="terminal-3557953295-r19" x="878.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">,</text><text class="terminal-3557953295-r17" x="902.8" y="459.2" textLength="97.6" clip-path="url(#terminal-3557953295-line-18)">greeting</text><text class="terminal-3557953295-r19" x="1000.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">:</text><text class="terminal-3557953295-r26" x="1024.8" y="459.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-18)">str</text><text class="terminal-3557953295-r19" x="1061.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">=</text><text class="terminal-3557953295-r27" x="1073.6" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">&quot;</text><text class="terminal-3557953295-r27" x="1085.8" y="459.2" textLength="61" clip-path="url(#terminal-3557953295-line-18)">Hello</text><text class="terminal-3557953295-r27" x="1146.8" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">&quot;</text><text class="terminal-3557953295-r19" x="1159" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">,</text><text class="terminal-3557953295-r17" x="1183.4" y="459.2" textLength="97.6" clip-path="url(#terminal-3557953295-line-18)">to_greet</text><text class="terminal-3557953295-r19" x="1281" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">:</text><text class="terminal-3557953295-r26" x="1305.4" y="459.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-18)">str</text><text class="terminal-3557953295-r19" x="1342" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">=</text><text class="terminal-3557953295-r27" x="1354.2" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">&quot;</text><text class="terminal-3557953295-r27" x="1366.4" y="459.2" textLength="61" clip-path="url(#terminal-3557953295-line-18)">World</text><text class="terminal-3557953295-r27" x="1427.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">&quot;</text><text class="terminal-3557953295-r19" x="1439.6" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">)</text><text class="terminal-3557953295-r19" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">-</text><text class="terminal-3557953295-r19" x="1476.2" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">&gt;</text><text class="terminal-3557953295-r19" x="1500.6" y="459.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-18)">None</text><text class="terminal-3557953295-r19" x="1549.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">:</text><text class="terminal-3557953295-r2" x="2074" y="459.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-18)">
+</text><text class="terminal-3557953295-r9" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-19)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="483.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-19)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="483.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-19)">│&#160;&#160;&#160;│&#160;&#160;&#160;</text><text class="terminal-3557953295-r19" x="719.8" y="483.6" textLength="48.8" clip-path="url(#terminal-3557953295-line-19)">self</text><text class="terminal-3557953295-r19" x="768.6" y="483.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-19)">.</text><text class="terminal-3557953295-r17" x="780.8" y="483.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-19)">greeting</text><text class="terminal-3557953295-r19" x="890.6" y="483.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-19)">=</text><text class="terminal-3557953295-r17" x="915" y="483.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-19)">greeting</text><text class="terminal-3557953295-r2" x="2074" y="483.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-19)">
+</text><text class="terminal-3557953295-r9" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3557953295-line-20)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="508" textLength="12.2" clip-path="url(#terminal-3557953295-line-20)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="508" textLength="97.6" clip-path="url(#terminal-3557953295-line-20)">│&#160;&#160;&#160;│&#160;&#160;&#160;</text><text class="terminal-3557953295-r19" x="719.8" y="508" textLength="48.8" clip-path="url(#terminal-3557953295-line-20)">self</text><text class="terminal-3557953295-r19" x="768.6" y="508" textLength="12.2" clip-path="url(#terminal-3557953295-line-20)">.</text><text class="terminal-3557953295-r17" x="780.8" y="508" textLength="97.6" clip-path="url(#terminal-3557953295-line-20)">to_greet</text><text class="terminal-3557953295-r19" x="890.6" y="508" textLength="12.2" clip-path="url(#terminal-3557953295-line-20)">=</text><text class="terminal-3557953295-r17" x="915" y="508" textLength="97.6" clip-path="url(#terminal-3557953295-line-20)">to_greet</text><text class="terminal-3557953295-r2" x="2074" y="508" textLength="12.2" clip-path="url(#terminal-3557953295-line-20)">
+</text><text class="terminal-3557953295-r9" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="532.4" textLength="97.6" clip-path="url(#terminal-3557953295-line-21)">│&#160;&#160;&#160;│&#160;&#160;&#160;</text><text class="terminal-3557953295-r26" x="719.8" y="532.4" textLength="61" clip-path="url(#terminal-3557953295-line-21)">super</text><text class="terminal-3557953295-r19" x="780.8" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">(</text><text class="terminal-3557953295-r19" x="793" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">)</text><text class="terminal-3557953295-r19" x="805.2" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">.</text><text class="terminal-3557953295-r26" x="817.4" y="532.4" textLength="97.6" clip-path="url(#terminal-3557953295-line-21)">__init__</text><text class="terminal-3557953295-r19" x="915" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">(</text><text class="terminal-3557953295-r19" x="927.2" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">)</text><text class="terminal-3557953295-r2" x="2074" y="532.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-21)">
+</text><text class="terminal-3557953295-r9" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-22)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="556.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-22)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="556.8" textLength="48.8" clip-path="url(#terminal-3557953295-line-22)">│&#160;&#160;&#160;</text><text class="terminal-3557953295-r2" x="2074" y="556.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-22)">
+</text><text class="terminal-3557953295-r9" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="581.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-23)">│&#160;&#160;&#160;</text><text class="terminal-3557953295-r22" x="671" y="581.2" textLength="36.6" clip-path="url(#terminal-3557953295-line-23)">def</text><text class="terminal-3557953295-r26" x="719.8" y="581.2" textLength="85.4" clip-path="url(#terminal-3557953295-line-23)">compose</text><text class="terminal-3557953295-r19" x="805.2" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">(</text><text class="terminal-3557953295-r19" x="817.4" y="581.2" textLength="48.8" clip-path="url(#terminal-3557953295-line-23)">self</text><text class="terminal-3557953295-r19" x="866.2" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">)</text><text class="terminal-3557953295-r19" x="890.6" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">-</text><text class="terminal-3557953295-r19" x="902.8" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">&gt;</text><text class="terminal-3557953295-r17" x="927.2" y="581.2" textLength="158.6" clip-path="url(#terminal-3557953295-line-23)">ComposeResult</text><text class="terminal-3557953295-r19" x="1085.8" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">:</text><text class="terminal-3557953295-r2" x="2074" y="581.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-23)">
+</text><text class="terminal-3557953295-r9" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">┃</text><text class="terminal-3557953295-r25" x="622.2" y="605.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-24)">│&#160;&#160;&#160;│&#160;&#160;&#160;</text><text class="terminal-3557953295-r22" x="719.8" y="605.6" textLength="61" clip-path="url(#terminal-3557953295-line-24)">yield</text><text class="terminal-3557953295-r17" x="793" y="605.6" textLength="73.2" clip-path="url(#terminal-3557953295-line-24)">Static</text><text class="terminal-3557953295-r19" x="866.2" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">(</text><text class="terminal-3557953295-r22" x="878.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">f</text><text class="terminal-3557953295-r27" x="890.6" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">&quot;</text><text class="terminal-3557953295-r19" x="902.8" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">{</text><text class="terminal-3557953295-r19" x="915" y="605.6" textLength="48.8" clip-path="url(#terminal-3557953295-line-24)">self</text><text class="terminal-3557953295-r19" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">.</text><text class="terminal-3557953295-r17" x="976" y="605.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-24)">greeting</text><text class="terminal-3557953295-r19" x="1073.6" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">}</text><text class="terminal-3557953295-r27" x="1085.8" y="605.6" textLength="24.4" clip-path="url(#terminal-3557953295-line-24)">,&#160;</text><text class="terminal-3557953295-r19" x="1110.2" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">{</text><text class="terminal-3557953295-r19" x="1122.4" y="605.6" textLength="48.8" clip-path="url(#terminal-3557953295-line-24)">self</text><text class="terminal-3557953295-r19" x="1171.2" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">.</text><text class="terminal-3557953295-r17" x="1183.4" y="605.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-24)">to_greet</text><text class="terminal-3557953295-r19" x="1281" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">}</text><text class="terminal-3557953295-r27" x="1293.2" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">&quot;</text><text class="terminal-3557953295-r19" x="1305.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">)</text><text class="terminal-3557953295-r2" x="2074" y="605.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-24)">
+</text><text class="terminal-3557953295-r9" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3557953295-line-25)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="630" textLength="12.2" clip-path="url(#terminal-3557953295-line-25)">┃</text><text class="terminal-3557953295-r2" x="2074" y="630" textLength="12.2" clip-path="url(#terminal-3557953295-line-25)">
+</text><text class="terminal-3557953295-r9" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-26)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="654.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-26)">┃</text><text class="terminal-3557953295-r2" x="2074" y="654.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-26)">
+</text><text class="terminal-3557953295-r9" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-27)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="678.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-27)">┃</text><text class="terminal-3557953295-r4" x="597.8" y="678.8" textLength="817.4" clip-path="url(#terminal-3557953295-line-27)">Then&#160;the&#160;app&#160;can&#160;be&#160;run,&#160;passing&#160;in&#160;various&#160;arguments;&#160;for&#160;example:</text><text class="terminal-3557953295-r2" x="2074" y="678.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-27)">
+</text><text class="terminal-3557953295-r9" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-28)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="703.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-28)">┃</text><text class="terminal-3557953295-r28" x="2037.4" y="703.2" textLength="24.4" clip-path="url(#terminal-3557953295-line-28)">▅▅</text><text class="terminal-3557953295-r2" x="2074" y="703.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-28)">
+</text><text class="terminal-3557953295-r9" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-29)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="727.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-29)">┃</text><text class="terminal-3557953295-r2" x="2074" y="727.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-29)">
+</text><text class="terminal-3557953295-r9" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3557953295-line-30)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="752" textLength="12.2" clip-path="url(#terminal-3557953295-line-30)">┃</text><text class="terminal-3557953295-r29" x="622.2" y="752" textLength="402.6" clip-path="url(#terminal-3557953295-line-30)">#&#160;Running&#160;with&#160;default&#160;arguments.</text><text class="terminal-3557953295-r2" x="2074" y="752" textLength="12.2" clip-path="url(#terminal-3557953295-line-30)">
+</text><text class="terminal-3557953295-r9" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">┃</text><text class="terminal-3557953295-r17" x="622.2" y="776.4" textLength="109.8" clip-path="url(#terminal-3557953295-line-31)">Greetings</text><text class="terminal-3557953295-r19" x="732" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">(</text><text class="terminal-3557953295-r19" x="744.2" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">)</text><text class="terminal-3557953295-r19" x="756.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">.</text><text class="terminal-3557953295-r17" x="768.6" y="776.4" textLength="36.6" clip-path="url(#terminal-3557953295-line-31)">run</text><text class="terminal-3557953295-r19" x="805.2" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">(</text><text class="terminal-3557953295-r19" x="817.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">)</text><text class="terminal-3557953295-r2" x="2074" y="776.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-31)">
+</text><text class="terminal-3557953295-r9" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-32)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="800.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-32)">┃</text><text class="terminal-3557953295-r2" x="2074" y="800.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-32)">
+</text><text class="terminal-3557953295-r9" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-33)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="825.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-33)">┃</text><text class="terminal-3557953295-r29" x="622.2" y="825.2" textLength="427" clip-path="url(#terminal-3557953295-line-33)">#&#160;Running&#160;with&#160;a&#160;keyword&#160;arguyment.</text><text class="terminal-3557953295-r2" x="2074" y="825.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-33)">
+</text><text class="terminal-3557953295-r9" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">┃</text><text class="terminal-3557953295-r17" x="622.2" y="849.6" textLength="109.8" clip-path="url(#terminal-3557953295-line-34)">Greetings</text><text class="terminal-3557953295-r19" x="732" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">(</text><text class="terminal-3557953295-r17" x="744.2" y="849.6" textLength="97.6" clip-path="url(#terminal-3557953295-line-34)">to_greet</text><text class="terminal-3557953295-r19" x="841.8" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">=</text><text class="terminal-3557953295-r27" x="854" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">&quot;</text><text class="terminal-3557953295-r27" x="866.2" y="849.6" textLength="61" clip-path="url(#terminal-3557953295-line-34)">davep</text><text class="terminal-3557953295-r27" x="927.2" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">&quot;</text><text class="terminal-3557953295-r19" x="939.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">)</text><text class="terminal-3557953295-r19" x="951.6" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">.</text><text class="terminal-3557953295-r17" x="963.8" y="849.6" textLength="36.6" clip-path="url(#terminal-3557953295-line-34)">run</text><text class="terminal-3557953295-r19" x="1000.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">(</text><text class="terminal-3557953295-r19" x="1012.6" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">)</text><text class="terminal-3557953295-r30" x="2037.4" y="849.6" textLength="24.4" clip-path="url(#terminal-3557953295-line-34)">▅▅</text><text class="terminal-3557953295-r2" x="2074" y="849.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-34)">
+</text><text class="terminal-3557953295-r9" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3557953295-line-35)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="874" textLength="12.2" clip-path="url(#terminal-3557953295-line-35)">┃</text><text class="terminal-3557953295-r2" x="2074" y="874" textLength="12.2" clip-path="url(#terminal-3557953295-line-35)">
+</text><text class="terminal-3557953295-r9" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-36)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="898.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-36)">┃</text><text class="terminal-3557953295-r29" x="622.2" y="898.4" textLength="500.2" clip-path="url(#terminal-3557953295-line-36)">#&#160;Running&#160;with&#160;both&#160;positional&#160;arguments.</text><text class="terminal-3557953295-r2" x="2074" y="898.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-36)">
+</text><text class="terminal-3557953295-r9" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">┃</text><text class="terminal-3557953295-r17" x="622.2" y="922.8" textLength="109.8" clip-path="url(#terminal-3557953295-line-37)">Greetings</text><text class="terminal-3557953295-r19" x="732" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">(</text><text class="terminal-3557953295-r27" x="744.2" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">&quot;</text><text class="terminal-3557953295-r27" x="756.4" y="922.8" textLength="122" clip-path="url(#terminal-3557953295-line-37)">Well&#160;hello</text><text class="terminal-3557953295-r27" x="878.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">&quot;</text><text class="terminal-3557953295-r19" x="890.6" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">,</text><text class="terminal-3557953295-r27" x="915" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">&quot;</text><text class="terminal-3557953295-r27" x="927.2" y="922.8" textLength="61" clip-path="url(#terminal-3557953295-line-37)">there</text><text class="terminal-3557953295-r27" x="988.2" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">&quot;</text><text class="terminal-3557953295-r19" x="1000.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">)</text><text class="terminal-3557953295-r19" x="1012.6" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">.</text><text class="terminal-3557953295-r17" x="1024.8" y="922.8" textLength="36.6" clip-path="url(#terminal-3557953295-line-37)">run</text><text class="terminal-3557953295-r19" x="1061.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">(</text><text class="terminal-3557953295-r19" x="1073.6" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">)</text><text class="terminal-3557953295-r2" x="2074" y="922.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-37)">
+</text><text class="terminal-3557953295-r9" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-38)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="947.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-38)">┃</text><text class="terminal-3557953295-r2" x="2074" y="947.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-38)">
+</text><text class="terminal-3557953295-r9" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-39)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="971.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-39)">┃</text><text class="terminal-3557953295-r2" x="2074" y="971.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-39)">
+</text><text class="terminal-3557953295-r9" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3557953295-line-40)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="996" textLength="12.2" clip-path="url(#terminal-3557953295-line-40)">┃</text><text class="terminal-3557953295-r2" x="2074" y="996" textLength="12.2" clip-path="url(#terminal-3557953295-line-40)">
+</text><text class="terminal-3557953295-r9" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-41)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="1020.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-41)">┃</text><text class="terminal-3557953295-r2" x="2074" y="1020.4" textLength="12.2" clip-path="url(#terminal-3557953295-line-41)">
+</text><text class="terminal-3557953295-r9" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-42)">┃</text><text class="terminal-3557953295-r9" x="524.6" y="1044.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-42)">┃</text><text class="terminal-3557953295-r7" x="597.8" y="1044.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-42)">▁</text><text class="terminal-3557953295-r7" x="610" y="1044.8" textLength="1366.4" clip-path="url(#terminal-3557953295-line-42)">▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁</text><text class="terminal-3557953295-r7" x="1976.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-42)">▁</text><text class="terminal-3557953295-r2" x="2074" y="1044.8" textLength="12.2" clip-path="url(#terminal-3557953295-line-42)">
+</text><text class="terminal-3557953295-r9" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">┃</text><text class="terminal-3557953295-r28" x="244" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">▉</text><text class="terminal-3557953295-r9" x="524.6" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">┃</text><text class="terminal-3557953295-r7" x="597.8" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">▎</text><text class="terminal-3557953295-r10" x="1976.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">▊</text><text class="terminal-3557953295-r2" x="2074" y="1069.2" textLength="12.2" clip-path="url(#terminal-3557953295-line-43)">
+</text><text class="terminal-3557953295-r9" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-44)">┗</text><text class="terminal-3557953295-r9" x="12.2" y="1093.6" textLength="512.4" clip-path="url(#terminal-3557953295-line-44)">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</text><text class="terminal-3557953295-r9" x="524.6" y="1093.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-44)">┛</text><text class="terminal-3557953295-r2" x="2074" y="1093.6" textLength="12.2" clip-path="url(#terminal-3557953295-line-44)">
+</text><text class="terminal-3557953295-r31" x="0" y="1118" textLength="48.8" clip-path="url(#terminal-3557953295-line-45)">&#160;F1&#160;</text><text class="terminal-3557953295-r32" x="48.8" y="1118" textLength="73.2" clip-path="url(#terminal-3557953295-line-45)">&#160;Help&#160;</text><text class="terminal-3557953295-r31" x="122" y="1118" textLength="48.8" clip-path="url(#terminal-3557953295-line-45)">&#160;F2&#160;</text><text class="terminal-3557953295-r32" x="170.8" y="1118" textLength="85.4" clip-path="url(#terminal-3557953295-line-45)">&#160;About&#160;</text><text class="terminal-3557953295-r31" x="256.2" y="1118" textLength="97.6" clip-path="url(#terminal-3557953295-line-45)">&#160;CTRL+N&#160;</text><text class="terminal-3557953295-r32" x="353.8" y="1118" textLength="146.4" clip-path="url(#terminal-3557953295-line-45)">&#160;Navigation&#160;</text><text class="terminal-3557953295-r31" x="500.2" y="1118" textLength="97.6" clip-path="url(#terminal-3557953295-line-45)">&#160;CTRL+Q&#160;</text><text class="terminal-3557953295-r32" x="597.8" y="1118" textLength="73.2" clip-path="url(#terminal-3557953295-line-45)">&#160;Quit&#160;</text>
+    </g>
+    </g>
+</svg>
diff --git a/docs/blog/posts/release0-23-0.md b/docs/blog/posts/release0-23-0.md
new file mode 100644
index 000000000..8fbe14573
--- /dev/null
+++ b/docs/blog/posts/release0-23-0.md
@@ -0,0 +1,88 @@
+---
+draft: false
+date: 2023-05-03
+categories:
+  - Release
+title: "Textual 0.23.0 improves message handling"
+authors:
+  - willmcgugan
+---
+
+# Textual 0.23.0 improves message handling
+
+It's been a busy couple of weeks at Textualize.
+We've been building apps with [Textual](https://github.com/Textualize/textual), as part of our *dog-fooding* week.
+The first app, [Frogmouth](https://github.com/Textualize/frogmouth), was released at the weekend and already has 1K GitHub stars!
+Expect two more such apps this month.
+
+<!-- more -->
+
+<div>
+--8<-- "docs/blog/images/frogmouth.svg"
+</div>
+
+!!! tip
+
+    Join our [mailing list](http://eepurl.com/hL0BF1) if you would like to be the first to hear about our apps.
+
+We haven't stopped developing Textual in that time.
+Today we released version 0.23.0 which has a really interesting API update I'd like to introduce.
+
+Textual *widgets* can send messages to each other.
+To respond to those messages, you implement a message handler with a naming convention.
+For instance, the [Button](/widget_gallery/#button) widget sends a `Pressed` event.
+To handle that event, you implement a method called `on_button_pressed`.
+
+Simple enough, but handler methods are called to handle pressed events from *all* Buttons.
+To manage multiple buttons you typically had to write a large `if` statement to wire up each button to the code it should run.
+It didn't take many Buttons before the handler became hard to follow.
+
+## On decorator
+
+Version 0.23.0 introduces the [`@on`](/guide/events/#on-decorator) decorator which allows you to dispatch events based on the widget that initiated them.
+
+This is probably best explained in code.
+The following two listings respond to buttons being pressed.
+The first uses a single message handler, the second uses the decorator approach:
+
+=== "on_decorator01.py"
+
+    ```python title="on_decorator01.py"
+    --8<-- "docs/examples/events/on_decorator01.py"
+    ```
+
+    1. The message handler is called when any button is pressed
+
+=== "on_decorator02.py"
+
+    ```python title="on_decorator02.py"
+    --8<-- "docs/examples/events/on_decorator02.py"
+    ```
+
+    1. Matches the button with an id of "bell" (note the `#` to match the id)
+    2. Matches the button with class names "toggle" *and* "dark"
+    3. Matches the button with an id of "quit"
+
+=== "Output"
+
+    ```{.textual path="docs/examples/events/on_decorator01.py"}
+    ```
+
+The decorator dispatches events based on a CSS selector.
+This means that you could have a handler per button, or a handler for buttons with a shared class, or parent.
+
+We think this is a very flexible mechanism that will help keep code readable and maintainable.
+
+## Why didn't we do this earlier?
+
+It's a reasonable question to ask: why didn't we implement this in an earlier version?
+We were certainly aware there was a deficiency in the API.
+
+The truth is simply that we didn't have an elegant solution in mind until recently.
+The `@on` decorator is, I believe, an elegant and powerful mechanism for dispatching handlers.
+It might seem obvious in hindsight, but it took many iterations and brainstorming in the office to come up with it!
+
+
+## Join us
+
+If you want to talk about this update or anything else Textual related, join us on our [Discord server](https://discord.gg/Enf6Z3qhVr).
diff --git a/docs/examples/events/on_decorator01.py b/docs/examples/events/on_decorator01.py
index 3b97f7f0d..7b9c0276e 100644
--- a/docs/examples/events/on_decorator01.py
+++ b/docs/examples/events/on_decorator01.py
@@ -12,7 +12,7 @@ class OnDecoratorApp(App):
         yield Button("Toggle dark", classes="toggle dark")
         yield Button("Quit", id="quit")
 
-    def on_button_pressed(self, event: Button.Pressed) -> None:
+    def on_button_pressed(self, event: Button.Pressed) -> None:  # (1)!
         """Handle all button pressed events."""
         if event.button.id == "bell":
             self.bell()
diff --git a/docs/guide/events.md b/docs/guide/events.md
index 1e6136c8f..0629e17e5 100644
--- a/docs/guide/events.md
+++ b/docs/guide/events.md
@@ -181,6 +181,8 @@ In the following example we have three buttons, each of which does something dif
     --8<-- "docs/examples/events/on_decorator01.py"
     ```
 
+    1. The message handler is called when any button is pressed
+
 === "Output"
 
     ```{.textual path="docs/examples/events/on_decorator01.py"}
diff --git a/docs/widgets/data_table.md b/docs/widgets/data_table.md
index 215d0541b..6d2100a26 100644
--- a/docs/widgets/data_table.md
+++ b/docs/widgets/data_table.md
@@ -59,9 +59,9 @@ If you want to change the table based solely on coordinates, you can use the [co
 
 ### Cursors
 
-The coordinate of the cursor is exposed via the `cursor_coordinate` reactive attribute.
+The coordinate of the cursor is exposed via the [`cursor_coordinate`][textual.widgets.DataTable.cursor_coordinate] reactive attribute.
 Three types of cursors are supported: `cell`, `row`, and `column`.
-Change the cursor type by assigning to the `cursor_type` reactive attribute.
+Change the cursor type by assigning to the [`cursor_type`][textual.widgets.DataTable.cursor_type] reactive attribute.
 
 === "Column Cursor"
 
diff --git a/pyproject.toml b/pyproject.toml
index e1b4cbee6..ba155e993 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "textual"
-version = "0.22.3"
+version = "0.23.0"
 homepage = "https://github.com/Textualize/textual"
 description = "Modern Text User Interface framework"
 authors = ["Will McGugan <will@textualize.io>"]
diff --git a/questions/README.md b/questions/README.md
index bb201b128..f4b1f622d 100644
--- a/questions/README.md
+++ b/questions/README.md
@@ -5,13 +5,13 @@ Your questions should go in this directory.
 
 Question files should be named with the extension ".question.md".
 
-To build the faq, install [faqtory](https://github.com/willmcgugan/faqtory) if you haven't already:
+To build the FAQ, install [faqtory](https://github.com/willmcgugan/faqtory) if you haven't already:
 
 ```
 pip install faqtory
 ```
 
-The run the following from the top of the repository:
+Then run the following from the top of the repository:
 
 ```
 faqtory build
diff --git a/questions/datatable-doesnt-scroll.question.md b/questions/datatable-doesnt-scroll.question.md
new file mode 100644
index 000000000..7cd2ca296
--- /dev/null
+++ b/questions/datatable-doesnt-scroll.question.md
@@ -0,0 +1,10 @@
+---
+title: "Why doesn't the `DataTable` scroll programmatically?"
+alt_titles:
+  - "Scroll bindings from `DataTable` not working."
+  - "Datatable cursor goes off screen and doesn't scroll."
+---
+
+If scrolling in your `DataTable` is _apparently_ broken, it may be because your `DataTable` is using the default value of `height: auto`.
+This means that the table will be sized to fit its rows without scrolling, which may cause the *container* (typically the screen) to scroll.
+If you would like the table itself to scroll, set the height to something other than `auto`, like `100%`.
diff --git a/questions/images.question.md b/questions/images.question.md
index 6d86ea2f5..c6a1e3dc8 100644
--- a/questions/images.question.md
+++ b/questions/images.question.md
@@ -3,9 +3,8 @@ title: "Does Textual support images?"
 alt_titles:
   - "Can Textual display PNG / SVG files?"
   - "Render images"
-
 ---
 
-Textual doesn't have built in support for images yet, but it is on the [Roadmap](https://textual.textualize.io/roadmap/).
+Textual doesn't have built-in support for images yet, but it is on the [Roadmap](https://textual.textualize.io/roadmap/).
 
 See also the [rich-pixels](https://github.com/darrenburns/rich-pixels) project for a Rich renderable for images that works with Textual.
diff --git a/src/textual/app.py b/src/textual/app.py
index e2199a47f..113a7a220 100644
--- a/src/textual/app.py
+++ b/src/textual/app.py
@@ -1660,7 +1660,7 @@ class App(Generic[ReturnType], DOMNode):
                     app_css_path = (
                         f"{inspect.getfile(self.__class__)}:{self.__class__.__name__}"
                     )
-                except TypeError:
+                except (TypeError, OSError):
                     app_css_path = f"{self.__class__.__name__}"
                 self.stylesheet.add_source(
                     self.CSS, path=app_css_path, is_default_css=False
diff --git a/src/textual/dom.py b/src/textual/dom.py
index 3f549b059..ef73557f3 100644
--- a/src/textual/dom.py
+++ b/src/textual/dom.py
@@ -240,7 +240,7 @@ class DOMNode(MessagePump):
         description: str = "",
         exit_on_error: bool = True,
         start: bool = True,
-        exclusive: bool = True,
+        exclusive: bool = False,
     ) -> Worker[ResultType]:
         """Run work in a worker.
 
@@ -418,7 +418,7 @@ class DOMNode(MessagePump):
             """Get a path to the DOM Node"""
             try:
                 return f"{getfile(base)}:{base.__name__}"
-            except TypeError:
+            except (TypeError, OSError):
                 return f"{base.__name__}"
 
         for tie_breaker, base in enumerate(self._node_bases):
diff --git a/src/textual/reactive.py b/src/textual/reactive.py
index 08259200d..998d4079b 100644
--- a/src/textual/reactive.py
+++ b/src/textual/reactive.py
@@ -76,11 +76,13 @@ class Reactive(Generic[ReactiveType]):
     def var(
         cls,
         default: ReactiveType | Callable[[], ReactiveType],
+        always_update: bool = False,
     ) -> Reactive:
         """A reactive variable that doesn't update or layout.
 
         Args:
             default: A default value or callable that returns a default.
+            always_update: Call watchers even when the new value equals the old value.
 
         Returns:
             A Reactive descriptor.
@@ -326,18 +328,21 @@ class var(Reactive[ReactiveType]):
     Args:
         default: A default value or callable that returns a default.
         init: Call watchers on initialize (post mount).
+        always_update: Call watchers even when the new value equals the old value.
     """
 
     def __init__(
         self,
         default: ReactiveType | Callable[[], ReactiveType],
         init: bool = True,
+        always_update: bool = False,
     ) -> None:
         super().__init__(
             default,
             layout=False,
             repaint=False,
             init=init,
+            always_update=always_update,
         )
 
 
diff --git a/src/textual/types.py b/src/textual/types.py
index dd681f657..1b5d3ea25 100644
--- a/src/textual/types.py
+++ b/src/textual/types.py
@@ -7,11 +7,13 @@ from ._context import NoActiveAppError
 from ._types import CallbackType, MessageTarget, WatchCallbackType
 from .actions import ActionParseResult
 from .css.styles import RenderStyles
+from .widgets._data_table import CursorType
 
 __all__ = [
     "ActionParseResult",
     "Animatable",
     "CallbackType",
+    "CursorType",
     "EasingFunction",
     "MessageTarget",
     "NoActiveAppError",
diff --git a/src/textual/widgets/_data_table.py b/src/textual/widgets/_data_table.py
index 0681c3993..0f40552be 100644
--- a/src/textual/widgets/_data_table.py
+++ b/src/textual/widgets/_data_table.py
@@ -38,6 +38,7 @@ CellCacheKey: TypeAlias = (
 LineCacheKey: TypeAlias = "tuple[int, int, int, int, Coordinate, Coordinate, Style, CursorType, bool, int, PseudoClasses]"
 RowCacheKey: TypeAlias = "tuple[RowKey, int, Style, Coordinate, Coordinate, CursorType, bool, bool, int, PseudoClasses]"
 CursorType = Literal["cell", "row", "column", "none"]
+"""The legal types of cursors for [`DataTable.cursor_type`][textual.widgets.DataTable.cursor_type]."""
 CellType = TypeVar("CellType")
 
 CELL_X_PADDING = 2
@@ -304,14 +305,21 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
     zebra_stripes = Reactive(False)
     header_height = Reactive(1)
     show_cursor = Reactive(True)
-    cursor_type = Reactive("cell")
+    cursor_type: Reactive[CursorType] = Reactive[CursorType]("cell")
+    """The type of the cursor of the `DataTable`."""
 
     cursor_coordinate: Reactive[Coordinate] = Reactive(
         Coordinate(0, 0), repaint=False, always_update=True
     )
+    """Current cursor [`Coordinate`][textual.coordinate.Coordinate].
+
+    This can be set programmatically or changed via the method
+    [`move_cursor`][textual.widgets.DataTable.move_cursor].
+    """
     hover_coordinate: Reactive[Coordinate] = Reactive(
         Coordinate(0, 0), repaint=False, always_update=True
     )
+    """The coordinate of the `DataTable` that is being hovered."""
 
     class CellHighlighted(Message, bubble=True):
         """Posted when the cursor moves to highlight a new cell.
@@ -950,6 +958,41 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
             elif self.cursor_type == "column":
                 self.refresh_column(old_coordinate.column)
                 self._highlight_column(new_coordinate.column)
+            # If the coordinate was changed via `move_cursor`, give priority to its
+            # scrolling because it may be animated.
+            self.call_next(self._scroll_cursor_into_view)
+
+    def move_cursor(
+        self,
+        *,
+        row: int | None = None,
+        column: int | None = None,
+        animate: bool = False,
+    ) -> None:
+        """Move the cursor to the given position.
+
+        Example:
+            ```py
+            datatable = app.query_one(DataTable)
+            datatable.move_cursor(row=4, column=6)
+            # datatable.cursor_coordinate == Coordinate(4, 6)
+            datatable.move_cursor(row=3)
+            # datatable.cursor_coordinate == Coordinate(3, 6)
+            ```
+
+        Args:
+            row: The new row to move the cursor to.
+            column: The new column to move the cursor to.
+            animate: Whether to animate the change of coordinates.
+        """
+        cursor_row, cursor_column = self.cursor_coordinate
+        if row is not None:
+            cursor_row = row
+        if column is not None:
+            cursor_column = column
+        destination = Coordinate(cursor_row, cursor_column)
+        self.cursor_coordinate = destination
+        self._scroll_cursor_into_view(animate=animate)
 
     def _highlight_coordinate(self, coordinate: Coordinate) -> None:
         """Apply highlighting to the cell at the coordinate, and post event."""
@@ -2051,7 +2094,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
             self.cursor_coordinate = Coordinate(
                 row_index + rows_to_scroll - 1, column_index
             )
-            self._scroll_cursor_into_view()
         else:
             super().action_page_down()
 
@@ -2075,7 +2117,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
             self.cursor_coordinate = Coordinate(
                 row_index - rows_to_scroll + 1, column_index
             )
-            self._scroll_cursor_into_view()
         else:
             super().action_page_up()
 
@@ -2086,7 +2127,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
         if self.show_cursor and (cursor_type == "cell" or cursor_type == "row"):
             row_index, column_index = self.cursor_coordinate
             self.cursor_coordinate = Coordinate(0, column_index)
-            self._scroll_cursor_into_view()
         else:
             super().action_scroll_home()
 
@@ -2097,7 +2137,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
         if self.show_cursor and (cursor_type == "cell" or cursor_type == "row"):
             row_index, column_index = self.cursor_coordinate
             self.cursor_coordinate = Coordinate(self.row_count - 1, column_index)
-            self._scroll_cursor_into_view()
         else:
             super().action_scroll_end()
 
@@ -2106,7 +2145,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
         cursor_type = self.cursor_type
         if self.show_cursor and (cursor_type == "cell" or cursor_type == "row"):
             self.cursor_coordinate = self.cursor_coordinate.up()
-            self._scroll_cursor_into_view()
         else:
             # If the cursor doesn't move up (e.g. column cursor can't go up),
             # then ensure that we instead scroll the DataTable.
@@ -2117,7 +2155,6 @@ class DataTable(ScrollView, Generic[CellType], can_focus=True):
         cursor_type = self.cursor_type
         if self.show_cursor and (cursor_type == "cell" or cursor_type == "row"):
             self.cursor_coordinate = self.cursor_coordinate.down()
-            self._scroll_cursor_into_view()
         else:
             super().action_scroll_down()
 
diff --git a/src/textual/widgets/_directory_tree.py b/src/textual/widgets/_directory_tree.py
index 0090717d7..b2a8ab692 100644
--- a/src/textual/widgets/_directory_tree.py
+++ b/src/textual/widgets/_directory_tree.py
@@ -103,7 +103,6 @@ class DirectoryTree(Tree[DirEntry]):
             classes: A space-separated list of classes, or None for no classes.
             disabled: Whether the directory tree is disabled or not.
         """
-        self.path = path
         super().__init__(
             str(path),
             data=DirEntry(Path(path)),
@@ -112,6 +111,7 @@ class DirectoryTree(Tree[DirEntry]):
             classes=classes,
             disabled=disabled,
         )
+        self.path = path
 
     def reload(self) -> None:
         """Reload the `DirectoryTree` contents."""
diff --git a/src/textual/widgets/_tree.py b/src/textual/widgets/_tree.py
index 91ffe794e..85255cf1e 100644
--- a/src/textual/widgets/_tree.py
+++ b/src/textual/widgets/_tree.py
@@ -429,7 +429,7 @@ class Tree(Generic[TreeDataType], ScrollView, can_focus=True):
     """Show the root of the tree."""
     hover_line = var(-1)
     """The line number under the mouse pointer, or -1 if not under the mouse pointer."""
-    cursor_line = var(-1)
+    cursor_line = var(-1, always_update=True)
     """The line with the cursor, or -1 if no cursor."""
     show_guides = reactive(True)
     """Enable display of tree guide lines."""
@@ -976,8 +976,8 @@ class Tree(Generic[TreeDataType], ScrollView, can_focus=True):
                 "tree--guides-selected", partial=True
             )
 
-            hover = self.root._hover
-            selected = self.root._selected and self.has_focus
+            hover = line.path[0]._hover
+            selected = line.path[0]._selected and self.has_focus
 
             def get_guides(style: Style) -> tuple[str, str, str, str]:
                 """Get the guide strings for a given style.


Test patch:
diff --git a/tests/test_data_table.py b/tests/test_data_table.py
index 56b148d56..a00da77af 100644
--- a/tests/test_data_table.py
+++ b/tests/test_data_table.py
@@ -991,3 +991,39 @@ def test_key_string_lookup():
     assert dictionary[RowKey("foo")] == "bar"
     assert dictionary["hello"] == "world"
     assert dictionary[RowKey("hello")] == "world"
+
+
+async def test_scrolling_cursor_into_view():
+    """Regression test for https://github.com/Textualize/textual/issues/2459"""
+
+    class ScrollingApp(DataTableApp):
+        CSS = "DataTable { height: 100%; }"
+
+        def key_c(self):
+            self.query_one(DataTable).cursor_coordinate = Coordinate(200, 0)
+
+    app = ScrollingApp()
+
+    async with app.run_test() as pilot:
+        table = app.query_one(DataTable)
+        table.add_column("n")
+        table.add_rows([(n,) for n in range(300)])
+
+        await pilot.press("c")
+        assert table.scroll_y > 100
+
+
+async def test_move_cursor():
+    app = DataTableApp()
+
+    async with app.run_test():
+        table = app.query_one(DataTable)
+        table.add_columns(*"These are some columns in your nice table".split())
+        table.add_rows(["These are some columns in your nice table".split()] * 10)
+
+        table.move_cursor(row=4, column=6)
+        assert table.cursor_coordinate == Coordinate(4, 6)
+        table.move_cursor(row=3)
+        assert table.cursor_coordinate == Coordinate(3, 6)
+        table.move_cursor(column=3)
+        assert table.cursor_coordinate == Coordinate(3, 3)
diff --git a/tests/toggles/test_checkbox.py b/tests/toggles/test_checkbox.py
index 573953f23..095f87485 100644
--- a/tests/toggles/test_checkbox.py
+++ b/tests/toggles/test_checkbox.py
@@ -15,7 +15,9 @@ class CheckboxApp(App[None]):
         yield Checkbox(value=True, id="cb3")
 
     def on_checkbox_changed(self, event: Checkbox.Changed) -> None:
-        self.events_received.append((event.checkbox.id, event.checkbox.value))
+        self.events_received.append(
+            (event.checkbox.id, event.checkbox.value, event.checkbox == event.control)
+        )
 
 
 async def test_checkbox_initial_state() -> None:
@@ -43,7 +45,7 @@ async def test_checkbox_toggle() -> None:
         ]
         await pilot.pause()
         assert pilot.app.events_received == [
-            ("cb1", True),
-            ("cb2", True),
-            ("cb3", False),
+            ("cb1", True, True),
+            ("cb2", True, True),
+            ("cb3", False, True),
         ]
diff --git a/tests/toggles/test_radiobutton.py b/tests/toggles/test_radiobutton.py
index dc32e8c0f..0dc4fda05 100644
--- a/tests/toggles/test_radiobutton.py
+++ b/tests/toggles/test_radiobutton.py
@@ -15,7 +15,13 @@ class RadioButtonApp(App[None]):
         yield RadioButton(value=True, id="rb3")
 
     def on_radio_button_changed(self, event: RadioButton.Changed) -> None:
-        self.events_received.append((event.radio_button.id, event.radio_button.value))
+        self.events_received.append(
+            (
+                event.radio_button.id,
+                event.radio_button.value,
+                event.radio_button == event.control,
+            )
+        )
 
 
 async def test_radio_button_initial_state() -> None:
@@ -51,7 +57,7 @@ async def test_radio_button_toggle() -> None:
         ]
         await pilot.pause()
         assert pilot.app.events_received == [
-            ("rb1", True),
-            ("rb2", True),
-            ("rb3", False),
+            ("rb1", True, True),
+            ("rb2", True, True),
+            ("rb3", False, True),
         ]
diff --git a/tests/toggles/test_radioset.py b/tests/toggles/test_radioset.py
index dc9de5b1b..95025bf37 100644
--- a/tests/toggles/test_radioset.py
+++ b/tests/toggles/test_radioset.py
@@ -11,7 +11,7 @@ class RadioSetApp(App[None]):
 
     def compose(self) -> ComposeResult:
         with RadioSet(id="from_buttons"):
-            yield RadioButton()
+            yield RadioButton(id="clickme")
             yield RadioButton()
             yield RadioButton(value=True)
         yield RadioSet("One", "True", "Three", id="from_strings")
@@ -36,6 +36,14 @@ async def test_radio_sets_initial_state():
         assert pilot.app.events_received == []
 
 
+async def test_click_sets_focus():
+    """Clicking within a radio set should set focus."""
+    async with RadioSetApp().run_test() as pilot:
+        assert pilot.app.screen.focused is None
+        await pilot.click("#clickme")
+        assert pilot.app.screen.focused == pilot.app.query_one("#from_buttons")
+
+
 async def test_radio_sets_toggle():
     """Test the status of the radio sets after they've been toggled."""
     async with RadioSetApp().run_test() as pilot:
@@ -52,17 +60,42 @@ async def test_radio_sets_toggle():
         ]
 
 
+async def test_radioset_same_button_mash():
+    """Mashing the same button should have no effect."""
+    async with RadioSetApp().run_test() as pilot:
+        assert pilot.app.query_one("#from_buttons", RadioSet).pressed_index == 2
+        pilot.app.query_one("#from_buttons", RadioSet)._nodes[2].toggle()
+        assert pilot.app.query_one("#from_buttons", RadioSet).pressed_index == 2
+        assert pilot.app.events_received == []
+
+
 async def test_radioset_inner_navigation():
     """Using the cursor keys should navigate between buttons in a set."""
     async with RadioSetApp().run_test() as pilot:
         assert pilot.app.screen.focused is None
         await pilot.press("tab")
-        for key, landing in (("down", 1), ("up", 0), ("right", 1), ("left", 0)):
+        for key, landing in (
+            ("down", 1),
+            ("up", 0),
+            ("right", 1),
+            ("left", 0),
+            ("up", 2),
+            ("down", 0),
+        ):
             await pilot.press(key, "enter")
             assert (
                 pilot.app.query_one("#from_buttons", RadioSet).pressed_button
                 == pilot.app.query_one("#from_buttons").children[landing]
             )
+    async with RadioSetApp().run_test() as pilot:
+        assert pilot.app.screen.focused is None
+        await pilot.press("tab")
+        assert pilot.app.screen.focused is pilot.app.screen.query_one("#from_buttons")
+        await pilot.press("tab")
+        assert pilot.app.screen.focused is pilot.app.screen.query_one("#from_strings")
+        assert pilot.app.query_one("#from_strings", RadioSet)._selected == 0
+        await pilot.press("down")
+        assert pilot.app.query_one("#from_strings", RadioSet)._selected == 1
 
 
 async def test_radioset_breakout_navigation():