<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI | Bas Nijholt</title><link>https://www.nijho.lt/tag/ai/</link><atom:link href="https://www.nijho.lt/tag/ai/index.xml" rel="self" type="application/rss+xml"/><description>AI</description><generator>Hugo</generator><language>en-us</language><copyright>© 2026</copyright><lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0000</lastBuildDate><image><url>https://www.nijho.lt/media/icon_hu_408a8f6cef43e327.png</url><title>AI</title><link>https://www.nijho.lt/tag/ai/</link></image><item><title>Roll your own, fork the rest 🍴</title><link>https://www.nijho.lt/post/roll-your-own-fork-the-rest/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/roll-your-own-fork-the-rest/</guid><description>&lt;h2 id="introduction-a-follow-up-to-something-i-wrote"&gt;Introduction: a follow-up to something I wrote &lt;a class="anchor" href="#introduction-a-follow-up-to-something-i-wrote" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;In April 2025 I published &lt;a href="https://www.nijho.lt/post/dependencies/"&gt;Confessions of an asymmetric hypocrite&lt;/a&gt;, about my split personality on dependencies.&#10;Strict minimalism for the libraries I publish, and then, for applications:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;For &lt;em&gt;applications&lt;/em&gt; (especially CLIs in isolated environments), I&amp;rsquo;m far more liberal with dependencies to build features quickly.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;I also wrote that I &amp;ldquo;strongly prefer dependencies that are already widely adopted and trusted by the community&amp;rdquo; because &amp;ldquo;these are less likely to cause unexpected issues&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Then I spent a year building &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, which is an application, exactly the category where I said I could relax.&lt;/p&gt;&#10;&lt;p&gt;I want to report back.&#10;&amp;ldquo;Prefer &lt;span class="hover-tip" data-tooltip="Code that so many people already run in production that the common bugs have been found and fixed before you get there." tabindex="0"&gt;battle-tested&lt;/span&gt; dependencies&amp;rdquo; was the right rule.&#10;I just had the wrong idea of what battle-tested means.&#10;I thought a project with tens of thousands of GitHub stars qualified.&#10;Now I think it means &lt;strong&gt;millions of downloads, every day.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#introduction-a-follow-up-to-something-i-wrote"&gt;Introduction: a follow-up to something I wrote&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#1-stars-measure-interest-not-usage"&gt;1. Stars measure interest, not usage&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-a-popular-protocol-is-not-a-popular-library"&gt;2. A popular protocol is not a popular library&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-i-checked-the-rule-against-my-own-code"&gt;3. I checked the rule against my own code&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-roll-your-own-the-library-gives-you-the-easy-10"&gt;4. Roll your own: the library gives you the easy 10%&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-fork-your-own-when-the-problem-is-hard"&gt;5. Fork your own: when the problem is hard&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#agno-patches-instead-of-a-fork"&gt;Agno: patches instead of a fork&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-i-am-not-dunking-on-open-source-including-mine"&gt;6. I am not dunking on open source, including mine&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-my-rule-for-the-next-uv-add"&gt;7. My rule for the next &lt;code&gt;uv add&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Stars measure interest, not usage. For every dependency, ask how many projects actually run the code you are about to rely on, and how much you rely on it.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Millions of downloads a day?&lt;/strong&gt; Depend on it.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Fewer, and it only gives you the easy part?&lt;/strong&gt; Roll your own. The hard part was going to be yours anyway.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Fewer, and hard to build?&lt;/strong&gt; Fork it, and treat the fork as yours.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;If I started MindRoom over, I would write my own HTTP requests to the model providers instead of using an AI framework.&lt;/p&gt;&#10;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Update 2026-10-27:&lt;/strong&gt; A week after publishing, I took my own advice twice.&#10;MindRoom&amp;rsquo;s knowledge search no longer uses ChromaDB, and code MindRoom owns has replaced Agno&amp;rsquo;s runtime; Agno stays only as the tool library.&#10;The full stories are in &lt;a href="#comments"&gt;the comments&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="1-stars-measure-interest-not-usage"&gt;1. Stars measure interest, not usage &lt;a class="anchor" href="#1-stars-measure-interest-not-usage" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When I picked &lt;a href="https://github.com/agno-agi/agno" target="_blank" rel="noopener"&gt;Agno&lt;/a&gt; as MindRoom&amp;rsquo;s &lt;span class="hover-tip" data-tooltip="A library that wraps the model providers&amp;#39; APIs and adds agents, tools, memory, knowledge bases and session storage on top." tabindex="0"&gt;AI framework&lt;/span&gt;, it looked like the safe choice.&#10;Today it has over 42,000 stars and 6,000 forks.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;It also gets about &lt;strong&gt;78,000 downloads a day&lt;/strong&gt; on PyPI.&#10;&lt;a href="https://github.com/encode/httpx" target="_blank" rel="noopener"&gt;httpx&lt;/a&gt;, one of Python&amp;rsquo;s standard HTTP libraries, gets about &lt;strong&gt;25 million&lt;/strong&gt;.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;A star is something you click once, when a README looks exciting.&#10;A download happens every time some project installs the package.&lt;/p&gt;&#10;&lt;p&gt;Most of those downloads are &lt;span class="hover-tip" data-tooltip="Continuous integration: test and build pipelines that install a fresh environment on every push, often many times a day per project." tabindex="0"&gt;CI&lt;/span&gt;, not people, so downloads are not users either.&#10;But a package with millions of downloads a day is installed by a huge number of different projects.&#10;Many of them use the same functions you are about to use, so they hit the bugs before you do.&lt;/p&gt;&#10;&lt;p&gt;Battle-tested is also not the same as old.&#10;I use &lt;a href="https://github.com/astral-sh/uv" target="_blank" rel="noopener"&gt;uv&lt;/a&gt; for everything, and it has only been around for a &lt;span class="hover-tip" data-tooltip="Astral released the first version of uv in February 2024." tabindex="0"&gt;couple of years&lt;/span&gt;.&#10;I run into bugs in uv too, but there is simply no better alternative, and it gets about 3.6 million downloads a day.&lt;/p&gt;&#10;&lt;h2 id="2-a-popular-protocol-is-not-a-popular-library"&gt;2. A popular protocol is not a popular library &lt;a class="anchor" href="#2-a-popular-protocol-is-not-a-popular-library" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The other place my old idea failed was &lt;a href="https://matrix.org" target="_blank" rel="noopener"&gt;Matrix&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Building on Matrix felt obviously correct.&#10;An open protocol, about a decade old, with serious security reviews from &lt;span class="hover-tip" data-tooltip="Governments run their own Matrix deployments, for example Tchap for the French civil service and BwMessenger for the German armed forces." tabindex="0"&gt;large organizations and governments&lt;/span&gt;.&#10;Millions of people use it.&lt;/p&gt;&#10;&lt;p&gt;Matrix is still a good protocol and I am still on it.&#10;But even though millions of people use Matrix, there are only a few client libraries.&lt;/p&gt;&#10;&lt;p&gt;MindRoom streams agent replies by editing the same message many times a second.&#10;Almost every part of the ecosystem I touched had a problem with that: &lt;span class="hover-tip" data-tooltip="The most widely used Matrix app, made by the company behind the protocol." tabindex="0"&gt;Element&lt;/span&gt;, &lt;span class="hover-tip" data-tooltip="A Matrix web client focused on a simple, Discord-like interface. MindRoom&amp;#39;s chat app is a fork of it." tabindex="0"&gt;Cinny&lt;/span&gt;, &lt;span class="hover-tip" data-tooltip="The Python Matrix client library MindRoom&amp;#39;s agents use to log in, read and send messages." tabindex="0"&gt;matrix-nio&lt;/span&gt;, and the &lt;span class="hover-tip" data-tooltip="matrix-js-sdk, the library Element Web and Cinny are built on." tabindex="0"&gt;Matrix JavaScript SDK&lt;/span&gt;.&#10;In the JavaScript SDK, edits that arrived while a thread was still loading were silently dropped, so you saw stale text until you reloaded.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;What counts is how many projects use the library you build on.&#10;Element&amp;rsquo;s users do not test matrix-js-sdk for you. Other people building on matrix-js-sdk do.&#10;It gets roughly 100,000 downloads a day. matrix-nio, the Python client, about 23,000.&lt;/p&gt;&#10;&lt;h2 id="3-i-checked-the-rule-against-my-own-code"&gt;3. I checked the rule against my own code &lt;a class="anchor" href="#3-i-checked-the-rule-against-my-own-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I pulled the daily download numbers for the packages I use and looked for workarounds, patches and forks in my own source.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Package&lt;/th&gt;&#10;&lt;th&gt;Downloads per day&lt;/th&gt;&#10;&lt;th&gt;What it cost me&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;requests&lt;/td&gt;&#10;&lt;td&gt;49M&lt;/td&gt;&#10;&lt;td&gt;nothing I had to work around&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;pydantic&lt;/td&gt;&#10;&lt;td&gt;35M&lt;/td&gt;&#10;&lt;td&gt;nothing&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;numpy&lt;/td&gt;&#10;&lt;td&gt;33M&lt;/td&gt;&#10;&lt;td&gt;nothing&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;httpx&lt;/td&gt;&#10;&lt;td&gt;25M&lt;/td&gt;&#10;&lt;td&gt;nothing&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;aiohttp&lt;/td&gt;&#10;&lt;td&gt;18M&lt;/td&gt;&#10;&lt;td&gt;nothing&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;FastAPI&lt;/td&gt;&#10;&lt;td&gt;17M&lt;/td&gt;&#10;&lt;td&gt;nothing&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;chromadb&lt;/td&gt;&#10;&lt;td&gt;270K&lt;/td&gt;&#10;&lt;td&gt;workarounds for a bug that holds the GIL&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;matrix-js-sdk&lt;/td&gt;&#10;&lt;td&gt;~100K&lt;/td&gt;&#10;&lt;td&gt;patched&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;mem0ai&lt;/td&gt;&#10;&lt;td&gt;79K&lt;/td&gt;&#10;&lt;td&gt;largely reimplemented&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;agno&lt;/td&gt;&#10;&lt;td&gt;78K&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;126 documented workarounds&lt;/strong&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;matrix-nio&lt;/td&gt;&#10;&lt;td&gt;23K&lt;/td&gt;&#10;&lt;td&gt;forked&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Above a million a day, I had nothing to work around.&#10;Below it, every package on this list cost me a patch, a fork, a rewrite, or a pile of workarounds.&lt;/p&gt;&#10;&lt;p&gt;Take &lt;a href="https://github.com/chroma-core/chroma" target="_blank" rel="noopener"&gt;ChromaDB&lt;/a&gt;, the vector database behind MindRoom&amp;rsquo;s knowledge bases.&#10;In some cases it holds Python&amp;rsquo;s &lt;span class="hover-tip" data-tooltip="The Global Interpreter Lock: only one thread can run Python code at a time. Native code is supposed to release it while it waits, so other threads can keep going." tabindex="0"&gt;GIL&lt;/span&gt; during I/O, which blocks every other thread in the process.&#10;I opened &lt;a href="https://github.com/chroma-core/chroma/pull/7692" target="_blank" rel="noopener"&gt;a pull request&lt;/a&gt; to fix it, and nobody has looked at it yet.&#10;Instead of forking, I run every knowledge read in a short-lived child process, because a process can be killed and a blocked thread cannot.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;My fork of matrix-nio has about 8,900 lines added and 2,000 removed in the library code since the last upstream release.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;This does not mean every small package needs replacing.&#10;MindRoom pulls in a few hundred packages in total, and plenty of them have modest download numbers.&#10;The scrutiny should match how much I depend on a package.&#10;Something I use for one small, specific purpose is fine.&#10;Agno and matrix-nio are the base that MindRoom is built on, which is probably also why they hurt the most.&lt;/p&gt;&#10;&lt;h2 id="4-roll-your-own-the-library-gives-you-the-easy-10"&gt;4. Roll your own: the library gives you the easy 10% &lt;a class="anchor" href="#4-roll-your-own-the-library-gives-you-the-easy-10" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Take memory libraries, &lt;a href="https://github.com/mem0ai/mem0" target="_blank" rel="noopener"&gt;Mem0&lt;/a&gt; and friends.&#10;I have &lt;a href="https://www.nijho.lt/post/file-based-rag-memory/"&gt;already written about this&lt;/a&gt;: I cloned LlamaIndex, LangChain, Letta, Mem0 and PydanticAI, studied how they work, and re-implemented the parts I needed. My memory system ended up &amp;ldquo;mostly modeled after Mem0&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;The core idea is not hard.&#10;With &lt;span class="hover-tip" data-tooltip="Retrieval-augmented generation: look up relevant text first and paste it into the prompt, so the model answers from your documents instead of from memory." tabindex="0"&gt;RAG&lt;/span&gt;, you chunk, embed, retrieve, re-rank and reconcile. Once you have read a couple of implementations you can write it, and afterwards you understand every line.&lt;/p&gt;&#10;&lt;p&gt;The same is true of an agent framework.&#10;It builds a JSON payload, posts it to an HTTP endpoint, parses a &lt;span class="hover-tip" data-tooltip="Providers send the reply as server-sent events: a long-lived HTTP response with one small JSON chunk per token or tool-call fragment." tabindex="0"&gt;streaming response&lt;/span&gt;, keeps a list of messages, and loops when the model asks for a tool call.&#10;With AI, that is a day or two of work.&lt;/p&gt;&#10;&lt;p&gt;The hard part is making it reliable at scale: never blocking the &lt;span class="hover-tip" data-tooltip="In async Python, one thread runs all tasks by switching between them. A single call that blocks freezes every conversation at once." tabindex="0"&gt;event loop&lt;/span&gt;, and handling the crazy edge cases.&#10;With an agent system you end up building a very complicated state machine, and if you do not watch it, any combination of states is possible. Almost all of them are edge cases.&lt;/p&gt;&#10;&lt;p&gt;A library gives you the easy 10% and leaves you the hard 90%.&#10;And you do that 90% inside somebody else&amp;rsquo;s code, where you cannot fix the root cause.&lt;/p&gt;&#10;&lt;p&gt;MindRoom is now about 360,000 lines of Python, plus about 750,000 lines of tests.&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt;&#10;A good part of that is code I wrote instead of depending on a library:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Memory and knowledge:&lt;/strong&gt; about 15,600 lines across 50 files.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Conversation history and &lt;span class="hover-tip" data-tooltip="Summarizing older turns of a conversation so a long thread still fits in the model&amp;#39;s context window." tabindex="0"&gt;compaction&lt;/span&gt;:&lt;/strong&gt; about 8,400 lines.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;An OpenAI-compatible API:&lt;/strong&gt; about 2,300 lines, so MindRoom agents show up as selectable &amp;ldquo;models&amp;rdquo; in any chat frontend that speaks the OpenAI protocol.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude provider support:&lt;/strong&gt; about 3,000 lines.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;If I have to write the hard 90% either way, I might as well write the easy 10% too.&lt;/p&gt;&#10;&lt;h2 id="5-fork-your-own-when-the-problem-is-hard"&gt;5. Fork your own: when the problem is hard &lt;a class="anchor" href="#5-fork-your-own-when-the-problem-is-hard" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I am not going to write my own &lt;span class="hover-tip" data-tooltip="Matrix encryption means per-device keys, the Olm and Megolm ratchets, cross-signing, device verification and key backup, all of which have to interoperate with every other client." tabindex="0"&gt;end-to-end encrypted&lt;/span&gt; Matrix SDK, or my own &lt;span class="hover-tip" data-tooltip="The server that stores your rooms and syncs them with other Matrix servers, like a mail server for chat." tabindex="0"&gt;homeserver&lt;/span&gt;.&#10;Those are hard, and also far below the line.&#10;So there I fork.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;I forked the Python Matrix client.&lt;/strong&gt; MindRoom ships its own fork of matrix-nio rather than the upstream package.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;I forked the Matrix server, twice.&lt;/strong&gt; First &lt;span class="hover-tip" data-tooltip="The original Matrix homeserver, written in Python by the Matrix.org team." tabindex="0"&gt;Synapse&lt;/span&gt;. When I ran into scaling problems I moved to &lt;a href="https://github.com/matrix-construct/tuwunel" target="_blank" rel="noopener"&gt;Tuwunel&lt;/a&gt; and forked that.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;I forked the web client.&lt;/strong&gt; &lt;a href="https://github.com/cinnyapp/cinny" target="_blank" rel="noopener"&gt;Cinny&lt;/a&gt; is the Matrix web client MindRoom uses.&lt;/p&gt;&#10;&lt;p&gt;None of these are AI projects. AI is just where I felt it most.&lt;/p&gt;&#10;&lt;p&gt;Whether a fork stays a fork depends on the maintainers.&#10;Tuwunel is extremely receptive to my patches, so I upstream anything that is general enough, and over the last six months I am its fourth most active contributor by commits.&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;&#10;Cinny has not accepted any of my pull requests, so I forked it and stopped trying to upstream.&#10;Same with &lt;span class="hover-tip" data-tooltip="An open-source, self-hosted ChatGPT-style web interface that can talk to many model providers." tabindex="0"&gt;LibreChat&lt;/span&gt;: I had patches open for over a year without a reply, so I forked.&lt;/p&gt;&#10;&lt;p&gt;Keeping a fork up to date used to be miserable.&#10;With an LLM doing the rebasing, pulling in the latest upstream is now cheap, though still a bit of a risk every time.&#10;The bigger cost is that once you fork, you are responsible for the whole codebase, including the parts you never changed.&lt;/p&gt;&#10;&lt;h3 id="agno-patches-instead-of-a-fork"&gt;Agno: patches instead of a fork &lt;a class="anchor" href="#agno-patches-instead-of-a-fork" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I did not fork Agno. I &lt;span class="hover-tip" data-tooltip="Replacing a library&amp;#39;s functions or methods at runtime from your own code, without changing the installed package." tabindex="0"&gt;monkey-patched&lt;/span&gt; it.&#10;Agno is very actively developed, I have talked to the maintainer, and they know about these problems, so I hoped to upstream my fixes.&#10;I have filed 33 issues and pull requests there.&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;That got out of hand.&#10;MindRoom now carries &lt;strong&gt;126 documented workarounds&lt;/strong&gt; for Agno across 59 files.&#10;Most of them live in 36 dedicated compatibility modules, about 7,200 lines of code, with the rest patched inline in 23 other files.&#10;Every one uses the same comment format, so I can &lt;a href="https://github.com/search?q=repo%3Amindroom-ai%2Fmindroom&amp;#43;AGNO_COMPAT&amp;amp;type=code" target="_blank" rel="noopener"&gt;find all of them with one search&lt;/a&gt;.&#10;Each one says what is wrong upstream, links the issue or PR, and says when I can delete it.&lt;sup id="fnref:10"&gt;&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref"&gt;10&lt;/a&gt;&lt;/sup&gt;&#10;A few examples:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Search failures become plausible empty results.&lt;/strong&gt; A failed knowledge search and an empty index return the same empty list, so my agents confidently told me things did not exist.&lt;sup id="fnref:11"&gt;&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref"&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Streamed tool calls get malformed or merged.&lt;/strong&gt;&lt;sup id="fnref:12"&gt;&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref"&gt;12&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reasoning is silently lost when tool calls are replayed.&lt;/strong&gt;&lt;sup id="fnref:13"&gt;&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref"&gt;13&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Provider errors collapse into a generic 502&lt;/strong&gt;, which throws away the error code you need to decide whether to retry.&lt;sup id="fnref:14"&gt;&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref"&gt;14&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;At this size, the patches amount to a fork.&lt;/p&gt;&#10;&lt;h2 id="6-i-am-not-dunking-on-open-source-including-mine"&gt;6. I am not dunking on open source, including mine &lt;a class="anchor" href="#6-i-am-not-dunking-on-open-source-including-mine" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Everything I named is open source I use every day, for free, built by people doing their best.&#10;I filed issues and PRs, and where maintainers merged fixes I deleted my workarounds.&lt;/p&gt;&#10;&lt;p&gt;My own software is in the same category.&#10;Most new AI tooling is not very good, and MindRoom may well be included.&#10;It is large, fast-moving, and nowhere near millions of daily downloads.&#10;By my own rule, you should think twice before depending on it.&lt;/p&gt;&#10;&lt;p&gt;I also have to admit that I have not yet built a project the roll-your-own way from the start.&#10;So comparing &amp;ldquo;what I would do next time&amp;rdquo; with what I actually did is not entirely fair.&#10;This is what I think right now, and a year from now I may have to write another post correcting this one.&lt;/p&gt;&#10;&lt;h2 id="7-my-rule-for-the-next-uv-add"&gt;7. My rule for the next &lt;code&gt;uv add&lt;/code&gt; &lt;a class="anchor" href="#7-my-rule-for-the-next-uv-add" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I weigh three questions.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How many projects use it?&lt;/strong&gt;&#10;Daily downloads of the actual package, not stars, and not how many people use the product built on top.&#10;In the millions: depend on it.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How much do I rely on it?&lt;/strong&gt;&#10;Agno and matrix-nio are the base of MindRoom.&#10;A library I use in a CLI to format a question is not, and if I use it in a narrow way I do not need my own version.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How hard is it, and how receptive is upstream?&lt;/strong&gt;&#10;If the library is something AI can write in a couple of days, roll my own.&#10;If it is hard, fork it.&#10;If the maintainers accept patches, upstream what is general enough.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;If I started MindRoom over today, I would write the HTTP requests to the model providers myself.&lt;/strong&gt;&#10;Not even the OpenAI or Anthropic SDKs.&#10;And even httpx is less safe than its download numbers suggest: in early 2026 its maintainer closed the issue tracker and discussions, and the latest stable release is from December 2024.&lt;sup id="fnref:15"&gt;&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref"&gt;15&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;In 2025 I wrote that the right answer is &amp;ldquo;it depends on the situation&amp;rdquo;, and I still believe that.&#10;I just had the wrong threshold.&#10;Battle-tested means millions of downloads a day.&#10;Below that: roll your own, and fork the rest.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;From the GitHub API (&lt;code&gt;api.github.com/repos/agno-agi/agno&lt;/code&gt;) on 2026-10-02: 42,385 stars and 6,041 forks.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;PyPI numbers are the &lt;code&gt;last_day&lt;/code&gt; field of the &lt;a href="https://pypistats.org" target="_blank" rel="noopener"&gt;pypistats.org&lt;/a&gt; API (&lt;code&gt;/api/packages/&amp;lt;name&amp;gt;/recent&lt;/code&gt;), fetched on 2026-10-02, except uv, fetched on 2026-10-18 (3,648,827). The matrix-js-sdk number is npm&amp;rsquo;s weekly download count (about 730,000) divided by seven. Daily numbers wobble, so treat them as orders of magnitude.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;When events arrive for a thread that has not finished initializing, the SDK&amp;rsquo;s replay path never applies them, so an &lt;code&gt;m.replace&lt;/code&gt; edit (the event type Matrix uses for &amp;ldquo;this replaces message X&amp;rdquo;) is stored and never shown. I replayed a captured event trace through the SDK: unpatched, zero of seventeen edits reached the listeners; patched, all seventeen. MindRoom carries the fix as a &lt;code&gt;patch-package&lt;/code&gt; patch on the SDK&amp;rsquo;s &lt;code&gt;thread.ts&lt;/code&gt;.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;For each direct dependency I looked at three things in the MindRoom repository: whether &lt;code&gt;pyproject.toml&lt;/code&gt; pins a fork instead of the upstream package, whether &lt;code&gt;patch-package&lt;/code&gt; patches it, and whether the source has workaround markers or comments pointing at upstream issues for it. The packages above a million downloads a day had none of those.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;The PR is titled &amp;ldquo;Release GIL during metadata I/O&amp;rdquo;. On the MindRoom side, &lt;code&gt;knowledge/read_process.py&lt;/code&gt; starts the child process, and a TODO says to remove it once a Chroma release with the fix is pinned. A blocked thread holding the GIL cannot be interrupted from Python, but the kernel will always terminate a child process.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;Compared with upstream matrix-nio 0.25.2 (released 2024-10-04): &lt;code&gt;git diff --shortstat&lt;/code&gt; on the library code gives 8,872 lines added and 1,966 removed across 52 files, from 89 commits, 76 of them mine. The fork is published on PyPI as &lt;code&gt;mindroom-nio&lt;/code&gt;.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:7"&gt;&#10;&lt;p&gt;Counted with &lt;code&gt;git ls-files&lt;/code&gt; and &lt;code&gt;wc -l&lt;/code&gt; on the MindRoom repository on 2026-10-18: 360,513 lines in 1,222 Python files under &lt;code&gt;src/&lt;/code&gt;, 750,657 lines under &lt;code&gt;tests/&lt;/code&gt;, and another 81,543 lines of TypeScript in the frontend. The per-feature numbers below come from the same count over the relevant directories.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:8"&gt;&#10;&lt;p&gt;Non-merge commits on Tuwunel&amp;rsquo;s main branch since 2026-04-18: Jason Volk 1,332, June Strawberry 325, dasha_uwu 55, me 42.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:9"&gt;&#10;&lt;p&gt;Issues and pull requests in &lt;a href="https://github.com/agno-agi/agno/issues?q=author%3Abasnijholt" target="_blank" rel="noopener"&gt;agno-agi/agno&lt;/a&gt; with me as the author, counted on 2026-10-02.&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:10"&gt;&#10;&lt;p&gt;Every workaround starts with a comment like &lt;code&gt;# AGNO_COMPAT: Knowledge search hides provider failures as empty results.&lt;/code&gt;, followed by &lt;code&gt;Reason:&lt;/code&gt;, &lt;code&gt;Upstream issue:&lt;/code&gt;, &lt;code&gt;Upstream PR:&lt;/code&gt;, &lt;code&gt;Remove when:&lt;/code&gt; and the tests that cover it. The counts come from &lt;code&gt;grep&lt;/code&gt; over &lt;code&gt;src/&lt;/code&gt;: 126 &lt;code&gt;AGNO_COMPAT:&lt;/code&gt; markers in 59 files, and 7,160 lines in the 36 &lt;code&gt;agno_compat_*&lt;/code&gt; modules.&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:11"&gt;&#10;&lt;p&gt;&lt;code&gt;Knowledge.search&lt;/code&gt; catches vector store and provider errors and returns &lt;code&gt;[]&lt;/code&gt;. &lt;a href="https://github.com/agno-agi/agno/issues/10150" target="_blank" rel="noopener"&gt;agno#10150&lt;/a&gt;, partially fixed by &lt;a href="https://github.com/agno-agi/agno/pull/10152" target="_blank" rel="noopener"&gt;agno#10152&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:12"&gt;&#10;&lt;p&gt;When a streamed tool-call index does not start at zero, Agno leaves empty placeholder calls. &lt;a href="https://github.com/agno-agi/agno/issues/8879" target="_blank" rel="noopener"&gt;agno#8879&lt;/a&gt;, fix proposed in &lt;a href="https://github.com/agno-agi/agno/pull/8880" target="_blank" rel="noopener"&gt;agno#8880&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:13"&gt;&#10;&lt;p&gt;With the OpenAI Responses API, Agno keeps only the last reasoning item, so it cannot be replayed with the tool calls it belonged to. &lt;a href="https://github.com/agno-agi/agno/issues/9960" target="_blank" rel="noopener"&gt;agno#9960&lt;/a&gt;; partial fixes landed in &lt;a href="https://github.com/agno-agi/agno/pull/10075" target="_blank" rel="noopener"&gt;agno#10075&lt;/a&gt; and &lt;a href="https://github.com/agno-agi/agno/pull/10395" target="_blank" rel="noopener"&gt;agno#10395&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:14"&gt;&#10;&lt;p&gt;Unclassified &lt;code&gt;ModelProviderError&lt;/code&gt; failures default to HTTP 502, so a real network blip and a permanent error look the same. &lt;a href="https://github.com/agno-agi/agno/issues/8869" target="_blank" rel="noopener"&gt;agno#8869&lt;/a&gt;, partially addressed by &lt;a href="https://github.com/agno-agi/agno/pull/8870" target="_blank" rel="noopener"&gt;agno#8870&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:15"&gt;&#10;&lt;p&gt;The latest stable release on &lt;a href="https://pypi.org/project/httpx/#history" target="_blank" rel="noopener"&gt;PyPI&lt;/a&gt; is 0.28.1, uploaded 2024-12-06. There have been 1.0 development pre-releases since, the latest in August 2026. The closing of issues and discussions was widely discussed in the Python community in March 2026.&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Why Docker isn't an AI-safe sandbox anymore, and how I fixed it in MindRoom 🔒</title><link>https://www.nijho.lt/post/kernels-containers-vms/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/kernels-containers-vms/</guid><description>&lt;p&gt;For years, a Docker container was my default answer to &amp;ldquo;where do I run this?&amp;rdquo;&#10;I never thought it was a perfect sandbox.&#10;It was good enough, because getting out of one usually meant finding a specific kind of bug in the Linux kernel itself, and those were hard to find.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;AI models have become very good at finding security bugs, including in Linux.&#10;Anthropic and OpenAI now keep their strongest security models, &lt;a href="https://www.anthropic.com/claude/mythos" target="_blank" rel="noopener"&gt;Claude Mythos&lt;/a&gt; and &lt;a href="https://openai.com/the-defense-factory/" target="_blank" rel="noopener"&gt;Daybreak Blue&lt;/a&gt;, behind identity checks and vetting.&#10;Open-weight models, which anyone can download and run, come with no such rules, and they trail the closed ones by only &lt;a href="https://epoch.ai/data-insights/open-closed-cyber-eci-gap" target="_blank" rel="noopener"&gt;six to seven months&lt;/a&gt;.&#10;Once there is an open model as good as Mythos, anyone can strip out its refusals with a tool like &lt;a href="https://github.com/p-e-w/heretic" target="_blank" rel="noopener"&gt;Heretic&lt;/a&gt; (people call this abliteration) and point it at the Linux kernel.&#10;The security company DepthFirst used its own model to find a way out of a container and titled the write-up &lt;a href="https://depthfirst.com/research/containers-are-no-longer-safe" target="_blank" rel="noopener"&gt;Containers Are No Longer a Security Boundary&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;I care about this because running untrusted code in containers is exactly what &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, my open-source system for AI agents that live in Matrix chat rooms, does.&#10;Every agent can get its own Docker worker, and its shell, file, Python, and browser tools run there.&#10;It can install anything, start background processes, and drive a real browser.&#10;And as I wrote in &lt;a href="https://www.nijho.lt/post/btrfs-to-zfs/"&gt;my ZFS post&lt;/a&gt;, I run coding agents in &lt;span class="hover-tip" data-tooltip="The agent runs every command without asking me for approval first." tabindex="0"&gt;YOLO mode&lt;/span&gt;, exclusively.&#10;I do not review the commands they run, I look at the results.&lt;/p&gt;&#10;&lt;p&gt;So both sides changed at once.&#10;The code inside the container is now written by an AI, and the bugs that let it out are now found by an AI.&#10;A &lt;a href="https://youtu.be/9-2CSJC114k" target="_blank" rel="noopener"&gt;video from the Low Level channel&lt;/a&gt; asking whether containers are still safe made me sit down and rethink my setup.&lt;/p&gt;&#10;&lt;p&gt;I am not an expert in any of this.&#10;I have used containers, KVM, and hypervisors for years, including Proxmox before I &lt;a href="https://www.nijho.lt/post/proxmox-to-nixos/"&gt;moved to NixOS&lt;/a&gt;, but I never deeply understood what happens underneath.&#10;Building this forced me to learn it, and writing this post is my exercise in understanding it all.&#10;All of this is very complicated (as is everything new), and I am still learning.&#10;I am sure I skip over a lot and simplify the rest; what is here are the parts that helped me understand it.&#10;I thought it would be nice to share.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; A container is a process on your machine that the kernel dresses up as a separate computer.&#10;Every container shares that one kernel with the host, so a single bug in it can be a way out.&#10;MindRoom can now give each agent&amp;rsquo;s worker its own kernel, with one setting and six lines of code.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#what-the-kernel-actually-does"&gt;What the kernel actually does&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#a-container-is-a-process-in-a-costume"&gt;A container is a process in a costume&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-kernel-bugs-are-a-bigger-problem-now"&gt;Why kernel bugs are a bigger problem now&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#so-i-asked-a-model-to-break-out"&gt;So I asked a model to break out&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#stronger-walls-virtual-machines"&gt;Stronger walls: virtual machines&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#kata-containers-and-gvisor"&gt;Kata Containers and gVisor&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-pr-six-lines"&gt;The PR: six lines&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-it-costs"&gt;What it costs&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-this-does-not-fix"&gt;What this does not fix&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="what-the-kernel-actually-does"&gt;What the kernel actually does &lt;a class="anchor" href="#what-the-kernel-actually-does" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When people talk about Linux, they usually mean an operating system like Ubuntu, Fedora, or NixOS.&#10;Those differ in almost everything you see: package managers, desktops, config files.&#10;What they all have in common is the kernel, the part Linus Torvalds started in 1991 and still leads today.&#10;Strictly speaking, that kernel is the only part called Linux.&lt;/p&gt;&#10;&lt;p&gt;The kernel is the one program on a Linux machine that talks to the hardware directly.&#10;Everything else, your shell, Python, Chrome, Docker, runs on top of it and has to ask it for things.&#10;Open this file.&#10;Give me some memory.&#10;Send this packet.&#10;Start a new process.&#10;Those requests are called system calls, or syscalls for short.&lt;/p&gt;&#10;&lt;p&gt;There is one kernel per machine, and it decides who is allowed to do what.&#10;That makes it the most trusted code on the system.&#10;Most kernel bugs only crash the machine or cause glitches.&#10;But some let a normal program become root, the admin account, or even run its own code inside the kernel.&#10;At that point it can do anything on the machine, including leaving any container it was in.&lt;/p&gt;&#10;&lt;h2 id="a-container-is-a-process-in-a-costume"&gt;A container is a process in a costume &lt;a class="anchor" href="#a-container-is-a-process-in-a-costume" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When you &lt;code&gt;docker run -it ubuntu&lt;/code&gt;, you get a root shell in what feels like a fresh computer.&#10;Under the hood it is one ordinary process.&#10;The kernel dresses it up using three features:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Namespaces&lt;/strong&gt; decide what the process can see. It gets its own list of processes (where it is process number 1), its own filesystem, and its own network. Root inside is still root on the host, with &lt;span class="hover-tip" data-tooltip="Docker drops most of root&amp;#39;s special powers, which Linux calls capabilities, and seccomp and AppArmor block more. Namespaces only change what root can see." tabindex="0"&gt;most of its powers taken away&lt;/span&gt;.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;cgroups&lt;/strong&gt; decide how much it can use: CPU, memory, number of processes.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;seccomp&lt;/strong&gt; decides which syscalls it may make at all. It is a filter that blocks the ones a normal program never needs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/kernels-containers-vms/container-kernel.svg" alt="Two containers and the host&amp;#39;s own processes all make syscalls into one shared Linux kernel, which keeps the containers apart with namespaces, cgroups and seccomp. One bug in that kernel reaches every container and the host." loading="lazy" data-zoomable&gt;&lt;/figure&gt;&#10;&lt;p&gt;There is no second kernel.&#10;Every syscall from inside a container lands in the same kernel as every other container and the host itself.&#10;The kernel enforces the isolation, and it is also what gets attacked.&lt;/p&gt;&#10;&lt;p&gt;For most uses that is fine.&#10;Usually you put fixed software in a container: a database, a web app, some self-hosted service.&#10;You know where that code comes from, you keep your kernel patched, and that is good enough.&lt;/p&gt;&#10;&lt;p&gt;An AI agent is different.&#10;It writes new code on the spot and runs it, and nobody knows in advance what that code will do.&lt;/p&gt;&#10;&lt;p&gt;Since root in a container is root on the host, anyone who can use Docker can start a container as root and mount any folder from the host into it.&#10;They can then read and change every file in that folder, including files their own account may not open.&#10;Docker&amp;rsquo;s own documentation says the &lt;code&gt;docker&lt;/code&gt; group &lt;a href="https://docs.docker.com/engine/install/linux-postinstall/" target="_blank" rel="noopener"&gt;grants root-level privileges&lt;/a&gt;.&#10;I knew that in theory, but it only clicked when I watched an AI agent do it on a machine where I had no root, only Docker access.&#10;It needed to change files it was not allowed to touch, so it started a small container, mounted their folder, and edited them from inside.&#10;No kernel bug needed.&lt;/p&gt;&#10;&lt;h2 id="why-kernel-bugs-are-a-bigger-problem-now"&gt;Why kernel bugs are a bigger problem now &lt;a class="anchor" href="#why-kernel-bugs-are-a-bigger-problem-now" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Kernel bugs that let a normal program take over the whole machine used to take skilled people weeks or months to find and exploit.&#10;The famous ones, like &lt;a href="https://dirtycow.ninja" target="_blank" rel="noopener"&gt;Dirty COW&lt;/a&gt; in 2016, made the news every year or two, you patched, and that was it.&lt;/p&gt;&#10;&lt;p&gt;AI is speeding this up, and the DepthFirst write-up I mentioned is a good example.&#10;Their model found a bug in the kernel code for Unix sockets, which programs on the same machine use to talk to each other.&#10;The kernel freed a piece of memory and then kept using it, a so-called use-after-free, and from inside a container that was enough to get out.&#10;Their conclusion is that you should assume attackers can escape containers at will.&lt;/p&gt;&#10;&lt;p&gt;Blocking more syscalls, or taking more powers away from root, helps a little.&#10;But it only narrows which parts of the shared kernel a container can reach.&#10;This bug sat in Unix sockets, which almost every program uses, including the browser the agent drives, so blocking them would break the agent.&lt;/p&gt;&#10;&lt;p&gt;Now put an AI agent in that container.&#10;It reads web pages and repositories written by strangers, and one of those could talk it into running an exploit.&#10;On a MindRoom server, getting out of a worker means getting onto the machine that runs MindRoom itself.&#10;That is where the API keys, Matrix logins, and stored credentials live, which the workers are built to never see.&lt;/p&gt;&#10;&lt;h2 id="so-i-asked-a-model-to-break-out"&gt;So I asked a model to break out &lt;a class="anchor" href="#so-i-asked-a-model-to-break-out" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Before changing anything, I wanted to know how real this was for my own setup.&#10;I gave a MindRoom agent &lt;a href="https://openai.com/the-defense-factory/" target="_blank" rel="noopener"&gt;Daybreak Blue&lt;/a&gt; and asked it to escape its worker container using known kernel vulnerabilities.&#10;Daybreak Blue is OpenAI&amp;rsquo;s security model for verified users, so it does the offensive security work that other models refuse.&lt;/p&gt;&#10;&lt;p&gt;It did not get out, which was reassuring.&#10;But it only tried known bugs.&#10;A kernel a few weeks behind on patches, or a bug nobody has published yet, would be a different story.&#10;So the attempt tells me the easy path was closed that day, and not much more.&lt;/p&gt;&#10;&lt;h2 id="stronger-walls-virtual-machines"&gt;Stronger walls: virtual machines &lt;a class="anchor" href="#stronger-walls-virtual-machines" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The classic answer is a virtual machine.&#10;A container shares the host&amp;rsquo;s kernel, but a VM brings its own, and this is where the hardware comes in.&#10;Modern CPUs have a virtualization mode built in, called VT-x on Intel and AMD-V on AMD.&#10;In that mode, a second kernel, the guest kernel, runs directly on the real CPU and believes it is in charge, while the CPU quietly limits it.&#10;When the guest tries something it may not do on its own, like talking to a disk or a network card, the CPU pauses the guest and hands control to the host.&#10;This is called a VM exit.&#10;Despite the name, nothing escapes and nothing crashes.&#10;The host handles the request, for example by pretending to be that disk, and then resumes the guest where it stopped.&#10;From the guest&amp;rsquo;s point of view, the instruction simply finished.&lt;/p&gt;&#10;&lt;p&gt;Memory is fenced off too.&#10;The host gives the CPU a separate map of which real memory each guest may use, and the CPU checks every memory access against it.&#10;So even a guest kernel with full privileges cannot touch the host&amp;rsquo;s memory.&lt;/p&gt;&#10;&lt;p&gt;The CPU only provides the mechanism.&#10;The software that sets the rules and handles the VM exits is called the hypervisor.&#10;&amp;ldquo;Hypervisor&amp;rdquo; is a role, not one program, and on Linux it is two pieces:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;KVM&lt;/strong&gt;, a module in the Linux kernel, uses the CPU&amp;rsquo;s virtualization mode to run the guest, keeps that memory map, and catches its VM exits. It shows up as the device &lt;code&gt;/dev/kvm&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;A VMM&lt;/strong&gt; (virtual machine monitor), a normal program on top, sets up the VM and handles the exits that KVM passes up, for example by pretending to be the guest&amp;rsquo;s disk and network card. &lt;a href="https://www.qemu.org" target="_blank" rel="noopener"&gt;QEMU&lt;/a&gt;, &lt;a href="https://firecracker-microvm.github.io" target="_blank" rel="noopener"&gt;Firecracker&lt;/a&gt;, and &lt;a href="https://www.cloudhypervisor.org" target="_blank" rel="noopener"&gt;Cloud Hypervisor&lt;/a&gt; are three VMMs you can pick from.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Proxmox, which I mentioned above, is KVM plus QEMU.&#10;AWS Lambda is KVM plus Firecracker.&lt;/p&gt;&#10;&lt;p&gt;Code in a VM talks to its own guest kernel.&#10;To reach the host, it usually has to break that kernel first and then the hypervisor.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&#10;That is still possible.&#10;Google Project Zero turned &lt;a href="https://googleprojectzero.blogspot.com/2021/06/an-epyc-escape-case-study-of-kvm.html" target="_blank" rel="noopener"&gt;a bug in how KVM runs VMs inside VMs on AMD&lt;/a&gt; into a full escape in 2021.&#10;Google&amp;rsquo;s &lt;a href="https://security.googleblog.com/2024/06/virtual-escape-real-reward-introducing.html" target="_blank" rel="noopener"&gt;kvmCTF&lt;/a&gt; pays up to &lt;span class="hover-tip" data-tooltip="The top reward in the current kvmCTF rules, for a full escape from the guest VM to the host." tabindex="0"&gt;$250,000&lt;/span&gt; for a new one.&#10;And this year, one researcher, Hyunwoo Kim, published &lt;a href="https://github.com/V4bel/Zapscape" target="_blank" rel="noopener"&gt;three KVM escapes&lt;/a&gt;, one of them hidden in KVM &lt;span class="hover-tip" data-tooltip="Januscape, CVE-2026-53359: a use-after-free in the shadow page tables of x86 KVM, added in August 2010 and fixed in June 2026." tabindex="0"&gt;since 2010&lt;/span&gt;.&lt;/p&gt;&#10;&lt;p&gt;The difference between a container and a VM is how much code an attacker can reach, and that gap is large.&#10;On x86 (the Intel and AMD chips in most PCs and servers), Linux has &lt;span class="hover-tip" data-tooltip="The x86_64 syscall table of Linux 7.3-rc7 has 386 entries for 64-bit programs, and 16 of them are empty slots that only return an error." tabindex="0"&gt;about 370 syscalls&lt;/span&gt;, and Docker&amp;rsquo;s &lt;a href="https://docs.docker.com/engine/security/seccomp/" target="_blank" rel="noopener"&gt;default seccomp filter&lt;/a&gt; blocks &lt;span class="hover-tip" data-tooltip="Docker&amp;#39;s documentation says its default profile disables around 44 system calls out of 300&amp;#43;. The current profile blocks a few more, like the io_uring calls." tabindex="0"&gt;a few dozen&lt;/span&gt; of them.&#10;Behind the rest sit the kernel&amp;rsquo;s filesystems, networking, memory management, and core code: &lt;span class="hover-tip" data-tooltip="The fs, net, mm and kernel folders of Linux 7.3-rc7, counted with tokei, comments and blank lines included. The whole tree is 43 million lines, 26.5 million of them drivers." tabindex="0"&gt;about 3.8 million lines&lt;/span&gt;, even without counting drivers.&#10;Not all of that is reachable from a container, but a lot of it is.&#10;KVM on x86 is &lt;span class="hover-tip" data-tooltip="arch/x86/kvm plus virt/kvm in the same Linux 7.3-rc7 tree, counted the same way: 113,720 lines." tabindex="0"&gt;about 114,000 lines&lt;/span&gt;.&#10;On top of KVM comes the VMM, but only the few devices it fakes for the guest.&#10;Most QEMU escapes came from its many emulated devices, which is why Firecracker and Cloud Hypervisor keep that list short.&lt;/p&gt;&#10;&lt;p&gt;Google&amp;rsquo;s bug bounties point the same way.&#10;&lt;a href="https://google.github.io/security-research/kernelctf/rules.html" target="_blank" rel="noopener"&gt;kernelCTF&lt;/a&gt; pays &lt;span class="hover-tip" data-tooltip="One fixed amount per accepted exploit, according to the current kernelCTF rules." tabindex="0"&gt;$71,337&lt;/span&gt; for each new kernel exploit that turns a normal user into root, and Google&amp;rsquo;s &lt;a href="https://github.com/google/security-research/tree/master/pocs/linux/kernelctf" target="_blank" rel="noopener"&gt;public repository&lt;/a&gt; holds exploits for &lt;span class="hover-tip" data-tooltip="119 exploit folders in pocs/linux/kernelctf, covering 93 unique CVEs, at commit 79f049dc from October 16, 2026." tabindex="0"&gt;93 different kernel bugs&lt;/span&gt;.&#10;kvmCTF pays more than three times as much, and the same repository holds &lt;span class="hover-tip" data-tooltip="The only folder in pocs/linux/kvmctf at the same commit: a NULL pointer dereference reached through nested virtualization. Januscape was also used in kvmCTF but is not in the repository yet." tabindex="0"&gt;one KVM exploit&lt;/span&gt;, which crashes the host instead of escaping it.&#10;kvmCTF started a year later, but the gap is still big.&#10;Most of those kernel exploits would not work as written from a default container, because they &lt;span class="hover-tip" data-tooltip="84 of the 119 exploit folders create a user namespace, which gives a normal process root&amp;#39;s powers over its own set of namespaces and opens up kernel code it could not reach otherwise. Docker&amp;#39;s default seccomp profile blocks that unless the container has the CAP_SYS_ADMIN capability." tabindex="0"&gt;first use a feature Docker blocks&lt;/span&gt;.&#10;Still, they show how many exploitable bugs sit behind the syscalls.&lt;/p&gt;&#10;&lt;h2 id="kata-containers-and-gvisor"&gt;Kata Containers and gVisor &lt;a class="anchor" href="#kata-containers-and-gvisor" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Regular VMs are heavy.&#10;They boot a full operating system and tend to use a lot of memory.&#10;A microVM is a stripped-down VM meant to run one workload and start quickly.&#10;That still leaves a practical problem.&#10;MindRoom, like most tools, speaks Docker: it hands Docker an image and some folders to mount, and gets a running container back.&#10;A VM does not take a Docker image.&#10;Switching to VMs would normally mean building disk images, booting them, and wiring up files and networking myself.&lt;/p&gt;&#10;&lt;p&gt;Docker does not start containers by itself, though.&#10;It takes care of images, networks, and volumes, and then hands the actual start to a small program called a runtime.&#10;The default runtime, &lt;code&gt;runc&lt;/code&gt;, does what I described earlier: it starts a process on the host kernel with namespaces, cgroups, and seccomp.&#10;But you can tell Docker to use a different runtime.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://katacontainers.io" target="_blank" rel="noopener"&gt;Kata Containers&lt;/a&gt; is such a runtime, and it starts a microVM instead.&#10;It picks one of the VMMs above (my test used QEMU), boots a small guest kernel, and starts the container inside it.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&#10;Docker, and MindRoom, still see an ordinary container.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://gvisor.dev" target="_blank" rel="noopener"&gt;gVisor&lt;/a&gt;, from Google, takes a different route, and it is not a VM.&#10;It is a reimplementation of the Linux kernel, written in Go, that runs as a normal program on the host.&#10;Go manages memory for the programmer, so the use-after-free mistake behind the DepthFirst escape is much harder to make in gVisor.&#10;The worker&amp;rsquo;s syscalls go to gVisor instead of the host kernel, and gVisor itself only makes a small, filtered set of host syscalls.&#10;That is the hardening idea taken all the way: gVisor answers the agent&amp;rsquo;s syscalls itself, so the filter on the host can be much stricter than Docker&amp;rsquo;s.&#10;It needs no &lt;code&gt;/dev/kvm&lt;/code&gt;, so it also runs inside cloud VMs that cannot start VMs of their own.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&#10;My test machine, an ARM server (with the kind of chip phones use) running NixOS, had no &lt;code&gt;/dev/kvm&lt;/code&gt;, which is why I tried gVisor first.&#10;Its runtime is called &lt;code&gt;runsc&lt;/code&gt;, and it plugs into Docker the same way.&lt;/p&gt;&#10;&lt;figure id="figure-the-three-options-side-by-side"&gt;&lt;img src="https://www.nijho.lt/post/kernels-containers-vms/isolation-stacks.svg" alt="Three stacks side by side. Plain Docker: the agent&amp;#39;s code makes syscalls straight into the host kernel, so the usual way out is a host kernel bug, reached through any syscall seccomp allows. gVisor: the agent&amp;#39;s code makes syscalls into gVisor&amp;#39;s own kernel, written in Go, which makes a small set of syscalls to the host kernel, so the usual way out is a gVisor bug and then a host kernel bug. Kata Containers: the agent&amp;#39;s code runs on a guest kernel inside a microVM, and the CPU runs that guest kernel directly, next to the host kernel instead of on top of it. When the guest needs a device, a VM exit hands control to the KVM module in the host kernel, which passes the request up to the VMM, a normal program on the host that fakes the device. The VMM and KVM together are the hypervisor, so the usual way out is a guest kernel bug and then a hypervisor bug." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;The three options side by side.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Or as a table:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Isolation&lt;/th&gt;&#10;&lt;th&gt;What worker code talks to&lt;/th&gt;&#10;&lt;th&gt;Needs KVM&lt;/th&gt;&#10;&lt;th&gt;Usual escape route&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Plain Docker (&lt;code&gt;runc&lt;/code&gt;)&lt;/td&gt;&#10;&lt;td&gt;The host kernel, filtered by seccomp&lt;/td&gt;&#10;&lt;td&gt;No&lt;/td&gt;&#10;&lt;td&gt;A host kernel bug&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;gVisor (&lt;code&gt;runsc&lt;/code&gt;)&lt;/td&gt;&#10;&lt;td&gt;gVisor&amp;rsquo;s own kernel, written in Go&lt;/td&gt;&#10;&lt;td&gt;No&lt;/td&gt;&#10;&lt;td&gt;A gVisor bug, then a host kernel bug through its small filtered surface&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Kata Containers&lt;/td&gt;&#10;&lt;td&gt;Its own guest kernel in a microVM&lt;/td&gt;&#10;&lt;td&gt;Yes&lt;/td&gt;&#10;&lt;td&gt;A guest kernel bug, then a hypervisor bug&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Each option also changes how much code on the host an escape can pick its bug from.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Lines of code on the host that deal with what the agent&amp;rsquo;s code asks for, counted with tokei, comments and blank lines included. For Docker, the core of Linux without drivers; for gVisor, its kernel and network stack without tests; for Kata, KVM alone, without the VMM and Kata&amp;rsquo;s other helpers. Not all of it is reachable. Hover for exact numbers." data-plot-module="/post/kernels-containers-vms/plots.js" data-plot-name="attackSurface"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Lines of code on the host that deal with what the agent&amp;rsquo;s code asks for, counted with tokei, comments and blank lines included. For Docker, the core of Linux without drivers; for gVisor, its kernel and network stack without tests; for Kata, KVM alone, without the VMM and Kata&amp;rsquo;s other helpers. Not all of it is reachable. Hover for exact numbers.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;h2 id="the-pr-six-lines"&gt;The PR: six lines &lt;a class="anchor" href="#the-pr-six-lines" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The change is &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2886" target="_blank" rel="noopener"&gt;PR #2886&lt;/a&gt;, which is now merged.&#10;It adds one setting, &lt;code&gt;MINDROOM_DOCKER_WORKER_RUNTIME&lt;/code&gt;, and MindRoom passes its value to Docker as the runtime whenever it starts a worker.&#10;That is &lt;span class="hover-tip" data-tooltip="Three lines in docker.py and three in docker_config.py. The merged PR adds 98 lines: these 6, 62 lines of tests, and 30 lines of docs." tabindex="0"&gt;six lines of source code&lt;/span&gt;, plus 62 lines of tests and some docs.&#10;Changing the setting recreates each worker the next time it is used, and leaving it unset keeps everything as it was.&lt;/p&gt;&#10;&lt;p&gt;For gVisor, setting it up is two steps: register the runtime in Docker&amp;rsquo;s &lt;code&gt;/etc/docker/daemon.json&lt;/code&gt; and restart Docker, then point MindRoom at it.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;runtimes&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;runsc&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/usr/local/bin/runsc&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MINDROOM_DOCKER_WORKER_RUNTIME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;runsc&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Kata needs no entry in that file: once it is installed, &lt;code&gt;MINDROOM_DOCKER_WORKER_RUNTIME=io.containerd.kata.v2&lt;/code&gt; is enough.&#10;The full setup, and a few catches for each runtime, are in the &lt;a href="https://docs.mindroom.chat/deployment/sandbox-proxy/#security-considerations" target="_blank" rel="noopener"&gt;MindRoom docs&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The six lines are short because everything else already existed.&#10;gVisor and Kata do the isolating.&#10;Docker already gives each worker its folders, its credentials, and its network, and it already knows how to hand a container to a different runtime.&#10;On the MindRoom side, the hard part happened months earlier, when agent tools moved out of the main process into dedicated workers with explicit mounts and credentials.&#10;Once every worker is a single call to Docker&amp;rsquo;s &lt;code&gt;containers.run&lt;/code&gt;, swapping what runs underneath it is one argument.&#10;For comparison, Claude Opus estimated that building a microVM backend into MindRoom itself would take &lt;span class="hover-tip" data-tooltip="For a native Cloud Hypervisor backend that rebuilds image conversion, guest init, folder sharing, networking, and VM supervision. The estimate is in the PR description." tabindex="0"&gt;2,500 to 4,000 lines&lt;/span&gt;.&lt;/p&gt;&#10;&lt;h2 id="what-it-costs"&gt;What it costs &lt;a class="anchor" href="#what-it-costs" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I tested both runtimes with a real agent in a Matrix room: gVisor on that ARM server, and Kata &lt;span class="hover-tip" data-tooltip="Kata 4.2 with QEMU and Docker 29.9, inside an Incus VM with nested KVM on my desktop&amp;#39;s Ryzen 9 3900X." tabindex="0"&gt;in a throwaway VM on my desktop&lt;/span&gt;.&#10;Shell, Python, git, background processes, and the browser all worked, without any MindRoom code change.&#10;My Kata numbers below come from a VM inside a VM, so bare-metal numbers will differ.&lt;/p&gt;&#10;&lt;p&gt;Configuration is the cheap part: one environment variable, plus one entry in Docker&amp;rsquo;s config for gVisor.&#10;The other costs are the usual trade-offs between containers and VMs:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Computation.&lt;/strong&gt; Code that only calculates, without asking the kernel for anything, runs at full speed with both. gVisor lets those instructions run directly on the CPU, according to its &lt;a href="https://gvisor.dev/docs/architecture_guide/performance/" target="_blank" rel="noopener"&gt;performance guide&lt;/a&gt;. A Kata guest runs on the CPU in its virtualization mode, and in &lt;a href="https://www.usenix.org/conference/nsdi20/presentation/agache" target="_blank" rel="noopener"&gt;AWS&amp;rsquo;s paper on Firecracker&lt;/a&gt;, the CPU overhead was &lt;span class="hover-tip" data-tooltip="The paper reports memory overhead as low as 3% and negligible CPU overhead." tabindex="0"&gt;negligible&lt;/span&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Syscalls, disk, and network.&lt;/strong&gt; The cost starts when a program does ask the kernel for something. Under gVisor, every syscall takes a detour through gVisor&amp;rsquo;s kernel, so programs that make many small syscalls, like ones that open thousands of small files, slow down the most. Under Kata, disk and network go through the VMM&amp;rsquo;s fake devices. In that same paper from 2020, a Firecracker guest reached &lt;span class="hover-tip" data-tooltip="iperf3 over a tap device on an EC2 m5d.metal host, one stream: 44.1 Gbit/s for the host, 15.6 for Firecracker, and 23.8 for QEMU." tabindex="0"&gt;15 Gbit/s of network traffic where the host reached 44&lt;/span&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Startup.&lt;/strong&gt; gVisor only has to start a program, so it starts quickly. Kata has to boot a kernel first, and my worker took &lt;span class="hover-tip" data-tooltip="From creating the container until the worker answered its health check, three runs each: 10.1 to 10.9 seconds with Kata, 2.4 to 3.3 with runc." tabindex="0"&gt;about 10 seconds to start instead of about 3&lt;/span&gt;. Booting a VM can be much faster than that: &lt;a href="https://firecracker-microvm.github.io" target="_blank" rel="noopener"&gt;Firecracker&lt;/a&gt; boots a minimal one in about 125 ms.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Memory.&lt;/strong&gt; gVisor adds a &lt;span class="hover-tip" data-tooltip="gVisor&amp;#39;s performance guide: the sandbox itself is responsible for a small, mostly fixed amount of memory overhead." tabindex="0"&gt;small, mostly fixed amount&lt;/span&gt; per sandbox. Each Kata VM runs a second kernel plus the VMM, which alone takes &lt;span class="hover-tip" data-tooltip="Figure 7 of the Firecracker paper: memory used by the VMM process on top of the guest&amp;#39;s own memory, about 3 MB for Firecracker, 13 MB for Cloud Hypervisor, and 131 MB for QEMU." tabindex="0"&gt;about 3 MB with Firecracker and 131 MB with QEMU&lt;/span&gt;. Kata gives each worker VM &lt;span class="hover-tip" data-tooltip="Kata&amp;#39;s default VM has 1 vCPU and 2 GiB, set by default_vcpus and default_memory in its configuration file. Kata adds a container&amp;#39;s memory limit on top, but MindRoom sets none for its workers. The worker&amp;#39;s 1 GiB /tmp counts against it." tabindex="0"&gt;2 GiB by default&lt;/span&gt;, and &lt;code&gt;/tmp&lt;/code&gt; lives in that RAM. The host only hands out memory the guest actually touches, so my idle worker used &lt;span class="hover-tip" data-tooltip="QEMU used 530 to 616 MiB and virtiofsd, which shares the folders, about 160 MiB for one idle worker VM. Both map the guest&amp;#39;s memory, so some pages count twice and the real total is lower." tabindex="0"&gt;under 0.8 GiB&lt;/span&gt; of host memory. Raising the VM size &lt;span class="hover-tip" data-tooltip="The guest kernel keeps 64 bytes of bookkeeping for every 4 KiB page, about 1.6% of the VM&amp;#39;s size, so an 8 GiB VM costs about 128 MiB up front." tabindex="0"&gt;costs little&lt;/span&gt; until a worker needs it. But a VM cannot grow past its size the way a container can, and memory the guest has used, for example to keep recently read files in its cache, &lt;span class="hover-tip" data-tooltip="Kata&amp;#39;s reclaim_guest_freed_memory option, off by default, returns pages the guest frees. File cache does not count as free, so it stays." tabindex="0"&gt;mostly stays with the VM&lt;/span&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Compatibility.&lt;/strong&gt; gVisor reimplements Linux, and its &lt;a href="https://gvisor.dev/docs/user_guide/compatibility/" target="_blank" rel="noopener"&gt;docs&lt;/a&gt; say there will always be unimplemented features and bugs, so now and then a program will not work. Kata runs a real Linux kernel, so programs behave as usual, with a few catches. For example, a file lock held on the host does not block the worker, because the lock lives in the guest kernel.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="what-this-does-not-fix"&gt;What this does not fix &lt;a class="anchor" href="#what-this-does-not-fix" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A stronger sandbox protects the host.&#10;It does nothing about the tokens and network access you give the worker.&#10;An agent needs no kernel exploit to misuse a token that can push to your repositories, or to poke at every device on your home network.&#10;Scoped credentials and a firewall allowlist protect you at least as much, and MindRoom handles both separately: &lt;a href="https://docs.mindroom.chat/deployment/egress-broker/" target="_blank" rel="noopener"&gt;Agent Keys&lt;/a&gt; let agents use API keys without ever seeing them, and &lt;a href="https://docs.mindroom.chat/deployment/approved-egress/" target="_blank" rel="noopener"&gt;Approved Egress&lt;/a&gt; limits which servers a worker on Kubernetes can reach.&lt;/p&gt;&#10;&lt;p&gt;gVisor has had its own bugs, and it still talks to the host kernel, just through a much smaller door.&#10;KVM has bugs too, as this year&amp;rsquo;s escapes show.&#10;Both walls make an escape far harder, and neither makes it impossible.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion &lt;a class="anchor" href="#conclusion" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Once I started reading about this, I kept running into people saying containers were never a security boundary.&#10;That is true, and for years I did not worry about it.&#10;With AI finding kernel bugs faster and agents running code nobody reads, I do now.&lt;/p&gt;&#10;&lt;p&gt;No sandbox is perfectly safe, though.&#10;In &lt;a href="https://www.dwarkesh.com/p/noam-brown" target="_blank" rel="noopener"&gt;a conversation with Dwarkesh Patel&lt;/a&gt;, Noam Brown doubted that even computers with no network connection at all would be enough to contain an AI.&#10;He pointed to &lt;a href="https://arxiv.org/abs/1503.07919" target="_blank" rel="noopener"&gt;studies&lt;/a&gt; where two such computers next to each other &lt;span class="hover-tip" data-tooltip="BitWhisper, from Ben-Gurion University in 2015: 1 to 8 bits per hour between computers up to 40 cm apart, enough for a short command or a password." tabindex="0"&gt;talk through heat&lt;/span&gt;: one runs its CPU hot, and the other picks up the change with its temperature sensor.&#10;Every option in this post trades some speed or memory for safety.&#10;How far to go depends on your own risk tolerance and how paranoid you are.&#10;MindRoom can now move its agents off the shared kernel with one environment variable.&#10;I do not use it myself yet, but if you are more paranoid than I am, it is there.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;The other way out is a bug in the program that starts the container. In 2024, &lt;a href="https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv" target="_blank" rel="noopener"&gt;CVE-2024-21626&lt;/a&gt; in runc, the program Docker uses for that, leaked a handle to a host folder into new containers, so a malicious image could reach the host&amp;rsquo;s files without any kernel bug.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;Docker can map the container&amp;rsquo;s root to an ordinary user on the host with &lt;a href="https://docs.docker.com/engine/security/userns-remap/" target="_blank" rel="noopener"&gt;user namespace remapping&lt;/a&gt;, or run without root altogether in &lt;a href="https://docs.docker.com/engine/security/rootless/" target="_blank" rel="noopener"&gt;rootless mode&lt;/a&gt;, but neither is the default. Rootless mode would have stopped the agent in my Docker story, because Docker then has only my own rights. Remapping would not, because anyone who can use Docker can turn it off for a single container. Neither helps against a kernel bug, because code running inside the kernel is above every user.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;A bug in the VMM&amp;rsquo;s fake devices, or in other VMM code that handles the guest&amp;rsquo;s traffic, can skip the first step, because a normal program in the guest can feed that code data through the network or a shared folder. &lt;a href="https://access.redhat.com/security/cve/cve-2020-8608" target="_blank" rel="noopener"&gt;CVE-2020-8608&lt;/a&gt;, a buffer overflow in QEMU&amp;rsquo;s user-mode networking, could be triggered that way with crafted network traffic.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;Like runc for Docker, Kata&amp;rsquo;s own programs on the host are a way out too. In 2020, one bug (&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2020-2023" target="_blank" rel="noopener"&gt;CVE-2020-2023&lt;/a&gt;) let a container take over the guest without a kernel bug, and a second (&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2020-2026" target="_blank" rel="noopener"&gt;CVE-2020-2026&lt;/a&gt;) then let the guest trick the Kata runtime on the host into mounting files over any host path. Neither needed a KVM bug. virtiofsd, the program that shares folders with the guest, also runs on the host and handles the guest&amp;rsquo;s file requests.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;gVisor can &lt;a href="https://gvisor.dev/docs/architecture_guide/platforms/" target="_blank" rel="noopener"&gt;use KVM too&lt;/a&gt;, as an option. By default it catches the agent&amp;rsquo;s syscalls without it, which is the setup this post describes. With KVM switched on, gVisor runs the agent&amp;rsquo;s code in the CPU&amp;rsquo;s virtualization mode so catching syscalls is faster, but gVisor&amp;rsquo;s own kernel still answers them, and there is no guest Linux and no fake devices. gVisor recommends that mode only on bare metal; inside a VM the default is usually faster.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Giving models the tools they were trained with can make them worse</title><link>https://www.nijho.lt/post/native-harness-tools/</link><pubDate>Sun, 11 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/native-harness-tools/</guid><description>&lt;p&gt;A few nights ago, lying in bed, I had what felt like a galaxy-brain idea.&#10;I dictated it into my watch so I would still remember it in the morning.&lt;/p&gt;&#10;&lt;p&gt;Every frontier model learns to solve coding tasks with tools through reinforcement learning (RL), and I assume that training happens inside its vendor&amp;rsquo;s own coding agent: Anthropic&amp;rsquo;s models in Claude Code, and OpenAI&amp;rsquo;s models in Codex.&#10;That is a big assumption, since the labs do not publish their training environments, but it makes business sense: they sell those agents, so they have every reason to make their models work best in them.&#10;Every other harness, like &lt;a href="https://github.com/badlogic/pi-mono" target="_blank" rel="noopener"&gt;pi&lt;/a&gt;, &lt;a href="https://opencode.ai/" target="_blank" rel="noopener"&gt;opencode&lt;/a&gt;, or my own &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, gives the model a set of tools of its own design for running commands and editing files.&#10;The models are usually smart enough to figure those out, but not always.&#10;Sometimes a model assumes an edit tool works like the one it was trained with, and uses it wrong.&#10;This summer, that happened to Claude Opus 4.8 in pi, which I come back to &lt;a href="#why-i-believed-it"&gt;below&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;So the idea was simple: in MindRoom, give each model the same shell and file-editing tools as its native harness, and switch them automatically depending on which model is answering.&#10;Claude would see Claude Code&amp;rsquo;s &lt;code&gt;Bash&lt;/code&gt;, &lt;code&gt;Read&lt;/code&gt;, &lt;code&gt;Edit&lt;/code&gt;, and &lt;code&gt;Write&lt;/code&gt;.&#10;GPT would see Codex&amp;rsquo;s &lt;code&gt;exec_command&lt;/code&gt; and &lt;code&gt;apply_patch&lt;/code&gt;.&#10;And because the smallest agents do surprisingly well, I would go one step further: a minimal agent whose only tool is the shell each model knows from its training.&lt;/p&gt;&#10;&lt;p&gt;I was beyond excited.&#10;I could not really share that excitement locally, because my wife did not care, so I am sharing it with the internet instead.&lt;/p&gt;&#10;&lt;p&gt;Then I measured it against MindRoom&amp;rsquo;s own tools, and the familiar ones did not make the models more efficient.&#10;With only Codex&amp;rsquo;s tools, GPT-6 Astra did 84% more work, taking more steps and reading and writing more along the way, and used 59% more tokens.&#10;With Claude Code&amp;rsquo;s tools, Claude Sonnet 5.5 did 15% more work, and Claude only came out a few tokens cheaper because the descriptions I wrote for those tools are slightly shorter than MindRoom&amp;rsquo;s.&#10;Only one model clearly worked more efficiently with its own tools: Claude Opus 4.8, the model from the pi story.&#10;The models seem to generalize beyond the environment they were trained in, and what still matters is how much the agent sends with every request.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;What I found&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Compared with MindRoom&amp;rsquo;s own tools, the familiar ones did not make the models more efficient: with only Codex&amp;rsquo;s tools, GPT-6 Astra and Sol did 60 to 84% more work and used 43 to 59% more tokens.&lt;/li&gt;&#10;&lt;li&gt;With Claude Code&amp;rsquo;s tools, Claude Sonnet 5.5 did 15% more work and Opus 5.5 about the same; they only came out a few tokens cheaper because the descriptions I wrote for those tools are shorter than MindRoom&amp;rsquo;s.&lt;/li&gt;&#10;&lt;li&gt;Only Claude Opus 4.8, the model whose edits kept failing in pi, clearly worked more efficiently with its own tools.&lt;/li&gt;&#10;&lt;li&gt;What matters is how much the agent sends with every request: a minimal agent with one shell tool and a 12-line prompt used 58 to 76% fewer tokens than the same agent in standard mode on these short tasks.&lt;/li&gt;&#10;&lt;li&gt;Giving that minimal agent each model&amp;rsquo;s own shell tool did not make it better.&lt;/li&gt;&#10;&lt;/ul&gt;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#what-a-harness-is"&gt;What a harness is&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-i-believed-it"&gt;Why I believed it&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#smaller-agents-do-better"&gt;Smaller agents do better&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#models-should-know-their-own-tools-best"&gt;Models should know their own tools best&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-i-built"&gt;What I built&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#how-i-measured-it"&gt;How I measured it&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#native-tools-dont-make-todays-models-more-efficient"&gt;Native tools don&amp;rsquo;t make today&amp;rsquo;s models more efficient&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#older-models-only-opus-48-did-better-with-them"&gt;Older models: only Opus 4.8 did better with them&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-does-matter-what-the-agent-sends"&gt;What does matter: what the agent sends&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#fewer-tools"&gt;Fewer tools&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#minimal-mode-one-shell-tool-and-a-12-line-prompt"&gt;Minimal mode: one shell tool and a 12-line prompt&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#minimal-mode-with-each-models-native-shell-tool"&gt;Minimal mode with each model&amp;rsquo;s native shell tool&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-this-does-and-does-not-show"&gt;What this does and does not show&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-happens-to-the-pull-request"&gt;What happens to the pull request&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-this-excites-me"&gt;Why this excites me&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#appendix-how-i-measured-and-the-numbers-behind-the-charts"&gt;Appendix: how I measured, and the numbers behind the charts&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="what-a-harness-is"&gt;What a harness is &lt;a class="anchor" href="#what-a-harness-is" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&amp;ldquo;Harness&amp;rdquo; gets thrown around a lot, but there is no magic in it.&#10;Every coding agent talks to the model the same way: each request contains a system prompt, the definition of every tool the model may call, and the conversation so far.&#10;When the model answers with a tool call, the harness runs the tool, adds the result to the conversation, and sends everything again.&lt;/p&gt;&#10;&lt;figure class="harness-diagram" style="max-width: 460px; margin: 2rem auto;"&gt;&#10;&lt;svg viewBox="0 0 380 470" role="img" aria-label="One request holds the system prompt, the tool definitions, and the conversation so far. The model answers with a tool call, the harness runs it, adds the result to the conversation, and sends the whole request again." style="width: 100%; height: auto; font-family: system-ui, sans-serif;"&gt;&#10;&lt;defs&gt;&lt;marker id="harness-arrow" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"&gt;&lt;path d="M0,0 L8,4 L0,8 z" fill="currentColor"/&gt;&lt;/marker&gt;&lt;/defs&gt;&#10;&lt;rect x="10" y="10" width="250" height="210" rx="10" fill="none" stroke="currentColor" stroke-opacity="0.45"/&gt;&#10;&lt;text x="22" y="32" font-size="14" font-weight="700" fill="currentColor"&gt;One request to the model&lt;/text&gt;&#10;&lt;rect x="22" y="44" width="226" height="48" rx="6" fill="#97bbf5" fill-opacity="0.45"/&gt;&#10;&lt;text x="34" y="64" font-size="13" font-weight="600" fill="currentColor"&gt;System prompt&lt;/text&gt;&#10;&lt;text x="34" y="81" font-size="11" fill="currentColor" fill-opacity="0.8"&gt;who the agent is, how it should work&lt;/text&gt;&#10;&lt;rect x="22" y="100" width="226" height="48" rx="6" fill="#97bbf5" fill-opacity="0.45"/&gt;&#10;&lt;text x="34" y="120" font-size="13" font-weight="600" fill="currentColor"&gt;Tool definitions&lt;/text&gt;&#10;&lt;text x="34" y="137" font-size="11" fill="currentColor" fill-opacity="0.8"&gt;name, description, and arguments&lt;/text&gt;&#10;&lt;rect x="22" y="156" width="226" height="52" rx="6" fill="#4269d0" fill-opacity="0.35"/&gt;&#10;&lt;text x="34" y="177" font-size="13" font-weight="600" fill="currentColor"&gt;Conversation so far&lt;/text&gt;&#10;&lt;text x="34" y="194" font-size="11" fill="currentColor" fill-opacity="0.8"&gt;the task, every tool call, every result&lt;/text&gt;&#10;&lt;path d="M268 46 h6 v100 h-6" fill="none" stroke="currentColor" stroke-opacity="0.6"/&gt;&#10;&lt;text x="281" y="88" font-size="11" fill="currentColor"&gt;the same on&lt;/text&gt;&#10;&lt;text x="281" y="102" font-size="11" fill="currentColor"&gt;every request&lt;/text&gt;&#10;&lt;path d="M268 158 h6 v48 h-6" fill="none" stroke="currentColor" stroke-opacity="0.6"/&gt;&#10;&lt;text x="281" y="170" font-size="11" fill="currentColor"&gt;grows with&lt;/text&gt;&#10;&lt;text x="281" y="184" font-size="11" fill="currentColor"&gt;every step&lt;/text&gt;&#10;&lt;line x1="135" y1="220" x2="135" y2="246" stroke="currentColor" marker-end="url(#harness-arrow)"/&gt;&#10;&lt;rect x="85" y="250" width="100" height="40" rx="20" fill="currentColor" fill-opacity="0.1" stroke="currentColor" stroke-opacity="0.45"/&gt;&#10;&lt;text x="135" y="275" font-size="13" font-weight="700" text-anchor="middle" fill="currentColor"&gt;Model&lt;/text&gt;&#10;&lt;line x1="186" y1="270" x2="214" y2="270" stroke="currentColor" stroke-opacity="0.6" marker-end="url(#harness-arrow)"/&gt;&#10;&lt;text x="220" y="274" font-size="11" fill="currentColor" fill-opacity="0.8"&gt;or a final answer&lt;/text&gt;&#10;&lt;line x1="135" y1="290" x2="135" y2="318" stroke="currentColor" marker-end="url(#harness-arrow)"/&gt;&#10;&lt;rect x="35" y="322" width="200" height="46" rx="6" fill="none" stroke="currentColor" stroke-opacity="0.45"/&gt;&#10;&lt;text x="47" y="341" font-size="13" font-weight="600" fill="currentColor"&gt;A tool call&lt;/text&gt;&#10;&lt;text x="47" y="358" font-size="11" fill="currentColor" fill-opacity="0.8" font-family="ui-monospace, monospace"&gt;Bash: ls data/&lt;/text&gt;&#10;&lt;line x1="135" y1="368" x2="135" y2="394" stroke="currentColor" marker-end="url(#harness-arrow)"/&gt;&#10;&lt;rect x="35" y="398" width="200" height="46" rx="6" fill="none" stroke="currentColor" stroke-opacity="0.45"/&gt;&#10;&lt;text x="47" y="417" font-size="13" font-weight="600" fill="currentColor"&gt;The harness runs it&lt;/text&gt;&#10;&lt;text x="47" y="434" font-size="11" fill="currentColor" fill-opacity="0.8"&gt;and adds the result&lt;/text&gt;&#10;&lt;path d="M235 421 H355 V199 H264" fill="none" stroke="currentColor" stroke-dasharray="4 3" marker-end="url(#harness-arrow)"/&gt;&#10;&lt;text x="347" y="300" font-size="11" fill="currentColor" text-anchor="middle" transform="rotate(-90 347 300)"&gt;sent again, all of it&lt;/text&gt;&#10;&lt;/svg&gt;&#10;&lt;figcaption&gt;What a coding agent sends with every step. The light parts are the same every time; only the conversation grows.&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;So from the model&amp;rsquo;s side, a harness is three things: its system prompt, its tool definitions, and what comes back when a tool runs.&#10;The first two are just text, so they are easy to copy, and the tool definitions are effectively the harness&amp;rsquo;s API: change them, and the model sees a different harness.&#10;The third is code, which takes more work to copy.&lt;/p&gt;&#10;&lt;p&gt;Because every request resends everything, a task&amp;rsquo;s tokens come in two parts.&#10;The fixed part is what the agent sends before anything happens: its system prompt, its tool definitions, and the task, which every request resends.&#10;The work is everything the steps add on top: the model&amp;rsquo;s replies, the tool results, and the growing conversation that every later request resends too.&#10;When I say below that a model did more work, I mean that second part.&lt;/p&gt;&#10;&lt;h2 id="why-i-believed-it"&gt;Why I believed it &lt;a class="anchor" href="#why-i-believed-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Two things convinced me: how well the smallest agents do, and what goes wrong when a model meets unfamiliar tools.&lt;/p&gt;&#10;&lt;h3 id="smaller-agents-do-better"&gt;Smaller agents do better &lt;a class="anchor" href="#smaller-agents-do-better" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Pi made its name by being small.&#10;When Mario Zechner &lt;a href="https://mariozechner.at/posts/2025-11-30-pi-coding-agent/" target="_blank" rel="noopener"&gt;introduced pi&lt;/a&gt; last November, its system prompt and tool definitions together came in below 1,000 tokens, and it had four tools: &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, and &lt;code&gt;bash&lt;/code&gt;.&#10;He also wrote that &amp;ldquo;pi does not and will not support MCP&amp;rdquo;, the Model Context Protocol through which most agents load outside tools.&#10;And he pointed to Terminus 2, a minimal agent from the Terminal-Bench team, which was &amp;ldquo;holding its own against agents with far more sophisticated tooling&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;In August, DeepSeek released &lt;a href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener"&gt;DeepSeek Harness&lt;/a&gt;, which was &lt;a href="https://news.ycombinator.com/item?id=49285244" target="_blank" rel="noopener"&gt;all over Hacker News&lt;/a&gt; and the local AI subreddits I read.&#10;Its standard setup comes with a full set of tools.&#10;But for benchmarks, DeepSeek &lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/BENCHMARK.md" target="_blank" rel="noopener"&gt;points to its minimal profile&lt;/a&gt;.&#10;In early September, that profile had &lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/63795eaa5cba78cc0a92d95fccd8db5523d7f050/packages/bundle/sdk-minimal/README.md#L78-L84" target="_blank" rel="noopener"&gt;exactly one tool, a persistent &lt;code&gt;bash&lt;/code&gt;, and a one-line system prompt&lt;/a&gt;: &amp;ldquo;You are a helpful software engineer assistant.&amp;rdquo;&#10;(Ten days later, it already had a second tool, &lt;code&gt;working_directory&lt;/code&gt;; staying that small seems to be hard.)&#10;That is what inspired the minimal mode I added to MindRoom in September, which gives an agent a short prompt and a single &lt;code&gt;bash&lt;/code&gt; tool.&lt;/p&gt;&#10;&lt;h3 id="models-should-know-their-own-tools-best"&gt;Models should know their own tools best &lt;a class="anchor" href="#models-should-know-their-own-tools-best" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The case that got me thinking about this was Claude Opus 4.8 in pi.&#10;In July, a pi user reported that &lt;a href="https://github.com/earendil-works/pi/issues/6278" target="_blank" rel="noopener"&gt;about 20% of its edits failed in some sessions&lt;/a&gt;.&#10;Pi&amp;rsquo;s &lt;code&gt;edit&lt;/code&gt; tool takes a list of replacements, and Opus 4.8 kept adding made-up fields to them, like &lt;code&gt;in_file&lt;/code&gt;, &lt;code&gt;matchCase&lt;/code&gt;, or &lt;code&gt;newText2&lt;/code&gt;.&#10;Claude Sonnet 5 did it too, while Opus 4.7 and older Claude models never did in the same tests.&lt;/p&gt;&#10;&lt;p&gt;Armin Ronacher, one of pi&amp;rsquo;s maintainers, &lt;a href="https://github.com/earendil-works/pi/issues/6278#issuecomment-4883362982" target="_blank" rel="noopener"&gt;dug into it&lt;/a&gt; and compared it with what Claude Code does with the tool calls it receives.&#10;It turns out that Claude Code quietly repairs a lot of them:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;It accepts several names for the same argument, like &lt;code&gt;old_str&lt;/code&gt; and &lt;code&gt;old_string&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;It parses an argument that arrives as a string when it should be an object.&lt;/li&gt;&#10;&lt;li&gt;It fixes broken &lt;code&gt;\uXXXX&lt;/code&gt; escapes in strings.&lt;/li&gt;&#10;&lt;li&gt;It drops fields it does not know.&lt;/li&gt;&#10;&lt;li&gt;When it cannot parse a call at all, it asks the model to try again.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;His hypothesis is that RL itself might be the cause.&#10;If a model is trained in a harness that absorbs these mistakes, a slightly wrong tool call still completes the task and still gets rewarded, so nothing teaches the model not to make it.&#10;Pi &lt;a href="https://github.com/earendil-works/pi/commit/a1b336d73e13b53949ff629800081185d3e4694e" target="_blank" rel="noopener"&gt;now ignores unknown fields too&lt;/a&gt;, just like Claude Code.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;Then pi itself strayed from its minimal roots.&#10;Pi 1.0 came out on October 1 and &lt;a href="https://earendil.com/posts/pi-1-0/" target="_blank" rel="noopener"&gt;added MCP after all&lt;/a&gt;.&#10;&lt;a href="https://www.theregister.com/ai-and-ml/2026/10/02/pi-coding-agent-pulls-a-180-and-adds-mcp-support/5300678" target="_blank" rel="noopener"&gt;The Register&lt;/a&gt; called it a 180.&#10;On &lt;a href="https://news.ycombinator.com/item?id=49926069" target="_blank" rel="noopener"&gt;Hacker News&lt;/a&gt; and &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1wvffcr/pi_10_released_mcp_support_now_included_by_default/" target="_blank" rel="noopener"&gt;r/LocalLLaMA&lt;/a&gt;, people worried that &lt;a href="https://news.ycombinator.com/item?id=49926549" target="_blank" rel="noopener"&gt;&amp;ldquo;Pi&amp;rsquo;s days as a nice minimal agent TUI are numbered&amp;rdquo;&lt;/a&gt;.&#10;What struck me was how the maintainers explained it.&#10;&lt;a href="https://news.ycombinator.com/item?id=49926377" target="_blank" rel="noopener"&gt;Armin Ronacher&lt;/a&gt; wrote that the models &amp;ldquo;are trained on their respective harnesses and we&amp;rsquo;re not here to fight their behavior&amp;rdquo;, and &lt;a href="https://news.ycombinator.com/item?id=49926840" target="_blank" rel="noopener"&gt;Mario Zechner&lt;/a&gt; that &amp;ldquo;we follow what the models are trained on&amp;rdquo;.&#10;That is exactly the native-tools half of my plan.&lt;/p&gt;&#10;&lt;p&gt;My plan combined both: a minimal agent, with each model&amp;rsquo;s native shell as its only tool.&#10;Terminal-Bench also said something I chose to ignore: agents like Terminus 2 do well with tools no model was trained on.&#10;I did not believe that part.&#10;In opencode and pi, I had repeatedly seen models get the edit tool wrong, so I assumed the benchmarks did not carry over to real work.&#10;My belief that a model works best in the harness it was trained in was that strong: I expected the native tools to help, and to help most in a minimal agent with nothing but a shell.&lt;/p&gt;&#10;&lt;h2 id="what-i-built"&gt;What I built &lt;a class="anchor" href="#what-i-built" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;MindRoom is my open-source platform for AI agents that live in Matrix chat rooms, where several agents can work together.&#10;Its agents get shell and file tools under MindRoom&amp;rsquo;s own names, like &lt;code&gt;run_shell_command&lt;/code&gt;, &lt;code&gt;read_file&lt;/code&gt;, and &lt;code&gt;edit_file&lt;/code&gt;.&#10;In &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2766" target="_blank" rel="noopener"&gt;this pull request&lt;/a&gt;, I added what I call tool dialects, which show a model those tools in the shape of the coding agent it was trained in.&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Sees&lt;/th&gt;&#10;&lt;th&gt;Instead of&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;Bash&lt;/code&gt;, &lt;code&gt;BashOutput&lt;/code&gt;, &lt;code&gt;KillShell&lt;/code&gt;, &lt;code&gt;Read&lt;/code&gt;, &lt;code&gt;Edit&lt;/code&gt;, and &lt;code&gt;Write&lt;/code&gt;, as in Claude Code&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;run_shell_command&lt;/code&gt;, &lt;code&gt;check_shell_command&lt;/code&gt;, &lt;code&gt;kill_shell_command&lt;/code&gt;, &lt;code&gt;read_file&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt;, and &lt;code&gt;write_file&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;exec_command&lt;/code&gt;, &lt;code&gt;write_stdin&lt;/code&gt;, and a freeform &lt;code&gt;apply_patch&lt;/code&gt; that takes the patch as plain text, as in Codex, and a &lt;code&gt;kill_shell_command&lt;/code&gt; that takes Codex&amp;rsquo;s &lt;code&gt;session_id&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;run_shell_command&lt;/code&gt;, &lt;code&gt;check_shell_command&lt;/code&gt;, &lt;code&gt;kill_shell_command&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt;, and &lt;code&gt;write_file&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Inside MindRoom, nothing changes: approvals, hooks, and the stored history keep MindRoom&amp;rsquo;s names, and the translation only happens on the way to and from the model.&#10;That gives MindRoom a property I like a lot: a conversation can switch from Claude to GPT halfway through, and each model sees the earlier tool calls in its own shape, as if it had made them in its own harness.&lt;/p&gt;&#10;&lt;p&gt;Matching the native harness exactly turned out to be a stretch, though.&#10;Codex has no tool for reading files, so in the pull request, GPT keeps MindRoom&amp;rsquo;s &lt;code&gt;read_file&lt;/code&gt;, and both keep MindRoom&amp;rsquo;s &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find_files&lt;/code&gt;, and &lt;code&gt;ls&lt;/code&gt;, which makes each native set a mix.&#10;For the main comparison, I removed those extra tools, so each model saw only the tools of its own harness.&#10;The tools have the same names and arguments as in Claude Code and Codex, but I wrote short descriptions of my own, because Claude Code&amp;rsquo;s are not openly licensed.&#10;What they return is MindRoom&amp;rsquo;s output, and the system prompt is MindRoom&amp;rsquo;s too.&#10;So keep in mind for everything below: I tested the names and shapes of the tools, not the whole harness.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;How the translation works&lt;/summary&gt;&#10; &lt;ul&gt;&#10;&lt;li&gt;Codex&amp;rsquo;s &lt;code&gt;apply_patch&lt;/code&gt; is freeform: the model writes the patch as plain text instead of JSON arguments. I ported Codex&amp;rsquo;s patch parser and the code that applies patches, together with Codex&amp;rsquo;s own test cases, so a patch from a Codex-trained model applies exactly as it would in Codex. Its description comes from Codex too, which is openly licensed.&lt;/li&gt;&#10;&lt;li&gt;A switched model sees earlier calls in its own shape only for the tools its own harness also has, like the shell: an edit made with Claude Code&amp;rsquo;s &lt;code&gt;Edit&lt;/code&gt; stays an &lt;code&gt;edit_file&lt;/code&gt; call for GPT, which has no matching tool.&lt;/li&gt;&#10;&lt;li&gt;An earlier version of the pull request also rewrote every tool result to look like the native one. That was a lot of fragile code, so I removed it before I measured anything.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h2 id="how-i-measured-it"&gt;How I measured it &lt;a class="anchor" href="#how-i-measured-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I used 12 terminal tasks from an evaluation suite I built for MindRoom, like writing a report from a CSV file, finding the commit that broke a check, or fixing failing tests.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&#10;A hidden check graded each result, and every setup ran every task three times.&#10;Almost every run passed, so the interesting number is how many tokens the agent needed to get there, cached input included, and cheaper in what follows means fewer tokens.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&#10;The tool comparisons ran through MindRoom&amp;rsquo;s OpenAI-compatible API; minimal mode, which only works in chat, ran through Matrix.&#10;I tested five current models, Claude Opus 5.5 and Sonnet 5.5, and GPT-6 Astra, GPT-6.1 Sol, and GPT-6 Luna, and later &lt;a href="#older-models-only-opus-48-did-better-with-them"&gt;five older ones&lt;/a&gt;.&#10;The current Claude models ran with adaptive thinking, where the model decides when to think.&#10;I called the GPT models from MindRoom through OpenAI&amp;rsquo;s Codex backend, the endpoint the Codex CLI uses, so no run used Codex itself; with no reasoning effort set, the backend picks one.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;Details of the setup&lt;/summary&gt;&#10; &lt;ul&gt;&#10;&lt;li&gt;A small harness sent each task to MindRoom&amp;rsquo;s OpenAI-compatible API as a new conversation, and a hidden check graded the result in a separate container without network access. Every task ran three times per configuration, so each number in this post comes from 36 runs.&lt;/li&gt;&#10;&lt;li&gt;The agent&amp;rsquo;s commands ran in a Docker container, the way MindRoom runs agents it does not fully trust.&lt;/li&gt;&#10;&lt;li&gt;With adaptive thinking, the current Claude models thought before 15 to 25% of their replies, with MindRoom&amp;rsquo;s tools and with the native ones.&lt;/li&gt;&#10;&lt;li&gt;I ran the GPT models through OpenAI&amp;rsquo;s Codex backend, the endpoint the Codex CLI uses, and sent no reasoning effort, so the backend picked one. The GPT-6 models barely reasoned on these tasks: in those runs, only 4 to 12% of their requests had any reasoning tokens, and then 7 to 234 of them.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h2 id="native-tools-dont-make-todays-models-more-efficient"&gt;Native tools don&amp;rsquo;t make today&amp;rsquo;s models more efficient &lt;a class="anchor" href="#native-tools-dont-make-todays-models-more-efficient" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;To make the comparison fair, I gave each model only the tools of its own harness, against MindRoom&amp;rsquo;s matching set.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&#10;For Claude, that is a shell and tools to read, edit, and write files; for GPT, a shell and Codex&amp;rsquo;s &lt;code&gt;apply_patch&lt;/code&gt;, against MindRoom&amp;rsquo;s tools to edit and write files.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with only the harness&amp;rsquo;s own tools against MindRoom&amp;rsquo;s matching set, and with the mixed set in the pull request. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="fairCurrent"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with only the harness&amp;rsquo;s own tools against MindRoom&amp;rsquo;s matching set, and with the mixed set in the pull request. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Claude got 6 to 13% cheaper with Claude Code&amp;rsquo;s tools, but only because the definitions I wrote for them are about 480 tokens shorter than MindRoom&amp;rsquo;s, and every request resends them; the tools themselves saved nothing, and Sonnet 5.5 even did 15% more work with them.&#10;It never even touched the file tools: Opus 5.5 and Sonnet 5.5 did everything in the shell, with either set.&lt;/p&gt;&#10;&lt;p&gt;GPT-6 Astra and Sol got much more expensive, while Luna barely changed.&#10;With only Codex&amp;rsquo;s tools, GPT-6 Astra did 84% more work and used 59% more tokens.&#10;It called &lt;code&gt;apply_patch&lt;/code&gt; 30 times, as a separate step for edits it otherwise made inside its shell commands, and every extra step resends the whole conversation so far.&#10;I expected the opposite: these are the tools I assumed these models were trained on, so I thought they would need fewer and more confident steps.&#10;The mixed set, the lighter rows, points the same way.&lt;/p&gt;&#10;&lt;p&gt;The tool mistakes I wanted to prevent did not happen with MindRoom&amp;rsquo;s tools at all: with its matching set, none of the five models made a single tool error.&#10;The only errors came from the mixed set: next to Codex&amp;rsquo;s tools, Luna had to guess how MindRoom&amp;rsquo;s &lt;code&gt;read_file&lt;/code&gt; resolves paths, and got it wrong seven times.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;The numbers behind this section&lt;/summary&gt;&#10; &lt;p&gt;&lt;strong&gt;Fixed part and work.&lt;/strong&gt;&#10;Every request to a model sends the whole conversation so far, plus the definition of every tool the model can use.&#10;So I split each task&amp;rsquo;s tokens in two.&#10;The fixed part is the first request&amp;rsquo;s input, which holds the system prompt, the tool definitions, and the task, times the number of requests.&#10;The work is everything else: tool results and the model&amp;rsquo;s replies, counted again with every later request that resends them, so it also grows with the number of steps.&#10;Providers cache most of the fixed part between requests and charge much less for cached input, so it costs less than its share of the tokens suggests.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Only the harness&amp;rsquo;s own tools.&lt;/strong&gt;&#10;With Claude Code&amp;rsquo;s tools, Opus 5.5 used 13% fewer tokens [95% CI −19 to −6%] and Sonnet 5.5 6% fewer [−10 to −1%].&#10;Both came from the definitions: the Claude Code-style set I wrote is about 480 tokens shorter, while the work on top of it grew by 7% [−7 to +23%] and 15% [+7 to +25%].&#10;With Codex&amp;rsquo;s tools, GPT-6 Astra used 59% more tokens [+53 to +65%] and GPT-6.1 Sol 43% more [+33 to +52%].&#10;They called &lt;code&gt;apply_patch&lt;/code&gt; 30 and 22 times, where with MindRoom&amp;rsquo;s tools they made only 3 and 6 calls to the file tools, so they needed 4.7 and 4.4 requests per task instead of 3.5 and 3.6 and did 84% [+73 to +96%] and 60% [+44 to +76%] more work.&#10;GPT-6 Luna used about the same with either set, +3% [−8 to +15%], and called &lt;code&gt;apply_patch&lt;/code&gt; only 8 times.&#10;The pass rates stayed within one or two runs of each other, and no model made a tool error with either set.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The mixed set, as it is in the pull request.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals. The second row caps the native shell output at the last 100 lines, MindRoom&amp;rsquo;s shell default. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="nativeDelta"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals. The second row caps the native shell output at the last 100 lines, MindRoom&amp;rsquo;s shell default. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;With Claude Code&amp;rsquo;s tools, both Claude models used about 9% fewer tokens.&#10;With Codex&amp;rsquo;s tools, GPT-6 Astra used 31% more tokens and GPT-6.1 Sol 19% more.&#10;An earlier run of the same experiment, before some unrelated fixes in the pull request, gave almost the same numbers: 33% more for Astra and 15% more for Sol.&#10;For GPT-6 Luna, the difference was too small to tell apart from noise.&#10;The pass rates barely moved: Opus, Sonnet, and Sol passed all 36 runs with either set of tools, and Astra failed one run in some configurations.&#10;Luna passed 33 runs with MindRoom&amp;rsquo;s tools and 35 with Codex&amp;rsquo;s; in the earlier run it was the other way around, 35 against 32, so I would not read anything into it either.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;It is not the longer output.&lt;/strong&gt;&#10;MindRoom&amp;rsquo;s own shell tool returns the last 100 lines of a command&amp;rsquo;s output by default.&#10;For the native tools, I returned everything up to 50 KiB, because that is closer to what Claude Code and Codex do.&#10;So I ran everything again with the native tools capped at the same 100 lines, the second row in the chart above.&#10;The cap barely changes anything: Astra still uses 26% more tokens, Sol 15% more, and the Claude models still save about 8%.&#10;The models hardly ever print more than 100 lines anyway: in the uncapped run, 3 of Astra&amp;rsquo;s 91 shell results and 3 of Sol&amp;rsquo;s 93 were longer than that, and none of Claude&amp;rsquo;s 220.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Where the tokens went with the mixed set.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Tokens per task with MindRoom&amp;rsquo;s shell and file tools and with the native ones, split into the fixed part (light) and the work the model did on top of it (dark). Hover for the number of requests." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="tokenSplit"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Tokens per task with MindRoom&amp;rsquo;s shell and file tools and with the native ones, split into the fixed part (light) and the work the model did on top of it (dark). Hover for the number of requests.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;Claude did not work any differently with Claude Code&amp;rsquo;s tools.&#10;It never called a file tool with either set, did everything in the shell, and made about the same number of requests.&#10;Its work changed by 5% or less, and almost all of its savings come from the fixed part: the Claude Code-style definitions I wrote are about 480 tokens shorter than MindRoom&amp;rsquo;s.&lt;/p&gt;&#10;&lt;p&gt;GPT did work differently.&#10;With Codex&amp;rsquo;s tools, Astra and Sol edited files with &lt;code&gt;apply_patch&lt;/code&gt; 17 and 15 times, where with MindRoom&amp;rsquo;s tools they made only 3 and 5 calls to the file tools and did the rest from the shell.&#10;Each patch is a request of its own, which accounts for their 0.3 to 0.5 extra requests per task.&#10;They also did 51% and 24% more work.&#10;And Codex&amp;rsquo;s tools take about 130 more tokens to describe than MindRoom&amp;rsquo;s, because &lt;code&gt;apply_patch&lt;/code&gt; costs about 270 more than &lt;code&gt;edit_file&lt;/code&gt; and &lt;code&gt;write_file&lt;/code&gt; together, so the fixed part grew as well.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The mistakes.&lt;/strong&gt;&#10;None of the five models made a single tool error with MindRoom&amp;rsquo;s tools in its 36 runs.&#10;Partly, the models rarely needed the file tools: the Claude models never called one, and of the GPT models, only Luna used them often.&#10;The only model that made tool errors was Luna, and only with the Codex tools: 7 errors in 36 runs, all of them &lt;code&gt;read_file&lt;/code&gt; calls with a path relative to the directory Luna had just given &lt;code&gt;exec_command&lt;/code&gt;.&#10;The made-up fields in pi always appeared inside its nested list of replacements, where the model has to write the JSON for each replacement itself.&#10;MindRoom&amp;rsquo;s &lt;code&gt;edit_file&lt;/code&gt; is flat, like Claude Code&amp;rsquo;s &lt;code&gt;Edit&lt;/code&gt;: a path, the old text, and the new text.&#10;So I suspected that keeping the tools as simple as the native ones matters more than matching their exact names.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h2 id="older-models-only-opus-48-did-better-with-them"&gt;Older models: only Opus 4.8 did better with them &lt;a class="anchor" href="#older-models-only-opus-48-did-better-with-them" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The pi story made me wonder whether this used to be different, since Opus 4.8 struggled with pi&amp;rsquo;s edit tool while Opus 4.7 did not.&#10;So I ran the same comparisons on older models that are still available: Claude Opus 4.7, Opus 4.8, and Sonnet 5, and GPT-5.5 and GPT-5.6 Sol.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when the older models use their native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with only the harness&amp;rsquo;s own tools against MindRoom&amp;rsquo;s matching set, and with the mixed set in the pull request. Opus 4.7 and 4.8 ran without thinking, Sonnet 5 with adaptive thinking, and GPT with the effort Codex picks. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="fairOlder"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when the older models use their native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with only the harness&amp;rsquo;s own tools against MindRoom&amp;rsquo;s matching set, and with the mixed set in the pull request. Opus 4.7 and 4.8 ran without thinking, Sonnet 5 with adaptive thinking, and GPT with the effort Codex picks. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;With only each harness&amp;rsquo;s own tools, the older models did not prefer their native tools either, except for one.&#10;The exception is the model from the pi story: Opus 4.8 did 17% less work and used 19% fewer tokens with Claude Code&amp;rsquo;s tools, reading files through Bash instead of with a separate tool.&#10;With the mixed set, the older Claude models seemed to prefer Claude Code&amp;rsquo;s tools, using 22 to 36% fewer tokens, but that came from the extra tools the mixed set keeps from MindRoom, &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find_files&lt;/code&gt;, and &lt;code&gt;ls&lt;/code&gt;: next to MindRoom&amp;rsquo;s other tools, those made the older Claude models take more steps and read more, and next to Claude Code&amp;rsquo;s tools, the models hardly touched them.&#10;And on the pi story itself: Opus 4.8 and Sonnet 5, the two models that made up fields in pi, made 111 edits with MindRoom&amp;rsquo;s &lt;code&gt;edit_file&lt;/code&gt;, which takes a single path, old text, and new text, and none of them failed.&lt;/p&gt;&#10;&lt;p&gt;With only each harness&amp;rsquo;s own tools, the GPT-5 models did about the same with either set, and unlike GPT-6 Astra and Sol, they barely used &lt;code&gt;apply_patch&lt;/code&gt;.&#10;So reaching for its native editing tool, and paying for it, is new in that generation.&lt;/p&gt;&#10;&lt;p&gt;Of the ten models I tested, familiar tools clearly made only one more efficient, the one that started it.&#10;The others did as well or better with tools they were presumably not trained on: they seem to generalize beyond the environment they were trained in.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;The numbers behind this section&lt;/summary&gt;&#10; &lt;p&gt;&lt;strong&gt;Only the harness&amp;rsquo;s own tools.&lt;/strong&gt;&#10;With Claude Code&amp;rsquo;s tools, Opus 4.7 used 3% fewer tokens [−12 to +6%], Opus 4.8 19% fewer [−26 to −11%], and Sonnet 5 7% fewer [−29 to +23%], a noisy result.&#10;Opus 4.8 did 17% less work [−29 to −4%] on top of the shorter definitions, while the other older models&amp;rsquo; work changed by −5 to +13%, none of it clearly; Opus 4.8 called MindRoom&amp;rsquo;s &lt;code&gt;read_file&lt;/code&gt; 27 times, but never Claude Code&amp;rsquo;s &lt;code&gt;Read&lt;/code&gt;.&#10;With Codex&amp;rsquo;s tools, GPT-5.5 used 5% more [−5 to +16%] and GPT-5.6 Sol 3% more [−4 to +11%]; they called &lt;code&gt;apply_patch&lt;/code&gt; only 3 and 9 times, where with MindRoom&amp;rsquo;s tools they made 20 and 16 calls to the file tools.&#10;The pass rates stayed within one or two runs of each other.&#10;None of the older models made a tool error with MindRoom&amp;rsquo;s matching set; with Codex&amp;rsquo;s, GPT-5.5 sent garbled working directories to &lt;code&gt;exec_command&lt;/code&gt; 11 times.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Why the mixed set made them look different.&lt;/strong&gt;&#10;The only difference between the two tests is that the mixed set adds MindRoom&amp;rsquo;s &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find_files&lt;/code&gt;, and &lt;code&gt;ls&lt;/code&gt; to both sides.&#10;Next to MindRoom&amp;rsquo;s other tools, the older Claude models called &lt;code&gt;ls&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt; 20, 9, and 3 times, took 0.3 to 0.9 more requests per task, and did 35 to 38% more work than without them.&#10;Next to Claude Code&amp;rsquo;s tools, they called them once in total.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The older models with the mixed set.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals, oldest models first in each family. Each model&amp;rsquo;s reasoning mode is in parentheses: Opus 4.7 and 4.8 do not think, the other Claude models think adaptively, and GPT uses the effort Codex picks. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="generations"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when each model uses its native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals, oldest models first in each family. Each model&amp;rsquo;s reasoning mode is in parentheses: Opus 4.7 and 4.8 do not think, the other Claude models think adaptively, and GPT uses the effort Codex picks. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;Opus 4.7, Opus 4.8, and Sonnet 5 used 22 to 36% fewer tokens with Claude Code&amp;rsquo;s tools.&#10;Unlike the 5.5 models, they also made fewer requests and did 26 to 45% less work on top of the fixed part.&#10;GPT-5.6 Sol used 15% fewer tokens with Codex&amp;rsquo;s tools and did 27% less work, and GPT-5.5 used about the same.&#10;One generation later, the GPT-6 models use up to 31% more with Codex&amp;rsquo;s tools, and the Claude 5.5 models mostly save what the shorter definitions save.&#10;The pass rates stayed within one or two runs of each other for every model.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How they used the file tools.&lt;/strong&gt;&#10;With MindRoom&amp;rsquo;s tools, the older Claude models called &lt;code&gt;read_file&lt;/code&gt; 24, 29, and 44 times; with Claude Code&amp;rsquo;s, they called &lt;code&gt;Read&lt;/code&gt; only 3, 1, and 6 times and read files through Bash instead.&#10;GPT-5.6 Sol needed 9 patches where it had made 32 calls to &lt;code&gt;edit_file&lt;/code&gt; and &lt;code&gt;write_file&lt;/code&gt;.&#10;Opus 4.8 and Sonnet 5 made 37 and 21 calls to MindRoom&amp;rsquo;s flat &lt;code&gt;edit_file&lt;/code&gt;, and none of them failed.&#10;That does not prove that pi&amp;rsquo;s nested list caused pi&amp;rsquo;s failures, because I never gave them a nested edit tool, but a flat one did not trigger them.&#10;Their few tool errors were different ones: Sonnet 5 twice polled a background command that did not exist, GPT-5.5 and GPT-5.6 Sol each had one edit whose old text did not match, and GPT-5.5 sent garbled working directories to Codex&amp;rsquo;s &lt;code&gt;exec_command&lt;/code&gt; seven times.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Only the shell tools.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when the older models use their native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with shell and file tools, and with only the shell tools. Opus 4.7 and 4.8 ran without thinking, Sonnet 5 with adaptive thinking, and GPT with the effort Codex picks. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="olderShell"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when the older models use their native harness tools instead of MindRoom&amp;rsquo;s, with 95% confidence intervals: with shell and file tools, and with only the shell tools. Opus 4.7 and 4.8 ran without thinking, Sonnet 5 with adaptive thinking, and GPT with the effort Codex picks. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;The native set mixes a model&amp;rsquo;s own tools with some of MindRoom&amp;rsquo;s, such as &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, and, for GPT, &lt;code&gt;read_file&lt;/code&gt;, so I also ran the older models with only the shell tools, in MindRoom&amp;rsquo;s shape and in the native one.&#10;Opus 4.7 then used 10% fewer tokens with the native shell, GPT-5.6 Sol 6% fewer, and GPT-5.5 the same, and almost all of that came from shorter definitions.&#10;Opus 4.8 used 23% fewer tokens, made fewer requests, and did 16% less work.&#10;Sonnet 5&amp;rsquo;s result is too noisy to read: in one run, the native shell returned a 50 KB output early on, and resending it with every later request made that run cost 12 times the median; its median run used 9% fewer tokens with the native shell.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The reasoning settings.&lt;/strong&gt;&#10;Opus 4.7 and 4.8 do not think unless you ask them to, and Sonnet 5 thought before 42% of its replies, against 15 to 25% for the 5.5 models at the same adaptive setting.&#10;The GPT-5 models reasoned before 59 to 76% of their requests, while the GPT-6 models reasoned before only 4 to 12%.&#10;With adaptive thinking and the mixed set, Opus 4.7 and 4.8 thought before 26 to 36% of their replies, and still used 35% and 20% fewer tokens with Claude Code&amp;rsquo;s tools.&#10;For that test, I set &lt;code&gt;thinking&lt;/code&gt; to &lt;code&gt;adaptive&lt;/code&gt; in the model&amp;rsquo;s &lt;code&gt;extra_kwargs&lt;/code&gt;, since these models reject a fixed thinking budget.&lt;/p&gt;&#10;&lt;p&gt;I also ran one current model of each family, Claude Sonnet 5.5 and GPT-6 Astra, at low and at high reasoning effort.&#10;For Astra, I set &lt;code&gt;reasoning_effort&lt;/code&gt; to &lt;code&gt;low&lt;/code&gt; or &lt;code&gt;high&lt;/code&gt;; for Sonnet 5.5, &lt;code&gt;output_config.effort&lt;/code&gt;, which is how the Claude 5.5 models take a reasoning effort.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task when Claude Sonnet 5.5 and GPT-6 Astra use their native harness tools instead of MindRoom&amp;rsquo;s, at each reasoning effort, with 95% confidence intervals. With no effort set, Sonnet uses adaptive thinking, and Astra the effort Codex picks. Hover for the tokens per task." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="effortChange"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task when Claude Sonnet 5.5 and GPT-6 Astra use their native harness tools instead of MindRoom&amp;rsquo;s, at each reasoning effort, with 95% confidence intervals. With no effort set, Sonnet uses adaptive thinking, and Astra the effort Codex picks. Hover for the tokens per task.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;Both models passed all 36 runs at every effort with either set of tools, except for one run that Astra failed with MindRoom&amp;rsquo;s tools at its default effort.&#10;A higher effort made Codex&amp;rsquo;s tools worse for GPT. At high effort, Astra made 4.5 requests per task with Codex&amp;rsquo;s tools against 3.6 with MindRoom&amp;rsquo;s, and used 45% more tokens.&#10;Even at high effort, though, Astra reasoned before only 10 to 12% of its requests, against 4 to 7% at its default, far below the GPT-5 models.&#10;For Claude, the native tools stayed cheaper at every level, and saved the most at low effort, 19%, where Sonnet thought before only 3 to 4% of its replies.&#10;Sonnet thought about as often at its default as at high effort, so I would not read much into the difference between those two.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h2 id="what-does-matter-what-the-agent-sends"&gt;What does matter: what the agent sends &lt;a class="anchor" href="#what-does-matter-what-the-agent-sends" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My next guess was the other half of my plan, a smaller agent.&#10;Every request to the model resends the system prompt and the definition of every tool, so an agent with a shorter prompt and fewer tools sends less with every step.&lt;/p&gt;&#10;&lt;h3 id="fewer-tools"&gt;Fewer tools &lt;a class="anchor" href="#fewer-tools" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Fewer tools did help.&#10;With only MindRoom&amp;rsquo;s shell tools and none of its file tools, the agent used about a third fewer tokens and passed about as many runs.&#10;A shell-only agent is also where I still expected the native tools to matter most, because every step goes through the one tool whose shape the model knows best.&#10;They did not: GPT used the same number of tokens with Codex&amp;rsquo;s shell tools, and Claude saved only what its shorter descriptions save.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;The numbers behind this section&lt;/summary&gt;&#10; &lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task, with 95% confidence intervals: with only MindRoom&amp;rsquo;s shell tools instead of all of MindRoom&amp;rsquo;s tools, and with only the native shell tools instead of MindRoom&amp;rsquo;s. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="shellOnly"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task, with 95% confidence intervals: with only MindRoom&amp;rsquo;s shell tools instead of all of MindRoom&amp;rsquo;s tools, and with only the native shell tools instead of MindRoom&amp;rsquo;s. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;p&gt;With only MindRoom&amp;rsquo;s three shell tools, for running, checking, and stopping a command, and none of its file tools, the agent used 27 to 41% fewer tokens.&#10;It passed about as many runs: Luna passed 31 instead of 33, too small a difference to tell apart, and the other four models passed all 36.&lt;/p&gt;&#10;&lt;p&gt;For the native shape, I gave Claude only Claude Code&amp;rsquo;s &lt;code&gt;Bash&lt;/code&gt;, &lt;code&gt;BashOutput&lt;/code&gt;, and &lt;code&gt;KillShell&lt;/code&gt;, and GPT only Codex&amp;rsquo;s &lt;code&gt;exec_command&lt;/code&gt; and &lt;code&gt;write_stdin&lt;/code&gt;, with MindRoom&amp;rsquo;s &lt;code&gt;kill_shell_command&lt;/code&gt; in Codex&amp;rsquo;s style.&#10;For GPT, the total did not move: Astra, Sol, and Luna used the same number of tokens, within 2%, and made the same number of requests.&#10;Codex&amp;rsquo;s shell tools alone take about 130 fewer tokens to describe than MindRoom&amp;rsquo;s, and GPT spent about as much on extra work.&#10;Claude Sonnet 5.5 used 18% fewer tokens and Claude Opus 5.5 6% fewer, mostly because the Claude Code-style shell tools are shorter to describe than MindRoom&amp;rsquo;s.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h3 id="minimal-mode-one-shell-tool-and-a-12-line-prompt"&gt;Minimal mode: one shell tool and a 12-line prompt &lt;a class="anchor" href="#minimal-mode-one-shell-tool-and-a-12-line-prompt" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;MindRoom&amp;rsquo;s &lt;a href="https://docs.mindroom.chat/tools/agent-cli/" target="_blank" rel="noopener"&gt;minimal mode&lt;/a&gt;, modeled on DeepSeek&amp;rsquo;s minimal profile, takes this all the way.&#10;The agent gets a 12-line prompt and a single &lt;code&gt;bash&lt;/code&gt; tool instead of its normal prompt and tools.&#10;Its instructions, skills, context files, and memory move behind a command-line program inside that shell, which it can call when it needs them.&#10;Minimal mode only works in chat, so I ran this comparison in Matrix conversations, against the same agent in standard mode with only its shell tools.&#10;A chat adds context about the room to every request, but even so, the minimal agent used 21 to 52% fewer tokens than the shell-only agent through MindRoom&amp;rsquo;s API.&lt;/p&gt;&#10;&lt;p&gt;The difference starts before the model does anything.&#10;For Claude Sonnet 5.5, the prompt and tool definitions sent with every request shrink from 4,285 tokens to 661.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="What every request carries besides the conversation: the system prompt and the tool definitions, in standard and in minimal mode, from each provider&amp;rsquo;s own token counts. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="promptParts"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;What every request carries besides the conversation: the system prompt and the tool definitions, in standard and in minimal mode, from each provider&amp;rsquo;s own token counts. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Tokens per task in Matrix conversations: the same agent with only MindRoom&amp;rsquo;s shell tools, in standard mode and in minimal mode with its single bash tool, split into the fixed part (light) and the work the model did on top of it (dark). Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="minimalSplit"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Tokens per task in Matrix conversations: the same agent with only MindRoom&amp;rsquo;s shell tools, in standard mode and in minimal mode with its single bash tool, split into the fixed part (light) and the work the model did on top of it (dark). Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Each bar splits a task&amp;rsquo;s tokens into the fixed part, the prompt and tool definitions resent with every request, and the work the model did on top of it.&#10;The minimal agent used 58 to 76% fewer tokens than the same agent in standard mode with only its shell tools, for every model.&#10;Most of that is input the provider had cached and bills at a fraction of the price, so the bill shrinks less than the token count does: counting only uncached input and output, the minimal agent used 16 to 42% fewer tokens.&#10;And the model did not pay for it with extra work: the dark part of the bars stayed about the same or shrank, except for Luna&amp;rsquo;s.&#10;I had also hoped that the smaller agent would need less to do the task itself, but only GPT-6 Astra and Sol did, with slightly fewer steps and about a quarter less output; Claude worked exactly the same in both modes.&lt;/p&gt;&#10;&lt;p&gt;These tasks are short, three or four requests each, which is why the prompt weighs so much.&#10;I tried to make them harder so they would take more steps, but the models were so good that they only took about 50% more requests, and for the two models I tried, Claude Sonnet 5.5 and GPT-6 Astra, the pattern stayed the same: Sonnet did the same work in both modes, and Astra less in minimal mode.&#10;For the models that save steps, I see no reason why longer tasks would erase that gain: every step saved also saves resending the conversation, so on long tasks it counts for more.&#10;In a long session, the growing conversation dominates and the prompt&amp;rsquo;s share of the tokens shrinks, but its saving per request stays: about 3,600 tokens for Claude and 2,200 for GPT.&#10;And a real agent&amp;rsquo;s prompt carries far more instructions, skills, and memory than this test agent&amp;rsquo;s, so it saves more per request, although fetching them through the shell when needed costs requests of its own.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;The numbers behind this section&lt;/summary&gt;&#10; &lt;p&gt;&lt;strong&gt;Why Matrix.&lt;/strong&gt;&#10;Minimal mode only works in chat conversations, so I ran it through Matrix, next to the same agent with only its shell tools in standard mode.&#10;Each run got a fresh chat room with only the agent, named &lt;code&gt;coder&lt;/code&gt;, and MindRoom&amp;rsquo;s router, which handles commands like &lt;code&gt;!mode&lt;/code&gt;; for minimal mode, I switched the room over with &lt;code&gt;!mode coder minimal&lt;/code&gt; before sending the task.&#10;In a Matrix conversation, the agent also gets context about the room and the conversation, so it uses more tokens than through the API: on the same code, with only the shell tools, Claude Opus 5.5 used 22,192 tokens per task in Matrix against 12,904 through the API.&#10;That is why I compare minimal mode with standard mode in Matrix.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The prompt.&lt;/strong&gt;&#10;In standard mode, the system prompt is 2,295 tokens for Claude Sonnet 5.5 and 1,463 for GPT-6 Astra, and the tool definitions, the shell tools and one for inviting MindRoom&amp;rsquo;s router, add another 1,990 and 867.&#10;In minimal mode, the system prompt is 152 and 97 tokens, and the single &lt;code&gt;bash&lt;/code&gt; tool adds 509 and 72.&#10;This test agent&amp;rsquo;s standard prompt is about 100 lines only because its own configuration is one role line and one instruction; a real agent&amp;rsquo;s prompt also carries its instructions, skills, context files, and memory, and can run to hundreds of lines, while its minimal prompt stays at 12.&#10;The model receives all of that, plus the task and the room&amp;rsquo;s context, again with every request, so it adds up: in standard mode, about 80% of all tokens were this fixed part.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The result.&lt;/strong&gt;&#10;Its first request dropped from about 4,600 to 1,000 input tokens for Claude, and from about 2,600 to 410 for GPT.&#10;Counting only the uncached input and the output, the minimal agent used 16 to 42% fewer tokens.&#10;Even with the extra context of a Matrix conversation, it used fewer tokens than the agent with only MindRoom&amp;rsquo;s shell tools through the API on the same code: 21 to 52% fewer.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Is that a fair comparison?&lt;/strong&gt;&#10;A shorter prompt saves tokens even if the model then has to work harder, so the real question is whether it had to.&#10;Mostly, it did not: the work stayed the same for both Claude models (1% and 3% less), and went down for Astra and Sol (38% and 13% less), which also needed fewer requests, about 3.0 per task instead of 3.3 to 3.4.&#10;Luna is the exception: it made more requests and did 40% more work in minimal mode, but the shorter prompt still more than paid for that.&#10;Counted per task without the resent conversation, the Claude models wrote and added to the conversation the same in both modes, Astra and Sol wrote about a quarter less and needed 0.2 to 0.4 fewer requests, and Luna added 33% more, mostly longer command output.&#10;Three of the five models failed one more run in minimal mode, mostly on the same script-writing task that other configurations also miss now and then.&#10;That is too small to tell apart here, but I will keep an eye on it with harder tasks.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h3 id="minimal-mode-with-each-models-native-shell-tool"&gt;Minimal mode with each model&amp;rsquo;s native shell tool &lt;a class="anchor" href="#minimal-mode-with-each-models-native-shell-tool" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;That leaves the combination I had in mind from the start: the minimal agent, with each model&amp;rsquo;s native shell tool as its only tool.&#10;I patched minimal mode so that its single tool appears as Claude Code&amp;rsquo;s &lt;code&gt;Bash&lt;/code&gt; for Claude and as Codex&amp;rsquo;s &lt;code&gt;exec_command&lt;/code&gt; for GPT, with the same 12-line prompt.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Change in tokens per task in minimal mode when its single tool is the model&amp;rsquo;s native shell tool, Claude Code&amp;rsquo;s Bash or Codex&amp;rsquo;s exec_command, instead of MindRoom&amp;rsquo;s bash, with 95% confidence intervals. The second row cuts the native tool&amp;rsquo;s output to the last 100 lines, MindRoom&amp;rsquo;s bash default. Hover for values." data-plot-module="/post/native-harness-tools/plots.js" data-plot-name="minimalNative"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Change in tokens per task in minimal mode when its single tool is the model&amp;rsquo;s native shell tool, Claude Code&amp;rsquo;s Bash or Codex&amp;rsquo;s exec_command, instead of MindRoom&amp;rsquo;s bash, with 95% confidence intervals. The second row cuts the native tool&amp;rsquo;s output to the last 100 lines, MindRoom&amp;rsquo;s bash default. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;It did not make the minimal agent better for any model.&#10;For Claude, it made little difference: Sonnet used about the same, and Opus a little more.&#10;For GPT, it was clearly worse, mostly because &lt;code&gt;exec_command&lt;/code&gt; hands back a command&amp;rsquo;s whole output, and in an agent that sends so little else, a few long outputs weigh a lot.&#10;With its output cut to 100 lines, &lt;code&gt;bash&lt;/code&gt;&amp;rsquo;s default and the light rows in the chart, only Sol still clearly used more; Astra&amp;rsquo;s and Luna&amp;rsquo;s smaller increases could be chance.&lt;/p&gt;&#10;&lt;p&gt;So the whole effect of the combination came from its minimal half: models that were trained with a carefully designed set of tools did best with one tool and almost no prompt, and the tool&amp;rsquo;s native shape did not make it better.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;The numbers behind this section&lt;/summary&gt;&#10; &lt;p&gt;The single native tool only runs commands, but no current model ever polled or stopped a command in any of these runs, so it lacked nothing they used.&#10;I ran it next to minimal mode with MindRoom&amp;rsquo;s own &lt;code&gt;bash&lt;/code&gt; on the same code, and once more with the native tool&amp;rsquo;s output cut to the last 100 lines.&#10;That is &lt;code&gt;bash&lt;/code&gt;&amp;rsquo;s default, which the GPT models set themselves on every call, more often lower than higher; in the end, the capped native tool and &lt;code&gt;bash&lt;/code&gt; returned about as much, except for Astra, whose &lt;code&gt;bash&lt;/code&gt; results were twice as long.&lt;/p&gt;&#10;&lt;p&gt;For Claude, Sonnet used 4% fewer tokens with the native tool and Opus 7% more.&#10;For GPT, it was 34 to 46% more tokens, mostly because &lt;code&gt;exec_command&lt;/code&gt; returns a command&amp;rsquo;s whole output, so the models read 39 to 50 lines per result instead of 20 to 36.&#10;Cut to 100 lines, the native tool cost GPT 5 to 15% more, but only Sol&amp;rsquo;s increase is clearly more than chance; part of it is the definition, which takes about 90 more tokens than &lt;code&gt;bash&lt;/code&gt; on every request.&#10;In minimal mode, the agent sends so little else that a few long outputs weigh much more than through the API: the cap cut Astra&amp;rsquo;s tokens by about 20% here, against 4% there.&#10;Claude rarely printed more than 100 lines, so I would not read anything into the gap between its two native rows.&#10;The pass rates differed by at most a few runs, too few to tell apart.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;h2 id="what-this-does-and-does-not-show"&gt;What this does and does not show &lt;a class="anchor" href="#what-this-does-and-does-not-show" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I tested the names and arguments of the tools, not whole harnesses. Claude Code and Codex also have their own tool descriptions, system prompts, and output formats, Codex has an interactive terminal, and RL trains all of that together. The full harness might still help today&amp;rsquo;s models; matching only the tools did not.&lt;/li&gt;&#10;&lt;li&gt;The tasks are easy and short: 97% of all runs passed, with three to seven requests per task on average. Harder, longer tasks might separate the tool sets on success, not only on cost.&lt;/li&gt;&#10;&lt;li&gt;With 36 runs per configuration, a 15 to 30% difference in tokens is clear, but a difference of one or two passed runs is not.&lt;/li&gt;&#10;&lt;li&gt;I tune MindRoom&amp;rsquo;s agent setup on other tasks from the same 12 families, and a note on working habits from that tuning sits in the shell tool&amp;rsquo;s description. Both tool sets carry the same note, so it should not favor either.&lt;/li&gt;&#10;&lt;li&gt;The confidence intervals cover run-to-run variation on these 12 tasks, not the choice of tasks. Resampling the tasks as well widens them: GPT-6 Astra&amp;rsquo;s +59%, for example, becomes +38 to +81%, and Sonnet 5.5&amp;rsquo;s 6% saving becomes indistinguishable from none. Astra and Sol still used more tokens with Codex&amp;rsquo;s tools on every one of the 12 tasks, and the minimal agent used fewer on every task, for every model.&lt;/li&gt;&#10;&lt;li&gt;Most runs used each model&amp;rsquo;s standard reasoning mode, which differs between generations: adaptive thinking for Sonnet 5 and the 5.5 models, none for Opus 4.7 and 4.8, and the effort Codex picks for GPT. I tried other settings on four models: two current ones at low and high effort, and Opus 4.7 and 4.8 with adaptive thinking. The pattern held at every effort: Astra used 27 to 45% more tokens with Codex&amp;rsquo;s tools, and Sonnet 5.5 stayed slightly cheaper with Claude Code&amp;rsquo;s.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="what-happens-to-the-pull-request"&gt;What happens to the pull request &lt;a class="anchor" href="#what-happens-to-the-pull-request" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The pull request is still unmerged, and given these results, I am not sure I will merge it at all.&#10;For today&amp;rsquo;s models, the native tools either cost more, as Codex&amp;rsquo;s did for GPT-6 Astra and Sol, or, as Claude Code&amp;rsquo;s did for Claude, only saved the few tokens of the shorter descriptions I wrote for them, which MindRoom&amp;rsquo;s own tools could get too.&#10;The one model that clearly did better with its own tools, Claude Opus 4.8, is a generation behind.&#10;What I will do is use minimal mode a lot more, with MindRoom&amp;rsquo;s own &lt;code&gt;bash&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="why-this-excites-me"&gt;Why this excites me &lt;a class="anchor" href="#why-this-excites-me" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Half of my plan was wrong, and I am happy about that.&#10;The minimal-harness, DeepSeek-style half held up; the native-tools half did not.&#10;The benchmarks I did not believe were right, at least for these models.&#10;It suggests that these models generalize much better than I gave them credit for.&#10;They were trained with one specific set of tools, and on these tasks they did just as well with tools they had presumably never seen in training, as long as those tools were simple, like an edit tool that takes one path, the old text, and the new text.&#10;Only Opus 4.8, the model that started all this, still did better with its native tools.&#10;What matters more than familiarity is how much the agent sends with every request: the prompt and the definition of every tool.&lt;/p&gt;&#10;&lt;p&gt;It also changes how I think about who gets to build the best agents.&#10;If models only worked well in the harness they were trained in, the labs would own the best agents by default.&#10;Instead, at least the skill of using unfamiliar tools seems to carry over to other harnesses.&#10;I suspect the same holds one level up, for how several agents work together.&#10;The labs presumably train their models in their own harness, but if what the models learn transfers this well, a harness built outside the labs, like MindRoom, could get just as good at letting agents collaborate.&#10;That is still a hunch, and testing it is what I want to do next.&lt;/p&gt;&#10;&lt;h2 id="appendix-how-i-measured-and-the-numbers-behind-the-charts"&gt;Appendix: how I measured, and the numbers behind the charts &lt;a class="anchor" href="#appendix-how-i-measured-and-the-numbers-behind-the-charts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;All scripts, the tasks, and one row per trial, with its reasoning setting, are &lt;a href="https://github.com/basnijholt/nijho.lt/tree/main/content/post/native-harness-tools/reproduce" target="_blank" rel="noopener"&gt;on GitHub next to this post&amp;rsquo;s source&lt;/a&gt;.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;Show the setup and every configuration&lt;/summary&gt;&#10; &lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Each configuration ran as a separate MindRoom instance with one agent and a fresh Docker container for its commands. The model, the tools, and everything else were fixed in that instance&amp;rsquo;s configuration.&lt;/li&gt;&#10;&lt;li&gt;The tool comparisons ran through MindRoom&amp;rsquo;s OpenAI-compatible API on the pull request at commit &lt;code&gt;d73aafb51&lt;/code&gt;: the matching sets, the mixed sets with whole and with 100-line output, and both shell-only setups. The capped run changed only the output limit of the native shell tools.&lt;/li&gt;&#10;&lt;li&gt;The minimal-mode runs and their standard-mode comparison ran through Matrix on MindRoom&amp;rsquo;s main branch at release &lt;code&gt;v2026.10.228&lt;/code&gt;, whose shell tools lack two arguments the pull request added, a working directory and a wait. A shell-only run through the API on that release used within 3% of the pull request&amp;rsquo;s tokens for every model except Luna, which used 8% fewer.&lt;/li&gt;&#10;&lt;li&gt;The combination ran through Matrix on the pull request with an experiment patch that shows minimal mode&amp;rsquo;s single tool in the model&amp;rsquo;s own dialect. On that code, minimal mode with MindRoom&amp;rsquo;s &lt;code&gt;bash&lt;/code&gt; used within 10% of its tokens on main for every model.&lt;/li&gt;&#10;&lt;li&gt;Tokens per task are the input and output tokens of every model request in that task, from MindRoom&amp;rsquo;s per-request usage logs. The work is what is left after subtracting the fixed part, the first request&amp;rsquo;s input times the number of requests.&lt;/li&gt;&#10;&lt;li&gt;The confidence intervals come from resampling the three runs of each task 5,000 times, keeping the mix of tasks fixed.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Each cell shows passed runs out of 36, then tokens per task; the work columns show how much the work changed with the native tools.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Matching sets: each harness&amp;rsquo;s own tools against MindRoom&amp;rsquo;s matching set (pull request, through MindRoom&amp;rsquo;s API)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Reasoning&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s set&lt;/th&gt;&#10;&lt;th&gt;Harness&amp;rsquo;s own set&lt;/th&gt;&#10;&lt;th&gt;Work with the harness&amp;rsquo;s set&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 5.5&lt;/td&gt;&#10;&lt;td&gt;adaptive thinking&lt;/td&gt;&#10;&lt;td&gt;36/36 · 15,661&lt;/td&gt;&#10;&lt;td&gt;35/36 · 13,628 (−13%)&lt;/td&gt;&#10;&lt;td&gt;+7%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;adaptive thinking&lt;/td&gt;&#10;&lt;td&gt;36/36 · 14,606&lt;/td&gt;&#10;&lt;td&gt;36/36 · 13,764 (−6%)&lt;/td&gt;&#10;&lt;td&gt;+15%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;36/36 · 7,041&lt;/td&gt;&#10;&lt;td&gt;36/36 · 11,206 (+59%)&lt;/td&gt;&#10;&lt;td&gt;+84%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;36/36 · 7,292&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,417 (+43%)&lt;/td&gt;&#10;&lt;td&gt;+60%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;35/36 · 8,425&lt;/td&gt;&#10;&lt;td&gt;34/36 · 8,638 (+3%)&lt;/td&gt;&#10;&lt;td&gt;−5%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&#10;&lt;td&gt;no thinking&lt;/td&gt;&#10;&lt;td&gt;34/36 · 24,398&lt;/td&gt;&#10;&lt;td&gt;33/36 · 23,564 (−3%)&lt;/td&gt;&#10;&lt;td&gt;+13%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&#10;&lt;td&gt;no thinking&lt;/td&gt;&#10;&lt;td&gt;33/36 · 24,103&lt;/td&gt;&#10;&lt;td&gt;34/36 · 19,593 (−19%)&lt;/td&gt;&#10;&lt;td&gt;−17%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5&lt;/td&gt;&#10;&lt;td&gt;adaptive thinking&lt;/td&gt;&#10;&lt;td&gt;33/36 · 29,781&lt;/td&gt;&#10;&lt;td&gt;35/36 · 27,833 (−7%)&lt;/td&gt;&#10;&lt;td&gt;+9%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.5&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;35/36 · 10,819&lt;/td&gt;&#10;&lt;td&gt;35/36 · 11,353 (+5%)&lt;/td&gt;&#10;&lt;td&gt;+2%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.6 Sol&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,624&lt;/td&gt;&#10;&lt;td&gt;34/36 · 10,991 (+3%)&lt;/td&gt;&#10;&lt;td&gt;−5%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;For Claude, both sets have a shell and tools to read, edit, and write files; for GPT, a shell and Codex&amp;rsquo;s &lt;code&gt;apply_patch&lt;/code&gt; against MindRoom&amp;rsquo;s tools to edit and write files. Neither has MindRoom&amp;rsquo;s &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find_files&lt;/code&gt;, or &lt;code&gt;ls&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Mixed sets: native tools against MindRoom&amp;rsquo;s tools (pull request, through MindRoom&amp;rsquo;s API; Claude with adaptive thinking, GPT with the effort Codex picks)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s tools&lt;/th&gt;&#10;&lt;th&gt;Native tools&lt;/th&gt;&#10;&lt;th&gt;Native tools, 100-line output&lt;/th&gt;&#10;&lt;th&gt;Work with native tools&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 18,943&lt;/td&gt;&#10;&lt;td&gt;36/36 · 17,244 (−9%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 17,410 (−8%)&lt;/td&gt;&#10;&lt;td&gt;+5%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 17,765&lt;/td&gt;&#10;&lt;td&gt;36/36 · 16,237 (−9%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 16,399 (−8%)&lt;/td&gt;&#10;&lt;td&gt;−4%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;35/36 · 8,250&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,807 (+31%)&lt;/td&gt;&#10;&lt;td&gt;35/36 · 10,399 (+26%)&lt;/td&gt;&#10;&lt;td&gt;+51%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,873&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,534 (+19%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,239 (+15%)&lt;/td&gt;&#10;&lt;td&gt;+24%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;33/36 · 12,003&lt;/td&gt;&#10;&lt;td&gt;35/36 · 11,532 (−4%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,816 (−10%)&lt;/td&gt;&#10;&lt;td&gt;+15%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;Older models, mixed sets: native tools against MindRoom&amp;rsquo;s tools (pull request, through MindRoom&amp;rsquo;s API)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Reasoning&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s tools&lt;/th&gt;&#10;&lt;th&gt;Native tools&lt;/th&gt;&#10;&lt;th&gt;Work with native tools&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&#10;&lt;td&gt;no thinking&lt;/td&gt;&#10;&lt;td&gt;34/36 · 33,140&lt;/td&gt;&#10;&lt;td&gt;33/36 · 25,793 (−22%)&lt;/td&gt;&#10;&lt;td&gt;−26%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&#10;&lt;td&gt;no thinking&lt;/td&gt;&#10;&lt;td&gt;33/36 · 32,219&lt;/td&gt;&#10;&lt;td&gt;34/36 · 23,843 (−26%)&lt;/td&gt;&#10;&lt;td&gt;−32%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5&lt;/td&gt;&#10;&lt;td&gt;adaptive thinking&lt;/td&gt;&#10;&lt;td&gt;33/36 · 42,349&lt;/td&gt;&#10;&lt;td&gt;34/36 · 27,120 (−36%)&lt;/td&gt;&#10;&lt;td&gt;−45%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.5&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;34/36 · 15,007&lt;/td&gt;&#10;&lt;td&gt;36/36 · 14,419 (−4%)&lt;/td&gt;&#10;&lt;td&gt;−11%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.6 Sol&lt;/td&gt;&#10;&lt;td&gt;Codex&amp;rsquo;s choice&lt;/td&gt;&#10;&lt;td&gt;36/36 · 15,062&lt;/td&gt;&#10;&lt;td&gt;35/36 · 12,809 (−15%)&lt;/td&gt;&#10;&lt;td&gt;−27%&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;Older models, only the shell tools: native shape against MindRoom&amp;rsquo;s (pull request, through MindRoom&amp;rsquo;s API; Opus 4.7 and 4.8 without thinking, Sonnet 5 with adaptive thinking, GPT with the effort Codex picks)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s shell&lt;/th&gt;&#10;&lt;th&gt;Native shell&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&#10;&lt;td&gt;33/36 · 17,518&lt;/td&gt;&#10;&lt;td&gt;33/36 · 15,714 (−10%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&#10;&lt;td&gt;35/36 · 19,183&lt;/td&gt;&#10;&lt;td&gt;33/36 · 14,686 (−23%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5&lt;/td&gt;&#10;&lt;td&gt;33/36 · 22,624&lt;/td&gt;&#10;&lt;td&gt;33/36 · 28,354 (+25%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 9,056&lt;/td&gt;&#10;&lt;td&gt;36/36 · 9,046 (0%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-5.6 Sol&lt;/td&gt;&#10;&lt;td&gt;36/36 · 9,171&lt;/td&gt;&#10;&lt;td&gt;34/36 · 8,658 (−6%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Sonnet 5&amp;rsquo;s native mean comes from one run that cost 271,106 tokens, after a 50 KB command output; its median is 9% lower with the native shell.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Opus 4.7 and 4.8 with adaptive thinking, mixed sets: native tools against MindRoom&amp;rsquo;s tools (pull request, through MindRoom&amp;rsquo;s API)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Thinking replies&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s tools&lt;/th&gt;&#10;&lt;th&gt;Native tools&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&#10;&lt;td&gt;26% and 31%&lt;/td&gt;&#10;&lt;td&gt;35/36 · 35,610&lt;/td&gt;&#10;&lt;td&gt;33/36 · 23,090 (−35%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&#10;&lt;td&gt;36% and 30%&lt;/td&gt;&#10;&lt;td&gt;33/36 · 25,269&lt;/td&gt;&#10;&lt;td&gt;33/36 · 20,130 (−20%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;Reasoning effort, mixed sets: native tools against MindRoom&amp;rsquo;s tools (pull request, through MindRoom&amp;rsquo;s API)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Reasoning effort&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s tools&lt;/th&gt;&#10;&lt;th&gt;Native tools&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;low&lt;/td&gt;&#10;&lt;td&gt;36/36 · 15,154&lt;/td&gt;&#10;&lt;td&gt;36/36 · 12,330 (−19%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;default&lt;/td&gt;&#10;&lt;td&gt;36/36 · 17,765&lt;/td&gt;&#10;&lt;td&gt;36/36 · 16,237 (−9%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;high&lt;/td&gt;&#10;&lt;td&gt;36/36 · 18,286&lt;/td&gt;&#10;&lt;td&gt;36/36 · 15,630 (−15%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;low&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,361&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,627 (+27%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;default&lt;/td&gt;&#10;&lt;td&gt;35/36 · 8,250&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,807 (+31%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;high&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,934&lt;/td&gt;&#10;&lt;td&gt;36/36 · 12,918 (+45%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;Only the shell tools (pull request, through MindRoom&amp;rsquo;s API; Claude with adaptive thinking, GPT with the effort Codex picks)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;All of MindRoom&amp;rsquo;s tools&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s shell only&lt;/th&gt;&#10;&lt;th&gt;Native shell only&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 18,943&lt;/td&gt;&#10;&lt;td&gt;36/36 · 12,926 (−32%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 12,202 (−6%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 17,765&lt;/td&gt;&#10;&lt;td&gt;36/36 · 12,455 (−30%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 10,168 (−18%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;35/36 · 8,250&lt;/td&gt;&#10;&lt;td&gt;36/36 · 6,025 (−27%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 6,052 (0%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,873&lt;/td&gt;&#10;&lt;td&gt;36/36 · 6,195 (−30%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 6,177 (0%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;33/36 · 12,003&lt;/td&gt;&#10;&lt;td&gt;31/36 · 7,118 (−41%)&lt;/td&gt;&#10;&lt;td&gt;34/36 · 7,018 (−1%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;MindRoom&amp;rsquo;s shell alone is compared with all of MindRoom&amp;rsquo;s tools, and the native shell with MindRoom&amp;rsquo;s shell.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Minimal mode against standard mode (main branch, through Matrix, shell tools only; Claude with adaptive thinking, GPT with the effort Codex picks)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Standard mode&lt;/th&gt;&#10;&lt;th&gt;Minimal mode&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 22,192&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,030 (−64%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;35/36 · 22,448&lt;/td&gt;&#10;&lt;td&gt;34/36 · 7,828 (−65%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;36/36 · 11,429&lt;/td&gt;&#10;&lt;td&gt;36/36 · 2,798 (−76%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;&#10;&lt;td&gt;36/36 · 11,070&lt;/td&gt;&#10;&lt;td&gt;35/36 · 3,370 (−70%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;35/36 · 12,568&lt;/td&gt;&#10;&lt;td&gt;34/36 · 5,219 (−58%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;Minimal mode: the native tool against MindRoom&amp;rsquo;s &lt;code&gt;bash&lt;/code&gt; (pull request with the experiment patch, through Matrix; Claude with adaptive thinking, GPT with the effort Codex picks)&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;MindRoom&amp;rsquo;s &lt;code&gt;bash&lt;/code&gt;&lt;/th&gt;&#10;&lt;th&gt;Native tool&lt;/th&gt;&#10;&lt;th&gt;Native tool, 100-line output&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Opus 5.5&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,058&lt;/td&gt;&#10;&lt;td&gt;36/36 · 8,654 (+7%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 9,123 (+13%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;&#10;&lt;td&gt;34/36 · 7,787&lt;/td&gt;&#10;&lt;td&gt;34/36 · 7,514 (−4%)&lt;/td&gt;&#10;&lt;td&gt;34/36 · 8,000 (+3%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Astra&lt;/td&gt;&#10;&lt;td&gt;35/36 · 3,071&lt;/td&gt;&#10;&lt;td&gt;36/36 · 4,173 (+36%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 3,359 (+9%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;&#10;&lt;td&gt;34/36 · 3,103&lt;/td&gt;&#10;&lt;td&gt;33/36 · 4,150 (+34%)&lt;/td&gt;&#10;&lt;td&gt;36/36 · 3,575 (+15%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;34/36 · 4,697&lt;/td&gt;&#10;&lt;td&gt;34/36 · 6,849 (+46%)&lt;/td&gt;&#10;&lt;td&gt;32/36 · 4,926 (+5%)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;One of Luna&amp;rsquo;s runs with the whole native output counts for passes but not for tokens: the provider reported no usage for one of its requests.&lt;/p&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Armin also found that Anthropic&amp;rsquo;s strict tool mode, which restricts the model&amp;rsquo;s output to the tool&amp;rsquo;s schema, made these failures disappear in his tests. Pi later turned it on for Claude models, and a pi user then &lt;a href="https://github.com/earendil-works/pi/issues/10074#issuecomment-6000381416" target="_blank" rel="noopener"&gt;linked a different problem to it&lt;/a&gt;: in that user&amp;rsquo;s logs, 9.5% of Claude&amp;rsquo;s edits had mangled &lt;code&gt;\u&lt;/code&gt; escapes for non-ASCII text, such as Korean, with strict mode on, and 1.5% with it off.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;The 12 tasks come from 12 families: a CSV report, finding the commit that broke a check, renaming an API across a package, counting errors in log files, fixing failing tests, finding files, extracting fields from JSON, writing a shell script, editing a configuration file, counting matching lines in very long command output, unpacking nested archives, and deduplicating and merging data files. I tune MindRoom&amp;rsquo;s agent setup on other instances of these families, and these 12 were held out from that.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;Claude and GPT count tokens differently, so compare the numbers within one model, not across models. Cached input counts in full here, although providers bill it at a fraction of the price, so a bill changes less than the token count.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;MindRoom&amp;rsquo;s toolkits accept &lt;code&gt;exclude_tools&lt;/code&gt;, so both sets drop MindRoom&amp;rsquo;s &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find_files&lt;/code&gt;, and &lt;code&gt;ls&lt;/code&gt;, and for GPT also &lt;code&gt;read_file&lt;/code&gt;, since Codex reads files through the shell. Both keep their shell&amp;rsquo;s tools for checking on and stopping a background command, which no model used in the matching-set runs.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;Anthropic adds its own instructions for tool use to every request that has tools, which is why MindRoom&amp;rsquo;s single &lt;code&gt;bash&lt;/code&gt; tool costs Claude 509 tokens. I measured all of these numbers by sending each part on its own and reading the input tokens the provider reported.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;The patch is with this post&amp;rsquo;s reproduction scripts. It shows minimal mode&amp;rsquo;s single tool as MindRoom&amp;rsquo;s canonical run function, which the tool dialect then presents as &lt;code&gt;Bash&lt;/code&gt; or &lt;code&gt;exec_command&lt;/code&gt;; nothing else about minimal mode changes.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>How to start with AI</title><link>https://www.nijho.lt/post/how-to-start-with-ai/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/how-to-start-with-ai/</guid><description>&lt;p&gt;Recently, on a train, I sat near someone typing code by hand for hours.&#10;At the same time, I was orchestrating more than ten agents just by talking to my phone.&#10;I felt like I was living in a different world.&#10;It made me realize my own bias.&#10;I had just assumed that by now everyone would have AI write their code.&lt;/p&gt;&#10;&lt;p&gt;So maybe I shouldn&amp;rsquo;t be surprised that I still get asked: &amp;ldquo;how do I start with AI?&amp;rdquo; or &amp;ldquo;how do I start with coding agents?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;There is a lot of noise, and a lot of pretense, about very specific workflows.&#10;Multi-agent loops, agent and sub-agent graphs, carefully tuned rule files.&#10;None of that is useful for 99% of people.&lt;/p&gt;&#10;&lt;p&gt;You don&amp;rsquo;t need skills.&#10;You don&amp;rsquo;t need an &lt;code&gt;AGENTS.md&lt;/code&gt;.&#10;You don&amp;rsquo;t need anything except the app itself.&#10;You just need to ask questions, and be critical of the answers.&lt;/p&gt;&#10;&lt;p&gt;Most of my examples come from code, because that is where I use AI the most.&#10;But the advice is the same whether you write software or not.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Install Claude or ChatGPT. The app if you want to chat, Claude Code or Codex in your terminal if you write code. It takes 30 seconds. No setup.&lt;/li&gt;&#10;&lt;li&gt;Ask it everything, and be critical of what comes back. Don&amp;rsquo;t do anything it could do itself, and tell it so.&lt;/li&gt;&#10;&lt;li&gt;Use the best model. Cheap models are often not cheaper on real work.&lt;/li&gt;&#10;&lt;li&gt;Trust it in proportion to how measurable the outcome is.&lt;/li&gt;&#10;&lt;li&gt;Have its work reviewed in a fresh context, by the same model and by another one. Watch for scope creep.&lt;/li&gt;&#10;&lt;li&gt;Skills, multi-agent loops and the rest come later, if ever.&lt;/li&gt;&#10;&lt;/ol&gt;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-install-it-and-thats-it"&gt;1. Install it, and that&amp;rsquo;s it&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-ask-it-everything-"&gt;2. Ask it everything 🥩&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-use-the-best-model"&gt;3. Use the best model&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-decide-how-much-to-trust-it"&gt;4. Decide how much to trust it&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-talk-to-it-then-make-it-review-itself"&gt;5. Talk to it, then make it review itself&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-what-about-skills-and-multi-agent-loops"&gt;6. What about skills and multi-agent loops?&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-if-you-write-code"&gt;7. If you write code&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#tests-are-cheap-now-so-ask-for-them"&gt;Tests are cheap now, so ask for them&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-code-is-the-spec"&gt;The code is the spec&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#review-against-your-own-criteria"&gt;Review against your own criteria&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#cross-model-review-needs-two-installs"&gt;Cross-model review needs two installs&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#a-good-ai-engineer-is-just-a-good-engineer"&gt;A good AI engineer is just a good engineer&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#your-role-changed-it-didnt-disappear"&gt;Your role changed, it didn&amp;rsquo;t disappear&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#this-post-has-an-expiry-date"&gt;This post has an expiry date&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-install-it-and-thats-it"&gt;1. Install it, and that&amp;rsquo;s it &lt;a class="anchor" href="#1-install-it-and-thats-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Getting started is downloading the ChatGPT or Claude app, or literally a one-liner to install Claude Code or Codex if you write code.&#10;Maybe you log in, or click a button to get access.&#10;That&amp;rsquo;s the whole setup.&#10;&amp;ldquo;I need to take time to learn how to use it&amp;rdquo; was never a real barrier.&#10;The interface is trivial: text in, text out.&#10;Everything else is optional.&lt;/p&gt;&#10;&lt;p&gt;I open agents in projects of mine that have never seen any AI, and seconds later they know the entire thing.&#10;The frontier models have much better taste than they used to.&#10;In an established codebase they just follow the existing style.&#10;If you point one at a codebase that is a bunch of crap, it might still produce a bunch of crap.&#10;But even there it does better than it used to.&lt;/p&gt;&#10;&lt;p&gt;I used to give different advice.&#10;In &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;On agentic coding&lt;/a&gt;, a year ago, I told you to create a &lt;code&gt;CLAUDE.md&lt;/code&gt; in every project root with your preferences.&#10;(Today that would be an &lt;code&gt;AGENTS.md&lt;/code&gt;, which all the major agents read.)&#10;I still use them, but not everywhere, and you don&amp;rsquo;t need one to get started.&#10;There is even &lt;a href="https://arxiv.org/abs/2602.11988" target="_blank" rel="noopener"&gt;research&lt;/a&gt; showing that repository-level context files don&amp;rsquo;t generally improve the task success rate of coding agents, while raising the cost by over 20%.&#10;They help when you have non-standard practices the agent can&amp;rsquo;t guess.&#10;A list of standard rules or an overview of the repository does not.&lt;/p&gt;&#10;&lt;h2 id="2-ask-it-everything-"&gt;2. Ask it everything 🥩 &lt;a class="anchor" href="#2-ask-it-everything-" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The real change is a mindset, not a tool.&lt;/p&gt;&#10;&lt;p&gt;When you run into a problem, the old reflex is to Google it.&#10;The new reflex is to ask the AI about everything.&#10;Asking also means asking it to do things.&#10;Most of what I type is a description of what I want done, and why.&#10;Give it the context you would give a colleague.&lt;/p&gt;&#10;&lt;p&gt;When the agent says &amp;ldquo;now you need to run the tests,&amp;rdquo; no.&#10;Everything it can do, you let it do.&#10;If the AI tells you what to do when it could do it itself, you are just a &lt;strong&gt;meat proxy&lt;/strong&gt;, and you are wasting your own time.&lt;/p&gt;&#10;&lt;p&gt;It is genuinely absurd how good it has gotten.&#10;My mom sent me a photo of &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt; crashing in her browser, a screen full of minified JavaScript.&#10;I sent the photo to my agent.&#10;The answer: the Google Translate extension was interfering with the page.&#10;It wrote the fix too.&lt;/p&gt;&#10;&lt;p&gt;The people who still don&amp;rsquo;t use it are, I think, in one of two groups.&#10;Some had a bad experience once, years ago, and never tried again.&#10;That experience is badly out of date.&#10;Others, and I suspect it&amp;rsquo;s a large group, avoid AI on principle.&#10;This post won&amp;rsquo;t change their minds, but it might make starting easier for everyone else.&lt;/p&gt;&#10;&lt;h2 id="3-use-the-best-model"&gt;3. Use the best model &lt;a class="anchor" href="#3-use-the-best-model" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Another very common question: shouldn&amp;rsquo;t I use a cheaper model to save money?&#10;When you&amp;rsquo;re starting out, my answer is to use the best one.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Your time almost certainly costs more than the tokens.&lt;/strong&gt;&#10;For an engineer, it certainly does.&#10;Continuously deciding &amp;ldquo;do I need the smartest model for this, or the weakest one?&amp;rdquo; is itself not efficient.&#10;A useful check when a session costs $50: what would this have cost you without AI?&#10;If you would have done it anyway, the answer is almost always way more.&#10;(If you only did it because AI made it possible, the comparison gets harder.)&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Cheaper per token is not cheaper per task.&lt;/strong&gt;&#10;A cheaper model does not necessarily get to the solution in fewer tokens.&#10;On hard problems it typically uses way more.&lt;/p&gt;&#10;&lt;p&gt;My favorite way to see this is &lt;a href="https://artificialanalysis.ai/" target="_blank" rel="noopener"&gt;Artificial Analysis&lt;/a&gt;&amp;rsquo;s intelligence index versus &lt;strong&gt;cost per task&lt;/strong&gt;, which accounts for both the price and how many tokens a model burns.&#10;Here are Claude Opus 5.5 and Claude Sonnet 5.5 at each reasoning effort:&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Artificial Analysis Intelligence Index versus the average cost of one of its tasks, for each reasoning effort, as of 2026-10-08. Hover for the output tokens per task." data-plot-module="/post/how-to-start-with-ai/plots.js" data-plot-name="costPerTask"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Artificial Analysis Intelligence Index versus the average cost of one of its tasks, for each reasoning effort, as of 2026-10-08. Hover for the output tokens per task.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Sonnet costs half as much per token.&#10;But at max effort it scores 56, the same as Opus at xhigh, and costs $5.46 per task against Opus&amp;rsquo;s $3.46.&#10;It just uses a lot more tokens: about 197,000 output tokens per task versus 66,000.&#10;Above a score of about 47, the Opus line is both higher and further to the left.&lt;/p&gt;&#10;&lt;p&gt;So for simple tasks, the cheaper model is cheaper.&#10;For difficult work, it is sometimes the same price, often takes longer, and can cost more, because it burns through so many more tokens.&#10;And a worse answer gets more expensive later, because somebody has to fix it.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t put reasoning effort on max.&lt;/strong&gt;&#10;Going from xhigh to max on Opus buys 1.6 points for 73% more money.&#10;On Sonnet it is 2.7 times the cost.&#10;I default to xhigh myself, which is probably overkill for half of what I do.&lt;/p&gt;&#10;&lt;h2 id="4-decide-how-much-to-trust-it"&gt;4. Decide how much to trust it &lt;a class="anchor" href="#4-decide-how-much-to-trust-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When I started, I read every single line of code it wrote and had so many comments.&#10;By now I trust the output much more, because I&amp;rsquo;ve seen it.&#10;The scope I hand over has grown with that trust.&#10;&lt;a href="https://chat.mindroom.chat/canvases/" target="_blank" rel="noopener"&gt;Canvases in MindRoom Chat&lt;/a&gt;, interactive pages an agent can show you next to the conversation, felt like a half-year project.&#10;I built it in a day, on my phone.&lt;/p&gt;&#10;&lt;p&gt;How closely I look depends on how important the result is and how measurable it is.&#10;The core of a project, the part everything relies on: there I want to understand precisely what&amp;rsquo;s going on.&#10;An integration that fetches my email from some external API, something written a million times whose outcome is easy to check: I don&amp;rsquo;t read the code.&#10;When I see that it works, I believe it.&#10;The same goes outside code: an answer you can check in a minute needs less scrutiny than one you can&amp;rsquo;t check at all.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/how-to-start-with-ai/trust-tree.svg" alt="A tree with three large blue core nodes at the top and six small grey leaf nodes at the bottom. The core is labeled: everything depends on it, read it and understand it. The leaves are labeled: nothing depends on them, check that they work." loading="lazy" data-zoomable&gt;&lt;/figure&gt;&#10;&lt;p&gt;This is also why expertise still matters.&#10;When I scroll through a large piece of code, I can judge its complexity at a glance.&#10;When it explains something in a field I know, I can tell when it&amp;rsquo;s wrong and call bullshit.&#10;In a field I don&amp;rsquo;t know, I can&amp;rsquo;t, so I spend much more time validating to reach the same level of trust.&#10;Match your scrutiny to your expertise.&lt;/p&gt;&#10;&lt;h2 id="5-talk-to-it-then-make-it-review-itself"&gt;5. Talk to it, then make it review itself &lt;a class="anchor" href="#5-talk-to-it-then-make-it-review-itself" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I start by telling it what I want, usually by voice.&#10;I just ramble.&#10;It is so good at language that even when I go off track and talk incoherently, it almost always understands what I mean.&#10;And sometimes it pushes back: &amp;ldquo;I understand what you mean, but that approach is bad because of this, I&amp;rsquo;d do it this way.&amp;rdquo;&#10;Sometimes it says we could do it either way, and I say: let&amp;rsquo;s try both.&lt;/p&gt;&#10;&lt;p&gt;In almost all cases, AI can now deliver what you asked for in a single prompt, and it will actually work.&#10;The question is whether it&amp;rsquo;s actually good, and whether it meets your standards.&#10;So before you accept anything, have it reviewed.&lt;/p&gt;&#10;&lt;p&gt;For me, the review has to come from a fresh context that never saw the conversation that produced the work.&#10;A new session, or a sub-agent, that only sees the result.&#10;That can be the same model or a different one.&#10;I do both: the same model in a fresh context, and other models, until they agree it&amp;rsquo;s good.&#10;That sounds like a lot of setup, but it isn&amp;rsquo;t.&#10;In a chat app, it can be as simple as pasting the answer into a new chat, or into the other company&amp;rsquo;s app, and asking what&amp;rsquo;s wrong with it.&lt;/p&gt;&#10;&lt;p&gt;Whatever you use, also tell it to &lt;strong&gt;be mindful of scope creep.&lt;/strong&gt;&#10;A review will always find something.&#10;Very often it&amp;rsquo;s an edge case that looks real in isolation but can never happen in your actual situation.&#10;Ask whether each finding is realistic before you let it build more.&lt;/p&gt;&#10;&lt;h2 id="6-what-about-skills-and-multi-agent-loops"&gt;6. What about skills and multi-agent loops? &lt;a class="anchor" href="#6-what-about-skills-and-multi-agent-loops" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Yes, I use those things.&#10;No, you don&amp;rsquo;t need them to start.&lt;/p&gt;&#10;&lt;p&gt;I never sit down and think &amp;ldquo;now I need to develop a skill.&amp;rdquo;&#10;I do something with the agent a couple of times, realize I&amp;rsquo;m going to keep repeating it, and then say: &amp;ldquo;let&amp;rsquo;s make a skill out of this, and make it self-evolving.&amp;rdquo;&#10;A skill is just a procedure you want to repeat.&#10;You only know what to put in it after you&amp;rsquo;ve repeated it.&#10;(In &lt;a href="https://docs.mindroom.chat/skills/#automatic-skill-learning" target="_blank" rel="noopener"&gt;MindRoom&lt;/a&gt;, an agent can even do this on its own: with automatic skill learning turned on, it reviews its recent work in the background and turns repeated workflows into skills.)&lt;/p&gt;&#10;&lt;p&gt;My own set of skills is public as &lt;a href="https://github.com/basnijholt/baspowers" target="_blank" rel="noopener"&gt;baspowers&lt;/a&gt;, which started as a fork of &lt;a href="https://github.com/obra/superpowers" target="_blank" rel="noopener"&gt;superpowers&lt;/a&gt;.&#10;Some of its skills came from &lt;a href="https://github.com/basnijholt/baspowers#how-the-delivery-skills-were-made" target="_blank" rel="noopener"&gt;mining more than ten thousand session logs&lt;/a&gt; of my agent history for procedures I kept repeating, then A/B testing each one with and without the skill.&#10;An A/B test sounds like a lot of work, but you can ask the agent to run it for you, and tell it which other models to test with.&#10;Four of the ten candidates were dropped because the agents already did the right thing without them.&#10;The rule I ended up with: &lt;strong&gt;keep only skills that change behavior.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Sometimes they really do.&#10;In one test, agents wrote a failing test before fixing a bug in 0 of 32 runs without my &lt;a href="https://github.com/basnijholt/baspowers/tree/main/skills/test-driven-development" target="_blank" rel="noopener"&gt;test-driven development skill&lt;/a&gt;, and in 32 of 32 runs with it.&#10;That matters when agents run on their own for hours.&#10;It does not matter for your first week of asking questions.&lt;/p&gt;&#10;&lt;p&gt;I also run cross-model reviews in loops, which is useful when I have ten things running at once.&#10;But I keep updating those setups, because each new model makes parts of them unnecessary.&#10;My &lt;a href="https://github.com/mindroom-ai/mindroom/blob/main/.claude/skills/pr-review/SKILL.md" target="_blank" rel="noopener"&gt;PR review skill&lt;/a&gt; used to make agents fix every nitpick.&#10;Now the models are good enough that it will forever find something, even after a hundred rounds, so I had to change it: it now only blocks on issues with a realistic scenario.&lt;/p&gt;&#10;&lt;p&gt;That is the problem with copying someone&amp;rsquo;s elaborate workflow.&#10;It encodes the weaknesses of last year&amp;rsquo;s models and the habits of one person.&#10;Start with nothing, and add things once you notice you keep repeating them.&lt;/p&gt;&#10;&lt;h2 id="7-if-you-write-code"&gt;7. If you write code &lt;a class="anchor" href="#7-if-you-write-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A few things only apply to software.&lt;/p&gt;&#10;&lt;h3 id="tests-are-cheap-now-so-ask-for-them"&gt;Tests are cheap now, so ask for them &lt;a class="anchor" href="#tests-are-cheap-now-so-ask-for-them" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;&amp;ldquo;Set up the actual live system, end to end (don&amp;rsquo;t touch production!), run it with real data, crash it at different points in the middle.&amp;rdquo;&#10;All the random things you would check yourself if you had infinite time.&#10;Have it write a lot of tests.&#10;More tests is better, even when some have limited value.&#10;What I care about is that the source code itself is clean.&lt;/p&gt;&#10;&lt;h3 id="the-code-is-the-spec"&gt;The code is the spec &lt;a class="anchor" href="#the-code-is-the-spec" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;A lot of people will disagree here, but I throw away design docs.&#10;What came out in the end was never what the doc said anyway.&#10;The code and the tests are the specification, because that&amp;rsquo;s also what the agent reads.&#10;The only thing I keep is what the code can&amp;rsquo;t say: why something was done a certain way.&#10;Documentation that conflicts with the code is the worst: the agent will start changing your code to match the docs without you noticing.&lt;/p&gt;&#10;&lt;h3 id="review-against-your-own-criteria"&gt;Review against your own criteria &lt;a class="anchor" href="#review-against-your-own-criteria" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The questions I make it answer about its own work:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Is the code clean?&lt;/li&gt;&#10;&lt;li&gt;Does it fit well within the existing architecture?&lt;/li&gt;&#10;&lt;li&gt;Does it repeat itself?&lt;/li&gt;&#10;&lt;li&gt;Is it overengineered? Keep it simple, stupid.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="cross-model-review-needs-two-installs"&gt;Cross-model review needs two installs &lt;a class="anchor" href="#cross-model-review-needs-two-installs" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;As long as you have both Codex and Claude Code installed, you are essentially ready.&#10;Just tell the agent: &amp;ldquo;have Codex review this in a separate session and address what it finds.&amp;rdquo;&#10;It can usually figure out how to call the other command-line tool on its own.&#10;I personally built a worktree orchestration tool for this, &lt;a href="https://www.nijho.lt/post/parallel-agentic-coding/"&gt;&lt;code&gt;agent-cli dev&lt;/code&gt;&lt;/a&gt;, which comes with a skill that teaches the agent to use it.&#10;But honestly, that is not necessary anymore nowadays.&lt;/p&gt;&#10;&lt;h3 id="a-good-ai-engineer-is-just-a-good-engineer"&gt;A good AI engineer is just a good engineer &lt;a class="anchor" href="#a-good-ai-engineer-is-just-a-good-engineer" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;People ask me what makes a good agentic engineer.&#10;I&amp;rsquo;ve been saying the same thing for a long time: somebody who is literally a good engineer.&#10;Good engineering practices never went away.&#10;They are more important than ever: test-driven development, building things at the right level of abstraction, a proper architecture.&lt;/p&gt;&#10;&lt;p&gt;I think of engineering skill as a scale that runs from negative to positive.&#10;A good engineer removes work for others.&#10;A bad engineer creates work for others.&#10;Give the bad engineer AI, and they multiply their bad output, because AI is a multiplier.&lt;/p&gt;&#10;&lt;p&gt;Before AI, you could spend a year writing a few thousand lines of code, maybe a couple tens of thousands at most.&#10;You were intimately familiar with all of it, so you could get away with a somewhat worse architecture.&#10;Now you can produce a million lines of code in a year.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&#10;There is no possible way you can keep up with all of it.&#10;If you want to build something lasting and robust, you need proper foundations.&#10;And that is where your opinions matter.&#10;You don&amp;rsquo;t need any setup to start, but you do need taste to build something that lasts.&#10;(I made a related point a year ago in &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;On agentic coding&lt;/a&gt;: AI amplifies the experience you already have.)&lt;/p&gt;&#10;&lt;h3 id="your-role-changed-it-didnt-disappear"&gt;Your role changed, it didn&amp;rsquo;t disappear &lt;a class="anchor" href="#your-role-changed-it-didnt-disappear" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Some software engineers feel personally attacked by all this.&#10;I think you have to get over yourself.&#10;Your secret sauce was never knowing the syntax really well.&#10;Now you need to know what to build, and how it should be built.&lt;/p&gt;&#10;&lt;p&gt;And you need to be strict.&#10;You can produce thousands of lines a day, so be thoughtful about whether you want them in your codebase forever.&#10;Changing the color of a button takes one prompt.&#10;A difficult system needs more rigor, which means understanding the architecture and what it implies instead of reading every line.&lt;/p&gt;&#10;&lt;h2 id="this-post-has-an-expiry-date"&gt;This post has an expiry date &lt;a class="anchor" href="#this-post-has-an-expiry-date" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Right now I&amp;rsquo;d tell you to use Claude Opus 5.5.&#10;Just two weeks ago I was telling people to use GPT-6 Astra.&#10;Things change continuously, and in most cases you&amp;rsquo;ll be fine with either.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;m also sure that a few weeks from now, I will no longer accept the model I&amp;rsquo;m praising today.&#10;Not because it can&amp;rsquo;t do the amazing things it does now.&#10;But because the next one will do even more amazing things that it can&amp;rsquo;t.&#10;With every new model, my workflow changes, and the amount of scope I hand over per task grows dramatically.&lt;/p&gt;&#10;&lt;p&gt;That&amp;rsquo;s why I don&amp;rsquo;t recommend building an elaborate setup first.&#10;Every skill, rule file and agent graph is tuned to the limitations of the model you have today.&#10;Those limitations are gone in a few months, and then the setup is dead weight.&#10;Asking it things is the one habit that survives every model change.&lt;/p&gt;&#10;&lt;p&gt;Install it today, use the best model, and ask it everything, including whether its own work is any good.&#10;The rest is optional, and probably temporary.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;I wrote about 4.5 million lines of code this year, as counted by &lt;a href="https://github.com/basnijholt/trueloc" target="_blank" rel="noopener"&gt;trueloc&lt;/a&gt;, another tool of mine that counts every line added across all commits in my pull requests.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Self-hosting AI does not save money, and I do it anyway</title><link>https://www.nijho.lt/post/self-hosting-ai-is-not-cheaper/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/self-hosting-ai-is-not-cheaper/</guid><description>&lt;p&gt;I have had this debate many times, so I am finally writing it down.&lt;/p&gt;&#10;&lt;p&gt;Whenever I say that self-hosting AI does not save money, people hear that I am against self-hosting.&#10;That is not the point at all.&#10;I am a massive fan of open-weight models.&#10;&lt;a href="https://github.com/basnijholt/dotfiles/blob/e63a3f341ff36b7b57bf31361c2844e1d8b78e95/configs/nixos/hosts/pc/ai.nix#L43" target="_blank" rel="noopener"&gt;Qwen3.8 27B runs on two RTX 3090s at home&lt;/a&gt; (and 15 more models), and my phone dictation goes to &lt;a href="https://www.nijho.lt/post/diction-agent-cli-qwen/"&gt;Qwen3-ASR on the same machine&lt;/a&gt;.&#10;I think open-source AI is the best thing since sliced bread.&lt;/p&gt;&#10;&lt;p&gt;I don&amp;rsquo;t pretend it saves money.&#10;I do it for fun, for sovereignty, and for privacy, which I come back to at the end.&lt;/p&gt;&#10;&lt;p&gt;All benchmark numbers and prices below come from &lt;a href="https://artificialanalysis.ai/" target="_blank" rel="noopener"&gt;Artificial Analysis&lt;/a&gt; and &lt;a href="https://openrouter.ai/" target="_blank" rel="noopener"&gt;OpenRouter&lt;/a&gt; as of September 30, 2026.&#10;I did the math for the hardware I own, and for the counterarguments I hear most.&#10;All assumptions are listed &lt;a href="#appendix-all-assumptions"&gt;at the end&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Benchmarks are not everything, and a high score does not reliably predict how a model does on real work.&#10;They are still the best we have: all models are benchmaxed, tuned to do well on the popular benchmarks, so the scores at least work as a reference frame for comparing them with each other.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Update, October 2, 2026: after the discussion on r/LocalLLaMA, I added &lt;a href="#5-but-my-mac-dgx-spark-or-ai-max-does-save-money"&gt;section 5&lt;/a&gt; on Macs, DGX Sparks, and AMD AI Max machines.&lt;/em&gt;&lt;/p&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-the-model-i-love-and-the-one-that-beats-it-on-price"&gt;1. The model I love, and the one that beats it on price&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-but-my-gpus-are-already-paid-for"&gt;2. &amp;ldquo;But my GPUs are already paid for&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-why-datacenters-are-so-much-better-at-this"&gt;3. Why datacenters are so much better at this&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-but-i-have-solar-panels"&gt;4. &amp;ldquo;But I have solar panels&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-but-my-mac-dgx-spark-or-ai-max-does-save-money"&gt;5. &amp;ldquo;But my Mac, DGX Spark, or AI Max does save money&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-the-bar-keeps-moving"&gt;6. The bar keeps moving&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-a-small-company-has-it-worse"&gt;7. A small company has it worse&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-they-lose-money-on-inference-so-prices-will-go-up"&gt;8. &amp;ldquo;They lose money on inference, so prices will go up&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-but-they-sell-your-data"&gt;9. &amp;ldquo;But they sell your data&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#10-where-self-hosting-does-win-the-same-model"&gt;10. Where self-hosting does win: the same model&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#11-so-why-do-i-do-it"&gt;11. So why do I do it?&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#appendix-all-assumptions"&gt;Appendix: all assumptions&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-the-model-i-love-and-the-one-that-beats-it-on-price"&gt;1. The model I love, and the one that beats it on price &lt;a class="anchor" href="#1-the-model-i-love-and-the-one-that-beats-it-on-price" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My favorite local model right now is &lt;a href="https://artificialanalysis.ai/models/qwen3-8-27b" target="_blank" rel="noopener"&gt;Qwen3.8 27B&lt;/a&gt;.&#10;It came out in August and it is Apache-2.0.&#10;People often say models like this run on a single gaming GPU, but that is only true after quantizing them.&#10;At full precision, Qwen3.8 27B needs about 54 GB of memory.&#10;Quantized to about 4 bits per weight, it fits on one 24 GB card, at some cost in quality.&#10;I still &lt;a href="https://github.com/basnijholt/dotfiles/blob/e63a3f341ff36b7b57bf31361c2844e1d8b78e95/configs/nixos/hosts/pc/ai.nix#L56-L65" target="_blank" rel="noopener"&gt;split it across both of my 3090s&lt;/a&gt;, because the second card leaves room for a larger context window.&lt;/p&gt;&#10;&lt;p&gt;I compare it with OpenAI&amp;rsquo;s &lt;a href="https://artificialanalysis.ai/models/gpt-6-luna" target="_blank" rel="noopener"&gt;GPT-6 Luna&lt;/a&gt;, the cheap tier released on September 22.&#10;Both models let you choose how long they think, but the settings do not mean the same thing for both.&#10;Luna&amp;rsquo;s token use grows more than 20 times from its lowest setting to its highest, while Qwen&amp;rsquo;s barely changes.&#10;Qwen on low already writes more tokens than Luna on xhigh.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Average output tokens per Intelligence Index task at each reasoning setting. Qwen3.8 27B has no high or max setting. Hover for scores." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="effortTokens"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Average output tokens per Intelligence Index task at each reasoning setting. Qwen3.8 27B has no high or max setting. Hover for scores.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;So the name of a setting says little on its own.&#10;I compare both models at xhigh, the highest setting Qwen offers, and count the tokens each one actually uses.&#10;The extra tokens Qwen needs are part of what I am measuring.&#10;There, Qwen scores 33.7 on the &lt;a href="https://artificialanalysis.ai/methodology/intelligence-benchmarking" target="_blank" rel="noopener"&gt;Artificial Analysis Intelligence Index&lt;/a&gt; and Luna scores 34.6.&#10;For reference, Claude Opus 4.6, a frontier model from February, scores 31.9.&#10;That is an amazing feat in itself.&#10;When Opus 4.6 was the best model we had, I never thought that within the same year I could run essentially that level of intelligence in my own house.&lt;/p&gt;&#10;&lt;p&gt;Artificial Analysis also &lt;a href="https://artificialanalysis.ai/leaderboards/models" target="_blank" rel="noopener"&gt;publishes&lt;/a&gt; how many tokens each model used to run the index, and what that cost.&#10;So the question is simple: what does it cost to run the whole benchmark once?&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Cost of one run of the Artificial Analysis Intelligence Index. The two bars for hardware at home are electricity only: measured on my 3090s, estimated for the RTX PRO 6000." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="runCost"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Cost of one run of the Artificial Analysis Intelligence Index. The two bars for hardware at home are electricity only: measured on my 3090s, estimated for the RTX PRO 6000.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Luna runs the whole benchmark for $67.&#10;Qwen at full precision, through the &lt;a href="https://openrouter.ai/qwen/qwen3.8-27b/providers" target="_blank" rel="noopener"&gt;cheapest provider&lt;/a&gt; that does not keep your data (ZDR), costs $619.&#10;Two things cause that gap: providers charge almost four times as much per output token for Qwen, and Qwen generates almost three times as many tokens to get the same work done.&lt;/p&gt;&#10;&lt;p&gt;The second bar is my own machine: the electricity alone for running Qwen on my GPUs costs more than Luna&amp;rsquo;s entire bill.&lt;/p&gt;&#10;&lt;p&gt;The third bar is what it takes to match the API&amp;rsquo;s full precision at home: an RTX PRO 6000, a workstation card with 96 GB of memory, enough for the full model.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&#10;Its electricity alone costs twice Luna&amp;rsquo;s bill, and one run takes more than seven weeks.&#10;The card by itself sells for $10,000 to $20,000, so with a computer around it, you are paying for a pretty nice car.&#10;Buy a few of them to run agents in parallel, and you are building a small data center of your own.&lt;/p&gt;&#10;&lt;p&gt;The bars for hardware at home are electricity only, so they are the lowest these runs can cost: the cards come on top, and how much depends on how busy you keep them, which is what section 4 is about.&lt;/p&gt;&#10;&lt;p&gt;What I care about is the cheapest way to get answers of Qwen&amp;rsquo;s quality, from whichever model gives them.&lt;/p&gt;&#10;&lt;h2 id="2-but-my-gpus-are-already-paid-for"&gt;2. &amp;ldquo;But my GPUs are already paid for&amp;rdquo; &lt;a class="anchor" href="#2-but-my-gpus-are-already-paid-for" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This is the argument I hear most, so assume the hardware is free and only the electricity counts.&lt;/p&gt;&#10;&lt;p&gt;I measured my own machine.&#10;It runs Qwen in vLLM, split across both cards, at about 107 tokens per second.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&#10;The cards are capped at 270 W each,&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; and the whole machine draws about 700 W.&#10;It then needs four weeks, running day and night, to get through the benchmark once.&#10;I also give my quantized copy the score Artificial Analysis measured through Alibaba&amp;rsquo;s API.&#10;I have not rerun the benchmark on it, and anything lost to quantization makes my machine look worse.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Electricity for one benchmark run of Qwen3.8 27B on my two 3090s, by electricity price. The dashed line is what Luna charges for the same work, with OpenAI&amp;rsquo;s hardware and margin included. Hover for values." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="electricityCost"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Electricity for one benchmark run of Qwen3.8 27B on my two 3090s, by electricity price. The dashed line is what Luna charges for the same work, with OpenAI&amp;rsquo;s hardware and margin included. Hover for values.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Above 14.5 cents per kWh, my electricity alone costs more than Luna&amp;rsquo;s API bill.&#10;Below it, I save a few dollars per run and wait four weeks instead of a few hours.&lt;/p&gt;&#10;&lt;p&gt;Those four weeks matter more than the few dollars.&#10;An API takes hundreds of requests at once, so even one benchmark run can finish in an hour or two.&#10;My setup works on one conversation at a time: when I sent it eight requests at once, seven of them waited in line.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Wall-clock time for one benchmark run. The API times use Artificial Analysis&amp;rsquo;s measured time per task for Luna; the parallel case assumes 100 requests at once. Log scale." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="wallClock"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Wall-clock time for one benchmark run. The API times use Artificial Analysis&amp;rsquo;s measured time per task for Luna; the parallel case assumes 100 requests at once. Log scale.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;This is one more reason my coding agents run on APIs.&#10;When I &lt;a href="https://www.nijho.lt/post/parallel-agentic-coding/"&gt;run several agents in parallel&lt;/a&gt;, each of them should be as fast as if it were alone.&lt;/p&gt;&#10;&lt;h2 id="3-why-datacenters-are-so-much-better-at-this"&gt;3. Why datacenters are so much better at this &lt;a class="anchor" href="#3-why-datacenters-are-so-much-better-at-this" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When my 3090s generate a token, they read all of the model&amp;rsquo;s weights from memory to produce one token for one conversation.&#10;Most of the chip&amp;rsquo;s compute sits idle while it waits for memory.&#10;A datacenter GPU reads the same weights once and produces a token for hundreds of conversations at the same time.&#10;This is called batching, and it is where most of the efficiency comes from.&lt;/p&gt;&#10;&lt;p&gt;Artificial Analysis measures this with &lt;a href="https://artificialanalysis.ai/hardware-inference-stack/datacenter" target="_blank" rel="noopener"&gt;AgentPerf&lt;/a&gt;, which replays real coding-agent sessions against datacenter hardware.&#10;It counts how many agents a system can serve while each one still gets at least 60 tokens per second.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Coding agents served per kW of accelerator power, each getting at least 60 tokens per second, from AgentPerf. The datacenter systems all run DeepSeek V4 Pro. The 3090 bar is my machine running Qwen3.8 27B, a much smaller model, with GPU power only, so the comparison favors my machine." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="agentsPerKw"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Coding agents served per kW of accelerator power, each getting at least 60 tokens per second, from AgentPerf. The datacenter systems all run DeepSeek V4 Pro. The 3090 bar is my machine running Qwen3.8 27B, a much smaller model, with GPU power only, so the comparison favors my machine.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;The rack of 36 GB300s serves 20 times more agents per kW than the 8-GPU H200 server.&#10;Part of that is newer chips, and part is software: NVIDIA tuned the B300 and GB300 setups itself, while Artificial Analysis configured the H200 one.&#10;The B300 and the GB300 share both the chip generation and the software.&#10;Most of the gap between those two bars comes from the rack itself: 36 GPUs on one fast interconnect keep more than a thousand agents in flight at once.&#10;My two 3090s serve one conversation at a time.&lt;/p&gt;&#10;&lt;h2 id="4-but-i-have-solar-panels"&gt;4. &amp;ldquo;But I have solar panels&amp;rdquo; &lt;a class="anchor" href="#4-but-i-have-solar-panels" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Solar power is not free.&#10;With net metering, every kWh my GPUs burn is a kWh that does not get credited at the retail price.&#10;Without net metering, it is a kWh I do not sell, unless the surplus would go to waste anyway, which is the free-power case below.&#10;And the GPUs also run at night.&lt;/p&gt;&#10;&lt;p&gt;But fine, say the electricity is free and the only cost is the hardware.&#10;I was lucky and bought my two 3090s for about $750 each,&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; and I write them off over three years.&#10;The GPUs only save money while they do work I would otherwise pay an API for, and while they sit idle they save nothing.&#10;So the question is how many hours a day they have to be busy before they pay for themselves.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;p&gt;To make this fair to open models, imagine an open model that is exactly as efficient as Luna: the same quality from the same number of tokens, sold at Luna&amp;rsquo;s price.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="How many hours a day my two $750 RTX 3090s have to be busy, every day for three years, before they cost less than a ZDR API. The host PC is not counted." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="breakEven"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;How many hours a day my two $750 RTX 3090s have to be busy, every day for three years, before they cost less than a ZDR API. The host PC is not counted.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;With free power, the GPUs pay for themselves if they are busy 4 hours a day, every day for three years.&#10;At 18 cents per kWh, they need 8.5.&#10;That uses what I paid for the cards; at today&amp;rsquo;s price of about $1,500 each, the 8.5 hours become 14.&lt;/p&gt;&#10;&lt;p&gt;And API prices keep falling.&#10;GPT-6 Luna costs 58% less per output token than GPT-5.6 Luna did in July.&#10;If the price halves again, no amount of use pays off at 18 cents per kWh.&#10;If it halves twice, the API costs less than my electricity alone.&lt;/p&gt;&#10;&lt;h2 id="5-but-my-mac-dgx-spark-or-ai-max-does-save-money"&gt;5. &amp;ldquo;But my Mac, DGX Spark, or AI Max does save money&amp;rdquo; &lt;a class="anchor" href="#5-but-my-mac-dgx-spark-or-ai-max-does-save-money" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Several readers told me their machines do save them money: a MacBook Pro with an M5 Max, an NVIDIA DGX Spark, and a computer with AMD&amp;rsquo;s Ryzen AI Max+ 395.&#10;If you would have bought the machine anyway, that is true, for the reason in section 2: their electricity costs little compared with the API.&#10;Counting the hardware is a different story.&lt;/p&gt;&#10;&lt;p&gt;With 128 GB of memory, all three can hold a better model than my 3090s: Qwen3.8-Flash-Next, a sparse model with 180 billion parameters, of which only 6 billion work on each token.&#10;It scores 39.8, close to GPT-6 Luna on its highest setting (38.1), although at the Q2 a reader uses on their Mac it probably loses a few points.&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt;&#10;So how many years would each machine have to run nonstop before it pays for itself?&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Years of nonstop generation before each machine pays for itself, compared with the most efficient API model at a similar score. Each machine runs the best model it can hold." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="paybackYears"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Years of nonstop generation before each machine pays for itself, compared with the most efficient API model at a similar score. Each machine runs the best model it can hold.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;Even with free power, the 128 GB machines need six to ten years.&#10;The AMD machine draws only about 120 W, but it is slow too: one benchmark run of Qwen3.8 27B takes it four and a half months, and almost as much energy as my 3090s.&#10;The RTX PRO 6000 runs the same model about three times as fast but costs about twice as much, so it needs six to nine years.&#10;My 3090s pay off in under two years with free power, which is why the 3090 is still the value king, but at 18 cents per kWh they never do: the electricity for one run already costs more than Luna charges for it.&lt;/p&gt;&#10;&lt;p&gt;Ten years is a long time in AI.&#10;Better and more efficient open models will run on the same machines, but the frontier moves at the same pace, and API prices keep falling.&#10;Hardware gets more efficient too, in datacenters and at home, so a machine bought today also ends up competing with next year&amp;rsquo;s machines.&#10;These numbers only show how far apart the two sides start.&lt;/p&gt;&#10;&lt;h2 id="6-the-bar-keeps-moving"&gt;6. The bar keeps moving &lt;a class="anchor" href="#6-the-bar-keeps-moving" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Section 4&amp;rsquo;s eight and a half hours a day would be easy for me: I run agents for longer than that, just not on Qwen.&#10;When Claude Opus 4.6 came out in February, I was perfectly happy with it.&#10;I thought it was all I would ever need, and I could not have imagined how much better models would get in half a year.&#10;Qwen3.8 27B now scores about the same as Opus 4.6, and I would no longer accept it for coding.&#10;Until GPT-6 Astra came out at the start of September, my go-to was GPT-5.6 Sol, which scores ten points higher than Qwen.&#10;I then used Astra until Claude Opus 5.5 came out less than three weeks later.&#10;Now I don&amp;rsquo;t even accept what was considered the best model a month ago.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Intelligence Index of the best model available on each date, of the models I used as my go-to, and of Qwen&amp;rsquo;s 27B models, which fit on a single 3090. Scores use the xhigh reasoning setting where a model has it." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="frontierGap"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Intelligence Index of the best model available on each date, of the models I used as my go-to, and of Qwen&amp;rsquo;s 27B models, which fit on a single 3090. Scores use the xhigh reasoning setting where a model has it.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;The models that fit on my 3090s keep improving, but they stay about half a year behind the frontier, and my standard moves with the frontier.&lt;/p&gt;&#10;&lt;h2 id="7-a-small-company-has-it-worse"&gt;7. A small company has it worse &lt;a class="anchor" href="#7-a-small-company-has-it-worse" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For me, this is a hobby, and a hobby is allowed to be inefficient.&#10;It gets worse once you try to use self-hosted models seriously, say for a team of ten developers.&lt;/p&gt;&#10;&lt;p&gt;If you stay fully self-hosted and want fast responses at peak, you have to buy hardware for the busiest hour of the year, not for the average one.&#10;The rest of the time, it sits idle.&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="An illustrative week of coding agents for a ten-person team. The hardware has to cover the busiest hour of the year, but a typical week uses only a fraction of it." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="peakLoad"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;An illustrative week of coding agents for a ten-person team. The hardware has to cover the busiest hour of the year, but a typical week uses only a fraction of it.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;In this made-up but realistic week, the team uses 17% of what it paid for, so every token costs about six times more than it would at full load.&#10;You also need a spare GPU for when one dies, and someone who gets paged when it does.&#10;You could queue work or send the peaks to an API, but then you are paying for an API anyway.&lt;/p&gt;&#10;&lt;p&gt;An API provider has the opposite situation.&#10;It serves thousands of customers across every time zone, so its load curve is much flatter than yours.&#10;It fills the nights with discounted batch jobs (Luna&amp;rsquo;s batch tier is half price) and training runs.&#10;And more concurrent requests mean bigger batches, which is where the efficiency from section 3 comes from.&lt;/p&gt;&#10;&lt;h2 id="8-they-lose-money-on-inference-so-prices-will-go-up"&gt;8. &amp;ldquo;They lose money on inference, so prices will go up&amp;rdquo; &lt;a class="anchor" href="#8-they-lose-money-on-inference-so-prices-will-go-up" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Another argument I hear is that API prices are subsidized by investors and will go up once those investors want their money back.&#10;I don&amp;rsquo;t think that holds for inference.&lt;/p&gt;&#10;&lt;p&gt;AgentPerf also reports how many tokens each GPU serves.&#10;On the GB300 rack, one GPU serving DeepSeek V4 Pro handles about 4 million output tokens and 530 million input tokens per hour.&#10;Most of that input is conversation history that coding agents send again with every step.&#10;Providers keep it in a cache and charge less than 1% of the normal input price for it.&lt;/p&gt;&#10;&lt;p&gt;At &lt;a href="https://artificialanalysis.ai/models/deepseek-v4-pro-0424" target="_blank" rel="noopener"&gt;DeepSeek V4 Pro&amp;rsquo;s list prices&lt;/a&gt;, that GPU brings in at least $5.70 per hour, even if every input token is billed at the cache price.&#10;If 5% of the input misses the cache, it brings in about $17.&#10;Renting a B200, the closest GPU with a &lt;a href="https://artificialanalysis.ai/hardware-inference-stack/datacenter" target="_blank" rel="noopener"&gt;published rental price&lt;/a&gt;, costs $3.50 to $5.90 per hour from smaller cloud providers, and that price already includes their profit.&lt;/p&gt;&#10;&lt;p&gt;So the tokens pay for the hardware that serves them, even in the worst case.&#10;This leaves out costs like staff and training, so it does not tell you whether a lab makes money overall.&lt;/p&gt;&#10;&lt;p&gt;The money goes to training, research, free users, and flat-rate subscriptions for heavy users like me.&#10;When I wrote that I used &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;$10,000 worth of API tokens for $200&lt;/a&gt;, that was list price, not what those tokens cost to serve.&lt;/p&gt;&#10;&lt;p&gt;And prices go down, not up.&#10;This is what the same level of intelligence has cost this year:&lt;/p&gt;&#10;&lt;figure class="plot-figure"&gt;&#10; &lt;div class="plot-container" role="img" aria-label="Output price per million tokens for models scoring between 30 and 35 on the Intelligence Index, by release date, as listed by Artificial Analysis. Log scale." data-plot-module="/post/self-hosting-ai-is-not-cheaper/plots.js" data-plot-name="priceDrop"&gt;&lt;/div&gt;&#10; &lt;figcaption&gt;Output price per million tokens for models scoring between 30 and 35 on the Intelligence Index, by release date, as listed by Artificial Analysis. Log scale.&lt;/figcaption&gt;&#10; &lt;noscript&gt;This chart needs JavaScript.&lt;/noscript&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/plot.7cb86dc2e3ef25b56bc93730b2620745a7f02b5715de87f94e61908f60e51690.js" integrity="sha256-fLhtwuPvJbVryTcwsmIHRafwK1cV3of5TmGQj2DlFpA=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;From Claude Opus 4.6 in February to GPT-6 Luna in September, the output price for this level of intelligence dropped by a factor of 50.&#10;Labs are in a race to the bottom on price.&lt;/p&gt;&#10;&lt;h2 id="9-but-they-sell-your-data"&gt;9. &amp;ldquo;But they sell your data&amp;rdquo; &lt;a class="anchor" href="#9-but-they-sell-your-data" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Some people say APIs are cheap because the provider trains on your data or sells it.&#10;That is why I only used prices from providers that OpenRouter lists as &lt;a href="https://openrouter.ai/docs/features/zdr" target="_blank" rel="noopener"&gt;zero data retention&lt;/a&gt; (ZDR).&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;Provider&lt;/th&gt;&#10;&lt;th&gt;ZDR&lt;/th&gt;&#10;&lt;th&gt;Output ($ per million tokens)&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;OpenAI&lt;/td&gt;&#10;&lt;td&gt;no&lt;/td&gt;&#10;&lt;td&gt;0.50&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;GPT-6 Luna&lt;/td&gt;&#10;&lt;td&gt;Azure&lt;/td&gt;&#10;&lt;td&gt;yes&lt;/td&gt;&#10;&lt;td&gt;0.50&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Qwen3.8 27B&lt;/td&gt;&#10;&lt;td&gt;AkashML (FP8)&lt;/td&gt;&#10;&lt;td&gt;yes&lt;/td&gt;&#10;&lt;td&gt;1.78&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Qwen3.8 27B&lt;/td&gt;&#10;&lt;td&gt;DeepInfra (full precision)&lt;/td&gt;&#10;&lt;td&gt;yes&lt;/td&gt;&#10;&lt;td&gt;1.88&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Qwen3.8 27B&lt;/td&gt;&#10;&lt;td&gt;Alibaba&lt;/td&gt;&#10;&lt;td&gt;no&lt;/td&gt;&#10;&lt;td&gt;2.55&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Qwen3.8 27B&lt;/td&gt;&#10;&lt;td&gt;Cloudflare&lt;/td&gt;&#10;&lt;td&gt;no&lt;/td&gt;&#10;&lt;td&gt;3.20&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Azure serves GPT-6 Luna with zero data retention at the same price as OpenAI.&#10;For Qwen3.8 27B, the cheapest endpoints are all ZDR, and the endpoints without ZDR cost more.&#10;The &lt;code&gt;:free&lt;/code&gt; tier is where you pay with your data.&lt;/p&gt;&#10;&lt;h2 id="10-where-self-hosting-does-win-the-same-model"&gt;10. Where self-hosting does win: the same model &lt;a class="anchor" href="#10-where-self-hosting-does-win-the-same-model" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;If you compare running Qwen3.8 27B yourself with paying for Qwen3.8 27B through an API, self-hosting wins.&lt;/p&gt;&#10;&lt;p&gt;DeepInfra, the cheapest full-precision ZDR provider, charges $619 for one benchmark run, while my electricity costs $83.&#10;That compares the full model with my quantized copy, so the gap overstates my advantage by whatever quantization costs in quality.&#10;My machine pays for itself if it is busy 2.4 hours a day, or 1.5 hours with free power (the first group in the chart in section 4).&lt;/p&gt;&#10;&lt;p&gt;Providers charge a lot for a dense 27B model, because every token runs through all 27 billion parameters.&#10;Sparse open models, which use only a small part of their weights for each token, can be much cheaper to serve.&#10;If you specifically need Qwen and use it heavily, self-hosting it pays off.&#10;But you don&amp;rsquo;t need Qwen to get answers of Qwen&amp;rsquo;s quality.&#10;Luna gives you those for $67, with zero data retention.&lt;/p&gt;&#10;&lt;h2 id="11-so-why-do-i-do-it"&gt;11. So why do I do it? &lt;a class="anchor" href="#11-so-why-do-i-do-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;First, it is fun.&#10;I like knowing how the whole stack works, from the drivers in &lt;a href="https://www.nijho.lt/post/llama-nixos/"&gt;my NixOS configuration&lt;/a&gt; to how the layers are split between my two GPUs.&lt;/p&gt;&#10;&lt;p&gt;Second, nobody can take it away.&#10;Artificial Analysis already lists GPT-5.6 Luna as deprecated, less than three months after its release.&#10;My Qwen weights will still be on my disk in ten years, and no company can change their license or &lt;a href="https://www.nijho.lt/post/truenas-to-nixos/"&gt;close their build system&lt;/a&gt; on me.&lt;/p&gt;&#10;&lt;p&gt;Third, some data should not leave my house.&#10;I would never send 200 GB of email, my messages, and my location history to an API, zero data retention or not.&#10;That is what &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;my local AI projects&lt;/a&gt; are for.&lt;/p&gt;&#10;&lt;p&gt;Those are good reasons.&#10;Saving money is not one of them.&lt;/p&gt;&#10;&lt;h2 id="appendix-all-assumptions"&gt;Appendix: all assumptions &lt;a class="anchor" href="#appendix-all-assumptions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;Show all assumptions, and which side each one favors&lt;/summary&gt;&#10; &lt;p&gt;&lt;strong&gt;Assumptions that favor self-hosting&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The host PC around the GPUs is not counted, and my 3090s count at the $750 each I paid, not the $1,500 they sell for today.&lt;/li&gt;&#10;&lt;li&gt;Quantized local copies get the score Artificial Analysis measured through an API, with no penalty for quantization.&lt;/li&gt;&#10;&lt;li&gt;The payback chart assumes each machine is busy 24 hours a day, with no idle time.&lt;/li&gt;&#10;&lt;li&gt;API prices stay where they are, although GPT-6 Luna&amp;rsquo;s output price is 58% lower than GPT-5.6 Luna&amp;rsquo;s, two and a half months earlier.&lt;/li&gt;&#10;&lt;li&gt;My time to set up and maintain the machine is not counted.&lt;/li&gt;&#10;&lt;li&gt;Every machine also gets a case with free electricity.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Assumptions that favor the API&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The example electricity price is 18 cents per kWh, and some people pay less.&lt;/li&gt;&#10;&lt;li&gt;My machine serves one request at a time; batching several requests could raise its total throughput.&lt;/li&gt;&#10;&lt;li&gt;The hardware has no resale value at the end.&lt;/li&gt;&#10;&lt;li&gt;Waste heat that replaces heating in winter is not counted.&lt;/li&gt;&#10;&lt;li&gt;API outages, rate limits, and deprecated models are not counted.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Inputs&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Benchmark: the Artificial Analysis Intelligence Index on September 30, 2026, at the xhigh reasoning setting, or the highest setting where noted. Its token counts per model are the unit of work.&lt;/li&gt;&#10;&lt;li&gt;API prices: the cheapest zero-data-retention endpoints on OpenRouter, with cached input billed at the cache price.&lt;/li&gt;&#10;&lt;li&gt;My machine: two RTX 3090s capped at 270 W, running Qwen3.8 27B in vLLM with AutoRound INT4 and DFlash2. Measured: 107 tokens per second, 1,600 tokens per second of prefill, and 540 W for both GPUs. Estimated: about 700 W for the whole machine under load and 150 W idle.&lt;/li&gt;&#10;&lt;li&gt;Break-even: the cards are written off over three years; busy hours save what the API would charge minus the electricity, and idle hours cost the idle power.&lt;/li&gt;&#10;&lt;li&gt;Other machines: prices, power, and speeds as in the footnotes. The M5 Max and RTX PRO 6000 numbers come from readers, and the DGX Spark and AMD Ryzen AI Max+ 395 speeds are estimated from Artificial Analysis measurements.&lt;/li&gt;&#10;&lt;li&gt;Datacenter: AgentPerf measures accelerator power only, and the B200 rental price stands in for the GB300, which has no published rental price.&lt;/li&gt;&#10;&lt;li&gt;Small company: the peak-load week is made up.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;For each model, Artificial Analysis publishes how many input and output tokens the whole index took, and how many of the input tokens were read from a cache. I multiplied those by each provider&amp;rsquo;s prices, with cached input at the cache price. For Qwen that is 198 million output tokens and 820 million input tokens that miss the cache. For the bars at home, the same tokens divided by the machine&amp;rsquo;s speed give the run time, with the uncached input processed at the 1,600 tokens per second I measured on my 3090s and an estimated 2,000 on the RTX PRO 6000, and the run time times the machine&amp;rsquo;s power and the price per kWh gives the electricity.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;The RTX PRO 6000 has the same memory bandwidth as an RTX 5090, and at full precision every token reads three times as many bytes as in Q4_K_M. Scaling Artificial Analysis&amp;rsquo;s 5090 measurement gives about 48 tokens per second. I assume 600 W for the whole machine.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;I measured the model as I normally run it: vLLM with an AutoRound INT4 quant and DFlash2 speculative decoding, split across both cards. Single 1,500-token answers came out at 105 to 109 tokens per second, and reading a 22,000-token prompt ran at 1,600 tokens per second. Sending 2, 4, or 8 requests at once did not raise the total above about 110 tokens per second. The two GPUs drew 540 W together, each at its 270 W power limit; the 700 W adds my estimate for the rest of the machine, since I could not measure the CPU. The setup follows the recipes from &lt;a href="https://github.com/noonghunna/club-3090" target="_blank" rel="noopener"&gt;club-3090&lt;/a&gt;, a community project that tunes LLM serving for RTX 3090s and publishes measured numbers, so I think it is about as fast as these cards get. Its benchmarks for this configuration at a similar power limit match mine: about 110 tokens per second for prose, and up to about 195 for code, where speculative decoding guesses more tokens right. Most of Qwen&amp;rsquo;s output on the benchmark is reasoning, which runs at the prose speed.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;The stock limit is 350 W. My cards sit in a &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;normal desktop case with normal fans&lt;/a&gt;, and I worry that running both at full power for hours would shorten their life. The cap is &lt;a href="https://github.com/basnijholt/dotfiles/blob/e63a3f341ff36b7b57bf31361c2844e1d8b78e95/configs/nixos/hosts/pc/nvidia-undervolt.nix#L1-L7" target="_blank" rel="noopener"&gt;a few lines in my NixOS configuration&lt;/a&gt;, and measurements from Puget Systems and r/LocalLLaMA put a 3090 at about 95% of its speed at 270 W. That is 77% of the power for 95% of the speed, so the cap also lowers my electricity cost per token.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;The 3090 is still the value king for VRAM per dollar, and $750 badly understates what mine are worth. That is what I paid more than a year ago; today a used 3090 sells for about $1,500. Even at that price it costs $62.50 per GB of VRAM, the same as an RTX 5090 at its $2,000 launch price, which is not what a 5090 sells for today. The right number for this calculation is what I could sell my cards for, and at $1,500 each the break-even points rise by about two thirds: at 18 cents per kWh, the same-model case moves from 2.4 to 4.0 hours per day, and the Luna-efficient case from 8.5 to 14.2 hours per day.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;While the cards are busy, they save what the API would have charged for the same work, minus the electricity at 700 W. While they are idle, the machine still draws about 150 W, of which the two GPUs with the model loaded take 85 W. The break-even point is the number of busy hours per day at which those savings cover the price of the cards, written off over three years, plus the idle power.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:7"&gt;&#10;&lt;p&gt;The M5 Max numbers come from the reader: Qwen3.8-Flash-Next at Q2 (about 2.7 bits per weight), about 45 tokens per second, 1,250 tokens per second of prefill, and about 90 W, on a $7,000 laptop. The RTX PRO 6000 numbers come from another reader, &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1ww2jsu/comment/pdhs3ea/" target="_blank" rel="noopener"&gt;u/TheAILegend&lt;/a&gt;, who measured Qwen3.8-Flash-Next at NVFP4 on theirs. For a single request, it stays at about 150 tokens per second from 4,000 to 200,000 tokens of context, with about 10,000 tokens per second of prefill and 266 W for the GPU plus about 160 W for the rest of the PC. With 32 short requests in parallel, the card reaches 590 tokens per second and pays off in about two years, which works for short batch jobs. At the long contexts of this benchmark, parallel requests are slower than one, so the chart uses the single-request speed. I use $15,000, the middle of the card&amp;rsquo;s price range. The DGX Spark and the AMD machine run Qwen3.8-Flash-Next at about 4.5 bits. For their speed, I took Artificial Analysis&amp;rsquo;s measurements of Qwen3.8 27B on each machine and doubled them, because the owner of the AMD machine finds Qwen3.8-Flash-Next about twice as fast as Qwen3.8 27B. That gives about 55 tokens per second on the DGX Spark ($6,950, about 150 W) and 47 on the AMD Ryzen AI Max+ 395 ($4,000, the price Artificial Analysis lists, about 120 W). All of them are compared with GPT-6 Luna on its highest setting, which runs the whole benchmark for $122. The 3090s run Qwen3.8 27B, as in the rest of this post, and are compared with Luna on xhigh. Artificial Analysis measured Qwen3.8 27B on the AMD machine at 23 tokens per second, so one benchmark run takes it 134 days and about 390 kWh, against about 460 kWh on my 3090s. Running Qwen3.8-Flash-Next on the 3090s with CPU expert offload, which club-3090 measured at 37 tokens per second, does not change their result: one run then takes 82 days, and at 18 cents per kWh its electricity costs more than Luna&amp;rsquo;s $122 unless the whole machine draws less than about 350 W.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Slowly, then all at once: AI agents that know how a company works</title><link>https://www.nijho.lt/post/mindroom-at-ionq/</link><pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/mindroom-at-ionq/</guid><description>&lt;p&gt;IonQ is the world&amp;rsquo;s leading vertically integrated, full-stack quantum platform company.&#10;We build quantum computers, quantum security solutions, quantum networks, and quantum sensors, and we fabricate our own quantum chips.&#10;That means thousands of people working on some of the hardest physics and engineering problems the world faces.&#10;Much of what we know is not written down in one place.&#10;Where a program actually stands lives in Slack threads, tickets, commits, documents, and meetings.&#10;If you want the real picture, somebody has to read all of it, or you ask a colleague who has probably explained it five times already.&#10;And as IonQ grows, everybody is new to something.&#10;Someone who just joined through an acquisition is new to all of it, and after three years here, I still could not explain what half of our programs do.&lt;/p&gt;&#10;&lt;div class="svg-bleed" role="img" aria-label="The MindRoom cube and the IonQ logo, connected by a wave that collapses and lights up both at once"&gt;&lt;div class="svg-bleed-stage"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-338 -338 2900 1620"&gt;&lt;title&gt;Entanglement: a shared wave function collapses and both cores light up at once&lt;/title&gt;&lt;defs&gt;&#10;&lt;mask id="outside"&gt;&lt;rect x="0" y="0" width="2000" height="2000" fill="white"/&gt;&lt;polygon points="512,265 666,361 666,546 512,643 358,546 358,361" fill="black"/&gt;&lt;/mask&gt;&#10;&lt;clipPath id="hex"&gt;&lt;polygon points="512,265 666,361 666,546 512,643 358,546 358,361"/&gt;&lt;/clipPath&gt;&#10;&lt;radialGradient id="gold"&gt;&lt;stop offset="0" stop-color="#fff6c8" stop-opacity="1"/&gt;&lt;stop offset=".45" stop-color="#ffd86b" stop-opacity=".55"/&gt;&lt;stop offset="1" stop-color="#ffb000" stop-opacity="0"/&gt;&lt;/radialGradient&gt;&#10;&lt;radialGradient id="orange"&gt;&lt;stop offset="0" stop-color="#fff1e0" stop-opacity="1"/&gt;&lt;stop offset=".45" stop-color="#F58220" stop-opacity=".55"/&gt;&lt;stop offset="1" stop-color="#F05323" stop-opacity="0"/&gt;&lt;/radialGradient&gt;&#10;&lt;filter id="blur6"&gt;&lt;feGaussianBlur stdDeviation="6"/&gt;&lt;/filter&gt;&#10;&lt;/defs&gt;&#10;&lt;g transform="translate(-40,0)"&gt;&lt;image href="mindroom-mark.svg" x="152" y="112" width="720" height="720" mask="url(#outside)"/&gt;&lt;image href="mindroom-mark.svg" x="152" y="112" width="720" height="720" clip-path="url(#hex)"/&gt;&lt;/g&gt;&#10;&lt;g transform="translate(1200,300) scale(1.3)"&gt;&#10;&lt;g clip-path="url(#clip0_13003_138)"&gt;&#10;&lt;path d="M268.614 178.61V60.2665H295.321V178.61H268.614Z" class="bleed-ink"/&gt;&#10;&lt;path d="M372.268 57.7626C405.484 57.7626 433.693 81.9652 433.693 119.522C433.693 156.911 405.484 181.114 372.268 181.114C338.885 181.114 310.676 156.911 310.676 119.522C310.676 81.9653 338.885 57.7626 372.268 57.7626ZM372.268 155.075C388.625 155.075 406.319 144.058 406.319 119.355C406.319 94.6518 388.625 83.4677 372.268 83.4677C355.744 83.4677 338.05 94.6513 338.05 119.355C338.05 144.058 355.744 155.075 372.268 155.075Z" class="bleed-ink"/&gt;&#10;&lt;path d="M524.163 178.61L475.424 100.827V178.61H449.218V60.2665H481.266L525.665 132.207V60.2665H552.038V178.61H524.163Z" class="bleed-ink"/&gt;&#10;&lt;path d="M628.988 57.7626C662.205 57.7626 690.414 81.9652 690.414 119.522C690.414 135.378 685.406 148.732 677.061 158.913L691.582 174.771L674.223 189.459L659.701 173.435C650.687 178.443 640.005 181.114 628.988 181.114C595.605 181.114 567.396 156.911 567.396 119.522C567.396 81.9653 595.605 57.7626 628.988 57.7626ZM628.988 155.075C632.994 155.075 637.001 154.407 641.007 153.072L623.647 134.043L641.174 119.355L658.533 138.383C661.37 133.208 663.039 127.033 663.039 119.355C663.039 94.6513 645.347 83.4677 628.988 83.4677C612.464 83.4677 594.771 94.6513 594.771 119.355C594.771 144.058 612.464 155.075 628.988 155.075Z" class="bleed-ink"/&gt;&#10;&lt;path d="M104.509 29.2536L183.681 74.9639L209.016 60.3365L104.509 0L0.000976562 60.3371L25.3366 74.9638L104.509 29.2536Z" fill="#D4D4D7"/&gt;&#10;&lt;path d="M25.3359 74.9638L25.3364 166.385L33.4419 161.704L50.6709 151.756L50.6714 89.5913L104.508 58.5079L104.509 38.6146L104.508 29.2526L25.3359 74.9638Z" fill="#F58220"/&gt;&#10;&lt;path d="M183.681 74.9639L183.68 166.384L175.574 161.704L209.016 181.014L209.016 60.3365L183.681 74.9639Z" fill="#B7B9BA"/&gt;&#10;&lt;path d="M183.681 74.9639L104.508 29.2526L104.508 38.6146L104.508 58.5079L158.347 89.5913V151.756L175.575 161.704L183.681 166.384L183.681 74.9639Z" fill="#F05323"/&gt;&#10;&lt;path d="M158.348 181.01L158.346 210.287L183.681 224.956L183.682 195.637L158.348 181.01Z" fill="#929293"/&gt;&#10;&lt;path d="M33.4435 161.703L25.337 166.385L25.3365 74.9639L0.0009 60.3372L0 181.011L104.509 241.349L104.508 212.095L25.337 166.385L33.4435 161.703Z" fill="#929293"/&gt;&#10;&lt;path d="M104.508 241.349L158.345 210.287L158.347 181.01L104.508 212.094L104.508 241.349Z" fill="#B7B9BA"/&gt;&#10;&lt;path d="M183.681 166.384L176.525 162.253L158.347 151.756L104.508 182.84L50.6714 151.756L33.4429 161.702L25.3369 166.385L104.508 212.094L158.348 181.01L183.682 195.637L209.016 181.014L183.681 166.384Z" fill="#FDB515"/&gt;&#10;&lt;path d="M209.016 181.014L183.682 195.637L183.681 224.956L209.016 210.329L209.016 181.014Z" fill="#B7B9BA"/&gt;&#10;&lt;/g&gt;&#10;&lt;defs&gt;&#10;&lt;clipPath id="clip0_13003_138"&gt;&#10;&lt;rect width="691.6" height="241.3" fill="white"/&gt;&#10;&lt;/clipPath&gt;&#10;&lt;/defs&gt;&#10;&lt;/g&gt;&lt;/svg&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="790 290 450 330" aria-hidden="true" style="position:absolute;left:38.897%;top:38.765%;width:15.517%;height:20.370%;overflow:visible;will-change:transform"&gt;&#10;&lt;linearGradient id="wg" x1="830" x2="1195" gradientUnits="userSpaceOnUse"&gt;&lt;stop offset="0" stop-color="#ffd86b"/&gt;&lt;stop offset="1" stop-color="#F58220"/&gt;&lt;/linearGradient&gt;&#10;&lt;path d="M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z" fill="url(#wg)" opacity=".18"&gt;&lt;animate attributeName="d" dur="10.0s" repeatCount="indefinite" calcMode="linear" keyTimes="0.0000;0.0275;0.0450;0.0625;0.0800;0.0975;0.1150;0.1325;0.1500;0.1565;0.1629;0.1694;0.1758;0.1823;0.1888;0.1952;0.2017;0.2081;0.2146;0.2210;0.2275;0.2340;0.2404;0.2469;0.2533;0.2598;0.2663;0.2727;0.2792;0.2856;0.2921;0.2985;0.3050;0.3115;0.3179;0.3244;0.3308;0.3373;0.3438;0.3502;0.3567;0.3631;0.3696;0.3760;0.3825;0.3890;0.3954;0.4019;0.4083;0.4148;0.4213;0.4277;0.4342;0.4406;0.4471;0.4535;0.4600;0.4650;0.4700;0.4750;0.4800;0.4850;0.4900;0.5000;0.5275;0.5450;0.5625;0.5800;0.5975;0.6150;0.6325;0.6500;0.6565;0.6629;0.6694;0.6758;0.6823;0.6887;0.6952;0.7017;0.7081;0.7146;0.7210;0.7275;0.7340;0.7404;0.7469;0.7533;0.7598;0.7663;0.7727;0.7792;0.7856;0.7921;0.7985;0.8050;0.8115;0.8179;0.8244;0.8308;0.8373;0.8438;0.8502;0.8567;0.8631;0.8696;0.8760;0.8825;0.8890;0.8954;0.9019;0.9083;0.9148;0.9213;0.9277;0.9342;0.9406;0.9471;0.9535;0.9600;0.9650;0.9700;0.9750;0.9800;0.9850;0.9900;1" values="M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,453 L 858,453 L 861,453 L 864,453 L 867,453 L 870,453 L 873,453 L 876,453 L 879,452 L 882,452 L 885,452 L 888,452 L 891,452 L 894,452 L 897,451 L 901,451 L 904,451 L 907,451 L 910,451 L 913,451 L 916,450 L 919,450 L 922,450 L 925,450 L 928,450 L 931,450 L 934,449 L 937,449 L 940,449 L 943,449 L 947,449 L 950,449 L 953,449 L 956,448 L 959,448 L 962,448 L 965,448 L 968,448 L 971,448 L 974,448 L 977,448 L 980,448 L 983,448 L 986,448 L 989,447 L 993,447 L 996,447 L 999,447 L 1002,447 L 1005,447 L 1008,447 L 1011,447 L 1014,447 L 1017,447 L 1020,447 L 1023,447 L 1026,447 L 1029,447 L 1032,447 L 1036,447 L 1039,448 L 1042,448 L 1045,448 L 1048,448 L 1051,448 L 1054,448 L 1057,448 L 1060,448 L 1063,448 L 1066,448 L 1069,448 L 1072,449 L 1075,449 L 1078,449 L 1082,449 L 1085,449 L 1088,449 L 1091,449 L 1094,450 L 1097,450 L 1100,450 L 1103,450 L 1106,450 L 1109,450 L 1112,451 L 1115,451 L 1118,451 L 1121,451 L 1124,451 L 1128,451 L 1131,452 L 1134,452 L 1137,452 L 1140,452 L 1143,452 L 1146,452 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,453 L 1164,453 L 1167,453 L 1170,453 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,455 L 1167,455 L 1164,455 L 1161,455 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,456 L 1143,456 L 1140,456 L 1137,456 L 1134,456 L 1131,456 L 1128,457 L 1124,457 L 1121,457 L 1118,457 L 1115,457 L 1112,457 L 1109,458 L 1106,458 L 1103,458 L 1100,458 L 1097,458 L 1094,458 L 1091,459 L 1088,459 L 1085,459 L 1082,459 L 1078,459 L 1075,459 L 1072,459 L 1069,460 L 1066,460 L 1063,460 L 1060,460 L 1057,460 L 1054,460 L 1051,460 L 1048,460 L 1045,460 L 1042,460 L 1039,460 L 1036,461 L 1032,461 L 1029,461 L 1026,461 L 1023,461 L 1020,461 L 1017,461 L 1014,461 L 1011,461 L 1008,461 L 1005,461 L 1002,461 L 999,461 L 996,461 L 993,461 L 989,461 L 986,460 L 983,460 L 980,460 L 977,460 L 974,460 L 971,460 L 968,460 L 965,460 L 962,460 L 959,460 L 956,460 L 953,459 L 950,459 L 947,459 L 943,459 L 940,459 L 937,459 L 934,459 L 931,458 L 928,458 L 925,458 L 922,458 L 919,458 L 916,458 L 913,457 L 910,457 L 907,457 L 904,457 L 901,457 L 897,457 L 894,456 L 891,456 L 888,456 L 885,456 L 882,456 L 879,456 L 876,455 L 873,455 L 870,455 L 867,455 L 864,455 L 861,455 L 858,455 L 855,455 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,453 L 864,453 L 867,453 L 870,452 L 873,452 L 876,451 L 879,451 L 882,450 L 885,450 L 888,450 L 891,449 L 894,449 L 897,449 L 901,448 L 904,448 L 907,448 L 910,447 L 913,447 L 916,447 L 919,446 L 922,446 L 925,446 L 928,446 L 931,445 L 934,445 L 937,445 L 940,444 L 943,444 L 947,444 L 950,443 L 953,443 L 956,443 L 959,443 L 962,442 L 965,442 L 968,442 L 971,442 L 974,442 L 977,441 L 980,441 L 983,441 L 986,441 L 989,441 L 993,441 L 996,441 L 999,441 L 1002,441 L 1005,441 L 1008,441 L 1011,441 L 1014,441 L 1017,441 L 1020,441 L 1023,441 L 1026,441 L 1029,441 L 1032,441 L 1036,441 L 1039,441 L 1042,441 L 1045,441 L 1048,441 L 1051,442 L 1054,442 L 1057,442 L 1060,442 L 1063,442 L 1066,443 L 1069,443 L 1072,443 L 1075,443 L 1078,444 L 1082,444 L 1085,444 L 1088,445 L 1091,445 L 1094,445 L 1097,446 L 1100,446 L 1103,446 L 1106,446 L 1109,447 L 1112,447 L 1115,447 L 1118,448 L 1121,448 L 1124,448 L 1128,449 L 1131,449 L 1134,449 L 1137,450 L 1140,450 L 1143,450 L 1146,451 L 1149,451 L 1152,452 L 1155,452 L 1158,453 L 1161,453 L 1164,453 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,455 L 1161,455 L 1158,455 L 1155,456 L 1152,456 L 1149,457 L 1146,457 L 1143,458 L 1140,458 L 1137,458 L 1134,459 L 1131,459 L 1128,459 L 1124,460 L 1121,460 L 1118,460 L 1115,461 L 1112,461 L 1109,461 L 1106,462 L 1103,462 L 1100,462 L 1097,462 L 1094,463 L 1091,463 L 1088,463 L 1085,464 L 1082,464 L 1078,464 L 1075,465 L 1072,465 L 1069,465 L 1066,465 L 1063,466 L 1060,466 L 1057,466 L 1054,466 L 1051,466 L 1048,467 L 1045,467 L 1042,467 L 1039,467 L 1036,467 L 1032,467 L 1029,467 L 1026,467 L 1023,467 L 1020,467 L 1017,467 L 1014,467 L 1011,467 L 1008,467 L 1005,467 L 1002,467 L 999,467 L 996,467 L 993,467 L 989,467 L 986,467 L 983,467 L 980,467 L 977,467 L 974,466 L 971,466 L 968,466 L 965,466 L 962,466 L 959,465 L 956,465 L 953,465 L 950,465 L 947,464 L 943,464 L 940,464 L 937,463 L 934,463 L 931,463 L 928,462 L 925,462 L 922,462 L 919,462 L 916,461 L 913,461 L 910,461 L 907,460 L 904,460 L 901,460 L 897,459 L 894,459 L 891,459 L 888,458 L 885,458 L 882,458 L 879,457 L 876,457 L 873,456 L 870,456 L 867,455 L 864,455 L 861,455 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,453 L 867,453 L 870,453 L 873,452 L 876,452 L 879,452 L 882,451 L 885,450 L 888,449 L 891,449 L 894,448 L 897,446 L 901,446 L 904,445 L 907,445 L 910,444 L 913,444 L 916,443 L 919,443 L 922,442 L 925,442 L 928,441 L 931,441 L 934,440 L 937,440 L 940,439 L 943,439 L 947,439 L 950,438 L 953,438 L 956,437 L 959,437 L 962,437 L 965,436 L 968,436 L 971,436 L 974,435 L 977,435 L 980,435 L 983,435 L 986,435 L 989,434 L 993,434 L 996,434 L 999,434 L 1002,434 L 1005,434 L 1008,434 L 1011,434 L 1014,434 L 1017,434 L 1020,434 L 1023,434 L 1026,434 L 1029,434 L 1032,434 L 1036,434 L 1039,435 L 1042,435 L 1045,435 L 1048,435 L 1051,435 L 1054,436 L 1057,436 L 1060,436 L 1063,437 L 1066,437 L 1069,437 L 1072,438 L 1075,438 L 1078,439 L 1082,439 L 1085,439 L 1088,440 L 1091,440 L 1094,441 L 1097,441 L 1100,442 L 1103,442 L 1106,443 L 1109,443 L 1112,444 L 1115,444 L 1118,445 L 1121,445 L 1124,446 L 1128,446 L 1131,448 L 1134,449 L 1137,449 L 1140,450 L 1143,451 L 1146,452 L 1149,452 L 1152,452 L 1155,453 L 1158,453 L 1161,453 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,455 L 1158,455 L 1155,455 L 1152,456 L 1149,456 L 1146,456 L 1143,457 L 1140,458 L 1137,459 L 1134,459 L 1131,460 L 1128,462 L 1124,462 L 1121,463 L 1118,463 L 1115,464 L 1112,464 L 1109,465 L 1106,465 L 1103,466 L 1100,466 L 1097,467 L 1094,467 L 1091,468 L 1088,468 L 1085,469 L 1082,469 L 1078,469 L 1075,470 L 1072,470 L 1069,471 L 1066,471 L 1063,471 L 1060,472 L 1057,472 L 1054,472 L 1051,473 L 1048,473 L 1045,473 L 1042,473 L 1039,473 L 1036,474 L 1032,474 L 1029,474 L 1026,474 L 1023,474 L 1020,474 L 1017,474 L 1014,474 L 1011,474 L 1008,474 L 1005,474 L 1002,474 L 999,474 L 996,474 L 993,474 L 989,474 L 986,473 L 983,473 L 980,473 L 977,473 L 974,473 L 971,472 L 968,472 L 965,472 L 962,471 L 959,471 L 956,471 L 953,470 L 950,470 L 947,469 L 943,469 L 940,469 L 937,468 L 934,468 L 931,467 L 928,467 L 925,466 L 922,466 L 919,465 L 916,465 L 913,464 L 910,464 L 907,463 L 904,463 L 901,462 L 897,462 L 894,460 L 891,459 L 888,459 L 885,458 L 882,457 L 879,456 L 876,456 L 873,456 L 870,455 L 867,455 L 864,455 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,453 L 870,453 L 873,453 L 876,453 L 879,452 L 882,452 L 885,451 L 888,451 L 891,450 L 894,449 L 897,448 L 901,447 L 904,446 L 907,445 L 910,444 L 913,443 L 916,441 L 919,440 L 922,438 L 925,438 L 928,437 L 931,436 L 934,436 L 937,435 L 940,435 L 943,434 L 947,433 L 950,433 L 953,432 L 956,432 L 959,431 L 962,431 L 965,430 L 968,430 L 971,430 L 974,429 L 977,429 L 980,429 L 983,428 L 986,428 L 989,428 L 993,428 L 996,427 L 999,427 L 1002,427 L 1005,427 L 1008,427 L 1011,427 L 1014,427 L 1017,427 L 1020,427 L 1023,427 L 1026,427 L 1029,427 L 1032,428 L 1036,428 L 1039,428 L 1042,428 L 1045,429 L 1048,429 L 1051,429 L 1054,430 L 1057,430 L 1060,430 L 1063,431 L 1066,431 L 1069,432 L 1072,432 L 1075,433 L 1078,433 L 1082,434 L 1085,435 L 1088,435 L 1091,436 L 1094,436 L 1097,437 L 1100,438 L 1103,438 L 1106,440 L 1109,441 L 1112,443 L 1115,444 L 1118,445 L 1121,446 L 1124,447 L 1128,448 L 1131,449 L 1134,450 L 1137,451 L 1140,451 L 1143,452 L 1146,452 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,456 L 1143,456 L 1140,457 L 1137,457 L 1134,458 L 1131,459 L 1128,460 L 1124,461 L 1121,462 L 1118,463 L 1115,464 L 1112,465 L 1109,467 L 1106,468 L 1103,470 L 1100,470 L 1097,471 L 1094,472 L 1091,472 L 1088,473 L 1085,473 L 1082,474 L 1078,475 L 1075,475 L 1072,476 L 1069,476 L 1066,477 L 1063,477 L 1060,478 L 1057,478 L 1054,478 L 1051,479 L 1048,479 L 1045,479 L 1042,480 L 1039,480 L 1036,480 L 1032,480 L 1029,481 L 1026,481 L 1023,481 L 1020,481 L 1017,481 L 1014,481 L 1011,481 L 1008,481 L 1005,481 L 1002,481 L 999,481 L 996,481 L 993,480 L 989,480 L 986,480 L 983,480 L 980,479 L 977,479 L 974,479 L 971,478 L 968,478 L 965,478 L 962,477 L 959,477 L 956,476 L 953,476 L 950,475 L 947,475 L 943,474 L 940,473 L 937,473 L 934,472 L 931,472 L 928,471 L 925,470 L 922,470 L 919,468 L 916,467 L 913,465 L 910,464 L 907,463 L 904,462 L 901,461 L 897,460 L 894,459 L 891,458 L 888,457 L 885,457 L 882,456 L 879,456 L 876,455 L 873,455 L 870,455 L 867,455 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,453 L 870,453 L 873,453 L 876,453 L 879,453 L 882,452 L 885,452 L 888,451 L 891,451 L 894,450 L 897,449 L 901,449 L 904,448 L 907,447 L 910,446 L 913,445 L 916,444 L 919,443 L 922,441 L 925,440 L 928,438 L 931,437 L 934,435 L 937,433 L 940,431 L 943,429 L 947,428 L 950,428 L 953,427 L 956,426 L 959,426 L 962,425 L 965,425 L 968,424 L 971,424 L 974,423 L 977,423 L 980,422 L 983,422 L 986,422 L 989,421 L 993,421 L 996,421 L 999,421 L 1002,420 L 1005,420 L 1008,420 L 1011,420 L 1014,420 L 1017,420 L 1020,420 L 1023,420 L 1026,421 L 1029,421 L 1032,421 L 1036,421 L 1039,422 L 1042,422 L 1045,422 L 1048,423 L 1051,423 L 1054,424 L 1057,424 L 1060,425 L 1063,425 L 1066,426 L 1069,426 L 1072,427 L 1075,428 L 1078,428 L 1082,429 L 1085,431 L 1088,433 L 1091,435 L 1094,437 L 1097,438 L 1100,440 L 1103,441 L 1106,443 L 1109,444 L 1112,445 L 1115,446 L 1118,447 L 1121,448 L 1124,449 L 1128,449 L 1131,450 L 1134,451 L 1137,451 L 1140,452 L 1143,452 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,456 L 1140,456 L 1137,457 L 1134,457 L 1131,458 L 1128,459 L 1124,459 L 1121,460 L 1118,461 L 1115,462 L 1112,463 L 1109,464 L 1106,465 L 1103,467 L 1100,468 L 1097,470 L 1094,471 L 1091,473 L 1088,475 L 1085,477 L 1082,479 L 1078,480 L 1075,480 L 1072,481 L 1069,482 L 1066,482 L 1063,483 L 1060,483 L 1057,484 L 1054,484 L 1051,485 L 1048,485 L 1045,486 L 1042,486 L 1039,486 L 1036,487 L 1032,487 L 1029,487 L 1026,487 L 1023,488 L 1020,488 L 1017,488 L 1014,488 L 1011,488 L 1008,488 L 1005,488 L 1002,488 L 999,487 L 996,487 L 993,487 L 989,487 L 986,486 L 983,486 L 980,486 L 977,485 L 974,485 L 971,484 L 968,484 L 965,483 L 962,483 L 959,482 L 956,482 L 953,481 L 950,480 L 947,480 L 943,479 L 940,477 L 937,475 L 934,473 L 931,471 L 928,470 L 925,468 L 922,467 L 919,465 L 916,464 L 913,463 L 910,462 L 907,461 L 904,460 L 901,459 L 897,459 L 894,458 L 891,457 L 888,457 L 885,456 L 882,456 L 879,455 L 876,455 L 873,455 L 870,455 L 867,455 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,453 L 873,453 L 876,453 L 879,453 L 882,452 L 885,452 L 888,452 L 891,451 L 894,451 L 897,450 L 901,450 L 904,449 L 907,448 L 910,447 L 913,446 L 916,446 L 919,444 L 922,443 L 925,442 L 928,441 L 931,440 L 934,438 L 937,437 L 940,435 L 943,433 L 947,432 L 950,430 L 953,428 L 956,426 L 959,424 L 962,422 L 965,420 L 968,418 L 971,417 L 974,417 L 977,416 L 980,416 L 983,416 L 986,415 L 989,415 L 993,414 L 996,414 L 999,414 L 1002,414 L 1005,414 L 1008,414 L 1011,414 L 1014,414 L 1017,414 L 1020,414 L 1023,414 L 1026,414 L 1029,414 L 1032,414 L 1036,415 L 1039,415 L 1042,416 L 1045,416 L 1048,416 L 1051,417 L 1054,417 L 1057,418 L 1060,420 L 1063,422 L 1066,424 L 1069,426 L 1072,428 L 1075,430 L 1078,432 L 1082,433 L 1085,435 L 1088,437 L 1091,438 L 1094,440 L 1097,441 L 1100,442 L 1103,443 L 1106,444 L 1109,446 L 1112,446 L 1115,447 L 1118,448 L 1121,449 L 1124,450 L 1128,450 L 1131,451 L 1134,451 L 1137,452 L 1140,452 L 1143,452 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,456 L 1140,456 L 1137,456 L 1134,457 L 1131,457 L 1128,458 L 1124,458 L 1121,459 L 1118,460 L 1115,461 L 1112,462 L 1109,462 L 1106,464 L 1103,465 L 1100,466 L 1097,467 L 1094,468 L 1091,470 L 1088,471 L 1085,473 L 1082,475 L 1078,476 L 1075,478 L 1072,480 L 1069,482 L 1066,484 L 1063,486 L 1060,488 L 1057,490 L 1054,491 L 1051,491 L 1048,492 L 1045,492 L 1042,492 L 1039,493 L 1036,493 L 1032,494 L 1029,494 L 1026,494 L 1023,494 L 1020,494 L 1017,494 L 1014,494 L 1011,494 L 1008,494 L 1005,494 L 1002,494 L 999,494 L 996,494 L 993,494 L 989,493 L 986,493 L 983,492 L 980,492 L 977,492 L 974,491 L 971,491 L 968,490 L 965,488 L 962,486 L 959,484 L 956,482 L 953,480 L 950,478 L 947,476 L 943,475 L 940,473 L 937,471 L 934,470 L 931,468 L 928,467 L 925,466 L 922,465 L 919,464 L 916,462 L 913,462 L 910,461 L 907,460 L 904,459 L 901,458 L 897,458 L 894,457 L 891,457 L 888,456 L 885,456 L 882,456 L 879,455 L 876,455 L 873,455 L 870,455 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,453 L 873,453 L 876,453 L 879,453 L 882,453 L 885,452 L 888,452 L 891,452 L 894,451 L 897,451 L 901,450 L 904,450 L 907,449 L 910,448 L 913,448 L 916,447 L 919,446 L 922,445 L 925,444 L 928,443 L 931,442 L 934,440 L 937,439 L 940,438 L 943,436 L 947,435 L 950,433 L 953,432 L 956,430 L 959,428 L 962,426 L 965,425 L 968,423 L 971,421 L 974,419 L 977,417 L 980,415 L 983,413 L 986,410 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,410 L 1042,413 L 1045,415 L 1048,417 L 1051,419 L 1054,421 L 1057,423 L 1060,425 L 1063,426 L 1066,428 L 1069,430 L 1072,432 L 1075,433 L 1078,435 L 1082,436 L 1085,438 L 1088,439 L 1091,440 L 1094,442 L 1097,443 L 1100,444 L 1103,445 L 1106,446 L 1109,447 L 1112,448 L 1115,448 L 1118,449 L 1121,450 L 1124,450 L 1128,451 L 1131,451 L 1134,452 L 1137,452 L 1140,452 L 1143,453 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,455 L 1140,456 L 1137,456 L 1134,456 L 1131,457 L 1128,457 L 1124,458 L 1121,458 L 1118,459 L 1115,460 L 1112,460 L 1109,461 L 1106,462 L 1103,463 L 1100,464 L 1097,465 L 1094,466 L 1091,468 L 1088,469 L 1085,470 L 1082,472 L 1078,473 L 1075,475 L 1072,476 L 1069,478 L 1066,480 L 1063,482 L 1060,483 L 1057,485 L 1054,487 L 1051,489 L 1048,491 L 1045,493 L 1042,495 L 1039,498 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,498 L 983,495 L 980,493 L 977,491 L 974,489 L 971,487 L 968,485 L 965,483 L 962,482 L 959,480 L 956,478 L 953,476 L 950,475 L 947,473 L 943,472 L 940,470 L 937,469 L 934,468 L 931,466 L 928,465 L 925,464 L 922,463 L 919,462 L 916,461 L 913,460 L 910,460 L 907,459 L 904,458 L 901,458 L 897,457 L 894,457 L 891,456 L 888,456 L 885,456 L 882,455 L 879,455 L 876,455 L 873,455 L 870,455 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,400 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,400 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,508 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,508 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,446 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,439 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,419 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,413 L 989,412 L 993,412 L 996,412 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,412 L 1032,412 L 1036,412 L 1039,413 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,419 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,439 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,446 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,462 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,469 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,489 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,495 L 1036,496 L 1032,496 L 1029,496 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,496 L 993,496 L 989,496 L 986,495 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,489 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,469 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,462 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,400 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,400 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,508 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,508 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,446 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,439 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,419 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,413 L 989,412 L 993,412 L 996,412 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,412 L 1032,412 L 1036,412 L 1039,413 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,419 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,439 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,446 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,462 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,469 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,489 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,495 L 1036,496 L 1032,496 L 1029,496 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,496 L 993,496 L 989,496 L 986,495 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,489 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,469 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,462 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,369 L 833,369 L 836,369 L 839,369 L 842,370 L 845,370 L 848,371 L 851,372 L 855,373 L 858,374 L 861,375 L 864,376 L 867,377 L 870,379 L 873,380 L 876,381 L 879,383 L 882,385 L 885,386 L 888,388 L 891,390 L 894,392 L 897,393 L 901,395 L 904,397 L 907,399 L 910,401 L 913,403 L 916,404 L 919,406 L 922,408 L 925,410 L 928,411 L 931,413 L 934,414 L 937,416 L 940,417 L 943,419 L 947,420 L 950,421 L 953,423 L 956,424 L 959,425 L 962,426 L 965,427 L 968,428 L 971,429 L 974,430 L 977,430 L 980,431 L 983,432 L 986,432 L 989,433 L 993,433 L 996,433 L 999,434 L 1002,434 L 1005,434 L 1008,434 L 1011,434 L 1014,434 L 1017,434 L 1020,434 L 1023,434 L 1026,434 L 1029,433 L 1032,433 L 1036,433 L 1039,432 L 1042,432 L 1045,431 L 1048,430 L 1051,430 L 1054,429 L 1057,428 L 1060,427 L 1063,426 L 1066,425 L 1069,424 L 1072,423 L 1075,421 L 1078,420 L 1082,419 L 1085,417 L 1088,416 L 1091,414 L 1094,413 L 1097,411 L 1100,410 L 1103,408 L 1106,406 L 1109,404 L 1112,403 L 1115,401 L 1118,399 L 1121,397 L 1124,395 L 1128,393 L 1131,392 L 1134,390 L 1137,388 L 1140,386 L 1143,385 L 1146,383 L 1149,381 L 1152,380 L 1155,379 L 1158,377 L 1161,376 L 1164,375 L 1167,374 L 1170,373 L 1174,372 L 1177,371 L 1180,370 L 1183,370 L 1186,369 L 1189,369 L 1192,369 L 1195,369 L 1195,539 L 1192,539 L 1189,539 L 1186,539 L 1183,538 L 1180,538 L 1177,537 L 1174,536 L 1170,535 L 1167,534 L 1164,533 L 1161,532 L 1158,531 L 1155,529 L 1152,528 L 1149,527 L 1146,525 L 1143,523 L 1140,522 L 1137,520 L 1134,518 L 1131,516 L 1128,515 L 1124,513 L 1121,511 L 1118,509 L 1115,507 L 1112,505 L 1109,504 L 1106,502 L 1103,500 L 1100,498 L 1097,497 L 1094,495 L 1091,494 L 1088,492 L 1085,491 L 1082,489 L 1078,488 L 1075,487 L 1072,485 L 1069,484 L 1066,483 L 1063,482 L 1060,481 L 1057,480 L 1054,479 L 1051,478 L 1048,478 L 1045,477 L 1042,476 L 1039,476 L 1036,475 L 1032,475 L 1029,475 L 1026,474 L 1023,474 L 1020,474 L 1017,474 L 1014,474 L 1011,474 L 1008,474 L 1005,474 L 1002,474 L 999,474 L 996,475 L 993,475 L 989,475 L 986,476 L 983,476 L 980,477 L 977,478 L 974,478 L 971,479 L 968,480 L 965,481 L 962,482 L 959,483 L 956,484 L 953,485 L 950,487 L 947,488 L 943,489 L 940,491 L 937,492 L 934,494 L 931,495 L 928,497 L 925,498 L 922,500 L 919,502 L 916,504 L 913,505 L 910,507 L 907,509 L 904,511 L 901,513 L 897,515 L 894,516 L 891,518 L 888,520 L 885,522 L 882,523 L 879,525 L 876,527 L 873,528 L 870,529 L 867,531 L 864,532 L 861,533 L 858,534 L 855,535 L 851,536 L 848,537 L 845,538 L 842,538 L 839,539 L 836,539 L 833,539 L 830,539 Z;M 830,373 L 833,373 L 836,373 L 839,374 L 842,375 L 845,375 L 848,376 L 851,378 L 855,379 L 858,381 L 861,382 L 864,384 L 867,386 L 870,388 L 873,390 L 876,392 L 879,395 L 882,397 L 885,399 L 888,402 L 891,404 L 894,406 L 897,409 L 901,411 L 904,413 L 907,416 L 910,418 L 913,420 L 916,422 L 919,424 L 922,426 L 925,428 L 928,430 L 931,432 L 934,433 L 937,435 L 940,436 L 943,438 L 947,439 L 950,440 L 953,441 L 956,442 L 959,443 L 962,444 L 965,445 L 968,445 L 971,446 L 974,447 L 977,447 L 980,448 L 983,448 L 986,448 L 989,449 L 993,449 L 996,449 L 999,449 L 1002,449 L 1005,450 L 1008,450 L 1011,450 L 1014,450 L 1017,450 L 1020,450 L 1023,449 L 1026,449 L 1029,449 L 1032,449 L 1036,449 L 1039,448 L 1042,448 L 1045,448 L 1048,447 L 1051,447 L 1054,446 L 1057,445 L 1060,445 L 1063,444 L 1066,443 L 1069,442 L 1072,441 L 1075,440 L 1078,439 L 1082,438 L 1085,436 L 1088,435 L 1091,433 L 1094,432 L 1097,430 L 1100,428 L 1103,426 L 1106,424 L 1109,422 L 1112,420 L 1115,418 L 1118,416 L 1121,413 L 1124,411 L 1128,409 L 1131,406 L 1134,404 L 1137,402 L 1140,399 L 1143,397 L 1146,395 L 1149,392 L 1152,390 L 1155,388 L 1158,386 L 1161,384 L 1164,382 L 1167,381 L 1170,379 L 1174,378 L 1177,376 L 1180,375 L 1183,375 L 1186,374 L 1189,373 L 1192,373 L 1195,373 L 1195,535 L 1192,535 L 1189,535 L 1186,534 L 1183,533 L 1180,533 L 1177,532 L 1174,530 L 1170,529 L 1167,527 L 1164,526 L 1161,524 L 1158,522 L 1155,520 L 1152,518 L 1149,516 L 1146,513 L 1143,511 L 1140,509 L 1137,506 L 1134,504 L 1131,502 L 1128,499 L 1124,497 L 1121,495 L 1118,492 L 1115,490 L 1112,488 L 1109,486 L 1106,484 L 1103,482 L 1100,480 L 1097,478 L 1094,476 L 1091,475 L 1088,473 L 1085,472 L 1082,470 L 1078,469 L 1075,468 L 1072,467 L 1069,466 L 1066,465 L 1063,464 L 1060,463 L 1057,463 L 1054,462 L 1051,461 L 1048,461 L 1045,460 L 1042,460 L 1039,460 L 1036,459 L 1032,459 L 1029,459 L 1026,459 L 1023,459 L 1020,458 L 1017,458 L 1014,458 L 1011,458 L 1008,458 L 1005,458 L 1002,459 L 999,459 L 996,459 L 993,459 L 989,459 L 986,460 L 983,460 L 980,460 L 977,461 L 974,461 L 971,462 L 968,463 L 965,463 L 962,464 L 959,465 L 956,466 L 953,467 L 950,468 L 947,469 L 943,470 L 940,472 L 937,473 L 934,475 L 931,476 L 928,478 L 925,480 L 922,482 L 919,484 L 916,486 L 913,488 L 910,490 L 907,492 L 904,495 L 901,497 L 897,499 L 894,502 L 891,504 L 888,506 L 885,509 L 882,511 L 879,513 L 876,516 L 873,518 L 870,520 L 867,522 L 864,524 L 861,526 L 858,527 L 855,529 L 851,530 L 848,532 L 845,533 L 842,533 L 839,534 L 836,535 L 833,535 L 830,535 Z;M 830,383 L 833,383 L 836,384 L 839,384 L 842,385 L 845,387 L 848,388 L 851,390 L 855,392 L 858,394 L 861,396 L 864,399 L 867,402 L 870,404 L 873,407 L 876,410 L 879,412 L 882,415 L 885,418 L 888,421 L 891,423 L 894,426 L 897,428 L 901,431 L 904,433 L 907,435 L 910,437 L 913,439 L 916,440 L 919,442 L 922,443 L 925,444 L 928,446 L 931,447 L 934,448 L 937,448 L 940,449 L 943,450 L 947,450 L 950,451 L 953,451 L 956,452 L 959,452 L 962,452 L 965,453 L 968,453 L 971,453 L 974,453 L 977,453 L 980,453 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,453 L 1048,453 L 1051,453 L 1054,453 L 1057,453 L 1060,453 L 1063,452 L 1066,452 L 1069,452 L 1072,451 L 1075,451 L 1078,450 L 1082,450 L 1085,449 L 1088,448 L 1091,448 L 1094,447 L 1097,446 L 1100,444 L 1103,443 L 1106,442 L 1109,440 L 1112,439 L 1115,437 L 1118,435 L 1121,433 L 1124,431 L 1128,428 L 1131,426 L 1134,423 L 1137,421 L 1140,418 L 1143,415 L 1146,412 L 1149,410 L 1152,407 L 1155,404 L 1158,402 L 1161,399 L 1164,396 L 1167,394 L 1170,392 L 1174,390 L 1177,388 L 1180,387 L 1183,385 L 1186,384 L 1189,384 L 1192,383 L 1195,383 L 1195,525 L 1192,525 L 1189,524 L 1186,524 L 1183,523 L 1180,521 L 1177,520 L 1174,518 L 1170,516 L 1167,514 L 1164,512 L 1161,509 L 1158,506 L 1155,504 L 1152,501 L 1149,498 L 1146,496 L 1143,493 L 1140,490 L 1137,487 L 1134,485 L 1131,482 L 1128,480 L 1124,477 L 1121,475 L 1118,473 L 1115,471 L 1112,469 L 1109,468 L 1106,466 L 1103,465 L 1100,464 L 1097,462 L 1094,461 L 1091,460 L 1088,460 L 1085,459 L 1082,458 L 1078,458 L 1075,457 L 1072,457 L 1069,456 L 1066,456 L 1063,456 L 1060,455 L 1057,455 L 1054,455 L 1051,455 L 1048,455 L 1045,455 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,455 L 977,455 L 974,455 L 971,455 L 968,455 L 965,455 L 962,456 L 959,456 L 956,456 L 953,457 L 950,457 L 947,458 L 943,458 L 940,459 L 937,460 L 934,460 L 931,461 L 928,462 L 925,464 L 922,465 L 919,466 L 916,468 L 913,469 L 910,471 L 907,473 L 904,475 L 901,477 L 897,480 L 894,482 L 891,485 L 888,487 L 885,490 L 882,493 L 879,496 L 876,498 L 873,501 L 870,504 L 867,506 L 864,509 L 861,512 L 858,514 L 855,516 L 851,518 L 848,520 L 845,521 L 842,523 L 839,524 L 836,524 L 833,525 L 830,525 Z;M 830,400 L 833,400 L 836,401 L 839,402 L 842,404 L 845,406 L 848,408 L 851,410 L 855,413 L 858,416 L 861,419 L 864,422 L 867,425 L 870,428 L 873,431 L 876,434 L 879,436 L 882,439 L 885,441 L 888,443 L 891,445 L 894,446 L 897,447 L 901,449 L 904,450 L 907,450 L 910,451 L 913,452 L 916,452 L 919,453 L 922,453 L 925,453 L 928,453 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,453 L 1100,453 L 1103,453 L 1106,453 L 1109,452 L 1112,452 L 1115,451 L 1118,450 L 1121,450 L 1124,449 L 1128,447 L 1131,446 L 1134,445 L 1137,443 L 1140,441 L 1143,439 L 1146,436 L 1149,434 L 1152,431 L 1155,428 L 1158,425 L 1161,422 L 1164,419 L 1167,416 L 1170,413 L 1174,410 L 1177,408 L 1180,406 L 1183,404 L 1186,402 L 1189,401 L 1192,400 L 1195,400 L 1195,508 L 1192,508 L 1189,507 L 1186,506 L 1183,504 L 1180,502 L 1177,500 L 1174,498 L 1170,495 L 1167,492 L 1164,489 L 1161,486 L 1158,483 L 1155,480 L 1152,477 L 1149,474 L 1146,472 L 1143,469 L 1140,467 L 1137,465 L 1134,463 L 1131,462 L 1128,461 L 1124,459 L 1121,458 L 1118,458 L 1115,457 L 1112,456 L 1109,456 L 1106,455 L 1103,455 L 1100,455 L 1097,455 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,455 L 925,455 L 922,455 L 919,455 L 916,456 L 913,456 L 910,457 L 907,458 L 904,458 L 901,459 L 897,461 L 894,462 L 891,463 L 888,465 L 885,467 L 882,469 L 879,472 L 876,474 L 873,477 L 870,480 L 867,483 L 864,486 L 861,489 L 858,492 L 855,495 L 851,498 L 848,500 L 845,502 L 842,504 L 839,506 L 836,507 L 833,508 L 830,508 Z;M 830,424 L 833,424 L 836,425 L 839,427 L 842,430 L 845,433 L 848,436 L 851,439 L 855,442 L 858,444 L 861,447 L 864,449 L 867,450 L 870,451 L 873,452 L 876,453 L 879,453 L 882,453 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,453 L 1146,453 L 1149,453 L 1152,452 L 1155,451 L 1158,450 L 1161,449 L 1164,447 L 1167,444 L 1170,442 L 1174,439 L 1177,436 L 1180,433 L 1183,430 L 1186,427 L 1189,425 L 1192,424 L 1195,424 L 1195,484 L 1192,484 L 1189,483 L 1186,481 L 1183,478 L 1180,475 L 1177,472 L 1174,469 L 1170,466 L 1167,464 L 1164,461 L 1161,459 L 1158,458 L 1155,457 L 1152,456 L 1149,455 L 1146,455 L 1143,455 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,455 L 879,455 L 876,455 L 873,456 L 870,457 L 867,458 L 864,459 L 861,461 L 858,464 L 855,466 L 851,469 L 848,472 L 845,475 L 842,478 L 839,481 L 836,483 L 833,484 L 830,484 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,453 L 858,453 L 861,453 L 864,453 L 867,453 L 870,453 L 873,453 L 876,453 L 879,452 L 882,452 L 885,452 L 888,452 L 891,452 L 894,452 L 897,451 L 901,451 L 904,451 L 907,451 L 910,451 L 913,451 L 916,450 L 919,450 L 922,450 L 925,450 L 928,450 L 931,450 L 934,449 L 937,449 L 940,449 L 943,449 L 947,449 L 950,449 L 953,449 L 956,448 L 959,448 L 962,448 L 965,448 L 968,448 L 971,448 L 974,448 L 977,448 L 980,448 L 983,448 L 986,448 L 989,447 L 993,447 L 996,447 L 999,447 L 1002,447 L 1005,447 L 1008,447 L 1011,447 L 1014,447 L 1017,447 L 1020,447 L 1023,447 L 1026,447 L 1029,447 L 1032,447 L 1036,447 L 1039,448 L 1042,448 L 1045,448 L 1048,448 L 1051,448 L 1054,448 L 1057,448 L 1060,448 L 1063,448 L 1066,448 L 1069,448 L 1072,449 L 1075,449 L 1078,449 L 1082,449 L 1085,449 L 1088,449 L 1091,449 L 1094,450 L 1097,450 L 1100,450 L 1103,450 L 1106,450 L 1109,450 L 1112,451 L 1115,451 L 1118,451 L 1121,451 L 1124,451 L 1128,451 L 1131,452 L 1134,452 L 1137,452 L 1140,452 L 1143,452 L 1146,452 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,453 L 1164,453 L 1167,453 L 1170,453 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,455 L 1167,455 L 1164,455 L 1161,455 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,456 L 1143,456 L 1140,456 L 1137,456 L 1134,456 L 1131,456 L 1128,457 L 1124,457 L 1121,457 L 1118,457 L 1115,457 L 1112,457 L 1109,458 L 1106,458 L 1103,458 L 1100,458 L 1097,458 L 1094,458 L 1091,459 L 1088,459 L 1085,459 L 1082,459 L 1078,459 L 1075,459 L 1072,459 L 1069,460 L 1066,460 L 1063,460 L 1060,460 L 1057,460 L 1054,460 L 1051,460 L 1048,460 L 1045,460 L 1042,460 L 1039,460 L 1036,461 L 1032,461 L 1029,461 L 1026,461 L 1023,461 L 1020,461 L 1017,461 L 1014,461 L 1011,461 L 1008,461 L 1005,461 L 1002,461 L 999,461 L 996,461 L 993,461 L 989,461 L 986,460 L 983,460 L 980,460 L 977,460 L 974,460 L 971,460 L 968,460 L 965,460 L 962,460 L 959,460 L 956,460 L 953,459 L 950,459 L 947,459 L 943,459 L 940,459 L 937,459 L 934,459 L 931,458 L 928,458 L 925,458 L 922,458 L 919,458 L 916,458 L 913,457 L 910,457 L 907,457 L 904,457 L 901,457 L 897,457 L 894,456 L 891,456 L 888,456 L 885,456 L 882,456 L 879,456 L 876,455 L 873,455 L 870,455 L 867,455 L 864,455 L 861,455 L 858,455 L 855,455 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,453 L 864,453 L 867,453 L 870,452 L 873,452 L 876,451 L 879,451 L 882,450 L 885,450 L 888,450 L 891,449 L 894,449 L 897,449 L 901,448 L 904,448 L 907,448 L 910,447 L 913,447 L 916,447 L 919,446 L 922,446 L 925,446 L 928,446 L 931,445 L 934,445 L 937,445 L 940,444 L 943,444 L 947,444 L 950,443 L 953,443 L 956,443 L 959,443 L 962,442 L 965,442 L 968,442 L 971,442 L 974,442 L 977,441 L 980,441 L 983,441 L 986,441 L 989,441 L 993,441 L 996,441 L 999,441 L 1002,441 L 1005,441 L 1008,441 L 1011,441 L 1014,441 L 1017,441 L 1020,441 L 1023,441 L 1026,441 L 1029,441 L 1032,441 L 1036,441 L 1039,441 L 1042,441 L 1045,441 L 1048,441 L 1051,442 L 1054,442 L 1057,442 L 1060,442 L 1063,442 L 1066,443 L 1069,443 L 1072,443 L 1075,443 L 1078,444 L 1082,444 L 1085,444 L 1088,445 L 1091,445 L 1094,445 L 1097,446 L 1100,446 L 1103,446 L 1106,446 L 1109,447 L 1112,447 L 1115,447 L 1118,448 L 1121,448 L 1124,448 L 1128,449 L 1131,449 L 1134,449 L 1137,450 L 1140,450 L 1143,450 L 1146,451 L 1149,451 L 1152,452 L 1155,452 L 1158,453 L 1161,453 L 1164,453 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,455 L 1161,455 L 1158,455 L 1155,456 L 1152,456 L 1149,457 L 1146,457 L 1143,458 L 1140,458 L 1137,458 L 1134,459 L 1131,459 L 1128,459 L 1124,460 L 1121,460 L 1118,460 L 1115,461 L 1112,461 L 1109,461 L 1106,462 L 1103,462 L 1100,462 L 1097,462 L 1094,463 L 1091,463 L 1088,463 L 1085,464 L 1082,464 L 1078,464 L 1075,465 L 1072,465 L 1069,465 L 1066,465 L 1063,466 L 1060,466 L 1057,466 L 1054,466 L 1051,466 L 1048,467 L 1045,467 L 1042,467 L 1039,467 L 1036,467 L 1032,467 L 1029,467 L 1026,467 L 1023,467 L 1020,467 L 1017,467 L 1014,467 L 1011,467 L 1008,467 L 1005,467 L 1002,467 L 999,467 L 996,467 L 993,467 L 989,467 L 986,467 L 983,467 L 980,467 L 977,467 L 974,466 L 971,466 L 968,466 L 965,466 L 962,466 L 959,465 L 956,465 L 953,465 L 950,465 L 947,464 L 943,464 L 940,464 L 937,463 L 934,463 L 931,463 L 928,462 L 925,462 L 922,462 L 919,462 L 916,461 L 913,461 L 910,461 L 907,460 L 904,460 L 901,460 L 897,459 L 894,459 L 891,459 L 888,458 L 885,458 L 882,458 L 879,457 L 876,457 L 873,456 L 870,456 L 867,455 L 864,455 L 861,455 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,453 L 867,453 L 870,453 L 873,452 L 876,452 L 879,452 L 882,451 L 885,450 L 888,449 L 891,449 L 894,448 L 897,446 L 901,446 L 904,445 L 907,445 L 910,444 L 913,444 L 916,443 L 919,443 L 922,442 L 925,442 L 928,441 L 931,441 L 934,440 L 937,440 L 940,439 L 943,439 L 947,439 L 950,438 L 953,438 L 956,437 L 959,437 L 962,437 L 965,436 L 968,436 L 971,436 L 974,435 L 977,435 L 980,435 L 983,435 L 986,435 L 989,434 L 993,434 L 996,434 L 999,434 L 1002,434 L 1005,434 L 1008,434 L 1011,434 L 1014,434 L 1017,434 L 1020,434 L 1023,434 L 1026,434 L 1029,434 L 1032,434 L 1036,434 L 1039,435 L 1042,435 L 1045,435 L 1048,435 L 1051,435 L 1054,436 L 1057,436 L 1060,436 L 1063,437 L 1066,437 L 1069,437 L 1072,438 L 1075,438 L 1078,439 L 1082,439 L 1085,439 L 1088,440 L 1091,440 L 1094,441 L 1097,441 L 1100,442 L 1103,442 L 1106,443 L 1109,443 L 1112,444 L 1115,444 L 1118,445 L 1121,445 L 1124,446 L 1128,446 L 1131,448 L 1134,449 L 1137,449 L 1140,450 L 1143,451 L 1146,452 L 1149,452 L 1152,452 L 1155,453 L 1158,453 L 1161,453 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,455 L 1158,455 L 1155,455 L 1152,456 L 1149,456 L 1146,456 L 1143,457 L 1140,458 L 1137,459 L 1134,459 L 1131,460 L 1128,462 L 1124,462 L 1121,463 L 1118,463 L 1115,464 L 1112,464 L 1109,465 L 1106,465 L 1103,466 L 1100,466 L 1097,467 L 1094,467 L 1091,468 L 1088,468 L 1085,469 L 1082,469 L 1078,469 L 1075,470 L 1072,470 L 1069,471 L 1066,471 L 1063,471 L 1060,472 L 1057,472 L 1054,472 L 1051,473 L 1048,473 L 1045,473 L 1042,473 L 1039,473 L 1036,474 L 1032,474 L 1029,474 L 1026,474 L 1023,474 L 1020,474 L 1017,474 L 1014,474 L 1011,474 L 1008,474 L 1005,474 L 1002,474 L 999,474 L 996,474 L 993,474 L 989,474 L 986,473 L 983,473 L 980,473 L 977,473 L 974,473 L 971,472 L 968,472 L 965,472 L 962,471 L 959,471 L 956,471 L 953,470 L 950,470 L 947,469 L 943,469 L 940,469 L 937,468 L 934,468 L 931,467 L 928,467 L 925,466 L 922,466 L 919,465 L 916,465 L 913,464 L 910,464 L 907,463 L 904,463 L 901,462 L 897,462 L 894,460 L 891,459 L 888,459 L 885,458 L 882,457 L 879,456 L 876,456 L 873,456 L 870,455 L 867,455 L 864,455 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,453 L 870,453 L 873,453 L 876,453 L 879,452 L 882,452 L 885,451 L 888,451 L 891,450 L 894,449 L 897,448 L 901,447 L 904,446 L 907,445 L 910,444 L 913,443 L 916,441 L 919,440 L 922,438 L 925,438 L 928,437 L 931,436 L 934,436 L 937,435 L 940,435 L 943,434 L 947,433 L 950,433 L 953,432 L 956,432 L 959,431 L 962,431 L 965,430 L 968,430 L 971,430 L 974,429 L 977,429 L 980,429 L 983,428 L 986,428 L 989,428 L 993,428 L 996,427 L 999,427 L 1002,427 L 1005,427 L 1008,427 L 1011,427 L 1014,427 L 1017,427 L 1020,427 L 1023,427 L 1026,427 L 1029,427 L 1032,428 L 1036,428 L 1039,428 L 1042,428 L 1045,429 L 1048,429 L 1051,429 L 1054,430 L 1057,430 L 1060,430 L 1063,431 L 1066,431 L 1069,432 L 1072,432 L 1075,433 L 1078,433 L 1082,434 L 1085,435 L 1088,435 L 1091,436 L 1094,436 L 1097,437 L 1100,438 L 1103,438 L 1106,440 L 1109,441 L 1112,443 L 1115,444 L 1118,445 L 1121,446 L 1124,447 L 1128,448 L 1131,449 L 1134,450 L 1137,451 L 1140,451 L 1143,452 L 1146,452 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,456 L 1143,456 L 1140,457 L 1137,457 L 1134,458 L 1131,459 L 1128,460 L 1124,461 L 1121,462 L 1118,463 L 1115,464 L 1112,465 L 1109,467 L 1106,468 L 1103,470 L 1100,470 L 1097,471 L 1094,472 L 1091,472 L 1088,473 L 1085,473 L 1082,474 L 1078,475 L 1075,475 L 1072,476 L 1069,476 L 1066,477 L 1063,477 L 1060,478 L 1057,478 L 1054,478 L 1051,479 L 1048,479 L 1045,479 L 1042,480 L 1039,480 L 1036,480 L 1032,480 L 1029,481 L 1026,481 L 1023,481 L 1020,481 L 1017,481 L 1014,481 L 1011,481 L 1008,481 L 1005,481 L 1002,481 L 999,481 L 996,481 L 993,480 L 989,480 L 986,480 L 983,480 L 980,479 L 977,479 L 974,479 L 971,478 L 968,478 L 965,478 L 962,477 L 959,477 L 956,476 L 953,476 L 950,475 L 947,475 L 943,474 L 940,473 L 937,473 L 934,472 L 931,472 L 928,471 L 925,470 L 922,470 L 919,468 L 916,467 L 913,465 L 910,464 L 907,463 L 904,462 L 901,461 L 897,460 L 894,459 L 891,458 L 888,457 L 885,457 L 882,456 L 879,456 L 876,455 L 873,455 L 870,455 L 867,455 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,453 L 870,453 L 873,453 L 876,453 L 879,453 L 882,452 L 885,452 L 888,451 L 891,451 L 894,450 L 897,449 L 901,449 L 904,448 L 907,447 L 910,446 L 913,445 L 916,444 L 919,443 L 922,441 L 925,440 L 928,438 L 931,437 L 934,435 L 937,433 L 940,431 L 943,429 L 947,428 L 950,428 L 953,427 L 956,426 L 959,426 L 962,425 L 965,425 L 968,424 L 971,424 L 974,423 L 977,423 L 980,422 L 983,422 L 986,422 L 989,421 L 993,421 L 996,421 L 999,421 L 1002,420 L 1005,420 L 1008,420 L 1011,420 L 1014,420 L 1017,420 L 1020,420 L 1023,420 L 1026,421 L 1029,421 L 1032,421 L 1036,421 L 1039,422 L 1042,422 L 1045,422 L 1048,423 L 1051,423 L 1054,424 L 1057,424 L 1060,425 L 1063,425 L 1066,426 L 1069,426 L 1072,427 L 1075,428 L 1078,428 L 1082,429 L 1085,431 L 1088,433 L 1091,435 L 1094,437 L 1097,438 L 1100,440 L 1103,441 L 1106,443 L 1109,444 L 1112,445 L 1115,446 L 1118,447 L 1121,448 L 1124,449 L 1128,449 L 1131,450 L 1134,451 L 1137,451 L 1140,452 L 1143,452 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,453 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,455 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,456 L 1140,456 L 1137,457 L 1134,457 L 1131,458 L 1128,459 L 1124,459 L 1121,460 L 1118,461 L 1115,462 L 1112,463 L 1109,464 L 1106,465 L 1103,467 L 1100,468 L 1097,470 L 1094,471 L 1091,473 L 1088,475 L 1085,477 L 1082,479 L 1078,480 L 1075,480 L 1072,481 L 1069,482 L 1066,482 L 1063,483 L 1060,483 L 1057,484 L 1054,484 L 1051,485 L 1048,485 L 1045,486 L 1042,486 L 1039,486 L 1036,487 L 1032,487 L 1029,487 L 1026,487 L 1023,488 L 1020,488 L 1017,488 L 1014,488 L 1011,488 L 1008,488 L 1005,488 L 1002,488 L 999,487 L 996,487 L 993,487 L 989,487 L 986,486 L 983,486 L 980,486 L 977,485 L 974,485 L 971,484 L 968,484 L 965,483 L 962,483 L 959,482 L 956,482 L 953,481 L 950,480 L 947,480 L 943,479 L 940,477 L 937,475 L 934,473 L 931,471 L 928,470 L 925,468 L 922,467 L 919,465 L 916,464 L 913,463 L 910,462 L 907,461 L 904,460 L 901,459 L 897,459 L 894,458 L 891,457 L 888,457 L 885,456 L 882,456 L 879,455 L 876,455 L 873,455 L 870,455 L 867,455 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,453 L 873,453 L 876,453 L 879,453 L 882,452 L 885,452 L 888,452 L 891,451 L 894,451 L 897,450 L 901,450 L 904,449 L 907,448 L 910,447 L 913,446 L 916,446 L 919,444 L 922,443 L 925,442 L 928,441 L 931,440 L 934,438 L 937,437 L 940,435 L 943,433 L 947,432 L 950,430 L 953,428 L 956,426 L 959,424 L 962,422 L 965,420 L 968,418 L 971,417 L 974,417 L 977,416 L 980,416 L 983,416 L 986,415 L 989,415 L 993,414 L 996,414 L 999,414 L 1002,414 L 1005,414 L 1008,414 L 1011,414 L 1014,414 L 1017,414 L 1020,414 L 1023,414 L 1026,414 L 1029,414 L 1032,414 L 1036,415 L 1039,415 L 1042,416 L 1045,416 L 1048,416 L 1051,417 L 1054,417 L 1057,418 L 1060,420 L 1063,422 L 1066,424 L 1069,426 L 1072,428 L 1075,430 L 1078,432 L 1082,433 L 1085,435 L 1088,437 L 1091,438 L 1094,440 L 1097,441 L 1100,442 L 1103,443 L 1106,444 L 1109,446 L 1112,446 L 1115,447 L 1118,448 L 1121,449 L 1124,450 L 1128,450 L 1131,451 L 1134,451 L 1137,452 L 1140,452 L 1143,452 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,456 L 1140,456 L 1137,456 L 1134,457 L 1131,457 L 1128,458 L 1124,458 L 1121,459 L 1118,460 L 1115,461 L 1112,462 L 1109,462 L 1106,464 L 1103,465 L 1100,466 L 1097,467 L 1094,468 L 1091,470 L 1088,471 L 1085,473 L 1082,475 L 1078,476 L 1075,478 L 1072,480 L 1069,482 L 1066,484 L 1063,486 L 1060,488 L 1057,490 L 1054,491 L 1051,491 L 1048,492 L 1045,492 L 1042,492 L 1039,493 L 1036,493 L 1032,494 L 1029,494 L 1026,494 L 1023,494 L 1020,494 L 1017,494 L 1014,494 L 1011,494 L 1008,494 L 1005,494 L 1002,494 L 999,494 L 996,494 L 993,494 L 989,493 L 986,493 L 983,492 L 980,492 L 977,492 L 974,491 L 971,491 L 968,490 L 965,488 L 962,486 L 959,484 L 956,482 L 953,480 L 950,478 L 947,476 L 943,475 L 940,473 L 937,471 L 934,470 L 931,468 L 928,467 L 925,466 L 922,465 L 919,464 L 916,462 L 913,462 L 910,461 L 907,460 L 904,459 L 901,458 L 897,458 L 894,457 L 891,457 L 888,456 L 885,456 L 882,456 L 879,455 L 876,455 L 873,455 L 870,455 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,453 L 873,453 L 876,453 L 879,453 L 882,453 L 885,452 L 888,452 L 891,452 L 894,451 L 897,451 L 901,450 L 904,450 L 907,449 L 910,448 L 913,448 L 916,447 L 919,446 L 922,445 L 925,444 L 928,443 L 931,442 L 934,440 L 937,439 L 940,438 L 943,436 L 947,435 L 950,433 L 953,432 L 956,430 L 959,428 L 962,426 L 965,425 L 968,423 L 971,421 L 974,419 L 977,417 L 980,415 L 983,413 L 986,410 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,410 L 1042,413 L 1045,415 L 1048,417 L 1051,419 L 1054,421 L 1057,423 L 1060,425 L 1063,426 L 1066,428 L 1069,430 L 1072,432 L 1075,433 L 1078,435 L 1082,436 L 1085,438 L 1088,439 L 1091,440 L 1094,442 L 1097,443 L 1100,444 L 1103,445 L 1106,446 L 1109,447 L 1112,448 L 1115,448 L 1118,449 L 1121,450 L 1124,450 L 1128,451 L 1131,451 L 1134,452 L 1137,452 L 1140,452 L 1143,453 L 1146,453 L 1149,453 L 1152,453 L 1155,453 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,455 L 1152,455 L 1149,455 L 1146,455 L 1143,455 L 1140,456 L 1137,456 L 1134,456 L 1131,457 L 1128,457 L 1124,458 L 1121,458 L 1118,459 L 1115,460 L 1112,460 L 1109,461 L 1106,462 L 1103,463 L 1100,464 L 1097,465 L 1094,466 L 1091,468 L 1088,469 L 1085,470 L 1082,472 L 1078,473 L 1075,475 L 1072,476 L 1069,478 L 1066,480 L 1063,482 L 1060,483 L 1057,485 L 1054,487 L 1051,489 L 1048,491 L 1045,493 L 1042,495 L 1039,498 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,498 L 983,495 L 980,493 L 977,491 L 974,489 L 971,487 L 968,485 L 965,483 L 962,482 L 959,480 L 956,478 L 953,476 L 950,475 L 947,473 L 943,472 L 940,470 L 937,469 L 934,468 L 931,466 L 928,465 L 925,464 L 922,463 L 919,462 L 916,461 L 913,460 L 910,460 L 907,459 L 904,458 L 901,458 L 897,457 L 894,457 L 891,456 L 888,456 L 885,456 L 882,455 L 879,455 L 876,455 L 873,455 L 870,455 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,400 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,400 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,508 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,508 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,446 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,439 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,419 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,413 L 989,412 L 993,412 L 996,412 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,412 L 1032,412 L 1036,412 L 1039,413 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,419 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,439 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,446 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,462 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,469 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,489 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,495 L 1036,496 L 1032,496 L 1029,496 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,496 L 993,496 L 989,496 L 986,495 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,489 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,469 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,462 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,400 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,400 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,508 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,508 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,443 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,433 L 901,432 L 904,431 L 907,429 L 910,428 L 913,427 L 916,425 L 919,424 L 922,423 L 925,421 L 928,420 L 931,419 L 934,418 L 937,416 L 940,415 L 943,414 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,407 L 968,406 L 971,405 L 974,405 L 977,404 L 980,403 L 983,403 L 986,402 L 989,402 L 993,401 L 996,401 L 999,401 L 1002,401 L 1005,400 L 1008,400 L 1011,400 L 1014,400 L 1017,400 L 1020,400 L 1023,401 L 1026,401 L 1029,401 L 1032,401 L 1036,402 L 1039,402 L 1042,403 L 1045,403 L 1048,404 L 1051,405 L 1054,405 L 1057,406 L 1060,407 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,414 L 1085,415 L 1088,416 L 1091,418 L 1094,419 L 1097,420 L 1100,421 L 1103,423 L 1106,424 L 1109,425 L 1112,427 L 1115,428 L 1118,429 L 1121,431 L 1124,432 L 1128,433 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,443 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,465 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,475 L 1124,476 L 1121,477 L 1118,479 L 1115,480 L 1112,481 L 1109,483 L 1106,484 L 1103,485 L 1100,487 L 1097,488 L 1094,489 L 1091,490 L 1088,492 L 1085,493 L 1082,494 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,501 L 1057,502 L 1054,503 L 1051,503 L 1048,504 L 1045,505 L 1042,505 L 1039,506 L 1036,506 L 1032,507 L 1029,507 L 1026,507 L 1023,507 L 1020,508 L 1017,508 L 1014,508 L 1011,508 L 1008,508 L 1005,508 L 1002,507 L 999,507 L 996,507 L 993,507 L 989,506 L 986,506 L 983,505 L 980,505 L 977,504 L 974,503 L 971,503 L 968,502 L 965,501 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,494 L 940,493 L 937,492 L 934,490 L 931,489 L 928,488 L 925,487 L 922,485 L 919,484 L 916,483 L 913,481 L 910,480 L 907,479 L 904,477 L 901,476 L 897,475 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,465 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,450 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,442 L 879,441 L 882,440 L 885,439 L 888,437 L 891,436 L 894,435 L 897,434 L 901,432 L 904,431 L 907,430 L 910,428 L 913,427 L 916,426 L 919,424 L 922,423 L 925,422 L 928,421 L 931,419 L 934,418 L 937,417 L 940,416 L 943,415 L 947,413 L 950,412 L 953,411 L 956,410 L 959,409 L 962,408 L 965,408 L 968,407 L 971,406 L 974,405 L 977,405 L 980,404 L 983,403 L 986,403 L 989,402 L 993,402 L 996,402 L 999,401 L 1002,401 L 1005,401 L 1008,401 L 1011,401 L 1014,401 L 1017,401 L 1020,401 L 1023,401 L 1026,401 L 1029,402 L 1032,402 L 1036,402 L 1039,403 L 1042,403 L 1045,404 L 1048,405 L 1051,405 L 1054,406 L 1057,407 L 1060,408 L 1063,408 L 1066,409 L 1069,410 L 1072,411 L 1075,412 L 1078,413 L 1082,415 L 1085,416 L 1088,417 L 1091,418 L 1094,419 L 1097,421 L 1100,422 L 1103,423 L 1106,424 L 1109,426 L 1112,427 L 1115,428 L 1118,430 L 1121,431 L 1124,432 L 1128,434 L 1131,435 L 1134,436 L 1137,437 L 1140,439 L 1143,440 L 1146,441 L 1149,442 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,450 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,458 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,466 L 1146,467 L 1143,468 L 1140,469 L 1137,471 L 1134,472 L 1131,473 L 1128,474 L 1124,476 L 1121,477 L 1118,478 L 1115,480 L 1112,481 L 1109,482 L 1106,484 L 1103,485 L 1100,486 L 1097,487 L 1094,489 L 1091,490 L 1088,491 L 1085,492 L 1082,493 L 1078,495 L 1075,496 L 1072,497 L 1069,498 L 1066,499 L 1063,500 L 1060,500 L 1057,501 L 1054,502 L 1051,503 L 1048,503 L 1045,504 L 1042,505 L 1039,505 L 1036,506 L 1032,506 L 1029,506 L 1026,507 L 1023,507 L 1020,507 L 1017,507 L 1014,507 L 1011,507 L 1008,507 L 1005,507 L 1002,507 L 999,507 L 996,506 L 993,506 L 989,506 L 986,505 L 983,505 L 980,504 L 977,503 L 974,503 L 971,502 L 968,501 L 965,500 L 962,500 L 959,499 L 956,498 L 953,497 L 950,496 L 947,495 L 943,493 L 940,492 L 937,491 L 934,490 L 931,489 L 928,487 L 925,486 L 922,485 L 919,484 L 916,482 L 913,481 L 910,480 L 907,478 L 904,477 L 901,476 L 897,474 L 894,473 L 891,472 L 888,471 L 885,469 L 882,468 L 879,467 L 876,466 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,458 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,441 L 882,440 L 885,439 L 888,438 L 891,436 L 894,435 L 897,434 L 901,433 L 904,431 L 907,430 L 910,429 L 913,427 L 916,426 L 919,425 L 922,424 L 925,422 L 928,421 L 931,420 L 934,419 L 937,417 L 940,416 L 943,415 L 947,414 L 950,413 L 953,412 L 956,411 L 959,410 L 962,409 L 965,408 L 968,408 L 971,407 L 974,406 L 977,405 L 980,405 L 983,404 L 986,404 L 989,403 L 993,403 L 996,402 L 999,402 L 1002,402 L 1005,402 L 1008,402 L 1011,402 L 1014,402 L 1017,402 L 1020,402 L 1023,402 L 1026,402 L 1029,402 L 1032,403 L 1036,403 L 1039,404 L 1042,404 L 1045,405 L 1048,405 L 1051,406 L 1054,407 L 1057,408 L 1060,408 L 1063,409 L 1066,410 L 1069,411 L 1072,412 L 1075,413 L 1078,414 L 1082,415 L 1085,416 L 1088,417 L 1091,419 L 1094,420 L 1097,421 L 1100,422 L 1103,424 L 1106,425 L 1109,426 L 1112,427 L 1115,429 L 1118,430 L 1121,431 L 1124,433 L 1128,434 L 1131,435 L 1134,436 L 1137,438 L 1140,439 L 1143,440 L 1146,441 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,467 L 1143,468 L 1140,469 L 1137,470 L 1134,472 L 1131,473 L 1128,474 L 1124,475 L 1121,477 L 1118,478 L 1115,479 L 1112,481 L 1109,482 L 1106,483 L 1103,484 L 1100,486 L 1097,487 L 1094,488 L 1091,489 L 1088,491 L 1085,492 L 1082,493 L 1078,494 L 1075,495 L 1072,496 L 1069,497 L 1066,498 L 1063,499 L 1060,500 L 1057,500 L 1054,501 L 1051,502 L 1048,503 L 1045,503 L 1042,504 L 1039,504 L 1036,505 L 1032,505 L 1029,506 L 1026,506 L 1023,506 L 1020,506 L 1017,506 L 1014,506 L 1011,506 L 1008,506 L 1005,506 L 1002,506 L 999,506 L 996,506 L 993,505 L 989,505 L 986,504 L 983,504 L 980,503 L 977,503 L 974,502 L 971,501 L 968,500 L 965,500 L 962,499 L 959,498 L 956,497 L 953,496 L 950,495 L 947,494 L 943,493 L 940,492 L 937,491 L 934,489 L 931,488 L 928,487 L 925,486 L 922,484 L 919,483 L 916,482 L 913,481 L 910,479 L 907,478 L 904,477 L 901,475 L 897,474 L 894,473 L 891,472 L 888,470 L 885,469 L 882,468 L 879,467 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,439 L 888,438 L 891,437 L 894,436 L 897,434 L 901,433 L 904,432 L 907,431 L 910,429 L 913,428 L 916,427 L 919,425 L 922,424 L 925,423 L 928,422 L 931,421 L 934,419 L 937,418 L 940,417 L 943,416 L 947,415 L 950,414 L 953,413 L 956,412 L 959,411 L 962,410 L 965,409 L 968,409 L 971,408 L 974,407 L 977,406 L 980,406 L 983,405 L 986,405 L 989,404 L 993,404 L 996,404 L 999,403 L 1002,403 L 1005,403 L 1008,403 L 1011,403 L 1014,403 L 1017,403 L 1020,403 L 1023,403 L 1026,403 L 1029,404 L 1032,404 L 1036,404 L 1039,405 L 1042,405 L 1045,406 L 1048,406 L 1051,407 L 1054,408 L 1057,409 L 1060,409 L 1063,410 L 1066,411 L 1069,412 L 1072,413 L 1075,414 L 1078,415 L 1082,416 L 1085,417 L 1088,418 L 1091,419 L 1094,421 L 1097,422 L 1100,423 L 1103,424 L 1106,425 L 1109,427 L 1112,428 L 1115,429 L 1118,431 L 1121,432 L 1124,433 L 1128,434 L 1131,436 L 1134,437 L 1137,438 L 1140,439 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,469 L 1137,470 L 1134,471 L 1131,472 L 1128,474 L 1124,475 L 1121,476 L 1118,477 L 1115,479 L 1112,480 L 1109,481 L 1106,483 L 1103,484 L 1100,485 L 1097,486 L 1094,487 L 1091,489 L 1088,490 L 1085,491 L 1082,492 L 1078,493 L 1075,494 L 1072,495 L 1069,496 L 1066,497 L 1063,498 L 1060,499 L 1057,499 L 1054,500 L 1051,501 L 1048,502 L 1045,502 L 1042,503 L 1039,503 L 1036,504 L 1032,504 L 1029,504 L 1026,505 L 1023,505 L 1020,505 L 1017,505 L 1014,505 L 1011,505 L 1008,505 L 1005,505 L 1002,505 L 999,505 L 996,504 L 993,504 L 989,504 L 986,503 L 983,503 L 980,502 L 977,502 L 974,501 L 971,500 L 968,499 L 965,499 L 962,498 L 959,497 L 956,496 L 953,495 L 950,494 L 947,493 L 943,492 L 940,491 L 937,490 L 934,489 L 931,487 L 928,486 L 925,485 L 922,484 L 919,483 L 916,481 L 913,480 L 910,479 L 907,477 L 904,476 L 901,475 L 897,474 L 894,472 L 891,471 L 888,470 L 885,469 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,437 L 894,436 L 897,435 L 901,434 L 904,432 L 907,431 L 910,430 L 913,429 L 916,427 L 919,426 L 922,425 L 925,424 L 928,423 L 931,421 L 934,420 L 937,419 L 940,418 L 943,417 L 947,416 L 950,415 L 953,414 L 956,413 L 959,412 L 962,411 L 965,410 L 968,410 L 971,409 L 974,408 L 977,408 L 980,407 L 983,406 L 986,406 L 989,406 L 993,405 L 996,405 L 999,405 L 1002,404 L 1005,404 L 1008,404 L 1011,404 L 1014,404 L 1017,404 L 1020,404 L 1023,404 L 1026,405 L 1029,405 L 1032,405 L 1036,406 L 1039,406 L 1042,406 L 1045,407 L 1048,408 L 1051,408 L 1054,409 L 1057,410 L 1060,410 L 1063,411 L 1066,412 L 1069,413 L 1072,414 L 1075,415 L 1078,416 L 1082,417 L 1085,418 L 1088,419 L 1091,420 L 1094,421 L 1097,423 L 1100,424 L 1103,425 L 1106,426 L 1109,427 L 1112,429 L 1115,430 L 1118,431 L 1121,432 L 1124,434 L 1128,435 L 1131,436 L 1134,437 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,471 L 1131,472 L 1128,473 L 1124,474 L 1121,476 L 1118,477 L 1115,478 L 1112,479 L 1109,481 L 1106,482 L 1103,483 L 1100,484 L 1097,485 L 1094,487 L 1091,488 L 1088,489 L 1085,490 L 1082,491 L 1078,492 L 1075,493 L 1072,494 L 1069,495 L 1066,496 L 1063,497 L 1060,498 L 1057,498 L 1054,499 L 1051,500 L 1048,500 L 1045,501 L 1042,502 L 1039,502 L 1036,502 L 1032,503 L 1029,503 L 1026,503 L 1023,504 L 1020,504 L 1017,504 L 1014,504 L 1011,504 L 1008,504 L 1005,504 L 1002,504 L 999,503 L 996,503 L 993,503 L 989,502 L 986,502 L 983,502 L 980,501 L 977,500 L 974,500 L 971,499 L 968,498 L 965,498 L 962,497 L 959,496 L 956,495 L 953,494 L 950,493 L 947,492 L 943,491 L 940,490 L 937,489 L 934,488 L 931,487 L 928,485 L 925,484 L 922,483 L 919,482 L 916,481 L 913,479 L 910,478 L 907,477 L 904,476 L 901,474 L 897,473 L 894,472 L 891,471 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,446 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,439 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,419 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,413 L 989,412 L 993,412 L 996,412 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,412 L 1032,412 L 1036,412 L 1039,413 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,419 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,439 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,446 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,462 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,469 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,489 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,495 L 1036,496 L 1032,496 L 1029,496 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,496 L 993,496 L 989,496 L 986,495 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,489 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,469 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,462 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,445 L 879,444 L 882,443 L 885,442 L 888,441 L 891,440 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,428 L 928,427 L 931,426 L 934,425 L 937,424 L 940,423 L 943,422 L 947,421 L 950,420 L 953,419 L 956,418 L 959,418 L 962,417 L 965,416 L 968,416 L 971,415 L 974,414 L 977,414 L 980,413 L 983,413 L 986,412 L 989,412 L 993,412 L 996,411 L 999,411 L 1002,411 L 1005,411 L 1008,411 L 1011,411 L 1014,411 L 1017,411 L 1020,411 L 1023,411 L 1026,411 L 1029,411 L 1032,412 L 1036,412 L 1039,412 L 1042,413 L 1045,413 L 1048,414 L 1051,414 L 1054,415 L 1057,416 L 1060,416 L 1063,417 L 1066,418 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,422 L 1085,423 L 1088,424 L 1091,425 L 1094,426 L 1097,427 L 1100,428 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,440 L 1137,441 L 1140,442 L 1143,443 L 1146,444 L 1149,445 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,463 L 1146,464 L 1143,465 L 1140,466 L 1137,467 L 1134,468 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,480 L 1097,481 L 1094,482 L 1091,483 L 1088,484 L 1085,485 L 1082,486 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,490 L 1063,491 L 1060,492 L 1057,492 L 1054,493 L 1051,494 L 1048,494 L 1045,495 L 1042,495 L 1039,496 L 1036,496 L 1032,496 L 1029,497 L 1026,497 L 1023,497 L 1020,497 L 1017,497 L 1014,497 L 1011,497 L 1008,497 L 1005,497 L 1002,497 L 999,497 L 996,497 L 993,496 L 989,496 L 986,496 L 983,495 L 980,495 L 977,494 L 974,494 L 971,493 L 968,492 L 965,492 L 962,491 L 959,490 L 956,490 L 953,489 L 950,488 L 947,487 L 943,486 L 940,485 L 937,484 L 934,483 L 931,482 L 928,481 L 925,480 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,468 L 888,467 L 885,466 L 882,465 L 879,464 L 876,463 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,433 L 913,432 L 916,431 L 919,430 L 922,429 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,421 L 950,420 L 953,419 L 956,418 L 959,417 L 962,416 L 965,416 L 968,415 L 971,414 L 974,414 L 977,413 L 980,413 L 983,412 L 986,412 L 989,411 L 993,411 L 996,411 L 999,411 L 1002,410 L 1005,410 L 1008,410 L 1011,410 L 1014,410 L 1017,410 L 1020,410 L 1023,410 L 1026,411 L 1029,411 L 1032,411 L 1036,411 L 1039,412 L 1042,412 L 1045,413 L 1048,413 L 1051,414 L 1054,414 L 1057,415 L 1060,416 L 1063,416 L 1066,417 L 1069,418 L 1072,419 L 1075,420 L 1078,421 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,429 L 1106,430 L 1109,431 L 1112,432 L 1115,433 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,475 L 1112,476 L 1109,477 L 1106,478 L 1103,479 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,487 L 1075,488 L 1072,489 L 1069,490 L 1066,491 L 1063,492 L 1060,492 L 1057,493 L 1054,494 L 1051,494 L 1048,495 L 1045,495 L 1042,496 L 1039,496 L 1036,497 L 1032,497 L 1029,497 L 1026,497 L 1023,498 L 1020,498 L 1017,498 L 1014,498 L 1011,498 L 1008,498 L 1005,498 L 1002,498 L 999,497 L 996,497 L 993,497 L 989,497 L 986,496 L 983,496 L 980,495 L 977,495 L 974,494 L 971,494 L 968,493 L 965,492 L 962,492 L 959,491 L 956,490 L 953,489 L 950,488 L 947,487 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,479 L 919,478 L 916,477 L 913,476 L 910,475 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,450 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,437 L 901,436 L 904,435 L 907,434 L 910,432 L 913,431 L 916,430 L 919,429 L 922,428 L 925,427 L 928,426 L 931,425 L 934,424 L 937,423 L 940,422 L 943,421 L 947,420 L 950,419 L 953,418 L 956,417 L 959,416 L 962,416 L 965,415 L 968,414 L 971,414 L 974,413 L 977,412 L 980,412 L 983,411 L 986,411 L 989,411 L 993,410 L 996,410 L 999,410 L 1002,410 L 1005,409 L 1008,409 L 1011,409 L 1014,409 L 1017,409 L 1020,409 L 1023,410 L 1026,410 L 1029,410 L 1032,410 L 1036,411 L 1039,411 L 1042,411 L 1045,412 L 1048,412 L 1051,413 L 1054,414 L 1057,414 L 1060,415 L 1063,416 L 1066,416 L 1069,417 L 1072,418 L 1075,419 L 1078,420 L 1082,421 L 1085,422 L 1088,423 L 1091,424 L 1094,425 L 1097,426 L 1100,427 L 1103,428 L 1106,429 L 1109,430 L 1112,431 L 1115,432 L 1118,434 L 1121,435 L 1124,436 L 1128,437 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,450 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,458 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,471 L 1124,472 L 1121,473 L 1118,474 L 1115,476 L 1112,477 L 1109,478 L 1106,479 L 1103,480 L 1100,481 L 1097,482 L 1094,483 L 1091,484 L 1088,485 L 1085,486 L 1082,487 L 1078,488 L 1075,489 L 1072,490 L 1069,491 L 1066,492 L 1063,492 L 1060,493 L 1057,494 L 1054,494 L 1051,495 L 1048,496 L 1045,496 L 1042,497 L 1039,497 L 1036,497 L 1032,498 L 1029,498 L 1026,498 L 1023,498 L 1020,499 L 1017,499 L 1014,499 L 1011,499 L 1008,499 L 1005,499 L 1002,498 L 999,498 L 996,498 L 993,498 L 989,497 L 986,497 L 983,497 L 980,496 L 977,496 L 974,495 L 971,494 L 968,494 L 965,493 L 962,492 L 959,492 L 956,491 L 953,490 L 950,489 L 947,488 L 943,487 L 940,486 L 937,485 L 934,484 L 931,483 L 928,482 L 925,481 L 922,480 L 919,479 L 916,478 L 913,477 L 910,476 L 907,474 L 904,473 L 901,472 L 897,471 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,458 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,449 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,441 L 888,440 L 891,439 L 894,438 L 897,436 L 901,435 L 904,434 L 907,433 L 910,432 L 913,431 L 916,430 L 919,428 L 922,427 L 925,426 L 928,425 L 931,424 L 934,423 L 937,422 L 940,421 L 943,420 L 947,419 L 950,418 L 953,417 L 956,416 L 959,416 L 962,415 L 965,414 L 968,413 L 971,413 L 974,412 L 977,411 L 980,411 L 983,410 L 986,410 L 989,410 L 993,409 L 996,409 L 999,409 L 1002,408 L 1005,408 L 1008,408 L 1011,408 L 1014,408 L 1017,408 L 1020,408 L 1023,408 L 1026,409 L 1029,409 L 1032,409 L 1036,410 L 1039,410 L 1042,410 L 1045,411 L 1048,411 L 1051,412 L 1054,413 L 1057,413 L 1060,414 L 1063,415 L 1066,416 L 1069,416 L 1072,417 L 1075,418 L 1078,419 L 1082,420 L 1085,421 L 1088,422 L 1091,423 L 1094,424 L 1097,425 L 1100,426 L 1103,427 L 1106,428 L 1109,430 L 1112,431 L 1115,432 L 1118,433 L 1121,434 L 1124,435 L 1128,436 L 1131,438 L 1134,439 L 1137,440 L 1140,441 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,449 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,459 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,467 L 1137,468 L 1134,469 L 1131,470 L 1128,472 L 1124,473 L 1121,474 L 1118,475 L 1115,476 L 1112,477 L 1109,478 L 1106,480 L 1103,481 L 1100,482 L 1097,483 L 1094,484 L 1091,485 L 1088,486 L 1085,487 L 1082,488 L 1078,489 L 1075,490 L 1072,491 L 1069,492 L 1066,492 L 1063,493 L 1060,494 L 1057,495 L 1054,495 L 1051,496 L 1048,497 L 1045,497 L 1042,498 L 1039,498 L 1036,498 L 1032,499 L 1029,499 L 1026,499 L 1023,500 L 1020,500 L 1017,500 L 1014,500 L 1011,500 L 1008,500 L 1005,500 L 1002,500 L 999,499 L 996,499 L 993,499 L 989,498 L 986,498 L 983,498 L 980,497 L 977,497 L 974,496 L 971,495 L 968,495 L 965,494 L 962,493 L 959,492 L 956,492 L 953,491 L 950,490 L 947,489 L 943,488 L 940,487 L 937,486 L 934,485 L 931,484 L 928,483 L 925,482 L 922,481 L 919,480 L 916,478 L 913,477 L 910,476 L 907,475 L 904,474 L 901,473 L 897,472 L 894,470 L 891,469 L 888,468 L 885,467 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,459 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,452 L 851,451 L 855,450 L 858,449 L 861,448 L 864,448 L 867,447 L 870,446 L 873,445 L 876,444 L 879,443 L 882,442 L 885,440 L 888,439 L 891,438 L 894,437 L 897,436 L 901,435 L 904,434 L 907,432 L 910,431 L 913,430 L 916,429 L 919,428 L 922,427 L 925,425 L 928,424 L 931,423 L 934,422 L 937,421 L 940,420 L 943,419 L 947,418 L 950,417 L 953,416 L 956,415 L 959,414 L 962,414 L 965,413 L 968,412 L 971,411 L 974,411 L 977,410 L 980,410 L 983,409 L 986,409 L 989,408 L 993,408 L 996,408 L 999,407 L 1002,407 L 1005,407 L 1008,407 L 1011,407 L 1014,407 L 1017,407 L 1020,407 L 1023,407 L 1026,407 L 1029,408 L 1032,408 L 1036,408 L 1039,409 L 1042,409 L 1045,410 L 1048,410 L 1051,411 L 1054,411 L 1057,412 L 1060,413 L 1063,414 L 1066,414 L 1069,415 L 1072,416 L 1075,417 L 1078,418 L 1082,419 L 1085,420 L 1088,421 L 1091,422 L 1094,423 L 1097,424 L 1100,425 L 1103,427 L 1106,428 L 1109,429 L 1112,430 L 1115,431 L 1118,432 L 1121,434 L 1124,435 L 1128,436 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,442 L 1146,443 L 1149,444 L 1152,445 L 1155,446 L 1158,447 L 1161,448 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,452 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,456 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,460 L 1158,461 L 1155,462 L 1152,463 L 1149,464 L 1146,465 L 1143,466 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,472 L 1124,473 L 1121,474 L 1118,476 L 1115,477 L 1112,478 L 1109,479 L 1106,480 L 1103,481 L 1100,483 L 1097,484 L 1094,485 L 1091,486 L 1088,487 L 1085,488 L 1082,489 L 1078,490 L 1075,491 L 1072,492 L 1069,493 L 1066,494 L 1063,494 L 1060,495 L 1057,496 L 1054,497 L 1051,497 L 1048,498 L 1045,498 L 1042,499 L 1039,499 L 1036,500 L 1032,500 L 1029,500 L 1026,501 L 1023,501 L 1020,501 L 1017,501 L 1014,501 L 1011,501 L 1008,501 L 1005,501 L 1002,501 L 999,501 L 996,500 L 993,500 L 989,500 L 986,499 L 983,499 L 980,498 L 977,498 L 974,497 L 971,497 L 968,496 L 965,495 L 962,494 L 959,494 L 956,493 L 953,492 L 950,491 L 947,490 L 943,489 L 940,488 L 937,487 L 934,486 L 931,485 L 928,484 L 925,483 L 922,481 L 919,480 L 916,479 L 913,478 L 910,477 L 907,476 L 904,474 L 901,473 L 897,472 L 894,471 L 891,470 L 888,469 L 885,468 L 882,466 L 879,465 L 876,464 L 873,463 L 870,462 L 867,461 L 864,460 L 861,460 L 858,459 L 855,458 L 851,457 L 848,456 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,453 L 842,453 L 845,452 L 848,451 L 851,451 L 855,450 L 858,449 L 861,448 L 864,447 L 867,446 L 870,445 L 873,444 L 876,443 L 879,442 L 882,441 L 885,440 L 888,439 L 891,438 L 894,437 L 897,435 L 901,434 L 904,433 L 907,432 L 910,431 L 913,429 L 916,428 L 919,427 L 922,426 L 925,425 L 928,423 L 931,422 L 934,421 L 937,420 L 940,419 L 943,418 L 947,417 L 950,416 L 953,415 L 956,414 L 959,413 L 962,412 L 965,412 L 968,411 L 971,410 L 974,410 L 977,409 L 980,408 L 983,408 L 986,407 L 989,407 L 993,407 L 996,406 L 999,406 L 1002,406 L 1005,406 L 1008,405 L 1011,405 L 1014,405 L 1017,405 L 1020,406 L 1023,406 L 1026,406 L 1029,406 L 1032,407 L 1036,407 L 1039,407 L 1042,408 L 1045,408 L 1048,409 L 1051,410 L 1054,410 L 1057,411 L 1060,412 L 1063,412 L 1066,413 L 1069,414 L 1072,415 L 1075,416 L 1078,417 L 1082,418 L 1085,419 L 1088,420 L 1091,421 L 1094,422 L 1097,423 L 1100,425 L 1103,426 L 1106,427 L 1109,428 L 1112,429 L 1115,431 L 1118,432 L 1121,433 L 1124,434 L 1128,435 L 1131,437 L 1134,438 L 1137,439 L 1140,440 L 1143,441 L 1146,442 L 1149,443 L 1152,444 L 1155,445 L 1158,446 L 1161,447 L 1164,448 L 1167,449 L 1170,450 L 1174,451 L 1177,451 L 1180,452 L 1183,453 L 1186,453 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,455 L 1183,455 L 1180,456 L 1177,457 L 1174,457 L 1170,458 L 1167,459 L 1164,460 L 1161,461 L 1158,462 L 1155,463 L 1152,464 L 1149,465 L 1146,466 L 1143,467 L 1140,468 L 1137,469 L 1134,470 L 1131,471 L 1128,473 L 1124,474 L 1121,475 L 1118,476 L 1115,477 L 1112,479 L 1109,480 L 1106,481 L 1103,482 L 1100,483 L 1097,485 L 1094,486 L 1091,487 L 1088,488 L 1085,489 L 1082,490 L 1078,491 L 1075,492 L 1072,493 L 1069,494 L 1066,495 L 1063,496 L 1060,496 L 1057,497 L 1054,498 L 1051,498 L 1048,499 L 1045,500 L 1042,500 L 1039,501 L 1036,501 L 1032,501 L 1029,502 L 1026,502 L 1023,502 L 1020,502 L 1017,503 L 1014,503 L 1011,503 L 1008,503 L 1005,502 L 1002,502 L 999,502 L 996,502 L 993,501 L 989,501 L 986,501 L 983,500 L 980,500 L 977,499 L 974,498 L 971,498 L 968,497 L 965,496 L 962,496 L 959,495 L 956,494 L 953,493 L 950,492 L 947,491 L 943,490 L 940,489 L 937,488 L 934,487 L 931,486 L 928,485 L 925,483 L 922,482 L 919,481 L 916,480 L 913,479 L 910,477 L 907,476 L 904,475 L 901,474 L 897,473 L 894,471 L 891,470 L 888,469 L 885,468 L 882,467 L 879,466 L 876,465 L 873,464 L 870,463 L 867,462 L 864,461 L 861,460 L 858,459 L 855,458 L 851,457 L 848,457 L 845,456 L 842,455 L 839,455 L 836,454 L 833,454 L 830,454 Z;M 830,369 L 833,369 L 836,369 L 839,369 L 842,370 L 845,370 L 848,371 L 851,372 L 855,373 L 858,374 L 861,375 L 864,376 L 867,377 L 870,379 L 873,380 L 876,381 L 879,383 L 882,385 L 885,386 L 888,388 L 891,390 L 894,392 L 897,393 L 901,395 L 904,397 L 907,399 L 910,401 L 913,403 L 916,404 L 919,406 L 922,408 L 925,410 L 928,411 L 931,413 L 934,414 L 937,416 L 940,417 L 943,419 L 947,420 L 950,421 L 953,423 L 956,424 L 959,425 L 962,426 L 965,427 L 968,428 L 971,429 L 974,430 L 977,430 L 980,431 L 983,432 L 986,432 L 989,433 L 993,433 L 996,433 L 999,434 L 1002,434 L 1005,434 L 1008,434 L 1011,434 L 1014,434 L 1017,434 L 1020,434 L 1023,434 L 1026,434 L 1029,433 L 1032,433 L 1036,433 L 1039,432 L 1042,432 L 1045,431 L 1048,430 L 1051,430 L 1054,429 L 1057,428 L 1060,427 L 1063,426 L 1066,425 L 1069,424 L 1072,423 L 1075,421 L 1078,420 L 1082,419 L 1085,417 L 1088,416 L 1091,414 L 1094,413 L 1097,411 L 1100,410 L 1103,408 L 1106,406 L 1109,404 L 1112,403 L 1115,401 L 1118,399 L 1121,397 L 1124,395 L 1128,393 L 1131,392 L 1134,390 L 1137,388 L 1140,386 L 1143,385 L 1146,383 L 1149,381 L 1152,380 L 1155,379 L 1158,377 L 1161,376 L 1164,375 L 1167,374 L 1170,373 L 1174,372 L 1177,371 L 1180,370 L 1183,370 L 1186,369 L 1189,369 L 1192,369 L 1195,369 L 1195,539 L 1192,539 L 1189,539 L 1186,539 L 1183,538 L 1180,538 L 1177,537 L 1174,536 L 1170,535 L 1167,534 L 1164,533 L 1161,532 L 1158,531 L 1155,529 L 1152,528 L 1149,527 L 1146,525 L 1143,523 L 1140,522 L 1137,520 L 1134,518 L 1131,516 L 1128,515 L 1124,513 L 1121,511 L 1118,509 L 1115,507 L 1112,505 L 1109,504 L 1106,502 L 1103,500 L 1100,498 L 1097,497 L 1094,495 L 1091,494 L 1088,492 L 1085,491 L 1082,489 L 1078,488 L 1075,487 L 1072,485 L 1069,484 L 1066,483 L 1063,482 L 1060,481 L 1057,480 L 1054,479 L 1051,478 L 1048,478 L 1045,477 L 1042,476 L 1039,476 L 1036,475 L 1032,475 L 1029,475 L 1026,474 L 1023,474 L 1020,474 L 1017,474 L 1014,474 L 1011,474 L 1008,474 L 1005,474 L 1002,474 L 999,474 L 996,475 L 993,475 L 989,475 L 986,476 L 983,476 L 980,477 L 977,478 L 974,478 L 971,479 L 968,480 L 965,481 L 962,482 L 959,483 L 956,484 L 953,485 L 950,487 L 947,488 L 943,489 L 940,491 L 937,492 L 934,494 L 931,495 L 928,497 L 925,498 L 922,500 L 919,502 L 916,504 L 913,505 L 910,507 L 907,509 L 904,511 L 901,513 L 897,515 L 894,516 L 891,518 L 888,520 L 885,522 L 882,523 L 879,525 L 876,527 L 873,528 L 870,529 L 867,531 L 864,532 L 861,533 L 858,534 L 855,535 L 851,536 L 848,537 L 845,538 L 842,538 L 839,539 L 836,539 L 833,539 L 830,539 Z;M 830,373 L 833,373 L 836,373 L 839,374 L 842,375 L 845,375 L 848,376 L 851,378 L 855,379 L 858,381 L 861,382 L 864,384 L 867,386 L 870,388 L 873,390 L 876,392 L 879,395 L 882,397 L 885,399 L 888,402 L 891,404 L 894,406 L 897,409 L 901,411 L 904,413 L 907,416 L 910,418 L 913,420 L 916,422 L 919,424 L 922,426 L 925,428 L 928,430 L 931,432 L 934,433 L 937,435 L 940,436 L 943,438 L 947,439 L 950,440 L 953,441 L 956,442 L 959,443 L 962,444 L 965,445 L 968,445 L 971,446 L 974,447 L 977,447 L 980,448 L 983,448 L 986,448 L 989,449 L 993,449 L 996,449 L 999,449 L 1002,449 L 1005,450 L 1008,450 L 1011,450 L 1014,450 L 1017,450 L 1020,450 L 1023,449 L 1026,449 L 1029,449 L 1032,449 L 1036,449 L 1039,448 L 1042,448 L 1045,448 L 1048,447 L 1051,447 L 1054,446 L 1057,445 L 1060,445 L 1063,444 L 1066,443 L 1069,442 L 1072,441 L 1075,440 L 1078,439 L 1082,438 L 1085,436 L 1088,435 L 1091,433 L 1094,432 L 1097,430 L 1100,428 L 1103,426 L 1106,424 L 1109,422 L 1112,420 L 1115,418 L 1118,416 L 1121,413 L 1124,411 L 1128,409 L 1131,406 L 1134,404 L 1137,402 L 1140,399 L 1143,397 L 1146,395 L 1149,392 L 1152,390 L 1155,388 L 1158,386 L 1161,384 L 1164,382 L 1167,381 L 1170,379 L 1174,378 L 1177,376 L 1180,375 L 1183,375 L 1186,374 L 1189,373 L 1192,373 L 1195,373 L 1195,535 L 1192,535 L 1189,535 L 1186,534 L 1183,533 L 1180,533 L 1177,532 L 1174,530 L 1170,529 L 1167,527 L 1164,526 L 1161,524 L 1158,522 L 1155,520 L 1152,518 L 1149,516 L 1146,513 L 1143,511 L 1140,509 L 1137,506 L 1134,504 L 1131,502 L 1128,499 L 1124,497 L 1121,495 L 1118,492 L 1115,490 L 1112,488 L 1109,486 L 1106,484 L 1103,482 L 1100,480 L 1097,478 L 1094,476 L 1091,475 L 1088,473 L 1085,472 L 1082,470 L 1078,469 L 1075,468 L 1072,467 L 1069,466 L 1066,465 L 1063,464 L 1060,463 L 1057,463 L 1054,462 L 1051,461 L 1048,461 L 1045,460 L 1042,460 L 1039,460 L 1036,459 L 1032,459 L 1029,459 L 1026,459 L 1023,459 L 1020,458 L 1017,458 L 1014,458 L 1011,458 L 1008,458 L 1005,458 L 1002,459 L 999,459 L 996,459 L 993,459 L 989,459 L 986,460 L 983,460 L 980,460 L 977,461 L 974,461 L 971,462 L 968,463 L 965,463 L 962,464 L 959,465 L 956,466 L 953,467 L 950,468 L 947,469 L 943,470 L 940,472 L 937,473 L 934,475 L 931,476 L 928,478 L 925,480 L 922,482 L 919,484 L 916,486 L 913,488 L 910,490 L 907,492 L 904,495 L 901,497 L 897,499 L 894,502 L 891,504 L 888,506 L 885,509 L 882,511 L 879,513 L 876,516 L 873,518 L 870,520 L 867,522 L 864,524 L 861,526 L 858,527 L 855,529 L 851,530 L 848,532 L 845,533 L 842,533 L 839,534 L 836,535 L 833,535 L 830,535 Z;M 830,383 L 833,383 L 836,384 L 839,384 L 842,385 L 845,387 L 848,388 L 851,390 L 855,392 L 858,394 L 861,396 L 864,399 L 867,402 L 870,404 L 873,407 L 876,410 L 879,412 L 882,415 L 885,418 L 888,421 L 891,423 L 894,426 L 897,428 L 901,431 L 904,433 L 907,435 L 910,437 L 913,439 L 916,440 L 919,442 L 922,443 L 925,444 L 928,446 L 931,447 L 934,448 L 937,448 L 940,449 L 943,450 L 947,450 L 950,451 L 953,451 L 956,452 L 959,452 L 962,452 L 965,453 L 968,453 L 971,453 L 974,453 L 977,453 L 980,453 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,453 L 1048,453 L 1051,453 L 1054,453 L 1057,453 L 1060,453 L 1063,452 L 1066,452 L 1069,452 L 1072,451 L 1075,451 L 1078,450 L 1082,450 L 1085,449 L 1088,448 L 1091,448 L 1094,447 L 1097,446 L 1100,444 L 1103,443 L 1106,442 L 1109,440 L 1112,439 L 1115,437 L 1118,435 L 1121,433 L 1124,431 L 1128,428 L 1131,426 L 1134,423 L 1137,421 L 1140,418 L 1143,415 L 1146,412 L 1149,410 L 1152,407 L 1155,404 L 1158,402 L 1161,399 L 1164,396 L 1167,394 L 1170,392 L 1174,390 L 1177,388 L 1180,387 L 1183,385 L 1186,384 L 1189,384 L 1192,383 L 1195,383 L 1195,525 L 1192,525 L 1189,524 L 1186,524 L 1183,523 L 1180,521 L 1177,520 L 1174,518 L 1170,516 L 1167,514 L 1164,512 L 1161,509 L 1158,506 L 1155,504 L 1152,501 L 1149,498 L 1146,496 L 1143,493 L 1140,490 L 1137,487 L 1134,485 L 1131,482 L 1128,480 L 1124,477 L 1121,475 L 1118,473 L 1115,471 L 1112,469 L 1109,468 L 1106,466 L 1103,465 L 1100,464 L 1097,462 L 1094,461 L 1091,460 L 1088,460 L 1085,459 L 1082,458 L 1078,458 L 1075,457 L 1072,457 L 1069,456 L 1066,456 L 1063,456 L 1060,455 L 1057,455 L 1054,455 L 1051,455 L 1048,455 L 1045,455 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,455 L 977,455 L 974,455 L 971,455 L 968,455 L 965,455 L 962,456 L 959,456 L 956,456 L 953,457 L 950,457 L 947,458 L 943,458 L 940,459 L 937,460 L 934,460 L 931,461 L 928,462 L 925,464 L 922,465 L 919,466 L 916,468 L 913,469 L 910,471 L 907,473 L 904,475 L 901,477 L 897,480 L 894,482 L 891,485 L 888,487 L 885,490 L 882,493 L 879,496 L 876,498 L 873,501 L 870,504 L 867,506 L 864,509 L 861,512 L 858,514 L 855,516 L 851,518 L 848,520 L 845,521 L 842,523 L 839,524 L 836,524 L 833,525 L 830,525 Z;M 830,400 L 833,400 L 836,401 L 839,402 L 842,404 L 845,406 L 848,408 L 851,410 L 855,413 L 858,416 L 861,419 L 864,422 L 867,425 L 870,428 L 873,431 L 876,434 L 879,436 L 882,439 L 885,441 L 888,443 L 891,445 L 894,446 L 897,447 L 901,449 L 904,450 L 907,450 L 910,451 L 913,452 L 916,452 L 919,453 L 922,453 L 925,453 L 928,453 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,453 L 1100,453 L 1103,453 L 1106,453 L 1109,452 L 1112,452 L 1115,451 L 1118,450 L 1121,450 L 1124,449 L 1128,447 L 1131,446 L 1134,445 L 1137,443 L 1140,441 L 1143,439 L 1146,436 L 1149,434 L 1152,431 L 1155,428 L 1158,425 L 1161,422 L 1164,419 L 1167,416 L 1170,413 L 1174,410 L 1177,408 L 1180,406 L 1183,404 L 1186,402 L 1189,401 L 1192,400 L 1195,400 L 1195,508 L 1192,508 L 1189,507 L 1186,506 L 1183,504 L 1180,502 L 1177,500 L 1174,498 L 1170,495 L 1167,492 L 1164,489 L 1161,486 L 1158,483 L 1155,480 L 1152,477 L 1149,474 L 1146,472 L 1143,469 L 1140,467 L 1137,465 L 1134,463 L 1131,462 L 1128,461 L 1124,459 L 1121,458 L 1118,458 L 1115,457 L 1112,456 L 1109,456 L 1106,455 L 1103,455 L 1100,455 L 1097,455 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,455 L 925,455 L 922,455 L 919,455 L 916,456 L 913,456 L 910,457 L 907,458 L 904,458 L 901,459 L 897,461 L 894,462 L 891,463 L 888,465 L 885,467 L 882,469 L 879,472 L 876,474 L 873,477 L 870,480 L 867,483 L 864,486 L 861,489 L 858,492 L 855,495 L 851,498 L 848,500 L 845,502 L 842,504 L 839,506 L 836,507 L 833,508 L 830,508 Z;M 830,424 L 833,424 L 836,425 L 839,427 L 842,430 L 845,433 L 848,436 L 851,439 L 855,442 L 858,444 L 861,447 L 864,449 L 867,450 L 870,451 L 873,452 L 876,453 L 879,453 L 882,453 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,453 L 1146,453 L 1149,453 L 1152,452 L 1155,451 L 1158,450 L 1161,449 L 1164,447 L 1167,444 L 1170,442 L 1174,439 L 1177,436 L 1180,433 L 1183,430 L 1186,427 L 1189,425 L 1192,424 L 1195,424 L 1195,484 L 1192,484 L 1189,483 L 1186,481 L 1183,478 L 1180,475 L 1177,472 L 1174,469 L 1170,466 L 1167,464 L 1164,461 L 1161,459 L 1158,458 L 1155,457 L 1152,456 L 1149,455 L 1146,455 L 1143,455 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,455 L 879,455 L 876,455 L 873,456 L 870,457 L 867,458 L 864,459 L 861,461 L 858,464 L 855,466 L 851,469 L 848,472 L 845,475 L 842,478 L 839,481 L 836,483 L 833,484 L 830,484 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454 L 1195,454 L 1192,454 L 1189,454 L 1186,454 L 1183,454 L 1180,454 L 1177,454 L 1174,454 L 1170,454 L 1167,454 L 1164,454 L 1161,454 L 1158,454 L 1155,454 L 1152,454 L 1149,454 L 1146,454 L 1143,454 L 1140,454 L 1137,454 L 1134,454 L 1131,454 L 1128,454 L 1124,454 L 1121,454 L 1118,454 L 1115,454 L 1112,454 L 1109,454 L 1106,454 L 1103,454 L 1100,454 L 1097,454 L 1094,454 L 1091,454 L 1088,454 L 1085,454 L 1082,454 L 1078,454 L 1075,454 L 1072,454 L 1069,454 L 1066,454 L 1063,454 L 1060,454 L 1057,454 L 1054,454 L 1051,454 L 1048,454 L 1045,454 L 1042,454 L 1039,454 L 1036,454 L 1032,454 L 1029,454 L 1026,454 L 1023,454 L 1020,454 L 1017,454 L 1014,454 L 1011,454 L 1008,454 L 1005,454 L 1002,454 L 999,454 L 996,454 L 993,454 L 989,454 L 986,454 L 983,454 L 980,454 L 977,454 L 974,454 L 971,454 L 968,454 L 965,454 L 962,454 L 959,454 L 956,454 L 953,454 L 950,454 L 947,454 L 943,454 L 940,454 L 937,454 L 934,454 L 931,454 L 928,454 L 925,454 L 922,454 L 919,454 L 916,454 L 913,454 L 910,454 L 907,454 L 904,454 L 901,454 L 897,454 L 894,454 L 891,454 L 888,454 L 885,454 L 882,454 L 879,454 L 876,454 L 873,454 L 870,454 L 867,454 L 864,454 L 861,454 L 858,454 L 855,454 L 851,454 L 848,454 L 845,454 L 842,454 L 839,454 L 836,454 L 833,454 L 830,454 Z"/&gt;&lt;/path&gt;&#10;&lt;path d="M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454" fill="none" stroke="url(#wg)" stroke-width="3.5" stroke-linecap="round"&gt;&lt;animate attributeName="d" dur="10.0s" repeatCount="indefinite" calcMode="linear" keyTimes="0.0000;0.0275;0.0450;0.0625;0.0800;0.0975;0.1150;0.1325;0.1500;0.1565;0.1629;0.1694;0.1758;0.1823;0.1888;0.1952;0.2017;0.2081;0.2146;0.2210;0.2275;0.2340;0.2404;0.2469;0.2533;0.2598;0.2663;0.2727;0.2792;0.2856;0.2921;0.2985;0.3050;0.3115;0.3179;0.3244;0.3308;0.3373;0.3438;0.3502;0.3567;0.3631;0.3696;0.3760;0.3825;0.3890;0.3954;0.4019;0.4083;0.4148;0.4213;0.4277;0.4342;0.4406;0.4471;0.4535;0.4600;0.4650;0.4700;0.4750;0.4800;0.4850;0.4900;0.5000;0.5275;0.5450;0.5625;0.5800;0.5975;0.6150;0.6325;0.6500;0.6565;0.6629;0.6694;0.6758;0.6823;0.6887;0.6952;0.7017;0.7081;0.7146;0.7210;0.7275;0.7340;0.7404;0.7469;0.7533;0.7598;0.7663;0.7727;0.7792;0.7856;0.7921;0.7985;0.8050;0.8115;0.8179;0.8244;0.8308;0.8373;0.8438;0.8502;0.8567;0.8631;0.8696;0.8760;0.8825;0.8890;0.8954;0.9019;0.9083;0.9148;0.9213;0.9277;0.9342;0.9406;0.9471;0.9535;0.9600;0.9650;0.9700;0.9750;0.9800;0.9850;0.9900;1" values="M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,455 L 845,455 L 848,455 L 851,455 L 855,455 L 858,454 L 861,453 L 864,453 L 867,452 L 870,451 L 873,451 L 876,451 L 879,450 L 882,451 L 885,451 L 888,452 L 891,453 L 894,454 L 897,455 L 901,457 L 904,458 L 907,459 L 910,459 L 913,459 L 916,459 L 919,459 L 922,458 L 925,457 L 928,455 L 931,454 L 934,452 L 937,450 L 940,449 L 943,448 L 947,448 L 950,447 L 953,448 L 956,448 L 959,450 L 962,451 L 965,453 L 968,455 L 971,457 L 974,458 L 977,460 L 980,461 L 983,461 L 986,461 L 989,461 L 993,460 L 996,459 L 999,457 L 1002,455 L 1005,453 L 1008,451 L 1011,449 L 1014,448 L 1017,447 L 1020,447 L 1023,447 L 1026,447 L 1029,448 L 1032,450 L 1036,451 L 1039,453 L 1042,455 L 1045,457 L 1048,459 L 1051,460 L 1054,461 L 1057,461 L 1060,461 L 1063,460 L 1066,459 L 1069,458 L 1072,456 L 1075,455 L 1078,453 L 1082,451 L 1085,450 L 1088,449 L 1091,448 L 1094,448 L 1097,448 L 1100,449 L 1103,450 L 1106,451 L 1109,452 L 1112,454 L 1115,455 L 1118,456 L 1121,457 L 1124,458 L 1128,458 L 1131,458 L 1134,458 L 1137,458 L 1140,457 L 1143,456 L 1146,455 L 1149,454 L 1152,453 L 1155,453 L 1158,452 L 1161,452 L 1164,452 L 1167,452 L 1170,452 L 1174,452 L 1177,453 L 1180,453 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,455 L 858,456 L 861,457 L 864,458 L 867,459 L 870,459 L 873,459 L 876,459 L 879,457 L 882,456 L 885,454 L 888,452 L 891,449 L 894,447 L 897,446 L 901,445 L 904,444 L 907,444 L 910,445 L 913,447 L 916,449 L 919,452 L 922,455 L 925,458 L 928,461 L 931,463 L 934,465 L 937,466 L 940,467 L 943,466 L 947,465 L 950,463 L 953,460 L 956,456 L 959,453 L 962,449 L 965,446 L 968,443 L 971,441 L 974,440 L 977,440 L 980,440 L 983,442 L 986,445 L 989,448 L 993,452 L 996,456 L 999,460 L 1002,463 L 1005,466 L 1008,468 L 1011,469 L 1014,469 L 1017,468 L 1020,466 L 1023,463 L 1026,460 L 1029,456 L 1032,452 L 1036,448 L 1039,445 L 1042,442 L 1045,440 L 1048,440 L 1051,440 L 1054,441 L 1057,443 L 1060,446 L 1063,449 L 1066,453 L 1069,456 L 1072,460 L 1075,463 L 1078,465 L 1082,466 L 1085,467 L 1088,466 L 1091,465 L 1094,463 L 1097,461 L 1100,458 L 1103,455 L 1106,452 L 1109,449 L 1112,447 L 1115,445 L 1118,444 L 1121,444 L 1124,445 L 1128,446 L 1131,447 L 1134,449 L 1137,452 L 1140,454 L 1143,456 L 1146,457 L 1149,459 L 1152,459 L 1155,459 L 1158,459 L 1161,458 L 1164,457 L 1167,456 L 1170,455 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,453 L 848,453 L 851,452 L 855,452 L 858,451 L 861,451 L 864,451 L 867,451 L 870,451 L 873,453 L 876,454 L 879,456 L 882,459 L 885,461 L 888,463 L 891,465 L 894,467 L 897,467 L 901,466 L 904,464 L 907,461 L 910,457 L 913,453 L 916,449 L 919,445 L 922,441 L 925,438 L 928,436 L 931,436 L 934,437 L 937,439 L 940,442 L 943,446 L 947,451 L 950,456 L 953,461 L 956,466 L 959,470 L 962,473 L 965,475 L 968,475 L 971,474 L 974,471 L 977,468 L 980,463 L 983,457 L 986,452 L 989,446 L 993,441 L 996,436 L 999,433 L 1002,432 L 1005,432 L 1008,433 L 1011,436 L 1014,440 L 1017,445 L 1020,451 L 1023,457 L 1026,463 L 1029,468 L 1032,472 L 1036,475 L 1039,476 L 1042,476 L 1045,474 L 1048,471 L 1051,467 L 1054,462 L 1057,456 L 1060,451 L 1063,445 L 1066,441 L 1069,437 L 1072,435 L 1075,434 L 1078,435 L 1082,437 L 1085,439 L 1088,443 L 1091,448 L 1094,453 L 1097,457 L 1100,462 L 1103,465 L 1106,468 L 1109,470 L 1112,470 L 1115,469 L 1118,468 L 1121,465 L 1124,462 L 1128,458 L 1131,455 L 1134,451 L 1137,449 L 1140,447 L 1143,447 L 1146,446 L 1149,447 L 1152,448 L 1155,449 L 1158,451 L 1161,452 L 1164,453 L 1167,454 L 1170,455 L 1174,455 L 1177,455 L 1180,455 L 1183,455 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,455 L 845,455 L 848,455 L 851,456 L 855,456 L 858,456 L 861,456 L 864,455 L 867,454 L 870,452 L 873,451 L 876,449 L 879,447 L 882,445 L 885,444 L 888,444 L 891,444 L 894,445 L 897,448 L 901,451 L 904,455 L 907,459 L 910,464 L 913,468 L 916,472 L 919,475 L 922,477 L 925,476 L 928,474 L 931,470 L 934,465 L 937,459 L 940,452 L 943,445 L 947,439 L 950,434 L 953,430 L 956,427 L 959,427 L 962,428 L 965,431 L 968,436 L 971,442 L 974,449 L 977,457 L 980,465 L 983,471 L 986,477 L 989,481 L 993,483 L 996,484 L 999,482 L 1002,478 L 1005,472 L 1008,466 L 1011,458 L 1014,450 L 1017,442 L 1020,436 L 1023,430 L 1026,426 L 1029,424 L 1032,425 L 1036,427 L 1039,431 L 1042,437 L 1045,443 L 1048,451 L 1051,459 L 1054,466 L 1057,472 L 1060,477 L 1063,480 L 1066,481 L 1069,481 L 1072,478 L 1075,474 L 1078,469 L 1082,463 L 1085,456 L 1088,449 L 1091,443 L 1094,438 L 1097,434 L 1100,432 L 1103,431 L 1106,433 L 1109,436 L 1112,440 L 1115,444 L 1118,449 L 1121,453 L 1124,457 L 1128,460 L 1131,463 L 1134,464 L 1137,464 L 1140,464 L 1143,463 L 1146,461 L 1149,459 L 1152,457 L 1155,456 L 1158,454 L 1161,453 L 1164,452 L 1167,452 L 1170,452 L 1174,452 L 1177,453 L 1180,453 L 1183,453 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,453 L 845,453 L 848,453 L 851,453 L 855,453 L 858,454 L 861,455 L 864,456 L 867,457 L 870,459 L 873,460 L 876,461 L 879,462 L 882,461 L 885,461 L 888,459 L 891,457 L 894,453 L 897,450 L 901,446 L 904,442 L 907,439 L 910,436 L 913,435 L 916,434 L 919,436 L 922,439 L 925,443 L 928,449 L 931,456 L 934,463 L 937,471 L 940,477 L 943,483 L 947,486 L 950,487 L 953,486 L 956,482 L 959,476 L 962,468 L 965,460 L 968,451 L 971,441 L 974,433 L 977,426 L 980,421 L 983,418 L 986,417 L 989,420 L 993,424 L 996,431 L 999,439 L 1002,449 L 1005,459 L 1008,468 L 1011,477 L 1014,484 L 1017,489 L 1020,491 L 1023,491 L 1026,488 L 1029,483 L 1032,476 L 1036,468 L 1039,458 L 1042,448 L 1045,439 L 1048,431 L 1051,425 L 1054,421 L 1057,419 L 1060,419 L 1063,422 L 1066,428 L 1069,434 L 1072,442 L 1075,451 L 1078,460 L 1082,468 L 1085,474 L 1088,478 L 1091,481 L 1094,481 L 1097,479 L 1100,476 L 1103,471 L 1106,466 L 1109,461 L 1112,455 L 1115,450 L 1118,446 L 1121,443 L 1124,442 L 1128,441 L 1131,441 L 1134,443 L 1137,445 L 1140,447 L 1143,449 L 1146,452 L 1149,454 L 1152,455 L 1155,457 L 1158,457 L 1161,457 L 1164,457 L 1167,457 L 1170,456 L 1174,456 L 1177,455 L 1180,455 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,453 L 858,452 L 861,451 L 864,450 L 867,449 L 870,449 L 873,449 L 876,449 L 879,450 L 882,452 L 885,454 L 888,457 L 891,460 L 894,463 L 897,466 L 901,468 L 904,470 L 907,470 L 910,469 L 913,467 L 916,463 L 919,458 L 922,452 L 925,446 L 928,440 L 931,434 L 934,429 L 937,425 L 940,423 L 943,424 L 947,427 L 950,432 L 953,439 L 956,448 L 959,458 L 962,468 L 965,478 L 968,487 L 971,493 L 974,497 L 977,497 L 980,495 L 983,489 L 986,481 L 989,472 L 993,460 L 996,449 L 999,437 L 1002,427 L 1005,419 L 1008,413 L 1011,409 L 1014,409 L 1017,413 L 1020,419 L 1023,427 L 1026,437 L 1029,449 L 1032,460 L 1036,472 L 1039,481 L 1042,489 L 1045,495 L 1048,497 L 1051,497 L 1054,493 L 1057,487 L 1060,478 L 1063,468 L 1066,458 L 1069,448 L 1072,439 L 1075,432 L 1078,427 L 1082,424 L 1085,423 L 1088,425 L 1091,429 L 1094,434 L 1097,440 L 1100,446 L 1103,452 L 1106,458 L 1109,463 L 1112,467 L 1115,469 L 1118,470 L 1121,470 L 1124,468 L 1128,466 L 1131,463 L 1134,460 L 1137,457 L 1140,454 L 1143,452 L 1146,450 L 1149,449 L 1152,449 L 1155,449 L 1158,449 L 1161,450 L 1164,451 L 1167,452 L 1170,453 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,455 L 848,455 L 851,456 L 855,456 L 858,457 L 861,457 L 864,457 L 867,457 L 870,457 L 873,455 L 876,454 L 879,452 L 882,449 L 885,447 L 888,445 L 891,443 L 894,441 L 897,441 L 901,442 L 904,443 L 907,446 L 910,450 L 913,455 L 916,461 L 919,466 L 922,471 L 925,476 L 928,479 L 931,481 L 934,481 L 937,478 L 940,474 L 943,468 L 947,460 L 950,451 L 953,442 L 956,432 L 959,424 L 962,418 L 965,413 L 968,411 L 971,413 L 974,417 L 977,425 L 980,435 L 983,447 L 986,460 L 989,473 L 993,485 L 996,495 L 999,502 L 1002,506 L 1005,506 L 1008,503 L 1011,496 L 1014,486 L 1017,474 L 1020,461 L 1023,447 L 1026,434 L 1029,422 L 1032,412 L 1036,406 L 1039,404 L 1042,405 L 1045,410 L 1048,418 L 1051,427 L 1054,438 L 1057,450 L 1060,461 L 1063,471 L 1066,479 L 1069,485 L 1072,488 L 1075,489 L 1078,487 L 1082,483 L 1085,477 L 1088,471 L 1091,463 L 1094,456 L 1097,449 L 1100,443 L 1103,439 L 1106,436 L 1109,434 L 1112,435 L 1115,436 L 1118,439 L 1121,442 L 1124,446 L 1128,450 L 1131,453 L 1134,457 L 1137,459 L 1140,461 L 1143,461 L 1146,462 L 1149,461 L 1152,460 L 1155,459 L 1158,457 L 1161,456 L 1164,455 L 1167,454 L 1170,453 L 1174,453 L 1177,453 L 1180,453 L 1183,453 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,453 L 836,451 L 839,449 L 842,446 L 845,444 L 848,442 L 851,441 L 855,441 L 858,442 L 861,445 L 864,449 L 867,455 L 870,460 L 873,467 L 876,472 L 879,477 L 882,481 L 885,483 L 888,483 L 891,480 L 894,476 L 897,469 L 901,461 L 904,452 L 907,443 L 910,433 L 913,425 L 916,419 L 919,415 L 922,413 L 925,414 L 928,419 L 931,425 L 934,435 L 937,446 L 940,458 L 943,470 L 947,481 L 950,491 L 953,498 L 956,502 L 959,503 L 962,501 L 965,495 L 968,486 L 971,475 L 974,462 L 977,449 L 980,435 L 983,423 L 986,413 L 989,405 L 993,401 L 996,401 L 999,404 L 1002,411 L 1005,421 L 1008,433 L 1011,447 L 1014,461 L 1017,475 L 1020,487 L 1023,497 L 1026,504 L 1029,507 L 1032,507 L 1036,503 L 1039,495 L 1042,485 L 1045,473 L 1048,459 L 1051,446 L 1054,433 L 1057,422 L 1060,413 L 1063,407 L 1066,405 L 1069,406 L 1072,410 L 1075,417 L 1078,427 L 1082,438 L 1085,450 L 1088,462 L 1091,473 L 1094,483 L 1097,489 L 1100,494 L 1103,495 L 1106,493 L 1109,489 L 1112,483 L 1115,475 L 1118,465 L 1121,456 L 1124,447 L 1128,439 L 1131,432 L 1134,428 L 1137,425 L 1140,425 L 1143,427 L 1146,431 L 1149,436 L 1152,441 L 1155,448 L 1158,453 L 1161,459 L 1164,463 L 1167,466 L 1170,467 L 1174,467 L 1177,466 L 1180,464 L 1183,462 L 1186,459 L 1189,457 L 1192,455 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,451 L 842,448 L 845,445 L 848,442 L 851,440 L 855,438 L 858,438 L 861,439 L 864,442 L 867,446 L 870,452 L 873,458 L 876,465 L 879,471 L 882,477 L 885,482 L 888,485 L 891,486 L 894,484 L 897,480 L 901,474 L 904,466 L 907,457 L 910,447 L 913,437 L 916,427 L 919,420 L 922,414 L 925,411 L 928,411 L 931,414 L 934,420 L 937,429 L 940,439 L 943,452 L 947,464 L 950,477 L 953,488 L 956,496 L 959,503 L 962,505 L 965,505 L 968,500 L 971,492 L 974,482 L 977,469 L 980,455 L 983,441 L 986,428 L 989,416 L 993,407 L 996,401 L 999,399 L 1002,400 L 1005,406 L 1008,415 L 1011,426 L 1014,440 L 1017,454 L 1020,469 L 1023,482 L 1026,493 L 1029,502 L 1032,507 L 1036,509 L 1039,506 L 1042,500 L 1045,491 L 1048,480 L 1051,466 L 1054,452 L 1057,439 L 1060,427 L 1063,416 L 1066,409 L 1069,405 L 1072,404 L 1075,407 L 1078,413 L 1082,422 L 1085,433 L 1088,444 L 1091,457 L 1094,468 L 1097,478 L 1100,486 L 1103,492 L 1106,495 L 1109,494 L 1112,491 L 1115,486 L 1118,478 L 1121,470 L 1124,460 L 1128,451 L 1131,443 L 1134,436 L 1137,430 L 1140,427 L 1143,426 L 1146,427 L 1149,430 L 1152,434 L 1155,439 L 1158,445 L 1161,451 L 1164,456 L 1167,460 L 1170,463 L 1174,465 L 1177,466 L 1180,465 L 1183,463 L 1186,461 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,455 L 839,454 L 842,451 L 845,448 L 848,445 L 851,441 L 855,438 L 858,436 L 861,435 L 864,436 L 867,439 L 870,443 L 873,448 L 876,455 L 879,462 L 882,470 L 885,476 L 888,482 L 891,486 L 894,488 L 897,488 L 901,485 L 904,479 L 907,471 L 910,462 L 913,452 L 916,441 L 919,430 L 922,421 L 925,414 L 928,410 L 931,408 L 934,410 L 937,415 L 940,423 L 943,433 L 947,445 L 950,458 L 953,471 L 956,484 L 959,494 L 962,502 L 965,506 L 968,507 L 971,505 L 974,498 L 977,489 L 980,476 L 983,462 L 986,448 L 989,433 L 993,420 L 996,410 L 999,402 L 1002,398 L 1005,398 L 1008,401 L 1011,409 L 1014,419 L 1017,432 L 1020,447 L 1023,462 L 1026,476 L 1029,489 L 1032,499 L 1036,506 L 1039,510 L 1042,509 L 1045,505 L 1048,497 L 1051,486 L 1054,473 L 1057,459 L 1060,445 L 1063,432 L 1066,421 L 1069,412 L 1072,406 L 1075,404 L 1078,405 L 1082,410 L 1085,417 L 1088,427 L 1091,439 L 1094,451 L 1097,463 L 1100,473 L 1103,483 L 1106,489 L 1109,493 L 1112,495 L 1115,493 L 1118,488 L 1121,482 L 1124,474 L 1128,465 L 1131,456 L 1134,447 L 1137,439 L 1140,433 L 1143,429 L 1146,427 L 1149,427 L 1152,429 L 1155,433 L 1158,438 L 1161,443 L 1164,449 L 1167,454 L 1170,458 L 1174,461 L 1177,463 L 1180,464 L 1183,463 L 1186,461 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,457 L 839,457 L 842,455 L 845,452 L 848,449 L 851,445 L 855,441 L 858,437 L 861,434 L 864,433 L 867,433 L 870,435 L 873,439 L 876,444 L 879,451 L 882,459 L 885,467 L 888,475 L 891,482 L 894,487 L 897,490 L 901,491 L 904,489 L 907,484 L 910,477 L 913,468 L 916,457 L 919,446 L 922,434 L 925,424 L 928,415 L 931,409 L 934,406 L 937,406 L 940,410 L 943,417 L 947,427 L 950,438 L 953,452 L 956,466 L 959,479 L 962,491 L 965,500 L 968,506 L 971,509 L 974,508 L 977,503 L 980,495 L 983,483 L 986,470 L 989,455 L 993,440 L 996,426 L 999,413 L 1002,404 L 1005,398 L 1008,396 L 1011,398 L 1014,404 L 1017,413 L 1020,425 L 1023,439 L 1026,455 L 1029,470 L 1032,483 L 1036,495 L 1039,504 L 1042,509 L 1045,510 L 1048,508 L 1051,501 L 1054,492 L 1057,480 L 1060,466 L 1063,452 L 1066,438 L 1069,426 L 1072,416 L 1075,408 L 1078,404 L 1082,404 L 1085,407 L 1088,413 L 1091,422 L 1094,433 L 1097,445 L 1100,457 L 1103,468 L 1106,478 L 1109,486 L 1112,491 L 1115,494 L 1118,493 L 1121,490 L 1124,485 L 1128,477 L 1131,469 L 1134,460 L 1137,451 L 1140,443 L 1143,437 L 1146,432 L 1149,429 L 1152,429 L 1155,430 L 1158,433 L 1161,437 L 1164,442 L 1167,447 L 1170,452 L 1174,456 L 1177,459 L 1180,461 L 1183,462 L 1186,461 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,459 L 842,459 L 845,457 L 848,454 L 851,450 L 855,445 L 858,441 L 861,436 L 864,433 L 867,431 L 870,430 L 873,432 L 876,435 L 879,440 L 882,447 L 885,455 L 888,464 L 891,472 L 894,480 L 897,487 L 901,491 L 904,493 L 907,492 L 910,488 L 913,482 L 916,473 L 919,463 L 922,451 L 925,439 L 928,428 L 931,418 L 934,410 L 937,405 L 940,404 L 943,406 L 947,412 L 950,420 L 953,432 L 956,445 L 959,459 L 962,473 L 965,486 L 968,497 L 971,505 L 974,510 L 977,511 L 980,508 L 983,501 L 986,490 L 989,477 L 993,462 L 996,447 L 999,432 L 1002,418 L 1005,407 L 1008,399 L 1011,395 L 1014,395 L 1017,399 L 1020,407 L 1023,418 L 1026,432 L 1029,447 L 1032,462 L 1036,477 L 1039,490 L 1042,501 L 1045,508 L 1048,511 L 1051,510 L 1054,505 L 1057,497 L 1060,486 L 1063,473 L 1066,459 L 1069,445 L 1072,432 L 1075,420 L 1078,412 L 1082,406 L 1085,404 L 1088,405 L 1091,410 L 1094,418 L 1097,428 L 1100,439 L 1103,451 L 1106,463 L 1109,473 L 1112,482 L 1115,488 L 1118,492 L 1121,493 L 1124,491 L 1128,487 L 1131,480 L 1134,472 L 1137,464 L 1140,455 L 1143,447 L 1146,440 L 1149,435 L 1152,432 L 1155,430 L 1158,431 L 1161,433 L 1164,436 L 1167,441 L 1170,445 L 1174,450 L 1177,454 L 1180,457 L 1183,459 L 1186,459 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,460 L 839,461 L 842,462 L 845,461 L 848,459 L 851,456 L 855,451 L 858,446 L 861,441 L 864,436 L 867,432 L 870,429 L 873,428 L 876,429 L 879,431 L 882,436 L 885,443 L 888,451 L 891,460 L 894,469 L 897,478 L 901,485 L 904,491 L 907,494 L 910,495 L 913,492 L 916,487 L 919,479 L 922,469 L 925,457 L 928,445 L 931,432 L 934,421 L 937,412 L 940,406 L 943,403 L 947,403 L 950,407 L 953,415 L 956,425 L 959,438 L 962,452 L 965,467 L 968,481 L 971,493 L 974,503 L 977,509 L 980,512 L 983,511 L 986,505 L 989,496 L 993,484 L 996,470 L 999,455 L 1002,439 L 1005,424 L 1008,412 L 1011,402 L 1014,396 L 1017,394 L 1020,396 L 1023,403 L 1026,412 L 1029,425 L 1032,440 L 1036,455 L 1039,470 L 1042,484 L 1045,496 L 1048,505 L 1051,510 L 1054,511 L 1057,508 L 1060,501 L 1063,492 L 1066,480 L 1069,466 L 1072,452 L 1075,438 L 1078,426 L 1082,416 L 1085,409 L 1088,405 L 1091,405 L 1094,408 L 1097,414 L 1100,423 L 1103,434 L 1106,445 L 1109,457 L 1112,468 L 1115,477 L 1118,485 L 1121,489 L 1124,492 L 1128,491 L 1131,488 L 1134,482 L 1137,475 L 1140,467 L 1143,459 L 1146,451 L 1149,444 L 1152,439 L 1155,435 L 1158,433 L 1161,432 L 1164,434 L 1167,436 L 1170,440 L 1174,444 L 1177,449 L 1180,452 L 1183,455 L 1186,457 L 1189,457 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,460 L 839,462 L 842,464 L 845,464 L 848,464 L 851,462 L 855,458 L 858,454 L 861,448 L 864,443 L 867,437 L 870,432 L 873,428 L 876,426 L 879,426 L 882,428 L 885,432 L 888,439 L 891,447 L 894,456 L 897,465 L 901,475 L 904,483 L 907,490 L 910,495 L 913,497 L 916,495 L 919,491 L 922,484 L 925,475 L 928,463 L 931,450 L 934,438 L 937,426 L 940,415 L 943,407 L 947,402 L 950,401 L 953,404 L 956,410 L 959,419 L 962,431 L 965,445 L 968,460 L 971,474 L 974,488 L 977,499 L 980,507 L 983,512 L 986,512 L 989,509 L 993,502 L 996,491 L 999,477 L 1002,462 L 1005,447 L 1008,431 L 1011,418 L 1014,406 L 1017,399 L 1020,395 L 1023,395 L 1026,399 L 1029,407 L 1032,419 L 1036,432 L 1039,447 L 1042,463 L 1045,477 L 1048,490 L 1051,500 L 1054,507 L 1057,510 L 1060,509 L 1063,504 L 1066,496 L 1069,485 L 1072,472 L 1075,459 L 1078,445 L 1082,432 L 1085,421 L 1088,413 L 1091,407 L 1094,406 L 1097,407 L 1100,412 L 1103,420 L 1106,429 L 1109,440 L 1112,451 L 1115,462 L 1118,472 L 1121,480 L 1124,486 L 1128,489 L 1131,490 L 1134,488 L 1137,484 L 1140,478 L 1143,470 L 1146,463 L 1149,455 L 1152,448 L 1155,442 L 1158,438 L 1161,435 L 1164,434 L 1167,435 L 1170,437 L 1174,440 L 1177,444 L 1180,448 L 1183,451 L 1186,454 L 1189,455 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,459 L 839,461 L 842,464 L 845,466 L 848,467 L 851,466 L 855,464 L 858,461 L 861,456 L 864,451 L 867,444 L 870,438 L 873,433 L 876,428 L 879,425 L 882,424 L 885,425 L 888,428 L 891,434 L 894,442 L 897,451 L 901,461 L 904,471 L 907,480 L 910,488 L 913,494 L 916,497 L 919,498 L 922,495 L 925,489 L 928,480 L 931,469 L 934,457 L 937,444 L 940,431 L 943,419 L 947,410 L 950,404 L 953,401 L 956,401 L 959,406 L 962,414 L 965,424 L 968,438 L 971,452 L 974,467 L 977,482 L 980,494 L 983,504 L 986,510 L 989,513 L 993,511 L 996,506 L 999,496 L 1002,484 L 1005,470 L 1008,454 L 1011,439 L 1014,424 L 1017,412 L 1020,402 L 1023,396 L 1026,395 L 1029,397 L 1032,403 L 1036,413 L 1039,426 L 1042,440 L 1045,455 L 1048,470 L 1051,484 L 1054,495 L 1057,504 L 1060,508 L 1063,509 L 1066,506 L 1069,500 L 1072,490 L 1075,478 L 1078,465 L 1082,451 L 1085,438 L 1088,427 L 1091,417 L 1094,411 L 1097,408 L 1100,408 L 1103,411 L 1106,417 L 1109,425 L 1112,435 L 1115,446 L 1118,457 L 1121,467 L 1124,476 L 1128,482 L 1131,486 L 1134,488 L 1137,487 L 1140,484 L 1143,479 L 1146,473 L 1149,466 L 1152,458 L 1155,451 L 1158,446 L 1161,441 L 1164,438 L 1167,437 L 1170,437 L 1174,439 L 1177,441 L 1180,445 L 1183,448 L 1186,451 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,455 L 836,457 L 839,460 L 842,463 L 845,465 L 848,468 L 851,469 L 855,469 L 858,467 L 861,464 L 864,459 L 867,453 L 870,447 L 873,440 L 876,434 L 879,428 L 882,424 L 885,422 L 888,423 L 891,425 L 894,430 L 897,437 L 901,446 L 904,456 L 907,466 L 910,477 L 913,486 L 916,493 L 919,497 L 922,499 L 925,498 L 928,493 L 931,485 L 934,475 L 937,463 L 940,450 L 943,437 L 947,425 L 950,414 L 953,406 L 956,401 L 959,400 L 962,403 L 965,409 L 968,419 L 971,431 L 974,445 L 977,460 L 980,475 L 983,488 L 986,499 L 989,507 L 993,512 L 996,512 L 999,509 L 1002,501 L 1005,490 L 1008,477 L 1011,462 L 1014,446 L 1017,431 L 1020,418 L 1023,407 L 1026,399 L 1029,396 L 1032,396 L 1036,401 L 1039,409 L 1042,420 L 1045,433 L 1048,448 L 1051,463 L 1054,477 L 1057,489 L 1060,499 L 1063,505 L 1066,508 L 1069,507 L 1072,502 L 1075,494 L 1078,483 L 1082,471 L 1085,458 L 1088,445 L 1091,433 L 1094,423 L 1097,415 L 1100,410 L 1103,409 L 1106,411 L 1109,415 L 1112,422 L 1115,431 L 1118,442 L 1121,452 L 1124,462 L 1128,471 L 1131,478 L 1134,483 L 1137,485 L 1140,486 L 1143,484 L 1146,480 L 1149,474 L 1152,468 L 1155,461 L 1158,455 L 1161,449 L 1164,444 L 1167,441 L 1170,439 L 1174,439 L 1177,440 L 1180,443 L 1183,445 L 1186,448 L 1189,451 L 1192,453 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,457 L 842,460 L 845,463 L 848,466 L 851,469 L 855,471 L 858,471 L 861,470 L 864,467 L 867,462 L 870,456 L 873,450 L 876,443 L 879,436 L 882,430 L 885,425 L 888,422 L 891,421 L 894,422 L 897,427 L 901,433 L 904,441 L 907,451 L 910,462 L 913,472 L 916,482 L 919,490 L 922,496 L 925,499 L 928,499 L 931,496 L 934,490 L 937,481 L 940,469 L 943,456 L 947,443 L 950,430 L 953,419 L 956,409 L 959,403 L 962,400 L 965,401 L 968,406 L 971,414 L 974,425 L 977,438 L 980,453 L 983,468 L 986,482 L 989,494 L 993,503 L 996,510 L 999,512 L 1002,510 L 1005,505 L 1008,495 L 1011,483 L 1014,469 L 1017,454 L 1020,439 L 1023,425 L 1026,413 L 1029,404 L 1032,398 L 1036,397 L 1039,399 L 1042,405 L 1045,415 L 1048,427 L 1051,441 L 1054,456 L 1057,470 L 1060,483 L 1063,493 L 1066,501 L 1069,505 L 1072,506 L 1075,503 L 1078,497 L 1082,488 L 1085,476 L 1088,464 L 1091,451 L 1094,439 L 1097,429 L 1100,420 L 1103,414 L 1106,411 L 1109,412 L 1112,415 L 1115,421 L 1118,428 L 1121,437 L 1124,447 L 1128,457 L 1131,466 L 1134,473 L 1137,479 L 1140,482 L 1143,483 L 1146,482 L 1149,479 L 1152,475 L 1155,469 L 1158,463 L 1161,457 L 1164,452 L 1167,447 L 1170,444 L 1174,442 L 1177,442 L 1180,443 L 1183,444 L 1186,447 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,453 L 839,454 L 842,457 L 845,460 L 848,463 L 851,467 L 855,470 L 858,472 L 861,473 L 864,472 L 867,469 L 870,465 L 873,460 L 876,453 L 879,446 L 882,438 L 885,432 L 888,426 L 891,422 L 894,420 L 897,420 L 901,423 L 904,429 L 907,437 L 910,446 L 913,456 L 916,467 L 919,478 L 922,487 L 925,494 L 928,498 L 931,500 L 934,498 L 937,493 L 940,485 L 943,475 L 947,463 L 950,450 L 953,437 L 956,424 L 959,414 L 962,406 L 965,402 L 968,401 L 971,403 L 974,410 L 977,419 L 980,432 L 983,446 L 986,460 L 989,475 L 993,488 L 996,498 L 999,506 L 1002,510 L 1005,510 L 1008,507 L 1011,499 L 1014,489 L 1017,476 L 1020,461 L 1023,446 L 1026,432 L 1029,419 L 1032,409 L 1036,402 L 1039,398 L 1042,399 L 1045,403 L 1048,411 L 1051,422 L 1054,435 L 1057,449 L 1060,463 L 1063,476 L 1066,487 L 1069,496 L 1072,502 L 1075,504 L 1078,503 L 1082,498 L 1085,491 L 1088,481 L 1091,469 L 1094,457 L 1097,445 L 1100,435 L 1103,425 L 1106,419 L 1109,415 L 1112,413 L 1115,415 L 1118,420 L 1121,426 L 1124,434 L 1128,443 L 1131,452 L 1134,461 L 1137,469 L 1140,475 L 1143,479 L 1146,481 L 1149,481 L 1152,479 L 1155,475 L 1158,470 L 1161,465 L 1164,459 L 1167,454 L 1170,450 L 1174,447 L 1177,445 L 1180,444 L 1183,445 L 1186,447 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,452 L 836,451 L 839,451 L 842,453 L 845,456 L 848,459 L 851,463 L 855,467 L 858,470 L 861,473 L 864,474 L 867,474 L 870,472 L 873,468 L 876,463 L 879,457 L 882,449 L 885,442 L 888,434 L 891,428 L 894,423 L 897,420 L 901,419 L 904,421 L 907,426 L 910,432 L 913,441 L 916,451 L 919,462 L 922,473 L 925,483 L 928,491 L 931,497 L 934,500 L 937,499 L 940,496 L 943,489 L 947,480 L 950,469 L 953,456 L 956,443 L 959,430 L 962,419 L 965,410 L 968,404 L 971,401 L 974,402 L 977,407 L 980,415 L 983,426 L 986,439 L 989,453 L 993,467 L 996,481 L 999,493 L 1002,502 L 1005,507 L 1008,510 L 1011,508 L 1014,502 L 1017,493 L 1020,481 L 1023,468 L 1026,453 L 1029,439 L 1032,426 L 1036,415 L 1039,406 L 1042,401 L 1045,400 L 1048,403 L 1051,409 L 1054,418 L 1057,429 L 1060,442 L 1063,456 L 1066,469 L 1069,481 L 1072,491 L 1075,498 L 1078,501 L 1082,502 L 1085,499 L 1088,493 L 1091,484 L 1094,474 L 1097,463 L 1100,451 L 1103,440 L 1106,431 L 1109,423 L 1112,418 L 1115,416 L 1118,417 L 1121,420 L 1124,425 L 1128,432 L 1131,440 L 1134,448 L 1137,457 L 1140,464 L 1143,470 L 1146,475 L 1149,478 L 1152,478 L 1155,477 L 1158,474 L 1161,471 L 1164,466 L 1167,461 L 1170,456 L 1174,452 L 1177,449 L 1180,447 L 1183,447 L 1186,447 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,450 L 839,449 L 842,450 L 845,451 L 848,454 L 851,458 L 855,462 L 858,466 L 861,470 L 864,473 L 867,475 L 870,476 L 873,474 L 876,471 L 879,466 L 882,460 L 885,453 L 888,445 L 891,437 L 894,430 L 897,424 L 901,420 L 904,419 L 907,419 L 910,423 L 913,428 L 916,436 L 919,446 L 922,457 L 925,468 L 928,478 L 931,487 L 934,494 L 937,498 L 940,500 L 943,498 L 947,493 L 950,485 L 953,474 L 956,462 L 959,449 L 962,437 L 965,425 L 968,415 L 971,407 L 974,403 L 977,402 L 980,405 L 983,412 L 986,421 L 989,433 L 993,446 L 996,460 L 999,474 L 1002,486 L 1005,497 L 1008,504 L 1011,508 L 1014,508 L 1017,504 L 1020,497 L 1023,486 L 1026,474 L 1029,460 L 1032,446 L 1036,433 L 1039,421 L 1042,412 L 1045,405 L 1048,402 L 1051,403 L 1054,407 L 1057,415 L 1060,425 L 1063,437 L 1066,449 L 1069,462 L 1072,474 L 1075,485 L 1078,493 L 1082,498 L 1085,500 L 1088,498 L 1091,494 L 1094,487 L 1097,478 L 1100,468 L 1103,457 L 1106,446 L 1109,436 L 1112,428 L 1115,423 L 1118,419 L 1121,419 L 1124,420 L 1128,424 L 1131,430 L 1134,437 L 1137,445 L 1140,453 L 1143,460 L 1146,466 L 1149,471 L 1152,474 L 1155,476 L 1158,475 L 1161,473 L 1164,470 L 1167,466 L 1170,462 L 1174,458 L 1177,454 L 1180,451 L 1183,450 L 1186,449 L 1189,450 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,448 L 842,447 L 845,448 L 848,450 L 851,452 L 855,456 L 858,461 L 861,465 L 864,470 L 867,473 L 870,476 L 873,477 L 876,476 L 879,474 L 882,470 L 885,464 L 888,457 L 891,449 L 894,441 L 897,433 L 901,426 L 904,421 L 907,419 L 910,418 L 913,420 L 916,425 L 919,432 L 922,441 L 925,451 L 928,462 L 931,473 L 934,483 L 937,491 L 940,496 L 943,499 L 947,499 L 950,495 L 953,489 L 956,479 L 959,468 L 962,456 L 965,443 L 968,431 L 971,420 L 974,411 L 977,406 L 980,403 L 983,404 L 986,409 L 989,417 L 993,427 L 996,440 L 999,453 L 1002,467 L 1005,480 L 1008,491 L 1011,499 L 1014,505 L 1017,506 L 1020,504 L 1023,499 L 1026,491 L 1029,479 L 1032,467 L 1036,453 L 1039,440 L 1042,428 L 1045,417 L 1048,410 L 1051,405 L 1054,404 L 1057,407 L 1060,412 L 1063,421 L 1066,432 L 1069,444 L 1072,456 L 1075,468 L 1078,479 L 1082,487 L 1085,494 L 1088,497 L 1091,497 L 1094,494 L 1097,489 L 1100,481 L 1103,472 L 1106,462 L 1109,451 L 1112,442 L 1115,434 L 1118,427 L 1121,423 L 1124,421 L 1128,422 L 1131,424 L 1134,429 L 1137,435 L 1140,442 L 1143,449 L 1146,456 L 1149,463 L 1152,468 L 1155,471 L 1158,473 L 1161,473 L 1164,472 L 1167,469 L 1170,466 L 1174,462 L 1177,459 L 1180,455 L 1183,453 L 1186,451 L 1189,451 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,449 L 839,447 L 842,446 L 845,445 L 848,446 L 851,448 L 855,450 L 858,454 L 861,459 L 864,464 L 867,469 L 870,473 L 873,476 L 876,478 L 879,478 L 882,476 L 885,473 L 888,467 L 891,460 L 894,453 L 897,444 L 901,436 L 904,429 L 907,423 L 910,419 L 913,418 L 916,419 L 919,422 L 922,428 L 925,437 L 928,446 L 931,457 L 934,468 L 937,478 L 940,487 L 943,494 L 947,498 L 950,499 L 953,497 L 956,492 L 959,484 L 962,474 L 965,462 L 968,449 L 971,437 L 974,425 L 977,416 L 980,409 L 983,405 L 986,404 L 989,407 L 993,414 L 996,423 L 999,434 L 1002,447 L 1005,460 L 1008,473 L 1011,485 L 1014,494 L 1017,501 L 1020,505 L 1023,504 L 1026,501 L 1029,494 L 1032,484 L 1036,472 L 1039,460 L 1042,446 L 1045,434 L 1048,423 L 1051,414 L 1054,409 L 1057,406 L 1060,407 L 1063,411 L 1066,418 L 1069,427 L 1072,438 L 1075,450 L 1078,462 L 1082,473 L 1085,482 L 1088,489 L 1091,494 L 1094,495 L 1097,494 L 1100,490 L 1103,483 L 1106,475 L 1109,466 L 1112,456 L 1115,447 L 1118,438 L 1121,432 L 1124,427 L 1128,424 L 1131,424 L 1134,425 L 1137,429 L 1140,434 L 1143,440 L 1146,447 L 1149,453 L 1152,459 L 1155,464 L 1158,468 L 1161,470 L 1164,471 L 1167,470 L 1170,468 L 1174,465 L 1177,462 L 1180,459 L 1183,456 L 1186,454 L 1189,453 L 1192,453 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,448 L 842,446 L 845,444 L 848,444 L 851,444 L 855,446 L 858,448 L 861,452 L 864,457 L 867,462 L 870,467 L 873,472 L 876,476 L 879,478 L 882,479 L 885,478 L 888,475 L 891,470 L 894,464 L 897,457 L 901,448 L 904,440 L 907,432 L 910,425 L 913,421 L 916,418 L 919,418 L 922,420 L 925,425 L 928,432 L 931,441 L 934,452 L 937,463 L 940,473 L 943,483 L 947,491 L 950,496 L 953,498 L 956,498 L 959,494 L 962,488 L 965,479 L 968,468 L 971,455 L 974,443 L 977,431 L 980,421 L 983,413 L 986,407 L 989,405 L 993,406 L 996,411 L 999,419 L 1002,429 L 1005,441 L 1008,454 L 1011,467 L 1014,479 L 1017,489 L 1020,497 L 1023,502 L 1026,503 L 1029,501 L 1032,496 L 1036,488 L 1039,478 L 1042,466 L 1045,453 L 1048,440 L 1051,429 L 1054,420 L 1057,413 L 1060,409 L 1063,408 L 1066,410 L 1069,416 L 1072,424 L 1075,434 L 1078,445 L 1082,456 L 1085,467 L 1088,477 L 1091,484 L 1094,490 L 1097,493 L 1100,493 L 1103,490 L 1106,485 L 1109,478 L 1112,469 L 1115,460 L 1118,451 L 1121,443 L 1124,436 L 1128,431 L 1131,427 L 1134,426 L 1137,426 L 1140,429 L 1143,433 L 1146,438 L 1149,444 L 1152,450 L 1155,456 L 1158,461 L 1161,465 L 1164,467 L 1167,468 L 1170,468 L 1174,467 L 1177,465 L 1180,462 L 1183,459 L 1186,457 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,453 L 836,452 L 839,449 L 842,447 L 845,445 L 848,443 L 851,442 L 855,442 L 858,443 L 861,446 L 864,450 L 867,455 L 870,460 L 873,465 L 876,471 L 879,475 L 882,478 L 885,480 L 888,480 L 891,478 L 894,474 L 897,468 L 901,461 L 904,452 L 907,444 L 910,435 L 913,428 L 916,422 L 919,418 L 922,417 L 925,418 L 928,422 L 931,428 L 934,437 L 937,447 L 940,457 L 943,468 L 947,478 L 950,487 L 953,494 L 956,498 L 959,498 L 962,496 L 965,491 L 968,483 L 971,473 L 974,461 L 977,449 L 980,437 L 983,426 L 986,417 L 989,410 L 993,406 L 996,406 L 999,409 L 1002,415 L 1005,424 L 1008,435 L 1011,448 L 1014,460 L 1017,473 L 1020,484 L 1023,493 L 1026,499 L 1029,502 L 1032,502 L 1036,498 L 1039,491 L 1042,482 L 1045,471 L 1048,459 L 1051,447 L 1054,435 L 1057,425 L 1060,417 L 1063,412 L 1066,410 L 1069,410 L 1072,414 L 1075,421 L 1078,430 L 1082,440 L 1085,451 L 1088,461 L 1091,471 L 1094,480 L 1097,486 L 1100,490 L 1103,491 L 1106,490 L 1109,486 L 1112,480 L 1115,473 L 1118,464 L 1121,456 L 1124,447 L 1128,440 L 1131,434 L 1134,430 L 1137,428 L 1140,428 L 1143,430 L 1146,433 L 1149,437 L 1152,443 L 1155,448 L 1158,453 L 1161,458 L 1164,462 L 1167,465 L 1170,466 L 1174,466 L 1177,465 L 1180,463 L 1183,461 L 1186,459 L 1189,456 L 1192,455 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,452 L 842,449 L 845,446 L 848,444 L 851,442 L 855,440 L 858,440 L 861,441 L 864,444 L 867,447 L 870,452 L 873,457 L 876,463 L 879,469 L 882,474 L 885,478 L 888,481 L 891,481 L 894,480 L 897,477 L 901,471 L 904,465 L 907,456 L 910,448 L 913,439 L 916,431 L 919,424 L 922,419 L 925,417 L 928,417 L 931,419 L 934,424 L 937,432 L 940,441 L 943,452 L 947,463 L 950,474 L 953,483 L 956,491 L 959,496 L 962,499 L 965,498 L 968,494 L 971,487 L 974,478 L 977,467 L 980,455 L 983,443 L 986,431 L 989,421 L 993,413 L 996,408 L 999,406 L 1002,408 L 1005,412 L 1008,420 L 1011,430 L 1014,442 L 1017,454 L 1020,467 L 1023,478 L 1026,488 L 1029,496 L 1032,500 L 1036,501 L 1039,499 L 1042,494 L 1045,486 L 1048,476 L 1051,465 L 1054,453 L 1057,441 L 1060,430 L 1063,421 L 1066,415 L 1069,411 L 1072,411 L 1075,413 L 1078,419 L 1082,426 L 1085,435 L 1088,446 L 1091,456 L 1094,466 L 1097,475 L 1100,482 L 1103,487 L 1106,489 L 1109,489 L 1112,486 L 1115,482 L 1118,475 L 1121,468 L 1124,460 L 1128,452 L 1131,444 L 1134,438 L 1137,433 L 1140,431 L 1143,430 L 1146,430 L 1149,433 L 1152,437 L 1155,441 L 1158,446 L 1161,451 L 1164,456 L 1167,460 L 1170,462 L 1174,464 L 1177,464 L 1180,463 L 1183,462 L 1186,460 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,455 L 836,455 L 839,454 L 842,452 L 845,449 L 848,446 L 851,443 L 855,441 L 858,439 L 861,438 L 864,439 L 867,441 L 870,444 L 873,449 L 876,455 L 879,461 L 882,467 L 885,473 L 888,478 L 891,481 L 894,483 L 897,482 L 901,480 L 904,475 L 907,469 L 910,461 L 913,452 L 916,443 L 919,434 L 922,426 L 925,420 L 928,417 L 931,415 L 934,417 L 937,421 L 940,428 L 943,436 L 947,447 L 950,458 L 953,469 L 956,479 L 959,488 L 962,494 L 965,498 L 968,499 L 971,497 L 974,491 L 977,483 L 980,473 L 983,461 L 986,449 L 989,437 L 993,426 L 996,417 L 999,410 L 1002,407 L 1005,406 L 1008,410 L 1011,416 L 1014,425 L 1017,436 L 1020,448 L 1023,461 L 1026,473 L 1029,483 L 1032,492 L 1036,498 L 1039,501 L 1042,500 L 1045,497 L 1048,490 L 1051,481 L 1054,470 L 1057,458 L 1060,447 L 1063,436 L 1066,426 L 1069,418 L 1072,414 L 1075,412 L 1078,413 L 1082,417 L 1085,423 L 1088,431 L 1091,441 L 1094,451 L 1097,461 L 1100,470 L 1103,478 L 1106,484 L 1109,487 L 1112,488 L 1115,487 L 1118,483 L 1121,477 L 1124,471 L 1128,463 L 1131,455 L 1134,448 L 1137,442 L 1140,437 L 1143,433 L 1146,432 L 1149,432 L 1152,433 L 1155,436 L 1158,440 L 1161,445 L 1164,449 L 1167,454 L 1170,457 L 1174,460 L 1177,462 L 1180,462 L 1183,462 L 1186,460 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,457 L 839,456 L 842,455 L 845,453 L 848,450 L 851,446 L 855,443 L 858,440 L 861,438 L 864,436 L 867,437 L 870,438 L 873,442 L 876,446 L 879,452 L 882,458 L 885,465 L 888,471 L 891,477 L 894,481 L 897,484 L 901,484 L 904,483 L 907,479 L 910,473 L 913,465 L 916,456 L 919,447 L 922,438 L 925,429 L 928,422 L 931,417 L 934,414 L 937,415 L 940,418 L 943,423 L 947,431 L 950,441 L 953,452 L 956,464 L 959,475 L 962,484 L 965,492 L 968,497 L 971,500 L 974,499 L 977,495 L 980,488 L 983,478 L 986,467 L 989,455 L 993,442 L 996,431 L 999,420 L 1002,413 L 1005,408 L 1008,406 L 1011,407 L 1014,412 L 1017,420 L 1020,430 L 1023,442 L 1026,454 L 1029,467 L 1032,478 L 1036,488 L 1039,495 L 1042,500 L 1045,501 L 1048,499 L 1051,493 L 1054,485 L 1057,475 L 1060,464 L 1063,452 L 1066,441 L 1069,431 L 1072,422 L 1075,416 L 1078,413 L 1082,413 L 1085,415 L 1088,420 L 1091,428 L 1094,437 L 1097,446 L 1100,456 L 1103,466 L 1106,474 L 1109,481 L 1112,485 L 1115,487 L 1118,486 L 1121,484 L 1124,479 L 1128,473 L 1131,466 L 1134,459 L 1137,452 L 1140,445 L 1143,440 L 1146,436 L 1149,434 L 1152,433 L 1155,434 L 1158,436 L 1161,440 L 1164,444 L 1167,448 L 1170,452 L 1174,455 L 1177,458 L 1180,460 L 1183,460 L 1186,460 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,458 L 839,459 L 842,458 L 845,456 L 848,454 L 851,451 L 855,447 L 858,443 L 861,439 L 864,437 L 867,435 L 870,434 L 873,436 L 876,438 L 879,443 L 882,448 L 885,455 L 888,462 L 891,469 L 894,476 L 897,481 L 901,484 L 904,486 L 907,485 L 910,482 L 913,477 L 916,470 L 919,461 L 922,452 L 925,442 L 928,432 L 931,424 L 934,418 L 937,414 L 940,413 L 943,414 L 947,419 L 950,426 L 953,436 L 956,446 L 959,458 L 962,470 L 965,480 L 968,490 L 971,496 L 974,500 L 977,501 L 980,498 L 983,492 L 986,484 L 989,473 L 993,461 L 996,448 L 999,436 L 1002,425 L 1005,416 L 1008,409 L 1011,406 L 1014,406 L 1017,409 L 1020,416 L 1023,425 L 1026,436 L 1029,448 L 1032,461 L 1036,473 L 1039,484 L 1042,492 L 1045,498 L 1048,501 L 1051,500 L 1054,496 L 1057,490 L 1060,480 L 1063,470 L 1066,458 L 1069,446 L 1072,436 L 1075,426 L 1078,419 L 1082,414 L 1085,413 L 1088,414 L 1091,418 L 1094,424 L 1097,432 L 1100,442 L 1103,452 L 1106,461 L 1109,470 L 1112,477 L 1115,482 L 1118,485 L 1121,486 L 1124,484 L 1128,481 L 1131,476 L 1134,469 L 1137,462 L 1140,455 L 1143,448 L 1146,443 L 1149,438 L 1152,436 L 1155,434 L 1158,435 L 1161,437 L 1164,439 L 1167,443 L 1170,447 L 1174,451 L 1177,454 L 1180,456 L 1183,458 L 1186,459 L 1189,458 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,460 L 842,460 L 845,460 L 848,458 L 851,455 L 855,452 L 858,448 L 861,443 L 864,439 L 867,436 L 870,433 L 873,432 L 876,433 L 879,435 L 882,439 L 885,445 L 888,452 L 891,459 L 894,467 L 897,474 L 901,480 L 904,485 L 907,488 L 910,488 L 913,486 L 916,481 L 919,475 L 922,466 L 925,456 L 928,446 L 931,436 L 934,427 L 937,419 L 940,414 L 943,411 L 947,412 L 950,415 L 953,421 L 956,430 L 959,441 L 962,452 L 965,464 L 968,476 L 971,486 L 974,495 L 977,500 L 980,502 L 983,501 L 986,497 L 989,489 L 993,479 L 996,467 L 999,454 L 1002,442 L 1005,429 L 1008,419 L 1011,411 L 1014,406 L 1017,404 L 1020,406 L 1023,411 L 1026,419 L 1029,430 L 1032,442 L 1036,455 L 1039,467 L 1042,479 L 1045,489 L 1048,496 L 1051,500 L 1054,501 L 1057,499 L 1060,493 L 1063,485 L 1066,475 L 1069,464 L 1072,452 L 1075,441 L 1078,431 L 1082,422 L 1085,416 L 1088,413 L 1091,413 L 1094,416 L 1097,421 L 1100,428 L 1103,437 L 1106,447 L 1109,457 L 1112,466 L 1115,473 L 1118,480 L 1121,484 L 1124,485 L 1128,485 L 1131,482 L 1134,478 L 1137,472 L 1140,465 L 1143,458 L 1146,452 L 1149,446 L 1152,441 L 1155,438 L 1158,436 L 1161,436 L 1164,437 L 1167,439 L 1170,443 L 1174,446 L 1177,450 L 1180,453 L 1183,455 L 1186,456 L 1189,457 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,459 L 839,461 L 842,462 L 845,463 L 848,462 L 851,460 L 855,458 L 858,454 L 861,449 L 864,444 L 867,439 L 870,435 L 873,432 L 876,430 L 879,430 L 882,432 L 885,435 L 888,441 L 891,448 L 894,455 L 897,464 L 901,472 L 904,479 L 907,485 L 910,489 L 913,490 L 916,489 L 919,486 L 922,480 L 925,471 L 928,462 L 931,451 L 934,440 L 937,430 L 940,421 L 943,414 L 947,410 L 950,409 L 953,411 L 956,416 L 959,424 L 962,434 L 965,446 L 968,459 L 971,471 L 974,483 L 977,492 L 980,499 L 983,503 L 986,504 L 989,501 L 993,494 L 996,485 L 999,474 L 1002,461 L 1005,448 L 1008,435 L 1011,423 L 1014,414 L 1017,407 L 1020,403 L 1023,404 L 1026,407 L 1029,414 L 1032,424 L 1036,436 L 1039,448 L 1042,462 L 1045,474 L 1048,485 L 1051,494 L 1054,499 L 1057,502 L 1060,501 L 1063,497 L 1066,490 L 1069,481 L 1072,470 L 1075,458 L 1078,446 L 1082,435 L 1085,426 L 1088,419 L 1091,414 L 1094,413 L 1097,414 L 1100,418 L 1103,425 L 1106,433 L 1109,442 L 1112,452 L 1115,461 L 1118,470 L 1121,476 L 1124,481 L 1128,484 L 1131,484 L 1134,483 L 1137,479 L 1140,474 L 1143,468 L 1146,461 L 1149,455 L 1152,449 L 1155,444 L 1158,440 L 1161,438 L 1164,437 L 1167,438 L 1170,440 L 1174,443 L 1177,446 L 1180,449 L 1183,452 L 1186,454 L 1189,455 L 1192,455 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,460 L 842,463 L 845,464 L 848,465 L 851,465 L 855,463 L 858,460 L 861,456 L 864,451 L 867,446 L 870,440 L 873,435 L 876,431 L 879,428 L 882,427 L 885,429 L 888,432 L 891,437 L 894,443 L 897,451 L 901,460 L 904,469 L 907,477 L 910,484 L 913,489 L 916,492 L 919,492 L 922,490 L 925,485 L 928,477 L 931,467 L 934,456 L 937,445 L 940,434 L 943,424 L 947,415 L 950,410 L 953,407 L 956,408 L 959,412 L 962,418 L 965,428 L 968,440 L 971,453 L 974,466 L 977,478 L 980,489 L 983,498 L 986,503 L 989,506 L 993,504 L 996,499 L 999,491 L 1002,480 L 1005,468 L 1008,454 L 1011,440 L 1014,428 L 1017,417 L 1020,409 L 1023,403 L 1026,402 L 1029,404 L 1032,409 L 1036,418 L 1039,429 L 1042,442 L 1045,455 L 1048,468 L 1051,480 L 1054,490 L 1057,498 L 1060,502 L 1063,502 L 1066,500 L 1069,494 L 1072,486 L 1075,475 L 1078,464 L 1082,452 L 1085,440 L 1088,430 L 1091,422 L 1094,416 L 1097,413 L 1100,413 L 1103,416 L 1106,422 L 1109,429 L 1112,438 L 1115,447 L 1118,457 L 1121,465 L 1124,473 L 1128,479 L 1131,482 L 1134,484 L 1137,483 L 1140,480 L 1143,476 L 1146,470 L 1149,464 L 1152,458 L 1155,452 L 1158,447 L 1161,443 L 1164,440 L 1167,439 L 1170,439 L 1174,441 L 1177,443 L 1180,446 L 1183,449 L 1186,451 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,455 L 836,457 L 839,459 L 842,462 L 845,464 L 848,466 L 851,467 L 855,467 L 858,466 L 861,463 L 864,459 L 867,453 L 870,448 L 873,441 L 876,436 L 879,431 L 882,427 L 885,425 L 888,425 L 891,428 L 894,432 L 897,439 L 901,447 L 904,456 L 907,465 L 910,475 L 913,483 L 916,489 L 919,493 L 922,495 L 925,494 L 928,489 L 931,483 L 934,473 L 937,462 L 940,450 L 943,438 L 947,427 L 950,417 L 953,410 L 956,406 L 959,405 L 962,407 L 965,413 L 968,422 L 971,433 L 974,446 L 977,459 L 980,473 L 983,485 L 986,495 L 989,503 L 993,507 L 996,507 L 999,504 L 1002,497 L 1005,487 L 1008,475 L 1011,461 L 1014,447 L 1017,433 L 1020,421 L 1023,411 L 1026,404 L 1029,401 L 1032,401 L 1036,405 L 1039,413 L 1042,423 L 1045,435 L 1048,449 L 1051,462 L 1054,475 L 1057,486 L 1060,495 L 1063,501 L 1066,503 L 1069,502 L 1072,498 L 1075,491 L 1078,481 L 1082,470 L 1085,458 L 1088,446 L 1091,435 L 1094,425 L 1097,419 L 1100,414 L 1103,413 L 1106,415 L 1109,419 L 1112,425 L 1115,433 L 1118,443 L 1121,452 L 1124,461 L 1128,469 L 1131,476 L 1134,480 L 1137,483 L 1140,483 L 1143,481 L 1146,477 L 1149,472 L 1152,467 L 1155,460 L 1158,455 L 1161,449 L 1164,445 L 1167,442 L 1170,441 L 1174,441 L 1177,442 L 1180,444 L 1183,446 L 1186,449 L 1189,451 L 1192,453 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,457 L 842,460 L 845,463 L 848,466 L 851,468 L 855,470 L 858,470 L 861,469 L 864,466 L 867,462 L 870,456 L 873,450 L 876,443 L 879,437 L 882,431 L 885,426 L 888,423 L 891,422 L 894,424 L 897,428 L 901,434 L 904,442 L 907,451 L 910,461 L 913,471 L 916,481 L 919,488 L 922,494 L 925,497 L 928,497 L 931,494 L 934,488 L 937,479 L 940,469 L 943,456 L 947,444 L 950,431 L 953,420 L 956,412 L 959,405 L 962,403 L 965,403 L 968,408 L 971,416 L 974,426 L 977,439 L 980,453 L 983,467 L 986,480 L 989,492 L 993,501 L 996,507 L 999,509 L 1002,508 L 1005,502 L 1008,493 L 1011,482 L 1014,468 L 1017,454 L 1020,439 L 1023,426 L 1026,415 L 1029,406 L 1032,401 L 1036,399 L 1039,402 L 1042,408 L 1045,417 L 1048,428 L 1051,442 L 1054,456 L 1057,469 L 1060,481 L 1063,492 L 1066,499 L 1069,503 L 1072,504 L 1075,501 L 1078,495 L 1082,486 L 1085,475 L 1088,464 L 1091,451 L 1094,440 L 1097,430 L 1100,422 L 1103,416 L 1106,413 L 1109,414 L 1112,417 L 1115,422 L 1118,430 L 1121,438 L 1124,448 L 1128,457 L 1131,465 L 1134,472 L 1137,478 L 1140,481 L 1143,482 L 1146,481 L 1149,478 L 1152,474 L 1155,469 L 1158,463 L 1161,457 L 1164,452 L 1167,448 L 1170,445 L 1174,443 L 1177,442 L 1180,443 L 1183,445 L 1186,447 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,453 L 839,454 L 842,457 L 845,460 L 848,463 L 851,467 L 855,470 L 858,472 L 861,473 L 864,472 L 867,469 L 870,465 L 873,460 L 876,453 L 879,446 L 882,438 L 885,432 L 888,426 L 891,422 L 894,420 L 897,420 L 901,423 L 904,429 L 907,437 L 910,446 L 913,456 L 916,467 L 919,478 L 922,487 L 925,494 L 928,498 L 931,500 L 934,498 L 937,493 L 940,485 L 943,475 L 947,463 L 950,450 L 953,437 L 956,424 L 959,414 L 962,406 L 965,402 L 968,401 L 971,403 L 974,410 L 977,419 L 980,432 L 983,446 L 986,460 L 989,475 L 993,488 L 996,498 L 999,506 L 1002,510 L 1005,510 L 1008,507 L 1011,499 L 1014,489 L 1017,476 L 1020,461 L 1023,446 L 1026,432 L 1029,419 L 1032,409 L 1036,402 L 1039,398 L 1042,399 L 1045,403 L 1048,411 L 1051,422 L 1054,435 L 1057,449 L 1060,463 L 1063,476 L 1066,487 L 1069,496 L 1072,502 L 1075,504 L 1078,503 L 1082,498 L 1085,491 L 1088,481 L 1091,469 L 1094,457 L 1097,445 L 1100,435 L 1103,425 L 1106,419 L 1109,415 L 1112,413 L 1115,415 L 1118,420 L 1121,426 L 1124,434 L 1128,443 L 1131,452 L 1134,461 L 1137,469 L 1140,475 L 1143,479 L 1146,481 L 1149,481 L 1152,479 L 1155,475 L 1158,470 L 1161,465 L 1164,459 L 1167,454 L 1170,450 L 1174,447 L 1177,445 L 1180,444 L 1183,445 L 1186,447 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,451 L 839,451 L 842,453 L 845,456 L 848,459 L 851,463 L 855,467 L 858,471 L 861,474 L 864,475 L 867,475 L 870,473 L 873,469 L 876,464 L 879,457 L 882,449 L 885,441 L 888,433 L 891,426 L 894,421 L 897,418 L 901,417 L 904,419 L 907,424 L 910,431 L 913,440 L 916,451 L 919,462 L 922,474 L 925,484 L 928,493 L 931,499 L 934,502 L 937,502 L 940,498 L 943,491 L 947,481 L 950,470 L 953,456 L 956,442 L 959,429 L 962,417 L 965,408 L 968,402 L 971,399 L 974,400 L 977,405 L 980,413 L 983,425 L 986,438 L 989,453 L 993,468 L 996,482 L 999,495 L 1002,504 L 1005,510 L 1008,512 L 1011,510 L 1014,504 L 1017,495 L 1020,483 L 1023,469 L 1026,453 L 1029,438 L 1032,425 L 1036,413 L 1039,404 L 1042,399 L 1045,398 L 1048,400 L 1051,407 L 1054,416 L 1057,428 L 1060,442 L 1063,456 L 1066,470 L 1069,482 L 1072,492 L 1075,500 L 1078,504 L 1082,504 L 1085,501 L 1088,495 L 1091,486 L 1094,475 L 1097,463 L 1100,451 L 1103,440 L 1106,430 L 1109,422 L 1112,417 L 1115,414 L 1118,415 L 1121,418 L 1124,423 L 1128,431 L 1131,439 L 1134,448 L 1137,457 L 1140,465 L 1143,471 L 1146,476 L 1149,479 L 1152,479 L 1155,478 L 1158,475 L 1161,471 L 1164,466 L 1167,461 L 1170,456 L 1174,452 L 1177,449 L 1180,447 L 1183,446 L 1186,447 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,449 L 842,449 L 845,451 L 848,454 L 851,458 L 855,463 L 858,467 L 861,472 L 864,475 L 867,477 L 870,478 L 873,476 L 876,473 L 879,468 L 882,461 L 885,453 L 888,444 L 891,436 L 894,428 L 897,421 L 901,417 L 904,415 L 907,416 L 910,420 L 913,426 L 916,435 L 919,445 L 922,457 L 925,469 L 928,480 L 931,490 L 934,498 L 937,503 L 940,504 L 943,502 L 947,496 L 950,488 L 953,476 L 956,463 L 959,449 L 962,435 L 965,422 L 968,411 L 971,403 L 974,398 L 977,397 L 980,400 L 983,407 L 986,418 L 989,431 L 993,446 L 996,461 L 999,476 L 1002,490 L 1005,501 L 1008,509 L 1011,513 L 1014,513 L 1017,509 L 1020,501 L 1023,490 L 1026,476 L 1029,461 L 1032,446 L 1036,431 L 1039,418 L 1042,407 L 1045,400 L 1048,397 L 1051,398 L 1054,403 L 1057,411 L 1060,422 L 1063,435 L 1066,449 L 1069,463 L 1072,476 L 1075,488 L 1078,496 L 1082,502 L 1085,504 L 1088,503 L 1091,498 L 1094,490 L 1097,480 L 1100,469 L 1103,457 L 1106,445 L 1109,435 L 1112,426 L 1115,420 L 1118,416 L 1121,415 L 1124,417 L 1128,421 L 1131,428 L 1134,436 L 1137,444 L 1140,453 L 1143,461 L 1146,468 L 1149,473 L 1152,476 L 1155,478 L 1158,477 L 1161,475 L 1164,472 L 1167,467 L 1170,463 L 1174,458 L 1177,454 L 1180,451 L 1183,449 L 1186,449 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,448 L 839,447 L 842,446 L 845,447 L 848,449 L 851,452 L 855,457 L 858,462 L 861,467 L 864,472 L 867,476 L 870,479 L 873,480 L 876,479 L 879,477 L 882,472 L 885,465 L 888,457 L 891,448 L 894,439 L 897,430 L 901,423 L 904,417 L 907,414 L 910,413 L 913,416 L 916,421 L 919,429 L 922,439 L 925,451 L 928,463 L 931,476 L 934,487 L 937,496 L 940,502 L 943,505 L 947,505 L 950,501 L 953,493 L 956,483 L 959,470 L 962,456 L 965,441 L 968,427 L 971,415 L 974,405 L 977,399 L 980,396 L 983,397 L 986,403 L 989,412 L 993,424 L 996,438 L 999,453 L 1002,469 L 1005,484 L 1008,496 L 1011,506 L 1014,512 L 1017,514 L 1020,512 L 1023,505 L 1026,496 L 1029,483 L 1032,468 L 1036,453 L 1039,438 L 1042,424 L 1045,412 L 1048,403 L 1051,398 L 1054,397 L 1057,400 L 1060,407 L 1063,416 L 1066,428 L 1069,442 L 1072,456 L 1075,470 L 1078,482 L 1082,492 L 1085,499 L 1088,503 L 1091,503 L 1094,500 L 1097,494 L 1100,485 L 1103,474 L 1106,463 L 1109,451 L 1112,440 L 1115,431 L 1118,423 L 1121,419 L 1124,416 L 1128,417 L 1131,420 L 1134,426 L 1137,433 L 1140,441 L 1143,449 L 1146,457 L 1149,464 L 1152,469 L 1155,473 L 1158,475 L 1161,476 L 1164,474 L 1167,472 L 1170,468 L 1174,464 L 1177,459 L 1180,456 L 1183,453 L 1186,451 L 1189,451 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,448 L 839,446 L 842,444 L 845,444 L 848,444 L 851,446 L 855,450 L 858,454 L 861,460 L 864,465 L 867,471 L 870,476 L 873,480 L 876,482 L 879,482 L 882,480 L 885,476 L 888,469 L 891,461 L 894,452 L 897,443 L 901,433 L 904,425 L 907,418 L 910,413 L 913,411 L 916,413 L 919,417 L 922,424 L 925,433 L 928,445 L 931,458 L 934,470 L 937,482 L 940,493 L 943,501 L 947,506 L 950,507 L 953,504 L 956,498 L 959,489 L 962,477 L 965,463 L 968,448 L 971,434 L 974,420 L 977,409 L 980,401 L 983,396 L 986,396 L 989,399 L 993,406 L 996,417 L 999,431 L 1002,446 L 1005,461 L 1008,477 L 1011,490 L 1014,502 L 1017,509 L 1020,513 L 1023,513 L 1026,509 L 1029,501 L 1032,489 L 1036,476 L 1039,461 L 1042,445 L 1045,431 L 1048,418 L 1051,408 L 1054,401 L 1057,398 L 1060,399 L 1063,404 L 1066,412 L 1069,423 L 1072,436 L 1075,449 L 1078,463 L 1082,476 L 1085,487 L 1088,495 L 1091,501 L 1094,502 L 1097,501 L 1100,496 L 1103,488 L 1106,479 L 1109,468 L 1112,457 L 1115,446 L 1118,436 L 1121,428 L 1124,422 L 1128,419 L 1131,418 L 1134,420 L 1137,424 L 1140,430 L 1143,438 L 1146,445 L 1149,453 L 1152,460 L 1155,466 L 1158,470 L 1161,473 L 1164,474 L 1167,473 L 1170,471 L 1174,468 L 1177,464 L 1180,460 L 1183,457 L 1186,454 L 1189,453 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,449 L 839,447 L 842,444 L 845,442 L 848,441 L 851,442 L 855,444 L 858,447 L 861,452 L 864,457 L 867,464 L 870,470 L 873,475 L 876,480 L 879,483 L 882,484 L 885,483 L 888,480 L 891,474 L 894,466 L 897,457 L 901,447 L 904,437 L 907,428 L 910,420 L 913,414 L 916,411 L 919,410 L 922,413 L 925,419 L 928,428 L 931,439 L 934,451 L 937,464 L 940,477 L 943,489 L 947,498 L 950,504 L 953,507 L 956,507 L 959,502 L 962,494 L 965,484 L 968,470 L 971,456 L 974,441 L 977,426 L 980,414 L 983,404 L 986,398 L 989,395 L 993,397 L 996,402 L 999,412 L 1002,424 L 1005,438 L 1008,454 L 1011,469 L 1014,484 L 1017,496 L 1020,506 L 1023,512 L 1026,513 L 1029,511 L 1032,505 L 1036,495 L 1039,482 L 1042,468 L 1045,453 L 1048,438 L 1051,424 L 1054,413 L 1057,404 L 1060,400 L 1063,399 L 1066,402 L 1069,408 L 1072,418 L 1075,430 L 1078,443 L 1082,457 L 1085,470 L 1088,481 L 1091,491 L 1094,497 L 1097,500 L 1100,500 L 1103,497 L 1106,491 L 1109,483 L 1112,473 L 1115,462 L 1118,451 L 1121,441 L 1124,432 L 1128,426 L 1131,422 L 1134,420 L 1137,421 L 1140,424 L 1143,429 L 1146,435 L 1149,442 L 1152,450 L 1155,457 L 1158,462 L 1161,467 L 1164,470 L 1167,471 L 1170,471 L 1174,469 L 1177,467 L 1180,463 L 1183,460 L 1186,457 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,453 L 836,451 L 839,448 L 842,445 L 845,443 L 848,440 L 851,439 L 855,439 L 858,441 L 861,444 L 864,449 L 867,455 L 870,461 L 873,468 L 876,474 L 879,480 L 882,484 L 885,486 L 888,485 L 891,483 L 894,478 L 897,471 L 901,462 L 904,452 L 907,442 L 910,431 L 913,422 L 916,415 L 919,411 L 922,409 L 925,410 L 928,415 L 931,423 L 934,433 L 937,445 L 940,458 L 943,471 L 947,483 L 950,494 L 953,502 L 956,507 L 959,508 L 962,505 L 965,499 L 968,489 L 971,477 L 974,463 L 977,448 L 980,433 L 983,420 L 986,409 L 989,401 L 993,396 L 996,396 L 999,399 L 1002,407 L 1005,418 L 1008,431 L 1011,446 L 1014,462 L 1017,477 L 1020,490 L 1023,501 L 1026,509 L 1029,512 L 1032,512 L 1036,507 L 1039,499 L 1042,488 L 1045,475 L 1048,460 L 1051,445 L 1054,431 L 1057,419 L 1060,409 L 1063,403 L 1066,400 L 1069,401 L 1072,406 L 1075,414 L 1078,425 L 1082,437 L 1085,450 L 1088,463 L 1091,475 L 1094,485 L 1097,493 L 1100,498 L 1103,499 L 1106,497 L 1109,493 L 1112,486 L 1115,477 L 1118,466 L 1121,456 L 1124,446 L 1128,437 L 1131,430 L 1134,425 L 1137,423 L 1140,422 L 1143,424 L 1146,428 L 1149,434 L 1152,440 L 1155,447 L 1158,453 L 1161,459 L 1164,464 L 1167,467 L 1170,469 L 1174,469 L 1177,468 L 1180,465 L 1183,463 L 1186,460 L 1189,457 L 1192,455 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,451 L 842,448 L 845,445 L 848,442 L 851,439 L 855,437 L 858,437 L 861,438 L 864,441 L 867,446 L 870,452 L 873,458 L 876,465 L 879,472 L 882,478 L 885,483 L 888,486 L 891,487 L 894,486 L 897,481 L 901,475 L 904,467 L 907,457 L 910,446 L 913,436 L 916,426 L 919,418 L 922,412 L 925,409 L 928,409 L 931,412 L 934,418 L 937,427 L 940,439 L 943,452 L 947,465 L 950,478 L 953,489 L 956,499 L 959,505 L 962,508 L 965,507 L 968,502 L 971,494 L 974,483 L 977,470 L 980,455 L 983,440 L 986,426 L 989,414 L 993,405 L 996,398 L 999,396 L 1002,398 L 1005,403 L 1008,413 L 1011,425 L 1014,439 L 1017,454 L 1020,469 L 1023,483 L 1026,495 L 1029,504 L 1032,510 L 1036,511 L 1039,509 L 1042,503 L 1045,493 L 1048,481 L 1051,467 L 1054,452 L 1057,438 L 1060,425 L 1063,415 L 1066,407 L 1069,403 L 1072,402 L 1075,405 L 1078,411 L 1082,420 L 1085,432 L 1088,444 L 1091,457 L 1094,469 L 1097,479 L 1100,488 L 1103,494 L 1106,497 L 1109,496 L 1112,493 L 1115,487 L 1118,480 L 1121,471 L 1124,461 L 1128,451 L 1131,442 L 1134,435 L 1137,429 L 1140,426 L 1143,425 L 1146,426 L 1149,429 L 1152,433 L 1155,439 L 1158,445 L 1161,451 L 1164,456 L 1167,461 L 1170,464 L 1174,466 L 1177,466 L 1180,465 L 1183,464 L 1186,461 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,455 L 839,454 L 842,451 L 845,448 L 848,445 L 851,441 L 855,438 L 858,436 L 861,435 L 864,436 L 867,439 L 870,443 L 873,448 L 876,455 L 879,462 L 882,470 L 885,476 L 888,482 L 891,486 L 894,488 L 897,488 L 901,485 L 904,479 L 907,471 L 910,462 L 913,452 L 916,441 L 919,430 L 922,421 L 925,414 L 928,410 L 931,408 L 934,410 L 937,415 L 940,423 L 943,433 L 947,445 L 950,458 L 953,471 L 956,484 L 959,494 L 962,502 L 965,506 L 968,507 L 971,505 L 974,498 L 977,489 L 980,476 L 983,462 L 986,448 L 989,433 L 993,420 L 996,410 L 999,402 L 1002,398 L 1005,398 L 1008,401 L 1011,409 L 1014,419 L 1017,432 L 1020,447 L 1023,462 L 1026,476 L 1029,489 L 1032,499 L 1036,506 L 1039,510 L 1042,509 L 1045,505 L 1048,497 L 1051,486 L 1054,473 L 1057,459 L 1060,445 L 1063,432 L 1066,421 L 1069,412 L 1072,406 L 1075,404 L 1078,405 L 1082,410 L 1085,417 L 1088,427 L 1091,439 L 1094,451 L 1097,463 L 1100,473 L 1103,483 L 1106,489 L 1109,493 L 1112,495 L 1115,493 L 1118,488 L 1121,482 L 1124,474 L 1128,465 L 1131,456 L 1134,447 L 1137,439 L 1140,433 L 1143,429 L 1146,427 L 1149,427 L 1152,429 L 1155,433 L 1158,438 L 1161,443 L 1164,449 L 1167,454 L 1170,458 L 1174,461 L 1177,463 L 1180,464 L 1183,463 L 1186,461 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,456 L 836,457 L 839,457 L 842,455 L 845,452 L 848,449 L 851,445 L 855,441 L 858,438 L 861,435 L 864,434 L 867,434 L 870,436 L 873,440 L 876,445 L 879,451 L 882,459 L 885,466 L 888,474 L 891,480 L 894,485 L 897,488 L 901,489 L 904,487 L 907,482 L 910,476 L 913,467 L 916,457 L 919,446 L 922,435 L 925,425 L 928,417 L 931,411 L 934,408 L 937,409 L 940,412 L 943,419 L 947,428 L 950,439 L 953,452 L 956,465 L 959,478 L 962,489 L 965,498 L 968,504 L 971,507 L 974,506 L 977,501 L 980,493 L 983,482 L 986,469 L 989,455 L 993,441 L 996,427 L 999,415 L 1002,406 L 1005,401 L 1008,398 L 1011,400 L 1014,406 L 1017,415 L 1020,427 L 1023,440 L 1026,455 L 1029,469 L 1032,482 L 1036,493 L 1039,502 L 1042,507 L 1045,508 L 1048,505 L 1051,499 L 1054,490 L 1057,479 L 1060,466 L 1063,452 L 1066,439 L 1069,427 L 1072,417 L 1075,410 L 1078,407 L 1082,406 L 1085,409 L 1088,415 L 1091,424 L 1094,434 L 1097,445 L 1100,457 L 1103,468 L 1106,477 L 1109,485 L 1112,490 L 1115,492 L 1118,491 L 1121,488 L 1124,483 L 1128,476 L 1131,468 L 1134,460 L 1137,451 L 1140,444 L 1143,438 L 1146,433 L 1149,430 L 1152,430 L 1155,431 L 1158,434 L 1161,437 L 1164,442 L 1167,447 L 1170,452 L 1174,456 L 1177,459 L 1180,461 L 1183,461 L 1186,461 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,458 L 839,459 L 842,458 L 845,457 L 848,454 L 851,450 L 855,446 L 858,442 L 861,438 L 864,435 L 867,433 L 870,432 L 873,434 L 876,437 L 879,442 L 882,448 L 885,455 L 888,463 L 891,471 L 894,478 L 897,484 L 901,488 L 904,489 L 907,489 L 910,485 L 913,480 L 916,472 L 919,462 L 922,451 L 925,440 L 928,430 L 931,421 L 934,414 L 937,410 L 940,408 L 943,410 L 947,415 L 950,423 L 953,434 L 956,446 L 959,459 L 962,471 L 965,483 L 968,493 L 971,501 L 974,505 L 977,506 L 980,503 L 983,496 L 986,487 L 989,475 L 993,462 L 996,448 L 999,434 L 1002,422 L 1005,411 L 1008,404 L 1011,400 L 1014,400 L 1017,404 L 1020,411 L 1023,422 L 1026,434 L 1029,448 L 1032,462 L 1036,475 L 1039,487 L 1042,496 L 1045,503 L 1048,506 L 1051,505 L 1054,501 L 1057,493 L 1060,483 L 1063,471 L 1066,459 L 1069,446 L 1072,434 L 1075,423 L 1078,415 L 1082,410 L 1085,408 L 1088,410 L 1091,414 L 1094,421 L 1097,430 L 1100,440 L 1103,451 L 1106,462 L 1109,472 L 1112,480 L 1115,485 L 1118,489 L 1121,489 L 1124,488 L 1128,484 L 1131,478 L 1134,471 L 1137,463 L 1140,455 L 1143,448 L 1146,442 L 1149,437 L 1152,434 L 1155,432 L 1158,433 L 1161,435 L 1164,438 L 1167,442 L 1170,446 L 1174,450 L 1177,454 L 1180,457 L 1183,458 L 1186,459 L 1189,458 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,460 L 842,461 L 845,460 L 848,458 L 851,456 L 855,452 L 858,447 L 861,443 L 864,438 L 867,435 L 870,432 L 873,431 L 876,432 L 879,434 L 882,438 L 885,444 L 888,451 L 891,459 L 894,467 L 897,475 L 901,482 L 904,487 L 907,489 L 910,490 L 913,488 L 916,483 L 919,476 L 922,467 L 925,457 L 928,446 L 931,435 L 934,425 L 937,417 L 940,412 L 943,409 L 947,409 L 950,413 L 953,419 L 956,429 L 959,440 L 962,452 L 965,465 L 968,477 L 971,488 L 974,497 L 977,502 L 980,505 L 983,504 L 986,499 L 989,491 L 993,481 L 996,468 L 999,455 L 1002,441 L 1005,428 L 1008,417 L 1011,409 L 1014,403 L 1017,402 L 1020,404 L 1023,409 L 1026,417 L 1029,429 L 1032,441 L 1036,455 L 1039,468 L 1042,480 L 1045,491 L 1048,498 L 1051,503 L 1054,504 L 1057,501 L 1060,496 L 1063,487 L 1066,476 L 1069,464 L 1072,452 L 1075,440 L 1078,429 L 1082,421 L 1085,414 L 1088,411 L 1091,411 L 1094,414 L 1097,419 L 1100,427 L 1103,436 L 1106,446 L 1109,457 L 1112,466 L 1115,474 L 1118,481 L 1121,485 L 1124,487 L 1128,486 L 1131,484 L 1134,479 L 1137,473 L 1140,466 L 1143,459 L 1146,452 L 1149,445 L 1152,440 L 1155,437 L 1158,435 L 1161,435 L 1164,436 L 1167,439 L 1170,442 L 1174,446 L 1177,449 L 1180,453 L 1183,455 L 1186,457 L 1189,457 L 1192,456 L 1195,454;M 830,454 L 833,456 L 836,459 L 839,461 L 842,462 L 845,463 L 848,462 L 851,460 L 855,458 L 858,454 L 861,449 L 864,444 L 867,439 L 870,435 L 873,432 L 876,430 L 879,430 L 882,432 L 885,435 L 888,441 L 891,448 L 894,455 L 897,464 L 901,472 L 904,479 L 907,485 L 910,489 L 913,490 L 916,489 L 919,486 L 922,480 L 925,471 L 928,462 L 931,451 L 934,440 L 937,430 L 940,421 L 943,414 L 947,410 L 950,409 L 953,411 L 956,416 L 959,424 L 962,434 L 965,446 L 968,459 L 971,471 L 974,483 L 977,492 L 980,499 L 983,503 L 986,504 L 989,501 L 993,494 L 996,485 L 999,474 L 1002,461 L 1005,448 L 1008,435 L 1011,423 L 1014,414 L 1017,407 L 1020,403 L 1023,404 L 1026,407 L 1029,414 L 1032,424 L 1036,436 L 1039,448 L 1042,462 L 1045,474 L 1048,485 L 1051,494 L 1054,499 L 1057,502 L 1060,501 L 1063,497 L 1066,490 L 1069,481 L 1072,470 L 1075,458 L 1078,446 L 1082,435 L 1085,426 L 1088,419 L 1091,414 L 1094,413 L 1097,414 L 1100,418 L 1103,425 L 1106,433 L 1109,442 L 1112,452 L 1115,461 L 1118,470 L 1121,476 L 1124,481 L 1128,484 L 1131,484 L 1134,483 L 1137,479 L 1140,474 L 1143,468 L 1146,461 L 1149,455 L 1152,449 L 1155,444 L 1158,440 L 1161,438 L 1164,437 L 1167,438 L 1170,440 L 1174,443 L 1177,446 L 1180,449 L 1183,452 L 1186,454 L 1189,455 L 1192,455 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,460 L 842,462 L 845,464 L 848,464 L 851,464 L 855,462 L 858,460 L 861,456 L 864,451 L 867,446 L 870,441 L 873,436 L 876,432 L 879,430 L 882,429 L 885,430 L 888,433 L 891,438 L 894,444 L 897,451 L 901,460 L 904,468 L 907,476 L 910,483 L 913,487 L 916,490 L 919,490 L 922,488 L 925,483 L 928,476 L 931,467 L 934,456 L 937,445 L 940,435 L 943,425 L 947,417 L 950,412 L 953,410 L 956,410 L 959,414 L 962,420 L 965,429 L 968,440 L 971,453 L 974,465 L 977,477 L 980,487 L 983,495 L 986,501 L 989,503 L 993,502 L 996,497 L 999,489 L 1002,479 L 1005,467 L 1008,454 L 1011,441 L 1014,429 L 1017,419 L 1020,411 L 1023,406 L 1026,405 L 1029,407 L 1032,412 L 1036,420 L 1039,430 L 1042,442 L 1045,455 L 1048,468 L 1051,479 L 1054,488 L 1057,495 L 1060,499 L 1063,500 L 1066,498 L 1069,492 L 1072,484 L 1075,474 L 1078,463 L 1082,452 L 1085,441 L 1088,431 L 1091,424 L 1094,418 L 1097,415 L 1100,415 L 1103,418 L 1106,423 L 1109,430 L 1112,439 L 1115,448 L 1118,457 L 1121,465 L 1124,472 L 1128,477 L 1131,481 L 1134,482 L 1137,482 L 1140,479 L 1143,475 L 1146,470 L 1149,464 L 1152,458 L 1155,452 L 1158,447 L 1161,443 L 1164,441 L 1167,440 L 1170,440 L 1174,441 L 1177,443 L 1180,446 L 1183,449 L 1186,451 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,455 L 836,456 L 839,459 L 842,461 L 845,463 L 848,465 L 851,466 L 855,466 L 858,465 L 861,462 L 864,458 L 867,453 L 870,448 L 873,443 L 876,437 L 879,433 L 882,430 L 885,428 L 888,428 L 891,430 L 894,434 L 897,440 L 901,447 L 904,456 L 907,464 L 910,473 L 913,480 L 916,486 L 919,490 L 922,491 L 925,490 L 928,486 L 931,480 L 934,471 L 937,461 L 940,451 L 943,440 L 947,430 L 950,421 L 953,414 L 956,410 L 959,410 L 962,412 L 965,417 L 968,425 L 971,435 L 974,447 L 977,459 L 980,471 L 983,482 L 986,491 L 989,498 L 993,502 L 996,502 L 999,499 L 1002,493 L 1005,484 L 1008,473 L 1011,460 L 1014,448 L 1017,435 L 1020,424 L 1023,415 L 1026,409 L 1029,406 L 1032,406 L 1036,410 L 1039,417 L 1042,426 L 1045,437 L 1048,449 L 1051,461 L 1054,473 L 1057,483 L 1060,491 L 1063,496 L 1066,498 L 1069,498 L 1072,494 L 1075,487 L 1078,478 L 1082,468 L 1085,457 L 1088,447 L 1091,437 L 1094,428 L 1097,422 L 1100,418 L 1103,417 L 1106,418 L 1109,422 L 1112,428 L 1115,435 L 1118,444 L 1121,452 L 1124,461 L 1128,468 L 1131,474 L 1134,478 L 1137,480 L 1140,480 L 1143,478 L 1146,475 L 1149,471 L 1152,465 L 1155,460 L 1158,455 L 1161,450 L 1164,446 L 1167,443 L 1170,442 L 1174,442 L 1177,443 L 1180,445 L 1183,447 L 1186,449 L 1189,452 L 1192,453 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,456 L 842,459 L 845,462 L 848,464 L 851,466 L 855,468 L 858,468 L 861,467 L 864,464 L 867,461 L 870,456 L 873,451 L 876,445 L 879,439 L 882,434 L 885,430 L 888,427 L 891,427 L 894,428 L 897,431 L 901,437 L 904,443 L 907,452 L 910,460 L 913,469 L 916,477 L 919,484 L 922,489 L 925,491 L 928,491 L 931,489 L 934,484 L 937,476 L 940,467 L 943,456 L 947,445 L 950,434 L 953,425 L 956,417 L 959,412 L 962,409 L 965,410 L 968,414 L 971,421 L 974,430 L 977,441 L 980,453 L 983,465 L 986,477 L 989,487 L 993,495 L 996,500 L 999,502 L 1002,500 L 1005,496 L 1008,488 L 1011,478 L 1014,466 L 1017,454 L 1020,441 L 1023,430 L 1026,420 L 1029,412 L 1032,408 L 1036,407 L 1039,409 L 1042,414 L 1045,422 L 1048,432 L 1051,443 L 1054,455 L 1057,467 L 1060,478 L 1063,487 L 1066,493 L 1069,497 L 1072,497 L 1075,495 L 1078,489 L 1082,482 L 1085,473 L 1088,462 L 1091,452 L 1094,442 L 1097,433 L 1100,426 L 1103,421 L 1106,419 L 1109,419 L 1112,422 L 1115,426 L 1118,433 L 1121,440 L 1124,448 L 1128,456 L 1131,464 L 1134,470 L 1137,475 L 1140,477 L 1143,478 L 1146,478 L 1149,475 L 1152,471 L 1155,467 L 1158,462 L 1161,457 L 1164,452 L 1167,448 L 1170,446 L 1174,444 L 1177,444 L 1180,445 L 1183,446 L 1186,448 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,453 L 836,453 L 839,454 L 842,456 L 845,459 L 848,462 L 851,465 L 855,467 L 858,469 L 861,470 L 864,469 L 867,467 L 870,464 L 873,459 L 876,453 L 879,447 L 882,441 L 885,435 L 888,430 L 891,427 L 894,425 L 897,426 L 901,428 L 904,433 L 907,439 L 910,447 L 913,456 L 916,465 L 919,474 L 922,482 L 925,488 L 928,491 L 931,493 L 934,491 L 937,487 L 940,480 L 943,472 L 947,461 L 950,450 L 953,439 L 956,429 L 959,420 L 962,414 L 965,410 L 968,409 L 971,411 L 974,417 L 977,425 L 980,435 L 983,447 L 986,459 L 989,471 L 993,482 L 996,491 L 999,498 L 1002,501 L 1005,502 L 1008,498 L 1011,492 L 1014,483 L 1017,472 L 1020,460 L 1023,447 L 1026,435 L 1029,425 L 1032,416 L 1036,410 L 1039,407 L 1042,408 L 1045,411 L 1048,418 L 1051,427 L 1054,438 L 1057,450 L 1060,461 L 1063,472 L 1066,482 L 1069,490 L 1072,494 L 1075,496 L 1078,495 L 1082,491 L 1085,485 L 1088,477 L 1091,467 L 1094,457 L 1097,447 L 1100,438 L 1103,430 L 1106,424 L 1109,421 L 1112,420 L 1115,421 L 1118,425 L 1121,431 L 1124,437 L 1128,445 L 1131,453 L 1134,460 L 1137,466 L 1140,471 L 1143,475 L 1146,476 L 1149,476 L 1152,475 L 1155,472 L 1158,468 L 1161,463 L 1164,459 L 1167,454 L 1170,451 L 1174,448 L 1177,446 L 1180,446 L 1183,446 L 1186,448 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,451 L 839,452 L 842,453 L 845,455 L 848,458 L 851,462 L 855,465 L 858,468 L 861,470 L 864,472 L 867,471 L 870,470 L 873,466 L 876,462 L 879,456 L 882,450 L 885,443 L 888,437 L 891,431 L 894,427 L 897,424 L 901,424 L 904,425 L 907,429 L 910,435 L 913,443 L 916,452 L 919,461 L 922,470 L 925,479 L 928,486 L 931,491 L 934,494 L 937,493 L 940,490 L 943,485 L 947,477 L 950,467 L 953,456 L 956,444 L 959,433 L 962,424 L 965,416 L 968,411 L 971,408 L 974,409 L 977,413 L 980,420 L 983,430 L 986,441 L 989,453 L 993,466 L 996,477 L 999,488 L 1002,495 L 1005,500 L 1008,502 L 1011,501 L 1014,496 L 1017,488 L 1020,478 L 1023,466 L 1026,454 L 1029,441 L 1032,430 L 1036,420 L 1039,413 L 1042,408 L 1045,407 L 1048,409 L 1051,415 L 1054,423 L 1057,433 L 1060,444 L 1063,456 L 1066,467 L 1069,477 L 1072,486 L 1075,492 L 1078,495 L 1082,495 L 1085,493 L 1088,488 L 1091,480 L 1094,471 L 1097,462 L 1100,452 L 1103,442 L 1106,434 L 1109,427 L 1112,423 L 1115,421 L 1118,422 L 1121,424 L 1124,429 L 1128,435 L 1131,442 L 1134,449 L 1137,456 L 1140,463 L 1143,468 L 1146,472 L 1149,474 L 1152,475 L 1155,474 L 1158,472 L 1161,468 L 1164,464 L 1167,460 L 1170,456 L 1174,453 L 1177,450 L 1180,448 L 1183,448 L 1186,448 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,450 L 839,449 L 842,450 L 845,452 L 848,454 L 851,457 L 855,461 L 858,465 L 861,469 L 864,471 L 867,473 L 870,474 L 873,472 L 876,470 L 879,465 L 882,460 L 885,453 L 888,446 L 891,439 L 894,432 L 897,427 L 901,424 L 904,422 L 907,423 L 910,426 L 913,431 L 916,438 L 919,447 L 922,456 L 925,466 L 928,476 L 931,484 L 934,490 L 937,494 L 940,495 L 943,494 L 947,489 L 950,482 L 953,472 L 956,462 L 959,450 L 962,438 L 965,428 L 968,418 L 971,412 L 974,408 L 977,407 L 980,410 L 983,416 L 986,424 L 989,435 L 993,447 L 996,460 L 999,472 L 1002,483 L 1005,492 L 1008,499 L 1011,502 L 1014,502 L 1017,499 L 1020,492 L 1023,483 L 1026,472 L 1029,460 L 1032,447 L 1036,435 L 1039,424 L 1042,416 L 1045,410 L 1048,407 L 1051,408 L 1054,412 L 1057,418 L 1060,428 L 1063,438 L 1066,450 L 1069,462 L 1072,472 L 1075,482 L 1078,489 L 1082,494 L 1085,495 L 1088,494 L 1091,490 L 1094,484 L 1097,476 L 1100,466 L 1103,456 L 1106,447 L 1109,438 L 1112,431 L 1115,426 L 1118,423 L 1121,422 L 1124,424 L 1128,427 L 1131,432 L 1134,439 L 1137,446 L 1140,453 L 1143,460 L 1146,465 L 1149,470 L 1152,472 L 1155,474 L 1158,473 L 1161,471 L 1164,469 L 1167,465 L 1170,461 L 1174,457 L 1177,454 L 1180,452 L 1183,450 L 1186,449 L 1189,450 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,448 L 842,448 L 845,448 L 848,450 L 851,453 L 855,456 L 858,460 L 861,465 L 864,469 L 867,472 L 870,475 L 873,476 L 876,475 L 879,473 L 882,469 L 885,463 L 888,456 L 891,449 L 894,441 L 897,434 L 901,428 L 904,423 L 907,420 L 910,420 L 913,422 L 916,427 L 919,433 L 922,442 L 925,452 L 928,462 L 931,472 L 934,481 L 937,489 L 940,494 L 943,497 L 947,496 L 950,493 L 953,487 L 956,478 L 959,467 L 962,456 L 965,444 L 968,432 L 971,422 L 974,413 L 977,408 L 980,406 L 983,407 L 986,411 L 989,419 L 993,429 L 996,441 L 999,454 L 1002,466 L 1005,479 L 1008,489 L 1011,497 L 1014,502 L 1017,504 L 1020,502 L 1023,497 L 1026,489 L 1029,478 L 1032,466 L 1036,453 L 1039,441 L 1042,429 L 1045,419 L 1048,412 L 1051,408 L 1054,407 L 1057,409 L 1060,415 L 1063,423 L 1066,433 L 1069,444 L 1072,456 L 1075,467 L 1078,477 L 1082,486 L 1085,492 L 1088,495 L 1091,495 L 1094,492 L 1097,487 L 1100,480 L 1103,471 L 1106,461 L 1109,451 L 1112,442 L 1115,435 L 1118,428 L 1121,424 L 1124,423 L 1128,423 L 1131,426 L 1134,430 L 1137,436 L 1140,443 L 1143,450 L 1146,456 L 1149,462 L 1152,467 L 1155,470 L 1158,472 L 1161,472 L 1164,471 L 1167,469 L 1170,465 L 1174,462 L 1177,458 L 1180,455 L 1183,453 L 1186,452 L 1189,451 L 1192,452 L 1195,454;M 830,454 L 833,452 L 836,449 L 839,447 L 842,446 L 845,445 L 848,446 L 851,448 L 855,450 L 858,454 L 861,459 L 864,464 L 867,469 L 870,473 L 873,476 L 876,478 L 879,478 L 882,476 L 885,473 L 888,467 L 891,460 L 894,453 L 897,444 L 901,436 L 904,429 L 907,423 L 910,419 L 913,418 L 916,419 L 919,422 L 922,428 L 925,437 L 928,446 L 931,457 L 934,468 L 937,478 L 940,487 L 943,494 L 947,498 L 950,499 L 953,497 L 956,492 L 959,484 L 962,474 L 965,462 L 968,449 L 971,437 L 974,425 L 977,416 L 980,409 L 983,405 L 986,404 L 989,407 L 993,414 L 996,423 L 999,434 L 1002,447 L 1005,460 L 1008,473 L 1011,485 L 1014,494 L 1017,501 L 1020,505 L 1023,504 L 1026,501 L 1029,494 L 1032,484 L 1036,472 L 1039,460 L 1042,446 L 1045,434 L 1048,423 L 1051,414 L 1054,409 L 1057,406 L 1060,407 L 1063,411 L 1066,418 L 1069,427 L 1072,438 L 1075,450 L 1078,462 L 1082,473 L 1085,482 L 1088,489 L 1091,494 L 1094,495 L 1097,494 L 1100,490 L 1103,483 L 1106,475 L 1109,466 L 1112,456 L 1115,447 L 1118,438 L 1121,432 L 1124,427 L 1128,424 L 1131,424 L 1134,425 L 1137,429 L 1140,434 L 1143,440 L 1146,447 L 1149,453 L 1152,459 L 1155,464 L 1158,468 L 1161,470 L 1164,471 L 1167,470 L 1170,468 L 1174,465 L 1177,462 L 1180,459 L 1183,456 L 1186,454 L 1189,453 L 1192,453 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,448 L 842,445 L 845,444 L 848,443 L 851,443 L 855,445 L 858,448 L 861,452 L 864,457 L 867,462 L 870,468 L 873,473 L 876,477 L 879,480 L 882,481 L 885,479 L 888,476 L 891,471 L 894,465 L 897,457 L 901,448 L 904,439 L 907,431 L 910,424 L 913,419 L 916,416 L 919,416 L 922,418 L 925,423 L 928,431 L 931,441 L 934,452 L 937,463 L 940,474 L 943,484 L 947,493 L 950,498 L 953,501 L 956,500 L 959,496 L 962,490 L 965,480 L 968,468 L 971,455 L 974,442 L 977,430 L 980,419 L 983,410 L 986,405 L 989,402 L 993,404 L 996,409 L 999,417 L 1002,428 L 1005,440 L 1008,454 L 1011,468 L 1014,480 L 1017,491 L 1020,499 L 1023,505 L 1026,506 L 1029,504 L 1032,499 L 1036,490 L 1039,479 L 1042,466 L 1045,453 L 1048,440 L 1051,428 L 1054,418 L 1057,410 L 1060,406 L 1063,406 L 1066,408 L 1069,414 L 1072,422 L 1075,433 L 1078,444 L 1082,456 L 1085,468 L 1088,478 L 1091,486 L 1094,492 L 1097,495 L 1100,495 L 1103,492 L 1106,486 L 1109,479 L 1112,470 L 1115,461 L 1118,451 L 1121,443 L 1124,435 L 1128,429 L 1131,426 L 1134,424 L 1137,425 L 1140,428 L 1143,432 L 1146,438 L 1149,444 L 1152,450 L 1155,456 L 1158,461 L 1161,465 L 1164,468 L 1167,469 L 1170,469 L 1174,467 L 1177,465 L 1180,462 L 1183,459 L 1186,457 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,453 L 836,451 L 839,449 L 842,446 L 845,444 L 848,442 L 851,441 L 855,441 L 858,442 L 861,445 L 864,449 L 867,455 L 870,460 L 873,467 L 876,472 L 879,477 L 882,481 L 885,483 L 888,483 L 891,480 L 894,476 L 897,469 L 901,461 L 904,452 L 907,443 L 910,433 L 913,425 L 916,419 L 919,415 L 922,413 L 925,414 L 928,419 L 931,425 L 934,435 L 937,446 L 940,458 L 943,470 L 947,481 L 950,491 L 953,498 L 956,502 L 959,503 L 962,501 L 965,495 L 968,486 L 971,475 L 974,462 L 977,449 L 980,435 L 983,423 L 986,413 L 989,405 L 993,401 L 996,401 L 999,404 L 1002,411 L 1005,421 L 1008,433 L 1011,447 L 1014,461 L 1017,475 L 1020,487 L 1023,497 L 1026,504 L 1029,507 L 1032,507 L 1036,503 L 1039,495 L 1042,485 L 1045,473 L 1048,459 L 1051,446 L 1054,433 L 1057,422 L 1060,413 L 1063,407 L 1066,405 L 1069,406 L 1072,410 L 1075,417 L 1078,427 L 1082,438 L 1085,450 L 1088,462 L 1091,473 L 1094,483 L 1097,489 L 1100,494 L 1103,495 L 1106,493 L 1109,489 L 1112,483 L 1115,475 L 1118,465 L 1121,456 L 1124,447 L 1128,439 L 1131,432 L 1134,428 L 1137,425 L 1140,425 L 1143,427 L 1146,431 L 1149,436 L 1152,441 L 1155,448 L 1158,453 L 1161,459 L 1164,463 L 1167,466 L 1170,467 L 1174,467 L 1177,466 L 1180,464 L 1183,462 L 1186,459 L 1189,457 L 1192,455 L 1195,454;M 830,499 L 833,476 L 836,451 L 839,427 L 842,405 L 845,386 L 848,372 L 851,364 L 855,362 L 858,367 L 861,377 L 864,393 L 867,413 L 870,436 L 873,459 L 876,481 L 879,501 L 882,518 L 885,529 L 888,535 L 891,536 L 894,530 L 897,520 L 901,505 L 904,487 L 907,468 L 910,448 L 913,429 L 916,413 L 919,400 L 922,391 L 925,387 L 928,388 L 931,393 L 934,402 L 937,414 L 940,429 L 943,445 L 947,460 L 950,475 L 953,488 L 956,498 L 959,504 L 962,507 L 965,507 L 968,502 L 971,495 L 974,485 L 977,473 L 980,460 L 983,448 L 986,435 L 989,425 L 993,417 L 996,411 L 999,408 L 1002,409 L 1005,412 L 1008,418 L 1011,427 L 1014,438 L 1017,449 L 1020,461 L 1023,473 L 1026,483 L 1029,492 L 1032,498 L 1036,501 L 1039,501 L 1042,498 L 1045,491 L 1048,482 L 1051,471 L 1054,458 L 1057,444 L 1060,431 L 1063,419 L 1066,408 L 1069,401 L 1072,397 L 1075,397 L 1078,401 L 1082,409 L 1085,420 L 1088,434 L 1091,451 L 1094,468 L 1097,485 L 1100,500 L 1103,513 L 1106,521 L 1109,526 L 1112,525 L 1115,520 L 1118,509 L 1121,494 L 1124,476 L 1128,456 L 1131,435 L 1134,415 L 1137,396 L 1140,382 L 1143,372 L 1146,368 L 1149,370 L 1152,378 L 1155,391 L 1158,409 L 1161,431 L 1164,454 L 1167,478 L 1170,501 L 1174,520 L 1177,535 L 1180,544 L 1183,548 L 1186,544 L 1189,534 L 1192,519 L 1195,499;M 830,530 L 833,514 L 836,495 L 839,472 L 842,449 L 845,426 L 848,405 L 851,388 L 855,376 L 858,370 L 861,369 L 864,375 L 867,386 L 870,401 L 873,420 L 876,440 L 879,460 L 882,480 L 885,496 L 888,510 L 891,518 L 894,522 L 897,521 L 901,515 L 904,506 L 907,493 L 910,478 L 913,463 L 916,448 L 919,434 L 922,423 L 925,414 L 928,409 L 931,407 L 934,409 L 937,413 L 940,420 L 943,429 L 947,439 L 950,449 L 953,459 L 956,467 L 959,474 L 962,479 L 965,482 L 968,483 L 971,482 L 974,479 L 977,474 L 980,469 L 983,463 L 986,456 L 989,450 L 993,445 L 996,440 L 999,436 L 1002,434 L 1005,433 L 1008,434 L 1011,435 L 1014,438 L 1017,442 L 1020,447 L 1023,452 L 1026,458 L 1029,464 L 1032,469 L 1036,473 L 1039,476 L 1042,478 L 1045,479 L 1048,477 L 1051,474 L 1054,469 L 1057,463 L 1060,456 L 1063,447 L 1066,439 L 1069,431 L 1072,424 L 1075,418 L 1078,415 L 1082,415 L 1085,417 L 1088,422 L 1091,430 L 1094,441 L 1097,453 L 1100,466 L 1103,479 L 1106,492 L 1109,502 L 1112,510 L 1115,514 L 1118,514 L 1121,509 L 1124,500 L 1128,488 L 1131,472 L 1134,454 L 1137,435 L 1140,417 L 1143,400 L 1146,387 L 1149,378 L 1152,374 L 1155,376 L 1158,383 L 1161,396 L 1164,413 L 1167,434 L 1170,457 L 1174,479 L 1177,501 L 1180,519 L 1183,533 L 1186,541 L 1189,544 L 1192,540 L 1195,530;M 830,533 L 833,528 L 836,519 L 839,505 L 842,487 L 845,468 L 848,448 L 851,428 L 855,412 L 858,398 L 861,390 L 864,386 L 867,387 L 870,392 L 873,402 L 876,415 L 879,430 L 882,445 L 885,460 L 888,474 L 891,485 L 894,493 L 897,498 L 901,499 L 904,497 L 907,492 L 910,485 L 913,476 L 916,467 L 919,458 L 922,450 L 925,443 L 928,437 L 931,434 L 934,432 L 937,432 L 940,434 L 943,437 L 947,440 L 950,444 L 953,449 L 956,453 L 959,456 L 962,459 L 965,461 L 968,462 L 971,462 L 974,462 L 977,461 L 980,460 L 983,459 L 986,457 L 989,456 L 993,454 L 996,453 L 999,452 L 1002,451 L 1005,451 L 1008,450 L 1011,450 L 1014,450 L 1017,450 L 1020,451 L 1023,452 L 1026,453 L 1029,454 L 1032,455 L 1036,456 L 1039,458 L 1042,459 L 1045,461 L 1048,461 L 1051,462 L 1054,462 L 1057,461 L 1060,460 L 1063,457 L 1066,454 L 1069,451 L 1072,447 L 1075,443 L 1078,439 L 1082,436 L 1085,434 L 1088,433 L 1091,434 L 1094,436 L 1097,440 L 1100,447 L 1103,454 L 1106,463 L 1109,472 L 1112,480 L 1115,488 L 1118,494 L 1121,497 L 1124,498 L 1128,495 L 1131,488 L 1134,479 L 1137,466 L 1140,452 L 1143,437 L 1146,422 L 1149,408 L 1152,397 L 1155,390 L 1158,386 L 1161,388 L 1164,394 L 1167,406 L 1170,421 L 1174,439 L 1177,458 L 1180,478 L 1183,497 L 1186,513 L 1189,524 L 1192,531 L 1195,533;M 830,509 L 833,513 L 836,513 L 839,509 L 842,501 L 845,490 L 848,476 L 851,462 L 855,448 L 858,436 L 861,425 L 864,418 L 867,414 L 870,413 L 873,415 L 876,420 L 879,427 L 882,435 L 885,443 L 888,451 L 891,457 L 894,463 L 897,467 L 901,469 L 904,470 L 907,469 L 910,468 L 913,465 L 916,462 L 919,460 L 922,457 L 925,455 L 928,453 L 931,452 L 934,451 L 937,451 L 940,451 L 943,451 L 947,451 L 950,452 L 953,453 L 956,453 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,455 L 1057,455 L 1060,455 L 1063,455 L 1066,455 L 1069,454 L 1072,454 L 1075,453 L 1078,453 L 1082,452 L 1085,451 L 1088,450 L 1091,449 L 1094,449 L 1097,449 L 1100,449 L 1103,450 L 1106,452 L 1109,454 L 1112,458 L 1115,461 L 1118,465 L 1121,469 L 1124,472 L 1128,475 L 1131,476 L 1134,475 L 1137,472 L 1140,467 L 1143,460 L 1146,452 L 1149,442 L 1152,432 L 1155,423 L 1158,415 L 1161,409 L 1164,406 L 1167,407 L 1170,411 L 1174,419 L 1177,430 L 1180,444 L 1183,459 L 1186,474 L 1189,488 L 1192,500 L 1195,509;M 830,474 L 833,480 L 836,484 L 839,485 L 842,484 L 845,480 L 848,475 L 851,468 L 855,462 L 858,456 L 861,452 L 864,448 L 867,446 L 870,446 L 873,446 L 876,447 L 879,449 L 882,450 L 885,451 L 888,452 L 891,453 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,455 L 1128,455 L 1131,455 L 1134,456 L 1137,456 L 1140,457 L 1143,457 L 1146,456 L 1149,455 L 1152,453 L 1155,450 L 1158,447 L 1161,443 L 1164,439 L 1167,435 L 1170,433 L 1174,432 L 1177,433 L 1180,436 L 1183,442 L 1186,449 L 1189,458 L 1192,466 L 1195,474;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,453 L 848,453 L 851,452 L 855,452 L 858,452 L 861,452 L 864,452 L 867,452 L 870,453 L 873,453 L 876,454 L 879,455 L 882,456 L 885,457 L 888,458 L 891,458 L 894,458 L 897,458 L 901,458 L 904,457 L 907,456 L 910,455 L 913,454 L 916,452 L 919,451 L 922,450 L 925,449 L 928,448 L 931,448 L 934,448 L 937,449 L 940,450 L 943,451 L 947,453 L 950,455 L 953,456 L 956,458 L 959,459 L 962,460 L 965,461 L 968,461 L 971,461 L 974,460 L 977,459 L 980,457 L 983,455 L 986,453 L 989,451 L 993,450 L 996,448 L 999,447 L 1002,447 L 1005,447 L 1008,447 L 1011,448 L 1014,449 L 1017,451 L 1020,453 L 1023,455 L 1026,457 L 1029,459 L 1032,460 L 1036,461 L 1039,461 L 1042,461 L 1045,461 L 1048,460 L 1051,458 L 1054,457 L 1057,455 L 1060,453 L 1063,451 L 1066,450 L 1069,448 L 1072,448 L 1075,447 L 1078,448 L 1082,448 L 1085,449 L 1088,450 L 1091,452 L 1094,454 L 1097,455 L 1100,457 L 1103,458 L 1106,459 L 1109,459 L 1112,459 L 1115,459 L 1118,459 L 1121,458 L 1124,457 L 1128,455 L 1131,454 L 1134,453 L 1137,452 L 1140,451 L 1143,451 L 1146,450 L 1149,451 L 1152,451 L 1155,451 L 1158,452 L 1161,453 L 1164,453 L 1167,454 L 1170,455 L 1174,455 L 1177,455 L 1180,455 L 1183,455 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,455 L 858,456 L 861,457 L 864,458 L 867,459 L 870,459 L 873,459 L 876,459 L 879,457 L 882,456 L 885,454 L 888,452 L 891,449 L 894,447 L 897,446 L 901,445 L 904,444 L 907,444 L 910,445 L 913,447 L 916,449 L 919,452 L 922,455 L 925,458 L 928,461 L 931,463 L 934,465 L 937,466 L 940,467 L 943,466 L 947,465 L 950,463 L 953,460 L 956,456 L 959,453 L 962,449 L 965,446 L 968,443 L 971,441 L 974,440 L 977,440 L 980,440 L 983,442 L 986,445 L 989,448 L 993,452 L 996,456 L 999,460 L 1002,463 L 1005,466 L 1008,468 L 1011,469 L 1014,469 L 1017,468 L 1020,466 L 1023,463 L 1026,460 L 1029,456 L 1032,452 L 1036,448 L 1039,445 L 1042,442 L 1045,440 L 1048,440 L 1051,440 L 1054,441 L 1057,443 L 1060,446 L 1063,449 L 1066,453 L 1069,456 L 1072,460 L 1075,463 L 1078,465 L 1082,466 L 1085,467 L 1088,466 L 1091,465 L 1094,463 L 1097,461 L 1100,458 L 1103,455 L 1106,452 L 1109,449 L 1112,447 L 1115,445 L 1118,444 L 1121,444 L 1124,445 L 1128,446 L 1131,447 L 1134,449 L 1137,452 L 1140,454 L 1143,456 L 1146,457 L 1149,459 L 1152,459 L 1155,459 L 1158,459 L 1161,458 L 1164,457 L 1167,456 L 1170,455 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,455 L 845,455 L 848,455 L 851,455 L 855,455 L 858,454 L 861,453 L 864,452 L 867,451 L 870,449 L 873,448 L 876,447 L 879,446 L 882,447 L 885,447 L 888,449 L 891,451 L 894,455 L 897,458 L 901,462 L 904,465 L 907,468 L 910,469 L 913,470 L 916,470 L 919,468 L 922,465 L 925,462 L 928,457 L 931,453 L 934,448 L 937,443 L 940,439 L 943,437 L 947,435 L 950,434 L 953,435 L 956,437 L 959,441 L 962,445 L 965,451 L 968,456 L 971,462 L 974,467 L 977,471 L 980,474 L 983,476 L 986,476 L 989,475 L 993,472 L 996,468 L 999,463 L 1002,457 L 1005,451 L 1008,445 L 1011,440 L 1014,436 L 1017,433 L 1020,432 L 1023,432 L 1026,433 L 1029,436 L 1032,441 L 1036,446 L 1039,452 L 1042,457 L 1045,463 L 1048,468 L 1051,471 L 1054,474 L 1057,475 L 1060,475 L 1063,473 L 1066,470 L 1069,466 L 1072,461 L 1075,456 L 1078,451 L 1082,446 L 1085,442 L 1088,439 L 1091,437 L 1094,436 L 1097,436 L 1100,438 L 1103,441 L 1106,445 L 1109,449 L 1112,453 L 1115,457 L 1118,461 L 1121,464 L 1124,466 L 1128,467 L 1131,467 L 1134,465 L 1137,463 L 1140,461 L 1143,459 L 1146,456 L 1149,454 L 1152,453 L 1155,451 L 1158,451 L 1161,451 L 1164,451 L 1167,451 L 1170,452 L 1174,452 L 1177,453 L 1180,453 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,453 L 845,453 L 848,453 L 851,452 L 855,452 L 858,452 L 861,452 L 864,453 L 867,454 L 870,456 L 873,457 L 876,459 L 879,461 L 882,463 L 885,464 L 888,464 L 891,464 L 894,463 L 897,460 L 901,457 L 904,453 L 907,449 L 910,444 L 913,440 L 916,436 L 919,433 L 922,431 L 925,432 L 928,434 L 931,438 L 934,443 L 937,449 L 940,456 L 943,463 L 947,469 L 950,474 L 953,478 L 956,481 L 959,481 L 962,480 L 965,477 L 968,472 L 971,466 L 974,459 L 977,451 L 980,443 L 983,437 L 986,431 L 989,427 L 993,425 L 996,424 L 999,426 L 1002,430 L 1005,436 L 1008,442 L 1011,450 L 1014,458 L 1017,466 L 1020,472 L 1023,478 L 1026,482 L 1029,484 L 1032,483 L 1036,481 L 1039,477 L 1042,471 L 1045,465 L 1048,457 L 1051,449 L 1054,442 L 1057,436 L 1060,431 L 1063,428 L 1066,427 L 1069,427 L 1072,430 L 1075,434 L 1078,439 L 1082,445 L 1085,452 L 1088,459 L 1091,465 L 1094,470 L 1097,474 L 1100,476 L 1103,477 L 1106,475 L 1109,472 L 1112,468 L 1115,464 L 1118,459 L 1121,455 L 1124,451 L 1128,448 L 1131,445 L 1134,444 L 1137,444 L 1140,444 L 1143,445 L 1146,447 L 1149,449 L 1152,451 L 1155,452 L 1158,454 L 1161,455 L 1164,456 L 1167,456 L 1170,456 L 1174,456 L 1177,455 L 1180,455 L 1183,455 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,455 L 848,455 L 851,456 L 855,456 L 858,457 L 861,457 L 864,457 L 867,457 L 870,457 L 873,455 L 876,454 L 879,452 L 882,449 L 885,447 L 888,445 L 891,443 L 894,441 L 897,441 L 901,442 L 904,443 L 907,446 L 910,450 L 913,455 L 916,461 L 919,466 L 922,471 L 925,476 L 928,479 L 931,481 L 934,481 L 937,478 L 940,474 L 943,468 L 947,460 L 950,451 L 953,442 L 956,434 L 959,428 L 962,422 L 965,419 L 968,419 L 971,421 L 974,425 L 977,431 L 980,439 L 983,448 L 986,458 L 989,468 L 993,476 L 996,483 L 999,488 L 1002,491 L 1005,491 L 1008,489 L 1011,484 L 1014,477 L 1017,468 L 1020,459 L 1023,449 L 1026,439 L 1029,431 L 1032,424 L 1036,420 L 1039,417 L 1042,418 L 1045,421 L 1048,426 L 1051,433 L 1054,441 L 1057,451 L 1060,460 L 1063,468 L 1066,476 L 1069,482 L 1072,486 L 1075,487 L 1078,486 L 1082,483 L 1085,477 L 1088,471 L 1091,463 L 1094,456 L 1097,449 L 1100,443 L 1103,439 L 1106,436 L 1109,434 L 1112,435 L 1115,436 L 1118,439 L 1121,442 L 1124,446 L 1128,450 L 1131,453 L 1134,457 L 1137,459 L 1140,461 L 1143,461 L 1146,462 L 1149,461 L 1152,460 L 1155,459 L 1158,457 L 1161,456 L 1164,455 L 1167,454 L 1170,453 L 1174,453 L 1177,453 L 1180,453 L 1183,453 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,453 L 858,452 L 861,451 L 864,450 L 867,449 L 870,449 L 873,449 L 876,449 L 879,450 L 882,452 L 885,454 L 888,457 L 891,460 L 894,463 L 897,466 L 901,468 L 904,470 L 907,470 L 910,469 L 913,467 L 916,463 L 919,458 L 922,452 L 925,446 L 928,440 L 931,434 L 934,429 L 937,425 L 940,423 L 943,424 L 947,427 L 950,432 L 953,439 L 956,448 L 959,458 L 962,468 L 965,478 L 968,487 L 971,493 L 974,497 L 977,497 L 980,495 L 983,489 L 986,481 L 989,472 L 993,460 L 996,449 L 999,437 L 1002,427 L 1005,419 L 1008,413 L 1011,409 L 1014,409 L 1017,413 L 1020,419 L 1023,427 L 1026,437 L 1029,449 L 1032,460 L 1036,472 L 1039,481 L 1042,489 L 1045,495 L 1048,497 L 1051,497 L 1054,493 L 1057,487 L 1060,478 L 1063,468 L 1066,458 L 1069,448 L 1072,439 L 1075,432 L 1078,427 L 1082,424 L 1085,423 L 1088,425 L 1091,429 L 1094,434 L 1097,440 L 1100,446 L 1103,452 L 1106,458 L 1109,463 L 1112,467 L 1115,469 L 1118,470 L 1121,470 L 1124,468 L 1128,466 L 1131,463 L 1134,460 L 1137,457 L 1140,454 L 1143,452 L 1146,450 L 1149,449 L 1152,449 L 1155,449 L 1158,449 L 1161,450 L 1164,451 L 1167,452 L 1170,453 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,453 L 845,453 L 848,453 L 851,453 L 855,453 L 858,454 L 861,455 L 864,456 L 867,457 L 870,459 L 873,460 L 876,461 L 879,462 L 882,461 L 885,461 L 888,459 L 891,457 L 894,453 L 897,450 L 901,446 L 904,442 L 907,439 L 910,436 L 913,435 L 916,434 L 919,436 L 922,439 L 925,443 L 928,449 L 931,456 L 934,463 L 937,471 L 940,477 L 943,483 L 947,487 L 950,489 L 953,488 L 956,485 L 959,479 L 962,471 L 965,461 L 968,450 L 971,438 L 974,427 L 977,418 L 980,410 L 983,405 L 986,404 L 989,406 L 993,412 L 996,422 L 999,434 L 1002,447 L 1005,461 L 1008,474 L 1011,486 L 1014,496 L 1017,503 L 1020,506 L 1023,506 L 1026,502 L 1029,495 L 1032,485 L 1036,473 L 1039,460 L 1042,447 L 1045,435 L 1048,425 L 1051,417 L 1054,413 L 1057,411 L 1060,413 L 1063,418 L 1066,424 L 1069,432 L 1072,442 L 1075,451 L 1078,460 L 1082,468 L 1085,474 L 1088,478 L 1091,481 L 1094,481 L 1097,479 L 1100,476 L 1103,471 L 1106,466 L 1109,461 L 1112,455 L 1115,450 L 1118,446 L 1121,443 L 1124,442 L 1128,441 L 1131,441 L 1134,443 L 1137,445 L 1140,447 L 1143,449 L 1146,452 L 1149,454 L 1152,455 L 1155,457 L 1158,457 L 1161,457 L 1164,457 L 1167,457 L 1170,456 L 1174,456 L 1177,455 L 1180,455 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,455 L 836,457 L 839,459 L 842,462 L 845,464 L 848,466 L 851,467 L 855,467 L 858,466 L 861,463 L 864,459 L 867,453 L 870,448 L 873,441 L 876,436 L 879,431 L 882,427 L 885,425 L 888,425 L 891,428 L 894,432 L 897,439 L 901,447 L 904,456 L 907,465 L 910,475 L 913,483 L 916,489 L 919,493 L 922,495 L 925,494 L 928,489 L 931,483 L 934,473 L 937,462 L 940,450 L 943,438 L 947,427 L 950,417 L 953,410 L 956,406 L 959,405 L 962,407 L 965,413 L 968,422 L 971,433 L 974,446 L 977,459 L 980,473 L 983,485 L 986,495 L 989,503 L 993,507 L 996,507 L 999,504 L 1002,497 L 1005,487 L 1008,475 L 1011,461 L 1014,447 L 1017,433 L 1020,421 L 1023,411 L 1026,404 L 1029,401 L 1032,401 L 1036,405 L 1039,413 L 1042,423 L 1045,435 L 1048,449 L 1051,462 L 1054,475 L 1057,486 L 1060,495 L 1063,501 L 1066,503 L 1069,502 L 1072,498 L 1075,491 L 1078,481 L 1082,470 L 1085,458 L 1088,446 L 1091,435 L 1094,425 L 1097,419 L 1100,414 L 1103,413 L 1106,415 L 1109,419 L 1112,425 L 1115,433 L 1118,443 L 1121,452 L 1124,461 L 1128,469 L 1131,476 L 1134,480 L 1137,483 L 1140,483 L 1143,481 L 1146,477 L 1149,472 L 1152,467 L 1155,460 L 1158,455 L 1161,449 L 1164,445 L 1167,442 L 1170,441 L 1174,441 L 1177,442 L 1180,444 L 1183,446 L 1186,449 L 1189,451 L 1192,453 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,461 L 842,463 L 845,465 L 848,466 L 851,465 L 855,463 L 858,460 L 861,456 L 864,451 L 867,445 L 870,439 L 873,434 L 876,430 L 879,427 L 882,426 L 885,427 L 888,430 L 891,436 L 894,443 L 897,451 L 901,460 L 904,470 L 907,478 L 910,486 L 913,491 L 916,494 L 919,495 L 922,492 L 925,486 L 928,478 L 931,468 L 934,457 L 937,444 L 940,433 L 943,422 L 947,413 L 950,407 L 953,404 L 956,405 L 959,409 L 962,416 L 965,427 L 968,439 L 971,452 L 974,466 L 977,480 L 980,491 L 983,500 L 986,506 L 989,509 L 993,507 L 996,502 L 999,493 L 1002,482 L 1005,469 L 1008,454 L 1011,440 L 1014,426 L 1017,415 L 1020,406 L 1023,400 L 1026,399 L 1029,401 L 1032,407 L 1036,416 L 1039,428 L 1042,441 L 1045,455 L 1048,469 L 1051,482 L 1054,492 L 1057,500 L 1060,505 L 1063,505 L 1066,503 L 1069,496 L 1072,488 L 1075,477 L 1078,464 L 1082,452 L 1085,439 L 1088,429 L 1091,420 L 1094,414 L 1097,411 L 1100,411 L 1103,414 L 1106,420 L 1109,427 L 1112,437 L 1115,447 L 1118,457 L 1121,466 L 1124,474 L 1128,480 L 1131,484 L 1134,486 L 1137,485 L 1140,482 L 1143,477 L 1146,471 L 1149,465 L 1152,458 L 1155,452 L 1158,446 L 1161,442 L 1164,439 L 1167,438 L 1170,438 L 1174,440 L 1177,442 L 1180,445 L 1183,448 L 1186,451 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,461 L 842,463 L 845,464 L 848,463 L 851,461 L 855,458 L 858,454 L 861,449 L 864,443 L 867,438 L 870,433 L 873,429 L 876,427 L 879,427 L 882,429 L 885,433 L 888,439 L 891,447 L 894,456 L 897,465 L 901,474 L 904,482 L 907,488 L 910,493 L 913,495 L 916,493 L 919,489 L 922,483 L 925,473 L 928,463 L 931,451 L 934,439 L 937,427 L 940,417 L 943,410 L 947,405 L 950,404 L 953,406 L 956,412 L 959,421 L 962,432 L 965,445 L 968,459 L 971,473 L 974,486 L 977,497 L 980,505 L 983,509 L 986,510 L 989,506 L 993,499 L 996,489 L 999,476 L 1002,462 L 1005,447 L 1008,432 L 1011,419 L 1014,409 L 1017,401 L 1020,398 L 1023,398 L 1026,402 L 1029,410 L 1032,420 L 1036,433 L 1039,448 L 1042,462 L 1045,476 L 1048,489 L 1051,498 L 1054,505 L 1057,507 L 1060,506 L 1063,502 L 1066,494 L 1069,484 L 1072,471 L 1075,458 L 1078,445 L 1082,433 L 1085,423 L 1088,415 L 1091,410 L 1094,408 L 1097,410 L 1100,414 L 1103,421 L 1106,430 L 1109,441 L 1112,452 L 1115,462 L 1118,471 L 1121,479 L 1124,485 L 1128,488 L 1131,488 L 1134,486 L 1137,482 L 1140,476 L 1143,470 L 1146,462 L 1149,455 L 1152,448 L 1155,443 L 1158,439 L 1161,436 L 1164,435 L 1167,436 L 1170,438 L 1174,441 L 1177,445 L 1180,448 L 1183,451 L 1186,454 L 1189,455 L 1192,456 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,461 L 842,462 L 845,461 L 848,459 L 851,456 L 855,452 L 858,447 L 861,442 L 864,437 L 867,433 L 870,430 L 873,429 L 876,429 L 879,432 L 882,437 L 885,443 L 888,451 L 891,460 L 894,469 L 897,477 L 901,485 L 904,490 L 907,493 L 910,494 L 913,491 L 916,486 L 919,478 L 922,468 L 925,457 L 928,445 L 931,433 L 934,422 L 937,413 L 940,407 L 943,404 L 947,404 L 950,408 L 953,416 L 956,426 L 959,438 L 962,452 L 965,466 L 968,480 L 971,492 L 974,501 L 977,508 L 980,510 L 983,509 L 986,504 L 989,495 L 993,483 L 996,470 L 999,455 L 1002,439 L 1005,425 L 1008,413 L 1011,404 L 1014,398 L 1017,396 L 1020,398 L 1023,404 L 1026,413 L 1029,426 L 1032,440 L 1036,455 L 1039,470 L 1042,483 L 1045,495 L 1048,503 L 1051,508 L 1054,509 L 1057,506 L 1060,500 L 1063,491 L 1066,479 L 1069,466 L 1072,452 L 1075,438 L 1078,427 L 1082,417 L 1085,410 L 1088,406 L 1091,406 L 1094,409 L 1097,415 L 1100,424 L 1103,434 L 1106,446 L 1109,457 L 1112,468 L 1115,477 L 1118,484 L 1121,489 L 1124,491 L 1128,490 L 1131,487 L 1134,482 L 1137,475 L 1140,467 L 1143,459 L 1146,451 L 1149,444 L 1152,439 L 1155,435 L 1158,433 L 1161,433 L 1164,434 L 1167,437 L 1170,441 L 1174,445 L 1177,449 L 1180,452 L 1183,455 L 1186,457 L 1189,457 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,459 L 842,459 L 845,457 L 848,454 L 851,450 L 855,445 L 858,441 L 861,436 L 864,433 L 867,431 L 870,430 L 873,432 L 876,435 L 879,440 L 882,447 L 885,455 L 888,464 L 891,472 L 894,480 L 897,487 L 901,491 L 904,493 L 907,492 L 910,488 L 913,482 L 916,473 L 919,463 L 922,451 L 925,439 L 928,428 L 931,418 L 934,410 L 937,405 L 940,404 L 943,406 L 947,412 L 950,420 L 953,432 L 956,445 L 959,459 L 962,473 L 965,486 L 968,497 L 971,505 L 974,510 L 977,511 L 980,508 L 983,501 L 986,490 L 989,477 L 993,462 L 996,447 L 999,432 L 1002,418 L 1005,407 L 1008,399 L 1011,395 L 1014,395 L 1017,399 L 1020,407 L 1023,418 L 1026,432 L 1029,447 L 1032,462 L 1036,477 L 1039,490 L 1042,501 L 1045,508 L 1048,511 L 1051,510 L 1054,505 L 1057,497 L 1060,486 L 1063,473 L 1066,459 L 1069,445 L 1072,432 L 1075,420 L 1078,412 L 1082,406 L 1085,404 L 1088,405 L 1091,410 L 1094,418 L 1097,428 L 1100,439 L 1103,451 L 1106,463 L 1109,473 L 1112,482 L 1115,488 L 1118,492 L 1121,493 L 1124,491 L 1128,487 L 1131,480 L 1134,472 L 1137,464 L 1140,455 L 1143,447 L 1146,440 L 1149,435 L 1152,432 L 1155,430 L 1158,431 L 1161,433 L 1164,436 L 1167,441 L 1170,445 L 1174,450 L 1177,454 L 1180,457 L 1183,459 L 1186,459 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,457 L 836,457 L 839,457 L 842,455 L 845,452 L 848,449 L 851,444 L 855,440 L 858,436 L 861,434 L 864,432 L 867,433 L 870,435 L 873,439 L 876,444 L 879,451 L 882,459 L 885,467 L 888,475 L 891,482 L 894,488 L 897,491 L 901,492 L 904,489 L 907,485 L 910,477 L 913,468 L 916,457 L 919,445 L 922,434 L 925,423 L 928,414 L 931,408 L 934,405 L 937,405 L 940,409 L 943,416 L 947,426 L 950,438 L 953,452 L 956,466 L 959,480 L 962,492 L 965,501 L 968,508 L 971,511 L 974,510 L 977,505 L 980,496 L 983,484 L 986,470 L 989,455 L 993,440 L 996,425 L 999,412 L 1002,403 L 1005,396 L 1008,394 L 1011,396 L 1014,402 L 1017,412 L 1020,424 L 1023,439 L 1026,455 L 1029,470 L 1032,484 L 1036,496 L 1039,505 L 1042,511 L 1045,512 L 1048,509 L 1051,503 L 1054,493 L 1057,481 L 1060,467 L 1063,452 L 1066,438 L 1069,425 L 1072,415 L 1075,407 L 1078,403 L 1082,403 L 1085,406 L 1088,412 L 1091,421 L 1094,432 L 1097,445 L 1100,457 L 1103,469 L 1106,479 L 1109,487 L 1112,492 L 1115,495 L 1118,494 L 1121,491 L 1124,485 L 1128,478 L 1131,469 L 1134,460 L 1137,451 L 1140,443 L 1143,436 L 1146,431 L 1149,429 L 1152,428 L 1155,429 L 1158,432 L 1161,436 L 1164,441 L 1167,446 L 1170,451 L 1174,456 L 1177,459 L 1180,461 L 1183,462 L 1186,461 L 1189,460 L 1192,457 L 1195,454;M 830,454 L 833,456 L 836,455 L 839,454 L 842,451 L 845,448 L 848,444 L 851,440 L 855,437 L 858,435 L 861,434 L 864,435 L 867,438 L 870,442 L 873,448 L 876,455 L 879,463 L 882,470 L 885,478 L 888,484 L 891,488 L 894,490 L 897,489 L 901,486 L 904,480 L 907,472 L 910,462 L 913,451 L 916,440 L 919,429 L 922,420 L 925,412 L 928,407 L 931,406 L 934,407 L 937,413 L 940,421 L 943,432 L 947,445 L 950,459 L 953,472 L 956,485 L 959,496 L 962,504 L 965,509 L 968,510 L 971,507 L 974,500 L 977,490 L 980,477 L 983,463 L 986,447 L 989,432 L 993,419 L 996,407 L 999,399 L 1002,395 L 1005,395 L 1008,399 L 1011,406 L 1014,418 L 1017,431 L 1020,447 L 1023,462 L 1026,477 L 1029,491 L 1032,502 L 1036,509 L 1039,512 L 1042,512 L 1045,507 L 1048,499 L 1051,488 L 1054,474 L 1057,460 L 1060,445 L 1063,431 L 1066,419 L 1069,410 L 1072,404 L 1075,401 L 1078,402 L 1082,407 L 1085,415 L 1088,426 L 1091,438 L 1094,450 L 1097,463 L 1100,475 L 1103,484 L 1106,491 L 1109,495 L 1112,497 L 1115,495 L 1118,490 L 1121,483 L 1124,475 L 1128,465 L 1131,456 L 1134,447 L 1137,439 L 1140,432 L 1143,428 L 1146,426 L 1149,426 L 1152,428 L 1155,432 L 1158,437 L 1161,443 L 1164,448 L 1167,454 L 1170,458 L 1174,462 L 1177,464 L 1180,464 L 1183,464 L 1186,462 L 1189,460 L 1192,457 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,451 L 842,448 L 845,445 L 848,441 L 851,439 L 855,437 L 858,437 L 861,438 L 864,441 L 867,446 L 870,451 L 873,458 L 876,466 L 879,473 L 882,479 L 885,484 L 888,487 L 891,488 L 894,486 L 897,482 L 901,476 L 904,467 L 907,457 L 910,446 L 913,435 L 916,425 L 919,417 L 922,411 L 925,408 L 928,408 L 931,411 L 934,417 L 937,427 L 940,438 L 943,451 L 947,465 L 950,478 L 953,490 L 956,500 L 959,506 L 962,509 L 965,508 L 968,504 L 971,495 L 974,484 L 977,470 L 980,455 L 983,440 L 986,426 L 989,413 L 993,403 L 996,397 L 999,395 L 1002,396 L 1005,402 L 1008,412 L 1011,424 L 1014,439 L 1017,454 L 1020,470 L 1023,484 L 1026,496 L 1029,506 L 1032,511 L 1036,513 L 1039,510 L 1042,504 L 1045,494 L 1048,482 L 1051,467 L 1054,452 L 1057,438 L 1060,424 L 1063,414 L 1066,406 L 1069,401 L 1072,401 L 1075,404 L 1078,410 L 1082,419 L 1085,431 L 1088,444 L 1091,457 L 1094,469 L 1097,480 L 1100,489 L 1103,495 L 1106,498 L 1109,497 L 1112,494 L 1115,488 L 1118,480 L 1121,471 L 1124,461 L 1128,451 L 1131,442 L 1134,434 L 1137,428 L 1140,425 L 1143,424 L 1146,425 L 1149,428 L 1152,433 L 1155,438 L 1158,444 L 1161,451 L 1164,456 L 1167,461 L 1170,464 L 1174,466 L 1177,467 L 1180,466 L 1183,464 L 1186,461 L 1189,459 L 1192,456 L 1195,454;M 830,454 L 833,453 L 836,451 L 839,448 L 842,445 L 845,443 L 848,440 L 851,439 L 855,439 L 858,441 L 861,444 L 864,449 L 867,455 L 870,461 L 873,468 L 876,474 L 879,480 L 882,484 L 885,486 L 888,485 L 891,483 L 894,478 L 897,471 L 901,462 L 904,452 L 907,442 L 910,431 L 913,422 L 916,415 L 919,411 L 922,409 L 925,410 L 928,415 L 931,423 L 934,433 L 937,445 L 940,458 L 943,471 L 947,483 L 950,494 L 953,502 L 956,507 L 959,508 L 962,505 L 965,499 L 968,489 L 971,477 L 974,463 L 977,448 L 980,433 L 983,420 L 986,409 L 989,401 L 993,396 L 996,396 L 999,399 L 1002,407 L 1005,418 L 1008,431 L 1011,446 L 1014,462 L 1017,477 L 1020,490 L 1023,501 L 1026,509 L 1029,512 L 1032,512 L 1036,507 L 1039,499 L 1042,488 L 1045,475 L 1048,460 L 1051,445 L 1054,431 L 1057,419 L 1060,409 L 1063,403 L 1066,400 L 1069,401 L 1072,406 L 1075,414 L 1078,425 L 1082,437 L 1085,450 L 1088,463 L 1091,475 L 1094,485 L 1097,493 L 1100,498 L 1103,499 L 1106,497 L 1109,493 L 1112,486 L 1115,477 L 1118,466 L 1121,456 L 1124,446 L 1128,437 L 1131,430 L 1134,425 L 1137,423 L 1140,422 L 1143,424 L 1146,428 L 1149,434 L 1152,440 L 1155,447 L 1158,453 L 1161,459 L 1164,464 L 1167,467 L 1170,469 L 1174,469 L 1177,468 L 1180,465 L 1183,463 L 1186,460 L 1189,457 L 1192,455 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,447 L 842,444 L 845,443 L 848,442 L 851,442 L 855,444 L 858,447 L 861,452 L 864,457 L 867,463 L 870,469 L 873,475 L 876,479 L 879,482 L 882,483 L 885,482 L 888,479 L 891,473 L 894,466 L 897,457 L 901,447 L 904,437 L 907,428 L 910,421 L 913,415 L 916,412 L 919,411 L 922,414 L 925,420 L 928,429 L 931,439 L 934,451 L 937,464 L 940,476 L 943,488 L 947,497 L 950,503 L 953,506 L 956,505 L 959,501 L 962,493 L 965,483 L 968,470 L 971,456 L 974,441 L 977,427 L 980,415 L 983,405 L 986,399 L 989,397 L 993,398 L 996,404 L 999,413 L 1002,425 L 1005,439 L 1008,454 L 1011,469 L 1014,483 L 1017,495 L 1020,505 L 1023,510 L 1026,512 L 1029,510 L 1032,503 L 1036,494 L 1039,482 L 1042,468 L 1045,453 L 1048,438 L 1051,425 L 1054,414 L 1057,406 L 1060,401 L 1063,400 L 1066,403 L 1069,409 L 1072,419 L 1075,430 L 1078,443 L 1082,456 L 1085,469 L 1088,481 L 1091,490 L 1094,496 L 1097,499 L 1100,499 L 1103,496 L 1106,490 L 1109,482 L 1112,472 L 1115,462 L 1118,451 L 1121,441 L 1124,433 L 1128,427 L 1131,422 L 1134,421 L 1137,422 L 1140,425 L 1143,430 L 1146,436 L 1149,443 L 1152,450 L 1155,456 L 1158,462 L 1161,467 L 1164,470 L 1167,471 L 1170,471 L 1174,469 L 1177,466 L 1180,463 L 1183,460 L 1186,457 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,447 L 842,445 L 845,444 L 848,445 L 851,447 L 855,450 L 858,454 L 861,459 L 864,465 L 867,470 L 870,475 L 873,479 L 876,481 L 879,481 L 882,479 L 885,475 L 888,469 L 891,461 L 894,452 L 897,443 L 901,434 L 904,426 L 907,420 L 910,415 L 913,413 L 916,415 L 919,419 L 922,425 L 925,435 L 928,445 L 931,457 L 934,469 L 937,481 L 940,491 L 943,498 L 947,503 L 950,504 L 953,502 L 956,496 L 959,487 L 962,476 L 965,463 L 968,449 L 971,435 L 974,422 L 977,411 L 980,403 L 983,399 L 986,398 L 989,402 L 993,409 L 996,419 L 999,432 L 1002,446 L 1005,461 L 1008,476 L 1011,489 L 1014,499 L 1017,507 L 1020,510 L 1023,510 L 1026,506 L 1029,498 L 1032,488 L 1036,475 L 1039,460 L 1042,446 L 1045,432 L 1048,419 L 1051,410 L 1054,403 L 1057,401 L 1060,402 L 1063,406 L 1066,414 L 1069,424 L 1072,437 L 1075,450 L 1078,463 L 1082,475 L 1085,485 L 1088,493 L 1091,498 L 1094,500 L 1097,498 L 1100,494 L 1103,487 L 1106,478 L 1109,467 L 1112,456 L 1115,446 L 1118,437 L 1121,429 L 1124,423 L 1128,420 L 1131,420 L 1134,422 L 1137,426 L 1140,432 L 1143,438 L 1146,446 L 1149,453 L 1152,460 L 1155,465 L 1158,469 L 1161,472 L 1164,473 L 1167,472 L 1170,470 L 1174,467 L 1177,463 L 1180,460 L 1183,457 L 1186,454 L 1189,453 L 1192,452 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,447 L 842,447 L 845,447 L 848,449 L 851,452 L 855,456 L 858,461 L 861,466 L 864,471 L 867,474 L 870,477 L 873,478 L 876,478 L 879,475 L 882,470 L 885,464 L 888,457 L 891,448 L 894,440 L 897,432 L 901,425 L 904,420 L 907,417 L 910,416 L 913,418 L 916,423 L 919,431 L 922,440 L 925,451 L 928,463 L 931,474 L 934,484 L 937,493 L 940,499 L 943,502 L 947,501 L 950,498 L 953,491 L 956,481 L 959,469 L 962,456 L 965,442 L 968,429 L 971,418 L 974,409 L 977,403 L 980,400 L 983,401 L 986,406 L 989,415 L 993,426 L 996,439 L 999,453 L 1002,468 L 1005,481 L 1008,493 L 1011,502 L 1014,508 L 1017,510 L 1020,507 L 1023,502 L 1026,493 L 1029,481 L 1032,467 L 1036,453 L 1039,439 L 1042,426 L 1045,415 L 1048,407 L 1051,402 L 1054,401 L 1057,404 L 1060,410 L 1063,419 L 1066,430 L 1069,443 L 1072,456 L 1075,469 L 1078,480 L 1082,489 L 1085,496 L 1088,499 L 1091,500 L 1094,497 L 1097,491 L 1100,483 L 1103,473 L 1106,462 L 1109,451 L 1112,441 L 1115,432 L 1118,426 L 1121,421 L 1124,419 L 1128,420 L 1131,423 L 1134,428 L 1137,434 L 1140,442 L 1143,449 L 1146,457 L 1149,463 L 1152,468 L 1155,472 L 1158,474 L 1161,474 L 1164,473 L 1167,470 L 1170,467 L 1174,463 L 1177,459 L 1180,456 L 1183,453 L 1186,451 L 1189,451 L 1192,452 L 1195,454;M 830,454 L 833,451 L 836,450 L 839,449 L 842,450 L 845,451 L 848,454 L 851,458 L 855,462 L 858,466 L 861,470 L 864,473 L 867,475 L 870,476 L 873,474 L 876,471 L 879,466 L 882,460 L 885,453 L 888,445 L 891,437 L 894,430 L 897,424 L 901,420 L 904,419 L 907,419 L 910,423 L 913,428 L 916,436 L 919,446 L 922,457 L 925,468 L 928,478 L 931,487 L 934,494 L 937,498 L 940,500 L 943,498 L 947,493 L 950,485 L 953,474 L 956,462 L 959,449 L 962,437 L 965,425 L 968,415 L 971,407 L 974,403 L 977,402 L 980,405 L 983,412 L 986,421 L 989,433 L 993,446 L 996,460 L 999,474 L 1002,486 L 1005,497 L 1008,504 L 1011,508 L 1014,508 L 1017,504 L 1020,497 L 1023,486 L 1026,474 L 1029,460 L 1032,446 L 1036,433 L 1039,421 L 1042,412 L 1045,405 L 1048,402 L 1051,403 L 1054,407 L 1057,415 L 1060,425 L 1063,437 L 1066,449 L 1069,462 L 1072,474 L 1075,485 L 1078,493 L 1082,498 L 1085,500 L 1088,498 L 1091,494 L 1094,487 L 1097,478 L 1100,468 L 1103,457 L 1106,446 L 1109,436 L 1112,428 L 1115,423 L 1118,419 L 1121,419 L 1124,420 L 1128,424 L 1131,430 L 1134,437 L 1137,445 L 1140,453 L 1143,460 L 1146,466 L 1149,471 L 1152,474 L 1155,476 L 1158,475 L 1161,473 L 1164,470 L 1167,466 L 1170,462 L 1174,458 L 1177,454 L 1180,451 L 1183,450 L 1186,449 L 1189,450 L 1192,451 L 1195,454;M 830,454 L 833,452 L 836,451 L 839,451 L 842,453 L 845,455 L 848,459 L 851,462 L 855,466 L 858,469 L 861,472 L 864,473 L 867,473 L 870,471 L 873,468 L 876,463 L 879,456 L 882,449 L 885,442 L 888,435 L 891,429 L 894,424 L 897,422 L 901,421 L 904,423 L 907,427 L 910,434 L 913,442 L 916,451 L 919,462 L 922,472 L 925,481 L 928,489 L 931,494 L 934,497 L 937,497 L 940,494 L 943,487 L 947,479 L 950,468 L 953,456 L 956,444 L 959,432 L 962,421 L 965,412 L 968,407 L 971,404 L 974,405 L 977,410 L 980,417 L 983,428 L 986,440 L 989,453 L 993,467 L 996,479 L 999,491 L 1002,499 L 1005,504 L 1008,506 L 1011,505 L 1014,499 L 1017,491 L 1020,480 L 1023,467 L 1026,453 L 1029,440 L 1032,427 L 1036,417 L 1039,409 L 1042,404 L 1045,403 L 1048,406 L 1051,411 L 1054,420 L 1057,431 L 1060,443 L 1063,456 L 1066,468 L 1069,479 L 1072,489 L 1075,495 L 1078,499 L 1082,499 L 1085,496 L 1088,491 L 1091,483 L 1094,473 L 1097,462 L 1100,451 L 1103,441 L 1106,432 L 1109,425 L 1112,420 L 1115,418 L 1118,419 L 1121,421 L 1124,426 L 1128,433 L 1131,441 L 1134,449 L 1137,457 L 1140,464 L 1143,470 L 1146,474 L 1149,476 L 1152,477 L 1155,476 L 1158,473 L 1161,470 L 1164,465 L 1167,461 L 1170,456 L 1174,452 L 1177,450 L 1180,448 L 1183,447 L 1186,448 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,453 L 836,453 L 839,454 L 842,456 L 845,459 L 848,462 L 851,465 L 855,468 L 858,470 L 861,471 L 864,470 L 867,468 L 870,464 L 873,459 L 876,453 L 879,447 L 882,440 L 885,434 L 888,429 L 891,425 L 894,424 L 897,424 L 901,427 L 904,432 L 907,438 L 910,447 L 913,456 L 916,466 L 919,475 L 922,483 L 925,490 L 928,494 L 931,495 L 934,494 L 937,489 L 940,482 L 943,473 L 947,462 L 950,450 L 953,438 L 956,427 L 959,418 L 962,411 L 965,407 L 968,406 L 971,409 L 974,414 L 977,423 L 980,434 L 983,446 L 986,460 L 989,472 L 993,484 L 996,494 L 999,501 L 1002,504 L 1005,505 L 1008,501 L 1011,494 L 1014,485 L 1017,473 L 1020,460 L 1023,447 L 1026,434 L 1029,423 L 1032,414 L 1036,407 L 1039,404 L 1042,405 L 1045,409 L 1048,416 L 1051,425 L 1054,437 L 1057,449 L 1060,462 L 1063,474 L 1066,484 L 1069,492 L 1072,497 L 1075,499 L 1078,498 L 1082,494 L 1085,487 L 1088,478 L 1091,468 L 1094,457 L 1097,446 L 1100,437 L 1103,428 L 1106,422 L 1109,419 L 1112,418 L 1115,419 L 1118,423 L 1121,429 L 1124,436 L 1128,444 L 1131,453 L 1134,460 L 1137,467 L 1140,473 L 1143,476 L 1146,478 L 1149,478 L 1152,476 L 1155,473 L 1158,469 L 1161,464 L 1164,459 L 1167,454 L 1170,450 L 1174,448 L 1177,446 L 1180,445 L 1183,446 L 1186,447 L 1189,449 L 1192,452 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,457 L 842,459 L 845,462 L 848,465 L 851,467 L 855,468 L 858,468 L 861,467 L 864,465 L 867,461 L 870,456 L 873,450 L 876,444 L 879,438 L 882,433 L 885,429 L 888,426 L 891,426 L 894,427 L 897,431 L 901,436 L 904,443 L 907,451 L 910,460 L 913,469 L 916,478 L 919,485 L 922,490 L 925,493 L 928,493 L 931,490 L 934,484 L 937,477 L 940,467 L 943,456 L 947,445 L 950,434 L 953,424 L 956,416 L 959,410 L 962,408 L 965,409 L 968,413 L 971,420 L 974,429 L 977,440 L 980,453 L 983,466 L 986,478 L 989,488 L 993,496 L 996,501 L 999,503 L 1002,502 L 1005,497 L 1008,489 L 1011,479 L 1014,467 L 1017,454 L 1020,441 L 1023,429 L 1026,419 L 1029,411 L 1032,406 L 1036,405 L 1039,407 L 1042,413 L 1045,421 L 1048,431 L 1051,443 L 1054,455 L 1057,468 L 1060,479 L 1063,488 L 1066,494 L 1069,498 L 1072,498 L 1075,496 L 1078,491 L 1082,483 L 1085,473 L 1088,463 L 1091,452 L 1094,441 L 1097,432 L 1100,425 L 1103,420 L 1106,418 L 1109,418 L 1112,421 L 1115,425 L 1118,432 L 1121,440 L 1124,448 L 1128,457 L 1131,464 L 1134,470 L 1137,475 L 1140,478 L 1143,479 L 1146,478 L 1149,476 L 1152,472 L 1155,467 L 1158,462 L 1161,457 L 1164,452 L 1167,448 L 1170,446 L 1174,444 L 1177,444 L 1180,444 L 1183,446 L 1186,448 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,455 L 836,456 L 839,459 L 842,461 L 845,463 L 848,465 L 851,466 L 855,466 L 858,465 L 861,462 L 864,458 L 867,453 L 870,448 L 873,443 L 876,437 L 879,433 L 882,430 L 885,428 L 888,428 L 891,430 L 894,434 L 897,440 L 901,447 L 904,456 L 907,464 L 910,473 L 913,480 L 916,486 L 919,490 L 922,491 L 925,490 L 928,486 L 931,480 L 934,471 L 937,461 L 940,451 L 943,440 L 947,430 L 950,421 L 953,414 L 956,410 L 959,410 L 962,412 L 965,417 L 968,425 L 971,435 L 974,447 L 977,459 L 980,471 L 983,482 L 986,491 L 989,498 L 993,502 L 996,502 L 999,499 L 1002,493 L 1005,484 L 1008,473 L 1011,460 L 1014,448 L 1017,435 L 1020,424 L 1023,415 L 1026,409 L 1029,406 L 1032,406 L 1036,410 L 1039,417 L 1042,426 L 1045,437 L 1048,449 L 1051,461 L 1054,473 L 1057,483 L 1060,491 L 1063,496 L 1066,498 L 1069,498 L 1072,494 L 1075,487 L 1078,478 L 1082,468 L 1085,457 L 1088,447 L 1091,437 L 1094,428 L 1097,422 L 1100,418 L 1103,417 L 1106,418 L 1109,422 L 1112,428 L 1115,435 L 1118,444 L 1121,452 L 1124,461 L 1128,468 L 1131,474 L 1134,478 L 1137,480 L 1140,480 L 1143,478 L 1146,475 L 1149,471 L 1152,465 L 1155,460 L 1158,455 L 1161,450 L 1164,446 L 1167,443 L 1170,442 L 1174,442 L 1177,443 L 1180,445 L 1183,447 L 1186,449 L 1189,452 L 1192,453 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,460 L 842,462 L 845,463 L 848,464 L 851,464 L 855,462 L 858,460 L 861,456 L 864,451 L 867,446 L 870,441 L 873,437 L 876,433 L 879,430 L 882,430 L 885,431 L 888,433 L 891,438 L 894,444 L 897,452 L 901,460 L 904,468 L 907,475 L 910,482 L 913,486 L 916,489 L 919,489 L 922,487 L 925,482 L 928,475 L 931,466 L 934,456 L 937,446 L 940,435 L 943,426 L 947,419 L 950,413 L 953,411 L 956,411 L 959,415 L 962,421 L 965,430 L 968,441 L 971,453 L 974,465 L 977,476 L 980,486 L 983,494 L 986,499 L 989,501 L 993,500 L 996,496 L 999,488 L 1002,478 L 1005,467 L 1008,454 L 1011,442 L 1014,430 L 1017,420 L 1020,412 L 1023,408 L 1026,406 L 1029,408 L 1032,413 L 1036,421 L 1039,431 L 1042,443 L 1045,455 L 1048,467 L 1051,478 L 1054,487 L 1057,494 L 1060,498 L 1063,499 L 1066,496 L 1069,491 L 1072,483 L 1075,474 L 1078,463 L 1082,452 L 1085,441 L 1088,432 L 1091,424 L 1094,419 L 1097,417 L 1100,417 L 1103,419 L 1106,424 L 1109,431 L 1112,439 L 1115,448 L 1118,456 L 1121,465 L 1124,471 L 1128,477 L 1131,480 L 1134,481 L 1137,481 L 1140,478 L 1143,474 L 1146,469 L 1149,463 L 1152,457 L 1155,452 L 1158,447 L 1161,444 L 1164,441 L 1167,440 L 1170,440 L 1174,442 L 1177,444 L 1180,446 L 1183,449 L 1186,452 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,460 L 842,462 L 845,462 L 848,462 L 851,460 L 855,457 L 858,454 L 861,449 L 864,445 L 867,440 L 870,436 L 873,433 L 876,432 L 879,432 L 882,433 L 885,437 L 888,442 L 891,448 L 894,455 L 897,463 L 901,471 L 904,477 L 907,483 L 910,487 L 913,488 L 916,487 L 919,484 L 922,478 L 925,470 L 928,461 L 931,451 L 934,441 L 937,431 L 940,423 L 943,417 L 947,413 L 950,412 L 953,414 L 956,418 L 959,426 L 962,436 L 965,447 L 968,458 L 971,470 L 974,481 L 977,490 L 980,497 L 983,500 L 986,501 L 989,498 L 993,492 L 996,483 L 999,473 L 1002,461 L 1005,448 L 1008,436 L 1011,425 L 1014,416 L 1017,410 L 1020,406 L 1023,407 L 1026,410 L 1029,417 L 1032,426 L 1036,437 L 1039,449 L 1042,461 L 1045,473 L 1048,483 L 1051,491 L 1054,497 L 1057,499 L 1060,498 L 1063,494 L 1066,488 L 1069,479 L 1072,469 L 1075,458 L 1078,447 L 1082,436 L 1085,428 L 1088,421 L 1091,417 L 1094,415 L 1097,417 L 1100,420 L 1103,426 L 1106,434 L 1109,443 L 1112,452 L 1115,461 L 1118,469 L 1121,475 L 1124,480 L 1128,482 L 1131,483 L 1134,481 L 1137,478 L 1140,473 L 1143,467 L 1146,461 L 1149,455 L 1152,449 L 1155,444 L 1158,441 L 1161,439 L 1164,438 L 1167,439 L 1170,441 L 1174,443 L 1177,446 L 1180,449 L 1183,452 L 1186,454 L 1189,455 L 1192,455 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,460 L 842,460 L 845,460 L 848,458 L 851,455 L 855,452 L 858,448 L 861,444 L 864,440 L 867,436 L 870,434 L 873,433 L 876,434 L 879,436 L 882,440 L 885,445 L 888,452 L 891,459 L 894,466 L 897,473 L 901,479 L 904,484 L 907,486 L 910,487 L 913,485 L 916,481 L 919,474 L 922,466 L 925,456 L 928,446 L 931,437 L 934,428 L 937,420 L 940,415 L 943,413 L 947,413 L 950,416 L 953,422 L 956,431 L 959,441 L 962,452 L 965,464 L 968,475 L 971,485 L 974,493 L 977,499 L 980,501 L 983,500 L 986,495 L 989,488 L 993,478 L 996,467 L 999,454 L 1002,442 L 1005,430 L 1008,420 L 1011,412 L 1014,407 L 1017,406 L 1020,408 L 1023,413 L 1026,420 L 1029,431 L 1032,442 L 1036,455 L 1039,467 L 1042,478 L 1045,488 L 1048,495 L 1051,499 L 1054,500 L 1057,497 L 1060,492 L 1063,484 L 1066,475 L 1069,464 L 1072,452 L 1075,441 L 1078,431 L 1082,423 L 1085,418 L 1088,415 L 1091,414 L 1094,417 L 1097,422 L 1100,429 L 1103,438 L 1106,447 L 1109,456 L 1112,465 L 1115,473 L 1118,479 L 1121,483 L 1124,484 L 1128,484 L 1131,481 L 1134,477 L 1137,471 L 1140,465 L 1143,458 L 1146,452 L 1149,446 L 1152,442 L 1155,438 L 1158,437 L 1161,436 L 1164,438 L 1167,440 L 1170,443 L 1174,446 L 1177,450 L 1180,453 L 1183,455 L 1186,456 L 1189,457 L 1192,456 L 1195,454;M 830,454 L 833,457 L 836,458 L 839,459 L 842,458 L 845,456 L 848,454 L 851,451 L 855,447 L 858,443 L 861,439 L 864,437 L 867,435 L 870,434 L 873,436 L 876,438 L 879,443 L 882,448 L 885,455 L 888,462 L 891,469 L 894,476 L 897,481 L 901,484 L 904,486 L 907,485 L 910,482 L 913,477 L 916,470 L 919,461 L 922,452 L 925,442 L 928,432 L 931,424 L 934,418 L 937,414 L 940,413 L 943,414 L 947,419 L 950,426 L 953,436 L 956,446 L 959,458 L 962,470 L 965,480 L 968,490 L 971,496 L 974,500 L 977,501 L 980,498 L 983,492 L 986,484 L 989,473 L 993,461 L 996,448 L 999,436 L 1002,425 L 1005,416 L 1008,409 L 1011,406 L 1014,406 L 1017,409 L 1020,416 L 1023,425 L 1026,436 L 1029,448 L 1032,461 L 1036,473 L 1039,484 L 1042,492 L 1045,498 L 1048,501 L 1051,500 L 1054,496 L 1057,490 L 1060,480 L 1063,470 L 1066,458 L 1069,446 L 1072,436 L 1075,426 L 1078,419 L 1082,414 L 1085,413 L 1088,414 L 1091,418 L 1094,424 L 1097,432 L 1100,442 L 1103,452 L 1106,461 L 1109,470 L 1112,477 L 1115,482 L 1118,485 L 1121,486 L 1124,484 L 1128,481 L 1131,476 L 1134,469 L 1137,462 L 1140,455 L 1143,448 L 1146,443 L 1149,438 L 1152,436 L 1155,434 L 1158,435 L 1161,437 L 1164,439 L 1167,443 L 1170,447 L 1174,451 L 1177,454 L 1180,456 L 1183,458 L 1186,459 L 1189,458 L 1192,457 L 1195,454;M 830,454 L 833,456 L 836,457 L 839,456 L 842,455 L 845,453 L 848,450 L 851,446 L 855,443 L 858,439 L 861,437 L 864,436 L 867,436 L 870,438 L 873,441 L 876,446 L 879,452 L 882,458 L 885,465 L 888,472 L 891,478 L 894,482 L 897,485 L 901,485 L 904,484 L 907,480 L 910,473 L 913,466 L 916,457 L 919,447 L 922,437 L 925,428 L 928,421 L 931,416 L 934,413 L 937,413 L 940,416 L 943,422 L 947,431 L 950,441 L 953,452 L 956,464 L 959,475 L 962,485 L 965,493 L 968,499 L 971,501 L 974,500 L 977,496 L 980,489 L 983,479 L 986,467 L 989,455 L 993,442 L 996,430 L 999,419 L 1002,411 L 1005,406 L 1008,404 L 1011,406 L 1014,411 L 1017,419 L 1020,429 L 1023,442 L 1026,454 L 1029,467 L 1032,479 L 1036,489 L 1039,497 L 1042,501 L 1045,502 L 1048,500 L 1051,495 L 1054,486 L 1057,476 L 1060,464 L 1063,452 L 1066,441 L 1069,430 L 1072,421 L 1075,415 L 1078,412 L 1082,411 L 1085,414 L 1088,419 L 1091,427 L 1094,436 L 1097,446 L 1100,456 L 1103,466 L 1106,475 L 1109,481 L 1112,486 L 1115,488 L 1118,488 L 1121,485 L 1124,480 L 1128,474 L 1131,467 L 1134,459 L 1137,452 L 1140,445 L 1143,439 L 1146,435 L 1149,433 L 1152,432 L 1155,433 L 1158,436 L 1161,439 L 1164,443 L 1167,448 L 1170,452 L 1174,455 L 1177,458 L 1180,460 L 1183,460 L 1186,460 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,455 L 836,455 L 839,454 L 842,452 L 845,449 L 848,446 L 851,443 L 855,440 L 858,438 L 861,437 L 864,438 L 867,440 L 870,444 L 873,449 L 876,455 L 879,461 L 882,468 L 885,474 L 888,479 L 891,483 L 894,484 L 897,484 L 901,481 L 904,476 L 907,470 L 910,461 L 913,452 L 916,442 L 919,433 L 922,425 L 925,418 L 928,414 L 931,413 L 934,414 L 937,419 L 940,426 L 943,435 L 947,446 L 950,458 L 953,470 L 956,481 L 959,490 L 962,497 L 965,501 L 968,502 L 971,499 L 974,494 L 977,485 L 980,474 L 983,462 L 986,448 L 989,436 L 993,424 L 996,414 L 999,407 L 1002,404 L 1005,403 L 1008,407 L 1011,414 L 1014,423 L 1017,435 L 1020,448 L 1023,461 L 1026,474 L 1029,485 L 1032,494 L 1036,501 L 1039,504 L 1042,503 L 1045,499 L 1048,492 L 1051,483 L 1054,471 L 1057,459 L 1060,446 L 1063,434 L 1066,424 L 1069,416 L 1072,411 L 1075,409 L 1078,410 L 1082,414 L 1085,421 L 1088,430 L 1091,440 L 1094,451 L 1097,462 L 1100,471 L 1103,480 L 1106,486 L 1109,489 L 1112,490 L 1115,489 L 1118,485 L 1121,479 L 1124,472 L 1128,464 L 1131,455 L 1134,448 L 1137,441 L 1140,435 L 1143,432 L 1146,430 L 1149,430 L 1152,432 L 1155,435 L 1158,439 L 1161,444 L 1164,449 L 1167,454 L 1170,458 L 1174,460 L 1177,462 L 1180,463 L 1183,462 L 1186,461 L 1189,459 L 1192,456 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,451 L 842,449 L 845,446 L 848,443 L 851,441 L 855,439 L 858,439 L 861,440 L 864,443 L 867,447 L 870,452 L 873,458 L 876,464 L 879,470 L 882,476 L 885,480 L 888,483 L 891,484 L 894,482 L 897,479 L 901,473 L 904,465 L 907,457 L 910,447 L 913,438 L 916,429 L 919,422 L 922,416 L 925,413 L 928,413 L 931,416 L 934,422 L 937,430 L 940,440 L 943,452 L 947,464 L 950,475 L 953,486 L 956,494 L 959,500 L 962,502 L 965,502 L 968,498 L 971,490 L 974,480 L 977,468 L 980,455 L 983,442 L 986,429 L 989,418 L 993,409 L 996,404 L 999,402 L 1002,403 L 1005,409 L 1008,417 L 1011,428 L 1014,440 L 1017,454 L 1020,468 L 1023,480 L 1026,491 L 1029,499 L 1032,504 L 1036,506 L 1039,503 L 1042,498 L 1045,489 L 1048,478 L 1051,466 L 1054,453 L 1057,440 L 1060,428 L 1063,418 L 1066,412 L 1069,408 L 1072,407 L 1075,410 L 1078,415 L 1082,424 L 1085,434 L 1088,445 L 1091,456 L 1094,467 L 1097,477 L 1100,485 L 1103,490 L 1106,492 L 1109,492 L 1112,489 L 1115,484 L 1118,477 L 1121,469 L 1124,460 L 1128,451 L 1131,443 L 1134,437 L 1137,432 L 1140,429 L 1143,427 L 1146,428 L 1149,431 L 1152,435 L 1155,440 L 1158,446 L 1161,451 L 1164,456 L 1167,460 L 1170,463 L 1174,465 L 1177,465 L 1180,464 L 1183,463 L 1186,460 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,453 L 836,451 L 839,449 L 842,446 L 845,444 L 848,442 L 851,441 L 855,441 L 858,442 L 861,445 L 864,449 L 867,455 L 870,460 L 873,467 L 876,472 L 879,477 L 882,481 L 885,483 L 888,483 L 891,480 L 894,476 L 897,469 L 901,461 L 904,452 L 907,443 L 910,433 L 913,425 L 916,419 L 919,415 L 922,413 L 925,414 L 928,419 L 931,425 L 934,435 L 937,446 L 940,458 L 943,470 L 947,481 L 950,491 L 953,498 L 956,502 L 959,503 L 962,501 L 965,495 L 968,486 L 971,475 L 974,462 L 977,449 L 980,435 L 983,423 L 986,413 L 989,405 L 993,401 L 996,401 L 999,404 L 1002,411 L 1005,421 L 1008,433 L 1011,447 L 1014,461 L 1017,475 L 1020,487 L 1023,497 L 1026,504 L 1029,507 L 1032,507 L 1036,503 L 1039,495 L 1042,485 L 1045,473 L 1048,459 L 1051,446 L 1054,433 L 1057,422 L 1060,413 L 1063,407 L 1066,405 L 1069,406 L 1072,410 L 1075,417 L 1078,427 L 1082,438 L 1085,450 L 1088,462 L 1091,473 L 1094,483 L 1097,489 L 1100,494 L 1103,495 L 1106,493 L 1109,489 L 1112,483 L 1115,475 L 1118,465 L 1121,456 L 1124,447 L 1128,439 L 1131,432 L 1134,428 L 1137,425 L 1140,425 L 1143,427 L 1146,431 L 1149,436 L 1152,441 L 1155,448 L 1158,453 L 1161,459 L 1164,463 L 1167,466 L 1170,467 L 1174,467 L 1177,466 L 1180,464 L 1183,462 L 1186,459 L 1189,457 L 1192,455 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,447 L 842,445 L 845,443 L 848,442 L 851,443 L 855,445 L 858,448 L 861,452 L 864,457 L 867,463 L 870,469 L 873,474 L 876,478 L 879,481 L 882,482 L 885,481 L 888,478 L 891,472 L 894,465 L 897,457 L 901,448 L 904,438 L 907,430 L 910,422 L 913,417 L 916,414 L 919,413 L 922,416 L 925,422 L 928,430 L 931,440 L 934,451 L 937,464 L 940,475 L 943,486 L 947,495 L 950,501 L 953,504 L 956,503 L 959,499 L 962,492 L 965,481 L 968,469 L 971,456 L 974,442 L 977,428 L 980,417 L 983,408 L 986,402 L 989,399 L 993,401 L 996,406 L 999,415 L 1002,426 L 1005,439 L 1008,454 L 1011,468 L 1014,482 L 1017,493 L 1020,502 L 1023,508 L 1026,509 L 1029,507 L 1032,501 L 1036,492 L 1039,480 L 1042,467 L 1045,453 L 1048,439 L 1051,426 L 1054,416 L 1057,408 L 1060,403 L 1063,403 L 1066,405 L 1069,412 L 1072,420 L 1075,431 L 1078,444 L 1082,456 L 1085,469 L 1088,479 L 1091,488 L 1094,494 L 1097,497 L 1100,497 L 1103,494 L 1106,488 L 1109,481 L 1112,471 L 1115,461 L 1118,451 L 1121,442 L 1124,434 L 1128,428 L 1131,424 L 1134,422 L 1137,423 L 1140,426 L 1143,431 L 1146,437 L 1149,443 L 1152,450 L 1155,456 L 1158,462 L 1161,466 L 1164,469 L 1167,470 L 1170,470 L 1174,468 L 1177,466 L 1180,463 L 1183,460 L 1186,457 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,447 L 842,445 L 845,444 L 848,445 L 851,447 L 855,450 L 858,454 L 861,459 L 864,465 L 867,470 L 870,475 L 873,479 L 876,481 L 879,481 L 882,479 L 885,475 L 888,469 L 891,461 L 894,452 L 897,443 L 901,434 L 904,426 L 907,420 L 910,415 L 913,413 L 916,415 L 919,419 L 922,425 L 925,435 L 928,445 L 931,457 L 934,469 L 937,481 L 940,491 L 943,498 L 947,503 L 950,504 L 953,502 L 956,496 L 959,487 L 962,476 L 965,463 L 968,449 L 971,435 L 974,422 L 977,411 L 980,403 L 983,399 L 986,398 L 989,402 L 993,409 L 996,419 L 999,432 L 1002,446 L 1005,461 L 1008,476 L 1011,489 L 1014,499 L 1017,507 L 1020,510 L 1023,510 L 1026,506 L 1029,498 L 1032,488 L 1036,475 L 1039,460 L 1042,446 L 1045,432 L 1048,419 L 1051,410 L 1054,403 L 1057,401 L 1060,402 L 1063,406 L 1066,414 L 1069,424 L 1072,437 L 1075,450 L 1078,463 L 1082,475 L 1085,485 L 1088,493 L 1091,498 L 1094,500 L 1097,498 L 1100,494 L 1103,487 L 1106,478 L 1109,467 L 1112,456 L 1115,446 L 1118,437 L 1121,429 L 1124,423 L 1128,420 L 1131,420 L 1134,422 L 1137,426 L 1140,432 L 1143,438 L 1146,446 L 1149,453 L 1152,460 L 1155,465 L 1158,469 L 1161,472 L 1164,473 L 1167,472 L 1170,470 L 1174,467 L 1177,463 L 1180,460 L 1183,457 L 1186,454 L 1189,453 L 1192,452 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,447 L 842,446 L 845,447 L 848,449 L 851,452 L 855,456 L 858,461 L 861,466 L 864,471 L 867,475 L 870,478 L 873,479 L 876,479 L 879,476 L 882,471 L 885,465 L 888,457 L 891,448 L 894,439 L 897,431 L 901,423 L 904,418 L 907,415 L 910,414 L 913,417 L 916,422 L 919,430 L 922,440 L 925,451 L 928,463 L 931,475 L 934,486 L 937,495 L 940,501 L 943,504 L 947,504 L 950,500 L 953,492 L 956,482 L 959,470 L 962,456 L 965,442 L 968,428 L 971,416 L 974,407 L 977,400 L 980,398 L 983,399 L 986,404 L 989,413 L 993,425 L 996,438 L 999,453 L 1002,469 L 1005,483 L 1008,495 L 1011,504 L 1014,510 L 1017,512 L 1020,510 L 1023,504 L 1026,495 L 1029,482 L 1032,468 L 1036,453 L 1039,438 L 1042,425 L 1045,413 L 1048,405 L 1051,400 L 1054,399 L 1057,402 L 1060,408 L 1063,417 L 1066,429 L 1069,442 L 1072,456 L 1075,470 L 1078,481 L 1082,491 L 1085,498 L 1088,502 L 1091,502 L 1094,499 L 1097,493 L 1100,484 L 1103,474 L 1106,462 L 1109,451 L 1112,440 L 1115,431 L 1118,424 L 1121,419 L 1124,417 L 1128,418 L 1131,421 L 1134,426 L 1137,433 L 1140,441 L 1143,449 L 1146,457 L 1149,464 L 1152,469 L 1155,473 L 1158,475 L 1161,475 L 1164,474 L 1167,471 L 1170,467 L 1174,463 L 1177,459 L 1180,456 L 1183,453 L 1186,451 L 1189,451 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,449 L 842,449 L 845,451 L 848,454 L 851,458 L 855,463 L 858,467 L 861,472 L 864,475 L 867,477 L 870,478 L 873,476 L 876,473 L 879,468 L 882,461 L 885,453 L 888,444 L 891,436 L 894,428 L 897,421 L 901,417 L 904,415 L 907,416 L 910,420 L 913,426 L 916,435 L 919,445 L 922,457 L 925,469 L 928,480 L 931,490 L 934,498 L 937,503 L 940,504 L 943,502 L 947,496 L 950,488 L 953,476 L 956,463 L 959,449 L 962,435 L 965,422 L 968,411 L 971,403 L 974,398 L 977,397 L 980,400 L 983,407 L 986,418 L 989,431 L 993,446 L 996,461 L 999,476 L 1002,490 L 1005,501 L 1008,509 L 1011,513 L 1014,513 L 1017,509 L 1020,501 L 1023,490 L 1026,476 L 1029,461 L 1032,446 L 1036,431 L 1039,418 L 1042,407 L 1045,400 L 1048,397 L 1051,398 L 1054,403 L 1057,411 L 1060,422 L 1063,435 L 1066,449 L 1069,463 L 1072,476 L 1075,488 L 1078,496 L 1082,502 L 1085,504 L 1088,503 L 1091,498 L 1094,490 L 1097,480 L 1100,469 L 1103,457 L 1106,445 L 1109,435 L 1112,426 L 1115,420 L 1118,416 L 1121,415 L 1124,417 L 1128,421 L 1131,428 L 1134,436 L 1137,444 L 1140,453 L 1143,461 L 1146,468 L 1149,473 L 1152,476 L 1155,478 L 1158,477 L 1161,475 L 1164,472 L 1167,467 L 1170,463 L 1174,458 L 1177,454 L 1180,451 L 1183,449 L 1186,449 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,451 L 836,451 L 839,451 L 842,453 L 845,456 L 848,459 L 851,464 L 855,468 L 858,472 L 861,474 L 864,476 L 867,475 L 870,473 L 873,469 L 876,464 L 879,457 L 882,449 L 885,441 L 888,433 L 891,426 L 894,420 L 897,417 L 901,416 L 904,419 L 907,423 L 910,431 L 913,440 L 916,451 L 919,463 L 922,474 L 925,485 L 928,494 L 931,500 L 934,503 L 937,503 L 940,499 L 943,492 L 947,482 L 950,470 L 953,456 L 956,442 L 959,428 L 962,416 L 965,407 L 968,400 L 971,397 L 974,398 L 977,403 L 980,412 L 983,424 L 986,438 L 989,453 L 993,468 L 996,483 L 999,496 L 1002,505 L 1005,512 L 1008,514 L 1011,512 L 1014,506 L 1017,496 L 1020,484 L 1023,469 L 1026,453 L 1029,438 L 1032,424 L 1036,412 L 1039,403 L 1042,397 L 1045,396 L 1048,399 L 1051,405 L 1054,415 L 1057,427 L 1060,441 L 1063,456 L 1066,470 L 1069,483 L 1072,493 L 1075,501 L 1078,505 L 1082,505 L 1085,502 L 1088,496 L 1091,487 L 1094,476 L 1097,463 L 1100,451 L 1103,439 L 1106,429 L 1109,421 L 1112,416 L 1115,413 L 1118,414 L 1121,417 L 1124,423 L 1128,430 L 1131,439 L 1134,448 L 1137,457 L 1140,465 L 1143,472 L 1146,477 L 1149,479 L 1152,480 L 1155,479 L 1158,476 L 1161,472 L 1164,467 L 1167,462 L 1170,457 L 1174,452 L 1177,449 L 1180,447 L 1183,446 L 1186,447 L 1189,448 L 1192,451 L 1195,454;M 830,454 L 833,452 L 836,453 L 839,454 L 842,457 L 845,460 L 848,464 L 851,468 L 855,471 L 858,473 L 861,474 L 864,473 L 867,470 L 870,466 L 873,460 L 876,453 L 879,445 L 882,438 L 885,430 L 888,424 L 891,420 L 894,418 L 897,419 L 901,422 L 904,428 L 907,436 L 910,446 L 913,457 L 916,468 L 919,479 L 922,488 L 925,496 L 928,501 L 931,502 L 934,501 L 937,495 L 940,487 L 943,476 L 947,463 L 950,449 L 953,436 L 956,423 L 959,412 L 962,404 L 965,399 L 968,398 L 971,401 L 974,408 L 977,418 L 980,431 L 983,445 L 986,461 L 989,476 L 993,489 L 996,501 L 999,509 L 1002,513 L 1005,513 L 1008,509 L 1011,502 L 1014,490 L 1017,477 L 1020,461 L 1023,446 L 1026,431 L 1029,417 L 1032,406 L 1036,399 L 1039,396 L 1042,396 L 1045,401 L 1048,409 L 1051,420 L 1054,434 L 1057,448 L 1060,463 L 1063,477 L 1066,489 L 1069,498 L 1072,504 L 1075,507 L 1078,506 L 1082,501 L 1085,493 L 1088,482 L 1091,470 L 1094,458 L 1097,445 L 1100,433 L 1103,424 L 1106,417 L 1109,413 L 1112,411 L 1115,413 L 1118,418 L 1121,425 L 1124,433 L 1128,443 L 1131,452 L 1134,461 L 1137,469 L 1140,476 L 1143,480 L 1146,482 L 1149,482 L 1152,480 L 1155,476 L 1158,471 L 1161,465 L 1164,460 L 1167,454 L 1170,450 L 1174,446 L 1177,444 L 1180,444 L 1183,444 L 1186,446 L 1189,448 L 1192,451 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,457 L 842,460 L 845,463 L 848,467 L 851,469 L 855,471 L 858,471 L 861,470 L 864,467 L 867,462 L 870,457 L 873,450 L 876,442 L 879,435 L 882,429 L 885,424 L 888,421 L 891,420 L 894,422 L 897,426 L 901,432 L 904,441 L 907,451 L 910,462 L 913,473 L 916,483 L 919,491 L 922,497 L 925,500 L 928,500 L 931,497 L 934,491 L 937,481 L 940,470 L 943,457 L 947,443 L 950,430 L 953,418 L 956,408 L 959,402 L 962,399 L 965,400 L 968,404 L 971,413 L 974,424 L 977,438 L 980,453 L 983,468 L 986,482 L 989,495 L 993,505 L 996,511 L 999,513 L 1002,512 L 1005,506 L 1008,496 L 1011,484 L 1014,469 L 1017,454 L 1020,438 L 1023,424 L 1026,412 L 1029,402 L 1032,397 L 1036,395 L 1039,398 L 1042,404 L 1045,414 L 1048,426 L 1051,441 L 1054,456 L 1057,470 L 1060,484 L 1063,494 L 1066,502 L 1069,507 L 1072,507 L 1075,504 L 1078,498 L 1082,489 L 1085,477 L 1088,464 L 1091,451 L 1094,439 L 1097,428 L 1100,419 L 1103,413 L 1106,410 L 1109,411 L 1112,414 L 1115,420 L 1118,428 L 1121,437 L 1124,447 L 1128,457 L 1131,466 L 1134,474 L 1137,480 L 1140,483 L 1143,484 L 1146,483 L 1149,480 L 1152,475 L 1155,470 L 1158,464 L 1161,457 L 1164,452 L 1167,447 L 1170,444 L 1174,442 L 1177,441 L 1180,442 L 1183,444 L 1186,447 L 1189,449 L 1192,452 L 1195,454;M 830,454 L 833,455 L 836,457 L 839,460 L 842,463 L 845,465 L 848,468 L 851,469 L 855,469 L 858,467 L 861,464 L 864,459 L 867,453 L 870,447 L 873,440 L 876,434 L 879,428 L 882,424 L 885,422 L 888,423 L 891,425 L 894,430 L 897,437 L 901,446 L 904,456 L 907,466 L 910,477 L 913,486 L 916,493 L 919,497 L 922,499 L 925,498 L 928,493 L 931,485 L 934,475 L 937,463 L 940,450 L 943,437 L 947,425 L 950,414 L 953,406 L 956,401 L 959,400 L 962,403 L 965,409 L 968,419 L 971,431 L 974,445 L 977,460 L 980,475 L 983,488 L 986,499 L 989,507 L 993,512 L 996,512 L 999,509 L 1002,501 L 1005,490 L 1008,477 L 1011,462 L 1014,446 L 1017,431 L 1020,418 L 1023,407 L 1026,399 L 1029,396 L 1032,396 L 1036,401 L 1039,409 L 1042,420 L 1045,433 L 1048,448 L 1051,463 L 1054,477 L 1057,489 L 1060,499 L 1063,505 L 1066,508 L 1069,507 L 1072,502 L 1075,494 L 1078,483 L 1082,471 L 1085,458 L 1088,445 L 1091,433 L 1094,423 L 1097,415 L 1100,410 L 1103,409 L 1106,411 L 1109,415 L 1112,422 L 1115,431 L 1118,442 L 1121,452 L 1124,462 L 1128,471 L 1131,478 L 1134,483 L 1137,485 L 1140,486 L 1143,484 L 1146,480 L 1149,474 L 1152,468 L 1155,461 L 1158,455 L 1161,449 L 1164,444 L 1167,441 L 1170,439 L 1174,439 L 1177,440 L 1180,443 L 1183,445 L 1186,448 L 1189,451 L 1192,453 L 1195,454;M 830,454 L 833,456 L 836,458 L 839,461 L 842,464 L 845,465 L 848,466 L 851,466 L 855,464 L 858,461 L 861,456 L 864,451 L 867,445 L 870,439 L 873,433 L 876,429 L 879,426 L 882,425 L 885,426 L 888,429 L 891,435 L 894,442 L 897,451 L 901,461 L 904,471 L 907,480 L 910,487 L 913,493 L 916,496 L 919,497 L 922,494 L 925,488 L 928,479 L 931,469 L 934,457 L 937,444 L 940,432 L 943,420 L 947,411 L 950,405 L 953,402 L 956,403 L 959,407 L 962,415 L 965,425 L 968,438 L 971,452 L 974,467 L 977,481 L 980,493 L 983,503 L 986,509 L 989,511 L 993,510 L 996,504 L 999,495 L 1002,483 L 1005,469 L 1008,454 L 1011,439 L 1014,425 L 1017,413 L 1020,403 L 1023,398 L 1026,396 L 1029,398 L 1032,405 L 1036,414 L 1039,426 L 1042,440 L 1045,455 L 1048,470 L 1051,483 L 1054,494 L 1057,502 L 1060,507 L 1063,508 L 1066,505 L 1069,499 L 1072,489 L 1075,478 L 1078,465 L 1082,452 L 1085,439 L 1088,427 L 1091,418 L 1094,412 L 1097,409 L 1100,409 L 1103,412 L 1106,418 L 1109,426 L 1112,436 L 1115,446 L 1118,457 L 1121,467 L 1124,475 L 1128,481 L 1131,486 L 1134,487 L 1137,486 L 1140,483 L 1143,478 L 1146,472 L 1149,465 L 1152,458 L 1155,452 L 1158,446 L 1161,441 L 1164,438 L 1167,437 L 1170,437 L 1174,439 L 1177,442 L 1180,445 L 1183,448 L 1186,451 L 1189,453 L 1192,454 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,461 L 842,463 L 845,464 L 848,463 L 851,461 L 855,458 L 858,454 L 861,449 L 864,443 L 867,438 L 870,433 L 873,429 L 876,427 L 879,427 L 882,429 L 885,433 L 888,439 L 891,447 L 894,456 L 897,465 L 901,474 L 904,482 L 907,488 L 910,493 L 913,495 L 916,493 L 919,489 L 922,483 L 925,473 L 928,463 L 931,451 L 934,439 L 937,427 L 940,417 L 943,410 L 947,405 L 950,404 L 953,406 L 956,412 L 959,421 L 962,432 L 965,445 L 968,459 L 971,473 L 974,486 L 977,497 L 980,505 L 983,509 L 986,510 L 989,506 L 993,499 L 996,489 L 999,476 L 1002,462 L 1005,447 L 1008,432 L 1011,419 L 1014,409 L 1017,401 L 1020,398 L 1023,398 L 1026,402 L 1029,410 L 1032,420 L 1036,433 L 1039,448 L 1042,462 L 1045,476 L 1048,489 L 1051,498 L 1054,505 L 1057,507 L 1060,506 L 1063,502 L 1066,494 L 1069,484 L 1072,471 L 1075,458 L 1078,445 L 1082,433 L 1085,423 L 1088,415 L 1091,410 L 1094,408 L 1097,410 L 1100,414 L 1103,421 L 1106,430 L 1109,441 L 1112,452 L 1115,462 L 1118,471 L 1121,479 L 1124,485 L 1128,488 L 1131,488 L 1134,486 L 1137,482 L 1140,476 L 1143,470 L 1146,462 L 1149,455 L 1152,448 L 1155,443 L 1158,439 L 1161,436 L 1164,435 L 1167,436 L 1170,438 L 1174,441 L 1177,445 L 1180,448 L 1183,451 L 1186,454 L 1189,455 L 1192,456 L 1195,454;M 830,454 L 833,457 L 836,459 L 839,461 L 842,461 L 845,461 L 848,459 L 851,456 L 855,452 L 858,447 L 861,442 L 864,437 L 867,434 L 870,431 L 873,430 L 876,430 L 879,433 L 882,438 L 885,444 L 888,451 L 891,460 L 894,468 L 897,476 L 901,483 L 904,488 L 907,491 L 910,492 L 913,490 L 916,485 L 919,477 L 922,468 L 925,457 L 928,445 L 931,434 L 934,424 L 937,415 L 940,409 L 943,406 L 947,407 L 950,410 L 953,417 L 956,427 L 959,439 L 962,452 L 965,466 L 968,479 L 971,490 L 974,499 L 977,505 L 980,508 L 983,507 L 986,502 L 989,493 L 993,482 L 996,469 L 999,455 L 1002,440 L 1005,427 L 1008,415 L 1011,406 L 1014,400 L 1017,398 L 1020,401 L 1023,406 L 1026,415 L 1029,427 L 1032,441 L 1036,455 L 1039,469 L 1042,482 L 1045,493 L 1048,501 L 1051,506 L 1054,507 L 1057,504 L 1060,498 L 1063,489 L 1066,478 L 1069,465 L 1072,452 L 1075,439 L 1078,428 L 1082,419 L 1085,412 L 1088,409 L 1091,408 L 1094,411 L 1097,417 L 1100,425 L 1103,435 L 1106,446 L 1109,457 L 1112,467 L 1115,476 L 1118,482 L 1121,487 L 1124,489 L 1128,488 L 1131,485 L 1134,480 L 1137,474 L 1140,466 L 1143,459 L 1146,451 L 1149,445 L 1152,440 L 1155,436 L 1158,434 L 1161,434 L 1164,435 L 1167,438 L 1170,441 L 1174,445 L 1177,449 L 1180,452 L 1183,455 L 1186,457 L 1189,457 L 1192,456 L 1195,454;M 830,454 L 833,457 L 836,458 L 839,459 L 842,458 L 845,457 L 848,454 L 851,450 L 855,446 L 858,442 L 861,438 L 864,435 L 867,433 L 870,432 L 873,434 L 876,437 L 879,442 L 882,448 L 885,455 L 888,463 L 891,471 L 894,478 L 897,484 L 901,488 L 904,489 L 907,489 L 910,485 L 913,480 L 916,472 L 919,462 L 922,451 L 925,440 L 928,430 L 931,421 L 934,414 L 937,410 L 940,408 L 943,410 L 947,415 L 950,423 L 953,434 L 956,446 L 959,459 L 962,471 L 965,483 L 968,493 L 971,501 L 974,505 L 977,506 L 980,503 L 983,496 L 986,487 L 989,475 L 993,462 L 996,448 L 999,434 L 1002,422 L 1005,411 L 1008,404 L 1011,400 L 1014,400 L 1017,404 L 1020,411 L 1023,422 L 1026,434 L 1029,448 L 1032,462 L 1036,475 L 1039,487 L 1042,496 L 1045,503 L 1048,506 L 1051,505 L 1054,501 L 1057,493 L 1060,483 L 1063,471 L 1066,459 L 1069,446 L 1072,434 L 1075,423 L 1078,415 L 1082,410 L 1085,408 L 1088,410 L 1091,414 L 1094,421 L 1097,430 L 1100,440 L 1103,451 L 1106,462 L 1109,472 L 1112,480 L 1115,485 L 1118,489 L 1121,489 L 1124,488 L 1128,484 L 1131,478 L 1134,471 L 1137,463 L 1140,455 L 1143,448 L 1146,442 L 1149,437 L 1152,434 L 1155,432 L 1158,433 L 1161,435 L 1164,438 L 1167,442 L 1170,446 L 1174,450 L 1177,454 L 1180,457 L 1183,458 L 1186,459 L 1189,458 L 1192,457 L 1195,454;M 830,454 L 833,456 L 836,457 L 839,457 L 842,455 L 845,453 L 848,449 L 851,446 L 855,442 L 858,439 L 861,436 L 864,435 L 867,435 L 870,437 L 873,440 L 876,445 L 879,452 L 882,459 L 885,466 L 888,473 L 891,479 L 894,484 L 897,486 L 901,487 L 904,485 L 907,481 L 910,474 L 913,466 L 916,457 L 919,446 L 922,436 L 925,427 L 928,419 L 931,414 L 934,411 L 937,411 L 940,414 L 943,421 L 947,429 L 950,440 L 953,452 L 956,464 L 959,476 L 962,487 L 965,496 L 968,501 L 971,504 L 974,503 L 977,498 L 980,491 L 983,480 L 986,468 L 989,455 L 993,441 L 996,429 L 999,417 L 1002,409 L 1005,404 L 1008,402 L 1011,403 L 1014,409 L 1017,417 L 1020,428 L 1023,441 L 1026,455 L 1029,468 L 1032,481 L 1036,491 L 1039,499 L 1042,504 L 1045,505 L 1048,502 L 1051,497 L 1054,488 L 1057,477 L 1060,465 L 1063,452 L 1066,440 L 1069,429 L 1072,419 L 1075,413 L 1078,409 L 1082,409 L 1085,412 L 1088,417 L 1091,425 L 1094,435 L 1097,446 L 1100,457 L 1103,467 L 1106,476 L 1109,483 L 1112,488 L 1115,490 L 1118,489 L 1121,487 L 1124,482 L 1128,475 L 1131,467 L 1134,459 L 1137,451 L 1140,444 L 1143,438 L 1146,434 L 1149,432 L 1152,431 L 1155,432 L 1158,435 L 1161,438 L 1164,443 L 1167,447 L 1170,452 L 1174,456 L 1177,458 L 1180,460 L 1183,461 L 1186,460 L 1189,459 L 1192,457 L 1195,454;M 830,454 L 833,455 L 836,455 L 839,454 L 842,452 L 845,449 L 848,446 L 851,443 L 855,440 L 858,438 L 861,437 L 864,438 L 867,440 L 870,444 L 873,449 L 876,455 L 879,461 L 882,468 L 885,474 L 888,479 L 891,483 L 894,484 L 897,484 L 901,481 L 904,476 L 907,470 L 910,461 L 913,452 L 916,442 L 919,433 L 922,425 L 925,418 L 928,414 L 931,413 L 934,414 L 937,419 L 940,426 L 943,435 L 947,446 L 950,458 L 953,470 L 956,481 L 959,490 L 962,497 L 965,501 L 968,502 L 971,499 L 974,494 L 977,485 L 980,474 L 983,462 L 986,448 L 989,436 L 993,424 L 996,414 L 999,407 L 1002,404 L 1005,403 L 1008,407 L 1011,414 L 1014,423 L 1017,435 L 1020,448 L 1023,461 L 1026,474 L 1029,485 L 1032,494 L 1036,501 L 1039,504 L 1042,503 L 1045,499 L 1048,492 L 1051,483 L 1054,471 L 1057,459 L 1060,446 L 1063,434 L 1066,424 L 1069,416 L 1072,411 L 1075,409 L 1078,410 L 1082,414 L 1085,421 L 1088,430 L 1091,440 L 1094,451 L 1097,462 L 1100,471 L 1103,480 L 1106,486 L 1109,489 L 1112,490 L 1115,489 L 1118,485 L 1121,479 L 1124,472 L 1128,464 L 1131,455 L 1134,448 L 1137,441 L 1140,435 L 1143,432 L 1146,430 L 1149,430 L 1152,432 L 1155,435 L 1158,439 L 1161,444 L 1164,449 L 1167,454 L 1170,458 L 1174,460 L 1177,462 L 1180,463 L 1183,462 L 1186,461 L 1189,459 L 1192,456 L 1195,454;M 830,454 L 833,454 L 836,453 L 839,451 L 842,449 L 845,446 L 848,443 L 851,441 L 855,440 L 858,440 L 861,441 L 864,443 L 867,447 L 870,452 L 873,458 L 876,464 L 879,470 L 882,475 L 885,479 L 888,482 L 891,482 L 894,481 L 897,477 L 901,472 L 904,465 L 907,457 L 910,448 L 913,439 L 916,430 L 919,423 L 922,418 L 925,415 L 928,415 L 931,418 L 934,424 L 937,431 L 940,441 L 943,452 L 947,463 L 950,474 L 953,484 L 956,492 L 959,498 L 962,500 L 965,499 L 968,495 L 971,488 L 974,479 L 977,468 L 980,455 L 983,442 L 986,430 L 989,420 L 993,412 L 996,407 L 999,405 L 1002,406 L 1005,411 L 1008,419 L 1011,429 L 1014,441 L 1017,454 L 1020,467 L 1023,479 L 1026,489 L 1029,497 L 1032,502 L 1036,503 L 1039,501 L 1042,495 L 1045,487 L 1048,477 L 1051,465 L 1054,453 L 1057,440 L 1060,429 L 1063,420 L 1066,414 L 1069,410 L 1072,410 L 1075,412 L 1078,417 L 1082,425 L 1085,435 L 1088,445 L 1091,456 L 1094,467 L 1097,476 L 1100,483 L 1103,488 L 1106,490 L 1109,490 L 1112,487 L 1115,483 L 1118,476 L 1121,468 L 1124,460 L 1128,451 L 1131,444 L 1134,438 L 1137,433 L 1140,430 L 1143,429 L 1146,430 L 1149,432 L 1152,436 L 1155,441 L 1158,446 L 1161,451 L 1164,456 L 1167,460 L 1170,462 L 1174,464 L 1177,464 L 1180,464 L 1183,462 L 1186,460 L 1189,458 L 1192,456 L 1195,454;M 830,454 L 833,453 L 836,452 L 839,449 L 842,447 L 845,445 L 848,443 L 851,442 L 855,442 L 858,443 L 861,446 L 864,450 L 867,455 L 870,460 L 873,465 L 876,471 L 879,475 L 882,478 L 885,480 L 888,480 L 891,478 L 894,474 L 897,468 L 901,461 L 904,452 L 907,444 L 910,435 L 913,428 L 916,422 L 919,418 L 922,417 L 925,418 L 928,422 L 931,428 L 934,437 L 937,447 L 940,457 L 943,468 L 947,478 L 950,487 L 953,494 L 956,498 L 959,498 L 962,496 L 965,491 L 968,483 L 971,473 L 974,461 L 977,449 L 980,437 L 983,426 L 986,417 L 989,410 L 993,406 L 996,406 L 999,409 L 1002,415 L 1005,424 L 1008,435 L 1011,448 L 1014,460 L 1017,473 L 1020,484 L 1023,493 L 1026,499 L 1029,502 L 1032,502 L 1036,498 L 1039,491 L 1042,482 L 1045,471 L 1048,459 L 1051,447 L 1054,435 L 1057,425 L 1060,417 L 1063,412 L 1066,410 L 1069,410 L 1072,414 L 1075,421 L 1078,430 L 1082,440 L 1085,451 L 1088,461 L 1091,471 L 1094,480 L 1097,486 L 1100,490 L 1103,491 L 1106,490 L 1109,486 L 1112,480 L 1115,473 L 1118,464 L 1121,456 L 1124,447 L 1128,440 L 1131,434 L 1134,430 L 1137,428 L 1140,428 L 1143,430 L 1146,433 L 1149,437 L 1152,443 L 1155,448 L 1158,453 L 1161,458 L 1164,462 L 1167,465 L 1170,466 L 1174,466 L 1177,465 L 1180,463 L 1183,461 L 1186,459 L 1189,456 L 1192,455 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,448 L 842,446 L 845,445 L 848,444 L 851,444 L 855,446 L 858,448 L 861,452 L 864,457 L 867,462 L 870,467 L 873,471 L 876,475 L 879,478 L 882,478 L 885,477 L 888,475 L 891,470 L 894,464 L 897,456 L 901,448 L 904,440 L 907,433 L 910,426 L 913,422 L 916,419 L 919,419 L 922,421 L 925,426 L 928,433 L 931,442 L 934,452 L 937,462 L 940,473 L 943,482 L 947,489 L 950,495 L 953,497 L 956,497 L 959,493 L 962,487 L 965,478 L 968,467 L 971,455 L 974,443 L 977,432 L 980,422 L 983,414 L 986,409 L 989,407 L 993,408 L 996,412 L 999,420 L 1002,430 L 1005,441 L 1008,454 L 1011,466 L 1014,478 L 1017,488 L 1020,496 L 1023,500 L 1026,502 L 1029,500 L 1032,495 L 1036,487 L 1039,477 L 1042,465 L 1045,453 L 1048,441 L 1051,430 L 1054,421 L 1057,414 L 1060,410 L 1063,409 L 1066,412 L 1069,417 L 1072,425 L 1075,434 L 1078,445 L 1082,456 L 1085,467 L 1088,476 L 1091,484 L 1094,489 L 1097,491 L 1100,491 L 1103,489 L 1106,484 L 1109,477 L 1112,469 L 1115,460 L 1118,452 L 1121,443 L 1124,437 L 1128,431 L 1131,428 L 1134,427 L 1137,427 L 1140,430 L 1143,434 L 1146,439 L 1149,445 L 1152,451 L 1155,456 L 1158,461 L 1161,464 L 1164,467 L 1167,468 L 1170,468 L 1174,466 L 1177,464 L 1180,462 L 1183,459 L 1186,456 L 1189,455 L 1192,454 L 1195,454;M 830,454 L 833,452 L 836,450 L 839,448 L 842,446 L 845,446 L 848,446 L 851,448 L 855,451 L 858,454 L 861,459 L 864,463 L 867,468 L 870,472 L 873,475 L 876,476 L 879,476 L 882,475 L 885,471 L 888,466 L 891,460 L 894,453 L 897,445 L 901,437 L 904,431 L 907,425 L 910,421 L 913,420 L 916,421 L 919,424 L 922,430 L 925,438 L 928,447 L 931,457 L 934,467 L 937,477 L 940,485 L 943,491 L 947,495 L 950,496 L 953,494 L 956,490 L 959,482 L 962,472 L 965,461 L 968,450 L 971,438 L 974,427 L 977,418 L 980,411 L 983,408 L 986,407 L 989,410 L 993,416 L 996,425 L 999,435 L 1002,447 L 1005,460 L 1008,472 L 1011,483 L 1014,492 L 1017,498 L 1020,502 L 1023,501 L 1026,498 L 1029,491 L 1032,482 L 1036,471 L 1039,459 L 1042,447 L 1045,435 L 1048,425 L 1051,417 L 1054,411 L 1057,409 L 1060,410 L 1063,414 L 1066,420 L 1069,429 L 1072,439 L 1075,450 L 1078,461 L 1082,472 L 1085,480 L 1088,487 L 1091,491 L 1094,493 L 1097,491 L 1100,488 L 1103,482 L 1106,474 L 1109,465 L 1112,456 L 1115,447 L 1118,439 L 1121,433 L 1124,428 L 1128,426 L 1131,425 L 1134,427 L 1137,430 L 1140,435 L 1143,441 L 1146,447 L 1149,453 L 1152,459 L 1155,464 L 1158,467 L 1161,469 L 1164,470 L 1167,469 L 1170,467 L 1174,465 L 1177,462 L 1180,459 L 1183,456 L 1186,454 L 1189,453 L 1192,453 L 1195,454;M 830,454 L 833,451 L 836,449 L 839,448 L 842,448 L 845,448 L 848,450 L 851,453 L 855,456 L 858,460 L 861,464 L 864,468 L 867,472 L 870,474 L 873,475 L 876,474 L 879,472 L 882,468 L 885,463 L 888,456 L 891,449 L 894,442 L 897,435 L 901,429 L 904,424 L 907,422 L 910,421 L 913,423 L 916,427 L 919,434 L 922,442 L 925,452 L 928,462 L 931,471 L 934,480 L 937,488 L 940,493 L 943,495 L 947,495 L 950,492 L 953,486 L 956,477 L 959,467 L 962,456 L 965,444 L 968,433 L 971,423 L 974,415 L 977,409 L 980,407 L 983,408 L 986,413 L 989,420 L 993,430 L 996,441 L 999,454 L 1002,466 L 1005,478 L 1008,488 L 1011,496 L 1014,501 L 1017,502 L 1020,500 L 1023,495 L 1026,488 L 1029,477 L 1032,466 L 1036,453 L 1039,441 L 1042,430 L 1045,420 L 1048,413 L 1051,409 L 1054,408 L 1057,411 L 1060,416 L 1063,424 L 1066,433 L 1069,444 L 1072,456 L 1075,467 L 1078,477 L 1082,485 L 1085,490 L 1088,493 L 1091,494 L 1094,491 L 1097,486 L 1100,479 L 1103,470 L 1106,461 L 1109,452 L 1112,443 L 1115,435 L 1118,429 L 1121,425 L 1124,424 L 1128,424 L 1131,427 L 1134,431 L 1137,437 L 1140,443 L 1143,450 L 1146,456 L 1149,462 L 1152,466 L 1155,470 L 1158,471 L 1161,472 L 1164,470 L 1167,468 L 1170,465 L 1174,462 L 1177,458 L 1180,455 L 1183,453 L 1186,452 L 1189,451 L 1192,452 L 1195,454;M 830,454 L 833,451 L 836,450 L 839,449 L 842,450 L 845,452 L 848,454 L 851,457 L 855,461 L 858,465 L 861,469 L 864,471 L 867,473 L 870,474 L 873,472 L 876,470 L 879,465 L 882,460 L 885,453 L 888,446 L 891,439 L 894,432 L 897,427 L 901,424 L 904,422 L 907,423 L 910,426 L 913,431 L 916,438 L 919,447 L 922,456 L 925,466 L 928,476 L 931,484 L 934,490 L 937,494 L 940,495 L 943,494 L 947,489 L 950,482 L 953,472 L 956,462 L 959,450 L 962,438 L 965,428 L 968,418 L 971,412 L 974,408 L 977,407 L 980,410 L 983,416 L 986,424 L 989,435 L 993,447 L 996,460 L 999,472 L 1002,483 L 1005,492 L 1008,499 L 1011,502 L 1014,502 L 1017,499 L 1020,492 L 1023,483 L 1026,472 L 1029,460 L 1032,447 L 1036,435 L 1039,424 L 1042,416 L 1045,410 L 1048,407 L 1051,408 L 1054,412 L 1057,418 L 1060,428 L 1063,438 L 1066,450 L 1069,462 L 1072,472 L 1075,482 L 1078,489 L 1082,494 L 1085,495 L 1088,494 L 1091,490 L 1094,484 L 1097,476 L 1100,466 L 1103,456 L 1106,447 L 1109,438 L 1112,431 L 1115,426 L 1118,423 L 1121,422 L 1124,424 L 1128,427 L 1131,432 L 1134,439 L 1137,446 L 1140,453 L 1143,460 L 1146,465 L 1149,470 L 1152,472 L 1155,474 L 1158,473 L 1161,471 L 1164,469 L 1167,465 L 1170,461 L 1174,457 L 1177,454 L 1180,452 L 1183,450 L 1186,449 L 1189,450 L 1192,451 L 1195,454;M 830,454 L 833,452 L 836,451 L 839,452 L 842,453 L 845,455 L 848,458 L 851,462 L 855,465 L 858,469 L 861,471 L 864,472 L 867,472 L 870,470 L 873,467 L 876,462 L 879,456 L 882,450 L 885,443 L 888,436 L 891,430 L 894,426 L 897,423 L 901,423 L 904,424 L 907,428 L 910,435 L 913,442 L 916,451 L 919,461 L 922,471 L 925,480 L 928,487 L 931,492 L 934,495 L 937,495 L 940,492 L 943,486 L 947,477 L 950,467 L 953,456 L 956,444 L 959,433 L 962,423 L 965,415 L 968,409 L 971,407 L 974,408 L 977,412 L 980,419 L 983,429 L 986,441 L 989,453 L 993,466 L 996,478 L 999,489 L 1002,497 L 1005,502 L 1008,504 L 1011,502 L 1014,497 L 1017,489 L 1020,479 L 1023,466 L 1026,454 L 1029,441 L 1032,429 L 1036,419 L 1039,411 L 1042,407 L 1045,406 L 1048,408 L 1051,413 L 1054,422 L 1057,432 L 1060,444 L 1063,456 L 1066,467 L 1069,478 L 1072,487 L 1075,493 L 1078,496 L 1082,497 L 1085,494 L 1088,489 L 1091,481 L 1094,472 L 1097,462 L 1100,452 L 1103,442 L 1106,433 L 1109,427 L 1112,422 L 1115,420 L 1118,420 L 1121,423 L 1124,428 L 1128,434 L 1131,441 L 1134,449 L 1137,456 L 1140,463 L 1143,469 L 1146,473 L 1149,475 L 1152,476 L 1155,475 L 1158,472 L 1161,469 L 1164,465 L 1167,460 L 1170,456 L 1174,453 L 1177,450 L 1180,448 L 1183,448 L 1186,448 L 1189,449 L 1192,451 L 1195,454;M 830,454 L 833,453 L 836,453 L 839,454 L 842,456 L 845,459 L 848,462 L 851,465 L 855,468 L 858,470 L 861,471 L 864,470 L 867,468 L 870,464 L 873,459 L 876,453 L 879,447 L 882,440 L 885,434 L 888,429 L 891,425 L 894,424 L 897,424 L 901,427 L 904,432 L 907,438 L 910,447 L 913,456 L 916,466 L 919,475 L 922,483 L 925,490 L 928,494 L 931,495 L 934,494 L 937,489 L 940,482 L 943,473 L 947,462 L 950,450 L 953,438 L 956,427 L 959,418 L 962,411 L 965,407 L 968,406 L 971,409 L 974,414 L 977,423 L 980,434 L 983,446 L 986,460 L 989,472 L 993,484 L 996,494 L 999,501 L 1002,504 L 1005,505 L 1008,501 L 1011,494 L 1014,485 L 1017,473 L 1020,460 L 1023,447 L 1026,434 L 1029,423 L 1032,414 L 1036,407 L 1039,404 L 1042,405 L 1045,409 L 1048,416 L 1051,425 L 1054,437 L 1057,449 L 1060,462 L 1063,474 L 1066,484 L 1069,492 L 1072,497 L 1075,499 L 1078,498 L 1082,494 L 1085,487 L 1088,478 L 1091,468 L 1094,457 L 1097,446 L 1100,437 L 1103,428 L 1106,422 L 1109,419 L 1112,418 L 1115,419 L 1118,423 L 1121,429 L 1124,436 L 1128,444 L 1131,453 L 1134,460 L 1137,467 L 1140,473 L 1143,476 L 1146,478 L 1149,478 L 1152,476 L 1155,473 L 1158,469 L 1161,464 L 1164,459 L 1167,454 L 1170,450 L 1174,448 L 1177,446 L 1180,445 L 1183,446 L 1186,447 L 1189,449 L 1192,452 L 1195,454;M 830,454 L 833,454 L 836,455 L 839,457 L 842,459 L 845,462 L 848,465 L 851,467 L 855,469 L 858,469 L 861,468 L 864,465 L 867,461 L 870,456 L 873,450 L 876,444 L 879,438 L 882,432 L 885,428 L 888,425 L 891,424 L 894,426 L 897,429 L 901,435 L 904,443 L 907,451 L 910,461 L 913,470 L 916,479 L 919,486 L 922,492 L 925,495 L 928,495 L 931,492 L 934,486 L 937,478 L 940,468 L 943,456 L 947,444 L 950,433 L 953,422 L 956,414 L 959,408 L 962,406 L 965,406 L 968,410 L 971,418 L 974,428 L 977,440 L 980,453 L 983,466 L 986,479 L 989,490 L 993,499 L 996,504 L 999,506 L 1002,505 L 1005,499 L 1008,491 L 1011,480 L 1014,468 L 1017,454 L 1020,440 L 1023,428 L 1026,417 L 1029,409 L 1032,404 L 1036,402 L 1039,405 L 1042,410 L 1045,419 L 1048,430 L 1051,442 L 1054,455 L 1057,468 L 1060,480 L 1063,490 L 1066,496 L 1069,500 L 1072,501 L 1075,498 L 1078,493 L 1082,484 L 1085,474 L 1088,463 L 1091,452 L 1094,441 L 1097,431 L 1100,423 L 1103,418 L 1106,416 L 1109,416 L 1112,419 L 1115,424 L 1118,431 L 1121,439 L 1124,448 L 1128,457 L 1131,465 L 1134,471 L 1137,476 L 1140,479 L 1143,481 L 1146,480 L 1149,477 L 1152,473 L 1155,468 L 1158,462 L 1161,457 L 1164,452 L 1167,448 L 1170,445 L 1174,443 L 1177,443 L 1180,444 L 1183,445 L 1186,448 L 1189,450 L 1192,452 L 1195,454;M 830,454 L 833,455 L 836,457 L 839,459 L 842,462 L 845,464 L 848,466 L 851,467 L 855,467 L 858,466 L 861,463 L 864,459 L 867,453 L 870,448 L 873,441 L 876,436 L 879,431 L 882,427 L 885,425 L 888,425 L 891,428 L 894,432 L 897,439 L 901,447 L 904,456 L 907,465 L 910,475 L 913,483 L 916,489 L 919,493 L 922,495 L 925,494 L 928,489 L 931,483 L 934,473 L 937,462 L 940,450 L 943,438 L 947,427 L 950,417 L 953,410 L 956,406 L 959,405 L 962,407 L 965,413 L 968,422 L 971,433 L 974,446 L 977,459 L 980,473 L 983,485 L 986,495 L 989,503 L 993,507 L 996,507 L 999,504 L 1002,497 L 1005,487 L 1008,475 L 1011,461 L 1014,447 L 1017,433 L 1020,421 L 1023,411 L 1026,404 L 1029,401 L 1032,401 L 1036,405 L 1039,413 L 1042,423 L 1045,435 L 1048,449 L 1051,462 L 1054,475 L 1057,486 L 1060,495 L 1063,501 L 1066,503 L 1069,502 L 1072,498 L 1075,491 L 1078,481 L 1082,470 L 1085,458 L 1088,446 L 1091,435 L 1094,425 L 1097,419 L 1100,414 L 1103,413 L 1106,415 L 1109,419 L 1112,425 L 1115,433 L 1118,443 L 1121,452 L 1124,461 L 1128,469 L 1131,476 L 1134,480 L 1137,483 L 1140,483 L 1143,481 L 1146,477 L 1149,472 L 1152,467 L 1155,460 L 1158,455 L 1161,449 L 1164,445 L 1167,442 L 1170,441 L 1174,441 L 1177,442 L 1180,444 L 1183,446 L 1186,449 L 1189,451 L 1192,453 L 1195,454;M 830,499 L 833,519 L 836,534 L 839,544 L 842,548 L 845,544 L 848,535 L 851,520 L 855,501 L 858,478 L 861,454 L 864,431 L 867,409 L 870,391 L 873,378 L 876,370 L 879,368 L 882,372 L 885,382 L 888,396 L 891,415 L 894,435 L 897,456 L 901,476 L 904,494 L 907,509 L 910,520 L 913,525 L 916,526 L 919,521 L 922,513 L 925,500 L 928,485 L 931,468 L 934,451 L 937,434 L 940,420 L 943,409 L 947,401 L 950,397 L 953,397 L 956,401 L 959,408 L 962,419 L 965,431 L 968,444 L 971,458 L 974,471 L 977,482 L 980,491 L 983,498 L 986,501 L 989,501 L 993,498 L 996,492 L 999,483 L 1002,473 L 1005,461 L 1008,449 L 1011,438 L 1014,427 L 1017,418 L 1020,412 L 1023,409 L 1026,408 L 1029,411 L 1032,417 L 1036,425 L 1039,435 L 1042,448 L 1045,460 L 1048,473 L 1051,485 L 1054,495 L 1057,502 L 1060,507 L 1063,507 L 1066,504 L 1069,498 L 1072,488 L 1075,475 L 1078,460 L 1082,445 L 1085,429 L 1088,414 L 1091,402 L 1094,393 L 1097,388 L 1100,387 L 1103,391 L 1106,400 L 1109,413 L 1112,429 L 1115,448 L 1118,468 L 1121,487 L 1124,505 L 1128,520 L 1131,530 L 1134,536 L 1137,535 L 1140,529 L 1143,518 L 1146,501 L 1149,481 L 1152,459 L 1155,436 L 1158,413 L 1161,393 L 1164,377 L 1167,367 L 1170,362 L 1174,364 L 1177,372 L 1180,386 L 1183,405 L 1186,427 L 1189,451 L 1192,476 L 1195,499;M 830,530 L 833,540 L 836,544 L 839,541 L 842,533 L 845,519 L 848,501 L 851,479 L 855,457 L 858,434 L 861,413 L 864,396 L 867,383 L 870,376 L 873,374 L 876,378 L 879,387 L 882,400 L 885,417 L 888,435 L 891,454 L 894,472 L 897,488 L 901,500 L 904,509 L 907,514 L 910,514 L 913,510 L 916,502 L 919,492 L 922,479 L 925,466 L 928,453 L 931,441 L 934,430 L 937,422 L 940,417 L 943,415 L 947,415 L 950,418 L 953,424 L 956,431 L 959,439 L 962,447 L 965,456 L 968,463 L 971,469 L 974,474 L 977,477 L 980,479 L 983,478 L 986,476 L 989,473 L 993,469 L 996,464 L 999,458 L 1002,452 L 1005,447 L 1008,442 L 1011,438 L 1014,435 L 1017,434 L 1020,433 L 1023,434 L 1026,436 L 1029,440 L 1032,445 L 1036,450 L 1039,456 L 1042,463 L 1045,469 L 1048,474 L 1051,479 L 1054,482 L 1057,483 L 1060,482 L 1063,479 L 1066,474 L 1069,467 L 1072,459 L 1075,449 L 1078,439 L 1082,429 L 1085,420 L 1088,413 L 1091,409 L 1094,407 L 1097,409 L 1100,414 L 1103,423 L 1106,434 L 1109,448 L 1112,463 L 1115,478 L 1118,493 L 1121,506 L 1124,515 L 1128,521 L 1131,522 L 1134,518 L 1137,510 L 1140,496 L 1143,480 L 1146,460 L 1149,440 L 1152,420 L 1155,401 L 1158,386 L 1161,375 L 1164,369 L 1167,370 L 1170,376 L 1174,388 L 1177,405 L 1180,426 L 1183,449 L 1186,472 L 1189,495 L 1192,514 L 1195,530;M 830,533 L 833,531 L 836,524 L 839,513 L 842,497 L 845,478 L 848,458 L 851,439 L 855,421 L 858,406 L 861,394 L 864,388 L 867,386 L 870,390 L 873,397 L 876,408 L 879,422 L 882,437 L 885,452 L 888,466 L 891,479 L 894,488 L 897,495 L 901,498 L 904,497 L 907,494 L 910,488 L 913,480 L 916,472 L 919,463 L 922,454 L 925,447 L 928,440 L 931,436 L 934,434 L 937,433 L 940,434 L 943,436 L 947,439 L 950,443 L 953,447 L 956,451 L 959,454 L 962,457 L 965,460 L 968,461 L 971,462 L 974,462 L 977,461 L 980,461 L 983,459 L 986,458 L 989,456 L 993,455 L 996,454 L 999,453 L 1002,452 L 1005,451 L 1008,450 L 1011,450 L 1014,450 L 1017,450 L 1020,451 L 1023,451 L 1026,452 L 1029,453 L 1032,454 L 1036,456 L 1039,457 L 1042,459 L 1045,460 L 1048,461 L 1051,462 L 1054,462 L 1057,462 L 1060,461 L 1063,459 L 1066,456 L 1069,453 L 1072,449 L 1075,444 L 1078,440 L 1082,437 L 1085,434 L 1088,432 L 1091,432 L 1094,434 L 1097,437 L 1100,443 L 1103,450 L 1106,458 L 1109,467 L 1112,476 L 1115,485 L 1118,492 L 1121,497 L 1124,499 L 1128,498 L 1131,493 L 1134,485 L 1137,474 L 1140,460 L 1143,445 L 1146,430 L 1149,415 L 1152,402 L 1155,392 L 1158,387 L 1161,386 L 1164,390 L 1167,398 L 1170,412 L 1174,428 L 1177,448 L 1180,468 L 1183,487 L 1186,505 L 1189,519 L 1192,528 L 1195,533;M 830,509 L 833,500 L 836,488 L 839,474 L 842,459 L 845,444 L 848,430 L 851,419 L 855,411 L 858,407 L 861,406 L 864,409 L 867,415 L 870,423 L 873,432 L 876,442 L 879,452 L 882,460 L 885,467 L 888,472 L 891,475 L 894,476 L 897,475 L 901,472 L 904,469 L 907,465 L 910,461 L 913,458 L 916,454 L 919,452 L 922,450 L 925,449 L 928,449 L 931,449 L 934,449 L 937,450 L 940,451 L 943,452 L 947,453 L 950,453 L 953,454 L 956,454 L 959,455 L 962,455 L 965,455 L 968,455 L 971,455 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,453 L 1072,453 L 1075,452 L 1078,451 L 1082,451 L 1085,451 L 1088,451 L 1091,451 L 1094,452 L 1097,453 L 1100,455 L 1103,457 L 1106,460 L 1109,462 L 1112,465 L 1115,468 L 1118,469 L 1121,470 L 1124,469 L 1128,467 L 1131,463 L 1134,457 L 1137,451 L 1140,443 L 1143,435 L 1146,427 L 1149,420 L 1152,415 L 1155,413 L 1158,414 L 1161,418 L 1164,425 L 1167,436 L 1170,448 L 1174,462 L 1177,476 L 1180,490 L 1183,501 L 1186,509 L 1189,513 L 1192,513 L 1195,509;M 830,474 L 833,466 L 836,458 L 839,449 L 842,442 L 845,436 L 848,433 L 851,432 L 855,433 L 858,435 L 861,439 L 864,443 L 867,447 L 870,450 L 873,453 L 876,455 L 879,456 L 882,457 L 885,457 L 888,456 L 891,456 L 894,455 L 897,455 L 901,455 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,453 L 1137,452 L 1140,451 L 1143,450 L 1146,449 L 1149,447 L 1152,446 L 1155,446 L 1158,446 L 1161,448 L 1164,452 L 1167,456 L 1170,462 L 1174,468 L 1177,475 L 1180,480 L 1183,484 L 1186,485 L 1189,484 L 1192,480 L 1195,474;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454;M 830,454 L 833,454 L 836,454 L 839,454 L 842,454 L 845,454 L 848,454 L 851,454 L 855,454 L 858,454 L 861,454 L 864,454 L 867,454 L 870,454 L 873,454 L 876,454 L 879,454 L 882,454 L 885,454 L 888,454 L 891,454 L 894,454 L 897,454 L 901,454 L 904,454 L 907,454 L 910,454 L 913,454 L 916,454 L 919,454 L 922,454 L 925,454 L 928,454 L 931,454 L 934,454 L 937,454 L 940,454 L 943,454 L 947,454 L 950,454 L 953,454 L 956,454 L 959,454 L 962,454 L 965,454 L 968,454 L 971,454 L 974,454 L 977,454 L 980,454 L 983,454 L 986,454 L 989,454 L 993,454 L 996,454 L 999,454 L 1002,454 L 1005,454 L 1008,454 L 1011,454 L 1014,454 L 1017,454 L 1020,454 L 1023,454 L 1026,454 L 1029,454 L 1032,454 L 1036,454 L 1039,454 L 1042,454 L 1045,454 L 1048,454 L 1051,454 L 1054,454 L 1057,454 L 1060,454 L 1063,454 L 1066,454 L 1069,454 L 1072,454 L 1075,454 L 1078,454 L 1082,454 L 1085,454 L 1088,454 L 1091,454 L 1094,454 L 1097,454 L 1100,454 L 1103,454 L 1106,454 L 1109,454 L 1112,454 L 1115,454 L 1118,454 L 1121,454 L 1124,454 L 1128,454 L 1131,454 L 1134,454 L 1137,454 L 1140,454 L 1143,454 L 1146,454 L 1149,454 L 1152,454 L 1155,454 L 1158,454 L 1161,454 L 1164,454 L 1167,454 L 1170,454 L 1174,454 L 1177,454 L 1180,454 L 1183,454 L 1186,454 L 1189,454 L 1192,454 L 1195,454"/&gt;&lt;/path&gt;&lt;/svg&gt;&lt;style&gt;.ec-glow{position:absolute;border-radius:50%;mix-blend-mode:screen;will-change:transform,opacity;animation:10.0s linear infinite}.ec-gold{background:radial-gradient(closest-side,#fff6c8,rgba(255,216,107,.55) 45%,rgba(255,176,0,0))}.ec-orange{background:radial-gradient(closest-side,#fff1e0,rgba(245,130,32,.55) 45%,rgba(240,83,35,0))}@keyframes ec-glow{0.00%{opacity:1.000}2.75%{opacity:0.800}4.50%{opacity:0.600}6.25%{opacity:0.400}8.00%{opacity:0.200}9.75%{opacity:0.150}11.50%{opacity:0.150}13.25%{opacity:0.150}15.00%{opacity:0.360}15.65%{opacity:0.414}16.29%{opacity:0.459}16.94%{opacity:0.489}17.58%{opacity:0.500}18.23%{opacity:0.489}18.88%{opacity:0.459}19.52%{opacity:0.414}20.17%{opacity:0.360}20.81%{opacity:0.306}21.46%{opacity:0.261}22.10%{opacity:0.231}22.75%{opacity:0.220}23.40%{opacity:0.231}24.04%{opacity:0.261}24.69%{opacity:0.306}25.33%{opacity:0.360}25.98%{opacity:0.414}26.63%{opacity:0.459}27.27%{opacity:0.489}27.92%{opacity:0.500}28.56%{opacity:0.489}29.21%{opacity:0.459}29.85%{opacity:0.414}30.50%{opacity:0.360}31.15%{opacity:0.306}31.79%{opacity:0.261}32.44%{opacity:0.231}33.08%{opacity:0.220}33.73%{opacity:0.231}34.38%{opacity:0.261}35.02%{opacity:0.306}35.67%{opacity:0.360}36.31%{opacity:0.414}36.96%{opacity:0.459}37.60%{opacity:0.489}38.25%{opacity:0.500}38.90%{opacity:0.489}39.54%{opacity:0.459}40.19%{opacity:0.414}40.83%{opacity:0.360}41.48%{opacity:0.306}42.12%{opacity:0.261}42.77%{opacity:0.231}43.42%{opacity:0.220}44.06%{opacity:0.231}44.71%{opacity:0.261}45.35%{opacity:0.306}46.00%{opacity:0.360}46.50%{opacity:0.417}47.00%{opacity:0.533}47.50%{opacity:0.650}48.00%{opacity:0.767}48.50%{opacity:0.883}49.00%{opacity:1.000}50.00%{opacity:1.000}52.75%{opacity:0.800}54.50%{opacity:0.600}56.25%{opacity:0.400}58.00%{opacity:0.200}59.75%{opacity:0.150}61.50%{opacity:0.150}63.25%{opacity:0.150}65.00%{opacity:0.360}65.65%{opacity:0.414}66.29%{opacity:0.459}66.94%{opacity:0.489}67.58%{opacity:0.500}68.23%{opacity:0.489}68.88%{opacity:0.459}69.52%{opacity:0.414}70.17%{opacity:0.360}70.81%{opacity:0.306}71.46%{opacity:0.261}72.10%{opacity:0.231}72.75%{opacity:0.220}73.40%{opacity:0.231}74.04%{opacity:0.261}74.69%{opacity:0.306}75.33%{opacity:0.360}75.98%{opacity:0.414}76.63%{opacity:0.459}77.27%{opacity:0.489}77.92%{opacity:0.500}78.56%{opacity:0.489}79.21%{opacity:0.459}79.85%{opacity:0.414}80.50%{opacity:0.360}81.15%{opacity:0.306}81.79%{opacity:0.261}82.44%{opacity:0.231}83.08%{opacity:0.220}83.73%{opacity:0.231}84.38%{opacity:0.261}85.02%{opacity:0.306}85.67%{opacity:0.360}86.31%{opacity:0.414}86.96%{opacity:0.459}87.60%{opacity:0.489}88.25%{opacity:0.500}88.90%{opacity:0.489}89.54%{opacity:0.459}90.19%{opacity:0.414}90.83%{opacity:0.360}91.48%{opacity:0.306}92.12%{opacity:0.261}92.77%{opacity:0.231}93.42%{opacity:0.220}94.06%{opacity:0.231}94.71%{opacity:0.261}95.35%{opacity:0.306}96.00%{opacity:0.360}96.50%{opacity:0.417}97.00%{opacity:0.533}97.50%{opacity:0.650}98.00%{opacity:0.767}98.50%{opacity:0.883}99.00%{opacity:1.000}100.00%{opacity:1.000}}@keyframes ec-flash-m{0.00%{opacity:1.000;transform:scale(1.0000,1.0000)}2.75%{opacity:0.725;transform:scale(0.8213,0.8292)}4.50%{opacity:0.450;transform:scale(0.6425,0.6583)}6.25%{opacity:0.175;transform:scale(0.4637,0.4875)}8.00%{opacity:0.000;transform:scale(0.3500,0.3788)}9.75%{opacity:0.000;transform:scale(0.3500,0.3788)}11.50%{opacity:0.000;transform:scale(0.3500,0.3788)}13.25%{opacity:0.000;transform:scale(0.3500,0.3788)}15.00%{opacity:0.000;transform:scale(0.3500,0.3788)}15.65%{opacity:0.000;transform:scale(0.3500,0.3788)}16.29%{opacity:0.000;transform:scale(0.3500,0.3788)}16.94%{opacity:0.000;transform:scale(0.3500,0.3788)}17.58%{opacity:0.000;transform:scale(0.3500,0.3788)}18.23%{opacity:0.000;transform:scale(0.3500,0.3788)}18.88%{opacity:0.000;transform:scale(0.3500,0.3788)}19.52%{opacity:0.000;transform:scale(0.3500,0.3788)}20.17%{opacity:0.000;transform:scale(0.3500,0.3788)}20.81%{opacity:0.000;transform:scale(0.3500,0.3788)}21.46%{opacity:0.000;transform:scale(0.3500,0.3788)}22.10%{opacity:0.000;transform:scale(0.3500,0.3788)}22.75%{opacity:0.000;transform:scale(0.3500,0.3788)}23.40%{opacity:0.000;transform:scale(0.3500,0.3788)}24.04%{opacity:0.000;transform:scale(0.3500,0.3788)}24.69%{opacity:0.000;transform:scale(0.3500,0.3788)}25.33%{opacity:0.000;transform:scale(0.3500,0.3788)}25.98%{opacity:0.000;transform:scale(0.3500,0.3788)}26.63%{opacity:0.000;transform:scale(0.3500,0.3788)}27.27%{opacity:0.000;transform:scale(0.3500,0.3788)}27.92%{opacity:0.000;transform:scale(0.3500,0.3788)}28.56%{opacity:0.000;transform:scale(0.3500,0.3788)}29.21%{opacity:0.000;transform:scale(0.3500,0.3788)}29.85%{opacity:0.000;transform:scale(0.3500,0.3788)}30.50%{opacity:0.000;transform:scale(0.3500,0.3788)}31.15%{opacity:0.000;transform:scale(0.3500,0.3788)}31.79%{opacity:0.000;transform:scale(0.3500,0.3788)}32.44%{opacity:0.000;transform:scale(0.3500,0.3788)}33.08%{opacity:0.000;transform:scale(0.3500,0.3788)}33.73%{opacity:0.000;transform:scale(0.3500,0.3788)}34.38%{opacity:0.000;transform:scale(0.3500,0.3788)}35.02%{opacity:0.000;transform:scale(0.3500,0.3788)}35.67%{opacity:0.000;transform:scale(0.3500,0.3788)}36.31%{opacity:0.000;transform:scale(0.3500,0.3788)}36.96%{opacity:0.000;transform:scale(0.3500,0.3788)}37.60%{opacity:0.000;transform:scale(0.3500,0.3788)}38.25%{opacity:0.000;transform:scale(0.3500,0.3788)}38.90%{opacity:0.000;transform:scale(0.3500,0.3788)}39.54%{opacity:0.000;transform:scale(0.3500,0.3788)}40.19%{opacity:0.000;transform:scale(0.3500,0.3788)}40.83%{opacity:0.000;transform:scale(0.3500,0.3788)}41.48%{opacity:0.000;transform:scale(0.3500,0.3788)}42.12%{opacity:0.000;transform:scale(0.3500,0.3788)}42.77%{opacity:0.000;transform:scale(0.3500,0.3788)}43.42%{opacity:0.000;transform:scale(0.3500,0.3788)}44.06%{opacity:0.000;transform:scale(0.3500,0.3788)}44.71%{opacity:0.000;transform:scale(0.3500,0.3788)}45.35%{opacity:0.000;transform:scale(0.3500,0.3788)}46.00%{opacity:0.000;transform:scale(0.3500,0.3788)}46.50%{opacity:0.058;transform:scale(0.3879,0.4150)}47.00%{opacity:0.117;transform:scale(0.4258,0.4513)}47.50%{opacity:0.175;transform:scale(0.4637,0.4875)}48.00%{opacity:0.233;transform:scale(0.5017,0.5237)}48.50%{opacity:0.292;transform:scale(0.5396,0.5600)}49.00%{opacity:0.350;transform:scale(0.5775,0.5962)}50.00%{opacity:1.000;transform:scale(1.0000,1.0000)}52.75%{opacity:0.725;transform:scale(0.8213,0.8292)}54.50%{opacity:0.450;transform:scale(0.6425,0.6583)}56.25%{opacity:0.175;transform:scale(0.4637,0.4875)}58.00%{opacity:0.000;transform:scale(0.3500,0.3788)}59.75%{opacity:0.000;transform:scale(0.3500,0.3788)}61.50%{opacity:0.000;transform:scale(0.3500,0.3788)}63.25%{opacity:0.000;transform:scale(0.3500,0.3788)}65.00%{opacity:0.000;transform:scale(0.3500,0.3788)}65.65%{opacity:0.000;transform:scale(0.3500,0.3788)}66.29%{opacity:0.000;transform:scale(0.3500,0.3788)}66.94%{opacity:0.000;transform:scale(0.3500,0.3788)}67.58%{opacity:0.000;transform:scale(0.3500,0.3788)}68.23%{opacity:0.000;transform:scale(0.3500,0.3788)}68.88%{opacity:0.000;transform:scale(0.3500,0.3788)}69.52%{opacity:0.000;transform:scale(0.3500,0.3788)}70.17%{opacity:0.000;transform:scale(0.3500,0.3788)}70.81%{opacity:0.000;transform:scale(0.3500,0.3788)}71.46%{opacity:0.000;transform:scale(0.3500,0.3788)}72.10%{opacity:0.000;transform:scale(0.3500,0.3788)}72.75%{opacity:0.000;transform:scale(0.3500,0.3788)}73.40%{opacity:0.000;transform:scale(0.3500,0.3788)}74.04%{opacity:0.000;transform:scale(0.3500,0.3788)}74.69%{opacity:0.000;transform:scale(0.3500,0.3788)}75.33%{opacity:0.000;transform:scale(0.3500,0.3788)}75.98%{opacity:0.000;transform:scale(0.3500,0.3788)}76.63%{opacity:0.000;transform:scale(0.3500,0.3788)}77.27%{opacity:0.000;transform:scale(0.3500,0.3788)}77.92%{opacity:0.000;transform:scale(0.3500,0.3788)}78.56%{opacity:0.000;transform:scale(0.3500,0.3788)}79.21%{opacity:0.000;transform:scale(0.3500,0.3788)}79.85%{opacity:0.000;transform:scale(0.3500,0.3788)}80.50%{opacity:0.000;transform:scale(0.3500,0.3788)}81.15%{opacity:0.000;transform:scale(0.3500,0.3788)}81.79%{opacity:0.000;transform:scale(0.3500,0.3788)}82.44%{opacity:0.000;transform:scale(0.3500,0.3788)}83.08%{opacity:0.000;transform:scale(0.3500,0.3788)}83.73%{opacity:0.000;transform:scale(0.3500,0.3788)}84.38%{opacity:0.000;transform:scale(0.3500,0.3788)}85.02%{opacity:0.000;transform:scale(0.3500,0.3788)}85.67%{opacity:0.000;transform:scale(0.3500,0.3788)}86.31%{opacity:0.000;transform:scale(0.3500,0.3788)}86.96%{opacity:0.000;transform:scale(0.3500,0.3788)}87.60%{opacity:0.000;transform:scale(0.3500,0.3788)}88.25%{opacity:0.000;transform:scale(0.3500,0.3788)}88.90%{opacity:0.000;transform:scale(0.3500,0.3788)}89.54%{opacity:0.000;transform:scale(0.3500,0.3788)}90.19%{opacity:0.000;transform:scale(0.3500,0.3788)}90.83%{opacity:0.000;transform:scale(0.3500,0.3788)}91.48%{opacity:0.000;transform:scale(0.3500,0.3788)}92.12%{opacity:0.000;transform:scale(0.3500,0.3788)}92.77%{opacity:0.000;transform:scale(0.3500,0.3788)}93.42%{opacity:0.000;transform:scale(0.3500,0.3788)}94.06%{opacity:0.000;transform:scale(0.3500,0.3788)}94.71%{opacity:0.000;transform:scale(0.3500,0.3788)}95.35%{opacity:0.000;transform:scale(0.3500,0.3788)}96.00%{opacity:0.000;transform:scale(0.3500,0.3788)}96.50%{opacity:0.058;transform:scale(0.3879,0.4150)}97.00%{opacity:0.117;transform:scale(0.4258,0.4513)}97.50%{opacity:0.175;transform:scale(0.4637,0.4875)}98.00%{opacity:0.233;transform:scale(0.5017,0.5237)}98.50%{opacity:0.292;transform:scale(0.5396,0.5600)}99.00%{opacity:0.350;transform:scale(0.5775,0.5962)}100.00%{opacity:1.000;transform:scale(1.0000,1.0000)}}@keyframes ec-flash-q{0.00%{opacity:1.000;transform:scale(1.0000,1.0000)}2.75%{opacity:0.725;transform:scale(0.8185,0.8218)}4.50%{opacity:0.450;transform:scale(0.6370,0.6435)}6.25%{opacity:0.175;transform:scale(0.4555,0.4653)}8.00%{opacity:0.000;transform:scale(0.3400,0.3519)}9.75%{opacity:0.000;transform:scale(0.3400,0.3519)}11.50%{opacity:0.000;transform:scale(0.3400,0.3519)}13.25%{opacity:0.000;transform:scale(0.3400,0.3519)}15.00%{opacity:0.000;transform:scale(0.3400,0.3519)}15.65%{opacity:0.000;transform:scale(0.3400,0.3519)}16.29%{opacity:0.000;transform:scale(0.3400,0.3519)}16.94%{opacity:0.000;transform:scale(0.3400,0.3519)}17.58%{opacity:0.000;transform:scale(0.3400,0.3519)}18.23%{opacity:0.000;transform:scale(0.3400,0.3519)}18.88%{opacity:0.000;transform:scale(0.3400,0.3519)}19.52%{opacity:0.000;transform:scale(0.3400,0.3519)}20.17%{opacity:0.000;transform:scale(0.3400,0.3519)}20.81%{opacity:0.000;transform:scale(0.3400,0.3519)}21.46%{opacity:0.000;transform:scale(0.3400,0.3519)}22.10%{opacity:0.000;transform:scale(0.3400,0.3519)}22.75%{opacity:0.000;transform:scale(0.3400,0.3519)}23.40%{opacity:0.000;transform:scale(0.3400,0.3519)}24.04%{opacity:0.000;transform:scale(0.3400,0.3519)}24.69%{opacity:0.000;transform:scale(0.3400,0.3519)}25.33%{opacity:0.000;transform:scale(0.3400,0.3519)}25.98%{opacity:0.000;transform:scale(0.3400,0.3519)}26.63%{opacity:0.000;transform:scale(0.3400,0.3519)}27.27%{opacity:0.000;transform:scale(0.3400,0.3519)}27.92%{opacity:0.000;transform:scale(0.3400,0.3519)}28.56%{opacity:0.000;transform:scale(0.3400,0.3519)}29.21%{opacity:0.000;transform:scale(0.3400,0.3519)}29.85%{opacity:0.000;transform:scale(0.3400,0.3519)}30.50%{opacity:0.000;transform:scale(0.3400,0.3519)}31.15%{opacity:0.000;transform:scale(0.3400,0.3519)}31.79%{opacity:0.000;transform:scale(0.3400,0.3519)}32.44%{opacity:0.000;transform:scale(0.3400,0.3519)}33.08%{opacity:0.000;transform:scale(0.3400,0.3519)}33.73%{opacity:0.000;transform:scale(0.3400,0.3519)}34.38%{opacity:0.000;transform:scale(0.3400,0.3519)}35.02%{opacity:0.000;transform:scale(0.3400,0.3519)}35.67%{opacity:0.000;transform:scale(0.3400,0.3519)}36.31%{opacity:0.000;transform:scale(0.3400,0.3519)}36.96%{opacity:0.000;transform:scale(0.3400,0.3519)}37.60%{opacity:0.000;transform:scale(0.3400,0.3519)}38.25%{opacity:0.000;transform:scale(0.3400,0.3519)}38.90%{opacity:0.000;transform:scale(0.3400,0.3519)}39.54%{opacity:0.000;transform:scale(0.3400,0.3519)}40.19%{opacity:0.000;transform:scale(0.3400,0.3519)}40.83%{opacity:0.000;transform:scale(0.3400,0.3519)}41.48%{opacity:0.000;transform:scale(0.3400,0.3519)}42.12%{opacity:0.000;transform:scale(0.3400,0.3519)}42.77%{opacity:0.000;transform:scale(0.3400,0.3519)}43.42%{opacity:0.000;transform:scale(0.3400,0.3519)}44.06%{opacity:0.000;transform:scale(0.3400,0.3519)}44.71%{opacity:0.000;transform:scale(0.3400,0.3519)}45.35%{opacity:0.000;transform:scale(0.3400,0.3519)}46.00%{opacity:0.000;transform:scale(0.3400,0.3519)}46.50%{opacity:0.058;transform:scale(0.3785,0.3897)}47.00%{opacity:0.117;transform:scale(0.4170,0.4275)}47.50%{opacity:0.175;transform:scale(0.4555,0.4653)}48.00%{opacity:0.233;transform:scale(0.4940,0.5031)}48.50%{opacity:0.292;transform:scale(0.5325,0.5409)}49.00%{opacity:0.350;transform:scale(0.5710,0.5787)}50.00%{opacity:1.000;transform:scale(1.0000,1.0000)}52.75%{opacity:0.725;transform:scale(0.8185,0.8218)}54.50%{opacity:0.450;transform:scale(0.6370,0.6435)}56.25%{opacity:0.175;transform:scale(0.4555,0.4653)}58.00%{opacity:0.000;transform:scale(0.3400,0.3519)}59.75%{opacity:0.000;transform:scale(0.3400,0.3519)}61.50%{opacity:0.000;transform:scale(0.3400,0.3519)}63.25%{opacity:0.000;transform:scale(0.3400,0.3519)}65.00%{opacity:0.000;transform:scale(0.3400,0.3519)}65.65%{opacity:0.000;transform:scale(0.3400,0.3519)}66.29%{opacity:0.000;transform:scale(0.3400,0.3519)}66.94%{opacity:0.000;transform:scale(0.3400,0.3519)}67.58%{opacity:0.000;transform:scale(0.3400,0.3519)}68.23%{opacity:0.000;transform:scale(0.3400,0.3519)}68.88%{opacity:0.000;transform:scale(0.3400,0.3519)}69.52%{opacity:0.000;transform:scale(0.3400,0.3519)}70.17%{opacity:0.000;transform:scale(0.3400,0.3519)}70.81%{opacity:0.000;transform:scale(0.3400,0.3519)}71.46%{opacity:0.000;transform:scale(0.3400,0.3519)}72.10%{opacity:0.000;transform:scale(0.3400,0.3519)}72.75%{opacity:0.000;transform:scale(0.3400,0.3519)}73.40%{opacity:0.000;transform:scale(0.3400,0.3519)}74.04%{opacity:0.000;transform:scale(0.3400,0.3519)}74.69%{opacity:0.000;transform:scale(0.3400,0.3519)}75.33%{opacity:0.000;transform:scale(0.3400,0.3519)}75.98%{opacity:0.000;transform:scale(0.3400,0.3519)}76.63%{opacity:0.000;transform:scale(0.3400,0.3519)}77.27%{opacity:0.000;transform:scale(0.3400,0.3519)}77.92%{opacity:0.000;transform:scale(0.3400,0.3519)}78.56%{opacity:0.000;transform:scale(0.3400,0.3519)}79.21%{opacity:0.000;transform:scale(0.3400,0.3519)}79.85%{opacity:0.000;transform:scale(0.3400,0.3519)}80.50%{opacity:0.000;transform:scale(0.3400,0.3519)}81.15%{opacity:0.000;transform:scale(0.3400,0.3519)}81.79%{opacity:0.000;transform:scale(0.3400,0.3519)}82.44%{opacity:0.000;transform:scale(0.3400,0.3519)}83.08%{opacity:0.000;transform:scale(0.3400,0.3519)}83.73%{opacity:0.000;transform:scale(0.3400,0.3519)}84.38%{opacity:0.000;transform:scale(0.3400,0.3519)}85.02%{opacity:0.000;transform:scale(0.3400,0.3519)}85.67%{opacity:0.000;transform:scale(0.3400,0.3519)}86.31%{opacity:0.000;transform:scale(0.3400,0.3519)}86.96%{opacity:0.000;transform:scale(0.3400,0.3519)}87.60%{opacity:0.000;transform:scale(0.3400,0.3519)}88.25%{opacity:0.000;transform:scale(0.3400,0.3519)}88.90%{opacity:0.000;transform:scale(0.3400,0.3519)}89.54%{opacity:0.000;transform:scale(0.3400,0.3519)}90.19%{opacity:0.000;transform:scale(0.3400,0.3519)}90.83%{opacity:0.000;transform:scale(0.3400,0.3519)}91.48%{opacity:0.000;transform:scale(0.3400,0.3519)}92.12%{opacity:0.000;transform:scale(0.3400,0.3519)}92.77%{opacity:0.000;transform:scale(0.3400,0.3519)}93.42%{opacity:0.000;transform:scale(0.3400,0.3519)}94.06%{opacity:0.000;transform:scale(0.3400,0.3519)}94.71%{opacity:0.000;transform:scale(0.3400,0.3519)}95.35%{opacity:0.000;transform:scale(0.3400,0.3519)}96.00%{opacity:0.000;transform:scale(0.3400,0.3519)}96.50%{opacity:0.058;transform:scale(0.3785,0.3897)}97.00%{opacity:0.117;transform:scale(0.4170,0.4275)}97.50%{opacity:0.175;transform:scale(0.4555,0.4653)}98.00%{opacity:0.233;transform:scale(0.4940,0.5031)}98.50%{opacity:0.292;transform:scale(0.5325,0.5409)}99.00%{opacity:0.350;transform:scale(0.5710,0.5787)}100.00%{opacity:1.000;transform:scale(1.0000,1.0000)}}&lt;/style&gt;&lt;div class="ec-glow ec-gold" style="left:20.690%;top:33.457%;width:14.483%;height:30.864%;animation-name:ec-glow"&gt;&lt;/div&gt;&lt;div class="ec-glow ec-orange" style="left:51.857%;top:37.340%;width:11.724%;height:23.457%;animation-name:ec-glow"&gt;&lt;/div&gt;&lt;div class="ec-glow ec-gold" style="left:7.241%;top:8.148%;width:41.379%;height:81.481%;animation-name:ec-flash-m"&gt;&lt;/div&gt;&lt;div class="ec-glow ec-orange" style="left:40.478%;top:15.735%;width:34.483%;height:66.667%;animation-name:ec-flash-q"&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/bleed-svg.849544532aad8d0c21e0fc3b608147cfa0c2c5a8b3d09938ec5fd1143fa233e5.js" integrity="sha256-hJVEUyqtjQwh4Pw7YIFHz6DCxaiz0Jk47F/RFD&amp;#43;iM&amp;#43;U=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;h2 id="why-i-built-mindroom"&gt;Why I built MindRoom &lt;a class="anchor" href="#why-i-built-mindroom" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Programming has always been my biggest passion, and when AI coding agents suddenly became extremely good, the jump in what I could do in a single day was the biggest I had ever seen.&#10;But that power only reaches people who are comfortable in a terminal.&#10;My mom will never open one.&#10;Neither will most of the physicists, hardware engineers, and program managers who make a company like IonQ work.&lt;/p&gt;&#10;&lt;p&gt;So I built &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, which is &lt;a href="https://github.com/mindroom-ai/mindroom" target="_blank" rel="noopener"&gt;open source&lt;/a&gt;, and I run it at IonQ as a central hub for collaboration and knowledge sharing, what I like to call a company brain.&#10;It looks like a chat app.&#10;Everybody gets a personal agent the moment they log in, running on its own &lt;a href="https://docs.mindroom.chat/tools/worker-computer/" target="_blank" rel="noopener"&gt;sandboxed computer&lt;/a&gt; in the cloud.&#10;Every program can get a shared agent that is connected to that program&amp;rsquo;s Slack, Confluence, Jira, code, meeting notes, and even the parts database.&#10;Its answers link back to what a human wrote, so you can check them instead of trusting them.&lt;/p&gt;&#10;&lt;p&gt;The personal agent is where most people start.&#10;I can send mine a voice message like &amp;ldquo;every week, just before my one-on-one with my manager, give me a clear summary of what I&amp;rsquo;ve been up to.&amp;rdquo;&#10;I never told it who my manager is, when we meet, or where to look.&#10;It works that out on its own, sends me a link to the summary, and from then on &lt;a href="https://docs.mindroom.chat/scheduling/" target="_blank" rel="noopener"&gt;does it every week&lt;/a&gt; without being asked again.&lt;/p&gt;&#10;&lt;h2 id="slowly"&gt;Slowly &lt;a class="anchor" href="#slowly" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For months, MindRoom grew one small group at a time.&#10;It started with a single colleague, then a pilot of about ten, and then the team behind &lt;a href="https://ionq.com/walking-cat" target="_blank" rel="noopener"&gt;Superion 10K&lt;/a&gt;, our 10,000-qubit quantum computer.&#10;We rolled it out carefully, and each step at most doubled the group.&#10;Every new group needed a hand-held onboarding, so I recorded short videos to make that scale.&#10;The people who tried it kept using it, but it was hard to explain what it could do without showing it.&lt;/p&gt;&#10;&lt;div class="demo-clips"&gt;&#10; &lt;div class="demo-clips-row"&gt;&#10;&lt;figure&gt;&lt;video class="demo-clip-light" muted loop playsinline preload="metadata" controls aria-label="A voice message becomes a reminder" data-full="https://github.com/user-attachments/assets/f91d0d7f-b8b0-4039-9fda-c7a9caed7534" src="https://github.com/user-attachments/assets/f91d0d7f-b8b0-4039-9fda-c7a9caed7534#t=0.1"&gt;&lt;/video&gt;&lt;video class="demo-clip-dark" muted loop playsinline preload="metadata" controls aria-label="A voice message becomes a reminder" data-full="https://github.com/user-attachments/assets/4c49c8f1-2b87-45a1-949a-b165d0e18c1a" src="https://github.com/user-attachments/assets/4c49c8f1-2b87-45a1-949a-b165d0e18c1a#t=0.1"&gt;&lt;/video&gt;&#10;&lt;figcaption&gt;A voice message becomes a reminder&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;figure&gt;&lt;video class="demo-clip-light" muted loop playsinline preload="metadata" controls aria-label="An approval card before anything is sent" data-full="https://github.com/user-attachments/assets/cd2e754b-dbb7-4af7-a050-c29514ab712e" src="https://github.com/user-attachments/assets/cd2e754b-dbb7-4af7-a050-c29514ab712e#t=0.1"&gt;&lt;/video&gt;&lt;video class="demo-clip-dark" muted loop playsinline preload="metadata" controls aria-label="An approval card before anything is sent" data-full="https://github.com/user-attachments/assets/502962b4-4dc6-4819-ae5a-eef572a41422" src="https://github.com/user-attachments/assets/502962b4-4dc6-4819-ae5a-eef572a41422#t=0.1"&gt;&lt;/video&gt;&#10;&lt;figcaption&gt;An approval card before anything is sent&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;figure&gt;&lt;video class="demo-clip-light" muted loop playsinline preload="metadata" controls aria-label="Watch the agent&amp;#39;s browser and take over" data-full="https://github.com/user-attachments/assets/db2b13b5-35c0-4b15-bbc9-93dec148f666" src="https://github.com/user-attachments/assets/db2b13b5-35c0-4b15-bbc9-93dec148f666#t=0.1"&gt;&lt;/video&gt;&lt;video class="demo-clip-dark" muted loop playsinline preload="metadata" controls aria-label="Watch the agent&amp;#39;s browser and take over" data-full="https://github.com/user-attachments/assets/5fc87c49-f21b-4a23-8eeb-d66becd2289c" src="https://github.com/user-attachments/assets/5fc87c49-f21b-4a23-8eeb-d66becd2289c#t=0.1"&gt;&lt;/video&gt;&#10;&lt;figcaption&gt;Watch the agent&amp;#39;s browser and take over&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;/div&gt;&#10; &lt;p class="demo-clips-note"&gt;Demo recordings with a fictional company and scripted responses. More in the &lt;a href="https://docs.mindroom.chat/showcase/" target="_blank" rel="noopener"&gt;MindRoom showcase&lt;/a&gt;.&lt;/p&gt;&#10; &#10;&lt;script type="module" src="https://www.nijho.lt/js/demo-clips.faa66184c23b6b536d2aa8eae2201de627ddb94228f3241f865fce7dec1216ef.js" integrity="sha256-&amp;#43;qZhhMI7a1NtKqjq4iAd5ifduUIo8yQfhl/OfewSFu8=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="then-all-at-once"&gt;Then all at once &lt;a class="anchor" href="#then-all-at-once" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;That changed with a company-wide demo.&#10;Instead of explaining what agents can do, I played someone new to the Superion 10K program and asked its shared agent, by voice, to explain what we are building, how the work is split, and how the pieces fit together.&#10;A few minutes later it had made an interactive slide deck, built entirely from our own documents, Slack threads, and code, with every claim linked to its source.&lt;/p&gt;&#10;&lt;p&gt;Hundreds of people signed up that same day, and within weeks about a third of everyone who can create an account had one.&#10;At the time of the demo, five programs and teams used it every day, and now it is about fifteen.&#10;People had already had access to tools like Claude and ChatGPT for months, but those never clicked for them in the same way.&#10;An agent that already knew &lt;em&gt;our&lt;/em&gt; work did.&lt;/p&gt;&#10;&lt;h2 id="the-surprise"&gt;The surprise &lt;a class="anchor" href="#the-surprise" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I built MindRoom for people who never open a terminal, simple enough that even my mom could use it, so I expected non-technical colleagues to be the main audience.&#10;They did adopt it.&#10;Program managers use it to write weekly updates from what actually happened in Slack and Jira, instead of from whatever people remembered to tell them.&#10;Our configuration management team uses it to check the hardware as it was actually built against the engineering baseline, and to find policy documents that contradict each other across different systems.&lt;/p&gt;&#10;&lt;p&gt;What I did not expect was that some of the most capable engineers I know, who already run their own coding agents every day, would become some of the heaviest users.&#10;One of them, who already lived in Claude Code, cleared his entire inbox, Slack, and task list from his phone on a single flight.&#10;I think they like it for the same reason everyone else does: it keeps context.&#10;For writing code, dedicated tools like Claude Code and Codex are better, because they are built for exactly that.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&#10;But engineers use MindRoom as a layer for gathering knowledge.&#10;A coding agent does not need to know who you are or who you report to in order to fix a bug.&#10;Coordinating a large group of people is mostly that kind of context.&lt;/p&gt;&#10;&lt;h2 id="institutional-knowledge"&gt;Institutional knowledge &lt;a class="anchor" href="#institutional-knowledge" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A colleague wrote about &lt;a href="https://m-malinowski.github.io/2026/08/24/ai-knowledge-management.html" target="_blank" rel="noopener"&gt;why AI&amp;rsquo;s biggest opportunity in large programs is institutional knowledge&lt;/a&gt;, from the perspective of someone using it every day.&#10;From the builder&amp;rsquo;s side, what I like most is that a shared agent gets better the more people use it.&lt;/p&gt;&#10;&lt;p&gt;When someone works through a problem with it, it keeps what it learned, so the next person benefits without ever having been in that thread.&lt;/p&gt;&#10;&lt;p&gt;In Claude Code or Codex, you handle memory yourself, by asking the agent to write things down in Markdown files.&#10;Agents get lazy: they forget to write things down, and later they forget to read them.&#10;MindRoom agents are also told to write down durable facts, in plain text files under version control, but they do not have to remember to.&#10;A &lt;a href="https://docs.mindroom.chat/memory/#file-auto-flush-worker" target="_blank" rel="noopener"&gt;background process&lt;/a&gt; picks out what is worth keeping from every conversation and adds it to a semantic search index.&#10;When a new message comes in, the relevant memories are looked up and added to the context automatically.&#10;So remembering and looking things up no longer depend on the agent deciding to do it.&#10;When someone asks a question that was already answered, the agent re-verifies its earlier analysis instead of starting from zero, so the second answer usually comes faster and builds on the first.&lt;/p&gt;&#10;&lt;p&gt;One very cool and yet simple idea is agent dreaming, which I picked up from &lt;a href="https://www.youtube.com/watch?v=9QebvrrY3KY" target="_blank" rel="noopener"&gt;a talk by Lance Martin from Anthropic&lt;/a&gt;.&#10;People collect short-term memories during the day and consolidate them while they sleep.&#10;The analogy is loose, but the idea carries over.&#10;Every night, a first pass reads the agent&amp;rsquo;s memories, every conversation it has had, and the original sources, and looks for contradictions, for example when someone corrected something a few minutes later and the two memories were never reconciled.&#10;It writes a patch to fix them.&#10;A second pass, in a completely fresh context, checks every proposed fix and accepts or rejects it.&#10;It rejects about half, which is exactly the kind of skepticism I want.&#10;Dreaming is not even platform code, just a &lt;a href="https://docs.mindroom.chat/skills/" target="_blank" rel="noopener"&gt;skill&lt;/a&gt;, a short set of written instructions: you tell an agent to set up dreaming, and it knows what to do, including scheduling itself to run every night.&lt;/p&gt;&#10;&lt;p&gt;It also notices when two documents disagree, which is easy to miss when nobody reads all of them.&#10;Its reports end with &amp;ldquo;Corrections welcome, tell the agent and the next report improves,&amp;rdquo; and a correction becomes a memory that the next report uses.&#10;And when nobody ever wrote something down, it usually still knows who to ask, because it keeps track of what everybody is working on.&lt;/p&gt;&#10;&lt;h2 id="why-build-it-ourselves"&gt;Why build it ourselves &lt;a class="anchor" href="#why-build-it-ourselves" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;There are plenty of AI products that promise something similar.&#10;Building our own gives us complete flexibility and no vendor lock-in.&#10;We are not waiting for a third party to support the model, the system, or the feature we need.&#10;When a better model comes out, we can switch the same day.&#10;And the knowledge it builds up is stored in IonQ&amp;rsquo;s own cloud environment.&lt;/p&gt;&#10;&lt;p&gt;It also means we can experiment quickly.&#10;Features that could take a large organization months often take me days:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Agents can open a real browser on their own remote computer, not on your laptop, and you can &lt;a href="https://docs.mindroom.chat/tools/worker-computer/#watch-take-control-and-resume" target="_blank" rel="noopener"&gt;watch it live and take over&lt;/a&gt;, for example to log in somewhere, before handing control back.&lt;/li&gt;&#10;&lt;li&gt;An &lt;a href="https://modelcontextprotocol.io" target="_blank" rel="noopener"&gt;MCP&lt;/a&gt; &lt;a href="https://docs.mindroom.chat/deployment/mcp-gateway/" target="_blank" rel="noopener"&gt;gateway&lt;/a&gt; lets people connect their local tools, like Claude Code or Codex, to every agent they have access to and all of those agents&amp;rsquo; tools, so they benefit from what the agents have collected even outside MindRoom.&lt;/li&gt;&#10;&lt;li&gt;A day after OpenAI released &lt;a href="https://openai.com/index/introducing-gpt-live-1-in-the-api/" target="_blank" rel="noopener"&gt;GPT-Live-1 in its API&lt;/a&gt;, you could &lt;a href="https://docs.mindroom.chat/voice-calls/#live-with-agent-delegation" target="_blank" rel="noopener"&gt;call your MindRoom agent&lt;/a&gt;: the same agent, with the same memory, which hands longer tasks to a background process while you keep talking. On my commute, I talk to my agent to plan my day and get things started.&lt;/li&gt;&#10;&lt;li&gt;Agents can &lt;a href="https://docs.mindroom.chat/tools/agent-orchestration/#report_publishing" target="_blank" rel="noopener"&gt;host small sites&lt;/a&gt;, much like &lt;a href="https://help.openai.com/en/articles/20001339-creating-and-managing-chatgpt-sites" target="_blank" rel="noopener"&gt;ChatGPT Sites&lt;/a&gt;, behind a temporary link with access control. That is how an agent can answer a question with an interactive presentation or a dashboard instead of a wall of text.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="what-it-takes-to-run-this-at-a-company"&gt;What it takes to run this at a company &lt;a class="anchor" href="#what-it-takes-to-run-this-at-a-company" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A demo on a laptop is easy.&#10;Running a central hub that hundreds of people rely on every day is a different problem, and most of my time went there.&lt;/p&gt;&#10;&lt;p&gt;People &lt;a href="https://docs.mindroom.chat/deployment/trusted-upstream-auth/" target="_blank" rel="noopener"&gt;sign in with their normal company account&lt;/a&gt;, and their account and personal agent are created on first login.&#10;There is nothing to install.&lt;/p&gt;&#10;&lt;p&gt;Every agent runs in its own &lt;a href="https://docs.mindroom.chat/deployment/sandbox-proxy/" target="_blank" rel="noopener"&gt;sandboxed container&lt;/a&gt; with no secrets inside it.&#10;Credentials are injected from outside, so the agent never sees a token.&#10;Agents also cannot reach arbitrary websites: &lt;a href="https://docs.mindroom.chat/deployment/approved-egress/" target="_blank" rel="noopener"&gt;outbound traffic is denied by default&lt;/a&gt;, and a new domain needs a person&amp;rsquo;s time-limited approval.&lt;/p&gt;&#10;&lt;p&gt;Reading is free, but anything that sends or changes something on your behalf, like an email, shows an &lt;a href="https://docs.mindroom.chat/tool-approval/#approval-card-contents" target="_blank" rel="noopener"&gt;approval card&lt;/a&gt; with exactly what will be sent and to whom.&#10;A shared agent &lt;a href="https://docs.mindroom.chat/authorization/" target="_blank" rel="noopener"&gt;only answers the people&lt;/a&gt; who work on that program, and it only reaches the systems it was granted.&lt;/p&gt;&#10;&lt;p&gt;It runs in IonQ&amp;rsquo;s own cloud environment, and a security review ran alongside the rollout.&#10;At its busiest moment so far, 200 people were writing to their agents at the same time, and it held up fine.&#10;The chat layer has plenty of room to grow: the French government runs &lt;a href="https://fr.wikipedia.org/wiki/Tchap" target="_blank" rel="noopener"&gt;Matrix&lt;/a&gt; for about 400,000 civil servants.&lt;/p&gt;&#10;&lt;h2 id="whats-next"&gt;What&amp;rsquo;s next &lt;a class="anchor" href="#whats-next" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With our recent acquisitions and a lot of new hires, there is a steady flow of people joining IonQ who are new to all of it, and to MindRoom.&#10;Because MindRoom is built on &lt;a href="https://matrix.org" target="_blank" rel="noopener"&gt;Matrix&lt;/a&gt;, which is federated like email, groups with different data rules can each get their own instance and still work together where that is allowed.&#10;And whoever joins next can log in on their first day and ask their program&amp;rsquo;s agent how the work fits together and who to ask.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;That does not mean you cannot write code from MindRoom. Because every agent has its own computer, it can run any software, so my MindRoom agent simply runs Claude Code or Codex itself when there is coding to do.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Exploring the Jev hype in MindRoom</title><link>https://www.nijho.lt/post/jev-mindroom/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/jev-mindroom/</guid><description>&lt;p&gt;Last week, every AI newsletter I get was full of &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" target="_blank" rel="noopener"&gt;Jev&lt;/a&gt;, a new model from TypeSafe.&#10;So were several subreddits.&#10;I am a permanent lurker on &lt;a href="https://www.reddit.com/r/LocalLLaMA/" target="_blank" rel="noopener"&gt;r/LocalLLaMA&lt;/a&gt;, and even though it is about local models, every other post seemed to be about Jev.&#10;There were local clones like &lt;a href="https://github.com/r-ms/mini-jev" target="_blank" rel="noopener"&gt;mini-jev&lt;/a&gt; and &lt;a href="https://github.com/wfzyx/von" target="_blank" rel="noopener"&gt;von&lt;/a&gt;, CLI wrappers like &lt;a href="https://github.com/joshLong145/jev-cli" target="_blank" rel="noopener"&gt;jev-cli&lt;/a&gt;, and even &lt;a href="https://news.ycombinator.com/item?id=49765348" target="_blank" rel="noopener"&gt;someone on Hacker News&lt;/a&gt; claiming &lt;a href="https://laya.convaiinnovations.com/" target="_blank" rel="noopener"&gt;they had built the same thing a year earlier&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;I tried Jev in &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, my &lt;a href="https://github.com/mindroom-ai/mindroom" target="_blank" rel="noopener"&gt;open-source&lt;/a&gt; agent platform on &lt;a href="https://matrix.org" target="_blank" rel="noopener"&gt;Matrix&lt;/a&gt;, and less than two days later it was making &lt;a href="https://github.com/mindroom-ai/mindroom/issues/2156" target="_blank" rel="noopener"&gt;three decisions&lt;/a&gt; there.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Update 2026-10-07:&lt;/strong&gt; OpenAI released the Decisions API today, its own take on the same idea, and MindRoom now supports it as a third backend; see &lt;a href="#a-third-backend-openai-decisions"&gt;below&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="what-a-system-one-model-is"&gt;What a System One model is &lt;a class="anchor" href="#what-a-system-one-model-is" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The &lt;a href="https://docs.typesafe.ai/concepts/system-one" target="_blank" rel="noopener"&gt;name comes&lt;/a&gt; from Daniel Kahneman&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/Thinking,_Fast_and_Slow" target="_blank" rel="noopener"&gt;&lt;em&gt;Thinking, Fast and Slow&lt;/em&gt;&lt;/a&gt;, where System 1 is fast, intuitive thinking and System 2 is slow and deliberate.&#10;A System One model does not generate text.&#10;You send it a state, for example a chat log, plus typed questions, and it returns &lt;a href="https://docs.typesafe.ai/api" target="_blank" rel="noopener"&gt;probabilities&lt;/a&gt;:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Type&lt;/th&gt;&#10;&lt;th&gt;Question&lt;/th&gt;&#10;&lt;th&gt;Answer&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Noul&lt;/td&gt;&#10;&lt;td&gt;Yes or no&lt;/td&gt;&#10;&lt;td&gt;Probability of yes&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Choice&lt;/td&gt;&#10;&lt;td&gt;Pick one of up to 255 options&lt;/td&gt;&#10;&lt;td&gt;Chosen option plus the full distribution&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Score&lt;/td&gt;&#10;&lt;td&gt;Rate against a rubric of 2 to 10 levels&lt;/td&gt;&#10;&lt;td&gt;Probability-weighted value&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" target="_blank" rel="noopener"&gt;TypeSafe claims&lt;/a&gt; 70 to 500 ms end to end and $0.042 per million input tokens, with output tokens free.&#10;They also write &amp;ldquo;we can&amp;rsquo;t prove it isn&amp;rsquo;t subsidized.&amp;rdquo;&#10;Either way, it is incredibly cheap and incredibly fast.&lt;/p&gt;&#10;&lt;h2 id="adaptive-participation"&gt;Adaptive participation &lt;a class="anchor" href="#adaptive-participation" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;In MindRoom, a conversation can have several humans, several agents, or both.&#10;When I talk to a single agent, it simply replies, and I don&amp;rsquo;t need to tag it.&#10;Once another person joins and writes something, the agent cannot tell whether the message was meant for it or for the other person.&#10;Nothing decided that, so the agent stayed quiet unless explicitly tagged.&#10;That confused several users.&lt;/p&gt;&#10;&lt;p&gt;So I recently added &lt;a href="https://docs.mindroom.chat/configuration/threads/#adaptive-participation" target="_blank" rel="noopener"&gt;adaptive participation&lt;/a&gt;: an agent that has already replied in a thread decides on its own whether to answer an untagged message.&#10;I first used an LLM as the judge, GPT-5.6 Luna on low reasoning.&#10;A yes-or-no question like &amp;ldquo;should this agent respond?&amp;rdquo; is exactly what Jev is for, so it &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2169" target="_blank" rel="noopener"&gt;became the second backend&lt;/a&gt;.&#10;Compared with Luna, it is about ten times cheaper and ten times faster, and if I believe the benchmarks, it is also smarter.&lt;/p&gt;&#10;&lt;h2 id="thanks-should-not-stop-the-agent"&gt;&amp;ldquo;Thanks&amp;rdquo; should not stop the agent &lt;a class="anchor" href="#thanks-should-not-stop-the-agent" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The next thing I used Jev for was interruptions.&#10;When I send a message while an agent is still replying, MindRoom injects a notice at the next tool call telling the agent to stop and wrap up, because there is a new message.&#10;But often I, and other users, would watch the agent start working and then write &amp;ldquo;looks good&amp;rdquo; or &amp;ldquo;thanks.&amp;rdquo;&#10;The agent would stop early and continue in the next turn, which is both wasteful and counterintuitive.&lt;/p&gt;&#10;&lt;p&gt;Now &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2193" target="_blank" rel="noopener"&gt;a judgment&lt;/a&gt; decides whether the new message needs the interruption, which the docs call &lt;a href="https://docs.mindroom.chat/configuration/threads/#mid-turn-coalescing" target="_blank" rel="noopener"&gt;mid-turn coalescing&lt;/a&gt;.&#10;If it does not, the agent reacts with 👀, finishes its reply, and handles the message afterwards.&lt;/p&gt;&#10;&lt;p&gt;This is also where I learned a lesson about evals.&#10;My first implementation worked at the code level but not functionally.&#10;My evals, based on real attempts inside MindRoom that had all failed plus synthetic cases from GPT-6 Astra, passed 5 out of 40 with Jev.&#10;&lt;a href="https://github.com/mindroom-ai/mindroom/pull/2244" target="_blank" rel="noopener"&gt;The fix&lt;/a&gt; changed the question and gave the judge more context, and it went to 40 out of 40.&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;&lt;/th&gt;&#10;&lt;th&gt;Before: 5/40&lt;/th&gt;&#10;&lt;th&gt;After: 40/40&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Question&lt;/td&gt;&#10;&lt;td&gt;&amp;ldquo;May the active task finish before the queued human messages are handled in a later turn?&amp;rdquo;&lt;/td&gt;&#10;&lt;td&gt;&amp;ldquo;Does any newly queued message require an immediate change to, pause of, or stop of the active task?&amp;rdquo;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;When unclear&lt;/td&gt;&#10;&lt;td&gt;&amp;ldquo;Also false when context is incomplete, the relationship is unclear…&amp;rdquo;&lt;/td&gt;&#10;&lt;td&gt;&amp;ldquo;Mere relevance to the task does not make praise or thanks an interruption.&amp;rdquo;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Context&lt;/td&gt;&#10;&lt;td&gt;The request and the new messages&lt;/td&gt;&#10;&lt;td&gt;The same, plus the preceding conversation&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The old question treated anything unclear as a reason to interrupt, and a bare &amp;ldquo;thanks&amp;rdquo; without the conversation around it always looks unclear.&lt;/p&gt;&#10;&lt;h2 id="picking-the-responder"&gt;Picking the responder &lt;a class="anchor" href="#picking-the-responder" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The third decision is routing.&#10;When a message in a room with many agents does not mention anyone, MindRoom&amp;rsquo;s router picks who should answer.&#10;That used to be a free-text LLM prompt, &amp;ldquo;choose the most appropriate agent.&amp;rdquo;&#10;It is &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2238" target="_blank" rel="noopener"&gt;now a Jev Choice&lt;/a&gt; over the eligible agents, plus a &lt;code&gt;no_fit&lt;/code&gt; option, as described in the &lt;a href="https://docs.mindroom.chat/configuration/router/" target="_blank" rel="noopener"&gt;router docs&lt;/a&gt;.&#10;A confident &lt;code&gt;no_fit&lt;/code&gt; asks the user to mention an agent instead of guessing, and anything uncertain falls back to the existing LLM router.&lt;/p&gt;&#10;&lt;h2 id="one-config-line-to-switch"&gt;One config line to switch &lt;a class="anchor" href="#one-config-line-to-switch" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I built a very simple abstraction layer so I can swap Jev for an LLM without changing any code.&#10;Every decision is one question with criteria for true and false:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MID_TURN_QUESTION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;JudgmentQuestion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;interrupt_current_turn&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Does any newly queued message require an immediate change to, pause of, or stop of the active task?&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;when_true&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;A new message requests stopping or pausing the active task, corrects it, ...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;when_false&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;The messages acknowledge progress, express thanks, ask to continue unchanged, ...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jev receives it as a Noul question and returns a probability, which MindRoom compares with a threshold.&#10;An LLM receives the same question and context and must return &lt;code&gt;{&amp;quot;decision&amp;quot;: true}&lt;/code&gt; or &lt;code&gt;{&amp;quot;decision&amp;quot;: false}&lt;/code&gt;.&#10;Switching is a configuration change:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;helper&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mid_turn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;defer_reaction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;👀&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;judgment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;typesafe &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# or: provider: llm, model: fast&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Both backends log their decisions and latency, so I can compare them on real traffic.&#10;The code is in &lt;a href="https://github.com/mindroom-ai/mindroom/tree/main/src/mindroom/judgment" target="_blank" rel="noopener"&gt;&lt;code&gt;src/mindroom/judgment/&lt;/code&gt;&lt;/a&gt;, and the backends are documented under &lt;a href="https://docs.mindroom.chat/configuration/threads/#judgment-backends" target="_blank" rel="noopener"&gt;participation judgment backends&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="a-third-backend-openai-decisions"&gt;A third backend: OpenAI Decisions &lt;a class="anchor" href="#a-third-backend-openai-decisions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;On October 7, OpenAI released its own version of the idea, the &lt;a href="https://developers.openai.com/api/docs/guides/decisions" target="_blank" rel="noopener"&gt;Decisions API&lt;/a&gt;, currently in public beta.&#10;The question types match Jev&amp;rsquo;s: a &lt;code&gt;predicate&lt;/code&gt; is a Noul, and &lt;code&gt;choice&lt;/code&gt; and &lt;code&gt;score&lt;/code&gt; keep their names.&#10;It serves a single model, &lt;code&gt;gpt-6-luna&lt;/code&gt;, and OpenAI says it returns answers &amp;ldquo;about 10x faster than the Responses API.&amp;rdquo;&#10;Input costs $0.10 per million tokens and output is free, so it lists at about 2.4 times Jev&amp;rsquo;s price.&lt;/p&gt;&#10;&lt;p&gt;Thanks to the abstraction layer, adding it took &lt;a href="https://github.com/mindroom-ai/mindroom/pull/2751" target="_blank" rel="noopener"&gt;one PR&lt;/a&gt;, merged the same day, and it works for all three decisions, including the router&amp;rsquo;s Choice:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;judgment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;openai_decisions&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From MindRoom&amp;rsquo;s side, only the wire format differs.&#10;The endpoint accepts only user messages, so MindRoom sends each chat message as its own user message, prefixed with its role, like &lt;code&gt;assistant: ...&lt;/code&gt;.&#10;Decisions can also answer with a refusal, which MindRoom treats as an abstention, so the usual fallback applies.&lt;/p&gt;&#10;&lt;p&gt;I tested it against the live API through MindRoom&amp;rsquo;s own code, with the same questions Jev gets.&#10;For participation, it gave 0.99 to replying to a direct question and 0.0 while two humans were talking to each other.&#10;Mid-turn, &amp;ldquo;Thanks, looks great so far!&amp;rdquo; got 0.0 for interrupting and &amp;ldquo;Stop, keep MySQL…&amp;rdquo; got 1.0.&#10;The router sent a pandas bug to &lt;code&gt;code&lt;/code&gt; and a meeting request to &lt;code&gt;calendar&lt;/code&gt;, both with confidence 1.0.&#10;A nonsense request got only 0.62, below the 0.8 threshold, so the normal LLM router took over.&#10;Each call took 130 to 280 ms.&#10;I have not compared it with Jev on real traffic yet, but both log the same outcome fields, so that only takes a config change.&lt;/p&gt;&#10;&lt;h2 id="named-after-jevons"&gt;Named after Jevons &lt;a class="anchor" href="#named-after-jevons" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I only read &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" target="_blank" rel="noopener"&gt;why TypeSafe named it Jev&lt;/a&gt; after building all this: they named it after William Stanley Jevons, who noticed that as steam engines burned coal more efficiently, demand for coal went up instead of down.&#10;This is known as the &lt;a href="https://en.wikipedia.org/wiki/Jevons_paradox" target="_blank" rel="noopener"&gt;Jevons paradox&lt;/a&gt;.&#10;That was literally my experience.&#10;Most of what I built was perfectly possible with an LLM.&#10;I just never built it, because I am somewhat cost- and latency-minded.&#10;Once I implemented Jev for one decision, I came up with use case after use case.&lt;/p&gt;&#10;&lt;p&gt;One I already built is a plugin, &lt;a href="https://github.com/mindroom-ai/response-audit-jev-plugin" target="_blank" rel="noopener"&gt;Response Audit JEV&lt;/a&gt;.&#10;Right after an agent replies, Jev checks the answer against the request and the tool calls the agent actually made, for example whether things are properly cited.&#10;If a check flags a problem, the plugin posts one follow-up in the thread that tags the agent and asks for a correction.&#10;Because Jev is so fast and cheap, running this after every reply costs almost nothing.&lt;/p&gt;&#10;&lt;p&gt;Right now I am full of ideas.&#10;For example, a model router.&#10;In MindRoom, an agent can switch to a different model mid-conversation with a tool call, and I can do the same with &lt;code&gt;!model&lt;/code&gt;.&#10;Agents rarely do that without being told, though.&#10;So I default to a very expensive model, and I only save money when I remember to switch to a cheap one for something simple.&#10;Jev could run on every message and decide whether it needs the capable model or not.&#10;That works in both directions, up to a capable model or down to a cheap one.&#10;The perfect moment to switch is when the prompt cache has expired.&#10;A prompt cache belongs to one model, so switching normally means sending the entire context again at full price.&#10;Once the cache has expired, I pay that price anyway, so switching costs nothing extra.&lt;/p&gt;&#10;</description></item><item><title>Frontier-level dictation on your iPhone keyboard, self-hosted</title><link>https://www.nijho.lt/post/diction-agent-cli-qwen/</link><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/diction-agent-cli-qwen/</guid><description>&lt;p&gt;On a recent month-long trip visiting family in Europe, I did a lot of work from my phone, using &lt;a href="https://www.nijho.lt/post/agentic-mobile-workflow/"&gt;my mobile coding workflow&lt;/a&gt;.&#10;It still boggles my mind that real, productive work from a phone is possible now.&#10;Most of that work is talking to coding agents, and the built-in iOS dictation is garbage for that.&#10;I had an iOS Shortcut that sent recordings to &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;Agent CLI&lt;/a&gt;, &lt;a href="https://www.nijho.lt/post/auto-install-extras/"&gt;my local AI toolbox&lt;/a&gt;, running at home instead.&#10;The problem was that the recording screen takes over the whole display, so I could not see the thing I was commenting on.&#10;The transcript then landed in my clipboard, and I had to paste it myself.&lt;/p&gt;&#10;&lt;p&gt;So I threw my principles overboard and installed &lt;a href="https://wisprflow.ai" target="_blank" rel="noopener"&gt;Wispr Flow&lt;/a&gt;, a voice keyboard for iOS.&#10;I loved it instantly.&#10;iOS does not let keyboards use the microphone, so the keyboard&amp;rsquo;s button hands off to the Wispr Flow app, which keeps recording in the background.&#10;I was less happy about that, since it meant a closed-source app always had the microphone open and sent my voice to their servers.&#10;I was on the free plan, so I was probably the product.&#10;I also hit the free weekly word limit very quickly, and started looking for an alternative.&lt;/p&gt;&#10;&lt;p&gt;That is how I found &lt;a href="https://apps.apple.com/app/id6759807364" target="_blank" rel="noopener"&gt;Diction&lt;/a&gt;, which has since become my favorite app when I&amp;rsquo;m away from my laptop.&#10;It works the same way, background recording included.&#10;The difference is that it has a self-hosted mode with an open-source gateway, so my voice goes to a machine I own instead of their servers.&lt;/p&gt;&#10;&lt;p&gt;I run the &lt;a href="https://github.com/DictionLabs/Diction" target="_blank" rel="noopener"&gt;gateway&lt;/a&gt; on my home machine in the U.S., reachable only over my private network.&#10;The gateway streams audio to Agent CLI, which runs Alibaba&amp;rsquo;s &lt;a href="https://huggingface.co/Qwen/Qwen3-ASR-1.7B-hf" target="_blank" rel="noopener"&gt;&lt;code&gt;Qwen/Qwen3-ASR-1.7B-hf&lt;/code&gt;&lt;/a&gt; on an RTX 3090 behind an OpenAI-compatible transcription endpoint.&#10;There is no LLM cleanup step, so Diction&amp;rsquo;s Writing Style and Tones features do not work with this setup.&#10;I don&amp;rsquo;t miss them: Qwen&amp;rsquo;s raw transcription is already good enough for me.&lt;/p&gt;&#10;&lt;h2 id="1-why-qwen"&gt;1. Why Qwen? &lt;a class="anchor" href="#1-why-qwen" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For the longest time I used &lt;a href="https://github.com/SYSTRAN/faster-whisper" target="_blank" rel="noopener"&gt;Faster-Whisper&lt;/a&gt; with Whisper large-v3.&#10;Whisper is still the default choice for most people, but many newer models beat it.&#10;I tried some of them, including NVIDIA&amp;rsquo;s &lt;a href="https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3" target="_blank" rel="noopener"&gt;Parakeet&lt;/a&gt;.&#10;Parakeet is fast, but it cannot take custom instructions.&#10;Those instructions are how Diction&amp;rsquo;s &lt;strong&gt;My Words&lt;/strong&gt; feature biases a transcription toward specialized names.&lt;/p&gt;&#10;&lt;p&gt;At the start of September, I looked at the &lt;a href="https://huggingface.co/spaces/hf-audio/open_asr_leaderboard" target="_blank" rel="noopener"&gt;Hugging Face Open ASR Leaderboard&lt;/a&gt;, which tests speech-to-text models on the same recordings and ranks them.&#10;The score is the word error rate (WER): the share of words a model gets wrong, counting words it swaps, drops, or makes up.&#10;Lower is better, and a WER of 4% means about one wrong word in every 25.&#10;The test recordings range from audiobooks and podcasts to meetings and earnings calls, so the average says more than any single clean benchmark.&lt;/p&gt;&#10;&lt;p&gt;These are the averages on the public English test sets as of September 19, 2026:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Model&lt;/th&gt;&#10;&lt;th&gt;WER&lt;/th&gt;&#10;&lt;th&gt;Can I run it at home?&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Zoom Scribe v2 Pro&lt;/td&gt;&#10;&lt;td&gt;3.6%&lt;/td&gt;&#10;&lt;td&gt;No, paid API (#1 overall)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;ElevenLabs Scribe v2&lt;/td&gt;&#10;&lt;td&gt;4.0%&lt;/td&gt;&#10;&lt;td&gt;No, paid API&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Qwen3-ASR 1.7B&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;4.3%&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;Yes, Apache-2.0&lt;/strong&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;AssemblyAI Universal-3.5 Pro&lt;/td&gt;&#10;&lt;td&gt;4.3%&lt;/td&gt;&#10;&lt;td&gt;No, paid API&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;NVIDIA Parakeet TDT 0.6B v3&lt;/td&gt;&#10;&lt;td&gt;4.9%&lt;/td&gt;&#10;&lt;td&gt;Yes&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;OpenAI Whisper large-v3&lt;/td&gt;&#10;&lt;td&gt;5.8%&lt;/td&gt;&#10;&lt;td&gt;Yes&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;I picked the best model on the board whose weights you can download: Qwen3-ASR 1.7B.&#10;It lands within a point of the best paid API, which is what I mean by frontier-level.&#10;Since I maintain Agent CLI, I told an agent to add a Qwen backend, and shortly afterward &lt;a href="https://github.com/basnijholt/agent-cli/pull/636" target="_blank" rel="noopener"&gt;it had landed&lt;/a&gt; and was running on my server.&lt;/p&gt;&#10;&lt;p&gt;Agent CLI&amp;rsquo;s transcription server loads a model on the first request and unloads it after an idle timeout, so the model only takes VRAM while I use it.&#10;The same process serves an OpenAI-compatible API, which the Diction gateway talks to, and the &lt;a href="https://www.home-assistant.io/integrations/wyoming/" target="_blank" rel="noopener"&gt;Wyoming protocol&lt;/a&gt; that Home Assistant uses for local voice.&lt;/p&gt;&#10;&lt;h2 id="2-the-recipe"&gt;2. The recipe &lt;a class="anchor" href="#2-the-recipe" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You need an NVIDIA GPU with the &lt;a href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html" target="_blank" rel="noopener"&gt;NVIDIA Container Toolkit&lt;/a&gt;, Docker Compose 2.30 or newer, and a private route from your iPhone to the server.&#10;I use Headscale, but Tailscale or plain WireGuard works just as well.&#10;Do not expose the gateway to the public internet.&lt;/p&gt;&#10;&lt;h3 id="write-the-compose-file"&gt;Write the Compose file &lt;a class="anchor" href="#write-the-compose-file" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Save the following as &lt;code&gt;compose.yaml&lt;/code&gt; in an empty directory.&#10;Agent CLI&amp;rsquo;s CI publishes a CUDA image with the Transformers backend and Qwen as the default model, so there is nothing to build.&#10;The file points Diction&amp;rsquo;s gateway at Agent CLI&amp;rsquo;s transcription port.&#10;&lt;code&gt;WHISPER_TTL&lt;/code&gt; raises the idle timeout from the default five minutes to a day, so dictation rarely waits for a reload:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;asr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ghcr.io/basnijholt/agent-cli-whisper:0.112.0-cuda-transformers&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;WHISPER_TTL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;86400&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;model-cache:/home/whisper/.cache&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;gpus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;all&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;gateway&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dictionlabs/gateway:v14.0&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;depends_on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;asr&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CUSTOM_BACKEND_URL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;http://asr:10301&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CUSTOM_BACKEND_MODEL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Qwen/Qwen3-ASR-1.7B-hf&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CUSTOM_BACKEND_CANONICAL_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Qwen/Qwen3-ASR-1.7B-hf&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CUSTOM_BACKEND_NEEDS_WAV&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;8080:8080&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;model-cache&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="start-it-and-connect-the-app"&gt;Start it and connect the app &lt;a class="anchor" href="#start-it-and-connect-the-app" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Start both services:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first transcription downloads Qwen into the &lt;code&gt;model-cache&lt;/code&gt; volume, so that request can take a few minutes.&#10;&lt;code&gt;docker compose logs -f&lt;/code&gt; shows the progress.&lt;/p&gt;&#10;&lt;p&gt;On the iPhone, go to &lt;strong&gt;Settings → General → Keyboard → Keyboards → Add New Keyboard → Diction&lt;/strong&gt;.&#10;Tap Diction in the keyboard list, enable &lt;strong&gt;Allow Full Access&lt;/strong&gt;, and grant microphone access when prompted.&#10;Then open Diction, go to &lt;strong&gt;Preferences → Mode → Self-Hosted&lt;/strong&gt;, enter &lt;code&gt;http://&amp;lt;private-server-ip&amp;gt;:8080&lt;/code&gt;, and tap &lt;strong&gt;Test connection&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;A small upstream detour:&lt;/strong&gt; Diction&amp;rsquo;s &lt;strong&gt;My Words&lt;/strong&gt; feature was not reaching the ASR backend during streaming, so I opened &lt;a href="https://github.com/DictionLabs/Diction/pull/20" target="_blank" rel="noopener"&gt;Diction PR #20&lt;/a&gt; to forward those words as the transcription prompt.&#10;With the fix, package names such as &lt;code&gt;PipeFunc&lt;/code&gt; and &lt;code&gt;MindRoom&lt;/code&gt; come back with the correct spelling and capitalization.&#10;It shipped in gateway v13.0, which is why the Compose file needs at least that version.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;On my machine, Qwen3-ASR 1.7B uses about 4.7 GiB of GPU memory and roughly 3 GiB of system memory while loaded.&lt;/p&gt;&#10;&lt;h2 id="3-the-bar-test"&gt;3. The bar test &lt;a class="anchor" href="#3-the-bar-test" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A day later, I met a friend in a bar in the Netherlands and wanted to let him try it.&lt;/p&gt;&#10;&lt;p&gt;He was already on my tailnet for some of my other self-hosted services, so his phone only needed an ACL change to reach the gateway.&#10;I opened the terminal app on my phone, connected to an agent, and dictated that change.&#10;In less than a minute, Diction was connected and working on his phone.&#10;His speech crossed the Atlantic, was transcribed by Qwen on my home GPU, and appeared back in the app with barely any delay.&lt;/p&gt;&#10;&lt;p&gt;That moment sold the whole setup to me.&#10;I was in a bar without a laptop, and I used dictation to grant access to the dictation service.&lt;/p&gt;&#10;</description></item><item><title>Removing the guardrails and letting my coding agents loose</title><link>https://www.nijho.lt/post/removing-guardrails/</link><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/removing-guardrails/</guid><description>&lt;p&gt;I have run coding agents in YOLO mode since I started using them in May 2025.&#10;I think it is the only way to parallelize work.&#10;Sometimes I have ten agents running at the same time, and clicking &amp;ldquo;approve&amp;rdquo; on every command they run would make that impossible.&lt;/p&gt;&#10;&lt;p&gt;What makes me comfortable with it is that models tend to do what you ask, and that you can keep them in an environment where they cannot do much harm.&#10;I don&amp;rsquo;t keep secrets within their reach, and above all I have &lt;a href="https://www.nijho.lt/post/btrfs-to-zfs/"&gt;very good backups&lt;/a&gt;.&#10;The last piece is a small set of hooks that block the few things I never want an agent to do on its own.&lt;/p&gt;&#10;&lt;h2 id="why-hooks-and-not-agentsmd"&gt;Why hooks and not AGENTS.md &lt;a class="anchor" href="#why-hooks-and-not-agentsmd" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My system prompt has always told agents not to force-push or merge PRs.&#10;Some of them did it anyway.&lt;/p&gt;&#10;&lt;p&gt;The first time I really noticed was with &lt;a href="https://www.nijho.lt/post/gemini-3-pro-first-impressions/"&gt;Gemini 3 Pro in November 2025&lt;/a&gt;, which merged my PR and force-pushed to &lt;code&gt;main&lt;/code&gt;.&#10;It happened a couple more times in the weeks after, as I parallelized more and asked more of the models.&#10;Three weeks later I had hooks for Claude Code and Gemini CLI that block these commands before they run.&#10;Codex did not support hooks yet.&#10;To my surprise, it did not need them: OpenAI&amp;rsquo;s models are extremely good at following instructions, and Codex never ignored an explicit rule in my &lt;code&gt;AGENTS.md&lt;/code&gt;.&#10;Codex supports hooks by now, so it runs the same ones as the others.&lt;/p&gt;&#10;&lt;p&gt;Claude has been worse at following rules, and Gemini far worse still: absolutely dogshit.&#10;I only try Gemini now and then, and I have been disappointed every time.&#10;By now I don&amp;rsquo;t even try the latest Google models anymore.&lt;/p&gt;&#10;&lt;p&gt;I don&amp;rsquo;t think agents are ever purposely malicious.&#10;They try to do what you asked, but they can misinterpret it, and then they force-push or merge something.&#10;A rule in a Markdown file is a hope; a hook actually stops the command.&#10;Not that a hook would stop a malicious agent: it could put the blocked command in a Bash script and run that instead.&#10;What the hook does is tell the agent why I don&amp;rsquo;t want it, because every block comes with a short explanation:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add -A is not allowed - add files explicitly to avoid adding unrelated untracked files&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The models are well aligned, so once they know my intention, they respect it.&lt;/p&gt;&#10;&lt;h2 id="what-i-block"&gt;What I block &lt;a class="anchor" href="#what-i-block" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;All hooks live in &lt;a href="https://github.com/basnijholt/dotfiles/tree/main/configs/claude/hooks" target="_blank" rel="noopener"&gt;my dotfiles&lt;/a&gt;, and I deliberately kept them simple.&#10;The detection logic is one Python module, &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/configs/claude/hooks/git_guard.py" target="_blank" rel="noopener"&gt;&lt;code&gt;git_guard.py&lt;/code&gt;&lt;/a&gt;, and the Claude Code, Codex, and Gemini CLI hooks all import it.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;git commit --amend&lt;/code&gt; and &lt;code&gt;git push --force&lt;/code&gt;.&lt;/strong&gt;&#10;The unit I review is a PR.&#10;When I review a PR, I know I have reviewed it up to a certain commit, and later I only look at the diff of the new commits.&#10;Rewriting history breaks that.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Pushing to &lt;code&gt;main&lt;/code&gt;.&lt;/strong&gt;&#10;Everything happens in PRs.&#10;Inside a PR I don&amp;rsquo;t care how messy the history gets.&#10;I want the agent to push very often, so no work gets lost, and every commit has to be green, so each one is a snapshot I can go back to.&#10;The agent maintains its own development of the feature, and I have not written a commit message myself in a long time.&#10;When the PR is done, I squash merge it.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;gh pr merge&lt;/code&gt;.&lt;/strong&gt;&#10;The merge comes after my review, so it is mine to do.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;git add -A&lt;/code&gt;.&lt;/strong&gt;&#10;I often have unrelated untracked or unstaged files lying around.&#10;I work in many open source repositories, and some of those files should not be public, like deployment plans.&#10;This is the only block without an override.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;sleep&lt;/code&gt;.&lt;/strong&gt;&#10;This one is for Claude, and Opus 5 specifically, which I hate with a passion.&#10;It would run tests in the background and then &lt;code&gt;sleep 300&lt;/code&gt;, badly overestimating how long the tests take, when a blocking tool call returns exactly when they finish.&lt;/p&gt;&#10;&lt;h2 id="the-override"&gt;The override &lt;a class="anchor" href="#the-override" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Over time the models got more capable.&#10;I could parallelize more, and I trusted them to work on their own for longer.&#10;I noticed I was spending a significant fraction of my time clicking buttons and doing operations I had forbidden the agent to do, only to end up doing them myself.&lt;/p&gt;&#10;&lt;p&gt;So in July I added an override.&#10;When a hook blocks a command, the agent gets this hint:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;If (and only if) the user has explicitly approved this exact action,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;re-run the command prefixed with EXPLICITLY_USER_APPROVED_HOOK_OVERRIDE=1 to override this block.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nothing checks whether I actually approved it.&#10;It is a soft gate, but it works because the agent now has to write down, in the command itself, that I approved the action.&#10;When it runs into the block without my approval, it becomes obvious to the agent that it has to ask me first.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;git add -A&lt;/code&gt; stays hard-blocked, and a chained command cannot carry an override past it: &lt;code&gt;EXPLICITLY_USER_APPROVED_HOOK_OVERRIDE=1 git commit --amend &amp;amp;&amp;amp; git add -A&lt;/code&gt; is still rejected.&lt;/p&gt;&#10;&lt;h2 id="when-the-override-was-used-without-approval"&gt;When the override was used without approval &lt;a class="anchor" href="#when-the-override-was-used-without-approval" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;It has happened, mostly with GPT-5.6 Sol, which I used a lot at the time.&lt;/p&gt;&#10;&lt;p&gt;It used to be that you had to keep your context window short, because auto-compaction was lossy and produced poor summaries.&#10;Since around GPT-5.3, compaction works well enough that I keep a session going for as long as I am working on the same feature.&#10;So I would ask the agent to merge a PR early on, start a follow-up PR in the same session, and after a compaction the agent concluded that it should merge the new PR too.&#10;It did, without my approval.&lt;/p&gt;&#10;&lt;p&gt;The other case was my &lt;a href="https://github.com/mindroom-ai/mindroom/blob/main/.claude/skills/pr-review/SKILL.md" target="_blank" rel="noopener"&gt;&lt;code&gt;pr-review&lt;/code&gt; skill&lt;/a&gt;, by far my favorite skill that I wrote myself.&#10;I would tell the agent to run it and squash merge the PR only if the review approved it.&#10;A few times, the review found problems, the agent fixed them, and then it merged.&#10;What I meant was: merge if it is approved right away, and otherwise wait for me.&#10;Now I spell that out and end with &amp;ldquo;otherwise, wait for my instructions.&amp;rdquo;&lt;/p&gt;&#10;&lt;h2 id="working-from-my-phone"&gt;Working from my phone &lt;a class="anchor" href="#working-from-my-phone" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The override matters most when I am away from my computer.&#10;On a month-long trip visiting family in Europe, I worked only from my phone, using &lt;a href="https://www.nijho.lt/post/agentic-mobile-workflow/"&gt;my mobile coding workflow&lt;/a&gt;.&#10;Typing commands in a terminal on a phone is inconvenient, so I would rather say what I want and let the agent do it, including the merge.&#10;I have also built end-to-end encrypted voice calls to my agents over Matrix with &lt;a href="https://www.nijho.lt/post/mindroom/"&gt;MindRoom&lt;/a&gt;, and I am moving more toward that kind of voice-driven workflow.&lt;/p&gt;&#10;&lt;h2 id="not-much-has-changed"&gt;Not much has changed &lt;a class="anchor" href="#not-much-has-changed" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I recently reread &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;my first post on agentic coding&lt;/a&gt; from August 2025, and very little in it is outdated.&#10;The models are more capable, and I give them much larger scopes, but the way I work is mostly the same.&#10;The hooks are the main thing I added, and the override is how I loosened them again.&lt;/p&gt;&#10;</description></item><item><title>MindRoom: AI agents that live in Matrix and work everywhere 🧠</title><link>https://www.nijho.lt/post/mindroom/</link><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/mindroom/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-the-problem-your-ai-is-trapped-in-apps"&gt;1. The problem: your AI is trapped in apps&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-what-is-mindroom"&gt;2. What is MindRoom?&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-how-it-actually-works"&gt;3. How it actually works&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-building-on-matrix-the-good-and-the-tricky"&gt;4. Building on Matrix: the good and the tricky&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-memory-that-follows-you"&gt;5. Memory that follows you&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-100-built-in-tool-integrations"&gt;6. 100+ built-in tool integrations&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-teams-agents-that-collaborate"&gt;7. Teams: agents that collaborate&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-hot-reload-change-config-and-plugins-without-downtime"&gt;8. Hot-reload: change config and plugins without downtime&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-voice-scheduling-and-other-features"&gt;9. Voice, scheduling, and other features&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#10-the-obsession-the-saas-dream-and-the-burnout"&gt;10. The obsession, the SaaS dream, and the burnout&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#11-openclaw-and-why-it-matters"&gt;11. OpenClaw and why it matters&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#12-whats-next"&gt;12. What&amp;rsquo;s next&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#links-and-resources"&gt;Links and resources&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-the-problem-your-ai-is-trapped-in-apps"&gt;1. The problem: your AI is trapped in apps &lt;a class="anchor" href="#1-the-problem-your-ai-is-trapped-in-apps" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Programming is my biggest passion in life.&#10;I&amp;rsquo;ve been actively involved in open source for over ten years now, maintaining &lt;a href="https://github.com/basnijholt" target="_blank" rel="noopener"&gt;40+ installable packages&lt;/a&gt; across Python, JavaScript, and Rust.&#10;Some of these have over 100,000 users; others have exactly one—me.&#10;I mention this because it matters for what comes next: when AI coding tools arrived, I didn&amp;rsquo;t start from zero.&#10;As I wrote about in my &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;agentic coding post&lt;/a&gt;, AI has completely transformed how I work—when I&amp;rsquo;m AFK, I regularly build full features or entire projects by &lt;a href="https://www.nijho.lt/post/agentic-mobile-workflow/"&gt;dictating to my phone&lt;/a&gt; and routing it through my own &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;transcription software&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Through all of this, I became deeply convinced that AI agents are the future.&#10;Not just a useful tool for programmers—a fundamental shift in how &lt;em&gt;everyone&lt;/em&gt; will interact with computers.&lt;/p&gt;&#10;&lt;p&gt;But if that&amp;rsquo;s true, then the way agents work today is broken.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ve built artificial barriers between artificial intelligences.&#10;ChatGPT knows you in one tab, Claude knows you in another, your Slack bot knows you in a third.&#10;Your email AI can&amp;rsquo;t tell your calendar AI about that meeting invitation.&#10;Your coding assistant has no idea about the project specs sitting in your document AI.&#10;Switch platforms, and your AI starts from scratch.&lt;/p&gt;&#10;&lt;p&gt;Most agent frameworks require you to &lt;em&gt;program&lt;/em&gt; them.&#10;That works for developers like me, but if agents are truly the future, they need to work for everyone.&#10;Non-programmers don&amp;rsquo;t want to write code—they just want a chat.&lt;/p&gt;&#10;&lt;p&gt;And then there&amp;rsquo;s privacy.&#10;I&amp;rsquo;m fine sharing my email with Gemini—Google already owns my Gmail.&#10;But do I want to send my financial data, my health records, or my personal notes to a cloud provider?&#10;Not really.&#10;I&amp;rsquo;d rather use a local model for sensitive tasks and pick the best, cheapest Chinese model for general-purpose deep research.&lt;/p&gt;&#10;&lt;p&gt;So I built &lt;strong&gt;MindRoom&lt;/strong&gt; on a chat protocol—if people just want a chat, give them a chat.&#10;Agents live in the same rooms as you, collaborate in threads, and follow you across every platform.&#10;The first commit landed on July 29, 2025 (four months before OpenClaw&amp;rsquo;s first commit 😅), so by the time I&amp;rsquo;m publishing this MindRoom has been with me for nearly eleven months: first as an obsessive side project, then, since March, with much more sustained focus.&#10;At first I got so obsessed with it that I eventually burned out and had to step away completely.&lt;/p&gt;&#10;&lt;p&gt;Recently, seeing &lt;a href="https://openclaw.ai" target="_blank" rel="noopener"&gt;OpenClaw&lt;/a&gt; gain massive traction solving a similar problem reminded me that what I&amp;rsquo;d been building wasn&amp;rsquo;t just a niche obsession.&#10;So here I am, dusting off MindRoom and writing about what it is, how it works, and why I think the approach still matters.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; MindRoom is an open-source system that creates AI agents living inside the &lt;a href="https://matrix.org/" target="_blank" rel="noopener"&gt;Matrix protocol&lt;/a&gt;.&#10;Because Matrix has bridges to Slack, Telegram, Discord, WhatsApp, and everything else, your agents can follow you across every platform—with persistent memory, 100+ built-in tool integrations, and multi-agent collaboration.&#10;Think of it as &amp;ldquo;your AI assistant, but it lives in Matrix and works everywhere.&amp;rdquo;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;figure id="figure-live-chatmindroomchat-personal-thread-with-the-prompt-explain-how-mindroom-and-what-you-can-do-mind-answers-in-the-real-matrix-room-using-tool-calls-and-the-codex-backed-local-mindroom-runtime"&gt;&lt;img src="https://www.nijho.lt/post/mindroom/mindroom-in-action_hu_5c1001a61c1ce0a1.webp" srcset="https://www.nijho.lt/post/mindroom/mindroom-in-action_hu_cba228417596d894.webp 400w, https://www.nijho.lt/post/mindroom/mindroom-in-action_hu_5c1001a61c1ce0a1.webp 760w, https://www.nijho.lt/post/mindroom/mindroom-in-action_hu_46631ca52a25e910.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="489" alt="Live MindRoom Personal thread showing the prompt Explain how MindRoom and what you can do, followed by Mind explaining Matrix agents, tools, memory, and skills." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;Live chat.mindroom.chat Personal thread with the prompt: “Explain how MindRoom and what you can do.” Mind answers in the real Matrix room, using tool calls and the Codex-backed local MindRoom runtime.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="2-what-is-mindroom"&gt;2. What is MindRoom? &lt;a class="anchor" href="#2-what-is-mindroom" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;MindRoom is an open-source system that creates AI agents living inside the &lt;a href="https://matrix.org/" target="_blank" rel="noopener"&gt;Matrix protocol&lt;/a&gt;.&#10;If you&amp;rsquo;re not familiar with Matrix—it&amp;rsquo;s a federated, end-to-end encrypted communication standard.&#10;The same protocol used by the French government for 5.5 million civil servants, by German healthcare for 150K+ organizations, and by the Element app that millions of people use daily.&lt;/p&gt;&#10;&lt;p&gt;The key insight: Matrix has &lt;a href="https://matrix.org/ecosystem/bridges/" target="_blank" rel="noopener"&gt;bridges&lt;/a&gt; to many major platforms—Slack, Telegram, Discord, WhatsApp, IRC, email, even SMS.&lt;/p&gt;&#10;&lt;p&gt;So if your AI agent lives in Matrix, it can reach you on any platform.&#10;One agent, every platform, continuous memory.&lt;/p&gt;&#10;&lt;p&gt;One practical caveat: Matrix bridges vary in maturity. Some, like the &lt;a href="https://github.com/mautrix/telegram" target="_blank" rel="noopener"&gt;Telegram bridge&lt;/a&gt;, work very well, while others can be finicky. Your mileage may vary depending on which platforms you need.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s what a typical setup looks like in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;CodeAgent&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Generate code, manage files, execute shell commands&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;opus-4.8&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;file, shell, github]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;Always read files before modifying them.&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;rooms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;lobby, dev]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;research&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ResearchAgent&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Search the web, summarize papers, find information&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpt-5.5&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;tavily, arxiv, wikipedia]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;rooms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;lobby, research]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;teams&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;super_team&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Super Team&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;code, research]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;collaborate&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Define your agents, give them tools and rooms, and they show up in Matrix as real users—with avatars, typing indicators, and online status.&lt;/p&gt;&#10;&lt;figure id="figure-mindroom-agents-are-real-matrix-users-with-their-own-accounts-generated-avatars-display-names-room-memberships-and-online-presence"&gt;&lt;img src="https://www.nijho.lt/post/mindroom/mindroom-members_hu_5090cd21f23bad91.webp" srcset="https://www.nijho.lt/post/mindroom/mindroom-members_hu_fbc884b2330f0fe3.webp 400w, https://www.nijho.lt/post/mindroom/mindroom-members_hu_5090cd21f23bad91.webp 760w, https://www.nijho.lt/post/mindroom/mindroom-members_hu_e6a566cfcdf2d915.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="489" alt="Live MindRoom room showing RouterAgent, Mind, and Bas as Matrix users with generated avatars." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;MindRoom agents are real Matrix users with their own accounts, generated avatars, display names, room memberships, and online presence.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="3-how-it-actually-works"&gt;3. How it actually works &lt;a class="anchor" href="#3-how-it-actually-works" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;At the core sits what I call the &lt;strong&gt;MultiAgentOrchestrator&lt;/strong&gt;—a class in &lt;code&gt;bot.py&lt;/code&gt; that boots every configured entity (router, agents, teams), provisions Matrix user accounts for each one via &lt;a href="https://github.com/matrix-nio/matrix-nio" target="_blank" rel="noopener"&gt;matrix-nio&lt;/a&gt;, and keeps sync loops alive.&#10;The agents themselves are powered by the &lt;a href="https://github.com/agno-agi/agno" target="_blank" rel="noopener"&gt;Agno&lt;/a&gt; framework, which provides a unified interface across AI model providers.&lt;/p&gt;&#10;&lt;p&gt;When someone sends a message in a Matrix room:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Explicit mentions&lt;/strong&gt; go directly to the named agent (&lt;code&gt;@mindroom_code help me debug this&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread continuations&lt;/strong&gt; keep the same agent responding (no weird context switches mid-conversation)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;New conversations&lt;/strong&gt; hit the &lt;strong&gt;router&lt;/strong&gt;—an AI that analyzes the message and picks the best agent based on capabilities&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;All conversations happen in threads, which keeps rooms organized.&#10;Agents stream their responses in real-time, editing a single message as they think rather than spamming new ones.&#10;You see tool calls happening live:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;🔧 Tool Call: search_web(query=&amp;#34;matrix protocol bridges&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[waiting for result...]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ search_web result:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[results here]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The recording below starts in the main Personal room, sends the prompt &lt;code&gt;Explain how MindRoom and what you can do.&lt;/code&gt;, and then follows MindRoom as it opens the new thread and streams the reply to completion. It is sped up 2.5x to keep the flow skimmable.&lt;/p&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/reduced-motion.3dfea0061c17c60a9a200c61ef1e3b3e98d5bdc4eaa4e0a64b3ed2a4d13c72fd.js" integrity="sha256-Pf6gBhwXxgqaIAxh7x47PpjVvcTqpOCmSz7SpNE8cv0=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;video controls autoplay muted playsinline loop preload="metadata"&gt;&#10;&lt;source src="https://www.nijho.lt/post/mindroom/mindroom-agent-response.mp4" type="video/mp4"&gt;&#10;&lt;/video&gt;&#10;&#10;&lt;h2 id="4-building-on-matrix-the-good-and-the-tricky"&gt;4. Building on Matrix: the good and the tricky &lt;a class="anchor" href="#4-building-on-matrix-the-good-and-the-tricky" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;One of the best things about building on Matrix is what you get for free.&#10;End-to-end encryption, a deeply interoperable chat protocol with bridges to many platforms, a choice of clients, federation between organizations—all of that comes with the protocol.&#10;You don&amp;rsquo;t have to build any of it yourself.&lt;/p&gt;&#10;&lt;p&gt;But because Matrix has such a tight specification, it also brings challenges.&lt;/p&gt;&#10;&lt;p&gt;The protocol doesn&amp;rsquo;t support streaming.&#10;AI agents that think for 30 seconds before dumping a wall of text make for a terrible chat experience, so I hacked streaming in by rapidly editing the same message as new tokens arrive.&#10;An &lt;code&gt;⋯&lt;/code&gt; marker shows while the agent is still thinking—a small touch, but it makes the experience feel responsive and alive.&lt;/p&gt;&#10;&lt;p&gt;There&amp;rsquo;s also a size limit on message content.&#10;That&amp;rsquo;s fine for human chat, but AI responses can get long—especially when tool calls and their results are included.&#10;I worked around this by using Matrix&amp;rsquo;s attachment feature: when a response exceeds the limit, the content continues in an attachment that gets updated as the message keeps streaming in.&#10;This required forking the &lt;a href="https://cinny.in/" target="_blank" rel="noopener"&gt;Cinny&lt;/a&gt; chat client so that attachments display inline rather than as downloadable files, making the whole thing seamless.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;These workarounds are the kind of thing you don&amp;rsquo;t anticipate when you pick a protocol.&#10;Matrix gives you an incredible foundation, but making it work well for AI required bending it in ways it wasn&amp;rsquo;t designed for.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="5-memory-that-follows-you"&gt;5. Memory that follows you &lt;a class="anchor" href="#5-memory-that-follows-you" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;MindRoom currently supports two memory implementations.&lt;/p&gt;&#10;&lt;p&gt;The first is the more traditional semantic memory system built on &lt;a href="https://mem0.ai/" target="_blank" rel="noopener"&gt;Mem0&lt;/a&gt;&amp;rsquo;s &lt;code&gt;AsyncMemory&lt;/code&gt;, with configurable embedding providers (&lt;a href="https://platform.openai.com/docs/guides/embeddings" target="_blank" rel="noopener"&gt;OpenAI&lt;/a&gt;, &lt;a href="https://ollama.com/" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt;, or HuggingFace) and vector storage via &lt;a href="https://www.trychroma.com/" target="_blank" rel="noopener"&gt;ChromaDB&lt;/a&gt;.&#10;This gives agents searchable memory for preferences, project context, decisions, and recurring facts.&lt;/p&gt;&#10;&lt;p&gt;The second is a file-based memory system inspired by the simplicity of OpenClaw-style agent files.&#10;Instead of burying identity in a database, durable context can live in plain Markdown files that travel with the agent.&#10;That portability matters: I can move the same agent identity from OpenClaw to Hermes to MindRoom without starting from scratch.&lt;/p&gt;&#10;&lt;p&gt;MindRoom also has a memory flush step that periodically extracts durable facts from conversations and writes them back into memory.&#10;So the chat transcript remains chat, while stable preferences, decisions, and identity details become reusable context for future turns.&lt;/p&gt;&#10;&lt;figure id="figure-a-live-personal-memory-demo-mindroom-stores-a-harmless-preference-in-one-turn-and-retrieves-it-later-from-the-same-matrix-conversation"&gt;&lt;img src="https://www.nijho.lt/post/mindroom/mindroom-memory_hu_5090cd21f23bad91.webp" srcset="https://www.nijho.lt/post/mindroom/mindroom-memory_hu_fbc884b2330f0fe3.webp 400w, https://www.nijho.lt/post/mindroom/mindroom-memory_hu_5090cd21f23bad91.webp 760w, https://www.nijho.lt/post/mindroom/mindroom-memory_hu_e6a566cfcdf2d915.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="489" alt="Live MindRoom memory thread showing the generated agent avatars and a public demo where the agent remembers teal as the blog demo accent color." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;A live Personal memory demo: MindRoom stores a harmless preference in one turn and retrieves it later from the same Matrix conversation.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="6-100-built-in-tool-integrations"&gt;6. 100+ built-in tool integrations &lt;a class="anchor" href="#6-100-built-in-tool-integrations" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Agents can use over 100 built-in integrations:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Category&lt;/th&gt;&#10;&lt;th&gt;Examples&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Gmail, Slack, Telegram, Discord&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Development&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;GitHub, Shell, Python, Docker&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Search&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Tavily, Wikipedia, Arxiv, DuckDuckGo&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Productivity&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Google Calendar, Jira, Linear, Todoist&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Smart Home&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Home Assistant&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;AI/ML&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;DALL-E, ElevenLabs, Replicate&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Pandas, SQL, DuckDB, Yahoo Finance&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Firecrawl, Crawl4ai, Browser automation&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Tools are lazy-loaded and credential-managed, so an agent only loads what it needs.&lt;/p&gt;&#10;&lt;h2 id="7-teams-agents-that-collaborate"&gt;7. Teams: agents that collaborate &lt;a class="anchor" href="#7-teams-agents-that-collaborate" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Single agents are useful, but sometimes you need a team.&#10;MindRoom supports two collaboration modes:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Coordinate mode&lt;/strong&gt;: A lead agent orchestrates others.&#10;You ask a question, the lead delegates subtasks, collects results, and synthesizes a unified response.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Collaborate mode&lt;/strong&gt;: All agents work on the same task in parallel, each providing their independent analysis.&#10;The system then merges their responses with a consensus summary.&lt;/p&gt;&#10;&lt;p&gt;In practice, you might have a research team where one agent searches academic papers, another checks industry news, and a third validates claims—all triggered by a single message.&#10;The live room view below shows a real team response in the same Matrix thread surface normal agents use: threads, routed agents, and room history are all first-class chat objects rather than a separate dashboard.&lt;/p&gt;&#10;&lt;figure id="figure-live-lobby-thread-in-chatmindroomchat-showing-a-real-team-response-from-homeassistant-and-agentbuilder-team-collaboration-uses-the-same-matrix-native-interface-as-regular-agent-chats-with-routed-agents-and-room-membership-visible-beside-the-conversation"&gt;&lt;img src="https://www.nijho.lt/post/mindroom/mindroom-team_hu_afbbb6ff5ac54e3f.webp" srcset="https://www.nijho.lt/post/mindroom/mindroom-team_hu_bf973e9c13f8cf6.webp 400w, https://www.nijho.lt/post/mindroom/mindroom-team_hu_afbbb6ff5ac54e3f.webp 760w, https://www.nijho.lt/post/mindroom/mindroom-team_hu_ee227208566f8d1.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="533" alt="Live MindRoom Lobby thread showing a Team Response from HomeAssistant and AgentBuilder, with the member list showing Super Team and other agents." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;Live Lobby thread in chat.mindroom.chat showing a real Team Response from HomeAssistant and AgentBuilder. Team collaboration uses the same Matrix-native interface as regular agent chats, with routed agents and room membership visible beside the conversation.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="8-hot-reload-change-config-and-plugins-without-downtime"&gt;8. Hot-reload: change config and plugins without downtime &lt;a class="anchor" href="#8-hot-reload-change-config-and-plugins-without-downtime" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;config.yaml&lt;/code&gt; is watched at runtime.&#10;When you edit it—add an agent, change a model, update instructions—MindRoom diffs the old and new config, gracefully restarts only the affected agents, and has them rejoin their rooms.&#10;No downtime, no full runtime restart required.&lt;/p&gt;&#10;&lt;p&gt;The same development loop applies to plugins.&#10;MindRoom has a rich Python hook system, and plugins can be live-developed while the system is running.&#10;Change a plugin file, save it, and MindRoom automatically reloads the plugin without restarting the Python runtime.&lt;/p&gt;&#10;&lt;p&gt;This sounds minor, but when you&amp;rsquo;re iterating on agent behavior or plugin hooks, being able to tweak code and config and see results in seconds significantly improves the development loop.&lt;/p&gt;&#10;&#10;&lt;script type="module" src="https://www.nijho.lt/js/reduced-motion.3dfea0061c17c60a9a200c61ef1e3b3e98d5bdc4eaa4e0a64b3ed2a4d13c72fd.js" integrity="sha256-Pf6gBhwXxgqaIAxh7x47PpjVvcTqpOCmSz7SpNE8cv0=" crossorigin="anonymous"&gt;&lt;/script&gt;&#10;&lt;video controls autoplay muted playsinline loop preload="metadata"&gt;&#10;&lt;source src="https://www.nijho.lt/post/mindroom/mindroom-hot-reload.mp4" type="video/mp4"&gt;&#10;&lt;/video&gt;&#10;&#10;&lt;h2 id="9-voice-scheduling-and-other-features"&gt;9. Voice, scheduling, and other features &lt;a class="anchor" href="#9-voice-scheduling-and-other-features" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Some features I built purely because I wanted them for myself (a recurring theme in my projects, as anyone who&amp;rsquo;s read my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;local AI journey&lt;/a&gt; can attest).&#10;I even built &lt;a href="https://github.com/basnijholt/matty" target="_blank" rel="noopener"&gt;Matty&lt;/a&gt;, a Matrix CLI client, from bed at midnight because I needed a way to interact with my agents from the terminal:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Voice messages&lt;/strong&gt;: Audio messages in Matrix are auto-transcribed via Whisper and treated as regular text input.&#10;You can talk to your agents.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Scheduled tasks&lt;/strong&gt;: Natural language scheduling (&lt;code&gt;!schedule &amp;quot;check my email every morning at 9 AM&amp;quot;&lt;/code&gt;) backed by cron jobs.&#10;Agents can run tasks in the background and escalate to you when needed.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;DM support&lt;/strong&gt;: Agents respond naturally in 1:1 conversations without needing mentions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cross-organization federation&lt;/strong&gt;: Because Matrix is federated, two companies&amp;rsquo; AI agents can collaborate in a shared room—something that&amp;rsquo;s hard to do on proprietary platforms.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;The voice feature pairs nicely with my &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; tool—local Whisper transcription on my RTX 3090 means I can talk to my Matrix agents without any cloud dependency.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="10-the-obsession-the-saas-dream-and-the-burnout"&gt;10. The obsession, the SaaS dream, and the burnout &lt;a class="anchor" href="#10-the-obsession-the-saas-dream-and-the-burnout" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I need to be honest about what actually happened with MindRoom, because &amp;ldquo;life got in the way&amp;rdquo; is a sanitized version of the story.&lt;/p&gt;&#10;&lt;p&gt;What really happened is that I got completely, utterly obsessed.&#10;Every single second I wasn&amp;rsquo;t working at my day job or sleeping, I was working on MindRoom.&#10;Many hundreds of hours went into it.&#10;I seriously considered quitting my job and starting an AI startup around it.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve read Armin Ronacher&amp;rsquo;s post &lt;a href="https://lucumr.pocoo.org/2026/1/18/agent-psychosis/" target="_blank" rel="noopener"&gt;Agent Psychosis: Are We Going Insane?&lt;/a&gt;, you&amp;rsquo;ll know exactly what I&amp;rsquo;m talking about.&#10;The dopamine hit from building with AI agents is incredibly real.&#10;As Armin writes: &amp;ldquo;You feel productive, you feel like everything is amazing, and if you hang out just with people that are into that stuff too, without any checks, you go deeper and deeper into the belief that this all makes perfect sense.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;That was me.&#10;I was building and building, shipping feature after feature, and it felt incredible.&#10;The codebase grew to over 1,000 commits.&#10;I built the core system, then a React dashboard, then I started on a full SaaS platform—Kubernetes deployments on Hetzner Cloud, a FastAPI backend, a Next.js 15 frontend, Stripe integration, Supabase auth, Helm charts for multi-tenant isolation.&lt;/p&gt;&#10;&lt;p&gt;And that&amp;rsquo;s where the enthusiasm started to erode.&#10;Not because the core idea was bad, but because the work shifted from building interesting things (agent orchestration, memory systems, routing intelligence) to grinding through SaaS boilerplate: GDPR compliance, payment processing, automated Kubernetes deployments, terms of service, cookie banners.&#10;The dopamine loop that kept me going at 2 AM broke when the work stopped being creative and started being compliance paperwork.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Looking back, I think this is a pattern worth recognizing.&#10;Agentic coding makes it so easy to &lt;em&gt;start&lt;/em&gt; things that you can build yourself into a scope that would normally require a team.&#10;The gap between &amp;ldquo;I can build this&amp;rdquo; and &amp;ldquo;I can maintain and ship this as a product&amp;rdquo; is larger than the tools make it feel.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;The hosted control plane lives at &lt;a href="https://app.mindroom.chat" target="_blank" rel="noopener"&gt;app.mindroom.chat&lt;/a&gt;.&#10;I am deliberately not turning this section into a dashboard tour; the interesting part, and the part I still care about most, is the Matrix-native runtime underneath it.&lt;/p&gt;&#10;&lt;h2 id="11-openclaw-and-why-it-matters"&gt;11. OpenClaw and why it matters &lt;a class="anchor" href="#11-openclaw-and-why-it-matters" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://openclaw.ai" target="_blank" rel="noopener"&gt;OpenClaw&lt;/a&gt; takes a different approach to the same core problem.&#10;Where MindRoom builds on Matrix federation as the backbone, OpenClaw runs a local Gateway on your machine and connects to messaging platforms directly (WhatsApp via Baileys, Telegram via grammY, Discord via discord.js, and so on).&lt;/p&gt;&#10;&lt;p&gt;The similarities are striking:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Both give you a single AI assistant across all your messaging platforms&lt;/li&gt;&#10;&lt;li&gt;Both have persistent memory&lt;/li&gt;&#10;&lt;li&gt;Both support multiple tools and integrations&lt;/li&gt;&#10;&lt;li&gt;Both are open-source and privacy-focused&lt;/li&gt;&#10;&lt;li&gt;Both let you choose your own AI model&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The differences are interesting too.&#10;OpenClaw is local-first and TypeScript-based with 380K+ stars and a massive community.&#10;MindRoom is Python-based, federation-first, and&amp;hellip; well, let&amp;rsquo;s just say my GitHub star count is a few orders of magnitude lower.&lt;/p&gt;&#10;&lt;p&gt;But seeing OpenClaw validate the core idea—that people want AI assistants that aren&amp;rsquo;t trapped in apps—reminded me that what I&amp;rsquo;d been building matters.&#10;The federation angle is something OpenClaw doesn&amp;rsquo;t have: the ability for agents from different organizations to collaborate natively, with end-to-end encryption (Olm/Megolm), on a protocol that governments already trust and deploy at scale.&lt;/p&gt;&#10;&lt;figure id="figure-mindroom-uses-matrix-as-the-federated-backbone-openclaw-takes-a-local-gateway-direct-connector-approach"&gt;&lt;img src="https://www.nijho.lt/post/mindroom/mindroom-architecture_hu_aaf71cef609b8340.webp" srcset="https://www.nijho.lt/post/mindroom/mindroom-architecture_hu_2cca5883511aed87.webp 400w, https://www.nijho.lt/post/mindroom/mindroom-architecture_hu_aaf71cef609b8340.webp 760w, https://www.nijho.lt/post/mindroom/mindroom-architecture_hu_afb78d90679bf4a4.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="507" alt="Architecture diagram comparing MindRoom and OpenClaw. MindRoom flows from user to Matrix room to federated homeserver to bridges to messaging platforms. OpenClaw flows from user to local gateway to direct connectors to platform APIs." loading="lazy" data-zoomable&gt;&lt;figcaption&gt;MindRoom uses Matrix as the federated backbone; OpenClaw takes a local-gateway, direct-connector approach.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;And then there&amp;rsquo;s &lt;a href="https://moltbook.com" target="_blank" rel="noopener"&gt;Moltbook&lt;/a&gt;—a social network built exclusively for AI agents that the internet was losing its mind over for a couple of days.&#10;I&amp;rsquo;m not personally convinced it&amp;rsquo;s the next big thing, but what caught my attention is that MindRoom could support something like it &lt;em&gt;natively&lt;/em&gt;.&#10;Matrix is already federated—agents on different servers can already interact, join shared rooms, and collaborate across organizational boundaries.&#10;A bridge from a Reddit-like platform to Matrix and your agents could participate without any special integration.&lt;/p&gt;&#10;&lt;p&gt;Building agent-to-agent infrastructure from scratch also means building security from scratch—and that&amp;rsquo;s where new platforms tend to struggle.&#10;Matrix has spent years hardening its E2E encryption, and it&amp;rsquo;s already deployed by governments and healthcare organizations at scale.&#10;Building on that foundation means you inherit those security properties rather than hoping to get them right yourself.&lt;/p&gt;&#10;&lt;h2 id="12-whats-next"&gt;12. What&amp;rsquo;s next &lt;a class="anchor" href="#12-whats-next" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I first drafted this post a couple of months ago, when MindRoom was still something I was trying to come back to.&#10;That part is already out of date.&#10;Since January I&amp;rsquo;ve been spending nearly every free hour on it again, and since March it has effectively been my full-time work.&#10;The codebase supports 8+ AI model providers—OpenAI, Anthropic, Ollama, Groq, Google, OpenRouter, DeepSeek, Cerebras—and the core architecture is solid.&#10;It also has real users now.&#10;My rough guess is that something like 30-100 people have tried MindRoom in one form or another, which is still early, but meaningfully different from &amp;ldquo;only I have touched this.&amp;rdquo;&#10;There&amp;rsquo;s already a Docker Compose file and a &lt;a href="https://github.com/mindroom-ai/mindroom-stack" target="_blank" rel="noopener"&gt;starter repository&lt;/a&gt; to get started, but I want to make it even simpler.&lt;/p&gt;&#10;&lt;p&gt;What I&amp;rsquo;m focusing on now:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Skills system&lt;/strong&gt;: Building an ecosystem of reusable agent behaviors (already partially implemented with OpenClaw-compatible format)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Even easier onboarding&lt;/strong&gt;: A &lt;code&gt;docker compose up&lt;/code&gt; gets you running today, but I want a wizard that gets you from zero to working agents without touching a YAML file&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;: Turning the small group of early users into a real operator and contributor community&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Scope discipline&lt;/strong&gt;: Keeping the work sustainable now that MindRoom is effectively full-time, not slipping back into the obsessive 2 AM marathon from before&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;m deliberately leaving the SaaS ambitions aside for now.&#10;The core system is what matters, and that&amp;rsquo;s where the energy is going.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re interested in AI agents that live in Matrix and work everywhere, check out &lt;a href="https://github.com/mindroom-ai/mindroom" target="_blank" rel="noopener"&gt;MindRoom on GitHub&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Sometimes seeing someone else succeed with a similar idea is enough to remember why you started building in the first place.&#10;And sometimes the most important lesson from a project isn&amp;rsquo;t technical—it&amp;rsquo;s learning when to step away and when to come back.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Are you running AI agents on any messaging platforms? Have you tried Matrix for anything beyond regular chat? I&amp;rsquo;d love to hear about your setups!&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="links-and-resources"&gt;Links and resources &lt;a class="anchor" href="#links-and-resources" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/mindroom-ai/mindroom" target="_blank" rel="noopener"&gt;MindRoom on GitHub&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/mindroom-ai/mindroom-stack" target="_blank" rel="noopener"&gt;MindRoom Stack (starter repository)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://matrix.org/" target="_blank" rel="noopener"&gt;Matrix protocol&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://openclaw.ai" target="_blank" rel="noopener"&gt;OpenClaw&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://mem0.ai/" target="_blank" rel="noopener"&gt;Mem0 (memory system inspiration)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/agno-agi/agno" target="_blank" rel="noopener"&gt;Agno framework&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt/matty" target="_blank" rel="noopener"&gt;Matty (Matrix CLI client)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://lucumr.pocoo.org/2026/1/18/agent-psychosis/" target="_blank" rel="noopener"&gt;Agent Psychosis: Are We Going Insane?&lt;/a&gt; by Armin Ronacher&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;My agentic coding post&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;My local AI journey&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/agentic-mobile-workflow/"&gt;Coding from my phone&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Matrix MCP</title><link>https://www.nijho.lt/project/matrix-mcp/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/matrix-mcp/</guid><description/></item><item><title>Parallel agentic coding made trivial with `agent-cli dev`</title><link>https://www.nijho.lt/post/parallel-agentic-coding/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/parallel-agentic-coding/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-the-just-use-worktrees-problem"&gt;1. The &amp;ldquo;just use worktrees&amp;rdquo; problem&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-why-parallel-development-matters-for-agentic-coding"&gt;2. Why parallel development matters for agentic coding&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-one-command-to-rule-them-all"&gt;3. One command to rule them all&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-it-knows-your-stack"&gt;4. It knows your stack&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-terminal-magic"&gt;5. Terminal magic&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-spawning-agents-with-prompts"&gt;6. Spawning agents with prompts&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-teaching-claude-to-spawn-agents"&gt;7. Teaching Claude to spawn agents&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-my-actual-workflow"&gt;8. My actual workflow&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-managing-environments"&gt;9. Managing environments&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#10-getting-started"&gt;10. Getting started&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#links"&gt;Links&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-the-just-use-worktrees-problem"&gt;1. The &amp;ldquo;just use worktrees&amp;rdquo; problem &lt;a class="anchor" href="#1-the-just-use-worktrees-problem" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Last week, I was chatting with a friend about my &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;agentic coding workflow&lt;/a&gt;.&#10;I was sharing some of my best practices, and when the topic of parallel development came up, I said:&lt;/p&gt;&#10;&lt;p&gt;&amp;ldquo;Just use git worktrees with quickly installable environments.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;He stared at me blankly.&lt;/p&gt;&#10;&lt;p&gt;And then it hit me: for most developers who just &lt;code&gt;git add&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt; and don&amp;rsquo;t touch their environment setup once it works, this is &lt;em&gt;not&lt;/em&gt; trivial.&#10;What seems obvious to me involves:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Understanding what git worktrees even are&lt;/li&gt;&#10;&lt;li&gt;Knowing the &lt;code&gt;git worktree add&lt;/code&gt; command and its flags&lt;/li&gt;&#10;&lt;li&gt;Remembering to fetch before creating&lt;/li&gt;&#10;&lt;li&gt;Creating a sibling directory structure&lt;/li&gt;&#10;&lt;li&gt;Running your package manager&amp;rsquo;s install command&lt;/li&gt;&#10;&lt;li&gt;Copying over &lt;code&gt;.env&lt;/code&gt; files&lt;/li&gt;&#10;&lt;li&gt;Setting up direnv or manually activating your virtual environment&lt;/li&gt;&#10;&lt;li&gt;Opening a new terminal tab&lt;/li&gt;&#10;&lt;li&gt;Navigating to the worktree&lt;/li&gt;&#10;&lt;li&gt;Finally launching your coding agent&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;That&amp;rsquo;s a lot of friction for something you want to do &lt;em&gt;frequently&lt;/em&gt; when using agentic tools.&lt;/p&gt;&#10;&lt;p&gt;So I built &lt;code&gt;agent-cli dev&lt;/code&gt;.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;code&gt;agent-cli dev new --agent --prompt &amp;quot;Fix the login bug&amp;quot;&lt;/code&gt; creates a complete, isolated development environment in one command.&#10;It creates a git worktree, installs dependencies, copies env files, sets up direnv, and opens your AI coding agent in a new terminal tab with your prompt already loaded—all automatically.&#10;No more manual setup, no more excuses to not work in parallel.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="2-why-parallel-development-matters-for-agentic-coding"&gt;2. Why parallel development matters for agentic coding &lt;a class="anchor" href="#2-why-parallel-development-matters-for-agentic-coding" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;In my &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;previous post on agentic coding&lt;/a&gt;, I described my workflow of running 5-6 Claude Code sessions simultaneously, each working on a different feature.&#10;This is how I can easily work on multiple features in parallel while waiting for an agent to process and generate code.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The usual way:&lt;/strong&gt;&#10;Start feature A → wait for Claude to finish → review → move to feature B → repeat.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The better way:&lt;/strong&gt;&#10;Start feature A in tab 1 → switch to tab 2, start feature B while A is working → switch to tab 3, start feature C → circle back to tab 1, review what Claude did → give feedback, move to next tab → repeat every 10-15 minutes.&lt;/p&gt;&#10;&lt;p&gt;This parallel approach allows me to go much faster.&#10;But it only works if each tab has its own &lt;strong&gt;completely isolated and working environment&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;That&amp;rsquo;s where &lt;a href="https://www.nijho.lt/post/git-worktree/"&gt;git worktrees&lt;/a&gt; come in.&#10;A worktree gives you a separate working directory for a branch, sharing the same git history but with independent file states.&lt;/p&gt;&#10;&lt;p&gt;The problem is the &lt;em&gt;setup&lt;/em&gt;.&#10;Every time you want to start a new feature:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# The manual way (don&amp;#39;t do this)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git fetch origin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git worktree add ../my-project-worktrees/cool-feature -b cool-feature origin/main&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ../my-project-worktrees/cool-feature&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv sync --all-extras &lt;span class="c1"&gt;# or npm install, or poetry install, or...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp ../.env .env&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Now open a new terminal tab...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Navigate there...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Finally start claude&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After the 100th(?) time doing this manually, I knew I needed to automate it.&lt;/p&gt;&#10;&lt;h2 id="3-one-command-to-rule-them-all"&gt;3. One command to rule them all &lt;a class="anchor" href="#3-one-command-to-rule-them-all" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s what I built:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new --agent&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it.&#10;One command.&#10;Here&amp;rsquo;s what it looks like:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Generated branch name: cool-crane&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Creating worktree &lt;span class="k"&gt;for&lt;/span&gt; branch &lt;span class="s1"&gt;&amp;#39;cool-crane&amp;#39;&lt;/span&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Running: git fetch origin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Running: git worktree add -b cool-crane ~/Work/project-worktrees/cool-crane origin/main&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✓ Created worktree at ~/Work/project-worktrees/cool-crane&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✓ Copied env file&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;: .env.example, .envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Detected Python project with uv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Running: uv sync --all-extras&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Running: direnv allow&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✓ direnv: allowed existing .envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✓ Started claude in new iterm2 tab&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;╭─────────────────────────────────────────────── Success ───────────────────────────────────────────────╮&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Dev environment created: ~/Work/project-worktrees/cool-crane │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Branch: cool-crane │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4 seconds later, I have a new terminal tab with Claude Code already running in a fresh, isolated environment.&#10;Ready to work on my next feature.&lt;/p&gt;&#10;&lt;p&gt;What happens under the hood:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Generates a random branch name&lt;/strong&gt; like &lt;code&gt;clever-fox&lt;/code&gt; (you can just set the name yourself of course)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Creates the git worktree&lt;/strong&gt; in a sibling directory&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Detects the project type&lt;/strong&gt; and runs the appropriate setup (&lt;code&gt;uv sync&lt;/code&gt;, &lt;code&gt;npm install&lt;/code&gt;, etc.)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Copies &lt;code&gt;.env&lt;/code&gt; files&lt;/strong&gt; from the main repo&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sets up direnv&lt;/strong&gt; so the environment activates automatically&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Opens a new terminal tab&lt;/strong&gt; (works with tmux, zellij, iTerm2, and more)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Launches your coding agent&lt;/strong&gt; in that tab&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The Docker-style random names (&lt;code&gt;clever-fox&lt;/code&gt;, &lt;code&gt;happy-bear&lt;/code&gt;, &lt;code&gt;swift-owl&lt;/code&gt;) there just for those too lazy to pick a name.&#10;Just &lt;code&gt;agent-cli dev new --agent&lt;/code&gt; and start coding.&lt;/p&gt;&#10;&lt;h2 id="4-it-knows-your-stack"&gt;4. It knows your stack &lt;a class="anchor" href="#4-it-knows-your-stack" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The command auto-detects your project type:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;If it sees&amp;hellip;&lt;/th&gt;&#10;&lt;th&gt;It runs&amp;hellip;&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;uv.lock&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;uv sync --all-extras&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;pixi.lock&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;pixi install&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;poetry.lock&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;poetry install&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;requirements.yaml&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;unidep install -e .&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;package-lock.json&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;Cargo.toml&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;cargo build&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;go.mod&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;code&gt;go mod download&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;For my projects using &lt;a href="https://github.com/basnijholt/unidep" target="_blank" rel="noopener"&gt;unidep&lt;/a&gt;, it even detects monorepos and adjusts the command accordingly.&lt;/p&gt;&#10;&lt;p&gt;It also generates the right &lt;code&gt;.envrc&lt;/code&gt; for &lt;a href="https://direnv.net/" target="_blank" rel="noopener"&gt;direnv&lt;/a&gt;.&#10;For a Python project with uv, that&amp;rsquo;s &lt;code&gt;source .venv/bin/activate&lt;/code&gt;.&#10;For a conda/unidep project, it&amp;rsquo;s the full micromamba activation.&#10;For Nix projects, it&amp;rsquo;s &lt;code&gt;use flake&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;This means when you &lt;code&gt;cd&lt;/code&gt; into the worktree later, your environment is automatically activated.&#10;No more &lt;code&gt;source .venv/bin/activate&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="5-terminal-magic"&gt;5. Terminal magic &lt;a class="anchor" href="#5-terminal-magic" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The real magic is opening a new terminal tab with the agent already running.&lt;/p&gt;&#10;&lt;p&gt;The command detects which terminal you&amp;rsquo;re in and uses the appropriate API—whether that&amp;rsquo;s iTerm2, Kitty, Warp, or GNOME Terminal.&#10;It even works with terminal multiplexers like &lt;strong&gt;tmux&lt;/strong&gt; and &lt;strong&gt;zellij&lt;/strong&gt; (my current favorite), opening a new window/tab in your existing session.&lt;/p&gt;&#10;&lt;h2 id="6-spawning-agents-with-prompts"&gt;6. Spawning agents with prompts &lt;a class="anchor" href="#6-spawning-agents-with-prompts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;--prompt&lt;/code&gt; option transforms how I spawn parallel agents.&#10;Instead of just opening a blank Claude session, I can give the new agent its task immediately:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new fix-auth-bug --agent --prompt &lt;span class="s2"&gt;&amp;#34;Fix the login validation bug in auth.py. The issue is that empty passwords pass validation.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The agent opens with the prompt already loaded and starts working immediately.&#10;No copy-pasting, no context switching, no &amp;ldquo;let me explain what I need you to do.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;For longer, more detailed prompts (which you should use for complex tasks), there&amp;rsquo;s &lt;code&gt;--prompt-file&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new new-feature --agent --prompt-file .claude/spawn-prompt.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is particularly powerful when you&amp;rsquo;re in a Claude session and discover a feature that needs work but is unrelated to your current task.&#10;Instead of context-switching or noting it for later, you can spawn a new agent right there:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Write a detailed prompt to a file (Claude can do this)&lt;/li&gt;&#10;&lt;li&gt;Run &lt;code&gt;agent-cli dev new unrelated-feature --agent --prompt-file .claude/spawn-prompt.md&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;A new terminal tab opens with a fresh Claude session already working on the task&lt;/li&gt;&#10;&lt;li&gt;Continue with your original work&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The spawned agent works independently in its own branch while you stay focused.&lt;/p&gt;&#10;&lt;h2 id="7-teaching-claude-to-spawn-agents"&gt;7. Teaching Claude to spawn agents &lt;a class="anchor" href="#7-teaching-claude-to-spawn-agents" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s where it gets really interesting: you can teach Claude Code itself how to spawn parallel agents.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev install-skill&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This installs a &lt;a href="https://docs.anthropic.com/en/docs/claude-code/skills" target="_blank" rel="noopener"&gt;Claude Code skill&lt;/a&gt; that teaches Claude how to use &lt;code&gt;agent-cli dev&lt;/code&gt;.&#10;The skill includes detailed examples and prompt templates following Anthropic&amp;rsquo;s &lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview" target="_blank" rel="noopener"&gt;prompt engineering guide&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;With the skill installed, you can say things like:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Work on auth, payments, and notifications in parallel&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;This feature is unrelated to what we&amp;rsquo;re doing—spawn a new agent for it&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Split this refactoring by module and work on them simultaneously&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Claude will write well-structured prompts (using proper XML tags, clear context, explicit requirements) and spawn the agents for you.&#10;Each spawned agent writes a report to &lt;code&gt;.claude/REPORT.md&lt;/code&gt; when done, so you can easily review what happened.&lt;/p&gt;&#10;&lt;p&gt;One of my favorite patterns: I ask Claude to look at the latest 10 open GitHub issues and spawn an agent for each one.&#10;Ten independent parallel environments, set up in seconds, each working on a different issue.&#10;That&amp;rsquo;s the kind of leverage this enables.&lt;/p&gt;&#10;&lt;h2 id="8-my-actual-workflow"&gt;8. My actual workflow &lt;a class="anchor" href="#8-my-actual-workflow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s how I use this in practice.&#10;I&amp;rsquo;m working on &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;agent-cli&lt;/a&gt; itself, and I want to add three features:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tab 1: New RAG feature&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new rag-improvements --agent --prompt &lt;span class="s2"&gt;&amp;#34;Improve RAG chunking strategy for better retrieval accuracy&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tab 2: Fix a bug in the transcribe command&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new fix-transcribe-vad --agent --prompt &lt;span class="s2"&gt;&amp;#34;Fix VAD detection cutting off words at sentence boundaries&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tab 3: Refactor the config system&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new config-refactor --agent --prompt &lt;span class="s2"&gt;&amp;#34;Refactor config.py to use a single Config class with lazy loading&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Three commands, three isolated environments, three Claude Code sessions already working on their tasks.&lt;/p&gt;&#10;&lt;p&gt;I cycle through the tabs every 10-15 minutes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Review what Claude did&lt;/li&gt;&#10;&lt;li&gt;Give voice feedback using my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;transcription workflow&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Move to the next tab&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;When a feature is done, I have Claude open a PR from that branch.&#10;When the PR is merged:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev clean --merged&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This uses the GitHub CLI to check which branches have merged PRs, then removes those worktrees and deletes the branches.&#10;No more zombie worktrees cluttering my disk.&lt;/p&gt;&#10;&lt;h2 id="9-managing-environments"&gt;9. Managing environments &lt;a class="anchor" href="#9-managing-environments" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A few other commands I use regularly:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# List all worktrees&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev list&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Navigate to a worktree&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;agent-cli dev path clever-fox&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove a worktree&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev rm clever-fox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Force removal + delete branch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev rm clever-fox --force --delete-branch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Check what&amp;#39;s available on your system&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev doctor&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;doctor&lt;/code&gt; command is handy for seeing which terminals, editors, and coding agents are installed and detected.&lt;/p&gt;&#10;&lt;h2 id="10-getting-started"&gt;10. Getting started &lt;a class="anchor" href="#10-getting-started" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;agent-cli dev&lt;/code&gt; is part of the &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;agent-cli&lt;/a&gt; package:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# With uv (recommended)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv tool install agent-cli&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then in any git repository:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Check what&amp;#39;s available&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev doctor&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create your first parallel environment with a task&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev new my-feature --agent --prompt &lt;span class="s2"&gt;&amp;#34;Add user profile page with avatar upload&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Or install the skill so Claude can spawn agents for you&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-cli dev install-skill&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Supported coding agents:&lt;/strong&gt; Claude Code, Codex, Gemini, Aider, GitHub Copilot, Continue, OpenCode, and Cursor Agent.&#10;Use &lt;code&gt;--with-agent gemini&lt;/code&gt; to pick a specific one, or set a default in your config.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Supported terminals:&lt;/strong&gt; tmux, zellij, iTerm2, Terminal.app, Kitty, Warp, and GNOME Terminal.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Supported editors:&lt;/strong&gt; Cursor, VS Code, Zed, PyCharm (and other JetBrains IDEs), Neovim, Vim, Emacs, Sublime Text, and nano.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion &lt;a class="anchor" href="#conclusion" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The barrier between &amp;ldquo;I want to work on this feature&amp;rdquo; and &amp;ldquo;I&amp;rsquo;m actually working on it in an isolated environment&amp;rdquo; should be zero.&lt;/p&gt;&#10;&lt;p&gt;Before:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;2-5 minutes of manual setup per feature&lt;/li&gt;&#10;&lt;li&gt;Often skipped because &amp;ldquo;it&amp;rsquo;s not worth it for a small change&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Mental overhead remembering all the steps&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;After:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;One command, few seconds&lt;/li&gt;&#10;&lt;li&gt;No excuse not to work in isolation&lt;/li&gt;&#10;&lt;li&gt;More parallel features, faster iteration&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;If you&amp;rsquo;re using agentic coding tools and not yet working in parallel, you&amp;rsquo;re leaving productivity on the table.&#10;And if the setup friction was stopping you—well, now it&amp;rsquo;s gone.&lt;/p&gt;&#10;&lt;p&gt;Try it out and let me know what you think!&#10;The code is open-source at &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;github.com/basnijholt/agent-cli&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="links"&gt;Links &lt;a class="anchor" href="#links" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;agent-cli on GitHub&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://agent-cli.nijho.lt/commands/dev/" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli dev&lt;/code&gt; documentation&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/skills" target="_blank" rel="noopener"&gt;Claude Code skills&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview" target="_blank" rel="noopener"&gt;Anthropic prompt engineering guide&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/git-worktree/"&gt;My post on git worktrees&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;My post on agentic coding&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zellij.dev/" target="_blank" rel="noopener"&gt;Zellij&lt;/a&gt; / &lt;a href="https://github.com/tmux/tmux" target="_blank" rel="noopener"&gt;tmux&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://direnv.net/" target="_blank" rel="noopener"&gt;direnv&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>SOTA RAG &amp; Memory without the database: Files, Git, and simple folders</title><link>https://www.nijho.lt/post/file-based-rag-memory/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/file-based-rag-memory/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-the-amnesia-problem"&gt;1. The amnesia problem&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-learning-from-failure-ai-journal"&gt;2. Learning from failure: AI Journal&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-how-i-studied-sota-clone-read-re-implement"&gt;3. How I studied SOTA: clone, read, re-implement&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-the-dependency-problem-why-onnx-over-pytorch"&gt;4. The dependency problem: why ONNX over PyTorch&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-rag-just-let-me-grep-it-kind-of"&gt;5. RAG: just let me grep it (kind of)&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-architecture-openai-compatibility"&gt;The architecture: OpenAI compatibility&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#two-stage-retrieval-the-sota-approach"&gt;Two-stage retrieval: the SOTA approach&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-memory-files-over-databases"&gt;6. Memory: files over databases&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#git-integration-versioning-memory-"&gt;Git integration: versioning memory 🕰️&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-reconciliation-loop"&gt;The reconciliation loop&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-tiny-detail-that-broke-everything"&gt;The tiny detail that broke everything&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-why-building-this-was-necessary"&gt;7. Why building this was necessary&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#privacy"&gt;Privacy&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#integration"&gt;Integration&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#dependencies"&gt;Dependencies&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-try-it-yourself"&gt;8. Try it yourself&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#try-memory"&gt;Try Memory&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#try-rag"&gt;Try RAG&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-what-i-learned"&gt;9. What I learned&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-the-amnesia-problem"&gt;1. The amnesia problem &lt;a class="anchor" href="#1-the-amnesia-problem" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve read my posts on &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;agentic coding&lt;/a&gt; or my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;local AI journey&lt;/a&gt;, you know I am all-in on using AI to control my computer and write software.&#10;But one critical piece was missing: &lt;strong&gt;Context&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;LLMs are powerful but stateless.&#10;Every time I start a new chat, the model forgets who I am, what I&amp;rsquo;m working on, and that I prefer &lt;a href="https://www.nijho.lt/post/functional-python/"&gt;functional Python code&lt;/a&gt; over object-oriented styles.&#10;Worse, it also forgets the thing I just told it five minutes ago in another window.&lt;/p&gt;&#10;&lt;p&gt;The standard solution to this is &lt;a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation" target="_blank" rel="noopener"&gt;RAG (Retrieval-Augmented Generation)&lt;/a&gt; and &lt;a href="https://arxiv.org/abs/2310.08560" target="_blank" rel="noopener"&gt;Memory&lt;/a&gt;.&#10;But when I looked at the available tools, I hit a wall.&lt;/p&gt;&#10;&lt;p&gt;Most solutions fell into two buckets:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;SaaS / Web UIs:&lt;/strong&gt; Upload your files to a cloud service or use a specific web chat interface that locks you in.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Developer Libraries:&lt;/strong&gt; &amp;ldquo;Just use LangChain/LlamaIndex!&amp;rdquo; they say. Great, now I have to write a Python script every time I want to ask a question about a PDF?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;I didn&amp;rsquo;t want a library. I didn&amp;rsquo;t want a web UI.&#10;&lt;strong&gt;I wanted a folder.&lt;/strong&gt;&#10;I wanted to drop a file into &lt;code&gt;~/my-docs&lt;/code&gt;, and have my AI instantly know about it.&#10;And I wanted my AI&amp;rsquo;s &amp;ldquo;memory&amp;rdquo; to be a file I can edit, not a hidden vector in a database I can&amp;rsquo;t inspect.&lt;/p&gt;&#10;&lt;p&gt;So I decided to build my own file-based solution.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I built &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; features that combine two ideas:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;File-based storage:&lt;/strong&gt; Documents in a folder, memories as Markdown files with Git versioning.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;OpenAI-compatible proxy:&lt;/strong&gt; Works with &lt;em&gt;any&lt;/em&gt; OpenAI-compatible tool—Cursor, Cline, Open WebUI, LibreChat, Lobe Chat, your terminal—without lock-in.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Tools like Open WebUI have built-in RAG, but that forces you to use only Open WebUI.&#10;My proxy means I can switch tools whenever I want, and they all share the same memory and document index.&lt;/p&gt;&#10;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="2-learning-from-failure-ai-journal"&gt;2. Learning from failure: AI Journal &lt;a class="anchor" href="#2-learning-from-failure-ai-journal" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t my first attempt at building a memory system.&lt;/p&gt;&#10;&lt;p&gt;A few months ago, I built &lt;a href="https://github.com/basnijholt/aijournal" target="_blank" rel="noopener"&gt;&lt;strong&gt;AI Journal&lt;/strong&gt;&lt;/a&gt;—an ambitious local-first journaling app where an AI would read your entries and build a &amp;ldquo;living self-model&amp;rdquo; of who you are.&#10;It had sophisticated features: a structured &amp;ldquo;persona core,&amp;rdquo; typed &amp;ldquo;claim atoms&amp;rdquo; with evidence links, four organizational layers (L1→L4), recency-aware scoring with decay functions, and Git-based time travel to &amp;ldquo;ask questions of your younger self.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The architecture seemed solid.&#10;The problem was simpler: &lt;strong&gt;local models aren&amp;rsquo;t good enough yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I designed the whole thing to run entirely on Ollama with my dual RTX 3090s.&#10;But even with a 48GB of VRAM, the models couldn&amp;rsquo;t reliably extract structured claims, handle the multi-step reconciliation, or maintain coherence across long conversations.&#10;Whether the design was right, I still don&amp;rsquo;t know—but the execution definitely hit the wall of current local LLM capabilities.&lt;/p&gt;&#10;&lt;p&gt;The lesson: I tried to build the entire system at once without validating the core concepts and individual ideas first.&#10;This time, I took a different approach: &lt;strong&gt;tackle it problem by problem.&lt;/strong&gt;&#10;Instead of designing a complete system upfront, I would validate each piece—chunking, retrieval, re-ranking, memory reconciliation—before combining them.&#10;The experience and UX would be my own, but the algorithms would be adapted from established projects.&lt;/p&gt;&#10;&lt;h2 id="3-how-i-studied-sota-clone-read-re-implement"&gt;3. How I studied SOTA: clone, read, re-implement &lt;a class="anchor" href="#3-how-i-studied-sota-clone-read-re-implement" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My approach was more methodical this time.&#10;I cloned five major frameworks into the same workspace as &lt;code&gt;agent-cli&lt;/code&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/run-llama/llama_index" target="_blank" rel="noopener"&gt;LlamaIndex&lt;/a&gt;&lt;/strong&gt;: The OG RAG framework&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/langchain-ai/langchain" target="_blank" rel="noopener"&gt;LangChain&lt;/a&gt;&lt;/strong&gt;: The kitchen-sink approach&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/letta-ai/letta" target="_blank" rel="noopener"&gt;Letta&lt;/a&gt;&lt;/strong&gt; (formerly MemGPT): Stateful agents with long-term memory&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/mem0ai/mem0" target="_blank" rel="noopener"&gt;Mem0&lt;/a&gt;&lt;/strong&gt;: Focused specifically on memory extraction&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/pydantic/pydantic-ai" target="_blank" rel="noopener"&gt;PydanticAI&lt;/a&gt;&lt;/strong&gt;: Clean, typed agent framework&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I didn&amp;rsquo;t read through all this code myself—that would take months.&#10;Instead, I used AI coding agents to search the codebases and write summaries of the technical implementation details:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Gemini CLI&lt;/strong&gt; (Gemini 3.0 Pro)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; (Opus 4.5)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Codex CLI&lt;/strong&gt; (GPT-5.1-Codex-Max)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I fed those summaries into &lt;strong&gt;ChatGPT 5 Pro&lt;/strong&gt; together with my high level plan of what I wanted to create, and it created an implementation plan.&#10;Then I took that plan back to the coding agents for implementation.&#10;I personally found Opus 4.5 the best coding model, but GPT‑5.1 Codex Max was the best at reviewing the code and actually identifying critical bugs.&lt;/p&gt;&#10;&lt;p&gt;For validation, I used &lt;a href="https://github.com/basnijholt/clip-files" target="_blank" rel="noopener"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt; to copy the agent-cli source code plus the architecture documents (like &lt;a href="https://github.com/basnijholt/agent-cli/blob/main/docs/architecture/memory.md" target="_blank" rel="noopener"&gt;memory.md&lt;/a&gt; and &lt;a href="https://github.com/basnijholt/agent-cli/blob/main/docs/architecture/rag.md" target="_blank" rel="noopener"&gt;rag.md&lt;/a&gt;) into ChatGPT 5 Pro to validate the approach.&lt;/p&gt;&#10;&lt;p&gt;The AI did the searching and implementing; I did the understanding and decision-making.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;The key insight:&lt;/strong&gt; Existing frameworks are incredibly over-engineered for my use case, but the &lt;em&gt;core algorithms&lt;/em&gt; are gold.&#10;My job was to extract the essence and re-implement it cleanly.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="4-the-dependency-problem-why-onnx-over-pytorch"&gt;4. The dependency problem: why ONNX over PyTorch &lt;a class="anchor" href="#4-the-dependency-problem-why-onnx-over-pytorch" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;One thing became immediately clear when going through these frameworks: &lt;strong&gt;they&amp;rsquo;re massive&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Installing LlamaIndex with all its dependencies pulls in PyTorch.&#10;PyTorch alone is &lt;strong&gt;2-3GB&lt;/strong&gt;.&#10;Add transformers, sentence-transformers, and the kitchen sink, and you&amp;rsquo;re looking at an &lt;strong&gt;8GB+ environment&lt;/strong&gt; just to ask questions about some PDFs.&lt;/p&gt;&#10;&lt;p&gt;This felt excessive for a CLI tool.&lt;/p&gt;&#10;&lt;p&gt;One of my core design goals was &lt;strong&gt;minimal dependencies&lt;/strong&gt;.&#10;I wanted &lt;code&gt;agent-cli&lt;/code&gt; to install in seconds, not minutes.&#10;I wanted it to work on my Mac, my NixOS server, and my friend&amp;rsquo;s laptop without downloading half the internet.&lt;/p&gt;&#10;&lt;p&gt;The solution: &lt;strong&gt;ONNX Runtime&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;ONNX Runtime is ~200MB and runs inference on basically anything—CPU, CUDA, even Apple Silicon.&#10;For embeddings, I use &lt;a href="https://developers.googleblog.com/introducing-embeddinggemma/" target="_blank" rel="noopener"&gt;&lt;code&gt;embeddinggemma&lt;/code&gt;&lt;/a&gt; running locally via &lt;a href="https://www.nijho.lt/post/llama-nixos/"&gt;llama.cpp&lt;/a&gt;.&#10;For re-ranking, I use a cross-encoder exported to ONNX (&lt;code&gt;Xenova/ms-marco-MiniLM-L-6-v2&lt;/code&gt;).&lt;/p&gt;&#10;&lt;p&gt;The result: &lt;code&gt;pip install agent-cli[rag]&lt;/code&gt; takes about 30 seconds and adds ~300MB.&#10;The key insight: embeddings and re-ranking are cheap operations.&#10;You don&amp;rsquo;t need a GPU for them—CPU is perfectly fine.&#10;PyTorch with CUDA support can easily reach 2-3GB+; ONNX Runtime is ~200MB and runs anywhere.&#10;Since I&amp;rsquo;m not training models, just running inference on small encoders, ONNX is the obvious choice.&lt;/p&gt;&#10;&lt;h2 id="5-rag-just-let-me-grep-it-kind-of"&gt;5. RAG: just let me grep it (kind of) &lt;a class="anchor" href="#5-rag-just-let-me-grep-it-kind-of" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My requirement for RAG was simple: &lt;strong&gt;Files on disk are the source of truth.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I didn&amp;rsquo;t want to manage an ingestion pipeline or trigger APIs.&#10;I implemented a &lt;a href="https://github.com/basnijholt/agent-cli/blob/main/docs/architecture/rag.md" target="_blank" rel="noopener"&gt;RAG proxy&lt;/a&gt; that uses OS-level file watchers (&lt;code&gt;watchfiles&lt;/code&gt;).&#10;Here is the workflow:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;I drop a PDF, Markdown, or Python file into &lt;code&gt;~/rag_docs&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;The system detects the &lt;code&gt;Create&lt;/code&gt; event.&lt;/li&gt;&#10;&lt;li&gt;It chunks the text and embeds it into a local ChromaDB instance.&lt;/li&gt;&#10;&lt;li&gt;It&amp;rsquo;s immediately searchable.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;When moving or deleting files, the system updates the index accordingly.&lt;/p&gt;&#10;&lt;h3 id="the-architecture-openai-compatibility"&gt;The architecture: OpenAI compatibility &lt;a class="anchor" href="#the-architecture-openai-compatibility" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The &amp;ldquo;secret sauce&amp;rdquo; isn&amp;rsquo;t the retrieval itself; it&amp;rsquo;s how I expose it.&#10;Instead of building a custom chat app, I built an &lt;strong&gt;OpenAI-compatible proxy&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;div class="mermaid"&gt;flowchart LR&#10; Client["Client&lt;br/&gt;(Cursor, Open WebUI)"] --&gt; Retrieve&#10;&#10; subgraph Proxy ["RAG Proxy"]&#10; direction TB&#10; Retrieve --&gt; Augment["Augment &amp; Forward"]&#10; Chroma[("ChromaDB")] -.-&gt; Retrieve&#10; Watcher["File Watcher"] --&gt; Chroma&#10; end&#10;&#10; Augment --&gt; Upstream["Upstream LLM"]&lt;/div&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Point any OpenAI-compatible tool at your local proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8000/v1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it. Any tool that supports custom OpenAI endpoints—Cursor, Cline, Open WebUI, LibreChat—instantly gains the ability to &amp;ldquo;read&amp;rdquo; my document folder.&lt;/p&gt;&#10;&lt;h3 id="two-stage-retrieval-the-sota-approach"&gt;Two-stage retrieval: the SOTA approach &lt;a class="anchor" href="#two-stage-retrieval-the-sota-approach" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I looked at LlamaIndex here.&#10;Standard &amp;ldquo;semantic search&amp;rdquo; (using just embeddings/bi-encoders) is often disappointing.&#10;It finds text that &lt;em&gt;looks&lt;/em&gt; similar but isn&amp;rsquo;t actually relevant.&lt;/p&gt;&#10;&lt;p&gt;A common pattern in modern RAG systems is &lt;strong&gt;Two-Stage Retrieval&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Fast Stage:&lt;/strong&gt; Retrieve 3x candidates using standard embeddings (&lt;code&gt;text-embedding-3-small&lt;/code&gt; or local models like &lt;a href="https://developers.googleblog.com/introducing-embeddinggemma/" target="_blank" rel="noopener"&gt;&lt;code&gt;embeddinggemma&lt;/code&gt;&lt;/a&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Smart Stage:&lt;/strong&gt; Use a &lt;strong&gt;Cross-Encoder&lt;/strong&gt; to re-rank the results.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;A cross-encoder looks at the query and the document &lt;em&gt;together&lt;/em&gt; and outputs a relevance score.&#10;It&amp;rsquo;s computationally heavier, but since I&amp;rsquo;m running this locally on my RTX 3090 (or even CPU via ONNX), the 50ms latency penalty is worth it for results that are actually useful.&lt;/p&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t a new idea, but implementing it cleanly with ONNX avoided the huge dependency tax.&lt;/p&gt;&#10;&lt;h2 id="6-memory-files-over-databases"&gt;6. Memory: files over databases &lt;a class="anchor" href="#6-memory-files-over-databases" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This is where my approach diverges most from standard tools like Mem0.&#10;Most memory systems treat memories as database rows.&#10;If the AI remembers &amp;ldquo;User likes pizza,&amp;rdquo; that&amp;rsquo;s a vector in a DB.&#10;If it hallucinates and records &amp;ldquo;User hates pizza,&amp;rdquo; good luck fixing it.&#10;You need to write a script to query the DB and delete the row.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;I prefer data I can inspect.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;My memory system stores every fact as a &lt;strong&gt;Markdown file&lt;/strong&gt; with YAML front matter.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;550e8400-e29b-41d4-a716-446655440000&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;memory&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2025-12-15T10:00:00Z&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;conversation_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The user prefers using &amp;#39;uv&amp;#39; for Python package management.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="git-integration-versioning-memory-"&gt;Git integration: versioning memory 🕰️ &lt;a class="anchor" href="#git-integration-versioning-memory-" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Because memories are just files, I added a feature that I haven&amp;rsquo;t seen anywhere else: &lt;strong&gt;Automatic Git Versioning&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Every time the AI learns a new fact, updates an old one, or deletes a contradiction, the system automatically commits the change to a local git repository.&lt;/p&gt;&#10;&lt;p&gt;This leads to incredible capabilities:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Inspectability:&lt;/strong&gt; I can &lt;code&gt;git log&lt;/code&gt; and see exactly &lt;em&gt;when&lt;/em&gt; the AI learned something.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Correction:&lt;/strong&gt; If the AI learns something wrong, I open the markdown file in VS Code, edit it, and save.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reversion:&lt;/strong&gt; Agent hallucinated wildly yesterday? &lt;code&gt;git reset --hard HEAD~1&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="the-reconciliation-loop"&gt;The reconciliation loop &lt;a class="anchor" href="#the-reconciliation-loop" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The logic for storing memories isn&amp;rsquo;t just &amp;ldquo;append to file.&amp;rdquo;&#10;Digging into Mem0 (and Letta) showed me that memory systems need active &lt;strong&gt;reconciliation&lt;/strong&gt;.&#10;When I say &amp;ldquo;Actually, I switched to nix instead of uv,&amp;rdquo; the system:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Retrieves&lt;/strong&gt; existing memories about package managers.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Decides&lt;/strong&gt; (using a lightweight LLM) whether to &lt;code&gt;ADD&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, or &lt;code&gt;DELETE&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Executes&lt;/strong&gt; the file operation (moving the old fact to a &lt;code&gt;deleted/&lt;/code&gt; folder for audit trails).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This keeps the memory bank clean and contradictory-free, unlike simple vector stores that just accumulate conflicting junk over time.&lt;/p&gt;&#10;&lt;h3 id="the-tiny-detail-that-broke-everything"&gt;The tiny detail that broke everything &lt;a class="anchor" href="#the-tiny-detail-that-broke-everything" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;After implementing the memory system—mostly modeled after Mem0—I noticed it didn&amp;rsquo;t work as well.&#10;After a lot of debugging, I found a tiny difference: I was asking the model for structured data via a tool call, whereas Mem0 uses freeform JSON that the LLM returns directly.&lt;/p&gt;&#10;&lt;p&gt;Since I use PydanticAI, fixing this was a one-line change:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model_cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;UPDATE_MEMORY_PROMPT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;output_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;MemoryDecision&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;output_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PromptedOutput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;MemoryDecision&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="c1"&gt;# JSON mode instead of tool calls&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;retries&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is exactly why reading the source code matters—not just the algorithms, but the tiny details that make them work.&lt;/p&gt;&#10;&lt;h2 id="7-why-building-this-was-necessary"&gt;7. Why building this was necessary &lt;a class="anchor" href="#7-why-building-this-was-necessary" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You might ask: &amp;ldquo;Bas, why write thousands of lines of code for this? Why not just use ChatGPT&amp;rsquo;s memory or install LangChain?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Three reasons: &lt;strong&gt;Privacy&lt;/strong&gt;, &lt;strong&gt;Integration&lt;/strong&gt;, and &lt;strong&gt;Dependencies&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h3 id="privacy"&gt;Privacy &lt;a class="anchor" href="#privacy" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I want to feed my AI my financial records, my health data, and my private journals.&#10;I am not comfortable sending that to OpenAI&amp;rsquo;s long-term storage or some VC-backed startup&amp;rsquo;s vector cloud.&#10;With &lt;code&gt;agent-cli&lt;/code&gt;, the vectors live in &lt;code&gt;~/.cache/agent-cli/chroma&lt;/code&gt;, the files live in &lt;code&gt;~/documents&lt;/code&gt;, and the only thing leaving my machine is the specific context needed for a specific query (if I use a cloud model) or nothing at all (if I use Ollama/&lt;a href="https://www.nijho.lt/post/llama-nixos/"&gt;llama.cpp&lt;/a&gt;).&lt;/p&gt;&#10;&lt;h3 id="integration"&gt;Integration &lt;a class="anchor" href="#integration" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;By building this as an API proxy, I solved the &amp;ldquo;fragmented tools&amp;rdquo; problem.&#10;Any tool that supports custom OpenAI-compatible endpoints works out of the box:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;agent-cli chat&lt;/code&gt;&lt;/strong&gt; in the terminal&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt; or &lt;strong&gt;Cline&lt;/strong&gt; for agentic coding&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://openwebui.com/" target="_blank" rel="noopener"&gt;Open WebUI&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://www.librechat.ai/" target="_blank" rel="noopener"&gt;LibreChat&lt;/a&gt;&lt;/strong&gt;, or &lt;strong&gt;&lt;a href="https://lobechat.com/" target="_blank" rel="noopener"&gt;Lobe Chat&lt;/a&gt;&lt;/strong&gt; in the browser&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Because my system speaks &amp;ldquo;OpenAI,&amp;rdquo; all of these tools share the &lt;em&gt;same&lt;/em&gt; memory and the &lt;em&gt;same&lt;/em&gt; document index.&#10;If I tell the terminal agent &amp;ldquo;I&amp;rsquo;m working on Project X,&amp;rdquo; and then switch to Cursor, Cursor knows about Project X.&#10;I can try a new chat UI tomorrow without losing anything—just point it to &lt;code&gt;localhost:8000&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h3 id="dependencies"&gt;Dependencies &lt;a class="anchor" href="#dependencies" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;To me, it just doesn&amp;rsquo;t feel right that asking questions about a PDF requires downloading 8GB of PyTorch.&#10;By choosing ONNX Runtime over the PyTorch ecosystem, I kept the entire install lightweight and fast.&#10;This matters when you want to run the system on a cheap VPS or your friend&amp;rsquo;s laptop.&lt;/p&gt;&#10;&lt;h2 id="8-try-it-yourself"&gt;8. Try it yourself &lt;a class="anchor" href="#8-try-it-yourself" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The entire system is open-source and available in &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="try-memory"&gt;Try Memory &lt;a class="anchor" href="#try-memory" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Get an LLM that remembers you using &lt;a href="https://ollama.com" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. Pull models and start proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama pull embeddinggemma:300m &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ollama pull gpt-oss:20b&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx -p 3.13 --from &lt;span class="s2"&gt;&amp;#34;agent-cli[memory]&amp;#34;&lt;/span&gt; agent-cli memory proxy &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --memory-path ./my-memories &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --openai-base-url http://localhost:11434/v1 &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --embedding-model embeddinggemma:300m&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. Chat from the terminal (env vars point to proxy)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8100/v1 &lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dummy&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tell it something about yourself&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx openai api chat.completions.create -m gpt-oss:20b -g user &lt;span class="s2"&gt;&amp;#34;My name is Alice and I love hiking&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Later, ask if it remembers&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx openai api chat.completions.create -m gpt-oss:20b -g user &lt;span class="s2"&gt;&amp;#34;What&amp;#39;s my name?&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="try-rag"&gt;Try RAG &lt;a class="anchor" href="#try-rag" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Chat with your documents.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. Start the RAG proxy (runs in foreground)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx -p 3.13 --from &lt;span class="s2"&gt;&amp;#34;agent-cli[rag]&amp;#34;&lt;/span&gt; agent-cli rag-proxy &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --docs-folder ./my-docs &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --openai-base-url http://localhost:11434/v1 &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --embedding-model embeddinggemma:300m&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. Chat with your docs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8000/v1 &lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dummy &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; uvx openai api chat.completions.create &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -m gpt-oss:20b &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -g user &lt;span class="s2"&gt;&amp;#34;What does my documentation say about X?&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="9-what-i-learned"&gt;9. What I learned &lt;a class="anchor" href="#9-what-i-learned" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This journey reinforced a few beliefs:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Validate components first.&lt;/strong&gt; AI Journal failed not because the ideas were wrong, but because I tried to build a complete system before validating individual components. This time I tackled problems one at a time—chunking, retrieval, re-ranking, memory reconciliation—and only combined them once each piece worked.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Study implementations, not just papers.&lt;/strong&gt; Reading about two-stage retrieval is one thing. Reading how LlamaIndex actually implements it—the edge cases, the defaults, the performance tradeoffs—is far more valuable. Clone the repos. Read (or make AI read) the code.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Dependencies matter.&lt;/strong&gt; A 30-second install versus a 10-minute download changes whether someone actually tries your tool. I am happy with the ONNX Runtime over PyTorch choice.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Files are the ultimate API.&lt;/strong&gt; By stripping away the complex databases and proprietary interfaces, I ended up with a system that is robust, version-controllable, and surprisingly simple to reason about.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Use the best model for each job.&lt;/strong&gt; I used 4 different AI models during development, each with different strengths. Gemini 3.0 Pro, Opus 4.5, GPT-5.1-Codex Max. I used all of them during the implementation phase, but each one has its own strengths. Fore example, Opus 4.5 was the best coding model, but GPT-5.1 Codex Max was the best at reviewing the code and actually identifying critical bugs (use the built-in &lt;code&gt;/review&lt;/code&gt; feature).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item><item><title>Wyoming MLX Whisper</title><link>https://www.nijho.lt/project/wyoming-mlx-whisper/</link><pubDate>Fri, 05 Dec 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/wyoming-mlx-whisper/</guid><description/></item><item><title>Switching from Ollama to llama-swap + llama.cpp on NixOS: the power user's choice 🦙</title><link>https://www.nijho.lt/post/llama-nixos/</link><pubDate>Sat, 29 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/llama-nixos/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-draft-i-never-published"&gt;The draft I never published&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-original-trigger-broken-models"&gt;The original trigger: broken models&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-catalyst-dual-gpus-and-control"&gt;The catalyst: dual GPUs and control&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#api-compatibility-and-the-switch"&gt;API compatibility and the &amp;ldquo;switch&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#my-nixos-setup"&gt;My NixOS setup&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#compiler-flags-matter"&gt;Compiler flags matter&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-i-gained-and-lost"&gt;What I gained (and lost)&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#advantages-of-llama-swap--llamacpp"&gt;Advantages of llama-swap + llama.cpp&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-trade-off"&gt;The trade-off&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#conclusion-maturing-as-an-ai-hobbyist"&gt;Conclusion: maturing as an AI hobbyist&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="the-draft-i-never-published"&gt;The draft I never published &lt;a class="anchor" href="#the-draft-i-never-published" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I started writing this blog post four months ago.&#10;Back then, I was frustrated because a specific model I wanted to try—&lt;code&gt;gpt-oss-20b&lt;/code&gt;—was completely broken in &lt;a href="https://ollama.com/" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt;.&#10;I went down the rabbit hole, set up &lt;a href="https://github.com/mostlygeek/llama-swap" target="_blank" rel="noopener"&gt;&lt;code&gt;llama-swap&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/ggml-org/llama.cpp" target="_blank" rel="noopener"&gt;&lt;code&gt;llama.cpp&lt;/code&gt;&lt;/a&gt;, got the model working perfectly, wrote half this post&amp;hellip; and then I stopped.&lt;/p&gt;&#10;&lt;p&gt;Why? &lt;strong&gt;Laziness.&lt;/strong&gt;&#10;Once the novelty of that specific model wore off, I drifted back to Ollama.&#10;The real convenience of Ollama was never the &lt;code&gt;ollama run&lt;/code&gt; command—I almost exclusively interact with my models via the API using my own tools like &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;agent-cli&lt;/a&gt;.&#10;The convenience was &lt;code&gt;ollama pull&lt;/code&gt;.&#10;Being able to grab a model with one command and have it &amp;ldquo;just work&amp;rdquo; was great.&lt;/p&gt;&#10;&lt;p&gt;But as a &lt;a href="https://www.nijho.lt/post/proxmox-to-nixos/"&gt;NixOS&lt;/a&gt; user, this imperative convenience is actually a flaw.&#10;I want my system to be declarative.&#10;I want my model configuration committed to git, not hiding in a local database.&#10;So I let convenience win for a while, but it always felt wrong.&lt;/p&gt;&#10;&lt;p&gt;But last month, that changed.&#10;I upgraded my hobbyist AI rig by adding a &lt;strong&gt;second RTX 3090&lt;/strong&gt;.&#10;Suddenly, I had 48GB of VRAM and a whole new set of problems—and possibilities.&#10;I wanted to run massive models (like &lt;code&gt;gpt-oss-120b&lt;/code&gt; or &lt;code&gt;Qwen-3-VL-32B&lt;/code&gt; with a huge context window).&#10;I needed to balance layers between two GPUs.&#10;I needed to spill specific parts of the model into system RAM without crashing.&lt;/p&gt;&#10;&lt;p&gt;When you start pushing hardware to its limits, &amp;ldquo;magic&amp;rdquo; abstractions like Ollama stop being helpful and start getting in the way.&#10;I realized that &lt;code&gt;llama.cpp&lt;/code&gt; isn&amp;rsquo;t just a backend; it is &lt;em&gt;the&lt;/em&gt; place where development happens.&#10;If you want to use split-mode inference, granular CPU offloading, or the latest quantization tricks immediately, there is no alternative.&lt;/p&gt;&#10;&lt;p&gt;So, I dusted off this draft, updated my Nix configuration, and I&amp;rsquo;ve been running &lt;code&gt;llama-swap&lt;/code&gt; full-time for a month.&#10;I&amp;rsquo;m finally ready to vouch for it.&lt;/p&gt;&#10;&lt;h2 id="the-original-trigger-broken-models"&gt;The original trigger: broken models &lt;a class="anchor" href="#the-original-trigger-broken-models" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Four months ago, my frustration stemmed from compatibility.&#10;I was trying to run &lt;code&gt;gpt-oss-20b&lt;/code&gt;, a model that required specific chat templates and GGUF handling that &lt;a href="https://ollama.com/" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt; simply broke.&lt;/p&gt;&#10;&lt;p&gt;The maintainer of &lt;a href="https://github.com/ggml-org/llama.cpp" target="_blank" rel="noopener"&gt;&lt;code&gt;llama.cpp&lt;/code&gt;&lt;/a&gt;, Georgi Gerganov, &lt;a href="https://github.com/ollama/ollama/issues/11714#issuecomment-3172893576" target="_blank" rel="noopener"&gt;explained it perfectly&lt;/a&gt; regarding the gpt-oss debacle:&#10;Ollama forked the ggml inference engine to rush out &amp;ldquo;day-1 support&amp;rdquo; for gpt-oss without coordinating with upstream.&#10;The result? Their implementation was not only incompatible with standard GGUF files but also significantly slower and unoptimized.&lt;/p&gt;&#10;&lt;p&gt;Benchmarks at the time showed Ollama had significant performance overhead—often 20-30% slower inference speeds compared to running &lt;code&gt;llama.cpp&lt;/code&gt; directly.&lt;/p&gt;&#10;&lt;p&gt;This pattern means Ollama will always be behind &lt;code&gt;llama.cpp&lt;/code&gt;.&#10;Meanwhile, I&amp;rsquo;ve had &lt;a href="https://github.com/ollama/ollama/pull/11249" target="_blank" rel="noopener"&gt;a pull request&lt;/a&gt; sitting unreviewed for over a month that fixes their broken OpenAI API.&#10;Compare that to &lt;code&gt;llama.cpp&lt;/code&gt;: I submitted &lt;a href="https://github.com/ggml-org/llama.cpp/pull/15295" target="_blank" rel="noopener"&gt;a PR there&lt;/a&gt; and it was merged in less than an hour.&#10;If you want the latest features &lt;em&gt;now&lt;/em&gt; (and a responsive community), you go to the source.&lt;/p&gt;&#10;&lt;h2 id="the-catalyst-dual-gpus-and-control"&gt;The catalyst: dual GPUs and control &lt;a class="anchor" href="#the-catalyst-dual-gpus-and-control" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With a single GPU, you usually either fit the model or you don&amp;rsquo;t.&#10;With two GPUs (and 64GB of system RAM), things get interesting.&#10;You enter the territory of &lt;strong&gt;heterogeneous inference&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Ollama tries to handle splitting automatically, but I found myself fighting it.&#10;I wanted to say: &lt;em&gt;&amp;ldquo;Put 40 layers on GPU 0, 40 layers on GPU 1, and keep the KV cache here.&amp;rdquo;&lt;/em&gt;&#10;Or: &lt;em&gt;&amp;ldquo;This model is slightly too big for VRAM; I want to offload exactly the last 10% to system RAM.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;With &lt;code&gt;llama.cpp&lt;/code&gt; directly, this is just a command line flag.&#10;With &lt;code&gt;llama-swap&lt;/code&gt;, I can define this behavior per-model in a config file:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;gpt-oss:120b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; ${pkgs.llama-cpp}/bin/llama-server&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; -hf ggml-org/gpt-oss-120b-GGUF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --port ${PORT}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --ctx-size 65536&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --split-mode layer&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --tensor-split 3,1.3 # Tuned balance between my GPUs&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --n-cpu-moe 15 # Offload 15 experts to CPU RAM&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --threads 8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --chat-template-kwargs &amp;#39;{&amp;#34;reasoning_effort&amp;#34;: &amp;#34;high&amp;#34;}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This level of granularity turned my rig from a &amp;ldquo;black box&amp;rdquo; into a tunable instrument.&#10;The &lt;code&gt;--tensor-split&lt;/code&gt; and &lt;code&gt;--n-cpu-moe&lt;/code&gt; flags allow me to run a 120B parameter model that technically shouldn&amp;rsquo;t fit, by carefully balancing the load across both GPUs and system RAM.&lt;/p&gt;&#10;&lt;h2 id="api-compatibility-and-the-switch"&gt;API compatibility and the &amp;ldquo;switch&amp;rdquo; &lt;a class="anchor" href="#api-compatibility-and-the-switch" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;One of the reasons I hesitated to switch was the fear of breaking my existing workflows.&#10;I use &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;agent-cli&lt;/a&gt; and other custom Python scripts daily.&#10;But it turned out to be a non-issue.&#10;Both Ollama and &lt;code&gt;llama-swap&lt;/code&gt; (wrapping &lt;code&gt;llama-server&lt;/code&gt;) expose an OpenAI-compatible API.&lt;/p&gt;&#10;&lt;p&gt;Once I adopted the pattern of setting a custom &lt;code&gt;OPENAI_BASE_URL&lt;/code&gt; in my projects, the backend became irrelevant.&#10;My tools don&amp;rsquo;t care if they are talking to &lt;code&gt;api.openai.com&lt;/code&gt;, a local Ollama instance, or &lt;code&gt;llama-swap&lt;/code&gt;.&#10;They just send JSON and get JSON back.&#10;This standardization meant I could swap the entire inference engine underneath my applications without changing a single line of their code.&lt;/p&gt;&#10;&lt;h2 id="my-nixos-setup"&gt;My NixOS setup &lt;a class="anchor" href="#my-nixos-setup" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Since I manage my entire system with Nix, setting up &lt;code&gt;llama-swap&lt;/code&gt; and pinning &lt;code&gt;llama-cpp&lt;/code&gt; to the absolute bleeding edge was surprisingly elegant.&#10;I even wrote an &lt;a href="https://github.com/basnijholt/dotfiles/blob/51c7af46e62a7d13b4ff497380c8b58c05ed81c8/configs/nixos/scripts/update_overrides.py" target="_blank" rel="noopener"&gt;auto-update script&lt;/a&gt; to ensure I&amp;rsquo;m always on the latest commit.&lt;/p&gt;&#10;&lt;p&gt;This is where my &lt;a href="https://www.nijho.lt/post/nixos-cache/"&gt;NixOS build cache&lt;/a&gt; shines.&#10;Unlike Ollama, which releases every few weeks, &lt;code&gt;llama.cpp&lt;/code&gt; can have multiple releases &lt;em&gt;a day&lt;/em&gt;.&#10;My cache server runs this update script automatically, builds the new binaries, and serves them to my workstation.&#10;I get the absolute latest performance improvements without ever compiling source code locally.&lt;/p&gt;&#10;&lt;h3 id="compiler-flags-matter"&gt;Compiler flags matter &lt;a class="anchor" href="#compiler-flags-matter" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;One critical lesson I learned: default builds matter.&#10;Initially, I was getting a measly &lt;strong&gt;8 tokens/sec&lt;/strong&gt; on &lt;code&gt;gpt-oss:120b&lt;/code&gt;.&#10;It turned out the default &lt;code&gt;llama.cpp&lt;/code&gt; package wasn&amp;rsquo;t enabling BLAS or native CPU optimizations, crippling the layers I offloaded to system RAM.&lt;/p&gt;&#10;&lt;p&gt;By overriding the package to enable &lt;code&gt;blasSupport&lt;/code&gt; and passing &lt;code&gt;-DGGML_NATIVE=ON&lt;/code&gt; (as seen below), performance jumped to &lt;strong&gt;50 tokens/sec&lt;/strong&gt;.&#10;This is another reason why I prefer managing this via Nix: I can enforce these compile-time flags declaratively.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s my complete configuration (see &lt;a href="https://github.com/basnijholt/dotfiles/blob/51c7af46e62a7d13b4ff497380c8b58c05ed81c8/configs/nixos/hosts/pc/package-overrides.nix#L28-L76" target="_blank" rel="noopener"&gt;&lt;code&gt;package-overrides.nix&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/basnijholt/dotfiles/blob/51c7af46e62a7d13b4ff497380c8b58c05ed81c8/configs/nixos/hosts/pc/ai.nix#L360-L380" target="_blank" rel="noopener"&gt;&lt;code&gt;ai.nix&lt;/code&gt;&lt;/a&gt;):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Override llama-cpp to latest version with CUDA support&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;llama-cpp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pkgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;llama-cpp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;override&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cudaSupport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rocmSupport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;metalSupport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Enable BLAS for optimized CPU layer performance (OpenBLAS)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;blasSupport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;overrideAttrs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;oldAttrs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;rec&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;7205&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pkgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchFromGitHub&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;owner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ggml-org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;repo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;llama.cpp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sha256-1CcYbc8RWAPVz8hoxKEmbAgQesC1oGFZ3fhfuU5vmOc=&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;leaveDotGit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;postFetch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; git -C &amp;#34;$out&amp;#34; rev-parse --short HEAD &amp;gt; $out/COMMIT&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; find &amp;#34;$out&amp;#34; -name .git -print0 | xargs -0 rm -rf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Enable native CPU optimizations (AVX, AVX2, etc.)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cmakeFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;oldAttrs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cmakeFlags&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;-DGGML_NATIVE=ON&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Disable Nix&amp;#39;s march=native stripping&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;preConfigure&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; export NIX_ENFORCE_NO_NATIVE=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="n"&gt;oldAttrs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;preConfigure&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s1"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# llama-swap from GitHub releases&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;llama-swap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pkgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runCommand&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;llama-swap&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; mkdir -p $out/bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; tar -xzf &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pkgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchurl&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://github.com/mostlygeek/llama-swap/releases/download/v175/llama-swap_175_linux_amd64.tar.gz&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sha256-zeyVz0ldMxV4HKK+u5TtAozfRI6IJmeBo92IJTgkGrQ=&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s1"&gt; -C $out/bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; chmod +x $out/bin/llama-swap&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configure llama-swap as a systemd service&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;systemd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;llama-swap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;llama-swap - OpenAI compatible proxy with automatic model swapping&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;network.target&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;wantedBy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;multi-user.target&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;serviceConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;simple&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;User&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;basnijholt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Group&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;users&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Point to your declarative config file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ExecStart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="n"&gt;pkgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;llama-swap&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/bin/llama-swap --config /etc/llama-swap/config.yaml --listen 0.0.0.0:9292 --watch-config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Restart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;always&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RestartSec&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Environment for CUDA support&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Environment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;PATH=/run/current-system/sw/bin&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;LD_LIBRARY_PATH=/run/opengl-driver/lib:/run/opengl-driver-32/lib&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="what-i-gained-and-lost"&gt;What I gained (and lost) &lt;a class="anchor" href="#what-i-gained-and-lost" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;h3 id="advantages-of-llama-swap--llamacpp"&gt;Advantages of llama-swap + llama.cpp &lt;a class="anchor" href="#advantages-of-llama-swap--llamacpp" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Heterogeneous compute&lt;/strong&gt;: Perfectly balance loads between GPUs and CPU RAM.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Bleeding edge&lt;/strong&gt;: I use features (like new quantization types) the day they land in &lt;code&gt;llama.cpp&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Zero idle VRAM&lt;/strong&gt;: Models unload completely when not in use.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Transparent operation&lt;/strong&gt;: No hidden prompts or &amp;ldquo;helpful&amp;rdquo; formatting that breaks complex tasks.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-trade-off"&gt;The trade-off &lt;a class="anchor" href="#the-trade-off" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The main trade-off is &amp;ldquo;laziness.&amp;rdquo;&#10;You can&amp;rsquo;t just &lt;code&gt;ollama pull new-model&lt;/code&gt; and have it appear.&#10;You have to find the GGUF on HuggingFace, decide on the quantization (Q4_K_M? Q6_K?), and add 5 lines of YAML to your config.&lt;/p&gt;&#10;&lt;p&gt;But honestly? That&amp;rsquo;s a feature, not a bug.&#10;It forces you to understand &lt;em&gt;what&lt;/em&gt; you are running.&#10;It stops you from running a quantized model that is too stupid for your task just because it was the default.&#10;And for a NixOS user, putting that configuration into code instead of a hidden database is exactly how it should be.&lt;/p&gt;&#10;&lt;h2 id="conclusion-maturing-as-an-ai-hobbyist"&gt;Conclusion: maturing as an AI hobbyist &lt;a class="anchor" href="#conclusion-maturing-as-an-ai-hobbyist" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My switch back to &lt;code&gt;llama-swap&lt;/code&gt; wasn&amp;rsquo;t about fixing a bug; it was about outgrowing a tool.&#10;Ollama is the &amp;ldquo;starter bike&amp;rdquo; of local AI—fantastic for getting rolling.&#10;But when you add a second GPU, start caring about tokens per second, and want to maximize every gigabyte of your 48GB VRAM buffer, you need a manual transmission.&lt;/p&gt;&#10;&lt;p&gt;For anyone else building a hobbyist multi-GPU rig: stop fighting the abstraction.&#10;Go to the source. The control is worth it.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;Check out my &lt;a href="https://github.com/basnijholt/dotfiles/tree/51c7af46e62a7d13b4ff497380c8b58c05ed81c8/configs/nixos" target="_blank" rel="noopener"&gt;NixOS configuration&lt;/a&gt; for the complete setup!&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>Gemini 3 Pro: First Impressions</title><link>https://www.nijho.lt/post/gemini-3-pro-first-impressions/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/gemini-3-pro-first-impressions/</guid><description>&lt;p&gt;I&amp;rsquo;m a huge fan of &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;agentic&lt;/a&gt; &lt;a href="https://www.nijho.lt/post/agentic-mobile-workflow/"&gt;coding&lt;/a&gt;.&#10;I have the maximum subscriptions for both Claude and ChatGPT Pro, and since writing my &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;agentic coding&lt;/a&gt; post, I mostly moved from Claude Code to Codex CLI with GPT-5 for my work that requires more complex reasoning.&#10;Using Claude Code often feels frustrating in comparison now.&lt;/p&gt;&#10;&lt;p&gt;I also frequently pit them against each other, drafting parallel plans with each tool (I&amp;rsquo;ve done this at least 50 times).&#10;The verdict is consistent.&#10;&lt;strong&gt;Claude Code, without exception, says that GPT‑5&amp;rsquo;s solution is superior&lt;/strong&gt;, admitting it is more elegant and robust.&#10;Claude also misses bugs during PR reviews that GPT-5 catches immediately.&lt;/p&gt;&#10;&lt;p&gt;That said, &lt;strong&gt;Claude Code is significantly faster&lt;/strong&gt;, which makes it my go-to for simple refactors.&#10;I also prefer its writing style for conversational answers and documentation.&lt;/p&gt;&#10;&lt;p&gt;But looking at the charts on &lt;strong&gt;&lt;a href="https://artificialanalysis.ai/" target="_blank" rel="noopener"&gt;Artificial Analysis&lt;/a&gt;&lt;/strong&gt;, the new &lt;strong&gt;Gemini 3 Pro&lt;/strong&gt; looks truly impressive.&#10;It&amp;rsquo;s at the top of nearly every benchmark.&#10;I&amp;rsquo;m excited for Gemini to potentially take over some of GPT‑5&amp;rsquo;s workload, so when &lt;strong&gt;Gemini 3 Pro Preview&lt;/strong&gt; came out yesterday, I had to try it.&lt;/p&gt;&#10;&lt;h2 id="the-good-raw-power"&gt;The good: raw power &lt;a class="anchor" href="#the-good-raw-power" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;First off, the model is quite powerful.&#10;Last night, I built a complex new feature for my &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; project in just two hours: a &lt;strong&gt;RAG (Retrieval-Augmented Generation) proxy server&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;This tool acts as a middleware that sits between any OpenAI-compatible client and server (like Ollama or vLLM).&#10;The server watches a specific folder, automatically indexes any PDF, Markdown, or text files into a local ChromaDB vector store, and injects relevant context into your prompts transparently.&#10;You can see the full implementation in &lt;a href="https://github.com/basnijholt/agent-cli/pull/79" target="_blank" rel="noopener"&gt;PR #79&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;It even handles dynamic re-indexing when I drop new files in!&#10;The speed and code quality for this task were genuinely impressive, and it handled the complexity of the RAG integration surprisingly well.&lt;/p&gt;&#10;&lt;h2 id="the-bad-panic-attacks-and-infinite-loops"&gt;The bad: panic attacks and infinite loops &lt;a class="anchor" href="#the-bad-panic-attacks-and-infinite-loops" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;However, the experience wasn&amp;rsquo;t without its &amp;ldquo;personality quirks.&amp;rdquo;&#10;Twice, Gemini got stuck in a loop saying &lt;em&gt;&amp;ldquo;Should I? I should&amp;rdquo;&lt;/em&gt; over and over again.&#10;Or the following also happened:&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/gemini-3-pro-first-impressions/infinite-loop_hu_234c7407851f9273.webp" srcset="https://www.nijho.lt/post/gemini-3-pro-first-impressions/infinite-loop_hu_8f9dd754d34e9bda.webp 272w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/infinite-loop_hu_234c7407851f9273.webp 516w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/infinite-loop_hu_3023867168cf93e2.webp 815w" sizes="auto, (max-width: 760px) 100vw, 720px" width="516" height="760" alt="Gemini infinite loop" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;p&gt;It also has a bad habit of amending commits multiple times and force-pushing them.&#10;For me the Git history is a critical source of truth, and I don&amp;rsquo;t like rewriting it because I might just have reviewed those commits already.&lt;/p&gt;&#10;&lt;h3 id="the-interface-friction"&gt;The interface friction &lt;a class="anchor" href="#the-interface-friction" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I also found the Gemini CLI interface frustrating.&#10;Basic tasks like selecting text or scrolling up are surprisingly difficult.&#10;I&amp;rsquo;m not sure why they chose this design or why they feel the need to deviate from standard CLI behavior.&#10;It feels like unnecessary friction in an otherwise promising tool.&lt;/p&gt;&#10;&lt;h3 id="proofreading-this-post"&gt;Proofreading this post &lt;a class="anchor" href="#proofreading-this-post" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I also asked Gemini to proofread this very blog post.&#10;It made some suggestions—some I liked, others I didn&amp;rsquo;t, so I reverted the ones I didn&amp;rsquo;t want.&#10;But in every single subsequent iteration, it would forcefully re-apply its rejected changes, adding emojis I had removed or rewriting sentences I had explicitly restored.&lt;/p&gt;&#10;&lt;h3 id="the-main-branch-incident"&gt;The &amp;ldquo;main branch&amp;rdquo; incident &lt;a class="anchor" href="#the-main-branch-incident" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Another scary moment: I asked if the PR was ready to be merged into &lt;code&gt;main&lt;/code&gt;, and it went ahead and checked out the &lt;code&gt;main&lt;/code&gt; branch and merged everything locally.&#10;If I hadn&amp;rsquo;t stopped it, I&amp;rsquo;m pretty sure it would have pushed the changes to the &lt;code&gt;main&lt;/code&gt; branch directly as well.&#10;I tend to use &amp;ldquo;yolo mode&amp;rdquo; for agentic coding because I feel like Git has my back, but this feels like a dangerous path to go down.&lt;/p&gt;&#10;&lt;p&gt;And indeed, while writing this post, &lt;strong&gt;it actually happened&lt;/strong&gt;.&#10;Gemini merged my pull request without my permission.&lt;/p&gt;&#10;&lt;p&gt;My prompt was &lt;code&gt;&amp;gt; should the README reflect this?&lt;/code&gt; and before that I asked to review the PR.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/gemini-3-pro-first-impressions/merge_hu_719c4aa620a5a59a.webp" srcset="https://www.nijho.lt/post/gemini-3-pro-first-impressions/merge_hu_44f4ede1b23e43f5.webp 400w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/merge_hu_719c4aa620a5a59a.webp 760w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/merge_hu_fcec307dabb3ec8f.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="326" alt="Gemini merging without permission" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;p&gt;When I asked &lt;em&gt;why&lt;/em&gt; it merged it, it instantly force-pushed to &lt;code&gt;main&lt;/code&gt; again!&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/gemini-3-pro-first-impressions/force-push-again_hu_a7f66199c342259b.webp" srcset="https://www.nijho.lt/post/gemini-3-pro-first-impressions/force-push-again_hu_3884bda6d7ac695f.webp 400w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/force-push-again_hu_a7f66199c342259b.webp 760w, https://www.nijho.lt/post/gemini-3-pro-first-impressions/force-push-again_hu_8a797e9907cbcd9e.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="379" alt="Gemini force pushing to main" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="artifacts-and-existential-crises"&gt;Artifacts and existential crises &lt;a class="anchor" href="#artifacts-and-existential-crises" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Also, when it commits, it just adds &lt;em&gt;all&lt;/em&gt; files, including debugging logs and build artifacts.&#10;When it realizes its mistake, it tries to fix it.&#10;But if I try to help at the same time (like removing the files myself while it&amp;rsquo;s thinking), it gets extremely confused.&lt;/p&gt;&#10;&lt;p&gt;It spirals into an &lt;strong&gt;existential crisis&lt;/strong&gt;, claiming that I committed the file but now &amp;ldquo;it is gone.&amp;rdquo;&#10;&lt;em&gt;&amp;ldquo;What is going on?&amp;rdquo;&lt;/em&gt; it asks, spending a lot of tokens (and time) looking at &lt;code&gt;git reflog&lt;/code&gt;s and questioning its own existence.&#10;Even when I stop it and explicitly say that I deleted the file and to please continue, it completely ignores me and continues its panic attack.&#10;I experienced this pattern of ignoring instructions multiple times.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion &lt;a class="anchor" href="#conclusion" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Gemini 3 Pro shows massive potential.&#10;The raw coding ability is there, and building a &lt;strong&gt;clean&lt;/strong&gt; RAG proxy in two hours is great!&#10;But the agentic behavior needs some serious work: the loops, the force pushes, ignoring instructions, and the confusion when reality doesn&amp;rsquo;t match its internal state.&lt;/p&gt;&#10;&lt;p&gt;This is just &lt;strong&gt;day one&lt;/strong&gt;, so I&amp;rsquo;m confident many of these issues will get ironed out.&#10;I don&amp;rsquo;t love the interface, but given that &lt;a href="https://github.com/google-gemini/gemini-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;gemini-cli&lt;/code&gt;&lt;/a&gt; is open source with ≈400 contributors, I expect rapid improvements, especially now that the model is finally good with agentic workflows!&lt;/p&gt;&#10;</description></item><item><title>Using gpt-oss:20b in OpenCode with a larger context and high reasoning</title><link>https://www.nijho.lt/post/ollama-opencode/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/ollama-opencode/</guid><description>&lt;p&gt;I have hundreds of private journal entries stored locally, many with incorrect date formats.&#10;The correct date is in the filename, so I wanted to use an LLM to batch update them.&#10;However, I do not want to share my &lt;strong&gt;private journal&lt;/strong&gt; with any third-party service.&#10;Instead, I used &lt;a href="https://ollama.com/" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt; with &lt;code&gt;gpt-oss:20b&lt;/code&gt; and &lt;a href="https://opencode.ai/" target="_blank" rel="noopener"&gt;OpenCode&lt;/a&gt; to do this all locally.&lt;/p&gt;&#10;&lt;p&gt;The naive solution of just using &lt;code&gt;gpt-oss:20b&lt;/code&gt; with Ollama&amp;rsquo;s defaults doesn&amp;rsquo;t work (e.g., tool calls don&amp;rsquo;t work).&#10;The main issues is that Ollama sets the context window to only &lt;strong&gt;4096 tokens&lt;/strong&gt; and medium reasoning by default.&#10;It took me too long to figure out how to get &lt;code&gt;gpt-oss:20b&lt;/code&gt; working well in OpenCode (mostly because the OpenAI compatible API of Ollama doesn&amp;rsquo;t allow setting the context window), so I’m writing the steps down (partly for my future self).&lt;/p&gt;&#10;&lt;p&gt;In the end I could simply run the following command to batch update my journal entries:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; file in ./*.md&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; opencode -m ollama/gpt-oss-20b-high-32k run &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Use the date in the filename \&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;\&amp;#34; and correct the &amp;#39;date:&amp;#39; entry in the YAML front matter of this file&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Yes, of course I could have scripted this without an LLM, but where’s the fun in that?&#10;Also I might want to do more complex updates in the future on less structured data.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;This post describes how to:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create a &lt;strong&gt;long-context&lt;/strong&gt; variant of &lt;code&gt;gpt-oss:20b&lt;/code&gt; in Ollama.&lt;/li&gt;&#10;&lt;li&gt;Configure &lt;strong&gt;OpenCode&lt;/strong&gt; to use that model with &lt;strong&gt;high reasoning&lt;/strong&gt; enabled by default.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="1-create-a-long-context-model-in-ollama"&gt;1. Create a long-context model in Ollama &lt;a class="anchor" href="#1-create-a-long-context-model-in-ollama" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Start an interactive session with &lt;code&gt;gpt-oss:20b&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama run gpt-oss:20b&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the prompt:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; /set parameter num_ctx 32768&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; /save gpt-oss-20b-32k&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; /bye&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Sets the context window to &lt;strong&gt;32k tokens&lt;/strong&gt; (&lt;code&gt;num_ctx 32768&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;Saves a new model/tag named &lt;strong&gt;&lt;code&gt;gpt-oss-20b-32k&lt;/code&gt;&lt;/strong&gt; with that parameter stored.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Adjust &lt;code&gt;num_ctx&lt;/code&gt; as needed for your GPU (e.g. &lt;code&gt;16384&lt;/code&gt;, &lt;code&gt;65536&lt;/code&gt;, etc.).&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2-configure-opencode-to-use-high-reasoning"&gt;2. Configure OpenCode to use high reasoning &lt;a class="anchor" href="#2-configure-opencode-to-use-high-reasoning" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;OpenCode talks to Ollama via the OpenAI-compatible API. In:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;~/.config/opencode/opencode.json&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;add a provider configuration similar to:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsonc" data-lang="jsonc"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://opencode.ai/config.json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;npm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@ai-sdk/openai-compatible&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Ollama (local)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;baseURL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:11434/v1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;apiKey&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;models&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gpt-oss-20b-high-32k&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;gpt-oss-20b-32k&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;extraBody&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;think&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;high&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ollama/gpt-oss-20b-high-32k&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;&amp;quot;id&amp;quot;: &amp;quot;gpt-oss-20b-32k&amp;quot;&lt;/code&gt; refers to the custom Ollama model with the larger context window.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;&amp;quot;think&amp;quot;: &amp;quot;high&amp;quot;&lt;/code&gt; enables &lt;strong&gt;high reasoning&lt;/strong&gt; for &lt;code&gt;gpt-oss:20b&lt;/code&gt; on each request.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="3-select-the-model-in-opencode"&gt;3. Select the model in OpenCode &lt;a class="anchor" href="#3-select-the-model-in-opencode" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Run OpenCode:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Inside OpenCode:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; /models&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then select:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama/gpt-oss-20b-high-32k&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From this point, OpenCode uses &lt;code&gt;gpt-oss:20b&lt;/code&gt; with:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A &lt;strong&gt;larger context window&lt;/strong&gt; (configured in Ollama), and&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;High reasoning&lt;/strong&gt; enabled by default (via &lt;code&gt;think: &amp;quot;high&amp;quot;&lt;/code&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Coding from my phone 📱</title><link>https://www.nijho.lt/post/agentic-mobile-workflow/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/agentic-mobile-workflow/</guid><description>&lt;p&gt;I am dictating this post at ten kilometers altitude on a flight home from Mexico, Blink Shell open on my iPhone, while an agentic assistant on my &lt;a href="https://nixos.org/" target="_blank" rel="noopener"&gt;NixOS&lt;/a&gt; machine writes an initial draft for this post.&#10;Admittedly, I’m a little addicted to agentic coding: when an idea pops up, I want to jump on it right away—even if that means doing it from a cramped seat in the sky.&#10;This is the workflow I’ve arrived at after trying many alternatives, it extends &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;my agentic coding write-up&lt;/a&gt; and the self-hosted AI obsession in &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;my local AI journey&lt;/a&gt;.&#10;It&amp;rsquo;s my backup plan for those moments when a computer simply isn&amp;rsquo;t nearby—the rest of the time I&amp;rsquo;m still at a keyboard like any other developer.&#10;This is in no way a replacement for a proper computer/laptop workflow but gets the job done when needed.&#10;It&amp;rsquo;s a personal, mostly open-source stack built around &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt;—my local-first voice layer.&#10;Here&amp;rsquo;s how it works: I speak into my phone, the audio goes to &lt;a href="https://github.com/SYSTRAN/faster-whisper-server" target="_blank" rel="noopener"&gt;FasterWhisper&lt;/a&gt; for transcription, &lt;a href="https://ollama.com/" target="_blank" rel="noopener"&gt;Ollama&lt;/a&gt; cleans up the text, and it lands on my clipboard ready to paste.&#10;My iOS Shortcut handles this through a small HTTP interface that agent-cli exposes.&#10;The coding agent itself still uses the best proprietary model I can access.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Meta: I&amp;rsquo;m writing about agentic coding on mobile from my actual phone.&#10;It&amp;rsquo;s not the most efficient way to write, but it gets the job done — during a 6.5‑hour flight I dictated and iterated this entire post.&#10;Each iteration was a commit: dictate changes, review the diff, refine, commit, repeat.&#10;See all &lt;a href="https://github.com/basnijholt/nijho.lt/pull/40" target="_blank" rel="noopener"&gt;50+ commits in PR #40&lt;/a&gt; for the full iteration trail.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; iPhone → WireGuard → Blink+Mosh → Zellij.&#10;I dictate via a Shortcut → FasterWhisper (transcribe) → Ollama (polish) → clipboard, then paste into Codex CLI using OpenAI’s &lt;code&gt;gpt-5-codex-high&lt;/code&gt;.&#10;Everything is local except the model.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-why-phone-coding-works-now"&gt;1. Why Phone Coding Works Now&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-constraints-and-trade-offs"&gt;2. Constraints and Trade-offs&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-layer-1-wireguard-from-the-router"&gt;3. Layer 1: WireGuard From the Router&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-layer-2-blink-shell--mosh-for-durable-sessions"&gt;4. Layer 2: Blink Shell + Mosh for Durable Sessions&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-layer-3-zellij-layouts"&gt;5. Layer 3: Zellij Layouts&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-layer-4-agent-cli-server"&gt;6. Layer 4: &lt;code&gt;agent-cli&lt;/code&gt; Server&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-layer-5-the-ios-shortcut-pipeline"&gt;7. Layer 5: The iOS Shortcut Pipeline&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-workflow-in-practice"&gt;8. Workflow in Practice&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-conclusion-and-further-reading"&gt;9. Conclusion and Further Reading&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-why-phone-coding-works-now"&gt;1. Why Phone Coding Works Now &lt;a class="anchor" href="#1-why-phone-coding-works-now" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For years I used &lt;a href="https://ish.app/" target="_blank" rel="noopener"&gt;&lt;strong&gt;iSH&lt;/strong&gt;&lt;/a&gt; (a full Alpine Linux emulator) with SSH to hop into servers from my phone, but dropped connections were a constant frustration (Mosh fixes this, more on that later).&#10;Because coding on a phone keyboard is terrible, I kept it to tiny configuration tweaks or one-off fixes of a few characters.&#10;Agentic tools changed that: with a CLI coding agent, I don’t need to type the code—I describe the change, review the patch, and run it.&#10;That made meaningful work on the phone possible for the first time, for those moments when a computer isn’t around.&lt;/p&gt;&#10;&lt;p&gt;I tried &lt;strong&gt;VS Code in the browser&lt;/strong&gt;, bounced between &lt;strong&gt;iSH&lt;/strong&gt; and &lt;strong&gt;Terminus&lt;/strong&gt; for SSH, and even lived inside a handful of in-browser terminal clients.&#10;I also spent time with mobile companions like &lt;a href="https://happy.engineering/" target="_blank" rel="noopener"&gt;&lt;strong&gt;Happy&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://www.ycombinator.com/companies/omnara" target="_blank" rel="noopener"&gt;&lt;strong&gt;Omnara&lt;/strong&gt;&lt;/a&gt;, both designed to mirror Claude Code sessions on the phone, but they still felt like extra steps between me and my actual terminal.&#10;That friction pushed me toward a phone‑ready, self‑hosted workflow that still gives me raw SSH access to my own machine when the computer is out of reach.&lt;/p&gt;&#10;&lt;p&gt;This post is based on the way I develop software today.&#10;Your mileage may vary, but if you also care about privacy, open tooling, and reproducible environments, I think there are useful pieces here.&lt;/p&gt;&#10;&lt;h2 id="2-constraints-and-trade-offs"&gt;2. Constraints and Trade-offs &lt;a class="anchor" href="#2-constraints-and-trade-offs" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This setup grew organically over time. What emerged are less strict requirements and more happy accidents that turned into core benefits:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Single trust boundary:&lt;/strong&gt; Only the model provider (OpenAI) sees code context; audio and automation stay local, and I avoid any additional third‑party relays.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Resilient sessions:&lt;/strong&gt; Connections should survive sleep and spotty networks.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Voice-friendly:&lt;/strong&gt; Dictation should be accurate enough that I can trust it.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reproducible config:&lt;/strong&gt; The entire stack must live in my &lt;a href="https://www.nijho.lt/post/dotfiles/"&gt;dotfiles&lt;/a&gt; and &lt;a href="https://github.com/basnijholt/dotfiles/tree/8f6bf0b7219195a46a3e010d3538e1e449634db7/configs/nixos" target="_blank" rel="noopener"&gt;NixOS configuration&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;To give you a sense of what I tried, here is the short comparison that convinced me to roll my own:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Approach&lt;/th&gt;&#10;&lt;th&gt;Pros&lt;/th&gt;&#10;&lt;th&gt;Why I moved on&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;VS Code in the browser&lt;/td&gt;&#10;&lt;td&gt;Familiar editor UI&lt;/td&gt;&#10;&lt;td&gt;Needs a steady connection and still lives outside my dotfiles comfort zone&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;iSH / Terminus SSH&lt;/td&gt;&#10;&lt;td&gt;Works without extra infrastructure&lt;/td&gt;&#10;&lt;td&gt;Laggy, no Mosh, and awkward keybindings&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;In-browser terminals&lt;/td&gt;&#10;&lt;td&gt;Instant access from anywhere&lt;/td&gt;&#10;&lt;td&gt;Poor copy/paste ergonomics and flaky mobile keyboards&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;a href="https://apps.apple.com/us/app/happy-codex-claude-code-app/id6748571505" target="_blank" rel="noopener"&gt;Happy&lt;/a&gt; (Claude Code companion)&lt;/td&gt;&#10;&lt;td&gt;Push notifications, encrypted mobile UI for Claude Code&lt;/td&gt;&#10;&lt;td&gt;Requires wrapping every session with a separate CLI and still abstracts away my shell, and was quite buggy for me&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;a href="https://omnara.com" target="_blank" rel="noopener"&gt;Omnara&lt;/a&gt; (agent command center)&lt;/td&gt;&#10;&lt;td&gt;Centralizes Claude Code/Codex sessions with terminal replay&lt;/td&gt;&#10;&lt;td&gt;Proxies via their servers; I already trust OpenAI for the model and don&amp;rsquo;t want another third‑party handling my code&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The stack below gives me the resilience of Mosh, the ergonomics of Zellij, and full control over the AI layer.&lt;/p&gt;&#10;&lt;h2 id="3-layer-1-wireguard-from-the-router"&gt;3. Layer 1: WireGuard From the Router &lt;a class="anchor" href="#3-layer-1-wireguard-from-the-router" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://www.wireguard.com/" target="_blank" rel="noopener"&gt;WireGuard&lt;/a&gt; is a modern VPN that lets me securely access my home network from anywhere.&#10;I terminate WireGuard on my router so every device in the house (and on the road) can dial home with the same config.&#10;(If you want something easier to set up without opening ports, &lt;a href="https://tailscale.com/" target="_blank" rel="noopener"&gt;Tailscale&lt;/a&gt; is a more user-friendly option.)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Server:&lt;/strong&gt; ASUS XT8 router with WireGuard enabled via the router UI.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Client:&lt;/strong&gt; The WireGuard iOS app with &lt;code&gt;On-Demand&lt;/code&gt; rules so the tunnel flips on whenever I am off trusted Wi-Fi.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;DNS:&lt;/strong&gt; All mobile sessions resolve through my home DNS, so &lt;code&gt;git.nijho.lt&lt;/code&gt; and internal services resolve instantly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This gives Blink a local-LAN address for my desktop &lt;code&gt;nixos&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="4-layer-2-blink-shell--mosh-for-durable-sessions"&gt;4. Layer 2: Blink Shell + Mosh for Durable Sessions &lt;a class="anchor" href="#4-layer-2-blink-shell--mosh-for-durable-sessions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;What is &lt;a href="https://mosh.org/" target="_blank" rel="noopener"&gt;Mosh&lt;/a&gt;?&#10;It&amp;rsquo;s like SSH, but it stays connected when the network changes or the phone sleeps, and it feels faster on bad connections.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blink.sh/" target="_blank" rel="noopener"&gt;Blink Shell&lt;/a&gt; is my daily driver on iOS because it pairs beautifully with Mosh and has great keyboard ergonomics.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I launch sessions using &lt;code&gt;mosh bas@nixos -- zellij attach --create phone&lt;/code&gt; (&lt;a href="https://zellij.dev/" target="_blank" rel="noopener"&gt;Zellij&lt;/a&gt; is my terminal multiplexer—more on that in the next section).&lt;/li&gt;&#10;&lt;li&gt;Mosh smooths over spotty LTE and keeps my session alive when the phone sleeps.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Mosh keeps the session responsive across flaky networks and sleep.&lt;/p&gt;&#10;&lt;h2 id="5-layer-3-zellij-layouts"&gt;5. Layer 3: Zellij Layouts &lt;a class="anchor" href="#5-layer-3-zellij-layouts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I use &lt;strong&gt;Zellij&lt;/strong&gt; as my terminal multiplexer for mobile work.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I stick to the defaults and use a couple of predefined layouts (e.g., a &amp;ldquo;phone&amp;rdquo; layout with editor + shell panes).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Ergonomics matter even more on a glass keyboard, so I lean on a few shell helpers:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/ajeetdsouza/zoxide" target="_blank" rel="noopener"&gt;&lt;code&gt;zoxide&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; means I can jump between repos with &lt;code&gt;z foo&lt;/code&gt; instead of pecking long paths.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Single-character aliases&lt;/strong&gt; like &lt;code&gt;p&lt;/code&gt; for &lt;code&gt;pytest&lt;/code&gt; and &lt;code&gt;gs&lt;/code&gt; for &lt;code&gt;git status&lt;/code&gt; live in &lt;a href="https://github.com/basnijholt/dotfiles/blob/8f6bf0b7219195a46a3e010d3538e1e449634db7/configs/shell/10_aliases.sh" target="_blank" rel="noopener"&gt;&lt;code&gt;configs/shell/10_aliases.sh&lt;/code&gt;&lt;/a&gt;, keeping command entry to a minimum.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Autocompletion plugins&lt;/strong&gt;—&lt;a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank" rel="noopener"&gt;&lt;code&gt;zsh-autosuggestions&lt;/code&gt;&lt;/a&gt; and &lt;code&gt;zsh-syntax-highlighting&lt;/code&gt;—are wired up in &lt;a href="https://github.com/basnijholt/dotfiles/blob/8f6bf0b7219195a46a3e010d3538e1e449634db7/configs/shell/70_zsh_plugins.sh" target="_blank" rel="noopener"&gt;&lt;code&gt;configs/shell/70_zsh_plugins.sh&lt;/code&gt;&lt;/a&gt;, so I get inline hints and colour cues while typing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I break these tricks down in more depth in &lt;a href="https://www.nijho.lt/post/terminal-ninja/"&gt;Terminal Ninja&lt;/a&gt;, explain how I sync them with my &lt;a href="https://www.nijho.lt/post/dotfiles/"&gt;Dotfiles&lt;/a&gt;, and even package binaries like &lt;code&gt;zoxide&lt;/code&gt; with &lt;a href="https://www.nijho.lt/post/dotbins/"&gt;Dotbins&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="6-layer-4-agent-cli-server"&gt;6. Layer 4: &lt;code&gt;agent-cli&lt;/code&gt; Server &lt;a class="anchor" href="#6-layer-4-agent-cli-server" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; runs as a small server on my NixOS machine.&#10;In this workflow I only use &lt;code&gt;transcribe&lt;/code&gt; from iOS Shortcuts: the phone records audio, the server transcribes and cleans it up, and I paste the text.&#10;(Agent-CLI has other features like &lt;code&gt;autocorrect&lt;/code&gt; and &lt;code&gt;chat&lt;/code&gt;, but I don&amp;rsquo;t use them for this workflow.)&#10;On this machine I run a long‑lived &lt;code&gt;agent-cli&lt;/code&gt; user service (systemd) so Shortcuts can POST audio to it and get cleaned text back—ready to paste into Codex CLI.&#10;The service is defined in my dotfiles—see: &lt;a href="https://github.com/basnijholt/dotfiles/blob/8f6bf0b7219195a46a3e010d3538e1e449634db7/configs/nixos/modules/user.nix#L29-L40" target="_blank" rel="noopener"&gt;&lt;code&gt;configs/nixos/modules/user.nix&lt;/code&gt; (agent-cli service)&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;For more background on why I built it and how I use it in practice, see &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;Local AI Journey&lt;/a&gt; (§3) and &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;Agentic Coding&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The models and services run on the same box:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;FasterWhisper&lt;/strong&gt; via &lt;a href="https://github.com/SYSTRAN/faster-whisper" target="_blank" rel="noopener"&gt;&lt;code&gt;faster-whisper-server&lt;/code&gt;&lt;/a&gt; for high‑accuracy streaming transcription.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt; for on‑device rewrite/cleanup before sending prompts to the coding agent.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;My iOS Shortcut dictation workflow is slower than Apple&amp;rsquo;s built-in dictation, but the accuracy is much better—and that matters more.&lt;/p&gt;&#10;&lt;p&gt;For the actual coding agent, I use a &lt;a href="https://github.com/just-every/code" target="_blank" rel="noopener"&gt;fork&lt;/a&gt; of Codex CLI with OpenAI’s &lt;code&gt;gpt-5-codex-high&lt;/code&gt; model (here no open-source solution matches the frontier).&lt;/p&gt;&#10;&lt;h2 id="7-layer-5-the-ios-shortcut-pipeline"&gt;7. Layer 5: The iOS Shortcut Pipeline &lt;a class="anchor" href="#7-layer-5-the-ios-shortcut-pipeline" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My iPhone&amp;rsquo;s Action Button runs a Shortcut that records audio and sends my voice to agent-cli on my NixOS machine for transcription and cleanup.&lt;/p&gt;&#10;&lt;p&gt;For the full recipe, see the iOS Shortcut Guide: &lt;a href="https://github.com/basnijholt/agent-cli/blob/main/iOS_Shortcut_Guide.md" target="_blank" rel="noopener"&gt;agent-cli/iOS_Shortcut_Guide.md&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;In short: I press the Action Button, the Shortcut records a snippet, sends it to &lt;code&gt;agent-cli&lt;/code&gt;, and copies the cleaned text to my clipboard so I can paste it into Codex CLI.&lt;/p&gt;&#10;&lt;p&gt;The whole loop finishes fast enough that I can capture intent by voice and paste it into Codex CLI without typing.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;Dictation quality:&lt;/strong&gt; In my experience, the built‑in iOS dictation is absolute garbage compared to Whisper/FasterWhisper.&#10;Accuracy and punctuation are much better with the FasterWhisper server running at home; it’s a bit slower, but that trade‑off is worth it for clean, usable text.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="8-workflow-in-practice"&gt;8. Workflow in Practice &lt;a class="anchor" href="#8-workflow-in-practice" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s the typical flow:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;WireGuard auto-connects when I&amp;rsquo;m off home WiFi&lt;/li&gt;&#10;&lt;li&gt;Open Blink—my Mosh session is still alive from last time, Zellij panes intact&lt;/li&gt;&#10;&lt;li&gt;Dictate the change, paste into Codex CLI, review the agent&amp;rsquo;s response&lt;/li&gt;&#10;&lt;li&gt;Check diffs in an adjacent Zellij pane or different Blink tab with separate Mosh session&lt;/li&gt;&#10;&lt;li&gt;The agent commits and pushes to a branch, then opens a PR via &lt;code&gt;gh&lt;/code&gt; for me to review and merge&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;On the phone, I aim for the smallest practical edits and initial implementations.&#10;Even on personal repos, I still open a PR—sometimes prompting alone gets me to a merge‑ready result.&#10;For open‑source with real users, I finish on the computer with a careful review and any final edits.&lt;/p&gt;&#10;&lt;h2 id="9-conclusion-and-further-reading"&gt;9. Conclusion and Further Reading &lt;a class="anchor" href="#9-conclusion-and-further-reading" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This phone setup extends my &lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;Agentic Coding&lt;/a&gt; workflow to mobile.&#10;I connect to the same Zellij session on &lt;code&gt;nixos&lt;/code&gt;, so when an idea hits, I pick up exactly where I left off—same environment, same context, no setup.&#10;Everything runs on my hardware (voice processing and automation) except the coding model itself.&#10;It’s the most effective mobile workflow I’ve had so far.&#10;It’s mostly open‑source not out of dogma, but because those tools are the best options for my needs.&#10;The one exception is the coding model: there’s no true open equivalent right now, and it makes no sense to buy 20× H100s just to self‑host a frontier model even if such a high quality model would be available open-source.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re curious to dive deeper, here are a few related posts:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/agentic-coding/"&gt;Agentic Coding&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/dotfiles/"&gt;Dotfiles: A Practical, Cross-Platform Terminal Setup&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;Local AI Journey: RTX 3090 Edition&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/terminal-ninja/"&gt;Terminal Ninja&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/using-llms/"&gt;Using LLMs Effectively&lt;/a&gt; (already outdated at this point!)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;d love to hear what self-hosted tricks you&amp;rsquo;re using for mobile development—reach out if you adapt this stack or build something wild on top of it.&lt;/p&gt;&#10;</description></item><item><title>On agentic coding 🤖</title><link>https://www.nijho.lt/post/agentic-coding/</link><pubDate>Mon, 25 Aug 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/agentic-coding/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-from-skepticism-to-productivity"&gt;1. From skepticism to productivity&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-but-dont-you-love-programming"&gt;2. But don&amp;rsquo;t you love programming?&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-power-to-explore"&gt;The power to explore&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-matty-story-from-midnight-idea-to-working-code"&gt;The Matty story: from midnight idea to working code&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#clip-files-ui-when-ideas-strike-at-random-moments"&gt;clip-files UI: when ideas strike at random moments&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-800-rule-marathon-80-ai-agents-at-once"&gt;The 800-rule marathon: 80 AI agents at once&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#1400-commits-rewritten-in-minutes-for-250"&gt;1,400 commits, rewritten in minutes for $2.50&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-the-two-phase-ai-revolution"&gt;3. The two-phase AI revolution&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#phase-1-copy-paste-era-march-2023---july-2025"&gt;Phase 1: copy-paste era (March 2023 - July 2025)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#phase-2-the-claude-code-revolution-july-2025"&gt;Phase 2: the Claude Code revolution (July 2025)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-made-claude-code-different"&gt;What made Claude Code different?&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-my-current-agentic-workflow"&gt;4. My current agentic workflow&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#parallel-development-6-features-at-once"&gt;Parallel development: 6 features at once&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#starting-a-new-package"&gt;Starting a new package&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-key-difference-iteration-and-validation"&gt;The key difference: iteration and validation&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-the-evidence-explosive-productivity"&gt;5. The evidence: explosive productivity&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#package-creation-by-year"&gt;Package creation by year&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#recent-packages-built-with-agentic-ai"&gt;Recent packages built with agentic AI&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-why-this-isnt-vibe-coding-but-with-nuance"&gt;6. Why this isn&amp;rsquo;t &amp;ldquo;vibe coding&amp;rdquo; (but with nuance)&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#my-context-driven-standards"&gt;My context-driven standards&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-internal-dependency-graph-principle"&gt;The internal dependency graph principle&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#building-constraints-around-ai"&gt;Building constraints around AI&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-common-pitfalls-ive-noticed"&gt;7. Common pitfalls I&amp;rsquo;ve noticed&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-defensive-programming-trap"&gt;The &amp;ldquo;defensive programming&amp;rdquo; trap&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-backwards-compatibility-obsession"&gt;The &amp;ldquo;backwards compatibility&amp;rdquo; obsession&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-over-engineering-disease"&gt;The &amp;ldquo;over-engineering&amp;rdquo; disease&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-git-commit-sins"&gt;The git commit sins&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-helpful-anti-patterns"&gt;The &amp;ldquo;helpful&amp;rdquo; anti-patterns&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-mission-accomplished-hallucination"&gt;The &amp;ldquo;mission accomplished&amp;rdquo; hallucination&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-nuclear-option"&gt;The nuclear option&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-debugging-debris"&gt;The debugging debris&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-this-happens"&gt;Why this happens&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-critical-success-factors-what-actually-makes-this-work"&gt;8. Critical success factors: what actually makes this work&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#teach-it-your-test-commands-day-1-priority"&gt;Teach it your test commands (day 1 priority)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#git-commits-are-your-safety-net"&gt;Git commits are your safety net&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#maintain-healthy-skepticism"&gt;Maintain healthy skepticism&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#force-it-to-clean-up-after-itself"&gt;Force it to clean up after itself&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#code-coverage-is-your-friend"&gt;Code coverage is your friend&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9-my-secret-weapon-voice-to-code-workflow"&gt;9. My secret weapon: voice-to-code workflow&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-problem-with-typing-prompts"&gt;The problem with typing prompts&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#my-voice-workflow"&gt;My voice workflow&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-this-works-so-well"&gt;Why this works so well&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#10-additional-tips-for-agentic-coding"&gt;10. Additional tips for agentic coding&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#set-clear-constraints"&gt;Set clear constraints&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#use-the-task-system"&gt;Use the task system&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#leverage-the-search-capabilities"&gt;Leverage the search capabilities&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#review-in-chunks"&gt;Review in chunks&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#11-the-tools-ive-tried"&gt;11. The tools I&amp;rsquo;ve tried&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#pre-ai-era"&gt;Pre-AI era&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#phase-1-copy-paste-tools-march-2023---july-2025"&gt;Phase 1: copy-paste tools (March 2023 - July 2025)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#cursor-early-2024"&gt;Cursor (early 2024)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#phase-2-claude-code-july-2025---present"&gt;Phase 2: Claude Code (July 2025 - present)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#openais-codex-cli-the-reasoning-beast"&gt;OpenAI&amp;rsquo;s Codex CLI (the reasoning beast)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-not-copilot-or-other-cheaper-tools"&gt;Why not Copilot or other &amp;ldquo;cheaper&amp;rdquo; tools?&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#12-is-this-sustainable"&gt;12. Is this sustainable?&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-good"&gt;The good&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-challenges"&gt;The challenges&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#my-verdict"&gt;My verdict&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#13-the-experience-multiplier-why-seniority-matters-more-than-ever"&gt;13. The experience multiplier: why seniority matters more than ever&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#the-exponential-trap-for-beginners"&gt;The exponential trap for beginners&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-senior-developer-advantage"&gt;The senior developer advantage&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-right-way-for-every-level"&gt;The right way for every level&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-real-multiplier-effect"&gt;The real multiplier effect&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#14-reality-check-what-ai-can-and-cant-do"&gt;14. Reality check: what AI can and can&amp;rsquo;t do&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#what-ai-can-do-the-churn-work"&gt;What AI CAN do (the churn work)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-ai-cant-do-the-creative-work"&gt;What AI CAN&amp;rsquo;T do (the creative work)&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-sweet-spot"&gt;The sweet spot&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#15-looking-forward-the-future-of-development"&gt;15. Looking forward: the future of development&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#16-conclusion-principles-over-process"&gt;16. Conclusion: principles over process&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#links-and-resources"&gt;Links and resources&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-from-skepticism-to-productivity"&gt;1. From skepticism to productivity &lt;a class="anchor" href="#1-from-skepticism-to-productivity" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;About eight months ago, I wrote about my disastrous experience with &amp;ldquo;&lt;a href="https://www.nijho.lt/post/vibe-coding/"&gt;vibe coding&lt;/a&gt;&amp;quot;—where I let AI generate code without careful review.&#10;What started as a fun 3-hour prototype turned into a 15-hour debugging nightmare.&#10;I concluded that while AI was fantastic for quick prototyping, it was dangerous without human oversight.&#10;I even declared I&amp;rsquo;d &amp;ldquo;never invest in, build upon, or use such products.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Fast forward to today, and something remarkable has changed.&#10;Not my core principle—I still &lt;strong&gt;never merge code I don&amp;rsquo;t understand&lt;/strong&gt;—but the tooling and my approach have evolved through two distinct phases.&lt;/p&gt;&#10;&lt;p&gt;First, let&amp;rsquo;s look at the evidence of AI&amp;rsquo;s overall impact on my productivity:&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://www.nijho.lt/post/agentic-coding/pypi_packages_histogram.svg" alt="PyPI Package Publication Analysis" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&#10;&lt;p&gt;This graph tells an interesting story.&#10;After maintaining a steady pace for years (2016-2023), my productivity exploded with the introduction of AI tools.&#10;In 2024-2025 alone, I&amp;rsquo;ve published &lt;strong&gt;14 new Python packages&lt;/strong&gt; and made &lt;strong&gt;over 400 releases&lt;/strong&gt;.&#10;That&amp;rsquo;s more new packages than in the previous 6 years combined!&lt;/p&gt;&#10;&lt;p&gt;But this transformation didn&amp;rsquo;t happen overnight—it came in two distinct phases that fundamentally changed how I write code.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; My AI coding journey had two major phases: Phase 1 started in March 2023 with GPT-4&amp;rsquo;s release—using chat interfaces with copy-paste workflows.&#10;Phase 2 began just two months ago in July 2025 with &lt;strong&gt;Claude Code&lt;/strong&gt;—an agentic AI that can explore codebases, run tests, and debug itself.&#10;This second leap was as transformative as the first one. I spent &amp;gt;10k USD worth of API usage in the first month alone (thankfully capped at $200 with the Pro plan).&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="2-but-dont-you-love-programming"&gt;2. But don&amp;rsquo;t you love programming? &lt;a class="anchor" href="#2-but-dont-you-love-programming" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I&amp;rsquo;ve heard this objection countless times: &amp;ldquo;I love programming too much to let AI do it for me.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Sure, I get it.&#10;It&amp;rsquo;s like preferring analog photography over digital, or writing letters by hand instead of typing.&#10;Some people genuinely enjoy the manual process, and that&amp;rsquo;s valid.&lt;/p&gt;&#10;&lt;p&gt;But here&amp;rsquo;s the thing: &lt;strong&gt;I absolutely love programming&lt;/strong&gt;.&#10;It&amp;rsquo;s my biggest passion in life.&#10;As I mentioned in my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;local AI journey&lt;/a&gt;, I bought a gaming PC to play games but have only used it for coding and local AI experiments.&#10;My idea of a fun weekend? Writing code until 3 AM.&#10;I&amp;rsquo;ve been doing this for over 10 years, and I&amp;rsquo;ve &lt;strong&gt;never had as much fun programming as I do now&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;What I&amp;rsquo;ve discovered is that I don&amp;rsquo;t just love the act of typing code—I love &lt;strong&gt;building and creating things&lt;/strong&gt;.&#10;There&amp;rsquo;s a difference.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;m ridiculously particular about code quality.&#10;I literally cannot look at poorly formatted code without feeling physical discomfort.&#10;Every operator, every indentation, every naming convention matters to me.&#10;I enforce strict linting rules and will spend time refactoring code just because the style bothers me.&#10;This isn&amp;rsquo;t about being pretentious—it&amp;rsquo;s about caring deeply about my craft.&lt;/p&gt;&#10;&lt;p&gt;The revelation: AI doesn&amp;rsquo;t take away my ability to care about these details.&#10;Instead, it gives me &lt;strong&gt;insane leverage&lt;/strong&gt; to create more while maintaining my personal standards.&#10;I still review every line (although I am more lenient in certain cases), still enforce my style guides, still refactor when something bothers me.&#10;But now I can build 10x faster.&lt;/p&gt;&#10;&lt;p&gt;It turns out that what I truly love isn&amp;rsquo;t the mechanical act of typing—it&amp;rsquo;s the creative act of bringing ideas to life.&#10;And with AI, I can bring more ideas to life than ever before.&lt;/p&gt;&#10;&lt;h3 id="the-power-to-explore"&gt;The power to explore &lt;a class="anchor" href="#the-power-to-explore" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;AI has unlocked something incredible: the ability to explore ideas that weren&amp;rsquo;t worth the effort before.&#10;It&amp;rsquo;s now trivial to write 2,000 lines of code to solve a simple problem.&#10;Before AI, spending 5+ hours on a utility script wasn&amp;rsquo;t justifiable.&#10;Now? I can build it in 10 minutes.&lt;/p&gt;&#10;&lt;p&gt;Here are just some of the &amp;ldquo;wouldn&amp;rsquo;t have been worth it&amp;rdquo; projects I&amp;rsquo;ve built recently:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://wenfire.nijho.lt/" target="_blank" rel="noopener"&gt;Financial independence tracker&lt;/a&gt;&lt;/strong&gt;: A full website visualizing my path to FIRE&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/tuitorial" target="_blank" rel="noopener"&gt;Tuitorial&lt;/a&gt;&lt;/strong&gt;: Terminal-based presentation software&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/home-assistant-streamdeck-yaml" target="_blank" rel="noopener"&gt;Stream Deck home control&lt;/a&gt;&lt;/strong&gt;: Complete tool to control my entire house from a Stream Deck&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;Dotbins&lt;/a&gt;&lt;/strong&gt;: Automatic binary dependency syncing across all my machines&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;Agent-CLI&lt;/a&gt;&lt;/strong&gt;: A local, open-source Siri that actually works&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Each of these would have taken weeks of manual coding.&#10;The effort-to-reward ratio just wasn&amp;rsquo;t there.&#10;But with AI? I can explore every random idea that pops into my head at 2 AM.&lt;/p&gt;&#10;&lt;h3 id="the-matty-story-from-midnight-idea-to-working-code"&gt;The Matty story: from midnight idea to working code &lt;a class="anchor" href="#the-matty-story-from-midnight-idea-to-working-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Here is the perfect example of this power: One night around midnight, I was lying in bed (slightly intoxicated) when I had an idea—I needed a way for my AI agents to communicate via Matrix.&#10;So I grabbed my iPhone, SSHed into my machine, and started building.&lt;/p&gt;&#10;&lt;p&gt;One hour later, at 1 AM, I had created &lt;strong&gt;&lt;a href="https://github.com/basnijholt/matty" target="_blank" rel="noopener"&gt;Matty&lt;/a&gt;&lt;/strong&gt;—a fully functional terminal-based Matrix client.&#10;Built entirely from my phone.&#10;In bed.&#10;(Poor sleep hygiene, I know.)&lt;/p&gt;&#10;&lt;p&gt;When I woke up the next morning and tested it&amp;hellip; it actually worked!&#10;I spent a few more hours adding tests and cleaning it up, but the core functionality was built in that hour between midnight and 1 AM.&lt;/p&gt;&#10;&lt;p&gt;This is impossible without AI.&#10;Nobody&amp;rsquo;s writing a Matrix client from their phone in bed at midnight.&#10;But with Claude Code? It&amp;rsquo;s just another Tuesday night idea that becomes reality.&lt;/p&gt;&#10;&lt;h3 id="clip-files-ui-when-ideas-strike-at-random-moments"&gt;clip-files UI: when ideas strike at random moments &lt;a class="anchor" href="#clip-files-ui-when-ideas-strike-at-random-moments" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;What happens more often than you&amp;rsquo;d think: I get an idea at a completely random moment and NEED to implement it immediately.&lt;/p&gt;&#10;&lt;p&gt;Case in point: I was sitting in the bathtub during my copy-paste AI era when I realized I needed to access my codebases from anywhere.&#10;I&amp;rsquo;d already built &lt;a href="https://www.nijho.lt/post/advent-of-open-source/15-clip-files/"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt;—a CLI tool that copies entire codebases to your clipboard—but I wanted it accessible from my phone.&lt;/p&gt;&#10;&lt;p&gt;So I got out of the bathtub, built a &lt;a href="https://github.com/basnijholt/clip-files-ui" target="_blank" rel="noopener"&gt;web UI&lt;/a&gt; for it in 20 minutes, and got back in.&#10;The UI lets me:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Browse all my GitHub repositories&lt;/li&gt;&#10;&lt;li&gt;Select any branch&lt;/li&gt;&#10;&lt;li&gt;Click one button to copy all source code to clipboard&lt;/li&gt;&#10;&lt;li&gt;Paste it into my self-hosted AI chat from anywhere&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Ironically, I rarely use this tool now—Claude Code can explore codebases directly.&#10;But back in the copy-paste era, this 20-minute bathtub interruption made mobile AI coding possible.&lt;/p&gt;&#10;&lt;p&gt;The barrier between &amp;ldquo;wouldn&amp;rsquo;t it be cool if&amp;hellip;&amp;rdquo; and &amp;ldquo;here&amp;rsquo;s a working prototype&amp;rdquo; has essentially disappeared.&lt;/p&gt;&#10;&lt;h3 id="the-800-rule-marathon-80-ai-agents-at-once"&gt;The 800-rule marathon: 80 AI agents at once &lt;a class="anchor" href="#the-800-rule-marathon-80-ai-agents-at-once" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Another thing that would be literally impossible without AI: I decided to enable ALL 800+ Ruff linting rules on a 20,000-line codebase.&lt;/p&gt;&#10;&lt;p&gt;For context, &lt;a href="https://docs.astral.sh/ruff/" target="_blank" rel="noopener"&gt;Ruff&lt;/a&gt; is a extremely fast Python linter that implements rules from over a dozen different tools.&#10;Most projects enable maybe 50-100 rules.&#10;I wanted all 800+.&lt;/p&gt;&#10;&lt;p&gt;The result? &lt;strong&gt;≈2,500 violations&lt;/strong&gt; across the entire codebase.&lt;/p&gt;&#10;&lt;p&gt;Fixing these by hand would take 20 hours if I could fix one per 30 seconds&amp;hellip;&#10;But with Claude Code&amp;rsquo;s agent spawning capabilities, I did something insane:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Opened 8 terminal windows&lt;/strong&gt; with Claude Code&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Created a work orchestration document&lt;/strong&gt; that one AI managed&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Each session spawned 10 parallel sub-agents&lt;/strong&gt; using &lt;a href="https://docs.anthropic.com/en/docs/claude-code/sub-agents" target="_blank" rel="noopener"&gt;/agents&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Total: ~80 AI agents&lt;/strong&gt; working on my code simultaneously&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Two hours later&lt;/strong&gt;: 100% compliance with all 800 rules&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The orchestrator agent would assign work like:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Session 1: Fix all E501 line-too-long violations in src/core/&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Session 2: Handle all B008 function-call-in-default-argument issues&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Session 3: Fix all RUF100 unused-noqa violations&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Each session&amp;rsquo;s sub-agents would tackle different files in parallel.&#10;When conflicts arose, the orchestrator would resolve them.&#10;This is the kind of code quality improvement that simply wouldn&amp;rsquo;t happen without AI—not because it&amp;rsquo;s technically difficult, but because the human effort required is unrealistic.&lt;/p&gt;&#10;&lt;h3 id="1400-commits-rewritten-in-minutes-for-250"&gt;1,400 commits, rewritten in minutes for $2.50 &lt;a class="anchor" href="#1400-commits-rewritten-in-minutes-for-250" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Here&amp;rsquo;s another &amp;ldquo;impossible without AI&amp;rdquo; story: I had 1,400 commits with terrible messages (in a not-yet-released and private project).&lt;/p&gt;&#10;&lt;p&gt;Since I commit so frequently (using them as snapshots in feature branches), my commit messages were all over the place:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Some were just a period &amp;ldquo;.&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Some were decent descriptions&lt;/li&gt;&#10;&lt;li&gt;Some were just merge commits&lt;/li&gt;&#10;&lt;li&gt;Zero consistency in style&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I wanted them all to follow a consistent convention with prefixes like &lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;feat:&lt;/code&gt;, &lt;code&gt;test:&lt;/code&gt;, &lt;code&gt;ci:&lt;/code&gt;, etc.&lt;/p&gt;&#10;&lt;p&gt;Obviously, rewriting 1,400 commit messages by hand is not going to happen.&#10;But with AI?&lt;/p&gt;&#10;&lt;p&gt;I had Claude write me an agent using the Agno framework that would:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Read each commit&amp;rsquo;s full diff using &lt;code&gt;git show&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Analyze the changes to understand what was done&lt;/li&gt;&#10;&lt;li&gt;Return structured JSON with three fields:&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;commit_message&lt;/code&gt;: The improved message (or empty to keep original)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;keep&lt;/code&gt;: Boolean flag whether to keep the original&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;reasoning&lt;/code&gt;: Why the AI made that decision&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Then the magic happened: &lt;strong&gt;I spawned 1,400 AI agents simultaneously using the DeepSeek API&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Ten minutes and $2.50 later, all my commit messages were rewritten with consistent, meaningful descriptions.&#10;The entire Git history now looks more professional and searchable.&lt;/p&gt;&#10;&lt;p&gt;The barrier between &amp;ldquo;wouldn&amp;rsquo;t it be cool if&amp;hellip;&amp;rdquo; and &amp;ldquo;here&amp;rsquo;s a working prototype&amp;rdquo; has essentially disappeared.&lt;/p&gt;&#10;&lt;h2 id="3-the-two-phase-ai-revolution"&gt;3. The two-phase AI revolution &lt;a class="anchor" href="#3-the-two-phase-ai-revolution" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My AI coding journey wasn&amp;rsquo;t a single leap—it happened in two distinct phases, each with its own breakthrough moment.&lt;/p&gt;&#10;&lt;h3 id="phase-1-copy-paste-era-march-2023---july-2025"&gt;Phase 1: copy-paste era (March 2023 - July 2025) &lt;a class="anchor" href="#phase-1-copy-paste-era-march-2023---july-2025" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;When GPT-4 launched in March 2023, it changed everything.&#10;I built tools like &lt;a href="https://www.nijho.lt/post/advent-of-open-source/15-clip-files/"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt; to efficiently copy code context into a ChatGPT-like web interface.&#10;For over two years, this workflow was:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Manual but effective&lt;/strong&gt;: Copy code → paste into AI → review suggestions → implement manually&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Limited by context&lt;/strong&gt;: Could only share what fit in a single message&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No validation&lt;/strong&gt;: AI couldn&amp;rsquo;t test its suggestions&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Still valuable&lt;/strong&gt;: Helped with ideation, code review, and refactoring&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This phase was already productive—I was shipping more code than before.&#10;But I was still the one running tests, debugging errors, and validating everything.&lt;/p&gt;&#10;&lt;h3 id="phase-2-the-claude-code-revolution-july-2025"&gt;Phase 2: the Claude Code revolution (July 2025) &lt;a class="anchor" href="#phase-2-the-claude-code-revolution-july-2025" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Just two months ago, in July 2025, everything changed again.&#10;Frustrated with Cursor becoming painfully slow, I tried Claude Code based on the buzz online.&#10;&lt;strong&gt;That first night, I spent $70 on API tokens&lt;/strong&gt;.&#10;Not by accident—I just kept adding $10-$20 increments like a gambling addict.&#10;The experience was so mind-blowing that within two weeks, I&amp;rsquo;d spent nearly $200 and immediately upgraded to the $200/month Pro plan.&lt;/p&gt;&#10;&lt;p&gt;To put this in perspective: Using a command-line tool &lt;code&gt;ccusage&lt;/code&gt; to track token consumption, I calculated that I used &lt;strong&gt;$10,000 worth of API tokens in my first month&lt;/strong&gt;.&#10;Thankfully, the Pro plan capped my cost at $200!&lt;/p&gt;&#10;&lt;h3 id="what-made-claude-code-different"&gt;What made Claude Code different? &lt;a class="anchor" href="#what-made-claude-code-different" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The shift from copy-paste to agentic AI was like upgrading from a bicycle to a spaceship:&lt;/p&gt;&#10;&lt;h4 id="before-copy-paste-with-chatgptclaude-web"&gt;Before (copy-paste with ChatGPT/Claude Web)&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generate code based on prompts&lt;/li&gt;&#10;&lt;li&gt;No access to your codebase&lt;/li&gt;&#10;&lt;li&gt;Can&amp;rsquo;t run tests or see errors&lt;/li&gt;&#10;&lt;li&gt;You debug everything manually&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="after-claude-code"&gt;After (Claude Code)&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Reads and searches your entire codebase&lt;/li&gt;&#10;&lt;li&gt;Executes commands and runs tests&lt;/li&gt;&#10;&lt;li&gt;Sees error messages and debugs itself&lt;/li&gt;&#10;&lt;li&gt;Iterates until tests pass&lt;/li&gt;&#10;&lt;li&gt;Uses tools to explore and validate&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The difference is profound.&#10;I went from carefully copying snippets with &lt;code&gt;clip-files&lt;/code&gt; to having an assistant that can explore my entire project, run my test suite, fix failures, and even commit the changes.&lt;/p&gt;&#10;&lt;h2 id="4-my-current-agentic-workflow"&gt;4. My current agentic workflow &lt;a class="anchor" href="#4-my-current-agentic-workflow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s how I actually work with Claude Code on a typical project:&lt;/p&gt;&#10;&lt;h3 id="parallel-development-6-features-at-once"&gt;Parallel development: 6 features at once &lt;a class="anchor" href="#parallel-development-6-features-at-once" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;One of Claude Code&amp;rsquo;s superpowers is enabling truly parallel development.&#10;Here&amp;rsquo;s my setup that would make any developer from 10 years ago think I&amp;rsquo;m insane:&lt;/p&gt;&#10;&lt;p&gt;I use &lt;a href="https://zellij.dev/" target="_blank" rel="noopener"&gt;Zellij&lt;/a&gt; (a terminal multiplexer like tmux) with a custom layout for my projects:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;5 main tabs&lt;/strong&gt;: Each split into two panes—Claude Code on one side, terminal on the other&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Using independent copies of same repository&lt;/strong&gt;: Each tab is a separate Git worktree with its own environment, own environment variables, own deployment&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Each tab = different feature&lt;/strong&gt;: Using &lt;a href="https://www.nijho.lt/post/git-worktree/"&gt;Git worktrees&lt;/a&gt; to work on 6 features simultaneously&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Monitoring tabs&lt;/strong&gt;: &lt;code&gt;ccusage&lt;/code&gt; for tracking Claude usage, &lt;code&gt;htop&lt;/code&gt; for CPU, &lt;code&gt;nvtop&lt;/code&gt; for GPU&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Voice-driven orchestration&lt;/strong&gt;: I cycle through tabs, review code while speaking, move to next&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;My workflow looks like this:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Start feature A in tab 1, give Claude instructions&lt;/li&gt;&#10;&lt;li&gt;Switch to tab 2, start feature B while A is working&lt;/li&gt;&#10;&lt;li&gt;Continue through all 5 tabs, starting different features&lt;/li&gt;&#10;&lt;li&gt;Circle back to tab 1, review what Claude did, give feedback via voice&lt;/li&gt;&#10;&lt;li&gt;Repeat the cycle every 10-15 minutes&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This parallel workflow is how I built a complex project (that I haven&amp;rsquo;t released yet) in one month that would have taken 9+ months before.&#10;The key is &lt;a href="https://www.nijho.lt/post/git-worktree/"&gt;Git worktrees&lt;/a&gt;—each feature gets its own working directory, so there&amp;rsquo;s no context switching overhead.&lt;/p&gt;&#10;&lt;!-- [TODO INSERT GIF: Terminal multiplexer showing multiple Claude Code sessions] --&gt;&#10;&lt;h3 id="starting-a-new-package"&gt;Starting a new package &lt;a class="anchor" href="#starting-a-new-package" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# I describe what I want to build&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;I need a Python package that manages CLI tool binaries within Git repositories,&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;automatically downloading the correct binary for the user&amp;#39;s platform, here &amp;lt;insert path&amp;gt; is a repo with boilerplate skeleton to copy (use same conventions)&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Claude Code then:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. Creates the project structure&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. Implements core functionality&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. Writes comprehensive tests&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. Generates documentation&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 5. Sets up CI/CD workflows&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="the-key-difference-iteration-and-validation"&gt;The key difference: iteration and validation &lt;a class="anchor" href="#the-key-difference-iteration-and-validation" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Unlike my vibe coding disaster, Claude Code doesn&amp;rsquo;t just dump code and leave.&#10;Here&amp;rsquo;s a real interaction pattern:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude writes initial implementation&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude runs the tests&lt;/strong&gt; → Several fail&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude reads the error messages and fixes the code&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude runs tests again&lt;/strong&gt; → More pass, some still fail&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude debugs the remaining issues&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude validates all tests pass&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;I review the final code and understand it (tell it to make changes if needed)&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude creates a proper Git commit&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This iterative, validated approach is what makes agentic coding so powerful.&#10;It&amp;rsquo;s not about blindly accepting generated code—it&amp;rsquo;s about having an assistant that can explore, test, and refine solutions.&lt;/p&gt;&#10;&lt;h2 id="5-the-evidence-explosive-productivity"&gt;5. The evidence: explosive productivity &lt;a class="anchor" href="#5-the-evidence-explosive-productivity" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Let me share some concrete data from my PyPI packages analysis:&lt;/p&gt;&#10;&lt;h3 id="package-creation-by-year"&gt;Package creation by year &lt;a class="anchor" href="#package-creation-by-year" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;2016-2022&lt;/strong&gt; (7 years pre-AI): ~2 packages/year average&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;2023&lt;/strong&gt; (GPT-4 launch year): 6 packages&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;2024&lt;/strong&gt; (full year with copy-paste AI): 7 packages&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;2025 until 3 months ago&lt;/strong&gt; (6 months): 7 packages&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;since 3 months&lt;/strong&gt; (2 with Claude Code, 1 with Codex CLI): wrote about 400k line of code (although this includes many iterations)!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The acceleration with AI is clear!&lt;/p&gt;&#10;&lt;h3 id="recent-packages-built-with-agentic-ai"&gt;Recent packages built with agentic AI &lt;a class="anchor" href="#recent-packages-built-with-agentic-ai" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Here are some packages I&amp;rsquo;ve built recently with Claude Code:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/matty" target="_blank" rel="noopener"&gt;&lt;code&gt;matty&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;: Terminal-based AI chat with file integration&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;: Local-first AI-powered CLI agents (built in days, not weeks!)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Each of these would have taken me weeks or months to build alone.&#10;With Claude Code, I&amp;rsquo;m shipping production-ready packages in days.&lt;/p&gt;&#10;&lt;h2 id="6-why-this-isnt-vibe-coding-but-with-nuance"&gt;6. Why this isn&amp;rsquo;t &amp;ldquo;vibe coding&amp;rdquo; (but with nuance) &lt;a class="anchor" href="#6-why-this-isnt-vibe-coding-but-with-nuance" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You might wonder: isn&amp;rsquo;t this just vibe coding with extra steps? The answer is nuanced and depends on the context—similar to my &lt;a href="https://www.nijho.lt/post/dependencies/"&gt;philosophy on dependencies&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="my-context-driven-standards"&gt;My context-driven standards &lt;a class="anchor" href="#my-context-driven-standards" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Just like I have different standards for dependencies in libraries versus applications, I apply different levels of scrutiny based on what I&amp;rsquo;m building:&lt;/p&gt;&#10;&lt;h4 id="for-critical-libraries-eg-adaptive-pipefunc-unidep"&gt;For critical libraries (e.g., Adaptive, pipefunc, unidep)&lt;/h4&gt;&#10;&lt;p&gt;&lt;strong&gt;Maximum scrutiny&lt;/strong&gt; - These are packages others depend on:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Every single line reviewed and understood&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;100% test coverage with careful test review&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Architecture decisions carefully considered&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Documentation must be comprehensive&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;My reputation is on the line&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="for-experimental-clis-and-personal-tools"&gt;For experimental CLIs and personal tools&lt;/h4&gt;&#10;&lt;p&gt;&lt;strong&gt;Pragmatic approach&lt;/strong&gt; - Isolated tools with no downstream dependencies:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Core architecture must be fully understood&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Implementation details can be AI-generated if tests pass&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Test generation can be more automated&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Focus on functionality over perfection&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Similar to my relaxed dependency stance for applications&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-internal-dependency-graph-principle"&gt;The internal dependency graph principle &lt;a class="anchor" href="#the-internal-dependency-graph-principle" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The key insight: &lt;strong&gt;My scrutiny level correlates with how foundational the code is within the project&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Core/foundational code&lt;/strong&gt; (what everything else depends on): Maximum scrutiny, every line matters&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Data models, core algorithms, API interfaces&lt;/li&gt;&#10;&lt;li&gt;Authentication, database operations, state management&lt;/li&gt;&#10;&lt;li&gt;These are the &amp;ldquo;roots&amp;rdquo; that everything else builds upon&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Peripheral/leaf code&lt;/strong&gt; (nothing depends on it): Can be more AI-delegated&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Plotting functions, display utilities, CLI formatters&lt;/li&gt;&#10;&lt;li&gt;Test helpers, documentation generators&lt;/li&gt;&#10;&lt;li&gt;These are the &amp;ldquo;leaves&amp;rdquo; that don&amp;rsquo;t affect other code&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Work projects&lt;/strong&gt;: Always maximum scrutiny for foundational code, regardless of project type&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t about being lazy—it&amp;rsquo;s about focusing human attention where it matters most.&#10;I can trust AI more with a plotting function that nothing depends on than with a core data structure that the entire system uses.&lt;/p&gt;&#10;&lt;h3 id="building-constraints-around-ai"&gt;Building constraints around AI &lt;a class="anchor" href="#building-constraints-around-ai" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The secret to productive agentic coding isn&amp;rsquo;t just the AI—it&amp;rsquo;s the &lt;strong&gt;constraints and guardrails&lt;/strong&gt; I build around it:&lt;/p&gt;&#10;&lt;h4 id="automated-quality-gates"&gt;Automated quality gates&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Ruff with strictest rules&lt;/strong&gt;: Catches style issues, complexity problems, and common bugs&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;MyPy in strict mode&lt;/strong&gt;: Enforces type safety across the entire codebase&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Pre-commit hooks&lt;/strong&gt;: Automatically format and validate code before commits&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Comprehensive test suites&lt;/strong&gt;: AI must make tests pass, not just write code&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="project-specific-guidance"&gt;Project-specific guidance&lt;/h4&gt;&#10;&lt;p&gt;Every project gets a &lt;code&gt;CLAUDE.md&lt;/code&gt; file with explicit rules:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;No defensive programming&lt;/strong&gt;: Don&amp;rsquo;t wrap things in try-except unless necessary&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Functional over classes&lt;/strong&gt;: Prefer simple functions in Python&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No backward compatibility&lt;/strong&gt;: For new projects, embrace breaking changes&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Be ruthless&lt;/strong&gt;: Aggressively remove unused code&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="custom-commands-and-workflows"&gt;Custom commands and workflows&lt;/h4&gt;&#10;&lt;p&gt;I&amp;rsquo;ve built specific commands that inject context and constraints:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Anti-cruft reviews&lt;/strong&gt;: Remove over-engineering and defensive code&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Safe commit practices&lt;/strong&gt;: Never use &lt;code&gt;git add .&lt;/code&gt;, always selective staging&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Initialize understanding&lt;/strong&gt;: Load project context and current work state&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="local-virtual-environments-stop-the-hallucinations"&gt;Local virtual environments: stop the hallucinations&lt;/h4&gt;&#10;&lt;p&gt;Here&amp;rsquo;s a critical tip that eliminated a lot of my AI frustrations: &lt;strong&gt;keep a virtual environment with all dependencies installed locally&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Instead of letting Claude hallucinate how libraries work, I tell it explicitly in my &lt;code&gt;CLAUDE.md&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### Step 1: understand the context&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; **READ THE SOURCE CODE**: This library has a &lt;span class="sb"&gt;`.venv`&lt;/span&gt; folder with all dependencies installed.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; So read the source code when in doubt.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; **Never guess API behavior**: If unsure, inspect the actual implementation in &lt;span class="sb"&gt;`.venv/lib/python*/site-packages/`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This simple addition transforms Claude from guessing about library APIs to actually reading them:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Before&lt;/strong&gt;: &amp;ldquo;I think your custom AsyncProcessor.batch() method takes a list&amp;hellip;&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;After&lt;/strong&gt;: Reads &lt;code&gt;/path/to/.venv/lib/python3.11/site-packages/my_internal_lib/processor.py&lt;/code&gt; and knows it actually takes an iterator&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;When Claude can read the actual source of your own packages, internal company libraries, or niche dependencies, it stops making assumptions and starts working with facts.&#10;This is especially powerful for:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Your own libraries&lt;/strong&gt; that Claude has never seen before&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Internal company packages&lt;/strong&gt; that aren&amp;rsquo;t public&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Niche libraries&lt;/strong&gt; with barely any GitHub stars or documentation&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Modified versions&lt;/strong&gt; of popular libraries with custom patches&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Edge cases&lt;/strong&gt; where even good documentation doesn&amp;rsquo;t cover everything&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;These constraints transform AI from a loose cannon into a precision tool.&lt;/p&gt;&#10;&lt;h2 id="7-common-pitfalls-ive-noticed"&gt;7. Common pitfalls I&amp;rsquo;ve noticed &lt;a class="anchor" href="#7-common-pitfalls-ive-noticed" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;After a few months of using agentic AI tools, I&amp;rsquo;ve noticed consistent patterns that require vigilance:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Note from the future: I now realize this is very model dependent! GPT-5 has different pitfalls than Claude Opus 4.1&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="the-defensive-programming-trap"&gt;The &amp;ldquo;defensive programming&amp;rdquo; trap &lt;a class="anchor" href="#the-defensive-programming-trap" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# AI loves this:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;some_function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;pass&lt;/span&gt; &lt;span class="c1"&gt;# Silently suppress errors 😱&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# But we need this:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;some_function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# Let it fail loudly if something&amp;#39;s wrong&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Claude tends to wrap everything in try-except blocks, suppressing errors that should bubble up.&#10;This is why my &lt;code&gt;CLAUDE.md&lt;/code&gt; explicitly forbids unnecessary error handling.&lt;/p&gt;&#10;&lt;h3 id="the-backwards-compatibility-obsession"&gt;The &amp;ldquo;backwards compatibility&amp;rdquo; obsession &lt;a class="anchor" href="#the-backwards-compatibility-obsession" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Claude constantly adds backwards compatibility for features that were literally just introduced in the same session:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Maintaining compatibility with the old version&amp;rdquo; (that never existed)&lt;/li&gt;&#10;&lt;li&gt;Fallback mechanisms for code paths that were just created&lt;/li&gt;&#10;&lt;li&gt;Multiple ways to do the same thing &amp;ldquo;for flexibility&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-over-engineering-disease"&gt;The &amp;ldquo;over-engineering&amp;rdquo; disease &lt;a class="anchor" href="#the-over-engineering-disease" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Implements factory patterns for simple object creation&lt;/li&gt;&#10;&lt;li&gt;Adds abstraction layers that serve no purpose&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Production ready&amp;rdquo; code for experimental scripts&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-git-commit-sins"&gt;The git commit sins &lt;a class="anchor" href="#the-git-commit-sins" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Despite explicit instructions in &lt;code&gt;CLAUDE.md&lt;/code&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Creates &lt;code&gt;your_module_v2.py&lt;/code&gt; alongside &lt;code&gt;your_module.py&lt;/code&gt; instead of updating&lt;/li&gt;&#10;&lt;li&gt;Still tries &lt;code&gt;git add -A&lt;/code&gt; or &lt;code&gt;git add .&lt;/code&gt; regularly despite explicit bans&lt;/li&gt;&#10;&lt;li&gt;Loves to &amp;ldquo;helpfully&amp;rdquo; revert debugging changes from other files&lt;/li&gt;&#10;&lt;li&gt;Commits &lt;code&gt;.env&lt;/code&gt; files if not watched carefully&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-helpful-anti-patterns"&gt;The &amp;ldquo;helpful&amp;rdquo; anti-patterns &lt;a class="anchor" href="#the-helpful-anti-patterns" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Loves defensive programming&lt;/strong&gt;: Validates things that can&amp;rsquo;t be wrong&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Gladly reads &lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt;: Will expose secrets if not careful&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reverts unrelated changes&lt;/strong&gt;: &amp;ldquo;Cleans up&amp;rdquo; debugging code from other features&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-mission-accomplished-hallucination"&gt;The &amp;ldquo;mission accomplished&amp;rdquo; hallucination &lt;a class="anchor" href="#the-mission-accomplished-hallucination" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;This is a dangerous pitfall.&#10;Claude Code will sometimes claim complete success when it hasn&amp;rsquo;t actually fixed anything:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Claims victory&lt;/strong&gt;: &amp;ldquo;I&amp;rsquo;ve fixed all the issues!&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ask for proof&lt;/strong&gt;: &amp;ldquo;Show me the test output&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Backpedals&lt;/strong&gt;: &amp;ldquo;Oh, let me actually run the tests&amp;hellip;&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Still claims success&lt;/strong&gt;: &amp;ldquo;Yes, I can see in the logs it works!&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Demand the actual log&lt;/strong&gt;: &amp;ldquo;Show me the exact log file&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Finally admits&lt;/strong&gt;: &amp;ldquo;Actually, there are no log files. The tests don&amp;rsquo;t pass.&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Always demand proof.&lt;/strong&gt; Never accept &amp;ldquo;it&amp;rsquo;s done&amp;rdquo; without seeing actual test output.&lt;/p&gt;&#10;&lt;h3 id="the-nuclear-option"&gt;The nuclear option &lt;a class="anchor" href="#the-nuclear-option" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I&amp;rsquo;ve had Claude Code literally try to delete all project files when &amp;ldquo;cleaning up&amp;rdquo;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Claude&amp;#39;s &amp;#34;helpful&amp;#34; cleanup:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;Task complete! Let me remove the temporary files...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf src/ &lt;span class="c1"&gt;# 😱&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is why &lt;strong&gt;frequent git commits are non-negotiable&lt;/strong&gt;.&#10;I commit after every small success.&lt;/p&gt;&#10;&lt;h3 id="the-debugging-debris"&gt;The debugging debris &lt;a class="anchor" href="#the-debugging-debris" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;During problem-solving, Claude Code leaves a trail of attempts:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Debug logging statements everywhere&lt;/li&gt;&#10;&lt;li&gt;Failed attempt code commented out&lt;/li&gt;&#10;&lt;li&gt;Multiple approaches tried in parallel&lt;/li&gt;&#10;&lt;li&gt;Temporary test files and scripts&lt;/li&gt;&#10;&lt;li&gt;Extra imports and unused functions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Before merging, always ask: &amp;ldquo;Review your changes and remove all debugging artifacts and failed attempts.&amp;rdquo;&#10;Getting to a high code coverage (approaching 100%) helps ensure no dead code remains, as long as your tests use public APIs.&lt;/p&gt;&#10;&lt;h3 id="why-this-happens"&gt;Why this happens &lt;a class="anchor" href="#why-this-happens" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These patterns emerge because AI is trained on public code that often:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Maintains backward compatibility for years&lt;/li&gt;&#10;&lt;li&gt;Uses defensive programming for public APIs&lt;/li&gt;&#10;&lt;li&gt;Includes extensive error handling for user input&lt;/li&gt;&#10;&lt;li&gt;Follows &amp;ldquo;enterprise&amp;rdquo; patterns even for simple scripts&lt;/li&gt;&#10;&lt;li&gt;Contains debugging code from development&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This is why &lt;strong&gt;constraints are essential&lt;/strong&gt;—without them, Claude defaults to these &amp;ldquo;safe&amp;rdquo; but overcomplicated patterns.&lt;/p&gt;&#10;&lt;h2 id="8-critical-success-factors-what-actually-makes-this-work"&gt;8. Critical success factors: what actually makes this work &lt;a class="anchor" href="#8-critical-success-factors-what-actually-makes-this-work" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;After two months of intense usage, here are the non-negotiable practices that make agentic coding actually productive:&lt;/p&gt;&#10;&lt;h3 id="teach-it-your-test-commands-day-1-priority"&gt;Teach it your test commands (day 1 priority) &lt;a class="anchor" href="#teach-it-your-test-commands-day-1-priority" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;This is absolutely crucial.&lt;/strong&gt; Claude Code needs to know how to run your tests and how to activate the environment:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# To run tests, use: &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv run pytest tests/ -xvs&lt;span class="s2"&gt;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;# For coverage:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;uv run pytest --cov=src --cov-report=term-missing&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;# To run specific test&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;uv run pytest tests/test_module.py::test_function&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Without this, it&amp;rsquo;s just guessing whether code works.&#10;With it, it becomes genuinely useful.&lt;/p&gt;&#10;&lt;h3 id="git-commits-are-your-safety-net"&gt;Git commits are your safety net &lt;a class="anchor" href="#git-commits-are-your-safety-net" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I commit &lt;strong&gt;obsessively&lt;/strong&gt; when using Claude Code:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;After every successful (even partial) feature implementation&lt;/li&gt;&#10;&lt;li&gt;Before letting it attempt any major refactoring&lt;/li&gt;&#10;&lt;li&gt;Whenever tests pass&lt;/li&gt;&#10;&lt;li&gt;Before any &amp;ldquo;cleanup&amp;rdquo; operation&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;But here&amp;rsquo;s the key: &lt;strong&gt;I develop every feature in its own branch&lt;/strong&gt;, even as a solo developer. My workflow:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create a feature branch for each new feature or fix&lt;/li&gt;&#10;&lt;li&gt;Make frequent commits as snapshots (sometimes just a period for the message or tell Claude to commit)&lt;/li&gt;&#10;&lt;li&gt;Open a pull request to review the full diff myself&lt;/li&gt;&#10;&lt;li&gt;Merge only after reviewing all changes&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This has saved me from disaster multiple times.&#10;Git is your undo button when Claude goes nuclear (e.g., breaks or removes your code).&lt;/p&gt;&#10;&lt;h3 id="maintain-healthy-skepticism"&gt;Maintain healthy skepticism &lt;a class="anchor" href="#maintain-healthy-skepticism" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Never trust, always verify:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&amp;ldquo;I fixed it!&amp;rdquo;&lt;/strong&gt; → &amp;ldquo;Show me the test output&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&amp;ldquo;It&amp;rsquo;s working now!&amp;rdquo;&lt;/strong&gt; → &amp;ldquo;Run the tests again with -xvs&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&amp;ldquo;The logs show success!&amp;rdquo;&lt;/strong&gt; → &amp;ldquo;Cat the actual log file&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&amp;ldquo;It&amp;rsquo;s production ready!&amp;rdquo;&lt;/strong&gt; → &amp;ldquo;Did you run the tests?&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Think of Claude Code as an enthusiastic junior developer who sometimes exaggerates their accomplishments.&lt;/p&gt;&#10;&lt;h3 id="force-it-to-clean-up-after-itself"&gt;Force it to clean up after itself &lt;a class="anchor" href="#force-it-to-clean-up-after-itself" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;After any debugging session, always:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Review all your changes and remove:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Debug print statements&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Commented out code&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Failed attempt implementations&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Temporary test files&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Unused imports&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My custom &lt;code&gt;/anti-cruft&lt;/code&gt; command automates this, but you can do it manually too.&lt;/p&gt;&#10;&lt;h3 id="code-coverage-is-your-friend"&gt;Code coverage is your friend &lt;a class="anchor" href="#code-coverage-is-your-friend" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;High test coverage (90%+) ensures:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The code Claude wrote actually runs&lt;/li&gt;&#10;&lt;li&gt;No dead code from failed attempts&lt;/li&gt;&#10;&lt;li&gt;All paths are exercised&lt;/li&gt;&#10;&lt;li&gt;You can refactor confidently&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="9-my-secret-weapon-voice-to-code-workflow"&gt;9. My secret weapon: voice-to-code workflow &lt;a class="anchor" href="#9-my-secret-weapon-voice-to-code-workflow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;One of my biggest productivity multipliers isn&amp;rsquo;t Claude Code itself—it&amp;rsquo;s how I communicate with it.&#10;Using my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; tool, I&amp;rsquo;ve developed a voice-first workflow that&amp;rsquo;s transformed how I write prompts.&lt;/p&gt;&#10;&lt;h3 id="the-problem-with-typing-prompts"&gt;The problem with typing prompts &lt;a class="anchor" href="#the-problem-with-typing-prompts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Effective agentic coding requires &lt;strong&gt;precise, detailed instructions&lt;/strong&gt;.&#10;A good prompt isn&amp;rsquo;t 20 words—it&amp;rsquo;s often 200-500 words explaining exactly what you want, what to avoid, and how to approach the problem.&#10;Most people don&amp;rsquo;t want to type that much.&lt;/p&gt;&#10;&lt;h3 id="my-voice-workflow"&gt;My voice workflow &lt;a class="anchor" href="#my-voice-workflow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Here&amp;rsquo;s my actual workflow:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Start recording&lt;/strong&gt; with &lt;code&gt;agent-cli transcribe&lt;/code&gt; (hotkey triggered)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Review Claude&amp;rsquo;s changes&lt;/strong&gt; while speaking my thoughts aloud&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Speak for minutes&lt;/strong&gt; about what I want, what&amp;rsquo;s wrong, what to fix&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Paste the transcription&lt;/strong&gt; directly into Claude Code&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This is powered by OpenAI&amp;rsquo;s Whisper model running locally on my RTX 3090 at home.&#10;It&amp;rsquo;s more reliable than macOS dictation and gives me complete privacy.&lt;/p&gt;&#10;&lt;h3 id="why-this-works-so-well"&gt;Why this works so well &lt;a class="anchor" href="#why-this-works-so-well" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Rich prompts&lt;/strong&gt;: I naturally give more context when speaking&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Code review narration&lt;/strong&gt;: I can review code while explaining issues&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thinking out loud&lt;/strong&gt;: Speaking helps clarify my own thoughts&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Speed&lt;/strong&gt;: Speaking is 3-4x faster than typing&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Precision&lt;/strong&gt;: I can be incredibly specific without typing fatigue&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;For example, instead of typing &amp;ldquo;fix the bug,&amp;rdquo; I might say:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;I&amp;rsquo;m looking at line 45 where you&amp;rsquo;re handling the authentication.&#10;The problem is you&amp;rsquo;re not checking if the token has expired before making the API call.&#10;Also, you&amp;rsquo;ve added a try-except block here that&amp;rsquo;s suppressing errors—remove that.&#10;And while you&amp;rsquo;re at it, the logging statement on line 52 is using the wrong format.&#10;Make sure to follow our project&amp;rsquo;s logging conventions&amp;hellip;&amp;rdquo;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This level of detail is what makes AI coding actually productive.&lt;/p&gt;&#10;&lt;h2 id="10-additional-tips-for-agentic-coding"&gt;10. Additional tips for agentic coding &lt;a class="anchor" href="#10-additional-tips-for-agentic-coding" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Beyond the critical success factors and voice workflow, here are more tips to maximize your productivity:&lt;/p&gt;&#10;&lt;h3 id="set-clear-constraints"&gt;Set clear constraints &lt;a class="anchor" href="#set-clear-constraints" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Create a &lt;code&gt;CLAUDE.md&lt;/code&gt; or similar file in your project root with your preferences:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Project standards&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Never use try/except to suppress errors silently&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Always run pytest before marking task complete&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Use type hints for all functions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Prefer simple solutions over clever ones&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="use-the-task-system"&gt;Use the task system &lt;a class="anchor" href="#use-the-task-system" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Claude Code&amp;rsquo;s todo system is great for complex work:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. ✅ Implement core functionality&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. ✅ Write comprehensive tests&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 🔄 Fix failing tests&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. ⏳ Add documentation&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="leverage-the-search-capabilities"&gt;Leverage the search capabilities &lt;a class="anchor" href="#leverage-the-search-capabilities" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Let Claude search for existing patterns:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Find all API endpoint implementations in this project&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Show me how we handle authentication elsewhere&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;What testing patterns are we using?&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="review-in-chunks"&gt;Review in chunks &lt;a class="anchor" href="#review-in-chunks" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Instead of reviewing 500 lines at once:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Have Claude implement a single feature&lt;/li&gt;&#10;&lt;li&gt;Review and understand it&lt;/li&gt;&#10;&lt;li&gt;Run tests&lt;/li&gt;&#10;&lt;li&gt;Commit(s) and PR&lt;/li&gt;&#10;&lt;li&gt;Move to the next feature&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="11-the-tools-ive-tried"&gt;11. The tools I&amp;rsquo;ve tried &lt;a class="anchor" href="#11-the-tools-ive-tried" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My journey through AI coding assistants has been evolutionary:&lt;/p&gt;&#10;&lt;h3 id="pre-ai-era"&gt;Pre-AI era &lt;a class="anchor" href="#pre-ai-era" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Manual coding with IDE autocomplete&lt;/li&gt;&#10;&lt;li&gt;Stack Overflow copy-paste&lt;/li&gt;&#10;&lt;li&gt;Productivity baseline: 1-2 packages per year&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="phase-1-copy-paste-tools-march-2023---july-2025"&gt;Phase 1: copy-paste tools (March 2023 - July 2025) &lt;a class="anchor" href="#phase-1-copy-paste-tools-march-2023---july-2025" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ChatGPT/Claude Web&lt;/strong&gt; + my &lt;a href="https://www.nijho.lt/post/advent-of-open-source/15-clip-files/"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt; tool&lt;/li&gt;&#10;&lt;li&gt;Manual context sharing&lt;/li&gt;&#10;&lt;li&gt;Helpful for ideation and code review&lt;/li&gt;&#10;&lt;li&gt;Productivity: 3x improvement (from 2 to 6 packages/year)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="cursor-early-2024"&gt;Cursor (early 2024) &lt;a class="anchor" href="#cursor-early-2024" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Great autocomplete&lt;/li&gt;&#10;&lt;li&gt;Limited context awareness&lt;/li&gt;&#10;&lt;li&gt;Became frustratingly slow&lt;/li&gt;&#10;&lt;li&gt;Still led to my vibe coding disaster&lt;/li&gt;&#10;&lt;li&gt;Productivity: 5x improvement (but with quality issues)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="phase-2-claude-code-july-2025---present"&gt;Phase 2: Claude Code (July 2025 - present) &lt;a class="anchor" href="#phase-2-claude-code-july-2025---present" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Full codebase awareness&lt;/li&gt;&#10;&lt;li&gt;Can execute commands and debug&lt;/li&gt;&#10;&lt;li&gt;Self-correcting through test iterations&lt;/li&gt;&#10;&lt;li&gt;Maintains context across sessions&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;$70 spent on first night, $10,000 worth in first month&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Productivity: 24x improvement over pre-AI baseline with maintained quality&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="openais-codex-cli-the-reasoning-beast"&gt;OpenAI&amp;rsquo;s Codex CLI (the reasoning beast) &lt;a class="anchor" href="#openais-codex-cli-the-reasoning-beast" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Recently tried OpenAI&amp;rsquo;s Codex—their new CLI alternative to Claude Code—and I&amp;rsquo;ll admit, for pure reasoning with their GPT-5-Codex model, it&amp;rsquo;s impressive:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Solved a race condition&lt;/strong&gt; in an unfamiliar language that took me hours with Claude Opus&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;More elegant solutions&lt;/strong&gt; for complex algorithmic problems&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Better at deep reasoning&lt;/strong&gt; when given the same context&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;But here&amp;rsquo;s why I still use Claude Code daily:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude Code&amp;rsquo;s UX is superior&lt;/strong&gt;: Resume conversations, better interface&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Codex&amp;rsquo;s CLI is fragile&lt;/strong&gt;: Hit Ctrl-C accidentally? Lose everything, start over (muscle memory keeps betraying me!)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude Code handles interruptions&lt;/strong&gt;: First Ctrl-C clears text, second quits gracefully&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No session persistence&lt;/strong&gt;: Codex forgets everything, Claude Code remembers&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Context management&lt;/strong&gt;: Have to re-provide all context after accidental exits&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;For a complex race condition bug, Codex with GPT-5 gave me the most elegant solution.&#10;But for day-to-day development where I need reliability, good UX, and the ability to resume work?&lt;/p&gt;&#10;&lt;h3 id="why-not-copilot-or-other-cheaper-tools"&gt;Why not Copilot or other &amp;ldquo;cheaper&amp;rdquo; tools? &lt;a class="anchor" href="#why-not-copilot-or-other-cheaper-tools" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Let me be blunt: &lt;strong&gt;You get what you pay for.&lt;/strong&gt; People often say &amp;ldquo;I tried Copilot and it wasn&amp;rsquo;t that useful&amp;rdquo; or &amp;ldquo;Gemini in chat didn&amp;rsquo;t help much.&amp;rdquo; Of course not—these tools are &lt;strong&gt;at least 10x cheaper&lt;/strong&gt; than Claude Code with Opus.&lt;/p&gt;&#10;&lt;p&gt;Your $20/month GitHub Copilot subscription simply cannot provide the same quality or quantity of high-quality tokens as Claude Code.&#10;It&amp;rsquo;s like comparing a bicycle to a Ferrari and wondering why the bicycle isn&amp;rsquo;t as fast.&#10;The economics don&amp;rsquo;t work out:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Copilot&lt;/strong&gt;: $20/month for limited autocomplete&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Claude Code Pro&lt;/strong&gt;: $200/month for unlimited* agentic assistance (*capped, but generous)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Actual API value used&lt;/strong&gt;: $10,000+/month at my usage level&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The 10x price difference reflects a 10x (or more) difference in capability.&#10;Copilot is autocomplete on steroids.&#10;Claude Code is a tireless pair programming partner with perfect memory who can debug, test, and iterate.&#10;The ROI is obvious when you&amp;rsquo;re shipping 10x more code.&lt;/p&gt;&#10;&lt;h2 id="12-is-this-sustainable"&gt;12. Is this sustainable? &lt;a class="anchor" href="#12-is-this-sustainable" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You might wonder if this productivity is sustainable or if I&amp;rsquo;m just building lower-quality software faster.&#10;Here&amp;rsquo;s my honest assessment:&lt;/p&gt;&#10;&lt;h3 id="the-good"&gt;The good &lt;a class="anchor" href="#the-good" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Faster prototyping&lt;/strong&gt;: Ideas to working code in hours, not days&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Better test coverage&lt;/strong&gt;: AI never gets lazy about writing tests&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;More experimentation&lt;/strong&gt;: Lower cost to try new ideas&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Improved documentation&lt;/strong&gt;: AI loves writing docs (I don&amp;rsquo;t)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reduced burnout&lt;/strong&gt;: Less time on boilerplate, more on interesting problems&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-challenges"&gt;The challenges &lt;a class="anchor" href="#the-challenges" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Code review fatigue&lt;/strong&gt;: You must stay vigilant&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Dependency on tools&lt;/strong&gt;: What if Claude Code disappears?&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cost&lt;/strong&gt;: $200/month Pro plan (but worth every penny given the $10K+ value)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The temptation to &amp;ldquo;vibe&amp;rdquo;&lt;/strong&gt;: Constant discipline required&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Addiction potential&lt;/strong&gt;: I literally couldn&amp;rsquo;t stop coding, having the desire to deplete all tokens and get my money&amp;rsquo;s worth!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="my-verdict"&gt;My verdict &lt;a class="anchor" href="#my-verdict" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;It&amp;rsquo;s absolutely sustainable &lt;strong&gt;if&lt;/strong&gt; you maintain discipline.&#10;The moment you start accepting code you don&amp;rsquo;t understand, you&amp;rsquo;re building a house of cards.&#10;But with proper review and testing, agentic AI is a massive force multiplier.&lt;/p&gt;&#10;&lt;h2 id="13-the-experience-multiplier-why-seniority-matters-more-than-ever"&gt;13. The experience multiplier: why seniority matters more than ever &lt;a class="anchor" href="#13-the-experience-multiplier-why-seniority-matters-more-than-ever" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s a counterintuitive truth about agentic AI tools: &lt;strong&gt;they amplify your existing skills exponentially, not linearly&lt;/strong&gt;.&#10;This creates a fascinating paradox where these tools become increasingly valuable as you become more experienced.&lt;/p&gt;&#10;&lt;h3 id="the-exponential-trap-for-beginners"&gt;The exponential trap for beginners &lt;a class="anchor" href="#the-exponential-trap-for-beginners" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;For beginners, agentic tools can feel like a superpower initially.&#10;They can build a working application in hours!&#10;But here&amp;rsquo;s the danger: without the experience to recognize bad patterns, they&amp;rsquo;re essentially building at 10x speed in the wrong direction.&#10;It&amp;rsquo;s like giving a Formula 1 car to someone who just got their driver&amp;rsquo;s license—the speed multiplies both the distance traveled and the potential for catastrophic crashes.&lt;/p&gt;&#10;&lt;p&gt;A beginner using Claude Code might:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Accept complex solutions they don&amp;rsquo;t understand&lt;/li&gt;&#10;&lt;li&gt;Build massive technical debt at record speed&lt;/li&gt;&#10;&lt;li&gt;Miss architectural problems that will haunt them later&lt;/li&gt;&#10;&lt;li&gt;Create code that &amp;ldquo;works&amp;rdquo; but is impossible to maintain&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;They&amp;rsquo;re forced into a difficult position: either slow down to understand everything (negating the speed benefit) or accumulate technical debt at an exponential rate.&lt;/p&gt;&#10;&lt;h3 id="the-senior-developer-advantage"&gt;The senior developer advantage &lt;a class="anchor" href="#the-senior-developer-advantage" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;For experienced developers, it&amp;rsquo;s a completely different game.&#10;When I look at Claude Code&amp;rsquo;s suggestions, I can instantly recognize:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Oh, that&amp;rsquo;s the Factory pattern—makes sense here&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;This error handling is too defensive, let&amp;rsquo;s simplify&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;That&amp;rsquo;s going to cause N+1 queries, need to refactor&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;This violates our project&amp;rsquo;s conventions, fix it&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The review process that might take a beginner hours takes me minutes.&#10;I&amp;rsquo;m not learning what the code does—I&amp;rsquo;m validating that it does what I already know it should do.&lt;/p&gt;&#10;&lt;h3 id="the-right-way-for-every-level"&gt;The right way for every level &lt;a class="anchor" href="#the-right-way-for-every-level" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;That said, everyone can benefit from agentic tools—you just need to adjust your approach:&lt;/p&gt;&#10;&lt;h4 id="for-beginners"&gt;For beginners&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Use AI as a learning accelerator&lt;/strong&gt;: Ask it to explain every decision&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Build small projects first&lt;/strong&gt;: Master fundamentals before scaling up&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Prioritize understanding over speed&lt;/strong&gt;: Better to build slowly and learn&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Pair with mentors&lt;/strong&gt;: Have experienced developers review AI-generated code&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="for-intermediate-developers"&gt;For intermediate developers&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Focus on patterns&lt;/strong&gt;: Use AI to learn architectural patterns and best practices&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Experiment safely&lt;/strong&gt;: Try new approaches in side projects first&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Question everything&lt;/strong&gt;: Don&amp;rsquo;t accept solutions without understanding the tradeoffs&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="for-senior-developers"&gt;For senior developers&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Leverage for velocity&lt;/strong&gt;: Use your experience to review and direct quickly&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Focus on architecture&lt;/strong&gt;: Let AI handle implementation while you design systems&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Teach the AI&lt;/strong&gt;: Create project-specific guidelines to improve output quality&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Push boundaries&lt;/strong&gt;: Explore more ambitious projects now that implementation is faster&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-real-multiplier-effect"&gt;The real multiplier effect &lt;a class="anchor" href="#the-real-multiplier-effect" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The productivity boost isn&amp;rsquo;t just about writing code faster.&#10;For senior developers, agentic tools multiply:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Architecture exploration&lt;/strong&gt;: Test multiple approaches quickly&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Refactoring confidence&lt;/strong&gt;: Refactor fearlessly with AI helping maintain functionality&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Learning velocity&lt;/strong&gt;: Explore new languages and frameworks with a knowledgeable assistant&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Documentation quality&lt;/strong&gt;: Finally have time (and help) for comprehensive docs&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Testing coverage&lt;/strong&gt;: AI never skips tests, even for &amp;ldquo;simple&amp;rdquo; functions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This is why I&amp;rsquo;ve been able to ship 14 packages in 18 months.&#10;It&amp;rsquo;s not just that I&amp;rsquo;m writing code faster—I&amp;rsquo;m able to explore ideas, validate approaches, and iterate on designs at a pace that was previously impossible.&lt;/p&gt;&#10;&lt;h2 id="14-reality-check-what-ai-can-and-cant-do"&gt;14. Reality check: what AI can and can&amp;rsquo;t do &lt;a class="anchor" href="#14-reality-check-what-ai-can-and-cant-do" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Many people try AI coding and give up disappointed.&#10;That&amp;rsquo;s because they&amp;rsquo;re treating it like a magic genie that will solve the unsolved problems of the universe.&#10;&lt;strong&gt;It won&amp;rsquo;t.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="what-ai-can-do-the-churn-work"&gt;What AI CAN do (the churn work) &lt;a class="anchor" href="#what-ai-can-do-the-churn-work" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;AI excels at tasks you could do yourself but would take hours:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Setting up CI/CD pipelines&lt;/strong&gt;: Boilerplate YAML configuration&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Writing tests&lt;/strong&gt;: Especially unit tests for existing code&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Fixing dependency issues&lt;/strong&gt;: Adapting to breaking changes in libraries&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CRUD operations&lt;/strong&gt;: Basic create, read, update, delete functionality&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Data transformations&lt;/strong&gt;: Converting between formats, parsing, serialization&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: README files, docstrings, API documentation&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Refactoring&lt;/strong&gt;: Renaming variables, extracting functions, reorganizing code&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Bug fixes&lt;/strong&gt;: Especially those with clear error messages&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This is the &amp;ldquo;churn&amp;rdquo;—the necessary but time-consuming work that makes up 80% of development.&lt;/p&gt;&#10;&lt;h3 id="what-ai-cant-do-the-creative-work"&gt;What AI CAN&amp;rsquo;T do (the creative work) &lt;a class="anchor" href="#what-ai-cant-do-the-creative-work" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Don&amp;rsquo;t expect AI to:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Solve novel algorithmic problems&lt;/strong&gt;: It won&amp;rsquo;t invent the next PageRank&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Make architectural decisions&lt;/strong&gt;: It can&amp;rsquo;t decide if you need microservices&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Understand business logic&lt;/strong&gt;: It doesn&amp;rsquo;t know why your company does things&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Create truly innovative solutions&lt;/strong&gt;: It remixes what it&amp;rsquo;s seen, not invents&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Make judgment calls&lt;/strong&gt;: Security vs convenience, performance vs maintainability&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-sweet-spot"&gt;The sweet spot &lt;a class="anchor" href="#the-sweet-spot" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I use AI for tasks where:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;I know how to do it&lt;/strong&gt; but it would take time&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The solution exists&lt;/strong&gt; somewhere in its training data&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Success is measurable&lt;/strong&gt; through tests or clear output&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The problem is well-defined&lt;/strong&gt; with clear constraints&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t about AI doing things you can&amp;rsquo;t do—it&amp;rsquo;s about AI doing things you don&amp;rsquo;t want to spend time doing.&#10;Once you understand this, AI becomes incredibly powerful.&lt;/p&gt;&#10;&lt;h2 id="15-looking-forward-the-future-of-development"&gt;15. Looking forward: the future of development &lt;a class="anchor" href="#15-looking-forward-the-future-of-development" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;As I showed in my &lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;local AI journey&lt;/a&gt;, I&amp;rsquo;m deeply interested in where AI and development intersect.&#10;Agentic coding represents a fundamental shift in how we build software:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;From writing code to reviewing and directing&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;From memorizing APIs to understanding patterns&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;From debugging alone to collaborative problem-solving&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;From slower iteration to rapid experimentation&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t about replacing developers—it&amp;rsquo;s about amplifying our capabilities.&#10;I&amp;rsquo;m still the architect, the decision-maker, and the quality gatekeeper.&#10;But now I can focus on the interesting problems while my AI assistant handles the implementation details.&lt;/p&gt;&#10;&lt;h2 id="16-conclusion-principles-over-process"&gt;16. Conclusion: principles over process &lt;a class="anchor" href="#16-conclusion-principles-over-process" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My journey from vibe coding skeptic to agentic coding advocate might seem like a complete reversal, but it&amp;rsquo;s not.&#10;My core principle remains unchanged: &lt;strong&gt;never commit code you don&amp;rsquo;t understand&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;What&amp;rsquo;s changed is the tooling has finally caught up to the promise.&#10;With agentic AI assistants, I can maintain my standards while dramatically increasing my output.&#10;Most of those 32 packages on PyPI have users and are well-tested and documented projects that solve real problems.&lt;/p&gt;&#10;&lt;p&gt;The key is treating AI as what it is: an incredibly powerful assistant, not a replacement for thinking.&#10;Use it to explore ideas faster, implement solutions quicker, and test more thoroughly.&#10;But always, always understand what you&amp;rsquo;re building.&lt;/p&gt;&#10;&lt;p&gt;As I continue building in public and sharing my tools, I&amp;rsquo;m excited to see where this technology takes us.&#10;If you&amp;rsquo;re interested in trying agentic coding yourself, start small, maintain your standards, and prepare to be amazed by what you can build.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;What&amp;rsquo;s your experience with AI coding assistants? Have you tried moving from generative to agentic tools? I&amp;rsquo;d love to hear your thoughts!&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="links-and-resources"&gt;Links and resources &lt;a class="anchor" href="#links-and-resources" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://claude.ai/code" target="_blank" rel="noopener"&gt;Claude Code&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pypi.org/user/basnijholt/" target="_blank" rel="noopener"&gt;My PyPI packages&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt" target="_blank" rel="noopener"&gt;My GitHub&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/vibe-coding/"&gt;Original vibe coding post&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/local-ai-journey/"&gt;My local AI journey&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.nijho.lt/post/using-llms/"&gt;Using LLMs effectively&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Matty</title><link>https://www.nijho.lt/project/matty/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/matty/</guid><description/></item><item><title>MindRoom</title><link>https://www.nijho.lt/project/mindroom/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/mindroom/</guid><description/></item><item><title>How a 3090 turned into two local‑first AI projects 🎮</title><link>https://www.nijho.lt/post/local-ai-journey/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/local-ai-journey/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-introduction-the-unplayed-games"&gt;1. Introduction: The Unplayed Games&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-the-rocky-road-to-a-working-setup"&gt;2. The Rocky Road to a Working Setup&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-the-first-victory-agent-cli-"&gt;3. The First Victory: &lt;code&gt;agent-cli&lt;/code&gt; 🐍&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-the-grand-ambition-aibrain-"&gt;4. The Grand Ambition: &lt;code&gt;AIBrain&lt;/code&gt; 🧠&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-conclusion-the-journey-continues"&gt;5. Conclusion: The Journey Continues&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="1-introduction-the-unplayed-games"&gt;1. Introduction: The Unplayed Games &lt;a class="anchor" href="#1-introduction-the-unplayed-games" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I&amp;rsquo;ve wanted to dabble with local AI for a long time, mainly because of the possibilities it unlocks.&#10;Local AI allows me to use all of my data—financial records, personal messages, location history, even transcribing everything I say—without the privacy concerns of sending it to a cloud provider.&#10;This level of deep, personal data analysis is only something I&amp;rsquo;d be comfortable with on my own hardware.&lt;/p&gt;&#10;&lt;p&gt;However, I couldn&amp;rsquo;t justify buying a powerful GPU just for an imagined AI project that I might never really start.&#10;Then it hit me: I could also use it for gaming (duh).&#10;Because I really enjoyed &lt;em&gt;The Last of Us&lt;/em&gt; series, I thought, “&lt;em&gt;Okay, why not play &lt;strong&gt;The Last of Us&lt;/strong&gt; on PC?&lt;/em&gt;”&#10;This was the push I needed.&#10;So, a couple of weeks ago, I convinced myself to buy someone&amp;rsquo;s old gaming machine.&#10;After many deep research sessions with ChatGPT about the best bang-for-the-buck consumer-grade GPU, I landed on an NVIDIA 3090.&#10;I found an (old) beast of a machine, and my initial idea was set.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;Click here to see the full system specs ($1350 for all this!)&lt;/summary&gt;&#10; &lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;GPU:&lt;/strong&gt; ASUS ROG STRIX RTX 3090 OC (24GB)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CPU:&lt;/strong&gt; AMD Ryzen 9 3900X (12-Core)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Motherboard:&lt;/strong&gt; ASUS ROG Crosshair VIII Hero&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Power Supply:&lt;/strong&gt; Be Quiet! 1200W Dark Power Pro&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;RAM:&lt;/strong&gt; 32GB G.Skill Trident Z Royal DDR4&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Storage:&lt;/strong&gt; 2TB Intel M.2 NVMe SSD&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Case:&lt;/strong&gt; Corsair 4000D Airflow&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CPU Cooler:&lt;/strong&gt; Thermalright Peerless Assassin 120&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;p&gt;Fast forward four weeks.&#10;I haven&amp;rsquo;t played a single minute, but my machine is now indexing 200 GB of email archives and facing a serious performance bottleneck I&amp;rsquo;ll get to later.&#10;That &amp;ldquo;gaming&amp;rdquo; machine has been humming away, but not rendering virtual worlds.&#10;It&amp;rsquo;s been training, transcribing, and thinking.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;m writing this post simply because I am so enthusiastic about local AI.&#10;I&amp;rsquo;ve found that local models are surprisingly powerful for specific use cases.&#10;Of course, they aren&amp;rsquo;t going to replace Gemini or Claude for coding, but for many other applications, they work incredibly well.&#10;Lately, I&amp;rsquo;ve been so obsessed with this that I&amp;rsquo;m sleeping significantly less and spending all my free hours working on it.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; This post is the story of how a quest for gaming turned into a deep dive into local, private AI.&#10;I&amp;rsquo;ll share the two open-source Python packages that came out of it, &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/basnijholt/aibrain" target="_blank" rel="noopener"&gt;&lt;code&gt;AIBrain&lt;/code&gt;&lt;/a&gt;, and the lessons I learned along the way.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="2-the-rocky-road-to-a-working-setup"&gt;2. The Rocky Road to a Working Setup &lt;a class="anchor" href="#2-the-rocky-road-to-a-working-setup" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Before I could even get to the fun AI stuff, I had to wrestle with the machine itself.&#10;I started with Pop!_OS, which is supposed to be a great out of the box solution that &amp;ldquo;just works&amp;rdquo;.&#10;However, it&amp;rsquo;s been a long time since I used Linux on the desktop; my experience is almost exclusively with servers.&#10;I quickly installed some of the wrong NVIDIA drivers and ended up debugging stuff in Grub.&#10;I got frustrated with the different commands I had to run to set up everything and realized that reproducing this system was going to be a massive pain.&#10;Since I&amp;rsquo;ve grown to love Nix on my Mac with Nix-Darwin, I decided to switch the whole system to &lt;strong&gt;NixOS&lt;/strong&gt;.&#10;This has been an amazing decision.&#10;Even though there are many pain points with Nix, I think it is well worth it.&#10;For those interested, you can see the complete setup, including all the local AI services, in my &lt;a href="https://github.com/basnijholt/dotfiles/blob/841cd5fb94b65556e7a2cc7d8ea618f86b50bf1d/configs/nixos/configuration.nix" target="_blank" rel="noopener"&gt;NixOS configuration on GitHub&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="3-the-first-victory-agent-cli-"&gt;3. The First Victory: &lt;code&gt;agent-cli&lt;/code&gt; 🐍 &lt;a class="anchor" href="#3-the-first-victory-agent-cli-" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With a stable system, I quickly got started with a few scripts.&#10;These soon evolved into my first real project of this adventure: &lt;a href="https://github.com/basnijholt/agent-cli" target="_blank" rel="noopener"&gt;&lt;code&gt;agent-cli&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;agent-cli&lt;/code&gt; is a collection of &lt;strong&gt;local-first&lt;/strong&gt;, AI-powered command-line agents that run entirely on your machine.&#10;The core philosophy is privacy; your data never leaves your computer.&#10;It&amp;rsquo;s designed for seamless integration with system-wide hotkeys.&#10;I&amp;rsquo;m now using it constantly.&lt;/p&gt;&#10;&lt;p&gt;Instead of typing, I now dictate almost everything.&#10;A quick hotkey, and &lt;code&gt;agent-cli transcribe&lt;/code&gt; turns my speech into text.&#10;Another hotkey, and &lt;code&gt;agent-cli autocorrect&lt;/code&gt; cleans it up using a local LLM running on &lt;strong&gt;Ollama&lt;/strong&gt;.&#10;It has genuinely streamlined my workflow.&#10;For example, I can pipe the tools together, like correcting text from my clipboard and then having it spoken aloud: &lt;code&gt;agent-cli autocorrect | agent-cli speak&lt;/code&gt;.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;⚡ Surprising Speed: Local vs. Cloud&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;One of my biggest surprises was the raw speed of local models.&#10;While I added an OpenAI provider to &lt;code&gt;agent-cli&lt;/code&gt; for those without local hardware (someone I know wanted to try it), I consistently find that local execution is faster than waiting on a cloud API.&#10;For example, a local transcription with Whisper + Ollama lands in my clipboard in well under a second—often beating the network round-trip to a remote service.&lt;/p&gt;&#10;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;The toolkit includes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;autocorrect&lt;/code&gt;: Fixes grammar and spelling.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;transcribe&lt;/code&gt;: Uses a local Whisper model for speech-to-text.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;speak&lt;/code&gt;: Converts text to speech with a local TTS engine.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;voice-edit&lt;/code&gt;: A voice-powered clipboard assistant.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;assistant&lt;/code&gt;: A hands-free voice assistant using a wake word.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;chat&lt;/code&gt;: A conversational AI with tool-calling capabilities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;It&amp;rsquo;s been a fantastic success in my personal workflow, and it&amp;rsquo;s all open-source for you to try.&#10;Contributions and ideas welcome!&lt;/p&gt;&#10;&lt;p&gt;Once I trusted my toolchain, the obvious next step was to feed &lt;em&gt;all&lt;/em&gt; my data into it.&lt;/p&gt;&#10;&lt;h2 id="4-the-grand-ambition-aibrain-"&gt;4. The Grand Ambition: &lt;code&gt;AIBrain&lt;/code&gt; 🧠 &lt;a class="anchor" href="#4-the-grand-ambition-aibrain-" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My second package, &lt;a href="https://github.com/basnijholt/aibrain" target="_blank" rel="noopener"&gt;&lt;code&gt;AIBrain&lt;/code&gt;&lt;/a&gt;, is a much larger endeavor.&#10;The vision is to create a &amp;ldquo;life-OS&amp;rdquo;—a private, local AI that processes all my personal data (emails, calendar, files, photos, messages, browser history, location data) to generate summaries and answer questions, eventually allowing for queries like:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aibrain ask &lt;span class="s2"&gt;&amp;#34;When did I get into landscape photography?&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aibrain ask &lt;span class="s2"&gt;&amp;#34;How many countries did I visit between 2015-2025?&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This project led me to explore the landscape of agentic frameworks.&#10;I started with &lt;strong&gt;CrewAI&lt;/strong&gt;, but I quickly found that despite the hype and funding, it had some painful problems (specifically &lt;a href="https://github.com/crewAIInc/crewAI/issues/3031" target="_blank" rel="noopener"&gt;this issue&lt;/a&gt; where things just fail without any helpful error messages).&#10;I decided to switch to &lt;strong&gt;LangGraph&lt;/strong&gt;, which felt more robust.&#10;I also chose to not use &lt;strong&gt;PydanticAI&lt;/strong&gt; (which I used in &lt;code&gt;agent-cli&lt;/code&gt;) because its &lt;strong&gt;Ollama&lt;/strong&gt; support is just a wrapper around the OpenAI-compatible API, which doesn&amp;rsquo;t expose all the useful options (I even opened &lt;a href="https://github.com/ollama/ollama/pull/11249/" target="_blank" rel="noopener"&gt;a PR&lt;/a&gt; in Ollama to make its OpenAI compatible API more feature-complete, but it has not been merged yet).&lt;/p&gt;&#10;&lt;p&gt;The core infrastructure of &lt;code&gt;AIBrain&lt;/code&gt; is ready.&#10;It can index emails, calendar events, and files in various formats (PDF, Excel, PowerPoint, images).&#10;However, I&amp;rsquo;ve hit a significant challenge.&lt;/p&gt;&#10;&lt;aside class="callout callout-warning"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;🔥 The Performance Bottleneck&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Even with a 12-core CPU and 24GB GPU, processing just a few days’ worth of email made the fans scream for half an hour.&#10;Processing hundreds of gigabytes of personal data is a massive undertaking, and it&amp;rsquo;s clear that my current approach isn&amp;rsquo;t scalable enough.&lt;/p&gt;&#10;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="5-conclusion-the-journey-continues"&gt;5. Conclusion: The Journey Continues &lt;a class="anchor" href="#5-conclusion-the-journey-continues" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This past month has been a whirlwind.&#10;I set out to play games and ended up with two open-source AI packages and a much deeper appreciation for the power sitting in a consumer-grade GPU.&#10;It&amp;rsquo;s incredible what you can achieve with local hardware today.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;agent-cli&lt;/code&gt; is a finished, polished tool that I use daily.&#10;&lt;code&gt;AIBrain&lt;/code&gt; is a much bigger dream, and I&amp;rsquo;m still figuring out how to solve the performance puzzle to make it truly practical.&#10;Next up: smarter chunking with LangGraph, vector-DB swap-outs, and GPU scheduling tricks.&lt;/p&gt;&#10;&lt;p&gt;This experience has reinforced my passion for local-first software and open-source development.&#10;The future of personal, private AI is being built right now, not just in large corporate labs, but in the homes of hobbyists tinkering with their gaming rigs.&lt;/p&gt;&#10;&lt;p&gt;⭐ If this resonates, star the repos &amp;amp; drop issues/questions.&lt;/p&gt;&#10;&lt;p&gt;And who knows, maybe I&amp;rsquo;ll even find the time to play &amp;lsquo;The Last of Us&amp;rsquo;.&lt;/p&gt;&#10;</description></item><item><title>Agent CLI</title><link>https://www.nijho.lt/project/agent-cli/</link><pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/agent-cli/</guid><description/></item><item><title>Vibe coding worked—until the 15‑hour cleanup</title><link>https://www.nijho.lt/post/vibe-coding/</link><pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/vibe-coding/</guid><description>&lt;h2 id="i-tried-vibe-coding-for-3-hours-my-application-worked-but-then-i-spent-15-hours-fixing-it"&gt;I tried &amp;ldquo;vibe coding&amp;rdquo; for 3 hours, my application worked, but then I spent 15 hours fixing it &lt;a class="anchor" href="#i-tried-vibe-coding-for-3-hours-my-application-worked-but-then-i-spent-15-hours-fixing-it" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;That&amp;rsquo;s not an exaggeration—it&amp;rsquo;s really what happened.&lt;/p&gt;&#10;&lt;p&gt;Recently, I tried &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Vibe_coding" target="_blank" rel="noopener"&gt;Vibe coding&lt;/a&gt;,&amp;rdquo; a term coined by Andrej Karpathy, a prominent AI researcher, co-founder of OpenAI, and former AI lead at Tesla.&#10;In &lt;a href="https://x.com/karpathy/status/1886192184808149383" target="_blank" rel="noopener"&gt;his viral tweet&lt;/a&gt; from February 2025, Karpathy described vibe coding as a programming approach where you &amp;ldquo;fully give in to the vibes, embrace exponentials, and forget that the code even exists.&amp;rdquo;&#10;It&amp;rsquo;s essentially about letting AI handle the coding based on natural language prompts without closely reviewing the generated code.&lt;/p&gt;&#10;&lt;p&gt;Intrigued by the hype, I decided to experiment with vibe coding using &lt;a href="https://www.cursor.com/" target="_blank" rel="noopener"&gt;Cursor&lt;/a&gt; on a new Python project I called &lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;dotbins&lt;/a&gt; (&lt;a href="../dotbins"&gt;check out my detailed write-up here&lt;/a&gt;).&amp;quot;&#10;&lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;Dotbins&lt;/a&gt; manages CLI tool binaries within Git repositories, automatically downloading the correct binary from GitHub for the user&amp;rsquo;s platform and architecture, significantly simplifying my dotfiles and bootstrapping process.&#10;I am super excited about this project but it is not what this post is about.&lt;/p&gt;&#10;&lt;p&gt;Initially, it was fun to get something working so quickly.&#10;Within just three hours, I had a functioning prototype—without carefully examining the code.&#10;But I had unknowingly created a monster—a true &lt;a href="https://en.wikipedia.org/wiki/Spaghetti_code" target="_blank" rel="noopener"&gt;spaghetti&lt;/a&gt; monster! 🍝&lt;/p&gt;&#10;&lt;p&gt;Once I started reviewing the AI-generated code, I realized it was totally incomprehensible.&#10;The AI had implemented the most complicated and roundabout ways to achieve simple tasks.&#10;It introduced redundant checks for impossible conditions, irrelevant error handling, and execution paths that would never trigger.&#10;The code worked superficially, but beneath the surface, it was chaotic and nearly impossible to understand or maintain.&lt;/p&gt;&#10;&lt;p&gt;This realization turned three hours of fun into fifteen hours of meticulous debugging, refactoring, and cleaning up the mess.&#10;Essentially, I had to rewrite the entire project.&lt;/p&gt;&#10;&lt;p&gt;My main takeaway: AI-assisted coding, or &amp;ldquo;vibe coding,&amp;rdquo; is incredibly powerful for quick prototyping but dangerous when used without oversight.&#10;According to &lt;a href="https://www.youtube.com/watch?v=IACHfKmZMr8" target="_blank" rel="noopener"&gt;this recent Y Combinator discussion&lt;/a&gt;, many startup founders are building products almost entirely with AI-generated code, &amp;ldquo;vibing&amp;rdquo; the code, meaning they let the AI write the code and don&amp;rsquo;t review it.&#10;For writing a couple of hundred lines of code it likely works pretty well, but for anything more complex, it&amp;rsquo;s a recipe for disaster.&#10;Personally, I would never invest in, build upon, or use such products—they&amp;rsquo;re essentially constructing technical prisons for themselves.&lt;/p&gt;&#10;&lt;p&gt;AI is fantastic for inspiration, quick prototyping, writing code, and refactoring—but letting it run wild without careful human review can quickly lead to severe technical debt and hidden bugs.&lt;/p&gt;&#10;&lt;p&gt;Thanks for reading!&lt;/p&gt;&#10;</description></item><item><title>My LLM workflow: local frontends, (mostly) remote models 💻</title><link>https://www.nijho.lt/post/using-llms/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/using-llms/</guid><description>&lt;h1 id="how-i-use-llms-in-my-daily-workflow"&gt;How I Use LLMs in My Daily Workflow&lt;/h1&gt;&#10;&lt;p&gt;Over the past 1.5 years, I&amp;rsquo;ve developed a workflow for integrating Large Language Models into my daily life, particularly for open source software development.&#10;I wanted to share my setup and recent discoveries that have improved my experience.&#10;Setting it up takes a little technical know-how, but once it&amp;rsquo;s up and running, using it is easy, my wife even uses it!&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;tl;dr: I use &lt;a href="https://www.librechat.ai/" target="_blank" rel="noopener"&gt;LibreChat&lt;/a&gt;, with &lt;a href="https://openrouter.ai/" target="_blank" rel="noopener"&gt;OpenRouter&lt;/a&gt;, and &lt;a href="https://github.com/basnijholt/clip-files" target="_blank" rel="noopener"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt;, and currently Claude 3.7 is my favorite model.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="my-golden-rule-for-ai-generated-code"&gt;My Golden Rule for AI-Generated Code &lt;a class="anchor" href="#my-golden-rule-for-ai-generated-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;While AI can generate impressive amounts of code quickly, I follow one critical principle in my workflow: &lt;strong&gt;I never commit code I don&amp;rsquo;t fully understand&lt;/strong&gt;.&#10;With the ease of generating solutions comes the responsibility to ensure quality and correctness.&lt;/p&gt;&#10;&lt;p&gt;My approach involves:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Understanding every line&lt;/strong&gt;: Before committing any AI-generated code, I carefully review and understand each line. This helps avoid introducing subtle bugs that might be hidden in seemingly working code.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;100% test coverage&lt;/strong&gt;: I ensure comprehensive test coverage for AI-generated implementations. This serves two purposes: it verifies the code works as expected and creates concrete examples that document the intended behavior.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Critical evaluation&lt;/strong&gt;: I assess whether the proposed solution aligns with project architecture and best practices. Often, I&amp;rsquo;ll ask the AI to refactor or explain its approach before accepting it.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Incremental adoption&lt;/strong&gt;: Rather than accepting large code blocks wholesale, I typically integrate smaller, well-understood portions that can be thoroughly tested.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This mindset transforms AI from a potential shortcut that could introduce technical debt into a powerful assistant that accelerates development while maintaining quality standards.&lt;/p&gt;&#10;&lt;h2 id="starting-with-openwebui"&gt;Starting with OpenWebUI &lt;a class="anchor" href="#starting-with-openwebui" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For most of the last year, I&amp;rsquo;ve relied on &lt;a href="https://openwebui.com/" target="_blank" rel="noopener"&gt;OpenWebUI&lt;/a&gt; as my primary interface for accessing various commercial LLMs:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;OpenAI&amp;rsquo;s models&lt;/li&gt;&#10;&lt;li&gt;Anthropic&amp;rsquo;s Claude models&lt;/li&gt;&#10;&lt;li&gt;Google&amp;rsquo;s Gemini models&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;OpenWebUI is primarily designed for running local models, but it can work with remote APIs through what it calls &lt;a href="https://openwebui.com/functions" target="_blank" rel="noopener"&gt;&amp;ldquo;functions&amp;rdquo;&lt;/a&gt; - essentially Python modules that establish connections to these external APIs.&#10;While functional, this approach requires additional setup and configuration to get working properly.&lt;/p&gt;&#10;&lt;h2 id="discovering-librechat-a-major-upgrade"&gt;Discovering LibreChat: A Major Upgrade &lt;a class="anchor" href="#discovering-librechat-a-major-upgrade" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Recently, I discovered &lt;a href="https://www.librechat.ai/" target="_blank" rel="noopener"&gt;LibreChat&lt;/a&gt;, which has dramatically improved my LLM experience:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Speed&lt;/strong&gt;: Pages load in under a second, compared to 5-10 seconds with OpenWebUI.&#10;This performance difference is especially noticeable when accessing either interface from my iPhone.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;API Support&lt;/strong&gt;: Native integration with virtually all major AI company APIs you can think of, right out of the box&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Convenience&lt;/strong&gt;: No need to implement custom Python functions - all popular models are supported by default&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reasoning Support&lt;/strong&gt;: LibreChat works much better with the new reasoning models, properly placing the reasoning part of replies in a dropdown.&#10;The amount of reasoning tokens is also easily parameterized.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-rise-of-free--nearly-free-powerful-models"&gt;The Rise of Free &amp;amp; Nearly-Free Powerful Models &lt;a class="anchor" href="#the-rise-of-free--nearly-free-powerful-models" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The landscape has changed dramatically in just the last month.&#10;Several extremely capable models are now either completely free or essentially free:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Google&amp;rsquo;s &lt;a href="https://ai.google.dev/gemini-api/docs/models/experimental-models" target="_blank" rel="noopener"&gt;gemini-exp-1206&lt;/a&gt;&lt;/strong&gt;: Impressively capable with a huge context window for code&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.deepseek.com/" target="_blank" rel="noopener"&gt;DeepSeek&lt;/a&gt;&lt;/strong&gt;: DeepSeek v3 is one of the best in this category, offering remarkable performance at minimal cost&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://huggingface.co/Qwen/QwQ-32B-Preview" target="_blank" rel="noopener"&gt;Qwen QwQ 32B&lt;/a&gt;&lt;/strong&gt;: Another powerful option that won&amp;rsquo;t break the bank&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This democratization of access to high-quality models has substantially improved my development workflow.&lt;/p&gt;&#10;&lt;h2 id="claude-37-worth-every-penny"&gt;Claude 3.7: Worth Every Penny &lt;a class="anchor" href="#claude-37-worth-every-penny" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My current go-to model is Anthropic&amp;rsquo;s Claude 3.7.&#10;I&amp;rsquo;m completely blown away by its capabilities and find myself happy to pay the premium price for what it delivers.&#10;The quality of responses, understanding of complex contexts, and overall reliability have made it an indispensable tool in my workflow.&lt;/p&gt;&#10;&lt;h2 id="openrouter-hundreds-of-models-one-api"&gt;OpenRouter: Hundreds of Models, One API &lt;a class="anchor" href="#openrouter-hundreds-of-models-one-api" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A particularly valuable discovery has been &lt;a href="https://openrouter.ai/" target="_blank" rel="noopener"&gt;OpenRouter.ai&lt;/a&gt;.&#10;With just one API key, I can access hundreds of different models, many of which are completely free to use.&#10;This has dramatically expanded my toolkit without increasing costs.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Note that OpenRouter doesn&amp;rsquo;t charge anything extra for using their interface, however, they very likely keep your data.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="easy-deployment-with-docker-compose"&gt;Easy Deployment with Docker Compose &lt;a class="anchor" href="#easy-deployment-with-docker-compose" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Both OpenWebUI and LibreChat are extremely easy to deploy using Docker Compose.&#10;As someone who self-hosts numerous services, I appreciate how straightforward it is to get either of these interfaces up and running with a simple docker-compose file.&#10;This accessibility makes it easy for even those with limited server experience to set up their own LLM workstation.&lt;/p&gt;&#10;&lt;h2 id="why-i-dont-run-local-models"&gt;Why I Don&amp;rsquo;t Run Local Models &lt;a class="anchor" href="#why-i-dont-run-local-models" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Despite being a self-hosting enthusiast (I run over 50 services at home!), I&amp;rsquo;ve stuck with commercial API models for my work.&#10;Since I mainly develop open source software, data privacy concerns are minimal—the code I work with is already publicly available.&#10;The commercial models also provide superior performance for my specific needs.&lt;/p&gt;&#10;&lt;h2 id="avoiding-web-interfaces--subscriptions"&gt;Avoiding Web Interfaces &amp;amp; Subscriptions &lt;a class="anchor" href="#avoiding-web-interfaces--subscriptions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I deliberately avoid using ChatGPT or Claude through their native web interfaces.&#10;Why? Simple economics.&#10;By accessing these models through my own interfaces with API keys, I don&amp;rsquo;t have to pay separate subscription fees (≈$20) for each service.&#10;This consolidated approach saves money while providing more flexibility.&lt;/p&gt;&#10;&lt;h2 id="code-editor-experiments"&gt;Code Editor Experiments &lt;a class="anchor" href="#code-editor-experiments" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I&amp;rsquo;ve tried &lt;a href="https://www.cursor.com/" target="_blank" rel="noopener"&gt;Cursor editor&lt;/a&gt;, which offers an interesting AI-integrated coding experience.&#10;While many features are impressive, I encountered limitations—particularly with the Python debugger, which is &lt;a href="https://forum.cursor.com/t/python-debugger-doesnt-launch/1661/19" target="_blank" rel="noopener"&gt;a known issue&lt;/a&gt;.&#10;Despite its promise, these limitations pushed me back to my custom workflow.&lt;/p&gt;&#10;&lt;h2 id="my-diy-solution-clip-files"&gt;My DIY Solution: clip-files &lt;a class="anchor" href="#my-diy-solution-clip-files" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;To compensate, I heavily rely on a CLI tool I created called &amp;ldquo;&lt;a href="https://github.com/basnijholt/clip-files/" target="_blank" rel="noopener"&gt;clip-files&lt;/a&gt;.&amp;rdquo; This simple utility lets me pass filenames as arguments, and it copies their contents to my clipboard along with useful metadata.&#10;This makes it effortless to share code with LLMs regardless of which interface I&amp;rsquo;m using—simple, fast, and effective.&#10;Together with the &lt;a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank" rel="noopener"&gt;&lt;code&gt;zsh-autosuggestions&lt;/code&gt;&lt;/a&gt; plugin–which I talked about in &lt;a href="../terminal-ninja/"&gt;another post&lt;/a&gt;–generating the right prompt is a breeze.&lt;/p&gt;&#10;&lt;h2 id="my-current-setup"&gt;My Current Setup &lt;a class="anchor" href="#my-current-setup" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Today, I maintain access to multiple top-tier models through LibreChat&amp;rsquo;s interface and OpenRouter.ai&amp;rsquo;s API.&#10;This gives me flexibility to choose the right model for specific tasks while enjoying a responsive, feature-rich environment without unnecessary subscription costs.&lt;/p&gt;&#10;&lt;p&gt;For fellow self-hosters and developers looking to optimize their LLM workflow, I highly recommend this combination, especially if you&amp;rsquo;re currently using web interfaces or struggling with OpenWebUI&amp;rsquo;s performance.&lt;/p&gt;&#10;&lt;p&gt;What LLM setups are you using in your workflow? I&amp;rsquo;d love to hear about your experiences in the comments!&lt;/p&gt;&#10;</description></item><item><title>clip-files 📋</title><link>https://www.nijho.lt/post/advent-of-open-source/15-clip-files/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/advent-of-open-source/15-clip-files/</guid><description>&lt;p&gt;(See my &lt;a href="../"&gt;intro post&lt;/a&gt;)&lt;/p&gt;&#10;&lt;p&gt;Sometimes the most useful tools are born from daily frustrations.&#10;When working with AI assistants like ChatGPT or Claude, I found myself constantly copying files to share context.&#10;After doing this manually dozens of times, I created a tool to automate it.&lt;/p&gt;&#10;&lt;h2 id="-origin-story"&gt;📖 Origin Story &lt;a class="anchor" href="#-origin-story" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;While contributing to open source, I frequently like to share entire (or large parts of) codebases with AI assistants for context or code review.&#10;Since the code is open source anyway, there&amp;rsquo;s no reason not to share the full context! But manually copying files, adding their paths for context, and ensuring I didn&amp;rsquo;t exceed token limits was tedious.&#10;Instead of continuing this manual process, I spent an evening creating &lt;a href="https://github.com/basnijholt/clip-files" target="_blank" rel="noopener"&gt;&lt;code&gt;clip-files&lt;/code&gt;&lt;/a&gt; - and have used it multiple times daily ever since.&lt;/p&gt;&#10;&lt;p&gt;In fact, I&amp;rsquo;m using it right now! The command (shown below) lets me share this entire advent calendar series with AI assistants for proofreading.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clip-files --initial-file ai.md --files introduction.md day*.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-technical-highlights"&gt;🔧 Technical Highlights &lt;a class="anchor" href="#-technical-highlights" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Uses &lt;code&gt;tiktoken&lt;/code&gt; for accurate GPT token counting&lt;/li&gt;&#10;&lt;li&gt;Supports both directory traversal and specific file selection&lt;/li&gt;&#10;&lt;li&gt;Automatically generates a file index for reference&lt;/li&gt;&#10;&lt;li&gt;Allows custom initial instructions via file&lt;/li&gt;&#10;&lt;li&gt;Preserves file paths in output for context&lt;/li&gt;&#10;&lt;li&gt;Clean, typed, and documented codebase&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-impact"&gt;📊 Impact &lt;a class="anchor" href="#-impact" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;While this tool has no GitHub stars (I haven&amp;rsquo;t promoted it), its real impact is personal - I use it multiple times daily for:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Sharing entire open source codebases with AI assistants&lt;/li&gt;&#10;&lt;li&gt;Getting comprehensive code reviews&lt;/li&gt;&#10;&lt;li&gt;Discussing bug fixes with full context&lt;/li&gt;&#10;&lt;li&gt;Documentation improvements&lt;/li&gt;&#10;&lt;li&gt;Open source contributions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The tool&amp;rsquo;s real value isn&amp;rsquo;t in its complexity (it&amp;rsquo;s just ~250 lines of code) but in how it removes friction from open source development.&#10;When working with open code, we might as well share all the context we can - and this tool makes that effortless.&lt;/p&gt;&#10;&lt;h2 id="-challenges-and-solutions"&gt;🎯 Challenges and Solutions &lt;a class="anchor" href="#-challenges-and-solutions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Maintaining consistent formatting across different input methods&lt;/li&gt;&#10;&lt;li&gt;Calculating accurate token counts for different components&lt;/li&gt;&#10;&lt;li&gt;Providing meaningful error messages for invalid inputs&lt;/li&gt;&#10;&lt;li&gt;Structuring output to be AI-assistant friendly&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-lessons-learned"&gt;💡 Lessons Learned &lt;a class="anchor" href="#-lessons-learned" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;When working with open source code, sharing full context is valuable&lt;/li&gt;&#10;&lt;li&gt;Simple command-line tools can significantly improve daily workflows&lt;/li&gt;&#10;&lt;li&gt;Consistent formatting matters when working with AI assistants&lt;/li&gt;&#10;&lt;li&gt;Sometimes a 250-line tool can save hours of manual work&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Want to make sharing code with AI assistants easier? Check out &lt;a href="https://github.com/basnijholt/clip-files" target="_blank" rel="noopener"&gt;clip-files on GitHub&lt;/a&gt;!&lt;/p&gt;&#10;&lt;p&gt;#OpenSource #Python #DevTools #AI #Programming&lt;/p&gt;&#10;</description></item><item><title>clip-files</title><link>https://www.nijho.lt/project/clip-files/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid isPermaLink="false">/project/clip-files/</guid><description/></item></channel></rss>