on master help sign in
Add %shelf: a Gall agent serving a public page of the ship's published apps
commitb83bb032ac6c6bcc105365e3540038343387bf5b authoriko <mail@iko.soy> dateTue 20 Oct 2026, 12:11 (3 days ago)
29 files changed+18018
README.md+256 desk/app/shelf.hoon+289 desk/desk.bill+2 desk/gen/shelf/body.hoon+13 desk/gen/shelf/head.hoon+13 desk/lib/dbug.hoon+161 desk/lib/default-agent.hoon+69 desk/lib/server.hoon+159 desk/lib/shelf.hoon+746 desk/lib/sigil.hoon+254 desk/lib/sigil/symbols.hoon+14361 desk/lib/skeleton.hoon+51 desk/lib/test.hoon+103 desk/mar/bill.hoon+34 desk/mar/css.hoon+25 desk/mar/hoon.hoon+303 desk/mar/js.hoon+25 desk/mar/kelvin.hoon+28 desk/mar/mime.hoon+32 desk/mar/noun.hoon+22 desk/mar/shelf/action.hoon+12 desk/mar/txt.hoon+274 desk/sur/docket.hoon+82 desk/sur/shelf.hoon+13 desk/sur/treaty.hoon+59 desk/sys.kelvin+1 desk/tests/lib/shelf.hoon+471 desk/web/copy.js+17 desk/web/shelf.css+143
README.mdnew file+256
@@ -0,0 +1,256 @@
1+# %shelf
2+
3+A public web page that lists the apps your Urbit ship publishes, so anyone can
4+install them on their own ship.
5+
6+The page shows your ship's `%treaty` alliance: your own published desks plus
7+any desks you republish from other ships. Each app has an Install button that
8+opens it in the visitor's own Landscape, and the Dojo `|install` command as a
9+fallback. The page follows the visitor's light or dark preference. It has no
10+JavaScript except for the Copy buttons.
11+
12+%shelf answers on exactly one path, `/shelf`. Run it behind a reverse proxy
13+that serves it at the root of a dedicated domain (see
14+[Serving it on its own domain](#serving-it-on-its-own-domain)). All of the
15+page's links point at `/`.
16+
17+## Requirements
18+
19+- Kernel `[%zuse 408]`.
20+- `%landscape`, which provides `%treaty`. Fresh ships have it.
21+
22+## Install
23+
24+From the repo root, with your ship running:
25+
26+```
27+~sampel-palnet:dojo> |new-desk %shelf
28+~sampel-palnet:dojo> |mount %shelf
29+```
30+
31+```sh
32+cp -R desk/* /path/to/pier/shelf/
33+```
34+
35+```
36+~sampel-palnet:dojo> |commit %shelf
37+~sampel-palnet:dojo> |install our %shelf
38+```
39+
40+The page is now at `https://<your-ship>/shelf`. It is meant to be opened
41+through your own domain, though: on the ship's address the page renders, but
42+its links lead to `/`, which belongs to Landscape.
43+
44+## Update
45+
46+Copy `desk/*` into the mount again and run `|commit %shelf`. Then check that
47+`.^(cass:clay %cw /=shelf=)` moved: if the new version doesn't build, Clay
48+keeps the old one and logs nothing.
49+
50+%shelf is installed from your own ship, so it gets no over-the-air updates.
51+After a kernel upgrade, Clay holds it until `desk/sys.kelvin` lists the new
52+`%zuse` version; update that file (or pull a release that has) and commit.
53+`+vats %shelf` shows whether it is running or held.
54+
55+## Choose what's listed
56+
57+%shelf lists your `%treaty` alliance. A desk needs a `desk.docket-0` file
58+before you can publish it.
59+
60+- List one of your own desks with `:treaty|publish %my-app`, and remove it with
61+ `:treaty|unpublish %my-app`.
62+- To republish another ship's desk, follow the publisher with
63+ `:treaty|ally ~other-ship`, then add the desk with
64+ `:treaty|add-desk ~other-ship %app`. Remove it with
65+ `:treaty|remove-desk ~other-ship %app`, and stop following with
66+ `:treaty|unally ~other-ship`.
67+
68+A republished app appears once your ship has received its docket from the
69+publisher, which happens a few seconds after you ally them. Apps are sorted by
70+title. %shelf reads the alliance on every request, but browsers may show a
71+copy up to a minute old.
72+
73+## Serving it on its own domain
74+
75+Point a domain such as `apps.example.com` at a Caddy server that sends every
76+request to the ship's `/shelf`:
77+
78+```caddyfile
79+apps.example.com {
80+ @other not path /
81+ redir @other /
82+ rewrite * /shelf
83+ reverse_proxy 127.0.0.1:8080 {
84+ header_up Forwarded "proto={scheme}"
85+ }
86+}
87+```
88+
89+- `8080` is the ship's HTTP port.
90+- `redir` sends every path except `/` back to `/`, so nothing else on your
91+ ship can be reached through this domain.
92+- `rewrite` replaces only the path, so the query string the page relies on
93+ (`/?install=…`) reaches the ship intact.
94+- `Forwarded` tells Eyre the visitor came over HTTPS. Eyre trusts it only
95+ from `127.0.0.1`, hence the IP instead of `localhost`. Without it, a ship
96+ that also serves its own TLS redirects every proxied request to its HTTPS
97+ port. It also lets %shelf mark its cookie `Secure`.
98+- Caddy passes the original `Host` header through. %shelf compares it with
99+ `Origin` or `Referer` when a browser doesn't send `Sec-Fetch-Site`. With
100+ another proxy, pass `Host` through (nginx: `proxy_set_header Host $host;`)
101+ and send `Forwarded` (or `X-Forwarded-Proto`) the same way.
102+- Your ship's own domain is unaffected: `/` still goes to Landscape.
103+
104+This config was tested with Caddy 2.11 in front of a fake ship.
105+
106+## Analytics and other tags
107+
108+You can add raw HTML to the end of the page's `<head>` and `<body>`, for
109+example an analytics snippet:
110+
111+```
112+:shelf|head '<script defer data-domain="apps.example.com" src="https://plausible.io/js/script.js"></script>'
113+:shelf|body '<script async src="https://example.com/counter.js"></script>'
114+```
115+
116+- The HTML goes into the page as-is, unescaped.
117+- Dojo takes the snippet on one line. Inside it, write a `'` as `\'`, a `\` as
118+ `\\`, and a newline (if you need one) as `\0a`.
119+- Clear a setting with `:shelf|head ''` or `:shelf|body ''`.
120+- Read the current values with `.^(@t %gx /=shelf=/head/noun)` and
121+ `.^(@t %gx /=shelf=/body/noun)`.
122+- Only the ship itself can change these settings.
123+
124+## JSON
125+
126+Ask for JSON with an `Accept` header, at the same URL:
127+
128+```sh
129+curl -H 'Accept: application/json' https://apps.example.com/
130+```
131+
132+```json
133+[{
134+ "ship": "~sampel-palnet", "desk": "harbor", "title": "Harbor",
135+ "info": "Every desk on your ship: its version, its source, its updates.",
136+ "color": "#24466f", "image": "https://…/harbor.svg", "version": "2.0.1",
137+ "website": "https://…", "license": "MIT", "hash": "0v…",
138+ "install": "|install ~sampel-palnet %harbor"
139+}]
140+```
141+
142+- `image` is `null` when the docket has none, and `website` is `""`.
143+- `image` and `website` are the docket's values as they are. Dockets can come
144+ from other ships, and unlike the page, the JSON doesn't filter these, so
145+ check for `http(s)` before using them.
146+- Entries are sorted like the page. Key order within an object is not fixed.
147+- JSON wins when the header ranks `application/json` above `text/html`. When
148+ the two rank equally, the more specific match wins, so
149+ `application/json, */*` gets JSON. A full tie, a bare `*/*` or a missing
150+ header gets HTML.
151+- The response has `Access-Control-Allow-Origin: *`, varies on `Accept` and
152+ `Origin`, and is `private, max-age=60`. It is private because Eyre attaches
153+ its session cookie to every response, and on your own logged-in requests
154+ that cookie is your login token.
155+
156+## How installing works for a visitor
157+
158+1. **Install** opens a panel under the app. It asks for the visitor's ship
159+ URL (for example `sampel-palnet.tlon.network`) and shows the Dojo command.
160+2. The form is POSTed. %shelf checks the URL and keeps only its scheme, host
161+ and port. It remembers that origin in a cookie for a year, then redirects
162+ to
163+ `<ship>/apps/landscape/search/direct/apps/~publisher/desk`. That is
164+ Landscape's own "Get App" dialog. The visitor's ship fetches the app's
165+ details directly from the publisher.
166+3. On later visits, Install links straight there. The button reads
167+ `Install on ~sampel-palnet` when the URL's first label is a planet name
168+ (or a moon or comet), or any ship name on `arvo.network`, `tlon.network`
169+ or `startram.io`. Otherwise it reads `Install on your ship`: galaxy and
170+ star names double as ordinary words, like `dev.` or `master.`. A
171+ **Change ship** link in the header clears the cookie.
172+
173+Guards:
174+
175+- The ship URL is only saved and followed from a POST that comes from the page
176+ itself (checked with `Sec-Fetch-Site`, or else `Origin` or `Referer`
177+ against `Host`). Links and images can't POST, so nothing else, including a
178+ docket image URL pointing at your domain, can plant a URL in a visitor's
179+ cookie or bounce them elsewhere through your domain.
180+- Only apps actually on the shelf can be installed through the form.
181+- On the page, image and website URLs from dockets are used only if they are
182+ `http(s)`. Dockets can come from other ships.
183+
184+## Traffic
185+
186+Every request that arrives without a cookie makes Eyre start a guest session.
187+Crawlers, uptime monitors, `curl` and other sites fetching the JSON all do
188+this. Each session costs your ship about 0.2 KB of memory for 7 days, plus
189+about 0.3 KB of event log. A page view takes the ship about 50 ms with 10
190+apps, so requests start to queue above about 20 a second.
191+
192+- If the page draws heavy bot traffic, rate-limit it in your proxy.
193+- Point uptime monitors at the proxy rather than the page.
194+- Analytics or consent tools that store JSON in cookies on this domain stop
195+ Eyre from reading its own session cookie, so every page view then starts a
196+ new session.
197+- For a cookie notice: besides %shelf's `shelf-ship` (the visitor's ship URL,
198+ one year), Eyre sets its own session cookie, `urbauth-~your-ship`, for 7
199+ days.
200+
201+## Uninstalling
202+
203+Gall gives an agent no chance to clean up, so Eyre keeps the `/shelf` binding
204+after %shelf stops. Until you remove it, `/shelf` answers 503 at once.
205+
206+1. Remove the site from your reverse proxy first. Otherwise visitors get that
207+ 503 page, or, once the binding is gone, an endless redirect loop between
208+ Landscape's login page and `/`.
209+2. `|uninstall %shelf`. Your `head`/`body` HTML is kept, and installing again
210+ brings the page straight back.
211+3. To delete that state too: `|nuke %shelf, =desk &` (answer `y`).
212+4. Optionally, free the path. Only the binding's owner can remove it, so take
213+ it over from the dojo, then remove it:
214+
215+ ```
216+ |pass [%e %connect [~ /shelf] %docket]
217+ |pass [%e %disconnect [~ /shelf]]
218+ ```
219+
220+ Installing %shelf again binds `/shelf` again. %shelf re-binds every time
221+ it loads, so it also restores the binding if someone removed it by hand.
222+
223+## Development
224+
225+The desk is self-contained. `desk/` holds everything Clay needs:
226+
227+| Path | What |
228+|---|---|
229+| `app/shelf.hoon` | The agent: Eyre binding, routing, scries, responses |
230+| `lib/shelf.hoon` | Pure helpers and the page (Sail) |
231+| `sur/shelf.hoon`, `mar/shelf/action.hoon`, `gen/shelf/` | The `head`/`body` settings |
232+| `web/shelf.css`, `web/copy.js` | Inlined into the page at build time with `/*` |
233+| `tests/lib/shelf.hoon` | Unit tests, including the rendered page |
234+| `lib/sigil.hoon`, `lib/sigil/symbols.hoon` | Vendored [sigil renderer](https://github.com/Fang-/suite) (MIT, ~paldev; shapes from `@urbit/sigil-js`, MIT, Tlon) |
235+| other `lib/`, `mar/`, `sur/` files | Copied unmodified from `%base` (urbit/urbit `5a187fe`) and `%landscape` (`sur/treaty`, `sur/docket`; tloncorp/landscape `46c6ed8`) |
236+
237+Run the tests on a ship with the desk installed:
238+
239+```
240+-test /=shelf=/tests ~
241+```
242+
243+Some details that are easy to get wrong:
244+
245+- **Public requests come from guests.** Eyre gives unauthenticated visitors a
246+ guest identity, so `src.bowl` isn't your ship. Owner checks apply only to
247+ the settings pokes.
248+- **A failed scry can't be caught.** Inside an agent, `mule` does not catch a
249+ scry that fails: the whole request fails. %shelf only makes scries that
250+ can't fail.
251+- **Own treaties aren't scryable.** `%treaty` doesn't expose your own desks'
252+ treaties, so %shelf builds them from each desk's `desk.docket-0` the same
253+ way `%treaty` does.
254+- **Clay can refuse a commit silently.** It refuses commits that would stop a
255+ running agent from building, and logs nothing. After `|commit`, check that
256+ `.^(cass:clay %cw /=shelf=)` moved.
desk/app/shelf.hoonnew file+289
@@ -0,0 +1,289 @@
1+:: shelf: a public listing of the apps this ship publishes
2+::
3+:: Serves one page at /shelf listing the %treaty alliance: this
4+:: ship's own published desks plus any it republishes. The same URL
5+:: returns JSON when the Accept header asks for it.
6+::
7+:: Meant to sit behind a reverse proxy that maps a dedicated domain's
8+:: / onto /shelf, so the page's links all point at /.
9+::
10+:: The owner can append raw HTML to <head> and <body>, for analytics:
11+:: :shelf|head '<script defer src="…"></script>'
12+:: :shelf|body '…'
13+::
14+/- docket, shelf, treaty
15+/+ default-agent, dbug, server, *shelf
16+/* shelf-css %css /web/shelf/css
17+/* copy-js %js /web/copy/js
18+|%
19++$ card card:agent:gall
20++$ state-0
21+ $: %0
22+ head-html=@t :: appended to <head>
23+ body-html=@t :: appended to <body>
24+ ==
25+--
26+::
27+%- agent:dbug
28+=| state-0
29+=* state -
30+=<
31+^- agent:gall
32+|_ =bowl:gall
33++* this .
34+ def ~(. (default-agent this %.n) bowl)
35+ hc ~(. +> bowl)
36+::
37+++ on-init
38+ ^- (quip card _this)
39+ :_ this
40+ [%pass /eyre/connect %arvo %e %connect [~ /shelf] dap.bowl]~
41+::
42+++ on-save !>(state)
43+++ on-load
44+ |= old=vase
45+ ^- (quip card _this)
46+ :: re-bind on every load, from on-init's wire (so Eyre just replaces
47+ :: it): a binding dropped by hand comes back with the next update
48+ ::
49+ :_ this(state !<(state-0 old))
50+ [%pass /eyre/connect %arvo %e %connect [~ /shelf] dap.bowl]~
51+::
52+++ on-poke
53+ |= [=mark =vase]
54+ ^- (quip card _this)
55+ ?+ mark (on-poke:def mark vase)
56+ :: the page is public: src is the visitor, often an Eyre guest identity
57+ ::
58+ %handle-http-request
59+ =+ !<([eyre-id=@ta req=inbound-request:eyre] vase)
60+ :_ this
61+ (give-chunked eyre-id (handle:hc req))
62+ ::
63+ %shelf-action
64+ ?> =(our src):bowl
65+ =+ !<(act=action:shelf vase)
66+ ?- -.act
67+ %head `this(head-html html.act)
68+ %body `this(body-html html.act)
69+ ==
70+ ==
71+::
72+++ on-watch
73+ |= =path
74+ ^- (quip card _this)
75+ ?: ?=([%http-response @ ~] path) `this
76+ (on-watch:def path)
77+::
78+++ on-peek
79+ |= =path
80+ ^- (unit (unit cage))
81+ ?+ path (on-peek:def path)
82+ [%x %head ~] ``noun+!>(head-html)
83+ [%x %body ~] ``noun+!>(body-html)
84+ ==
85+::
86+++ on-arvo
87+ |= [=wire =sign-arvo]
88+ ^- (quip card _this)
89+ ?. ?=([%eyre %connect ~] wire) (on-arvo:def wire sign-arvo)
90+ ?> ?=([%eyre %bound *] sign-arvo)
91+ ~? !accepted.sign-arvo [dap.bowl %bind-rejected binding.sign-arvo]
92+ `this
93+::
94+++ on-agent on-agent:def
95+++ on-leave on-leave:def
96+++ on-fail on-fail:def
97+--
98+::
99+|_ =bowl:gall
100+:: +handle: route a request. Eyre only sends us /shelf and below.
101+::
102+++ handle
103+ |= req=inbound-request:eyre
104+ ^- simple-payload:http
105+ =/ rl (parse-request-line:server url.request.req)
106+ ?. &(?=(~ ext.rl) ?=(?([%shelf ~] [%shelf %$ ~]) site.rl))
107+ (plain 404 'Not found')
108+ =/ hs=header-list:http header-list.request.req
109+ =/ secure=? (is-secure secure.req hs)
110+ ?: ?=(%'POST' method.request.req)
111+ (save (form-args body.request.req) hs secure)
112+ ?. ?=(?(%'GET' %'HEAD') method.request.req)
113+ [[405 ~[['allow' 'GET, HEAD, POST']]] ~]
114+ =/ q=(map @t @t) (malt args.rl)
115+ ?: (~(has by q) 'forget') (forget hs secure)
116+ ?: (wants-json (header-all 'accept' hs)) listing-json
117+ (page q hs)
118+::
119+++ plain
120+ |= [code=@ud msg=@t]
121+ ^- simple-payload:http
122+ :_ `(as-octs:mimes:html msg)
123+ [code ~[['content-type' 'text/plain; charset=utf-8']]]
124+::
125+++ redirect
126+ |= [code=@ud loc=@t]
127+ ^- simple-payload:http
128+ [[code ~[['location' loc] ['cache-control' 'no-store']]] ~]
129+::
130+:: +forget: clear the visitor's saved ship
131+::
132+:: Only when the browser is navigating here, not when a docket's image
133+:: URL points here.
134+::
135+++ forget
136+ |= [hs=header-list:http secure=?]
137+ ^- simple-payload:http
138+ =/ dest=(unit @t) (header 'sec-fetch-dest' hs)
139+ ?: &(?=(^ dest) !=('document' u.dest)) (redirect 303 '/')
140+ :_ ~
141+ :- 303
142+ :~ ['location' '/']
143+ ['set-cookie' (forget-cookie secure)]
144+ ['cache-control' 'no-store']
145+ ==
146+::
147+:: +save: the install form, POSTed. Remember the visitor's ship, then
148+:: open the app there.
149+::
150+:: Only for apps on the shelf, and only for a POST from this page:
151+:: links and images can't POST, and a docket's image or website URL
152+:: could otherwise point here. So nothing else can plant a ship URL
153+:: in a visitor's cookie or bounce them elsewhere through this domain.
154+::
155+++ save
156+ |= [q=(map @t @t) hs=header-list:http secure=?]
157+ ^- simple-payload:http
158+ =/ pub=(unit ship) (biff (~(get by q) 'host') parse-p)
159+ =/ dek=(unit desk) (biff (~(get by q) 'install') parse-tas)
160+ ?: |(?=(~ pub) ?=(~ dek)) (redirect 303 '/')
161+ ?. (~(has in listed) [u.pub u.dek]) (redirect 303 '/')
162+ =/ back=tape "/?install={(trip u.dek)}&host={(scow %p u.pub)}"
163+ =/ anc=tape (anchor u.pub u.dek)
164+ ?. (same-origin hs) (redirect 303 (crip "{back}#{anc}"))
165+ =/ url=(unit @t) (biff (~(get by q) 'url') normalize-url)
166+ ?~ url (redirect 303 (crip "{back}&error=1#{anc}"))
167+ :_ ~
168+ :- 303
169+ :~ ['location' (crip (deep-link u.url u.pub u.dek))]
170+ ['set-cookie' (ship-cookie u.url secure)]
171+ ['cache-control' 'no-store']
172+ ==
173+::
174+++ scry
175+ |= [=dude:gall =path]
176+ ^- ^path
177+ (weld /(scot %p our.bowl)/[dude]/(scot %da now.bowl) path)
178+::
179+:: The scries below are all ones that can't fail. A failed scry would
180+:: fail the whole request, and +mule can't catch that inside an agent.
181+::
182+:: +treaty-running: is %treaty (from %landscape) running?
183+::
184+++ treaty-running
185+ ^- ?
186+ .^(? %gu (scry %treaty /$))
187+::
188+:: +listed: the alliance, the [ship desk]s this ship advertises
189+::
190+++ listed
191+ ^- (set [=ship =desk])
192+ ?. treaty-running ~
193+ =/ =update:alliance:treaty
194+ .^(update:alliance:treaty %gx (scry %treaty /alliance/noun))
195+ ?. ?=(%ini -.update) ~
196+ init.update
197+::
198+:: +treaties: the alliance's treaties, sorted by title
199+::
200+:: Our own desks' treaties are made the way %treaty makes them, from
201+:: the desk's docket file, since %treaty only exposes foreign ones.
202+:: An entry whose treaty isn't there (yet) is skipped. Without full,
203+:: our own desks' case and hash, which only the JSON shows, are left
204+:: out to save two scries per desk.
205+::
206+++ treaties
207+ |= full=?
208+ ^- (list treaty:treaty)
209+ =/ entries=(set [=ship =desk]) listed
210+ =/ foreign=(map [ship desk] treaty:treaty)
211+ ?: =(~ entries) ~
212+ =/ =update:treaty:treaty
213+ .^(update:treaty:treaty %gx (scry %treaty /treaties/noun))
214+ ?. ?=(%ini -.update) ~
215+ init.update
216+ %+ sort
217+ %+ murn ~(tap in entries)
218+ |= [=ship =desk]
219+ ^- (unit treaty:treaty)
220+ ?. =(our.bowl ship) (~(get by foreign) [ship desk])
221+ (own-treaty desk full)
222+ |= [a=treaty:treaty b=treaty:treaty]
223+ =/ ta=@t (crip (cass (trip title.docket.a)))
224+ =/ tb=@t (crip (cass (trip title.docket.b)))
225+ ?. =(ta tb) (aor ta tb)
226+ ?. =(ship.a ship.b) (aor ship.a ship.b)
227+ (aor desk.a desk.b)
228+::
229+:: +own-treaty: the treaty %treaty advertises for one of our desks
230+::
231+++ own-treaty
232+ |= [=desk full=?]
233+ ^- (unit treaty:treaty)
234+ =/ bek=path /(scot %p our.bowl)/[desk]/(scot %da now.bowl)
235+ ?. .^(? %cu (weld bek /desk/docket-0)) ~
236+ :: the stored page (%cq), not %cx: %cx builds the desk's own docket
237+ :: mark, and if that ever fails to build, the scry fails the request
238+ ::
239+ =/ raw .^(* %cq (weld bek /desk/docket-0))
240+ =/ dok=(unit docket:docket) (mole |.(;;(docket:docket raw)))
241+ ?~ dok ~
242+ ?. full `[our.bowl desk da+now.bowl *@uv u.dok]
243+ =/ =cass:clay .^(cass:clay %cw bek)
244+ `[our.bowl desk da+da.cass .^(@uv %cz bek) u.dok]
245+::
246+:: +listing-json: the shelf as JSON, for Accept: application/json
247+::
248+++ listing-json
249+ ^- simple-payload:http
250+ :_ `(as-octs:mimes:html (en:json:html a+(turn (treaties &) treaty-json)))
251+ :- 200
252+ :: private: Eyre adds its session cookie to every response, and for
253+ :: a logged-in owner that is their login token
254+ ::
255+ :~ ['content-type' 'application/json']
256+ ['cache-control' 'private, max-age=60']
257+ :: Eyre's casing, so Eyre replaces it for origins the owner has
258+ :: approved instead of adding a second one
259+ ::
260+ ['Access-Control-Allow-Origin' '*']
261+ ['vary' 'Accept, Origin']
262+ ['x-content-type-options' 'nosniff']
263+ ==
264+::
265+:: +page: the HTML listing
266+::
267+:: ?install=desk&host=~ship opens that app's install panel, and
268+:: &error=1 says the URL entered there was bad.
269+::
270+++ page
271+ |= [q=(map @t @t) hs=header-list:http]
272+ ^- simple-payload:http
273+ =/ open=(unit [ship desk])
274+ %+ both (biff (~(get by q) 'host') parse-p)
275+ (biff (~(get by q) 'install') parse-tas)
276+ =/ mine=(unit @t) (biff (get-cookie cookie-name hs) normalize-url)
277+ =/ doc=tape
278+ %. [shelf-css copy-js head-html body-html]
279+ ~(document ui our.bowl (treaties |) open (~(has by q) 'error') mine)
280+ :_ `(as-octt:mimes:html doc)
281+ :- 200
282+ :: Cookie too, or a browser shows its cached copy after the saved
283+ :: ship changes
284+ ::
285+ :~ ['content-type' 'text/html; charset=utf-8']
286+ ['cache-control' 'private, max-age=60']
287+ ['vary' 'Accept, Cookie']
288+ ==
289+--
desk/desk.billnew file+2
@@ -0,0 +1,2 @@
1+:~ %shelf
2+==
desk/gen/shelf/body.hoonnew file+13
@@ -0,0 +1,13 @@
1+:: set the raw HTML appended to the end of the page's <body>
2+::
3+:: :shelf|body '<script async src="https://…"></script>'
4+:: :shelf|body ''
5+::
6+:: It goes into the page unescaped. Escape ' as \' and \ as \\.
7+::
8+/- shelf
9+:- %say
10+|= [* [html=@t ~] ~]
11+:- %shelf-action
12+^- action:shelf
13+[%body html]
desk/gen/shelf/head.hoonnew file+13
@@ -0,0 +1,13 @@
1+:: set the raw HTML appended to the page's <head>, e.g. analytics
2+::
3+:: :shelf|head '<script defer src="https://…"></script>'
4+:: :shelf|head ''
5+::
6+:: It goes into the page unescaped. Escape ' as \' and \ as \\.
7+::
8+/- shelf
9+:- %say
10+|= [* [html=@t ~] ~]
11+:- %shelf-action
12+^- action:shelf
13+[%head html]
desk/lib/dbug.hoonnew file+161
@@ -0,0 +1,161 @@
1+:: dbug: agent wrapper for generic debugging tools
2+::
3+:: usage: %-(agent:dbug your-agent)
4+::
5+|%
6++$ poke
7+ $% [%skip depth=@ud =poke]
8+ [%bowl ~]
9+ [%state grab=cord]
10+ [%incoming =about]
11+ [%outgoing =about]
12+ ==
13+::
14++$ about
15+ $@ ~
16+ $% [%ship =ship]
17+ [%path =path]
18+ [%wire =wire]
19+ [%term =term]
20+ ==
21+::
22+++ agent
23+ |= =agent:gall
24+ ^- agent:gall
25+ !.
26+ |_ =bowl:gall
27+ +* this .
28+ ag ~(. agent bowl)
29+ ::
30+ ++ on-poke
31+ |= [=mark =vase]
32+ ^- (quip card:agent:gall agent:gall)
33+ ?. ?=(%dbug mark)
34+ =^ cards agent (on-poke:ag mark vase)
35+ [cards this]
36+ =/ dbug !<(poke vase)
37+ =? dbug ?=([%skip %0 *] dbug) poke.dbug
38+ ?: ?=(%skip -.dbug)
39+ =^ cards agent
40+ %+ on-poke:ag %dbug
41+ !>(`poke`dbug(depth (dec depth.dbug)))
42+ [cards this]
43+ =; =tang
44+ ((%*(. slog pri 1) tang) [~ this])
45+ ?- -.dbug
46+ %bowl [(sell !>(bowl))]~
47+ ::
48+ %state
49+ =? grab.dbug =('' grab.dbug) '-'
50+ =; product=^vase
51+ [(sell product)]~
52+ =/ state=^vase
53+ :: if the underlying app has implemented a /dbug/state scry endpoint,
54+ :: use that vase in place of +on-save's.
55+ ::
56+ =/ result=(each ^vase tang)
57+ (mule |.(q:(need (need (on-peek:ag /x/dbug/state)))))
58+ ?:(?=(%& -.result) p.result on-save:ag)
59+ %+ slap
60+ (slop state !>([bowl=bowl ..zuse]))
61+ (ream grab.dbug)
62+ ::
63+ %incoming
64+ =; =tang
65+ ?^ tang tang
66+ [%leaf "no matching subscriptions"]~
67+ %+ murn
68+ %+ sort ~(tap by sup.bowl)
69+ |= [[* a=[=ship =path]] [* b=[=ship =path]]]
70+ (aor [path ship]:a [path ship]:b)
71+ |= [=duct [=ship =path]]
72+ ^- (unit tank)
73+ =; relevant=?
74+ ?. relevant ~
75+ `>[path=path from=ship duct=duct]<
76+ ?: ?=(~ about.dbug) &
77+ ?- -.about.dbug
78+ %ship =(ship ship.about.dbug)
79+ %path ?=(^ (find path.about.dbug path))
80+ %wire %+ lien duct
81+ |=(=wire ?=(^ (find wire.about.dbug wire)))
82+ %term !!
83+ ==
84+ ::
85+ %outgoing
86+ =; =tang
87+ ?^ tang tang
88+ [%leaf "no matching subscriptions"]~
89+ %+ murn
90+ %+ sort ~(tap by wex.bowl)
91+ |= [[[a=wire *] *] [[b=wire *] *]]
92+ (aor a b)
93+ |= [[=wire =ship =term] [acked=? =path]]
94+ ^- (unit tank)
95+ =; relevant=?
96+ ?. relevant ~
97+ `>[wire=wire agnt=[ship term] path=path ackd=acked]<
98+ ?: ?=(~ about.dbug) &
99+ ?- -.about.dbug
100+ %ship =(ship ship.about.dbug)
101+ %path ?=(^ (find path.about.dbug path))
102+ %wire ?=(^ (find wire.about.dbug wire))
103+ %term =(term term.about.dbug)
104+ ==
105+ ==
106+ ::
107+ ++ on-peek
108+ |= =path
109+ ^- (unit (unit cage))
110+ ?. ?=([@ %dbug *] path)
111+ (on-peek:ag path)
112+ ?+ path [~ ~]
113+ [%u %dbug ~] ``noun+!>(&)
114+ [%x %dbug %state ~] ``noun+!>(on-save:ag)
115+ [%x %dbug %subscriptions ~] ``noun+!>([wex sup]:bowl)
116+ ==
117+ ::
118+ ++ on-init
119+ ^- (quip card:agent:gall agent:gall)
120+ =^ cards agent on-init:ag
121+ [cards this]
122+ ::
123+ ++ on-save on-save:ag
124+ ::
125+ ++ on-load
126+ |= old-state=vase
127+ ^- (quip card:agent:gall agent:gall)
128+ =^ cards agent (on-load:ag old-state)
129+ [cards this]
130+ ::
131+ ++ on-watch
132+ |= =path
133+ ^- (quip card:agent:gall agent:gall)
134+ =^ cards agent (on-watch:ag path)
135+ [cards this]
136+ ::
137+ ++ on-leave
138+ |= =path
139+ ^- (quip card:agent:gall agent:gall)
140+ =^ cards agent (on-leave:ag path)
141+ [cards this]
142+ ::
143+ ++ on-agent
144+ |= [=wire =sign:agent:gall]
145+ ^- (quip card:agent:gall agent:gall)
146+ =^ cards agent (on-agent:ag wire sign)
147+ [cards this]
148+ ::
149+ ++ on-arvo
150+ |= [=wire =sign-arvo]
151+ ^- (quip card:agent:gall agent:gall)
152+ =^ cards agent (on-arvo:ag wire sign-arvo)
153+ [cards this]
154+ ::
155+ ++ on-fail
156+ |= [=term =tang]
157+ ^- (quip card:agent:gall agent:gall)
158+ =^ cards agent (on-fail:ag term tang)
159+ [cards this]
160+ --
161+--
desk/lib/default-agent.hoonnew file+69
@@ -0,0 +1,69 @@
1+/+ skeleton
2+|* [agent=* help=*]
3+?: ?=(%& help)
4+ ~| %default-agent-helpfully-crashing
5+ skeleton
6+|_ =bowl:gall
7+++ on-init
8+ `agent
9+::
10+++ on-save
11+ !>(~)
12+::
13+++ on-load
14+ |= old-state=vase
15+ `agent
16+::
17+++ on-poke
18+ |= =cage
19+ ~| "unexpected poke to {<dap.bowl>} with mark {<p.cage>}"
20+ !!
21+::
22+++ on-watch
23+ |= =path
24+ ~| "unexpected subscription to {<dap.bowl>} on path {<path>}"
25+ !!
26+::
27+++ on-leave
28+ |= path
29+ `agent
30+::
31+++ on-peek
32+ |= =path
33+ ~| "unexpected scry into {<dap.bowl>} on path {<path>}"
34+ !!
35+::
36+++ on-agent
37+ |= [=wire =sign:agent:gall]
38+ ^- (quip card:agent:gall _agent)
39+ ?- -.sign
40+ %poke-ack
41+ ?~ p.sign
42+ `agent
43+ %- (slog leaf+"poke failed from {<dap.bowl>} on wire {<wire>}" u.p.sign)
44+ `agent
45+ ::
46+ %watch-ack
47+ ?~ p.sign
48+ `agent
49+ =/ =tank leaf+"subscribe failed from {<dap.bowl>} on wire {<wire>}"
50+ %- (slog tank u.p.sign)
51+ `agent
52+ ::
53+ %kick `agent
54+ %fact
55+ ~| "unexpected subscription update to {<dap.bowl>} on wire {<wire>}"
56+ ~| "with mark {<p.cage.sign>}"
57+ !!
58+ ==
59+::
60+++ on-arvo
61+ |= [=wire =sign-arvo]
62+ ~| "unexpected system response {<-.sign-arvo>} to {<dap.bowl>} on wire {<wire>}"
63+ !!
64+::
65+++ on-fail
66+ |= [=term =tang]
67+ %- (slog leaf+"error in {<dap.bowl>}" >term< tang)
68+ `agent
69+--
desk/lib/server.hoonnew file+159
@@ -0,0 +1,159 @@
1+=, eyre
2+|%
3++$ request-line
4+ $: [ext=(unit @ta) site=(list @t)]
5+ args=(list [key=@t value=@t])
6+ ==
7+:: +parse-request-line: take a cord and parse out a url
8+::
9+++ parse-request-line
10+ |= url=@t
11+ ^- request-line
12+ (fall (rush url ;~(plug apat:de-purl:html yque:de-purl:html)) [[~ ~] ~])
13+::
14+++ manx-to-octs
15+ |= man=manx
16+ ^- octs
17+ (as-octt:mimes:html (en-xml:html man))
18+::
19+++ json-to-octs
20+ |= jon=json
21+ ^- octs
22+ (as-octs:mimes:html (en:json:html jon))
23+::
24+++ app
25+ |%
26+ ::
27+ :: +require-authorization:
28+ :: redirect to the login page when unauthenticated
29+ :: otherwise call handler on inbound request
30+ ::
31+ ++ require-authorization
32+ |= $: =inbound-request:eyre
33+ handler=$-(inbound-request:eyre simple-payload:http)
34+ ==
35+ ^- simple-payload:http
36+ ::
37+ ?: authenticated.inbound-request
38+ ~! this
39+ ~! +:*handler
40+ (handler inbound-request)
41+ ::
42+ =- [[307 ['location' -]~] ~]
43+ %^ cat 3
44+ '/~/login?redirect='
45+ url.request.inbound-request
46+ ::
47+ :: +require-authorization-simple:
48+ :: redirect to the login page when unauthenticated
49+ :: otherwise pass through simple-paylod
50+ ::
51+ ++ require-authorization-simple
52+ |= [=inbound-request:eyre =simple-payload:http]
53+ ^- simple-payload:http
54+ ::
55+ ?: authenticated.inbound-request
56+ ~! this
57+ simple-payload
58+ ::
59+ =- [[307 ['location' -]~] ~]
60+ %^ cat 3
61+ '/~/login?redirect='
62+ url.request.inbound-request
63+ ::
64+ ++ give-simple-payload
65+ |= [eyre-id=@ta =simple-payload:http]
66+ ^- (list card:agent:gall)
67+ =/ header-cage
68+ [%http-response-header !>(response-header.simple-payload)]
69+ =/ data-cage
70+ [%http-response-data !>(data.simple-payload)]
71+ :~ [%give %fact ~[/http-response/[eyre-id]] header-cage]
72+ [%give %fact ~[/http-response/[eyre-id]] data-cage]
73+ [%give %kick ~[/http-response/[eyre-id]] ~]
74+ ==
75+ --
76+++ gen
77+ |%
78+ ::
79+ ++ max-1-da ['cache-control' 'max-age=86400']
80+ ++ max-1-wk ['cache-control' 'max-age=604800']
81+ ::
82+ ++ html-response
83+ =| cache=?
84+ |= =octs
85+ ^- simple-payload:http
86+ :_ `octs
87+ [200 [['content-type' 'text/html'] ?:(cache [max-1-wk ~] ~)]]
88+ ::
89+ ++ css-response
90+ =| cache=?
91+ |= =octs
92+ ^- simple-payload:http
93+ :_ `octs
94+ [200 [['content-type' 'text/css'] ?:(cache [max-1-wk ~] ~)]]
95+ ::
96+ ++ js-response
97+ =| cache=?
98+ |= =octs
99+ ^- simple-payload:http
100+ :_ `octs
101+ [200 [['content-type' 'text/javascript'] ?:(cache [max-1-wk ~] ~)]]
102+ ::
103+ ++ png-response
104+ =| cache=?
105+ |= =octs
106+ ^- simple-payload:http
107+ :_ `octs
108+ [200 [['content-type' 'image/png'] ?:(cache [max-1-wk ~] ~)]]
109+ ::
110+ ++ svg-response
111+ =| cache=?
112+ |= =octs
113+ ^- simple-payload:http
114+ :_ `octs
115+ [200 [['content-type' 'image/svg+xml'] ?:(cache [max-1-wk ~] ~)]]
116+ ::
117+ ++ ico-response
118+ |= =octs
119+ ^- simple-payload:http
120+ [[200 [['content-type' 'image/x-icon'] max-1-wk ~]] `octs]
121+ ::
122+ ++ woff2-response
123+ =| cache=?
124+ |= =octs
125+ ^- simple-payload:http
126+ [[200 [['content-type' 'font/woff2'] max-1-wk ~]] `octs]
127+ ::
128+ ++ json-response
129+ =| cache=_|
130+ |= =json
131+ ^- simple-payload:http
132+ :_ `(json-to-octs json)
133+ [200 [['content-type' 'application/json'] ?:(cache [max-1-da ~] ~)]]
134+ ::
135+ ++ manx-response
136+ =| cache=_|
137+ |= man=manx
138+ ^- simple-payload:http
139+ :_ `(manx-to-octs man)
140+ [200 [['content-type' 'text/html'] ?:(cache [max-1-da ~] ~)]]
141+ ::
142+ ++ not-found
143+ ^- simple-payload:http
144+ [[404 ~] ~]
145+ ::
146+ ++ login-redirect
147+ |= =request:http
148+ ^- simple-payload:http
149+ =- [[307 ['location' -]~] ~]
150+ %^ cat 3
151+ '/~/login?redirect='
152+ url.request
153+ ::
154+ ++ redirect
155+ |= redirect=cord
156+ ^- simple-payload:http
157+ [[307 ['location' redirect]~] ~]
158+ --
159+--
desk/lib/shelf.hoonnew file+746
@@ -0,0 +1,746 @@
1+:: shelf: helpers for the %shelf agent
2+::
3+:: Pure functions only (no bowl, no scries), so /tests/lib/shelf
4+:: can cover them.
5+::
6+/- treaty
7+/+ sigil
8+|%
9+:: +sigil-svg: a ship's sigil for the masthead's 56px box
10+::
11+:: lib/sigil paints the glyph in fg, and the details that cut into
12+:: it (lines, rings, dots) in bg, over a bg rect. fg is currentColor
13+:: (.sigil sets color: var(--bg)) and bg is var(--ink), the box's
14+:: background, so the sigil inverts with the theme. The geometry is
15+:: reset to @urbit/sigil-js's default, which the design used: glyph
16+:: at 75% of the box, 0.65625px lines (lib/sigil's strokes don't
17+:: scale, so stroke-width is in CSS px).
18+::
19+:: Moons and comets get ~: sigil-js draws nothing for them, and
20+:: neither do Landscape or Tlon.
21+::
22+++ sigil-svg
23+ |= who=ship
24+ ^- (unit manx)
25+ =/ tr=(unit tape)
26+ ?+ (clan:title who) ~
27+ %czar `"translate(40 40) scale(0.375)"
28+ %king `"translate(16 40) scale(0.375)"
29+ %duke `"translate(16 16) scale(0.375)"
30+ ==
31+ ?~ tr ~
32+ =/ svg=manx
33+ %. who
34+ %_ sigil
35+ size 56
36+ fg "currentColor"
37+ bg "var(--ink)"
38+ ==
39+ :- ~
40+ %- sigil-paint
41+ %_ svg
42+ c
43+ %+ turn c.svg
44+ |= m=manx
45+ ?. =(%g n.g.m) m
46+ =- m(a.g [[%transform u.tr] [%stroke-width "0.65625"] -])
47+ (skip a.g.m |=([n=mane *] |(=(%transform n) =(%stroke-width n))))
48+ ==
49+::
50+:: +sigil-paint: drop lib/sigil's inline px size, which would beat the
51+:: page CSS, and move fill/stroke="var(--ink)" into style="", where
52+:: var() is plain CSS rather than an attribute value.
53+::
54+++ sigil-paint
55+ |= m=manx
56+ ^- manx
57+ =/ ink=tape "var(--ink)"
58+ =/ css=(list tape)
59+ %+ murn a.g.m
60+ |= [n=mane v=tape]
61+ ?. &(=(ink v) |(=(%fill n) =(%stroke n))) ~
62+ `"{?:(=(%fill n) "fill" "stroke")}:{v}"
63+ =/ rest=mart
64+ %+ skip a.g.m
65+ |= [n=mane v=tape]
66+ |(=(%style n) &(=(ink v) |(=(%fill n) =(%stroke n))))
67+ %_ m
68+ a.g ?~(css rest [[%style (zing (join ";" css))] rest])
69+ c (turn c.m sigil-paint)
70+ ==
71+::
72+:: the cookie that remembers a visitor's ship URL
73+::
74+++ cookie-name 'shelf-ship'
75+::
76+:: +ship-cookie: Set-Cookie value remembering a ship URL for a year
77+::
78+:: The URL comes from +normalize-url, so it is all cookie-safe
79+:: characters and needs no encoding.
80+::
81+++ ship-cookie
82+ |= [url=@t secure=?]
83+ ^- @t
84+ %- crip
85+ %+ weld "{(trip cookie-name)}={(trip url)}; Path=/; Max-Age=31536000"
86+ ?:(secure "; SameSite=Lax; HttpOnly; Secure" "; SameSite=Lax; HttpOnly")
87+::
88+:: +forget-cookie: Set-Cookie value that clears the saved ship URL
89+::
90+++ forget-cookie
91+ |= secure=?
92+ ^- @t
93+ %- crip
94+ %+ weld "{(trip cookie-name)}=; Path=/; Max-Age=0"
95+ ?:(secure "; SameSite=Lax; HttpOnly; Secure" "; SameSite=Lax; HttpOnly")
96+::
97+:: +deep-link: open an app's install dialog in the visitor's Landscape
98+::
99+:: Landscape's own "show install" route. The visitor's ship fetches
100+:: the treaty from the publisher directly, so no alliance is needed,
101+:: but it must be the real publisher, written with its ~.
102+::
103+++ deep-link
104+ |= [base=@t pub=ship =desk]
105+ ^- tape
106+ "{(trip base)}/apps/landscape/search/direct/apps/{(scow %p pub)}/{(trip desk)}"
107+::
108+:: +install-label: the Install button's text for a visitor's saved ship
109+::
110+++ install-label
111+ |= url=@t
112+ ^- tape
113+ =/ who=(unit ship) (ship-label url)
114+ ?~ who "Install on your ship"
115+ "Install on {(scow %p u.who)}"
116+::
117+:: +ship-name: a saved ship URL as shown to its owner
118+::
119+:: The @p when the URL names one, else the host without its scheme.
120+::
121+++ ship-name
122+ |= url=@t
123+ ^- tape
124+ =/ who=(unit ship) (ship-label url)
125+ ?^ who (scow %p u.who)
126+ =/ t=tape (trip url)
127+ ?: =("https://" (scag 8 t)) (slag 8 t)
128+ ?: =("http://" (scag 7 t)) (slag 7 t)
129+ t
130+::
131+++ install-cmd
132+ |= [=ship =desk]
133+ ^- tape
134+ "|install {(scow %p ship)} %{(trip desk)}"
135+::
136+++ parse-p |=(t=@t `(unit ship)`(slaw %p t))
137+++ parse-tas |=(t=@t `(unit desk)`(slaw %tas t))
138+::
139+:: +normalize-url: validate a visitor's ship URL, keeping scheme and host
140+::
141+:: Lowercases, drops whitespace and any path, query or fragment, and
142+:: defaults to https:// (http:// for a +loopback host, as local
143+:: development ships are). The host must be dot-separated labels of
144+:: [a-z0-9-], optionally followed by a port from 1 to 65535.
145+::
146+++ normalize-url
147+ |= raw=@t
148+ ^- (unit @t)
149+ =/ t=tape
150+ %+ skip (cass (trip raw))
151+ |=(c=@tD |(=(' ' c) =('\09' c) =('\0a' c) =('\0d' c)))
152+ =/ [scheme=(unit tape) rest=tape]
153+ ?: =("https://" (scag 8 t)) [`"https://" (slag 8 t)]
154+ ?: =("http://" (scag 7 t)) [`"http://" (slag 7 t)]
155+ [~ t]
156+ =/ auth=tape
157+ |- ^- tape
158+ ?~ rest ~
159+ ?: |(=('/' i.rest) =('?' i.rest) =('#' i.rest)) ~
160+ [i.rest $(rest t.rest)]
161+ =/ colon=(unit @ud) (find ":" auth)
162+ =/ host=tape ?~(colon auth (scag u.colon auth))
163+ =/ port=(unit tape) ?~(colon ~ `(slag +(u.colon) auth))
164+ ?. (valid-host host) ~
165+ ?: ?& ?=(^ port)
166+ ?| =(~ u.port)
167+ (gth (lent u.port) 5)
168+ !(levy u.port is-digit)
169+ =(0 (rash (crip u.port) dem))
170+ (gth (rash (crip u.port) dem) 65.535)
171+ == ==
172+ ~
173+ =/ default=tape ?:((loopback host) "http://" "https://")
174+ `(crip (weld (fall scheme default) auth))
175+::
176+:: +loopback: is a host this machine (localhost, or 127.x.x.x)?
177+::
178+++ loopback
179+ |= host=tape
180+ ^- ?
181+ ?| =("localhost" host)
182+ &(=("127." (scag 4 host)) (levy host |=(c=@tD |((is-digit c) =('.' c)))))
183+ ==
184+::
185+++ valid-host
186+ |= host=tape
187+ ^- ?
188+ ?: |(=(~ host) (gth (lent host) 253)) |
189+ %+ levy (split host '.')
190+ |= label=tape
191+ ?& !=(~ label)
192+ (lte (lent label) 63)
193+ (levy label |=(c=@tD |((is-lower c) (is-digit c) =('-' c))))
194+ ==
195+::
196+:: +ship-label: the @p named by a ship URL's first DNS label, if any
197+::
198+:: https://sampel-palnet.tlon.network → ~sampel-palnet
199+::
200+:: Galaxy and star names are also everyday words (dev., web., net.,
201+:: master., winter.), so those only count on hosts that name ships.
202+::
203+++ ship-label
204+ |= url=@t
205+ ^- (unit ship)
206+ =/ auth=tape (authority url)
207+ =/ host=tape (scag (fall (find ":" auth) (lent auth)) auth)
208+ =/ dot=@ud (fall (find "." host) (lent host))
209+ =/ who=(unit ship) (slaw %p (crip ['~' (scag dot host)]))
210+ ?~ who ~
211+ ?: (gth u.who 0xffff) who
212+ ?: (~(has in ship-hosts) (slag +(dot) host)) who
213+ ~
214+::
215+:: +ship-hosts: hosting domains whose subdomains are ship names
216+::
217+++ ship-hosts
218+ ^- (set tape)
219+ (silt ~["arvo.network" "tlon.network" "startram.io"])
220+::
221+:: +web-url: a URL fit for an href or src, else ~
222+::
223+:: Dockets also come from other ships, so only http(s) gets through:
224+:: no javascript:, data: and so on.
225+::
226+++ web-url
227+ |= url=@t
228+ ^- (unit @t)
229+ =/ t=tape (cass (trip (end [3 8] url)))
230+ ?. |(=("https://" t) =("http://" (scag 7 t))) ~
231+ `url
232+::
233+:: +header: a request header, matching its name case-insensitively
234+::
235+++ header
236+ |= [name=@t =header-list:http]
237+ ^- (unit @t)
238+ =/ key=tape (cass (trip name))
239+ |- ^- (unit @t)
240+ ?~ header-list ~
241+ ?: =(key (cass (trip key.i.header-list))) `value.i.header-list
242+ $(header-list t.header-list)
243+::
244+:: +get-cookie: a cookie's value from a request's Cookie headers
245+::
246+:: Browsers send one Cookie header, but HTTP/2 may split it into
247+:: several, and Eyre passes each one through.
248+::
249+++ get-cookie
250+ |= [name=@t =header-list:http]
251+ ^- (unit @t)
252+ ?~ header-list ~
253+ =/ hit=(unit @t)
254+ ?. =("cookie" (cass (trip key.i.header-list))) ~
255+ (cookie name value.i.header-list)
256+ ?^ hit hit
257+ $(header-list t.header-list)
258+::
259+:: +header-all: a request header's values, comma-joined
260+::
261+:: For list headers like Accept, where repeated lines mean the same as
262+:: one comma-separated line.
263+::
264+++ header-all
265+ |= [name=@t =header-list:http]
266+ ^- (unit @t)
267+ =/ key=tape (cass (trip name))
268+ =/ vs=(list tape)
269+ %+ murn header-list
270+ |=([k=@t v=@t] ?.(=(key (cass (trip k))) ~ `(trip v)))
271+ ?~ vs ~
272+ `(crip (zing (join ", " vs)))
273+::
274+:: +form-args: an application/x-www-form-urlencoded body, as a map
275+::
276+++ form-args
277+ |= body=(unit octs)
278+ ^- (map @t @t)
279+ ?~ body ~
280+ =/ rl (rush (cat 3 '/?' q.u.body) ;~(plug apat:de-purl:html yque:de-purl:html))
281+ ?~ rl ~
282+ (malt +.u.rl)
283+::
284+:: +cookie: a cookie's value from a Cookie header
285+::
286+++ cookie
287+ |= [name=@t hed=@t]
288+ ^- (unit @t)
289+ =/ parts=(list tape) (split (trip hed) ';')
290+ |- ^- (unit @t)
291+ ?~ parts ~
292+ =/ part=tape (strip i.parts)
293+ =/ eq=(unit @ud) (find "=" part)
294+ ?: &(?=(^ eq) =((trip name) (scag u.eq part)))
295+ `(crip (slag +(u.eq) part))
296+ $(parts t.parts)
297+::
298+:: +is-secure: did the visitor connect over HTTPS?
299+::
300+:: Eyre's flag only covers its own socket. A TLS-terminating proxy in
301+:: front of the ship shows up as X-Forwarded-Proto instead.
302+::
303+++ is-secure
304+ |= [secure=? =header-list:http]
305+ ^- ?
306+ ?: secure &
307+ =/ proto=(unit @t) (header 'x-forwarded-proto' header-list)
308+ ?~ proto |
309+ =/ first=tape (snag 0 (split (trip u.proto) ','))
310+ =("https" (cass (strip first)))
311+::
312+:: +same-origin: did this request come from a page on our own origin?
313+::
314+:: Uses Sec-Fetch-Site when the browser sends it, else compares the
315+:: Origin's (or failing that, the Referer's) host with the Host header.
316+::
317+++ same-origin
318+ |= =header-list:http
319+ ^- ?
320+ =/ site=(unit @t) (header 'sec-fetch-site' header-list)
321+ ?^ site =('same-origin' u.site)
322+ =/ host=(unit @t) (header 'host' header-list)
323+ =/ from=(unit @t)
324+ =/ origin=(unit @t) (header 'origin' header-list)
325+ ?^(origin origin (header 'referer' header-list))
326+ ?: |(?=(~ host) ?=(~ from)) |
327+ =((cass (authority u.from)) (cass (trip u.host)))
328+::
329+:: +authority: a URL's host[:port], without scheme or path
330+::
331+++ authority
332+ |= url=@t
333+ ^- tape
334+ =/ t=tape (trip url)
335+ =? t =("https://" (scag 8 t)) (slag 8 t)
336+ =? t =("http://" (scag 7 t)) (slag 7 t)
337+ |- ^- tape
338+ ?~ t ~
339+ ?: |(=('/' i.t) =('?' i.t) =('#' i.t)) ~
340+ [i.t $(t t.t)]
341+::
342+:: +wants-json: does an Accept header prefer JSON to HTML?
343+::
344+:: Compares the quality the header gives application/json and
345+:: text/html, each from its most specific matching range. Equal
346+:: qualities go to the type named more specifically, so
347+:: "application/json, */*" gets JSON. Full ties go to HTML, so
348+:: browsers and a bare */* get the page.
349+::
350+++ wants-json
351+ |= accept=(unit @t)
352+ ^- ?
353+ ?~ accept |
354+ =/ ranges (parse-accept u.accept)
355+ =/ jq (quality ranges "application" "json")
356+ =/ hq (quality ranges "text" "html")
357+ ?| (gth q.jq q.hq)
358+ &(=(q.jq q.hq) (gth q.jq 0) (gth spec.jq spec.hq))
359+ ==
360+::
361+:: +parse-accept: an Accept header as [media-range quality] pairs
362+::
363+:: Quality is in thousandths (q=0.8 is 800). No q means 1.000.
364+::
365+++ parse-accept
366+ |= accept=@t
367+ ^- (list [range=tape q=@ud])
368+ %+ turn (split (cass (trip accept)) ',')
369+ |= part=tape
370+ ^- [range=tape q=@ud]
371+ =/ bits=(list tape) (turn (split part ';') strip)
372+ ?~ bits [~ 0]
373+ :- i.bits
374+ =/ qs=(list @ud)
375+ %+ murn t.bits
376+ |= bit=tape
377+ ^- (unit @ud)
378+ ?. =("q=" (scag 2 bit)) ~
379+ `(parse-q (slag 2 bit))
380+ ?~(qs 1.000 i.qs)
381+::
382+:: +parse-q: a quality value in thousandths, 0 if malformed
383+::
384+++ parse-q
385+ |= t=tape
386+ ^- @ud
387+ =/ res (rust t ;~(plug dem (punt ;~(pfix dot (star nud)))))
388+ ?~ res 0
389+ =/ frac=tape (scag 3 (fall +.u.res ~))
390+ =. frac (weld frac (reap (sub 3 (lent frac)) `@tD`'0'))
391+ %+ min 1.000
392+ %+ add (mul 1.000 -.u.res)
393+ (roll frac |=([c=@tD n=@ud] (add (mul 10 n) (sub c '0'))))
394+::
395+:: +quality: the quality an Accept header gives a media type
396+::
397+:: The most specific matching range wins: type/subtype (spec 3), then
398+:: type/* (2), then */* (1). No match is quality 0, spec 0.
399+::
400+++ quality
401+ |= [ranges=(list [range=tape q=@ud]) typ=tape sub-typ=tape]
402+ ^- [q=@ud spec=@ud]
403+ =/ best=[spec=@ud q=@ud] [0 0]
404+ |- ^- [q=@ud spec=@ud]
405+ ?~ ranges [q.best spec.best]
406+ =* r range.i.ranges
407+ =/ spec=@ud
408+ ?: =(r :(weld typ "/" sub-typ)) 3
409+ ?: =(r (weld typ "/*")) 2
410+ ?: =(r "*/*") 1
411+ 0
412+ =? best &((gth spec 0) (gth spec spec.best)) [spec q.i.ranges]
413+ =? best &((gth spec 0) =(spec spec.best)) [spec (max q.best q.i.ranges)]
414+ $(ranges t.ranges)
415+::
416+:: +hex-color: a docket color as #rrggbb
417+::
418+++ hex-color
419+ |= c=@ux
420+ ^- tape
421+ ['#' ((x-co:co 6) (end [3 3] c))]
422+::
423+:: +tile-ink: text color on a tile, by perceived brightness
424+::
425+:: Dark ink when 0.299R + 0.587G + 0.114B > 150 (of 255).
426+::
427+++ tile-ink
428+ |= c=@ux
429+ ^- tape
430+ =/ r=@ (cut 3 [2 1] c)
431+ =/ g=@ (cut 3 [1 1] c)
432+ =/ b=@ (cut 3 [0 1] c)
433+ ?: (gth :(add (mul r 299) (mul g 587) (mul b 114)) 150.000)
434+ "#151514"
435+ "#ffffff"
436+::
437+++ version-tape
438+ |= [major=@ud minor=@ud patch=@ud]
439+ ^- tape
440+ "{(a-co:co major)}.{(a-co:co minor)}.{(a-co:co patch)}"
441+::
442+:: +anchor: a row's fragment id, {desk}-{publisher without ~}
443+::
444+++ anchor
445+ |= [=ship =desk]
446+ ^- tape
447+ "{(trip desk)}-{(slag 1 (scow %p ship))}"
448+::
449+:: +initial: the first character of a title, for a tile with no image
450+::
451+:: Decodes just that character. Titles can come from other ships, so a
452+:: control character or bad UTF-8 gives "" rather than a crash.
453+::
454+++ initial
455+ |= title=@t
456+ ^- tape
457+ =/ t=tape (trip title)
458+ ?~ t ~
459+ =/ n=@ud
460+ ?: (lth i.t 0x80) 1
461+ ?: (lth i.t 0xe0) 2
462+ ?: (lth i.t 0xf0) 3
463+ 4
464+ =/ bytes=tape (scag n `tape`t)
465+ (fall (mole |.((tufa (tuba bytes)))) ~)
466+::
467+:: +split: split a tape on a separator character
468+::
469+++ split
470+ |= [t=tape sep=@tD]
471+ ^- (list tape)
472+ =| cur=tape
473+ =| out=(list tape)
474+ |- ^- (list tape)
475+ ?~ t (flop [(flop cur) out])
476+ ?: =(sep i.t) $(t t.t, cur ~, out [(flop cur) out])
477+ $(t t.t, cur [i.t cur])
478+::
479+:: +strip: drop leading and trailing spaces and tabs
480+::
481+++ strip
482+ |= t=tape
483+ ^- tape
484+ |^ (flop (lead (flop (lead t))))
485+ ++ lead
486+ |= t=tape
487+ ^- tape
488+ ?~ t ~
489+ ?. |(=(' ' i.t) =('\09' i.t)) t
490+ $(t t.t)
491+ --
492+::
493+++ is-digit |=(c=@tD &((gte c '0') (lte c '9')))
494+++ is-lower |=(c=@tD &((gte c 'a') (lte c 'z')))
495+::
496+:: +give-chunked: give-simple-payload:app:server with the body split
497+::
498+:: The body goes out in 16 KiB %http-response-data facts: one big
499+:: fact costs time quadratic in its size (64 KB ~0.15 s, 512 KB ~10 s).
500+::
501+++ give-chunked
502+ |= [eyre-id=@ta =simple-payload:http]
503+ ^- (list card:agent:gall)
504+ =/ pax=(list path) ~[/http-response/[eyre-id]]
505+ =/ dat=(unit octs) data.simple-payload
506+ =/ bod=(list card:agent:gall)
507+ ?~ dat ~
508+ =| out=(list card:agent:gall)
509+ =/ off=@ud 0
510+ |- ^- (list card:agent:gall)
511+ ?: (gte off p.u.dat) (flop out)
512+ =/ len=@ud (min 16.384 (sub p.u.dat off))
513+ =/ chunk=octs [len (cut 3 [off len] q.u.dat)]
514+ %= $
515+ off (add off len)
516+ out [[%give %fact pax %http-response-data !>(`(unit octs)``chunk)] out]
517+ ==
518+ =/ hed=card:agent:gall
519+ [%give %fact pax %http-response-header !>(response-header.simple-payload)]
520+ [hed (snoc bod `card:agent:gall`[%give %kick pax ~])]
521+::
522+:: +ui: the HTML page
523+::
524+++ ui
525+ |_ $: our=ship
526+ rows=(list treaty:treaty) :: sorted
527+ open=(unit [ship desk]) :: the row with its install panel open
528+ err=? :: the URL entered in that panel was bad
529+ mine=(unit @t) :: the visitor's saved ship URL
530+ ==
531+ ::
532+ :: +document: the whole page, with the owner's raw HTML spliced in
533+ ::
534+ ++ document
535+ |= [css=@t js=@t head=@t body=@t]
536+ ^- tape
537+ =/ me=tape (scow %p our)
538+ =/ head-els=(list manx)
539+ :~ ;meta(charset "utf-8");
540+ ;meta(name "viewport", content "width=device-width, initial-scale=1");
541+ ;meta(name "color-scheme", content "light dark");
542+ :: no favicon, so browsers don't ask the proxy for /favicon.ico,
543+ :: which it would answer with a second render of this page
544+ ::
545+ ;link(rel "icon", href "data:,");
546+ ;title: {me} · Apps
547+ ;style: {(trip css)}
548+ ==
549+ =/ script=manx ;script: {(trip js)}
550+ %- zing
551+ ^- (list tape)
552+ :~ "<!doctype html><html lang=\"en\"><head>"
553+ (zing (turn head-els en-xml:html))
554+ (trip head)
555+ "</head><body>"
556+ (en-xml:html (main me))
557+ (en-xml:html script)
558+ (trip body)
559+ "</body></html>"
560+ ==
561+ ::
562+ ++ main
563+ |= me=tape
564+ ^- manx
565+ ;main(class ?~(mine "page" "page saved"))
566+ ;header.masthead
567+ ;div.sigil(aria-hidden "true")
568+ ;* (drop (sigil-svg our))
569+ ==
570+ ;div
571+ ;h1: {me}
572+ ;+ explainer
573+ ==
574+ ==
575+ ;section.apps(aria-label "Published apps")
576+ ;* ?~ rows
577+ :~ ;p.empty: No apps published yet.
578+ ==
579+ [(head-row (lent rows)) (turn rows row)]
580+ ==
581+ ==
582+ ::
583+ :: +explainer: the masthead's line; returning visitors can change ship
584+ ::
585+ ++ explainer
586+ ^- manx
587+ ?~ mine
588+ ;p
589+ ; Apps this ship publishes for anyone on Urbit to install. New to Urbit?
590+ ;a(href "https://urbit.org", target "_blank", rel "noopener"): Start at urbit.org
591+ ==
592+ ;p
593+ ; Apps this ship publishes for anyone on Urbit to install. Installs open on {(ship-name u.mine)}.
594+ ;a.change(href "/?forget"): Change ship
595+ ==
596+ ::
597+ ++ head-row
598+ |= n=@ud
599+ ^- manx
600+ ;div.apps-head
601+ ;span;
602+ ;span: App
603+ ;span: Description
604+ ;span: Version
605+ ;span;
606+ ;span.count: {(a-co:co n)} {?:(=(1 n) "app" "apps")}
607+ ==
608+ ::
609+ ++ row
610+ |= t=treaty:treaty
611+ ^- manx
612+ =* d docket.t
613+ =/ pub=tape (scow %p ship.t)
614+ =/ cmd=tape (install-cmd ship.t desk.t)
615+ =/ is-open=? =(open `[ship.t desk.t])
616+ =/ img=(unit @t) (biff image.d web-url)
617+ =/ site=(unit @t) ?:(=('' website.d) ~ (web-url website.d))
618+ ;article.app(id (anchor ship.t desk.t))
619+ ;div.app-row
620+ ;div.tile(style "--tile:{(hex-color color.d)};--tile-ink:{(tile-ink color.d)}")
621+ ;+ ?~ img
622+ ;span.initial: {(initial title.d)}
623+ ;img(src (trip u.img), alt "", loading "lazy");
624+ ==
625+ ;div.app-name
626+ ;strong: {(trip title.d)}
627+ ;* ?: =(ship.t our) ~
628+ :~ ;span.app-by: by {pub}
629+ ==
630+ ==
631+ ;div.app-desc
632+ ;span.app-info: {(trip info.d)}
633+ ;span.cmd
634+ ;code: {cmd}
635+ ;button.copy(type "button", data-copy cmd, hidden ""): Copy
636+ ==
637+ ==
638+ ;span.version: {(version-tape version.d)}
639+ ;+ ?~ site
640+ ;span;
641+ ;a.site(href (trip u.site), target "_blank", rel "noopener"): Website ↗
642+ ;div.install-cell
643+ ;+ (install-button t is-open)
644+ ==
645+ ==
646+ ;* ?. is-open ~
647+ :~ (panel t cmd)
648+ ==
649+ ==
650+ ::
651+ ++ install-button
652+ |= [t=treaty:treaty is-open=?]
653+ ^- manx
654+ =/ anc=tape (anchor ship.t desk.t)
655+ ?: is-open
656+ ;a.btn.btn-outline(href "/#{anc}"): Close
657+ ?~ mine
658+ ;a.btn(href "/?install={(trip desk.t)}&host={(scow %p ship.t)}#{anc}"): Install
659+ ;a.btn(href (deep-link u.mine ship.t desk.t)): {(install-label u.mine)}
660+ ::
661+ ++ panel
662+ |= [t=treaty:treaty cmd=tape]
663+ ^- manx
664+ ;div.panel-wrap
665+ ;span.tile-ext(style "--tile:{(hex-color color.docket.t)}");
666+ ;form.panel(method "post", action "/")
667+ ;input(type "hidden", name "install", value (trip desk.t));
668+ ;input(type "hidden", name "host", value (scow %p ship.t));
669+ ;div.panel-col
670+ ;label(for "ship-url"): Install {(trip title.docket.t)} on your ship
671+ ;div.field-row
672+ ;input#ship-url(type "text", name "url", inputmode "url", autocomplete "url", required "", placeholder "sampel-palnet.tlon.network", value (trip (fall mine '')));
673+ ;button.btn.btn-lg(type "submit"): Open on my ship →
674+ ==
675+ ;+ ?: err
676+ ;span.error: That doesn't look like a ship URL. Try sampel-palnet.tlon.network.
677+ ;span.hint: Enter your ship's URL once. It's remembered on this device.
678+ ==
679+ ;div.panel-col.dojo-col
680+ ;span.label: Or run in Dojo
681+ ;div.dojo
682+ ;code: {cmd}
683+ ;button.copy(type "button", data-copy cmd, hidden ""): Copy
684+ ==
685+ ==
686+ ==
687+ ==
688+ --
689+::
690+:: +clean-utf8: well-formed UTF-8 kept, any other byte as U+FFFD
691+::
692+:: Dockets can come from other ships, and nothing checks that their
693+:: text is UTF-8, but JSON must be.
694+::
695+++ clean-utf8
696+ |= t=@t
697+ ^- @t
698+ =/ len=@ud (met 3 t)
699+ =| [i=@ud out=(list [@ud @])]
700+ |- ^- @t
701+ ?: (gte i len) (can 3 (flop out))
702+ =/ c=@ (cut 3 [i 1] t)
703+ ?: (lth c 0x80) $(i +(i), out [[1 c] out])
704+ :: the sequence's length, and the range of its second byte
705+ ::
706+ =/ [n=@ud lo=@ hi=@]
707+ ?: &((gte c 0xc2) (lte c 0xdf)) [2 0x80 0xbf]
708+ ?: =(0xe0 c) [3 0xa0 0xbf]
709+ ?: =(0xed c) [3 0x80 0x9f]
710+ ?: &((gte c 0xe1) (lte c 0xef)) [3 0x80 0xbf]
711+ ?: =(0xf0 c) [4 0x90 0xbf]
712+ ?: =(0xf4 c) [4 0x80 0x8f]
713+ ?: &((gte c 0xf1) (lte c 0xf3)) [4 0x80 0xbf]
714+ [0 0 0]
715+ =/ at |=(k=@ud `@`(cut 3 [(add i k) 1] t))
716+ =/ cont |=(k=@ud |((gte k n) &((gte (at k) 0x80) (lte (at k) 0xbf))))
717+ ?. ?& !=(0 n)
718+ (lte (add i n) len)
719+ (gte (at 1) lo)
720+ (lte (at 1) hi)
721+ (cont 2)
722+ (cont 3)
723+ ==
724+ $(i +(i), out [[3 0xbd.bfef] out])
725+ $(i (add i n), out [[n (cut 3 [i n] t)] out])
726+::
727+:: +treaty-json: one app for the JSON listing, docket plus hash
728+::
729+++ treaty-json
730+ |= t=treaty:treaty
731+ ^- json
732+ =* d docket.t
733+ %- pairs:enjs:format
734+ :~ ship+s+(scot %p ship.t)
735+ desk+s+desk.t
736+ title+s+(clean-utf8 title.d)
737+ info+s+(clean-utf8 info.d)
738+ color+s+(crip (hex-color color.d))
739+ image+?~(image.d ~ s+(clean-utf8 u.image.d))
740+ version+s+(crip (version-tape version.d))
741+ website+s+(clean-utf8 website.d)
742+ license+s+(clean-utf8 license.d)
743+ hash+s+(scot %uv hash.t)
744+ install+s+(crip (install-cmd ship.t desk.t))
745+ ==
746+--
desk/lib/sigil.hoonnew file+254
@@ -0,0 +1,254 @@
1+:: VENDORED from https://github.com/Fang-/suite (lib/sigil.hoon, git blob
2+:: bde388953423dd3e859127b038e66ef19dd5d108, last changed upstream in
3+:: commit 0d8bbd1a09 on 2022-05-14), unmodified below this header.
4+:: symbol shapes (lib/sigil/symbols.hoon) derive from urbit/sigil-js.
5+::
6+:: MIT License
7+::
8+:: Copyright (c) 2020 Fang
9+::
10+:: Permission is hereby granted, free of charge, to any person obtaining a copy
11+:: of this software and associated documentation files (the "Software"), to deal
12+:: in the Software without restriction, including without limitation the rights
13+:: to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14+:: copies of the Software, and to permit persons to whom the Software is
15+:: furnished to do so, subject to the following conditions:
16+::
17+:: The above copyright notice and this permission notice shall be included in all
18+:: copies or substantial portions of the Software.
19+::
20+:: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21+:: IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22+:: FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23+:: AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24+:: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25+:: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26+:: SOFTWARE.
27+::
28+:: sigil: @p svg generation
29+::
30+:: usage: do a named import, then invoke as a function:
31+:: (sigil ~zod)
32+::
33+:: optionally modify configuration parameters:
34+:: %. ~paldev
35+:: %_ sigil
36+:: size 25
37+:: fg "black"
38+:: bg "#2aa779"
39+:: margin |
40+:: icon &
41+:: ==
42+::
43+::NOTE svg construction logic is coupled to the symbols definitions.
44+:: the symbols' elements assume they live in a space of 128x128.
45+:: what we do here is assume an svg _canvas_ of 128x128, draw the
46+:: symbols at their original sizes, and then scale them down to fit.
47+::
48+/+ sigil-symbols
49+::
50+:: config
51+::
52+=/ fg=tape "white"
53+=/ bg=tape "black"
54+=/ size=@ud 128
55+=/ margin=? &
56+=/ icon=? |
57+::
58+::
59+~% %sigil ..part ~
60+=/ who=ship ~zod
61+=/ syc=@ud 1
62+|^ |= =ship
63+ ^- manx
64+ ::
65+ =. who ship
66+ =/ syz (simp who)
67+ =. syc (lent syz)
68+ :: shift the sigil to account for the margin
69+ :: scale the sigil to account for the amount of symbols
70+ ::
71+ =/ sire=@rd (sun:rd size)
72+ =/ tr=tape
73+ ::TODO render transform inside +sigil:svg?
74+ %+ transform:svg
75+ ?. margin ~
76+ =+ grid:pos
77+ `[(gird:pos x) (gird:pos y)]
78+ `span:pos
79+ ::
80+ =/ sw=@rd ::TODO
81+ ?: icon .~0.8 ::TODO scale with size?
82+ (add:rd .~0.33 (div:rd sire .~128))
83+ ::
84+ %- outer:svg
85+ %+ sigil:svg
86+ [tr sw]
87+ (symbols:svg syz)
88+::
89+++ pos
90+ |%
91+ ++ span :: symbol scale (relative to full canvas)
92+ ^- @rd
93+ ::TODO accounting for margin here feels a bit ugly?
94+ ?+ (max grid) !!
95+ %1 ?:(margin .~0.4 .~1)
96+ %2 ?:(margin .~0.4 .~0.5)
97+ %4 ?:(margin .~0.2 .~0.25)
98+ ==
99+ ::
100+ ++ grid :: size in symbols
101+ ^- [x=@ud y=@ud]
102+ ?+ syc !!
103+ %16 [4 4]
104+ %8 [4 4]
105+ %4 [2 2]
106+ %2 [2 1]
107+ %1 [1 1]
108+ ==
109+ ::
110+ ++ gird :: calculate margin
111+ |= n=@ud
112+ ^- @rd
113+ =- (div:rd - .~2) :: / both sides
114+ %+ sub:rd .~128 :: canvas size -
115+ %+ mul:rd (sun:rd n) :: symbols *
116+ %+ mul:rd span:pos :: symbol scale *
117+ .~128 :: symbol size
118+ ::
119+ ++ plan :: as position on symbol grid
120+ |= i=@ud
121+ ^- [x=@ud y=@ud]
122+ ?+ [syc i] !!
123+ [%16 *] [(mod i 4) (div i 4)]
124+ ::
125+ [%8 %0] [0 0]
126+ [%8 %1] [3 0]
127+ [%8 %2] [0 3]
128+ [%8 %3] [3 3]
129+ [%8 %4] [1 1]
130+ [%8 %5] [2 1]
131+ [%8 %6] [1 2]
132+ [%8 %7] [2 2]
133+ ::
134+ [%4 *] [(mod i 2) (div i 2)]
135+ [%2 *] [i 0]
136+ [%1 *] [0 0]
137+ ==
138+ --
139+::
140+++ svg
141+ |%
142+ ++ outer
143+ |= inner=manx
144+ ^- manx
145+ =/ s=tape ((d-co:co 1) size)
146+ ;svg
147+ =style "display: block; width: {s}px; height: {s}px;" :: prevent bottom margin on svg tag
148+ =width s
149+ =height s
150+ =viewBox "0 0 128 128"
151+ =version "1.1"
152+ =xmlns "http://www.w3.org/2000/svg"
153+ ::TODO additional attributes from config arg?
154+ ;rect
155+ =fill bg
156+ =width "128"
157+ =height "128";
158+ ;+ inner
159+ ==
160+ ::
161+ ::TODO should it be possible to get these svg elements out of this lib?
162+ ++ sigil
163+ |= [[tr=tape sw=@rd] symbols=(list manx)]
164+ ^- manx
165+ ;g
166+ =transform tr
167+ =stroke-width (say-rd sw)
168+ =stroke-linecap "square"
169+ =fill fg
170+ =stroke bg
171+ ::NOTE unfortunately, vector-effect cannot be inherited,
172+ :: so it gets inlined in the symbol elements instead
173+ :: =vector-effect "non-scaling-stroke"
174+ ;* symbols
175+ ==
176+ ::
177+ ++ symbols
178+ |= noms=(list @t)
179+ ^- (list manx)
180+ =| i=@ud
181+ =/ l=@ud (lent noms)
182+ |-
183+ ?~ noms ~
184+ :_ $(noms t.noms, i +(i))
185+ ::TODO exclude if both 0
186+ =+ (plan:pos i)
187+ ;g(transform (transform `[(sun:rd (mul x 128)) (sun:rd (mul y 128))] ~))
188+ ;* =+ ((symbol i.noms) fg bg)
189+ ?.(icon - (scag 1 -))
190+ ==
191+ ::
192+ ++ symbol ~(got by sigil-symbols)
193+ ::
194+ ++ transform ::TODO take manx instead so we can omit attr entirely?
195+ |= [translate=(unit [x=@rd y=@rd]) scale=(unit @rd)]
196+ ^- tape
197+ %- zing
198+ ^- (list tape)
199+ ::TODO make cleaner
200+ =- ?: ?=(?(~ [* ~]) -) -
201+ (join " " `(list tape)`-)
202+ ^- (list tape)
203+ :~ ?~ translate ~
204+ ?: =([0 0] u.translate) ~
205+ "translate({(say-rd x.u.translate)} {(say-rd y.u.translate)})"
206+ ::
207+ ?~ scale ~
208+ "scale({(say-rd u.scale)})"
209+ ==
210+ --
211+::
212+++ simp
213+ |= =ship
214+ ^- (list @t)
215+ :: split into phonemes
216+ ::
217+ =/ noms=(list @t)
218+ =/ nom=@t
219+ (rsh 3 (scot %p ship))
220+ |- ?~ nom ~
221+ |- ?: =('-' (end 3 nom))
222+ $(nom (rsh 3 nom))
223+ :- (end 3^3 nom)
224+ ^$(nom (rsh 3^3 nom))
225+ :: fill leading empties with 'zod'
226+ ::
227+ =/ left=@ud
228+ =- (sub - (lent noms))
229+ %- bex
230+ ?- (clan:title ship)
231+ %czar 0
232+ %king 1
233+ %duke 2
234+ %earl 3
235+ %pawn 4
236+ ==
237+ |-
238+ ?: =(0 left) noms
239+ $(noms ['zod' noms], left (dec left))
240+::
241+++ rd ~(. ^rd %n)
242+++ say-rd
243+ |= n=@rd
244+ ^- tape
245+ =/ =dn (drg:rd n)
246+ ?> ?=(%d -.dn)
247+ =/ [s=? m=@ud] (old:si e.dn)
248+ =/ x=@ud (pow 10 m)
249+ %+ weld
250+ %- (d-co:co 1)
251+ ?:(s (mul a.dn x) (div a.dn x))
252+ ?: s ~
253+ ['.' ((d-co:co m) (mod a.dn x))]
254+--
desk/lib/sigil/symbols.hoonnew file+14361
@@ -0,0 +1,14361 @@
1+:: VENDORED from https://github.com/Fang-/suite (lib/sigil/symbols.hoon, git
2+:: blob 1131612d31ed4be1065ab2b820ebdc3d031afa4f, last changed upstream in
3+:: commit f9fbfc0d5b on 2022-05-14), unmodified below this header.
4+:: Copyright (c) 2020 Fang, MIT License (full text in /lib/sigil.hoon).
5+:: The shapes are taken from https://github.com/urbit/sigil-js
6+:: (src/index.json at fdea06f), which is:
7+::
8+:: The MIT License (MIT)
9+::
10+:: Copyright (c) 2019 Tlon
11+::
12+:: Permission is hereby granted, free of charge, to any person obtaining a copy
13+:: of this software and associated documentation files (the "Software"), to deal
14+:: in the Software without restriction, including without limitation the rights
15+:: to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16+:: copies of the Software, and to permit persons to whom the Software is
17+:: furnished to do so, subject to the following conditions:
18+::
19+:: The above copyright notice and this permission notice shall be included in all
20+:: copies or substantial portions of the Software.
21+::
22+:: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23+:: IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24+:: FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25+:: AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26+:: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27+:: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28+:: SOFTWARE.
29+::
30+:: sigil-symbols: svg symbols for phonemes, for use in /lib/sigil
31+::
32+:: the map is keyed by phoneme cords and contains functions for
33+:: generating lists of manxes based on fore- and background colors,
34+:: intended to be wrapped up in an svg <g> for further processing.
35+::
36+:: shapes and default attributes sourced from:
37+:: https://github.com/urbit/sigil-js/blob/fdea06f/src/index.json
38+::
39+::NOTE to reduce svg size, we exclude certain common/shared attributes.
40+:: we expect the /lib/sigil to wrap these elements in a <g> which sets
41+:: those attributes, letting them be inherited. they are as follows:
42+:: =fill fg
43+:: =stroke bg
44+:: =stroke-linecap "square"
45+:: =stroke-width
46+:: we assume the defaults specified above, and only include those
47+:: attributes below if they deviate from those. (this includes adding
48+:: stroke="none" for elements whose original specification did not
49+:: include a stroke.)
50+:: unfortunately, the vector-effect attribute cannot be inherted by <g>
51+:: children, so we have to inline it for every element here.
52+:: for ease of change, we leave excluded attributes as comments here.
53+::
54+^~
55+%- ~(gas by *(map cord $-([fg=tape bg=tape] (list manx))))
56+:~
57+ :- 'bac'
58+ |= [fg=tape bg=tape]
59+ :~ ;path
60+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
61+ :: =fill fg
62+ =vector-effect "non-scaling-stroke";
63+ :: =stroke bg
64+ :: =stroke-width "0.5"
65+ ;line
66+ =x1 "-0.0029152"
67+ =x2 "127.983"
68+ =y2 "127.986"
69+ =vector-effect "non-scaling-stroke"
70+ :: =stroke bg
71+ :: =stroke-linecap "square"
72+ =fill "none";
73+ ;circle
74+ =cx "64"
75+ =cy "64"
76+ =r "11.5"
77+ :: =fill fg
78+ =vector-effect "non-scaling-stroke"
79+ =stroke fg;
80+ ;circle
81+ =cx "64"
82+ =cy "64"
83+ =r "9"
84+ =fill bg
85+ =vector-effect "non-scaling-stroke";
86+ :: =stroke bg
87+ :: =stroke-width "2"
88+ ;circle
89+ =cx "16"
90+ =cy "112"
91+ =r "11.5"
92+ =fill bg
93+ =vector-effect "non-scaling-stroke";
94+ :: =stroke bg
95+ ;circle
96+ =cx "16"
97+ =cy "112"
98+ =r "9"
99+ :: =fill fg
100+ =vector-effect "non-scaling-stroke"
101+ =stroke fg;
102+ :: =stroke-width "2"
103+ ==
104+::
105+ :- 'bal'
106+ |= [fg=tape bg=tape]
107+ :~ ;path
108+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
109+ :: =fill fg
110+ =vector-effect "non-scaling-stroke";
111+ :: =stroke bg
112+ :: =stroke-width "0.5"
113+ ;circle
114+ =cx "32"
115+ =cy "32"
116+ =r "11.5"
117+ :: =fill fg
118+ =vector-effect "non-scaling-stroke"
119+ =stroke fg;
120+ ;circle
121+ =cx "32"
122+ =cy "32"
123+ =r "9"
124+ =fill bg
125+ =vector-effect "non-scaling-stroke";
126+ :: =stroke bg
127+ :: =stroke-width "2"
128+ ;line
129+ =x1 "0.5"
130+ =y1 "-0.5"
131+ =x2 "181.5"
132+ =y2 "-0.5"
133+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
134+ =vector-effect "non-scaling-stroke"
135+ :: =stroke bg
136+ :: =stroke-linecap "square"
137+ =fill "none";
138+ ;line
139+ =x1 "128"
140+ =y1 "32.0072"
141+ =x2 "32.7071"
142+ =y2 "127.3"
143+ =vector-effect "non-scaling-stroke"
144+ :: =stroke bg
145+ :: =stroke-linecap "square"
146+ =fill "none";
147+ ;line
148+ =x1 "128"
149+ =y1 "64.0072"
150+ =x2 "64.7071"
151+ =y2 "127.3"
152+ =vector-effect "non-scaling-stroke"
153+ :: =stroke bg
154+ :: =stroke-linecap "square"
155+ =fill "none";
156+ ;line
157+ =x1 "128"
158+ =y1 "96.0072"
159+ =x2 "96.7071"
160+ =y2 "127.3"
161+ =vector-effect "non-scaling-stroke"
162+ :: =stroke bg
163+ :: =stroke-linecap "square"
164+ =fill "none";
165+ ==
166+::
167+ :- 'ban'
168+ |= [fg=tape bg=tape]
169+ :~ ;path
170+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
171+ :: =fill fg
172+ =vector-effect "non-scaling-stroke";
173+ :: =stroke bg
174+ :: =stroke-width "0.5"
175+ ;path
176+ =d "M128 0C128 70.6924 70.6924 128 -1.52588e-05 128"
177+ =vector-effect "non-scaling-stroke"
178+ :: =stroke bg
179+ =fill "none";
180+ ==
181+::
182+ :- 'bar'
183+ |= [fg=tape bg=tape]
184+ :~ ;circle
185+ =cx "64"
186+ =cy "64"
187+ =r "64"
188+ :: =fill fg
189+ =vector-effect "non-scaling-stroke";
190+ :: =stroke bg
191+ :: =stroke-width "0.5"
192+ ;path
193+ =d "M-0.00292969 0L127.997 128"
194+ =vector-effect "non-scaling-stroke"
195+ :: =stroke bg
196+ :: =stroke-linecap "square"
197+ =fill "none";
198+ ;circle
199+ =cx "64"
200+ =cy "64"
201+ =r "16"
202+ =vector-effect "non-scaling-stroke"
203+ :: =stroke bg
204+ =fill "none";
205+ ;circle
206+ =cx "32"
207+ =cy "32"
208+ =r "11.5"
209+ :: =fill fg
210+ =vector-effect "non-scaling-stroke"
211+ =stroke fg;
212+ ;circle
213+ =cx "32"
214+ =cy "32"
215+ =r "9"
216+ =fill bg
217+ =vector-effect "non-scaling-stroke";
218+ :: =stroke bg
219+ :: =stroke-width "2"
220+ ==
221+::
222+ :- 'bat'
223+ |= [fg=tape bg=tape]
224+ :~ ;path
225+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
226+ :: =fill fg
227+ =vector-effect "non-scaling-stroke";
228+ :: =stroke bg
229+ :: =stroke-width "0.5"
230+ ;path
231+ =d "M128 0C128 35.3462 99.3462 64 64 64C28.6538 64 0 35.3462 0 0"
232+ =vector-effect "non-scaling-stroke"
233+ :: =stroke bg
234+ =fill "none";
235+ ==
236+::
237+ :- 'bec'
238+ |= [fg=tape bg=tape]
239+ :~ ;path
240+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
241+ :: =fill fg
242+ =vector-effect "non-scaling-stroke";
243+ :: =stroke bg
244+ :: =stroke-width "0.5"
245+ ;path
246+ =d "M-0.00280762 0L127.997 128"
247+ =vector-effect "non-scaling-stroke"
248+ :: =stroke bg
249+ :: =stroke-linecap "square"
250+ =fill "none";
251+ ;path
252+ =fill-rule "evenodd"
253+ =clip-rule "evenodd"
254+ =stroke "none"
255+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
256+ =fill bg;
257+ ==
258+::
259+ :- 'bel'
260+ |= [fg=tape bg=tape]
261+ :~ ;path
262+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
263+ :: =fill fg
264+ =vector-effect "non-scaling-stroke";
265+ :: =stroke bg
266+ :: =stroke-width "0.5"
267+ ;circle
268+ =cx "64"
269+ =cy "64"
270+ =r "32"
271+ =vector-effect "non-scaling-stroke"
272+ :: =stroke bg
273+ =fill "none";
274+ ==
275+::
276+ :- 'ben'
277+ |= [fg=tape bg=tape]
278+ :~ ;rect
279+ =width "128"
280+ =height "128"
281+ :: =fill fg
282+ =vector-effect "non-scaling-stroke";
283+ :: =stroke bg
284+ :: =stroke-width "0.5"
285+ ;circle
286+ =cx "64"
287+ =cy "64"
288+ =r "8"
289+ =vector-effect "non-scaling-stroke"
290+ :: =stroke bg
291+ =fill "none";
292+ ;circle
293+ =cx "32"
294+ =cy "64"
295+ =r "11.5"
296+ :: =fill fg
297+ =vector-effect "non-scaling-stroke"
298+ =stroke fg;
299+ ;circle
300+ =cx "32"
301+ =cy "64"
302+ =r "9"
303+ =fill bg
304+ =vector-effect "non-scaling-stroke";
305+ :: =stroke bg
306+ :: =stroke-width "2"
307+ ==
308+::
309+ :- 'bep'
310+ |= [fg=tape bg=tape]
311+ :~ ;path
312+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
313+ :: =fill fg
314+ =vector-effect "non-scaling-stroke";
315+ :: =stroke bg
316+ :: =stroke-width "0.5"
317+ ;path
318+ =d "M128 64C92.6538 64 64 92.6538 64 128"
319+ =vector-effect "non-scaling-stroke"
320+ :: =stroke bg
321+ =fill "none";
322+ ==
323+::
324+ :- 'ber'
325+ |= [fg=tape bg=tape]
326+ :~ ;path
327+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
328+ :: =fill fg
329+ =vector-effect "non-scaling-stroke";
330+ :: =stroke bg
331+ :: =stroke-width "0.5"
332+ ;path
333+ =d "M96 0L96 128"
334+ =vector-effect "non-scaling-stroke"
335+ :: =stroke bg
336+ =fill "none";
337+ ==
338+::
339+ :- 'bes'
340+ |= [fg=tape bg=tape]
341+ :~ ;path
342+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
343+ :: =fill fg
344+ =vector-effect "non-scaling-stroke";
345+ :: =stroke bg
346+ :: =stroke-width "0.5"
347+ ;path
348+ =d "M64 128C64 92.6538 35.3462 64 0 64"
349+ =vector-effect "non-scaling-stroke"
350+ :: =stroke bg
351+ =fill "none";
352+ ;path
353+ =d "M-0.00280762 0L127.997 128"
354+ =vector-effect "non-scaling-stroke"
355+ :: =stroke bg
356+ :: =stroke-linecap "square"
357+ =fill "none";
358+ ==
359+::
360+ :- 'bet'
361+ |= [fg=tape bg=tape]
362+ :~ ;circle
363+ =cx "64"
364+ =cy "64"
365+ =r "64"
366+ :: =fill fg
367+ =vector-effect "non-scaling-stroke";
368+ :: =stroke bg
369+ :: =stroke-width "0.5"
370+ ;line
371+ =x1 "16.0036"
372+ =y1 "15.9965"
373+ =x2 "48.0036"
374+ =y2 "47.9965"
375+ =vector-effect "non-scaling-stroke"
376+ :: =stroke bg
377+ =fill "none";
378+ ==
379+::
380+ :- 'bex'
381+ |= [fg=tape bg=tape]
382+ :~ ;path
383+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
384+ :: =fill fg
385+ =vector-effect "non-scaling-stroke";
386+ :: =stroke bg
387+ :: =stroke-width "0.5"
388+ ;line
389+ =x1 "16.0036"
390+ =y1 "15.9965"
391+ =x2 "48.0036"
392+ =y2 "47.9965"
393+ =vector-effect "non-scaling-stroke"
394+ :: =stroke bg
395+ =fill "none";
396+ ;path
397+ =fill-rule "evenodd"
398+ =clip-rule "evenodd"
399+ =stroke "none"
400+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
401+ =fill bg;
402+ ==
403+::
404+ :- 'bic'
405+ |= [fg=tape bg=tape]
406+ :~ ;path
407+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
408+ :: =fill fg
409+ =vector-effect "non-scaling-stroke";
410+ :: =stroke bg
411+ :: =stroke-width "0.5"
412+ ;path
413+ =d "M128 96C74.9807 96 32 53.0193 32 -4.19629e-06"
414+ =vector-effect "non-scaling-stroke"
415+ :: =stroke bg
416+ =fill "none";
417+ ==
418+::
419+ :- 'bid'
420+ |= [fg=tape bg=tape]
421+ :~ ;path
422+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
423+ :: =fill fg
424+ =vector-effect "non-scaling-stroke";
425+ :: =stroke bg
426+ :: =stroke-width "0.5"
427+ ;path
428+ =d "M32 0C32 70.6925 74.9807 128 128 128"
429+ =vector-effect "non-scaling-stroke"
430+ :: =stroke bg
431+ =fill "none";
432+ ;path
433+ =d "M128 64L0 64"
434+ =vector-effect "non-scaling-stroke"
435+ :: =stroke bg
436+ =fill "none";
437+ ==
438+::
439+ :- 'bil'
440+ |= [fg=tape bg=tape]
441+ :~ ;path
442+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
443+ :: =fill fg
444+ =vector-effect "non-scaling-stroke";
445+ :: =stroke bg
446+ :: =stroke-width "0.5"
447+ ;line
448+ =x1 "80.0035"
449+ =y1 "79.9965"
450+ =x2 "112.004"
451+ =y2 "111.997"
452+ =vector-effect "non-scaling-stroke"
453+ :: =stroke bg
454+ =fill "none";
455+ ;path
456+ =fill-rule "evenodd"
457+ =clip-rule "evenodd"
458+ =stroke "none"
459+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
460+ =fill bg;
461+ ==
462+::
463+ :- 'bin'
464+ |= [fg=tape bg=tape]
465+ :~ ;rect
466+ =width "128"
467+ =height "128"
468+ :: =fill fg
469+ =vector-effect "non-scaling-stroke";
470+ :: =stroke bg
471+ :: =stroke-width "0.5"
472+ ==
473+::
474+ :- 'bis'
475+ |= [fg=tape bg=tape]
476+ :~ ;path
477+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
478+ :: =fill fg
479+ =vector-effect "non-scaling-stroke";
480+ :: =stroke bg
481+ :: =stroke-width "0.5"
482+ ;line
483+ =x1 "128"
484+ =y1 "64"
485+ =x2 "-8.87604e-09"
486+ =y2 "64"
487+ =vector-effect "non-scaling-stroke"
488+ :: =stroke bg
489+ =fill "none";
490+ ;line
491+ =x1 "128"
492+ =y1 "96"
493+ =x2 "-8.87604e-09"
494+ =y2 "96"
495+ =vector-effect "non-scaling-stroke"
496+ :: =stroke bg
497+ =fill "none";
498+ ;line
499+ =x1 "128"
500+ =y1 "32"
501+ =x2 "-8.87604e-09"
502+ =y2 "32"
503+ =vector-effect "non-scaling-stroke"
504+ :: =stroke bg
505+ =fill "none";
506+ ==
507+::
508+ :- 'bit'
509+ |= [fg=tape bg=tape]
510+ :~ ;path
511+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
512+ :: =fill fg
513+ =vector-effect "non-scaling-stroke";
514+ :: =stroke bg
515+ :: =stroke-width "0.5"
516+ ;path
517+ =d "M128 0L0 128"
518+ =vector-effect "non-scaling-stroke"
519+ :: =stroke bg
520+ :: =stroke-linecap "square"
521+ =fill "none";
522+ ;circle
523+ =cx "64"
524+ =cy "64"
525+ =r "11.5"
526+ :: =fill fg
527+ =vector-effect "non-scaling-stroke"
528+ =stroke fg;
529+ ;circle
530+ =cx "64"
531+ =cy "64"
532+ =r "9"
533+ =fill bg
534+ =vector-effect "non-scaling-stroke";
535+ :: =stroke bg
536+ :: =stroke-width "2"
537+ ==
538+::
539+ :- 'bol'
540+ |= [fg=tape bg=tape]
541+ :~ ;circle
542+ =cx "64"
543+ =cy "64"
544+ =r "64"
545+ :: =fill fg
546+ =vector-effect "non-scaling-stroke";
547+ :: =stroke bg
548+ :: =stroke-width "0.5"
549+ ;circle
550+ =cx "64"
551+ =cy "64"
552+ =r "48"
553+ =vector-effect "non-scaling-stroke"
554+ :: =stroke bg
555+ =fill "none";
556+ ;line
557+ =x1 "128"
558+ =y1 "64"
559+ =x2 "-4.37114e-08"
560+ =y2 "64"
561+ =vector-effect "non-scaling-stroke"
562+ :: =stroke bg
563+ =fill "none";
564+ ==
565+::
566+ :- 'bon'
567+ |= [fg=tape bg=tape]
568+ :~ ;path
569+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
570+ :: =fill fg
571+ =vector-effect "non-scaling-stroke";
572+ :: =stroke bg
573+ :: =stroke-width "0.5"
574+ ;path
575+ =d "M128 128C92.6538 128 64 99.3462 64 64C64 28.6538 92.6538 4.215e-07 128 0"
576+ =vector-effect "non-scaling-stroke"
577+ :: =stroke bg
578+ =fill "none";
579+ ==
580+::
581+ :- 'bor'
582+ |= [fg=tape bg=tape]
583+ :~ ;path
584+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
585+ :: =fill fg
586+ =vector-effect "non-scaling-stroke";
587+ :: =stroke bg
588+ :: =stroke-width "0.5"
589+ ;line
590+ =x1 "-0.0029152"
591+ =x2 "127.983"
592+ =y2 "127.986"
593+ =vector-effect "non-scaling-stroke"
594+ :: =stroke bg
595+ :: =stroke-linecap "square"
596+ =fill "none";
597+ ;path
598+ =d "M0 128C4.63574e-06 92.6489 14.3309 60.6449 37.5 37.4807"
599+ =vector-effect "non-scaling-stroke"
600+ :: =stroke bg
601+ =fill "none";
602+ ;path
603+ =d "M32 128C32 101.492 42.7436 77.4939 60.1138 60.1217"
604+ =vector-effect "non-scaling-stroke"
605+ :: =stroke bg
606+ =fill "none";
607+ ;path
608+ =d "M64 128C64 110.328 71.1626 94.3287 82.7432 82.7471"
609+ =vector-effect "non-scaling-stroke"
610+ :: =stroke bg
611+ =fill "none";
612+ ;path
613+ =d "M95.6284 128C95.6284 119.164 99.2097 111.164 105 105.374"
614+ =vector-effect "non-scaling-stroke"
615+ :: =stroke bg
616+ =fill "none";
617+ ==
618+::
619+ :- 'bos'
620+ |= [fg=tape bg=tape]
621+ :~ ;path
622+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
623+ :: =fill fg
624+ =vector-effect "non-scaling-stroke";
625+ :: =stroke bg
626+ :: =stroke-width "0.5"
627+ ;line
628+ =x1 "-0.0029152"
629+ =x2 "127.983"
630+ =y2 "127.986"
631+ =vector-effect "non-scaling-stroke"
632+ :: =stroke bg
633+ :: =stroke-linecap "square"
634+ =fill "none";
635+ ;circle
636+ =cx "32"
637+ =cy "32"
638+ =r "11.5"
639+ :: =fill fg
640+ =vector-effect "non-scaling-stroke"
641+ =stroke fg;
642+ ;circle
643+ =cx "32"
644+ =cy "32"
645+ =r "9"
646+ =fill bg
647+ =vector-effect "non-scaling-stroke";
648+ :: =stroke bg
649+ :: =stroke-width "2"
650+ ==
651+::
652+ :- 'bot'
653+ |= [fg=tape bg=tape]
654+ :~ ;path
655+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
656+ :: =fill fg
657+ =vector-effect "non-scaling-stroke";
658+ :: =stroke bg
659+ :: =stroke-width "0.5"
660+ ;line
661+ =x1 "32"
662+ =y1 "2.18557e-08"
663+ =x2 "32"
664+ =y2 "128"
665+ =vector-effect "non-scaling-stroke"
666+ :: =stroke bg
667+ =fill "none";
668+ ;circle
669+ =cx "32"
670+ =cy "96"
671+ =r "11.5"
672+ :: =fill fg
673+ =vector-effect "non-scaling-stroke"
674+ =stroke fg;
675+ ;circle
676+ =cx "32"
677+ =cy "96"
678+ =r "9"
679+ =fill bg
680+ =vector-effect "non-scaling-stroke";
681+ :: =stroke bg
682+ :: =stroke-width "2"
683+ ;circle
684+ =cx "32"
685+ =cy "32"
686+ =r "11.5"
687+ :: =fill fg
688+ =vector-effect "non-scaling-stroke"
689+ =stroke fg;
690+ ;circle
691+ =cx "32"
692+ =cy "32"
693+ =r "9"
694+ =fill bg
695+ =vector-effect "non-scaling-stroke";
696+ :: =stroke bg
697+ :: =stroke-width "2"
698+ ==
699+::
700+ :- 'bud'
701+ |= [fg=tape bg=tape]
702+ :~ ;path
703+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
704+ :: =fill fg
705+ =vector-effect "non-scaling-stroke";
706+ :: =stroke bg
707+ :: =stroke-width "0.5"
708+ ;path
709+ =d "M16 64C16 90.5097 37.4903 112 64 112"
710+ =vector-effect "non-scaling-stroke"
711+ :: =stroke bg
712+ =fill "none";
713+ ;circle
714+ =cx "16"
715+ =cy "64"
716+ =r "11.5"
717+ :: =fill fg
718+ =vector-effect "non-scaling-stroke"
719+ =stroke fg;
720+ ;circle
721+ =cx "16"
722+ =cy "64"
723+ =r "9"
724+ =fill bg
725+ =vector-effect "non-scaling-stroke";
726+ :: =stroke bg
727+ :: =stroke-width "2"
728+ ==
729+::
730+ :- 'bur'
731+ |= [fg=tape bg=tape]
732+ :~ ;path
733+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
734+ :: =fill fg
735+ =vector-effect "non-scaling-stroke";
736+ :: =stroke bg
737+ :: =stroke-width "0.5"
738+ ;path
739+ =d "M7.37542e-06 -3.56072e-06C1.19529e-06 70.6924 57.3075 128 128 128"
740+ =vector-effect "non-scaling-stroke"
741+ :: =stroke bg
742+ =fill "none";
743+ ;path
744+ =d "M128 0L0 128"
745+ =vector-effect "non-scaling-stroke"
746+ :: =stroke bg
747+ :: =stroke-linecap "square"
748+ =fill "none";
749+ ==
750+::
751+ :- 'bus'
752+ |= [fg=tape bg=tape]
753+ :~ ;path
754+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
755+ :: =fill fg
756+ =vector-effect "non-scaling-stroke";
757+ :: =stroke bg
758+ :: =stroke-width "0.5"
759+ ;path
760+ =d "M32 128C32 110.327 17.6731 96 0 96"
761+ =vector-effect "non-scaling-stroke"
762+ :: =stroke bg
763+ =fill "none";
764+ ;path
765+ =d "M-0.00292969 0L127.997 128"
766+ =vector-effect "non-scaling-stroke"
767+ :: =stroke bg
768+ :: =stroke-linecap "square"
769+ =fill "none";
770+ ==
771+::
772+ :- 'byl'
773+ |= [fg=tape bg=tape]
774+ :~ ;path
775+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
776+ :: =fill fg
777+ =vector-effect "non-scaling-stroke";
778+ :: =stroke bg
779+ :: =stroke-width "0.5"
780+ ;circle
781+ =cx "16"
782+ =cy "112"
783+ =r "11.5"
784+ :: =fill fg
785+ =vector-effect "non-scaling-stroke"
786+ =stroke fg;
787+ ;circle
788+ =cx "16"
789+ =cy "112"
790+ =r "9"
791+ =fill bg
792+ =vector-effect "non-scaling-stroke";
793+ :: =stroke bg
794+ :: =stroke-width "2"
795+ ;path
796+ =d "M-0.00280762 0L127.997 128"
797+ =vector-effect "non-scaling-stroke"
798+ :: =stroke bg
799+ :: =stroke-linecap "square"
800+ =fill "none";
801+ ;path
802+ =d "M22.1288 22.6299C16.0075 28.7511 8.0234 31.874 0.00134547 31.9986M44.7562 45.2573C32.3866 57.6269 16.2133 63.8747 0.00134277 64.0005M67.3836 67.8847C48.7656 86.5027 24.403 95.8749 0.00134412 96.0012"
803+ =vector-effect "non-scaling-stroke"
804+ :: =stroke bg
805+ =fill "none";
806+ ==
807+::
808+ :- 'byn'
809+ |= [fg=tape bg=tape]
810+ :~ ;path
811+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
812+ :: =fill fg
813+ =vector-effect "non-scaling-stroke";
814+ :: =stroke bg
815+ :: =stroke-width "0.5"
816+ ;path
817+ =d "M128 0C128 35.3511 113.669 67.3551 90.5 90.5193"
818+ =vector-effect "non-scaling-stroke"
819+ :: =stroke bg
820+ =fill "none";
821+ ;path
822+ =d "M96 0C96 26.5077 85.2564 50.5061 67.8862 67.8783"
823+ =vector-effect "non-scaling-stroke"
824+ :: =stroke bg
825+ =fill "none";
826+ ;path
827+ =d "M64 0C64 17.6721 56.8374 33.6713 45.2568 45.2529"
828+ =vector-effect "non-scaling-stroke"
829+ :: =stroke bg
830+ =fill "none";
831+ ;path
832+ =d "M32.3716 0C32.3716 8.83603 28.7903 16.8356 23 22.6264"
833+ =vector-effect "non-scaling-stroke"
834+ :: =stroke bg
835+ =fill "none";
836+ ==
837+::
838+ :- 'byr'
839+ |= [fg=tape bg=tape]
840+ :~ ;path
841+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
842+ :: =fill fg
843+ =vector-effect "non-scaling-stroke";
844+ :: =stroke bg
845+ :: =stroke-width "0.5"
846+ ;path
847+ =d "M-0.00280762 0L127.997 128"
848+ =vector-effect "non-scaling-stroke"
849+ :: =stroke bg
850+ :: =stroke-linecap "square"
851+ =fill "none";
852+ ;circle
853+ =cx "48"
854+ =cy "80"
855+ =r "11.5"
856+ :: =fill fg
857+ =vector-effect "non-scaling-stroke"
858+ =stroke fg;
859+ ;circle
860+ =cx "48"
861+ =cy "80"
862+ =r "9"
863+ =fill bg
864+ =vector-effect "non-scaling-stroke";
865+ :: =stroke bg
866+ :: =stroke-width "2"
867+ ==
868+::
869+ :- 'byt'
870+ |= [fg=tape bg=tape]
871+ :~ ;path
872+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
873+ :: =fill fg
874+ =vector-effect "non-scaling-stroke";
875+ :: =stroke bg
876+ :: =stroke-width "0.5"
877+ ;circle
878+ =cx "64"
879+ =cy "64"
880+ =r "48"
881+ =vector-effect "non-scaling-stroke"
882+ :: =stroke bg
883+ =fill "none";
884+ ;path
885+ =d "M128 64L0 64"
886+ =vector-effect "non-scaling-stroke"
887+ :: =stroke bg
888+ =fill "none";
889+ ;path
890+ =d "M32 0L32 128"
891+ =vector-effect "non-scaling-stroke"
892+ :: =stroke bg
893+ =fill "none";
894+ ==
895+::
896+ :- 'dab'
897+ |= [fg=tape bg=tape]
898+ :~ ;path
899+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
900+ :: =fill fg
901+ =vector-effect "non-scaling-stroke";
902+ :: =stroke bg
903+ :: =stroke-width "0.5"
904+ ;line
905+ =y1 "-0.5"
906+ =x2 "45.2548"
907+ =y2 "-0.5"
908+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
909+ =vector-effect "non-scaling-stroke"
910+ :: =stroke bg
911+ =fill "none";
912+ ;circle
913+ =cx "16"
914+ =cy "112"
915+ =r "11.5"
916+ =fill bg
917+ =vector-effect "non-scaling-stroke";
918+ :: =stroke bg
919+ ;circle
920+ =cx "16"
921+ =cy "112"
922+ =r "9"
923+ :: =fill fg
924+ =vector-effect "non-scaling-stroke"
925+ =stroke fg;
926+ :: =stroke-width "2"
927+ ==
928+::
929+ :- 'dac'
930+ |= [fg=tape bg=tape]
931+ :~ ;path
932+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
933+ :: =fill fg
934+ =vector-effect "non-scaling-stroke";
935+ :: =stroke bg
936+ :: =stroke-width "0.5"
937+ ;path
938+ =d "M128 0L0 128"
939+ =vector-effect "non-scaling-stroke"
940+ :: =stroke bg
941+ :: =stroke-linecap "square"
942+ =fill "none";
943+ ;path
944+ =d "M64 0L64 128"
945+ =vector-effect "non-scaling-stroke"
946+ :: =stroke bg
947+ =fill "none";
948+ ;path
949+ =d "M128 64L-5.96046e-08 64"
950+ =vector-effect "non-scaling-stroke"
951+ :: =stroke bg
952+ =fill "none";
953+ ==
954+::
955+ :- 'dal'
956+ |= [fg=tape bg=tape]
957+ :~ ;path
958+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
959+ :: =fill fg
960+ =vector-effect "non-scaling-stroke";
961+ :: =stroke bg
962+ :: =stroke-width "0.5"
963+ ;line
964+ =x1 "-0.0029152"
965+ =x2 "63.29"
966+ =y2 "63.2929"
967+ =vector-effect "non-scaling-stroke"
968+ :: =stroke bg
969+ :: =stroke-linecap "square"
970+ =fill "none";
971+ ;line
972+ =x1 "0.5"
973+ =y1 "-0.5"
974+ =x2 "181.5"
975+ =y2 "-0.5"
976+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
977+ =vector-effect "non-scaling-stroke"
978+ :: =stroke bg
979+ :: =stroke-linecap "square"
980+ =fill "none";
981+ ;line
982+ =x1 "128"
983+ =y1 "32.0072"
984+ =x2 "32.7071"
985+ =y2 "127.3"
986+ =vector-effect "non-scaling-stroke"
987+ :: =stroke bg
988+ :: =stroke-linecap "square"
989+ =fill "none";
990+ ;line
991+ =x1 "128"
992+ =y1 "64.0072"
993+ =x2 "64.7071"
994+ =y2 "127.3"
995+ =vector-effect "non-scaling-stroke"
996+ :: =stroke bg
997+ :: =stroke-linecap "square"
998+ =fill "none";
999+ ;line
1000+ =x1 "128"
1001+ =y1 "96.0072"
1002+ =x2 "96.7071"
1003+ =y2 "127.3"
1004+ =vector-effect "non-scaling-stroke"
1005+ :: =stroke bg
1006+ :: =stroke-linecap "square"
1007+ =fill "none";
1008+ ==
1009+::
1010+ :- 'dan'
1011+ |= [fg=tape bg=tape]
1012+ :~ ;path
1013+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1014+ :: =fill fg
1015+ =vector-effect "non-scaling-stroke";
1016+ :: =stroke bg
1017+ :: =stroke-width "0.5"
1018+ ;line
1019+ =x1 "64"
1020+ =y1 "2.18557e-08"
1021+ =x2 "64"
1022+ =y2 "128"
1023+ =vector-effect "non-scaling-stroke"
1024+ :: =stroke bg
1025+ =fill "none";
1026+ ;line
1027+ =x1 "96"
1028+ =y1 "2.18557e-08"
1029+ =x2 "96"
1030+ =y2 "128"
1031+ =vector-effect "non-scaling-stroke"
1032+ :: =stroke bg
1033+ =fill "none";
1034+ ;circle
1035+ =cx "64"
1036+ =cy "64"
1037+ =r "16"
1038+ =vector-effect "non-scaling-stroke"
1039+ :: =stroke bg
1040+ =fill "none";
1041+ ==
1042+::
1043+ :- 'dap'
1044+ |= [fg=tape bg=tape]
1045+ :~ ;path
1046+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
1047+ :: =fill fg
1048+ =vector-effect "non-scaling-stroke";
1049+ :: =stroke bg
1050+ :: =stroke-width "0.5"
1051+ ;line
1052+ =x1 "80.0035"
1053+ =y1 "79.9964"
1054+ =x2 "112.004"
1055+ =y2 "111.996"
1056+ =vector-effect "non-scaling-stroke"
1057+ :: =stroke bg
1058+ =fill "none";
1059+ ;circle
1060+ =cx "64"
1061+ =cy "64"
1062+ =r "11.5"
1063+ :: =fill fg
1064+ =vector-effect "non-scaling-stroke"
1065+ =stroke fg;
1066+ ;circle
1067+ =cx "64"
1068+ =cy "64"
1069+ =r "9"
1070+ =fill bg
1071+ =vector-effect "non-scaling-stroke";
1072+ :: =stroke bg
1073+ :: =stroke-width "2"
1074+ ==
1075+::
1076+ :- 'dar'
1077+ |= [fg=tape bg=tape]
1078+ :~ ;circle
1079+ =cx "64"
1080+ =cy "64"
1081+ =r "64"
1082+ :: =fill fg
1083+ =vector-effect "non-scaling-stroke";
1084+ :: =stroke bg
1085+ :: =stroke-width "0.5"
1086+ ;circle
1087+ =cx "32"
1088+ =cy "96"
1089+ =r "11.5"
1090+ :: =fill fg
1091+ =vector-effect "non-scaling-stroke"
1092+ =stroke fg;
1093+ ;circle
1094+ =cx "32"
1095+ =cy "96"
1096+ =r "9"
1097+ =fill bg
1098+ =vector-effect "non-scaling-stroke";
1099+ :: =stroke bg
1100+ :: =stroke-width "2"
1101+ ;path
1102+ =d "M86.6274 86.6274C99.1242 74.1307 99.1242 53.8694 86.6274 41.3726C74.1306 28.8758 53.8694 28.8758 41.3726 41.3726"
1103+ =vector-effect "non-scaling-stroke"
1104+ :: =stroke bg
1105+ =fill "none";
1106+ ;path
1107+ =d "M75.3137 75.3137C81.5621 69.0653 81.5621 58.9347 75.3137 52.6863C69.0653 46.4379 58.9347 46.4379 52.6863 52.6863"
1108+ =vector-effect "non-scaling-stroke"
1109+ :: =stroke bg
1110+ =fill "none";
1111+ ;path
1112+ =d "M97.9411 97.9411C116.686 79.1959 116.686 48.804 97.9411 30.0589C79.196 11.3137 48.804 11.3137 30.0589 30.0589"
1113+ =vector-effect "non-scaling-stroke"
1114+ :: =stroke bg
1115+ =fill "none";
1116+ ;path
1117+ =d "M-0.00292969 0L127.997 128"
1118+ =vector-effect "non-scaling-stroke"
1119+ :: =stroke bg
1120+ :: =stroke-linecap "square"
1121+ =fill "none";
1122+ ==
1123+::
1124+ :- 'das'
1125+ |= [fg=tape bg=tape]
1126+ :~ ;rect
1127+ =width "128"
1128+ =height "128"
1129+ :: =fill fg
1130+ =vector-effect "non-scaling-stroke";
1131+ :: =stroke bg
1132+ :: =stroke-width "0.5"
1133+ ;line
1134+ =x1 "64"
1135+ =y1 "2.18557e-08"
1136+ =x2 "64"
1137+ =y2 "128"
1138+ =vector-effect "non-scaling-stroke"
1139+ :: =stroke bg
1140+ =fill "none";
1141+ ;path
1142+ =fill-rule "evenodd"
1143+ =clip-rule "evenodd"
1144+ =stroke "none"
1145+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
1146+ =fill bg;
1147+ ==
1148+::
1149+ :- 'dat'
1150+ |= [fg=tape bg=tape]
1151+ :~ ;path
1152+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
1153+ :: =fill fg
1154+ =vector-effect "non-scaling-stroke";
1155+ :: =stroke bg
1156+ :: =stroke-width "0.5"
1157+ ;path
1158+ =d "M128 128C92.6538 128 64 99.3462 64 64C64 28.6538 92.6538 -1.54503e-06 128 0"
1159+ =vector-effect "non-scaling-stroke"
1160+ :: =stroke bg
1161+ =fill "none";
1162+ ==
1163+::
1164+ :- 'dav'
1165+ |= [fg=tape bg=tape]
1166+ :~ ;path
1167+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1168+ :: =fill fg
1169+ =vector-effect "non-scaling-stroke";
1170+ :: =stroke bg
1171+ :: =stroke-width "0.5"
1172+ ;path
1173+ =d "M128 64L0 64"
1174+ =vector-effect "non-scaling-stroke"
1175+ :: =stroke bg
1176+ =fill "none";
1177+ ;path
1178+ =d "M96 64C96 46.3269 81.6731 32 64 32"
1179+ =vector-effect "non-scaling-stroke"
1180+ :: =stroke bg
1181+ =fill "none";
1182+ ;circle
1183+ =cx "96"
1184+ =cy "64"
1185+ =r "11.5"
1186+ :: =fill fg
1187+ =vector-effect "non-scaling-stroke"
1188+ =stroke fg;
1189+ ;circle
1190+ =cx "96"
1191+ =cy "64"
1192+ =r "9"
1193+ =fill bg
1194+ =vector-effect "non-scaling-stroke";
1195+ :: =stroke bg
1196+ :: =stroke-width "2"
1197+ ==
1198+::
1199+ :- 'deb'
1200+ |= [fg=tape bg=tape]
1201+ :~ ;rect
1202+ =width "128"
1203+ =height "128"
1204+ :: =fill fg
1205+ =vector-effect "non-scaling-stroke";
1206+ :: =stroke bg
1207+ :: =stroke-width "0.5"
1208+ ;path
1209+ =d "M64 -6.35781e-07C64 35.3462 35.3462 64 0 64"
1210+ =vector-effect "non-scaling-stroke"
1211+ :: =stroke bg
1212+ =fill "none";
1213+ ==
1214+::
1215+ :- 'dec'
1216+ |= [fg=tape bg=tape]
1217+ :~ ;path
1218+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
1219+ :: =fill fg
1220+ =vector-effect "non-scaling-stroke";
1221+ :: =stroke bg
1222+ :: =stroke-width "0.5"
1223+ ;circle
1224+ =cx "64"
1225+ =cy "64"
1226+ =r "11.5"
1227+ :: =fill fg
1228+ =vector-effect "non-scaling-stroke"
1229+ =stroke fg;
1230+ ;circle
1231+ =cx "64"
1232+ =cy "64"
1233+ =r "9"
1234+ =fill bg
1235+ =vector-effect "non-scaling-stroke";
1236+ :: =stroke bg
1237+ :: =stroke-width "2"
1238+ ;circle
1239+ =cx "112"
1240+ =cy "16"
1241+ =r "11.5"
1242+ =fill bg
1243+ =vector-effect "non-scaling-stroke";
1244+ :: =stroke bg
1245+ ;circle
1246+ =cx "112"
1247+ =cy "16"
1248+ =r "9"
1249+ :: =fill fg
1250+ =vector-effect "non-scaling-stroke"
1251+ =stroke fg;
1252+ :: =stroke-width "2"
1253+ ==
1254+::
1255+ :- 'def'
1256+ |= [fg=tape bg=tape]
1257+ :~ ;path
1258+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
1259+ :: =fill fg
1260+ =vector-effect "non-scaling-stroke";
1261+ :: =stroke bg
1262+ :: =stroke-width "0.5"
1263+ ;path
1264+ =d "M0 128L128 0"
1265+ =vector-effect "non-scaling-stroke"
1266+ :: =stroke bg
1267+ :: =stroke-linecap "square"
1268+ =fill "none";
1269+ ;path
1270+ =d "M0 94L94 0"
1271+ =vector-effect "non-scaling-stroke"
1272+ :: =stroke bg
1273+ :: =stroke-linecap "square"
1274+ =fill "none";
1275+ ;path
1276+ =d "M0 64L64 0"
1277+ =vector-effect "non-scaling-stroke"
1278+ :: =stroke bg
1279+ :: =stroke-linecap "square"
1280+ =fill "none";
1281+ ;path
1282+ =d "M0 32L32 0"
1283+ =vector-effect "non-scaling-stroke"
1284+ :: =stroke bg
1285+ :: =stroke-linecap "square"
1286+ =fill "none";
1287+ ;circle
1288+ =cx "16"
1289+ =cy "112"
1290+ =r "11.5"
1291+ =fill bg
1292+ =vector-effect "non-scaling-stroke";
1293+ :: =stroke bg
1294+ ;circle
1295+ =cx "16"
1296+ =cy "112"
1297+ =r "9"
1298+ :: =fill fg
1299+ =vector-effect "non-scaling-stroke"
1300+ =stroke fg;
1301+ :: =stroke-width "2"
1302+ ==
1303+::
1304+ :- 'deg'
1305+ |= [fg=tape bg=tape]
1306+ :~ ;rect
1307+ =width "128"
1308+ =height "128"
1309+ :: =fill fg
1310+ =vector-effect "non-scaling-stroke";
1311+ :: =stroke bg
1312+ :: =stroke-width "0.5"
1313+ ;path
1314+ =d "M64 128C64 92.6538 35.3462 64 0 64"
1315+ =vector-effect "non-scaling-stroke"
1316+ :: =stroke bg
1317+ =fill "none";
1318+ ==
1319+::
1320+ :- 'del'
1321+ |= [fg=tape bg=tape]
1322+ :~ ;path
1323+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
1324+ :: =fill fg
1325+ =vector-effect "non-scaling-stroke";
1326+ :: =stroke bg
1327+ :: =stroke-width "0.5"
1328+ ;circle
1329+ =cx "32"
1330+ =cy "96"
1331+ =r "11.5"
1332+ :: =fill fg
1333+ =vector-effect "non-scaling-stroke"
1334+ =stroke fg;
1335+ ;circle
1336+ =cx "32"
1337+ =cy "96"
1338+ =r "9"
1339+ =fill bg
1340+ =vector-effect "non-scaling-stroke";
1341+ :: =stroke bg
1342+ :: =stroke-width "2"
1343+ ==
1344+::
1345+ :- 'dem'
1346+ |= [fg=tape bg=tape]
1347+ :~ ;circle
1348+ =cx "64"
1349+ =cy "64"
1350+ =r "64"
1351+ :: =fill fg
1352+ =vector-effect "non-scaling-stroke";
1353+ :: =stroke bg
1354+ :: =stroke-width "0.5"
1355+ ;path
1356+ =d "M-0.00292969 0L127.997 128"
1357+ =vector-effect "non-scaling-stroke"
1358+ :: =stroke bg
1359+ :: =stroke-linecap "square"
1360+ =fill "none";
1361+ ;path
1362+ =d "M64 -6.35781e-07C64 35.3462 35.3462 64 0 64"
1363+ =vector-effect "non-scaling-stroke"
1364+ :: =stroke bg
1365+ =fill "none";
1366+ ;circle
1367+ =cx "32"
1368+ =cy "32"
1369+ =r "11.5"
1370+ :: =fill fg
1371+ =vector-effect "non-scaling-stroke"
1372+ =stroke fg;
1373+ ;circle
1374+ =cx "32"
1375+ =cy "32"
1376+ =r "9"
1377+ =fill bg
1378+ =vector-effect "non-scaling-stroke";
1379+ :: =stroke bg
1380+ :: =stroke-width "2"
1381+ ==
1382+::
1383+ :- 'den'
1384+ |= [fg=tape bg=tape]
1385+ :~ ;rect
1386+ =width "128"
1387+ =height "128"
1388+ :: =fill fg
1389+ =vector-effect "non-scaling-stroke";
1390+ :: =stroke bg
1391+ :: =stroke-width "0.5"
1392+ ;path
1393+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
1394+ =vector-effect "non-scaling-stroke"
1395+ :: =stroke bg
1396+ =fill "none";
1397+ ;path
1398+ =d "M-0.00280762 0L127.997 128"
1399+ =vector-effect "non-scaling-stroke"
1400+ :: =stroke bg
1401+ :: =stroke-linecap "square"
1402+ =fill "none";
1403+ ==
1404+::
1405+ :- 'dep'
1406+ |= [fg=tape bg=tape]
1407+ :~ ;path
1408+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
1409+ :: =fill fg
1410+ =vector-effect "non-scaling-stroke";
1411+ :: =stroke bg
1412+ :: =stroke-width "0.5"
1413+ ;path
1414+ =d "M32 128C32 101.492 42.7436 77.4939 60.1138 60.1216"
1415+ =vector-effect "non-scaling-stroke"
1416+ :: =stroke bg
1417+ =fill "none";
1418+ ;path
1419+ =d "M64 128C64 110.328 71.1626 94.3287 82.7432 82.7471"
1420+ =vector-effect "non-scaling-stroke"
1421+ :: =stroke bg
1422+ =fill "none";
1423+ ;path
1424+ =d "M95.6284 128C95.6284 119.164 99.2097 111.164 105 105.374"
1425+ =vector-effect "non-scaling-stroke"
1426+ :: =stroke bg
1427+ =fill "none";
1428+ ==
1429+::
1430+ :- 'der'
1431+ |= [fg=tape bg=tape]
1432+ :~ ;path
1433+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
1434+ :: =fill fg
1435+ =vector-effect "non-scaling-stroke";
1436+ :: =stroke bg
1437+ :: =stroke-width "0.5"
1438+ ;path
1439+ =d "M96 128L96 0"
1440+ =vector-effect "non-scaling-stroke"
1441+ :: =stroke bg
1442+ =fill "none";
1443+ ==
1444+::
1445+ :- 'des'
1446+ |= [fg=tape bg=tape]
1447+ :~ ;path
1448+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
1449+ :: =fill fg
1450+ =vector-effect "non-scaling-stroke";
1451+ :: =stroke bg
1452+ :: =stroke-width "0.5"
1453+ ;path
1454+ =d "M96 0L96 128"
1455+ =vector-effect "non-scaling-stroke"
1456+ :: =stroke bg
1457+ =fill "none";
1458+ ==
1459+::
1460+ :- 'det'
1461+ |= [fg=tape bg=tape]
1462+ :~ ;circle
1463+ =cx "64"
1464+ =cy "64"
1465+ =r "64"
1466+ :: =fill fg
1467+ =vector-effect "non-scaling-stroke";
1468+ :: =stroke bg
1469+ :: =stroke-width "0.5"
1470+ ;line
1471+ =x1 "15.9964"
1472+ =y1 "111.996"
1473+ =x2 "47.9964"
1474+ =y2 "79.9964"
1475+ =vector-effect "non-scaling-stroke"
1476+ :: =stroke bg
1477+ =fill "none";
1478+ ==
1479+::
1480+ :- 'dev'
1481+ |= [fg=tape bg=tape]
1482+ :~ ;path
1483+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
1484+ :: =fill fg
1485+ =vector-effect "non-scaling-stroke";
1486+ :: =stroke bg
1487+ :: =stroke-width "0.5"
1488+ ;line
1489+ =x1 "96.5"
1490+ =y1 "3.07317e-08"
1491+ =x2 "96.5"
1492+ =y2 "128"
1493+ =vector-effect "non-scaling-stroke"
1494+ :: =stroke bg
1495+ =fill "none";
1496+ ;line
1497+ =x1 "32.5"
1498+ =y1 "3.07317e-08"
1499+ =x2 "32.5"
1500+ =y2 "128"
1501+ =vector-effect "non-scaling-stroke"
1502+ :: =stroke bg
1503+ =fill "none";
1504+ ;circle
1505+ =cx "64"
1506+ =cy "64"
1507+ =r "11.5"
1508+ :: =fill fg
1509+ =vector-effect "non-scaling-stroke"
1510+ =stroke fg;
1511+ ;circle
1512+ =cx "64"
1513+ =cy "64"
1514+ =r "9"
1515+ =fill bg
1516+ =vector-effect "non-scaling-stroke";
1517+ :: =stroke bg
1518+ :: =stroke-width "2"
1519+ ==
1520+::
1521+ :- 'dex'
1522+ |= [fg=tape bg=tape]
1523+ :~ ;path
1524+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
1525+ :: =fill fg
1526+ =vector-effect "non-scaling-stroke";
1527+ :: =stroke bg
1528+ :: =stroke-width "0.5"
1529+ ;line
1530+ =x1 "64"
1531+ =y1 "2.18557e-08"
1532+ =x2 "64"
1533+ =y2 "128"
1534+ =vector-effect "non-scaling-stroke"
1535+ :: =stroke bg
1536+ =fill "none";
1537+ ;path
1538+ =fill-rule "evenodd"
1539+ =clip-rule "evenodd"
1540+ =stroke "none"
1541+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
1542+ =fill bg;
1543+ ==
1544+::
1545+ :- 'dib'
1546+ |= [fg=tape bg=tape]
1547+ :~ ;circle
1548+ =cx "64"
1549+ =cy "64"
1550+ =r "64"
1551+ :: =fill fg
1552+ =vector-effect "non-scaling-stroke";
1553+ :: =stroke bg
1554+ :: =stroke-width "0.5"
1555+ ;line
1556+ =x1 "8.74228e-08"
1557+ =y1 "64"
1558+ =x2 "128"
1559+ =y2 "64"
1560+ =vector-effect "non-scaling-stroke"
1561+ :: =stroke bg
1562+ =fill "none";
1563+ ;line
1564+ =x1 "5.25874e-08"
1565+ =y1 "32"
1566+ =x2 "128"
1567+ =y2 "32"
1568+ =vector-effect "non-scaling-stroke"
1569+ :: =stroke bg
1570+ =fill "none";
1571+ ;circle
1572+ =cx "64"
1573+ =cy "32"
1574+ =r "11.5"
1575+ :: =fill fg
1576+ =vector-effect "non-scaling-stroke"
1577+ =stroke fg;
1578+ ;circle
1579+ =cx "64"
1580+ =cy "32"
1581+ =r "9"
1582+ =fill bg
1583+ =vector-effect "non-scaling-stroke";
1584+ :: =stroke bg
1585+ :: =stroke-width "2"
1586+ ==
1587+::
1588+ :- 'dif'
1589+ |= [fg=tape bg=tape]
1590+ :~ ;path
1591+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
1592+ :: =fill fg
1593+ =vector-effect "non-scaling-stroke";
1594+ :: =stroke bg
1595+ :: =stroke-width "0.5"
1596+ ;path
1597+ =d "M60.1244 67.3837C41.5063 48.7657 32.1342 24.4031 32.0079 0.00145601M82.7518 44.7563C70.3822 32.3867 64.1344 16.2134 64.0086 0.00145196M105.379 22.1289C99.258 16.0077 96.1351 8.02351 96.0105 0.00145196"
1598+ =vector-effect "non-scaling-stroke"
1599+ :: =stroke bg
1600+ =fill "none";
1601+ ;line
1602+ =x1 "0.5"
1603+ =y1 "-0.5"
1604+ =x2 "181.5"
1605+ =y2 "-0.5"
1606+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
1607+ =vector-effect "non-scaling-stroke"
1608+ :: =stroke bg
1609+ :: =stroke-linecap "square"
1610+ =fill "none";
1611+ ;circle
1612+ =cx "16"
1613+ =cy "16"
1614+ =r "11.5"
1615+ :: =fill fg
1616+ =vector-effect "non-scaling-stroke"
1617+ =stroke fg;
1618+ ;circle
1619+ =cx "16"
1620+ =cy "16"
1621+ =r "9"
1622+ =fill bg
1623+ =vector-effect "non-scaling-stroke";
1624+ :: =stroke bg
1625+ :: =stroke-width "2"
1626+ ;circle
1627+ =cx "16"
1628+ =cy "112"
1629+ =r "11.5"
1630+ =fill bg
1631+ =vector-effect "non-scaling-stroke";
1632+ :: =stroke bg
1633+ ;circle
1634+ =cx "16"
1635+ =cy "112"
1636+ =r "9"
1637+ :: =fill fg
1638+ =vector-effect "non-scaling-stroke"
1639+ =stroke fg;
1640+ :: =stroke-width "2"
1641+ ==
1642+::
1643+ :- 'dig'
1644+ |= [fg=tape bg=tape]
1645+ :~ ;path
1646+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1647+ :: =fill fg
1648+ =vector-effect "non-scaling-stroke";
1649+ :: =stroke bg
1650+ :: =stroke-width "0.5"
1651+ ;line
1652+ =x1 "64.5"
1653+ =y1 "-0.5"
1654+ =x2 "64.5"
1655+ =y2 "127.5"
1656+ =vector-effect "non-scaling-stroke"
1657+ :: =stroke bg
1658+ =fill "none";
1659+ ;line
1660+ =x1 "16.0035"
1661+ =y1 "15.9965"
1662+ =x2 "48.0035"
1663+ =y2 "47.9965"
1664+ =vector-effect "non-scaling-stroke"
1665+ :: =stroke bg
1666+ =fill "none";
1667+ ;circle
1668+ =cx "64"
1669+ =cy "64"
1670+ =r "16"
1671+ =vector-effect "non-scaling-stroke"
1672+ :: =stroke bg
1673+ =fill "none";
1674+ ==
1675+::
1676+ :- 'dil'
1677+ |= [fg=tape bg=tape]
1678+ :~ ;path
1679+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1680+ :: =fill fg
1681+ =vector-effect "non-scaling-stroke";
1682+ :: =stroke bg
1683+ :: =stroke-width "0.5"
1684+ ;line
1685+ =x1 "80.0036"
1686+ =y1 "79.9964"
1687+ =x2 "112.004"
1688+ =y2 "111.996"
1689+ =vector-effect "non-scaling-stroke"
1690+ :: =stroke bg
1691+ =fill "none";
1692+ ;line
1693+ =x1 "0.5"
1694+ =y1 "-0.5"
1695+ =x2 "181.5"
1696+ =y2 "-0.5"
1697+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
1698+ =vector-effect "non-scaling-stroke"
1699+ :: =stroke bg
1700+ :: =stroke-linecap "square"
1701+ =fill "none";
1702+ ==
1703+::
1704+ :- 'din'
1705+ |= [fg=tape bg=tape]
1706+ :~ ;rect
1707+ =width "128"
1708+ =height "128"
1709+ :: =fill fg
1710+ =vector-effect "non-scaling-stroke";
1711+ :: =stroke bg
1712+ :: =stroke-width "0.5"
1713+ ;line
1714+ =x1 "96"
1715+ =y1 "2.18557e-08"
1716+ =x2 "96"
1717+ =y2 "128"
1718+ =vector-effect "non-scaling-stroke"
1719+ :: =stroke bg
1720+ =fill "none";
1721+ ==
1722+::
1723+ :- 'dir'
1724+ |= [fg=tape bg=tape]
1725+ :~ ;path
1726+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
1727+ :: =fill fg
1728+ =vector-effect "non-scaling-stroke";
1729+ :: =stroke bg
1730+ :: =stroke-width "0.5"
1731+ ;path
1732+ =d "M96 64C96 81.6731 81.6731 96 64 96"
1733+ =vector-effect "non-scaling-stroke"
1734+ :: =stroke bg
1735+ =fill "none";
1736+ ;line
1737+ =x1 "16.0035"
1738+ =y1 "15.9965"
1739+ =x2 "48.0035"
1740+ =y2 "47.9965"
1741+ =vector-effect "non-scaling-stroke"
1742+ :: =stroke bg
1743+ =fill "none";
1744+ ;circle
1745+ =cx "64"
1746+ =cy "64"
1747+ =r "16"
1748+ =vector-effect "non-scaling-stroke"
1749+ :: =stroke bg
1750+ =fill "none";
1751+ ==
1752+::
1753+ :- 'dis'
1754+ |= [fg=tape bg=tape]
1755+ :~ ;path
1756+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
1757+ :: =fill fg
1758+ =vector-effect "non-scaling-stroke";
1759+ :: =stroke bg
1760+ :: =stroke-width "0.5"
1761+ ;path
1762+ =d "M-0.0029152 0L127.997 128"
1763+ =vector-effect "non-scaling-stroke"
1764+ :: =stroke bg
1765+ :: =stroke-linecap "square"
1766+ =fill "none";
1767+ ;circle
1768+ =cx "96"
1769+ =cy "32"
1770+ =r "11.5"
1771+ :: =fill fg
1772+ =vector-effect "non-scaling-stroke"
1773+ =stroke fg;
1774+ ;circle
1775+ =cx "96"
1776+ =cy "32"
1777+ =r "9"
1778+ =fill bg
1779+ =vector-effect "non-scaling-stroke";
1780+ :: =stroke bg
1781+ :: =stroke-width "2"
1782+ ;circle
1783+ =cx "32"
1784+ =cy "96"
1785+ =r "11.5"
1786+ :: =fill fg
1787+ =vector-effect "non-scaling-stroke"
1788+ =stroke fg;
1789+ ;circle
1790+ =cx "32"
1791+ =cy "96"
1792+ =r "9"
1793+ =fill bg
1794+ =vector-effect "non-scaling-stroke";
1795+ :: =stroke bg
1796+ :: =stroke-width "2"
1797+ ==
1798+::
1799+ :- 'div'
1800+ |= [fg=tape bg=tape]
1801+ :~ ;rect
1802+ =width "128"
1803+ =height "128"
1804+ :: =fill fg
1805+ =vector-effect "non-scaling-stroke";
1806+ :: =stroke bg
1807+ :: =stroke-width "0.5"
1808+ ;path
1809+ =d "M64 0L64 128"
1810+ =vector-effect "non-scaling-stroke"
1811+ :: =stroke bg
1812+ =fill "none";
1813+ ;path
1814+ =d "M-4.19629e-06 96C70.6924 96 128 53.0193 128 5.59506e-06"
1815+ =vector-effect "non-scaling-stroke"
1816+ :: =stroke bg
1817+ =fill "none";
1818+ ;path
1819+ =d "M-2.79753e-06 64C70.6924 64 128 35.3462 128 5.59506e-06"
1820+ =vector-effect "non-scaling-stroke"
1821+ :: =stroke bg
1822+ =fill "none";
1823+ ==
1824+::
1825+ :- 'doc'
1826+ |= [fg=tape bg=tape]
1827+ :~ ;path
1828+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
1829+ :: =fill fg
1830+ =vector-effect "non-scaling-stroke";
1831+ :: =stroke bg
1832+ :: =stroke-width "0.5"
1833+ ;path
1834+ =d "M127.997 0L-0.00291443 128"
1835+ =vector-effect "non-scaling-stroke"
1836+ :: =stroke bg
1837+ :: =stroke-linecap "square"
1838+ =fill "none";
1839+ ;circle
1840+ =cx "64"
1841+ =cy "64"
1842+ =r "16"
1843+ =vector-effect "non-scaling-stroke"
1844+ :: =stroke bg
1845+ =fill "none";
1846+ ;path
1847+ =d "M86.6274 41.3726C74.1306 28.8758 53.8694 28.8758 41.3726 41.3726C28.8758 53.8694 28.8758 74.1306 41.3726 86.6274"
1848+ =vector-effect "non-scaling-stroke"
1849+ :: =stroke bg
1850+ =fill "none";
1851+ ==
1852+::
1853+ :- 'dol'
1854+ |= [fg=tape bg=tape]
1855+ :~ ;circle
1856+ =cx "64"
1857+ =cy "64"
1858+ =r "64"
1859+ :: =fill fg
1860+ =vector-effect "non-scaling-stroke";
1861+ :: =stroke bg
1862+ :: =stroke-width "0.5"
1863+ ;path
1864+ =d "M128 64L0 64"
1865+ =vector-effect "non-scaling-stroke"
1866+ :: =stroke bg
1867+ =fill "none";
1868+ ;path
1869+ =d "M-4.19629e-06 16C26.5097 16 48 37.4903 48 64C48 90.5097 26.5097 112 0 112"
1870+ =vector-effect "non-scaling-stroke"
1871+ :: =stroke bg
1872+ =fill "none";
1873+ ==
1874+::
1875+ :- 'don'
1876+ |= [fg=tape bg=tape]
1877+ :~ ;path
1878+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
1879+ :: =fill fg
1880+ =vector-effect "non-scaling-stroke";
1881+ :: =stroke bg
1882+ :: =stroke-width "0.5"
1883+ ;path
1884+ =d "M-3.8147e-06 128C-7.24632e-07 92.6538 28.6538 64 64 64C99.3462 64 128 92.6538 128 128"
1885+ =vector-effect "non-scaling-stroke"
1886+ :: =stroke bg
1887+ =fill "none";
1888+ ==
1889+::
1890+ :- 'dop'
1891+ |= [fg=tape bg=tape]
1892+ :~ ;circle
1893+ =cx "64"
1894+ =cy "64"
1895+ =r "64"
1896+ :: =fill fg
1897+ =vector-effect "non-scaling-stroke";
1898+ :: =stroke bg
1899+ :: =stroke-width "0.5"
1900+ ;path
1901+ =d "M64 112C90.5097 112 112 90.5097 112 64C112 37.4903 90.5097 16 64 16"
1902+ =vector-effect "non-scaling-stroke"
1903+ :: =stroke bg
1904+ =fill "none";
1905+ ;path
1906+ =d "M128 64L0 64"
1907+ =vector-effect "non-scaling-stroke"
1908+ :: =stroke bg
1909+ =fill "none";
1910+ ;circle
1911+ =cx "64"
1912+ =cy "64"
1913+ =r "11.5"
1914+ :: =fill fg
1915+ =vector-effect "non-scaling-stroke"
1916+ =stroke fg;
1917+ ;circle
1918+ =cx "64"
1919+ =cy "64"
1920+ =r "9"
1921+ =fill bg
1922+ =vector-effect "non-scaling-stroke";
1923+ :: =stroke bg
1924+ :: =stroke-width "2"
1925+ ==
1926+::
1927+ :- 'dor'
1928+ |= [fg=tape bg=tape]
1929+ :~ ;path
1930+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1931+ :: =fill fg
1932+ =vector-effect "non-scaling-stroke";
1933+ :: =stroke bg
1934+ :: =stroke-width "0.5"
1935+ ;line
1936+ =y1 "63.5"
1937+ =x2 "128"
1938+ =y2 "63.5"
1939+ =vector-effect "non-scaling-stroke"
1940+ :: =stroke bg
1941+ =fill "none";
1942+ ==
1943+::
1944+ :- 'dos'
1945+ |= [fg=tape bg=tape]
1946+ :~ ;path
1947+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
1948+ :: =fill fg
1949+ =vector-effect "non-scaling-stroke";
1950+ :: =stroke bg
1951+ :: =stroke-width "0.5"
1952+ ;line
1953+ =x1 "-0.0029152"
1954+ =x2 "127.983"
1955+ =y2 "127.986"
1956+ =vector-effect "non-scaling-stroke"
1957+ :: =stroke bg
1958+ :: =stroke-linecap "square"
1959+ =fill "none";
1960+ ;path
1961+ =d "M86.6274 86.6274C99.1242 74.1306 99.1242 53.8693 86.6274 41.3725C74.1306 28.8758 53.8694 28.8758 41.3726 41.3725"
1962+ =vector-effect "non-scaling-stroke"
1963+ :: =stroke bg
1964+ =fill "none";
1965+ ==
1966+::
1967+ :- 'dot'
1968+ |= [fg=tape bg=tape]
1969+ :~ ;path
1970+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
1971+ :: =fill fg
1972+ =vector-effect "non-scaling-stroke";
1973+ :: =stroke bg
1974+ :: =stroke-width "0.5"
1975+ ;circle
1976+ =cx "64"
1977+ =cy "64"
1978+ =r "11.5"
1979+ :: =fill fg
1980+ =vector-effect "non-scaling-stroke"
1981+ =stroke fg;
1982+ ;circle
1983+ =cx "64"
1984+ =cy "64"
1985+ =r "9"
1986+ =fill bg
1987+ =vector-effect "non-scaling-stroke";
1988+ :: =stroke bg
1989+ :: =stroke-width "2"
1990+ ==
1991+::
1992+ :- 'dov'
1993+ |= [fg=tape bg=tape]
1994+ :~ ;rect
1995+ =width "128"
1996+ =height "128"
1997+ :: =fill fg
1998+ =vector-effect "non-scaling-stroke";
1999+ :: =stroke bg
2000+ :: =stroke-width "0.5"
2001+ ;path
2002+ =d "M128 0L0 128"
2003+ =vector-effect "non-scaling-stroke"
2004+ :: =stroke bg
2005+ :: =stroke-linecap "square"
2006+ =fill "none";
2007+ ;path
2008+ =d "M-0.701724 31.9914C25.6281 31.9914 49.4822 42.5913 66.8261 59.7565M-0.701723 63.9914C16.7916 63.9914 32.6456 71.0098 44.1982 82.3844M-0.701722 95.9914C7.955 95.9914 15.8089 99.4288 21.5694 105.013"
2009+ =vector-effect "non-scaling-stroke"
2010+ :: =stroke bg
2011+ =fill "none";
2012+ ;path
2013+ =d "M0 0C35.3511 0 67.3551 14.3309 90.5193 37.5"
2014+ =vector-effect "non-scaling-stroke"
2015+ :: =stroke bg
2016+ =fill "none";
2017+ ==
2018+::
2019+ :- 'doz'
2020+ |= [fg=tape bg=tape]
2021+ :~ ;circle
2022+ =cx "64"
2023+ =cy "64"
2024+ =r "64"
2025+ :: =fill fg
2026+ =vector-effect "non-scaling-stroke";
2027+ :: =stroke bg
2028+ :: =stroke-width "0.5"
2029+ ;path
2030+ =d "M128 128L0 0"
2031+ =vector-effect "non-scaling-stroke"
2032+ :: =stroke bg
2033+ :: =stroke-linecap "square"
2034+ =fill "none";
2035+ ;path
2036+ =d "M30.0589 30.0589C48.804 11.3137 79.196 11.3137 97.9411 30.0589C116.686 48.804 116.686 79.196 97.9411 97.9411"
2037+ =vector-effect "non-scaling-stroke"
2038+ :: =stroke bg
2039+ =fill "none";
2040+ ;path
2041+ =d "M52.6863 52.6863C58.9347 46.4379 69.0653 46.4379 75.3137 52.6863C81.5621 58.9347 81.5621 69.0653 75.3137 75.3137"
2042+ =vector-effect "non-scaling-stroke"
2043+ :: =stroke bg
2044+ =fill "none";
2045+ ;path
2046+ =d "M41.3726 41.3726C53.8694 28.8758 74.1306 28.8758 86.6274 41.3726C99.1242 53.8694 99.1242 74.1306 86.6274 86.6274"
2047+ =vector-effect "non-scaling-stroke"
2048+ :: =stroke bg
2049+ =fill "none";
2050+ ==
2051+::
2052+ :- 'duc'
2053+ |= [fg=tape bg=tape]
2054+ :~ ;path
2055+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
2056+ :: =fill fg
2057+ =vector-effect "non-scaling-stroke";
2058+ :: =stroke bg
2059+ :: =stroke-width "0.5"
2060+ ;path
2061+ =d "M128 64L0 64"
2062+ =vector-effect "non-scaling-stroke"
2063+ :: =stroke bg
2064+ =fill "none";
2065+ ;path
2066+ =d "M128 32L0 32"
2067+ =vector-effect "non-scaling-stroke"
2068+ :: =stroke bg
2069+ =fill "none";
2070+ ;circle
2071+ =cx "32"
2072+ =cy "32"
2073+ =r "11.5"
2074+ :: =fill fg
2075+ =vector-effect "non-scaling-stroke"
2076+ =stroke fg;
2077+ ;circle
2078+ =cx "32"
2079+ =cy "32"
2080+ =r "9"
2081+ =fill bg
2082+ =vector-effect "non-scaling-stroke";
2083+ :: =stroke bg
2084+ :: =stroke-width "2"
2085+ ==
2086+::
2087+ :- 'dul'
2088+ |= [fg=tape bg=tape]
2089+ :~ ;circle
2090+ =cx "64"
2091+ =cy "64"
2092+ =r "64"
2093+ :: =fill fg
2094+ =vector-effect "non-scaling-stroke";
2095+ :: =stroke bg
2096+ :: =stroke-width "0.5"
2097+ ;path
2098+ =d "M64 16C90.5097 16 112 37.4903 112 64"
2099+ =vector-effect "non-scaling-stroke"
2100+ :: =stroke bg
2101+ =fill "none";
2102+ ;path
2103+ =d "M64 64L64 128"
2104+ =vector-effect "non-scaling-stroke"
2105+ :: =stroke bg
2106+ =fill "none";
2107+ ;circle
2108+ =cx "64"
2109+ =cy "64"
2110+ =r "11.5"
2111+ :: =fill fg
2112+ =vector-effect "non-scaling-stroke"
2113+ =stroke fg;
2114+ ;circle
2115+ =cx "64"
2116+ =cy "64"
2117+ =r "9"
2118+ =fill bg
2119+ =vector-effect "non-scaling-stroke";
2120+ :: =stroke bg
2121+ :: =stroke-width "2"
2122+ ==
2123+::
2124+ :- 'dun'
2125+ |= [fg=tape bg=tape]
2126+ :~ ;path
2127+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
2128+ :: =fill fg
2129+ =vector-effect "non-scaling-stroke";
2130+ :: =stroke bg
2131+ :: =stroke-width "0.5"
2132+ ;path
2133+ =d "M112 64C112 37.4903 90.5097 16 64 16"
2134+ =vector-effect "non-scaling-stroke"
2135+ :: =stroke bg
2136+ =fill "none";
2137+ ==
2138+::
2139+ :- 'dur'
2140+ |= [fg=tape bg=tape]
2141+ :~ ;path
2142+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
2143+ :: =fill fg
2144+ =vector-effect "non-scaling-stroke";
2145+ :: =stroke bg
2146+ :: =stroke-width "0.5"
2147+ ==
2148+::
2149+ :- 'dus'
2150+ |= [fg=tape bg=tape]
2151+ :~ ;path
2152+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
2153+ :: =fill fg
2154+ =vector-effect "non-scaling-stroke";
2155+ :: =stroke bg
2156+ :: =stroke-width "0.5"
2157+ ;path
2158+ =d "M32 -3.05151e-06C32 53.0193 74.9807 96 128 96"
2159+ =vector-effect "non-scaling-stroke"
2160+ :: =stroke bg
2161+ =fill "none";
2162+ ;path
2163+ =d "M128 0L0 128"
2164+ =vector-effect "non-scaling-stroke"
2165+ :: =stroke bg
2166+ :: =stroke-linecap "square"
2167+ =fill "none";
2168+ ==
2169+::
2170+ :- 'dut'
2171+ |= [fg=tape bg=tape]
2172+ :~ ;rect
2173+ =width "128"
2174+ =height "128"
2175+ :: =fill fg
2176+ =vector-effect "non-scaling-stroke";
2177+ :: =stroke bg
2178+ :: =stroke-width "0.5"
2179+ ;circle
2180+ =cx "96"
2181+ =cy "96"
2182+ =r "11.5"
2183+ :: =fill fg
2184+ =vector-effect "non-scaling-stroke"
2185+ =stroke fg;
2186+ ;circle
2187+ =cx "96"
2188+ =cy "96"
2189+ =r "9"
2190+ =fill bg
2191+ =vector-effect "non-scaling-stroke";
2192+ :: =stroke bg
2193+ :: =stroke-width "2"
2194+ ==
2195+::
2196+ :- 'dux'
2197+ |= [fg=tape bg=tape]
2198+ :~ ;path
2199+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
2200+ :: =fill fg
2201+ =vector-effect "non-scaling-stroke";
2202+ :: =stroke bg
2203+ :: =stroke-width "0.5"
2204+ ;path
2205+ =d "M-2.79795e-06 -3.55988e-06C70.6924 -4.40288e-06 128 57.3075 128 128"
2206+ =vector-effect "non-scaling-stroke"
2207+ :: =stroke bg
2208+ =fill "none";
2209+ ==
2210+::
2211+ :- 'dyl'
2212+ |= [fg=tape bg=tape]
2213+ :~ ;path
2214+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
2215+ :: =fill fg
2216+ =vector-effect "non-scaling-stroke";
2217+ :: =stroke bg
2218+ :: =stroke-width "0.5"
2219+ ;path
2220+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
2221+ =vector-effect "non-scaling-stroke"
2222+ :: =stroke bg
2223+ =fill "none";
2224+ ==
2225+::
2226+ :- 'dyn'
2227+ |= [fg=tape bg=tape]
2228+ :~ ;path
2229+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
2230+ :: =fill fg
2231+ =vector-effect "non-scaling-stroke";
2232+ :: =stroke bg
2233+ :: =stroke-width "0.5"
2234+ ;path
2235+ =d "M128 32L0 32"
2236+ =vector-effect "non-scaling-stroke"
2237+ :: =stroke bg
2238+ =fill "none";
2239+ ==
2240+::
2241+ :- 'dyr'
2242+ |= [fg=tape bg=tape]
2243+ :~ ;path
2244+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
2245+ :: =fill fg
2246+ =vector-effect "non-scaling-stroke";
2247+ :: =stroke bg
2248+ :: =stroke-width "0.5"
2249+ ;path
2250+ =d "M-0.00292969 0L127.997 128"
2251+ =vector-effect "non-scaling-stroke"
2252+ :: =stroke bg
2253+ :: =stroke-linecap "square"
2254+ =fill "none";
2255+ ;circle
2256+ =cx "96"
2257+ =cy "32"
2258+ =r "11.5"
2259+ :: =fill fg
2260+ =vector-effect "non-scaling-stroke"
2261+ =stroke fg;
2262+ ;circle
2263+ =cx "96"
2264+ =cy "32"
2265+ =r "9"
2266+ =fill bg
2267+ =vector-effect "non-scaling-stroke";
2268+ :: =stroke bg
2269+ :: =stroke-width "2"
2270+ ;circle
2271+ =cx "32"
2272+ =cy "96"
2273+ =r "11.5"
2274+ :: =fill fg
2275+ =vector-effect "non-scaling-stroke"
2276+ =stroke fg;
2277+ ;circle
2278+ =cx "32"
2279+ =cy "96"
2280+ =r "9"
2281+ =fill bg
2282+ =vector-effect "non-scaling-stroke";
2283+ :: =stroke bg
2284+ :: =stroke-width "2"
2285+ ==
2286+::
2287+ :- 'dys'
2288+ |= [fg=tape bg=tape]
2289+ :~ ;path
2290+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
2291+ :: =fill fg
2292+ =vector-effect "non-scaling-stroke";
2293+ :: =stroke bg
2294+ :: =stroke-width "0.5"
2295+ ;path
2296+ =d "M-3.8147e-06 1.11901e-05C-7.24633e-07 35.3462 28.6538 64 64 64C99.3462 64 128 35.3462 128 0"
2297+ =vector-effect "non-scaling-stroke"
2298+ :: =stroke bg
2299+ =fill "none";
2300+ ==
2301+::
2302+ :- 'dyt'
2303+ |= [fg=tape bg=tape]
2304+ :~ ;path
2305+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
2306+ :: =fill fg
2307+ =vector-effect "non-scaling-stroke";
2308+ :: =stroke bg
2309+ :: =stroke-width "0.5"
2310+ ;circle
2311+ =cx "64"
2312+ =cy "64"
2313+ =r "32"
2314+ =vector-effect "non-scaling-stroke"
2315+ :: =stroke bg
2316+ =fill "none";
2317+ ;path
2318+ =d "M128 64L0 64"
2319+ =vector-effect "non-scaling-stroke"
2320+ :: =stroke bg
2321+ =fill "none";
2322+ ;circle
2323+ =cx "32"
2324+ =cy "64"
2325+ =r "11.5"
2326+ :: =fill fg
2327+ =vector-effect "non-scaling-stroke"
2328+ =stroke fg;
2329+ ;circle
2330+ =cx "32"
2331+ =cy "64"
2332+ =r "9"
2333+ =fill bg
2334+ =vector-effect "non-scaling-stroke";
2335+ :: =stroke bg
2336+ :: =stroke-width "2"
2337+ ==
2338+::
2339+ :- 'fab'
2340+ |= [fg=tape bg=tape]
2341+ :~ ;path
2342+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
2343+ :: =fill fg
2344+ =vector-effect "non-scaling-stroke";
2345+ :: =stroke bg
2346+ :: =stroke-width "0.5"
2347+ ;path
2348+ =d "M128 0L0 128"
2349+ =vector-effect "non-scaling-stroke"
2350+ :: =stroke bg
2351+ :: =stroke-linecap "square"
2352+ =fill "none";
2353+ ;circle
2354+ =cx "64"
2355+ =cy "64"
2356+ =r "11.5"
2357+ :: =fill fg
2358+ =vector-effect "non-scaling-stroke"
2359+ =stroke fg;
2360+ ;circle
2361+ =cx "64"
2362+ =cy "64"
2363+ =r "9"
2364+ =fill bg
2365+ =vector-effect "non-scaling-stroke";
2366+ :: =stroke bg
2367+ :: =stroke-width "2"
2368+ ;circle
2369+ =cx "16"
2370+ =cy "112"
2371+ =r "11.5"
2372+ =fill bg
2373+ =vector-effect "non-scaling-stroke";
2374+ :: =stroke bg
2375+ ;circle
2376+ =cx "16"
2377+ =cy "112"
2378+ =r "9"
2379+ :: =fill fg
2380+ =vector-effect "non-scaling-stroke"
2381+ =stroke fg;
2382+ :: =stroke-width "2"
2383+ ==
2384+::
2385+ :- 'fad'
2386+ |= [fg=tape bg=tape]
2387+ :~ ;path
2388+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
2389+ :: =fill fg
2390+ =vector-effect "non-scaling-stroke";
2391+ :: =stroke bg
2392+ :: =stroke-width "0.5"
2393+ ;circle
2394+ =cx "96"
2395+ =cy "32"
2396+ =r "11.5"
2397+ :: =fill fg
2398+ =vector-effect "non-scaling-stroke"
2399+ =stroke fg;
2400+ ;circle
2401+ =cx "96"
2402+ =cy "32"
2403+ =r "9"
2404+ =fill bg
2405+ =vector-effect "non-scaling-stroke";
2406+ :: =stroke bg
2407+ :: =stroke-width "2"
2408+ ;circle
2409+ =cx "32"
2410+ =cy "96"
2411+ =r "11.5"
2412+ :: =fill fg
2413+ =vector-effect "non-scaling-stroke"
2414+ =stroke fg;
2415+ ;circle
2416+ =cx "32"
2417+ =cy "96"
2418+ =r "9"
2419+ =fill bg
2420+ =vector-effect "non-scaling-stroke";
2421+ :: =stroke bg
2422+ :: =stroke-width "2"
2423+ ==
2424+::
2425+ :- 'fal'
2426+ |= [fg=tape bg=tape]
2427+ :~ ;path
2428+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
2429+ :: =fill fg
2430+ =vector-effect "non-scaling-stroke";
2431+ :: =stroke bg
2432+ :: =stroke-width "0.5"
2433+ ;path
2434+ =d "M0 128L128 0"
2435+ =vector-effect "non-scaling-stroke"
2436+ :: =stroke bg
2437+ :: =stroke-linecap "square"
2438+ =fill "none";
2439+ ;path
2440+ =d "M0 0C35.3511 0 67.3551 14.3309 90.5193 37.5"
2441+ =vector-effect "non-scaling-stroke"
2442+ :: =stroke bg
2443+ =fill "none";
2444+ ;path
2445+ =d "M0 32C26.5077 32 50.5061 42.7436 67.8783 60.1138"
2446+ =vector-effect "non-scaling-stroke"
2447+ :: =stroke bg
2448+ =fill "none";
2449+ ;path
2450+ =d "M0 64C17.6721 64 33.6713 71.1626 45.2529 82.7432"
2451+ =vector-effect "non-scaling-stroke"
2452+ :: =stroke bg
2453+ =fill "none";
2454+ ;path
2455+ =d "M0 95.6284C8.83603 95.6284 16.8356 99.2097 22.6264 105"
2456+ =vector-effect "non-scaling-stroke"
2457+ :: =stroke bg
2458+ =fill "none";
2459+ ==
2460+::
2461+ :- 'fam'
2462+ |= [fg=tape bg=tape]
2463+ :~ ;path
2464+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2465+ :: =fill fg
2466+ =vector-effect "non-scaling-stroke";
2467+ :: =stroke bg
2468+ :: =stroke-width "0.5"
2469+ ;line
2470+ =x1 "128"
2471+ =y1 "64"
2472+ =x2 "-4.37114e-08"
2473+ =y2 "64"
2474+ =vector-effect "non-scaling-stroke"
2475+ :: =stroke bg
2476+ =fill "none";
2477+ ;line
2478+ =x1 "64"
2479+ =y1 "2.18557e-08"
2480+ =x2 "64"
2481+ =y2 "128"
2482+ =vector-effect "non-scaling-stroke"
2483+ :: =stroke bg
2484+ =fill "none";
2485+ ;circle
2486+ =cx "64"
2487+ =cy "64"
2488+ =r "11.5"
2489+ :: =fill fg
2490+ =vector-effect "non-scaling-stroke"
2491+ =stroke fg;
2492+ ;circle
2493+ =cx "64"
2494+ =cy "64"
2495+ =r "9"
2496+ =fill bg
2497+ =vector-effect "non-scaling-stroke";
2498+ :: =stroke bg
2499+ :: =stroke-width "2"
2500+ ==
2501+::
2502+ :- 'fan'
2503+ |= [fg=tape bg=tape]
2504+ :~ ;path
2505+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2506+ :: =fill fg
2507+ =vector-effect "non-scaling-stroke";
2508+ :: =stroke bg
2509+ :: =stroke-width "0.5"
2510+ ;path
2511+ =d "M128 0L0 128"
2512+ =vector-effect "non-scaling-stroke"
2513+ :: =stroke bg
2514+ :: =stroke-linecap "square"
2515+ =fill "none";
2516+ ;path
2517+ =d "M64 0L64 128"
2518+ =vector-effect "non-scaling-stroke"
2519+ :: =stroke bg
2520+ =fill "none";
2521+ ;path
2522+ =d "M-0.00292969 0L127.997 128"
2523+ =vector-effect "non-scaling-stroke"
2524+ :: =stroke bg
2525+ :: =stroke-linecap "square"
2526+ =fill "none";
2527+ ==
2528+::
2529+ :- 'fas'
2530+ |= [fg=tape bg=tape]
2531+ :~ ;rect
2532+ =width "128"
2533+ =height "128"
2534+ :: =fill fg
2535+ =vector-effect "non-scaling-stroke";
2536+ :: =stroke bg
2537+ :: =stroke-width "0.5"
2538+ ;circle
2539+ =cx "64"
2540+ =cy "64"
2541+ =r "32"
2542+ =vector-effect "non-scaling-stroke"
2543+ :: =stroke bg
2544+ =fill "none";
2545+ ;circle
2546+ =cx "96"
2547+ =cy "64"
2548+ =r "11.5"
2549+ :: =fill fg
2550+ =vector-effect "non-scaling-stroke"
2551+ =stroke fg;
2552+ ;circle
2553+ =cx "96"
2554+ =cy "64"
2555+ =r "9"
2556+ =fill bg
2557+ =vector-effect "non-scaling-stroke";
2558+ :: =stroke bg
2559+ :: =stroke-width "2"
2560+ ==
2561+::
2562+ :- 'feb'
2563+ |= [fg=tape bg=tape]
2564+ :~ ;rect
2565+ =width "128"
2566+ =height "128"
2567+ :: =fill fg
2568+ =vector-effect "non-scaling-stroke";
2569+ :: =stroke bg
2570+ :: =stroke-width "0.5"
2571+ ;path
2572+ =d "M7.37542e-06 -3.56072e-06C1.19529e-06 70.6924 57.3075 128 128 128"
2573+ =vector-effect "non-scaling-stroke"
2574+ :: =stroke bg
2575+ =fill "none";
2576+ ==
2577+::
2578+ :- 'fed'
2579+ |= [fg=tape bg=tape]
2580+ :~ ;circle
2581+ =cx "64"
2582+ =cy "64"
2583+ =r "64"
2584+ :: =fill fg
2585+ =vector-effect "non-scaling-stroke";
2586+ :: =stroke bg
2587+ :: =stroke-width "0.5"
2588+ ;path
2589+ =d "M128 32L0 32"
2590+ =vector-effect "non-scaling-stroke"
2591+ :: =stroke bg
2592+ =fill "none";
2593+ ;circle
2594+ =cx "64"
2595+ =cy "64"
2596+ =r "11.5"
2597+ :: =fill fg
2598+ =vector-effect "non-scaling-stroke"
2599+ =stroke fg;
2600+ ;circle
2601+ =cx "64"
2602+ =cy "64"
2603+ =r "9"
2604+ =fill bg
2605+ =vector-effect "non-scaling-stroke";
2606+ :: =stroke bg
2607+ :: =stroke-width "2"
2608+ ==
2609+::
2610+ :- 'fel'
2611+ |= [fg=tape bg=tape]
2612+ :~ ;path
2613+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
2614+ :: =fill fg
2615+ =vector-effect "non-scaling-stroke";
2616+ :: =stroke bg
2617+ :: =stroke-width "0.5"
2618+ ;line
2619+ =y1 "-0.5"
2620+ =x2 "45.2548"
2621+ =y2 "-0.5"
2622+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
2623+ =vector-effect "non-scaling-stroke"
2624+ :: =stroke bg
2625+ =fill "none";
2626+ ==
2627+::
2628+ :- 'fen'
2629+ |= [fg=tape bg=tape]
2630+ :~ ;rect
2631+ =width "128"
2632+ =height "128"
2633+ :: =fill fg
2634+ =vector-effect "non-scaling-stroke";
2635+ :: =stroke bg
2636+ :: =stroke-width "0.5"
2637+ ;path
2638+ =d "M-0.00280762 0L127.997 128"
2639+ =vector-effect "non-scaling-stroke"
2640+ :: =stroke bg
2641+ :: =stroke-linecap "square"
2642+ =fill "none";
2643+ ;path
2644+ =d "M0 128C4.63574e-06 92.6489 14.3309 60.6449 37.5 37.4807"
2645+ =vector-effect "non-scaling-stroke"
2646+ :: =stroke bg
2647+ =fill "none";
2648+ ;path
2649+ =d "M32 128C32 101.492 42.7436 77.4939 60.1138 60.1217"
2650+ =vector-effect "non-scaling-stroke"
2651+ :: =stroke bg
2652+ =fill "none";
2653+ ;path
2654+ =d "M64 128C64 110.328 71.1626 94.3287 82.7432 82.7471"
2655+ =vector-effect "non-scaling-stroke"
2656+ :: =stroke bg
2657+ =fill "none";
2658+ ;path
2659+ =d "M95.6284 128C95.6284 119.164 99.2097 111.164 105 105.374"
2660+ =vector-effect "non-scaling-stroke"
2661+ :: =stroke bg
2662+ =fill "none";
2663+ ==
2664+::
2665+ :- 'fep'
2666+ |= [fg=tape bg=tape]
2667+ :~ ;path
2668+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
2669+ :: =fill fg
2670+ =vector-effect "non-scaling-stroke";
2671+ :: =stroke bg
2672+ :: =stroke-width "0.5"
2673+ ;path
2674+ =d "M128 0L0 128"
2675+ =vector-effect "non-scaling-stroke"
2676+ :: =stroke bg
2677+ :: =stroke-linecap "square"
2678+ =fill "none";
2679+ ==
2680+::
2681+ :- 'fer'
2682+ |= [fg=tape bg=tape]
2683+ :~ ;path
2684+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
2685+ :: =fill fg
2686+ =vector-effect "non-scaling-stroke";
2687+ :: =stroke bg
2688+ :: =stroke-width "0.5"
2689+ ;path
2690+ =d "M64 0L64 128"
2691+ =vector-effect "non-scaling-stroke"
2692+ :: =stroke bg
2693+ =fill "none";
2694+ ==
2695+::
2696+ :- 'fes'
2697+ |= [fg=tape bg=tape]
2698+ :~ ;path
2699+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
2700+ :: =fill fg
2701+ =vector-effect "non-scaling-stroke";
2702+ :: =stroke bg
2703+ :: =stroke-width "0.5"
2704+ ;path
2705+ =d "M32 0L32 128"
2706+ =vector-effect "non-scaling-stroke"
2707+ :: =stroke bg
2708+ =fill "none";
2709+ ==
2710+::
2711+ :- 'fet'
2712+ |= [fg=tape bg=tape]
2713+ :~ ;circle
2714+ =cx "64"
2715+ =cy "64"
2716+ =r "64"
2717+ :: =fill fg
2718+ =vector-effect "non-scaling-stroke";
2719+ :: =stroke bg
2720+ :: =stroke-width "0.5"
2721+ ;path
2722+ =d "M128 0L0 128"
2723+ =vector-effect "non-scaling-stroke"
2724+ :: =stroke bg
2725+ :: =stroke-linecap "square"
2726+ =fill "none";
2727+ ==
2728+::
2729+ :- 'fex'
2730+ |= [fg=tape bg=tape]
2731+ :~ ;path
2732+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
2733+ :: =fill fg
2734+ =vector-effect "non-scaling-stroke";
2735+ :: =stroke bg
2736+ :: =stroke-width "0.5"
2737+ ;line
2738+ =y1 "-0.5"
2739+ =x2 "45.2548"
2740+ =y2 "-0.5"
2741+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.6499 47.6499)"
2742+ =vector-effect "non-scaling-stroke"
2743+ :: =stroke bg
2744+ =fill "none";
2745+ ;path
2746+ =fill-rule "evenodd"
2747+ =clip-rule "evenodd"
2748+ =stroke "none"
2749+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
2750+ =fill bg;
2751+ ==
2752+::
2753+ :- 'fid'
2754+ |= [fg=tape bg=tape]
2755+ :~ ;path
2756+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
2757+ :: =fill fg
2758+ =vector-effect "non-scaling-stroke";
2759+ :: =stroke bg
2760+ :: =stroke-width "0.5"
2761+ ;path
2762+ =d "M-0.00291443 0L127.997 128"
2763+ =vector-effect "non-scaling-stroke"
2764+ :: =stroke bg
2765+ :: =stroke-linecap "square"
2766+ =fill "none";
2767+ ;circle
2768+ =cx "96"
2769+ =cy "96"
2770+ =r "11.5"
2771+ :: =fill fg
2772+ =vector-effect "non-scaling-stroke"
2773+ =stroke fg;
2774+ ;circle
2775+ =cx "96"
2776+ =cy "96"
2777+ =r "9"
2778+ =fill bg
2779+ =vector-effect "non-scaling-stroke";
2780+ :: =stroke bg
2781+ :: =stroke-width "2"
2782+ ;circle
2783+ =cx "32"
2784+ =cy "32"
2785+ =r "11.5"
2786+ :: =fill fg
2787+ =vector-effect "non-scaling-stroke"
2788+ =stroke fg;
2789+ ;circle
2790+ =cx "32"
2791+ =cy "32"
2792+ =r "9"
2793+ =fill bg
2794+ =vector-effect "non-scaling-stroke";
2795+ :: =stroke bg
2796+ :: =stroke-width "2"
2797+ ==
2798+::
2799+ :- 'fig'
2800+ |= [fg=tape bg=tape]
2801+ :~ ;path
2802+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2803+ :: =fill fg
2804+ =vector-effect "non-scaling-stroke";
2805+ :: =stroke bg
2806+ :: =stroke-width "0.5"
2807+ ;path
2808+ =d "M64 0L64 128"
2809+ =vector-effect "non-scaling-stroke"
2810+ :: =stroke bg
2811+ =fill "none";
2812+ ;circle
2813+ =cx "64"
2814+ =cy "64"
2815+ =r "32"
2816+ =vector-effect "non-scaling-stroke"
2817+ :: =stroke bg
2818+ =fill "none";
2819+ ;circle
2820+ =cx "64"
2821+ =cy "64"
2822+ =r "16"
2823+ =vector-effect "non-scaling-stroke"
2824+ :: =stroke bg
2825+ =fill "none";
2826+ ==
2827+::
2828+ :- 'fil'
2829+ |= [fg=tape bg=tape]
2830+ :~ ;path
2831+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2832+ :: =fill fg
2833+ =vector-effect "non-scaling-stroke";
2834+ :: =stroke bg
2835+ :: =stroke-width "0.5"
2836+ ;line
2837+ =x1 "128"
2838+ =y1 "64"
2839+ =x2 "-4.37114e-08"
2840+ =y2 "64"
2841+ =vector-effect "non-scaling-stroke"
2842+ :: =stroke bg
2843+ =fill "none";
2844+ ;line
2845+ =x1 "64"
2846+ =y1 "2.18557e-08"
2847+ =x2 "64"
2848+ =y2 "128"
2849+ =vector-effect "non-scaling-stroke"
2850+ :: =stroke bg
2851+ =fill "none";
2852+ ;line
2853+ =x1 "32"
2854+ =y1 "2.18557e-08"
2855+ =x2 "32"
2856+ =y2 "128"
2857+ =vector-effect "non-scaling-stroke"
2858+ :: =stroke bg
2859+ =fill "none";
2860+ ==
2861+::
2862+ :- 'fin'
2863+ |= [fg=tape bg=tape]
2864+ :~ ;rect
2865+ =width "128"
2866+ =height "128"
2867+ :: =fill fg
2868+ =vector-effect "non-scaling-stroke";
2869+ :: =stroke bg
2870+ :: =stroke-width "0.5"
2871+ ;line
2872+ =x1 "98"
2873+ =y1 "2.18557e-08"
2874+ =x2 "98"
2875+ =y2 "128"
2876+ =vector-effect "non-scaling-stroke"
2877+ :: =stroke bg
2878+ =fill "none";
2879+ ==
2880+::
2881+ :- 'fip'
2882+ |= [fg=tape bg=tape]
2883+ :~ ;path
2884+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2885+ :: =fill fg
2886+ =vector-effect "non-scaling-stroke";
2887+ :: =stroke bg
2888+ :: =stroke-width "0.5"
2889+ ;circle
2890+ =cx "64"
2891+ =cy "64"
2892+ =r "32"
2893+ =vector-effect "non-scaling-stroke"
2894+ :: =stroke bg
2895+ =fill "none";
2896+ ;line
2897+ =x1 "-0.0029152"
2898+ =x2 "127.983"
2899+ =y2 "127.986"
2900+ =vector-effect "non-scaling-stroke"
2901+ :: =stroke bg
2902+ :: =stroke-linecap "square"
2903+ =fill "none";
2904+ ;circle
2905+ =cx "64"
2906+ =cy "96"
2907+ =r "11.5"
2908+ :: =fill fg
2909+ =vector-effect "non-scaling-stroke"
2910+ =stroke fg;
2911+ ;circle
2912+ =cx "64"
2913+ =cy "96"
2914+ =r "9"
2915+ =fill bg
2916+ =vector-effect "non-scaling-stroke";
2917+ :: =stroke bg
2918+ :: =stroke-width "2"
2919+ ==
2920+::
2921+ :- 'fir'
2922+ |= [fg=tape bg=tape]
2923+ :~ ;path
2924+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
2925+ :: =fill fg
2926+ =vector-effect "non-scaling-stroke";
2927+ :: =stroke bg
2928+ :: =stroke-width "0.5"
2929+ ;line
2930+ =y1 "-0.5"
2931+ =x2 "45.2548"
2932+ =y2 "-0.5"
2933+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
2934+ =vector-effect "non-scaling-stroke"
2935+ :: =stroke bg
2936+ =fill "none";
2937+ ;line
2938+ =x1 "80.0036"
2939+ =y1 "79.9965"
2940+ =x2 "112.004"
2941+ =y2 "111.997"
2942+ =vector-effect "non-scaling-stroke"
2943+ :: =stroke bg
2944+ =fill "none";
2945+ ;line
2946+ =x1 "16.0035"
2947+ =y1 "15.9965"
2948+ =x2 "48.0035"
2949+ =y2 "47.9965"
2950+ =vector-effect "non-scaling-stroke"
2951+ :: =stroke bg
2952+ =fill "none";
2953+ ;circle
2954+ =cx "64"
2955+ =cy "64"
2956+ =r "11.5"
2957+ :: =fill fg
2958+ =vector-effect "non-scaling-stroke"
2959+ =stroke fg;
2960+ ;circle
2961+ =cx "64"
2962+ =cy "64"
2963+ =r "9"
2964+ =fill bg
2965+ =vector-effect "non-scaling-stroke";
2966+ :: =stroke bg
2967+ :: =stroke-width "2"
2968+ ==
2969+::
2970+ :- 'fit'
2971+ |= [fg=tape bg=tape]
2972+ :~ ;path
2973+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
2974+ :: =fill fg
2975+ =vector-effect "non-scaling-stroke";
2976+ :: =stroke bg
2977+ :: =stroke-width "0.5"
2978+ ;line
2979+ =x1 "0.5"
2980+ =y1 "-0.5"
2981+ =x2 "181.5"
2982+ =y2 "-0.5"
2983+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
2984+ =vector-effect "non-scaling-stroke"
2985+ :: =stroke bg
2986+ :: =stroke-linecap "square"
2987+ =fill "none";
2988+ ==
2989+::
2990+ :- 'fod'
2991+ |= [fg=tape bg=tape]
2992+ :~ ;path
2993+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
2994+ :: =fill fg
2995+ =vector-effect "non-scaling-stroke";
2996+ :: =stroke bg
2997+ :: =stroke-width "0.5"
2998+ ;path
2999+ =fill-rule "evenodd"
3000+ =clip-rule "evenodd"
3001+ =stroke "none"
3002+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
3003+ =fill bg;
3004+ ==
3005+::
3006+ :- 'fog'
3007+ |= [fg=tape bg=tape]
3008+ :~ ;path
3009+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
3010+ :: =fill fg
3011+ =vector-effect "non-scaling-stroke";
3012+ :: =stroke bg
3013+ :: =stroke-width "0.5"
3014+ ;path
3015+ =d "M-0.00292969 0L127.997 128"
3016+ =vector-effect "non-scaling-stroke"
3017+ :: =stroke bg
3018+ :: =stroke-linecap "square"
3019+ =fill "none";
3020+ ;path
3021+ =d "M86.6274 86.6274C99.1242 74.1306 99.1242 53.8694 86.6274 41.3726C74.1306 28.8758 53.8694 28.8758 41.3726 41.3726"
3022+ =vector-effect "non-scaling-stroke"
3023+ :: =stroke bg
3024+ =fill "none";
3025+ ;circle
3026+ =cx "64"
3027+ =cy "64"
3028+ =r "16"
3029+ =vector-effect "non-scaling-stroke"
3030+ :: =stroke bg
3031+ =fill "none";
3032+ ==
3033+::
3034+ :- 'fol'
3035+ |= [fg=tape bg=tape]
3036+ :~ ;circle
3037+ =cx "64"
3038+ =cy "64"
3039+ =r "64"
3040+ :: =fill fg
3041+ =vector-effect "non-scaling-stroke";
3042+ :: =stroke bg
3043+ :: =stroke-width "0.5"
3044+ ;circle
3045+ =cx "64"
3046+ =cy "64"
3047+ =r "16"
3048+ =vector-effect "non-scaling-stroke"
3049+ :: =stroke bg
3050+ =fill "none";
3051+ ;line
3052+ =x1 "128"
3053+ =y1 "64"
3054+ =x2 "-4.37114e-08"
3055+ =y2 "64"
3056+ =vector-effect "non-scaling-stroke"
3057+ :: =stroke bg
3058+ =fill "none";
3059+ ==
3060+::
3061+ :- 'fon'
3062+ |= [fg=tape bg=tape]
3063+ :~ ;path
3064+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
3065+ :: =fill fg
3066+ =vector-effect "non-scaling-stroke";
3067+ :: =stroke bg
3068+ :: =stroke-width "0.5"
3069+ ;line
3070+ =x1 "-0.0029152"
3071+ =x2 "127.983"
3072+ =y2 "127.986"
3073+ =vector-effect "non-scaling-stroke"
3074+ :: =stroke bg
3075+ :: =stroke-linecap "square"
3076+ =fill "none";
3077+ ==
3078+::
3079+ :- 'fop'
3080+ |= [fg=tape bg=tape]
3081+ :~ ;circle
3082+ =cx "64"
3083+ =cy "64"
3084+ =r "64"
3085+ :: =fill fg
3086+ =vector-effect "non-scaling-stroke";
3087+ :: =stroke bg
3088+ :: =stroke-width "0.5"
3089+ ;line
3090+ =x1 "-0.0029152"
3091+ =x2 "127.983"
3092+ =y2 "127.986"
3093+ =vector-effect "non-scaling-stroke"
3094+ :: =stroke bg
3095+ :: =stroke-linecap "square"
3096+ =fill "none";
3097+ ;path
3098+ =d "M16 64C16 90.5097 37.4903 112 64 112"
3099+ =vector-effect "non-scaling-stroke"
3100+ :: =stroke bg
3101+ =fill "none";
3102+ ;circle
3103+ =cx "16"
3104+ =cy "64"
3105+ =r "11.5"
3106+ :: =fill fg
3107+ =vector-effect "non-scaling-stroke"
3108+ =stroke fg;
3109+ ;circle
3110+ =cx "16"
3111+ =cy "64"
3112+ =r "9"
3113+ =fill bg
3114+ =vector-effect "non-scaling-stroke";
3115+ :: =stroke bg
3116+ :: =stroke-width "2"
3117+ ==
3118+::
3119+ :- 'for'
3120+ |= [fg=tape bg=tape]
3121+ :~ ;path
3122+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
3123+ :: =fill fg
3124+ =vector-effect "non-scaling-stroke";
3125+ :: =stroke bg
3126+ :: =stroke-width "0.5"
3127+ ;line
3128+ =x1 "96"
3129+ =y1 "2.18557e-08"
3130+ =x2 "96"
3131+ =y2 "128"
3132+ =vector-effect "non-scaling-stroke"
3133+ :: =stroke bg
3134+ =fill "none";
3135+ ;circle
3136+ =cx "64"
3137+ =cy "64"
3138+ =r "11.5"
3139+ :: =fill fg
3140+ =vector-effect "non-scaling-stroke"
3141+ =stroke fg;
3142+ ;circle
3143+ =cx "64"
3144+ =cy "64"
3145+ =r "9"
3146+ =fill bg
3147+ =vector-effect "non-scaling-stroke";
3148+ :: =stroke bg
3149+ :: =stroke-width "2"
3150+ ==
3151+::
3152+ :- 'fos'
3153+ |= [fg=tape bg=tape]
3154+ :~ ;path
3155+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3156+ :: =fill fg
3157+ =vector-effect "non-scaling-stroke";
3158+ :: =stroke bg
3159+ :: =stroke-width "0.5"
3160+ ;line
3161+ =x1 "-0.0029152"
3162+ =x2 "127.983"
3163+ =y2 "127.986"
3164+ =vector-effect "non-scaling-stroke"
3165+ :: =stroke bg
3166+ :: =stroke-linecap "square"
3167+ =fill "none";
3168+ ;path
3169+ =d "M96 0C96 53.0193 53.0193 96 0 96"
3170+ =vector-effect "non-scaling-stroke"
3171+ :: =stroke bg
3172+ =fill "none";
3173+ ;path
3174+ =d "M64 0C64 35.3462 35.3462 64 0 64"
3175+ =vector-effect "non-scaling-stroke"
3176+ :: =stroke bg
3177+ =fill "none";
3178+ ;path
3179+ =d "M32 0C32 17.6731 17.6731 32 0 32"
3180+ =vector-effect "non-scaling-stroke"
3181+ :: =stroke bg
3182+ =fill "none";
3183+ ==
3184+::
3185+ :- 'fot'
3186+ |= [fg=tape bg=tape]
3187+ :~ ;path
3188+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
3189+ :: =fill fg
3190+ =vector-effect "non-scaling-stroke";
3191+ :: =stroke bg
3192+ :: =stroke-width "0.5"
3193+ ;line
3194+ =x1 "15.9964"
3195+ =y1 "111.997"
3196+ =x2 "47.9964"
3197+ =y2 "79.9965"
3198+ =vector-effect "non-scaling-stroke"
3199+ :: =stroke bg
3200+ =fill "none";
3201+ ;circle
3202+ =cx "64"
3203+ =cy "64"
3204+ =r "11.5"
3205+ :: =fill fg
3206+ =vector-effect "non-scaling-stroke"
3207+ =stroke fg;
3208+ ;circle
3209+ =cx "64"
3210+ =cy "64"
3211+ =r "9"
3212+ =fill bg
3213+ =vector-effect "non-scaling-stroke";
3214+ :: =stroke bg
3215+ :: =stroke-width "2"
3216+ ==
3217+::
3218+ :- 'ful'
3219+ |= [fg=tape bg=tape]
3220+ :~ ;circle
3221+ =cx "64"
3222+ =cy "64"
3223+ =r "64"
3224+ :: =fill fg
3225+ =vector-effect "non-scaling-stroke";
3226+ :: =stroke bg
3227+ :: =stroke-width "0.5"
3228+ ;path
3229+ =d "M64 96C81.6731 96 96 81.6731 96 64C96 46.3269 81.6731 32 64 32"
3230+ =vector-effect "non-scaling-stroke"
3231+ :: =stroke bg
3232+ =fill "none";
3233+ ==
3234+::
3235+ :- 'fun'
3236+ |= [fg=tape bg=tape]
3237+ :~ ;path
3238+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
3239+ :: =fill fg
3240+ =vector-effect "non-scaling-stroke";
3241+ :: =stroke bg
3242+ :: =stroke-width "0.5"
3243+ ;line
3244+ =x1 "15.9964"
3245+ =y1 "111.997"
3246+ =x2 "47.9964"
3247+ =y2 "79.9965"
3248+ =vector-effect "non-scaling-stroke"
3249+ :: =stroke bg
3250+ =fill "none";
3251+ ;path
3252+ =d "M-0.00280762 0L127.997 128"
3253+ =vector-effect "non-scaling-stroke"
3254+ :: =stroke bg
3255+ :: =stroke-linecap "square"
3256+ =fill "none";
3257+ ;circle
3258+ =cx "16"
3259+ =cy "112"
3260+ =r "11.5"
3261+ :: =fill fg
3262+ =vector-effect "non-scaling-stroke"
3263+ =stroke fg;
3264+ ;circle
3265+ =cx "16"
3266+ =cy "112"
3267+ =r "9"
3268+ =fill bg
3269+ =vector-effect "non-scaling-stroke";
3270+ :: =stroke bg
3271+ :: =stroke-width "2"
3272+ ==
3273+::
3274+ :- 'fur'
3275+ |= [fg=tape bg=tape]
3276+ :~ ;path
3277+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3278+ :: =fill fg
3279+ =vector-effect "non-scaling-stroke";
3280+ :: =stroke bg
3281+ :: =stroke-width "0.5"
3282+ ;path
3283+ =d "M128 0L0 128"
3284+ =vector-effect "non-scaling-stroke"
3285+ :: =stroke bg
3286+ :: =stroke-linecap "square"
3287+ =fill "none";
3288+ ;path
3289+ =d "M86.8823 41.6275C74.3855 29.1307 54.1242 29.1307 41.6274 41.6275C29.1307 54.1243 29.1307 74.3855 41.6274 86.8823"
3290+ =vector-effect "non-scaling-stroke"
3291+ :: =stroke bg
3292+ =fill "none";
3293+ ;circle
3294+ =cx "64"
3295+ =cy "64"
3296+ =r "16"
3297+ =vector-effect "non-scaling-stroke"
3298+ :: =stroke bg
3299+ =fill "none";
3300+ ==
3301+::
3302+ :- 'fus'
3303+ |= [fg=tape bg=tape]
3304+ :~ ;path
3305+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
3306+ :: =fill fg
3307+ =vector-effect "non-scaling-stroke";
3308+ :: =stroke bg
3309+ :: =stroke-width "0.5"
3310+ ;path
3311+ =d "M128 0L0 128"
3312+ =vector-effect "non-scaling-stroke"
3313+ :: =stroke bg
3314+ :: =stroke-linecap "square"
3315+ =fill "none";
3316+ ;path
3317+ =d "M32 128C32 110.327 17.6731 96 0 96"
3318+ =vector-effect "non-scaling-stroke"
3319+ :: =stroke bg
3320+ =fill "none";
3321+ ==
3322+::
3323+ :- 'fyl'
3324+ |= [fg=tape bg=tape]
3325+ :~ ;path
3326+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3327+ :: =fill fg
3328+ =vector-effect "non-scaling-stroke";
3329+ :: =stroke bg
3330+ :: =stroke-width "0.5"
3331+ ;path
3332+ =d "M22.1288 22.6299C16.0075 28.7511 8.0234 31.874 0.00134547 31.9986M44.7562 45.2573C32.3866 57.6269 16.2133 63.8747 0.00134277 64.0005M67.3836 67.8847C48.7656 86.5027 24.403 95.8749 0.00134412 96.0012"
3333+ =vector-effect "non-scaling-stroke"
3334+ :: =stroke bg
3335+ =fill "none";
3336+ ;path
3337+ =d "M-0.00280762 0L127.997 128"
3338+ =vector-effect "non-scaling-stroke"
3339+ :: =stroke bg
3340+ :: =stroke-linecap "square"
3341+ =fill "none";
3342+ ==
3343+::
3344+ :- 'fyn'
3345+ |= [fg=tape bg=tape]
3346+ :~ ;path
3347+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3348+ :: =fill fg
3349+ =vector-effect "non-scaling-stroke";
3350+ :: =stroke bg
3351+ :: =stroke-width "0.5"
3352+ ;path
3353+ =d "M128 0L0 128"
3354+ =vector-effect "non-scaling-stroke"
3355+ :: =stroke bg
3356+ :: =stroke-linecap "square"
3357+ =fill "none";
3358+ ==
3359+::
3360+ :- 'fyr'
3361+ |= [fg=tape bg=tape]
3362+ :~ ;path
3363+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
3364+ :: =fill fg
3365+ =vector-effect "non-scaling-stroke";
3366+ :: =stroke bg
3367+ :: =stroke-width "0.5"
3368+ ;path
3369+ =d "M-0.00268555 0L127.997 128"
3370+ =vector-effect "non-scaling-stroke"
3371+ :: =stroke bg
3372+ :: =stroke-linecap "square"
3373+ =fill "none";
3374+ ;line
3375+ =y1 "-0.5"
3376+ =x2 "45.2548"
3377+ =y2 "-0.5"
3378+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.6499 47.6499)"
3379+ =vector-effect "non-scaling-stroke"
3380+ :: =stroke bg
3381+ =fill "none";
3382+ ==
3383+::
3384+ :- 'hab'
3385+ |= [fg=tape bg=tape]
3386+ :~ ;path
3387+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
3388+ :: =fill fg
3389+ =vector-effect "non-scaling-stroke";
3390+ :: =stroke bg
3391+ :: =stroke-width "0.5"
3392+ ;line
3393+ =x1 "0.5"
3394+ =y1 "-0.5"
3395+ =x2 "181.5"
3396+ =y2 "-0.5"
3397+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
3398+ =vector-effect "non-scaling-stroke"
3399+ :: =stroke bg
3400+ :: =stroke-linecap "square"
3401+ =fill "none";
3402+ ;path
3403+ =d "M60.1244 67.3837C41.5063 48.7657 32.1342 24.4031 32.0079 0.00145601M82.7518 44.7563C70.3822 32.3867 64.1344 16.2134 64.0086 0.00145196M105.379 22.1289C99.258 16.0077 96.1351 8.02351 96.0105 0.00145196"
3404+ =vector-effect "non-scaling-stroke"
3405+ :: =stroke bg
3406+ =fill "none";
3407+ ;circle
3408+ =cx "16"
3409+ =cy "112"
3410+ =r "11.5"
3411+ =fill bg
3412+ =vector-effect "non-scaling-stroke";
3413+ :: =stroke bg
3414+ ;circle
3415+ =cx "16"
3416+ =cy "112"
3417+ =r "9"
3418+ :: =fill fg
3419+ =vector-effect "non-scaling-stroke"
3420+ =stroke fg;
3421+ :: =stroke-width "2"
3422+ ==
3423+::
3424+ :- 'hac'
3425+ |= [fg=tape bg=tape]
3426+ :~ ;path
3427+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
3428+ :: =fill fg
3429+ =vector-effect "non-scaling-stroke";
3430+ :: =stroke bg
3431+ :: =stroke-width "0.5"
3432+ ;line
3433+ =x1 "0.5"
3434+ =y1 "-0.5"
3435+ =x2 "181.5"
3436+ =y2 "-0.5"
3437+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
3438+ =vector-effect "non-scaling-stroke"
3439+ :: =stroke bg
3440+ :: =stroke-linecap "square"
3441+ =fill "none";
3442+ ;circle
3443+ =cx "64"
3444+ =cy "64"
3445+ =r "32"
3446+ =vector-effect "non-scaling-stroke"
3447+ :: =stroke bg
3448+ =fill "none";
3449+ ;circle
3450+ =cx "64"
3451+ =cy "64"
3452+ =r "11.5"
3453+ :: =fill fg
3454+ =vector-effect "non-scaling-stroke"
3455+ =stroke fg;
3456+ ;circle
3457+ =cx "64"
3458+ =cy "64"
3459+ =r "9"
3460+ =fill bg
3461+ =vector-effect "non-scaling-stroke";
3462+ :: =stroke bg
3463+ :: =stroke-width "2"
3464+ ==
3465+::
3466+ :- 'had'
3467+ |= [fg=tape bg=tape]
3468+ :~ ;path
3469+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3470+ :: =fill fg
3471+ =vector-effect "non-scaling-stroke";
3472+ :: =stroke bg
3473+ :: =stroke-width "0.5"
3474+ ;circle
3475+ =cx "32"
3476+ =cy "32"
3477+ =r "11.5"
3478+ :: =fill fg
3479+ =vector-effect "non-scaling-stroke"
3480+ =stroke fg;
3481+ ;circle
3482+ =cx "32"
3483+ =cy "32"
3484+ =r "9"
3485+ =fill bg
3486+ =vector-effect "non-scaling-stroke";
3487+ :: =stroke bg
3488+ :: =stroke-width "2"
3489+ ==
3490+::
3491+ :- 'hal'
3492+ |= [fg=tape bg=tape]
3493+ :~ ;path
3494+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
3495+ :: =fill fg
3496+ =vector-effect "non-scaling-stroke";
3497+ :: =stroke bg
3498+ :: =stroke-width "0.5"
3499+ ;line
3500+ =x1 "64.5"
3501+ =y1 "-0.5"
3502+ =x2 "64.5"
3503+ =y2 "127.5"
3504+ =vector-effect "non-scaling-stroke"
3505+ :: =stroke bg
3506+ =fill "none";
3507+ ;path
3508+ =d "M16 64C16 90.5097 37.4903 112 64 112"
3509+ =vector-effect "non-scaling-stroke"
3510+ :: =stroke bg
3511+ =fill "none";
3512+ ;path
3513+ =d "M112 64C112 37.4903 90.5097 16 64 16"
3514+ =vector-effect "non-scaling-stroke"
3515+ :: =stroke bg
3516+ =fill "none";
3517+ ==
3518+::
3519+ :- 'han'
3520+ |= [fg=tape bg=tape]
3521+ :~ ;path
3522+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
3523+ :: =fill fg
3524+ =vector-effect "non-scaling-stroke";
3525+ :: =stroke bg
3526+ :: =stroke-width "0.5"
3527+ ==
3528+::
3529+ :- 'hap'
3530+ |= [fg=tape bg=tape]
3531+ :~ ;circle
3532+ =cx "64"
3533+ =cy "64"
3534+ =r "64"
3535+ :: =fill fg
3536+ =vector-effect "non-scaling-stroke";
3537+ :: =stroke bg
3538+ :: =stroke-width "0.5"
3539+ ;circle
3540+ =cx "64"
3541+ =cy "64"
3542+ =r "32"
3543+ =vector-effect "non-scaling-stroke"
3544+ :: =stroke bg
3545+ =fill "none";
3546+ ;circle
3547+ =cx "64"
3548+ =cy "64"
3549+ =r "48"
3550+ =vector-effect "non-scaling-stroke"
3551+ :: =stroke bg
3552+ =fill "none";
3553+ ;path
3554+ =d "M-0.00292969 0L127.997 128"
3555+ =vector-effect "non-scaling-stroke"
3556+ :: =stroke bg
3557+ :: =stroke-linecap "square"
3558+ =fill "none";
3559+ ;circle
3560+ =cx "64"
3561+ =cy "64"
3562+ =r "11.5"
3563+ :: =fill fg
3564+ =vector-effect "non-scaling-stroke"
3565+ =stroke fg;
3566+ ;circle
3567+ =cx "64"
3568+ =cy "64"
3569+ =r "9"
3570+ =fill bg
3571+ =vector-effect "non-scaling-stroke";
3572+ :: =stroke bg
3573+ :: =stroke-width "2"
3574+ ==
3575+::
3576+ :- 'har'
3577+ |= [fg=tape bg=tape]
3578+ :~ ;circle
3579+ =cx "64"
3580+ =cy "64"
3581+ =r "64"
3582+ :: =fill fg
3583+ =vector-effect "non-scaling-stroke";
3584+ :: =stroke bg
3585+ :: =stroke-width "0.5"
3586+ ;line
3587+ =x1 "64"
3588+ =y1 "2.18557e-08"
3589+ =x2 "64"
3590+ =y2 "128"
3591+ =vector-effect "non-scaling-stroke"
3592+ :: =stroke bg
3593+ =fill "none";
3594+ ;circle
3595+ =cx "64"
3596+ =cy "64"
3597+ =r "16"
3598+ =vector-effect "non-scaling-stroke"
3599+ :: =stroke bg
3600+ =fill "none";
3601+ ==
3602+::
3603+ :- 'has'
3604+ |= [fg=tape bg=tape]
3605+ :~ ;rect
3606+ =width "128"
3607+ =height "128"
3608+ :: =fill fg
3609+ =vector-effect "non-scaling-stroke";
3610+ :: =stroke bg
3611+ :: =stroke-width "0.5"
3612+ ;circle
3613+ =cx "64"
3614+ =cy "64"
3615+ =r "32"
3616+ =vector-effect "non-scaling-stroke"
3617+ :: =stroke bg
3618+ =fill "none";
3619+ ;circle
3620+ =cx "64"
3621+ =cy "32"
3622+ =r "11.5"
3623+ :: =fill fg
3624+ =vector-effect "non-scaling-stroke"
3625+ =stroke fg;
3626+ ;circle
3627+ =cx "64"
3628+ =cy "32"
3629+ =r "9"
3630+ =fill bg
3631+ =vector-effect "non-scaling-stroke";
3632+ :: =stroke bg
3633+ :: =stroke-width "2"
3634+ ;circle
3635+ =cx "32"
3636+ =cy "64"
3637+ =r "11.5"
3638+ :: =fill fg
3639+ =vector-effect "non-scaling-stroke"
3640+ =stroke fg;
3641+ ;circle
3642+ =cx "32"
3643+ =cy "64"
3644+ =r "9"
3645+ =fill bg
3646+ =vector-effect "non-scaling-stroke";
3647+ :: =stroke bg
3648+ :: =stroke-width "2"
3649+ ==
3650+::
3651+ :- 'hat'
3652+ |= [fg=tape bg=tape]
3653+ :~ ;path
3654+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
3655+ :: =fill fg
3656+ =vector-effect "non-scaling-stroke";
3657+ :: =stroke bg
3658+ :: =stroke-width "0.5"
3659+ ;circle
3660+ =cx "16"
3661+ =cy "16"
3662+ =r "8"
3663+ :: =fill fg
3664+ =vector-effect "non-scaling-stroke"
3665+ =stroke fg;
3666+ ;line
3667+ =x1 "0.5"
3668+ =y1 "-0.5"
3669+ =x2 "181.5"
3670+ =y2 "-0.5"
3671+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
3672+ =vector-effect "non-scaling-stroke"
3673+ :: =stroke bg
3674+ :: =stroke-linecap "square"
3675+ =fill "none";
3676+ ;path
3677+ =fill-rule "evenodd"
3678+ =clip-rule "evenodd"
3679+ =stroke "none"
3680+ =d "M48 32C48 40.8366 40.8366 48 32 48C23.1634 48 16 40.8366 16 32C16 23.1634 23.1634 16 32 16C40.8366 16 48 23.1634 48 32ZM32 40C36.4183 40 40 36.4183 40 32C40 27.5817 36.4183 24 32 24C27.5817 24 24 27.5817 24 32C24 36.4183 27.5817 40 32 40Z"
3681+ =fill bg;
3682+ ==
3683+::
3684+ :- 'hav'
3685+ |= [fg=tape bg=tape]
3686+ :~ ;path
3687+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
3688+ :: =fill fg
3689+ =vector-effect "non-scaling-stroke";
3690+ :: =stroke bg
3691+ :: =stroke-width "0.5"
3692+ ;line
3693+ =x1 "96"
3694+ =y1 "2.18557e-08"
3695+ =x2 "96"
3696+ =y2 "128"
3697+ =vector-effect "non-scaling-stroke"
3698+ :: =stroke bg
3699+ =fill "none";
3700+ ==
3701+::
3702+ :- 'heb'
3703+ |= [fg=tape bg=tape]
3704+ :~ ;rect
3705+ =width "128"
3706+ =height "128"
3707+ :: =fill fg
3708+ =vector-effect "non-scaling-stroke";
3709+ :: =stroke bg
3710+ :: =stroke-width "0.5"
3711+ ;path
3712+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
3713+ =vector-effect "non-scaling-stroke"
3714+ :: =stroke bg
3715+ =fill "none";
3716+ ==
3717+::
3718+ :- 'hec'
3719+ |= [fg=tape bg=tape]
3720+ :~ ;path
3721+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
3722+ :: =fill fg
3723+ =vector-effect "non-scaling-stroke";
3724+ :: =stroke bg
3725+ :: =stroke-width "0.5"
3726+ ;circle
3727+ =cx "32"
3728+ =cy "32"
3729+ =r "11.5"
3730+ :: =fill fg
3731+ =vector-effect "non-scaling-stroke"
3732+ =stroke fg;
3733+ ;circle
3734+ =cx "32"
3735+ =cy "32"
3736+ =r "9"
3737+ =fill bg
3738+ =vector-effect "non-scaling-stroke";
3739+ :: =stroke bg
3740+ :: =stroke-width "2"
3741+ ;circle
3742+ =cx "32"
3743+ =cy "96"
3744+ =r "11.5"
3745+ :: =fill fg
3746+ =vector-effect "non-scaling-stroke"
3747+ =stroke fg;
3748+ ;circle
3749+ =cx "32"
3750+ =cy "96"
3751+ =r "9"
3752+ =fill bg
3753+ =vector-effect "non-scaling-stroke";
3754+ :: =stroke bg
3755+ :: =stroke-width "2"
3756+ ;circle
3757+ =cx "96"
3758+ =cy "96"
3759+ =r "11.5"
3760+ :: =fill fg
3761+ =vector-effect "non-scaling-stroke"
3762+ =stroke fg;
3763+ ;circle
3764+ =cx "96"
3765+ =cy "96"
3766+ =r "9"
3767+ =fill bg
3768+ =vector-effect "non-scaling-stroke";
3769+ :: =stroke bg
3770+ :: =stroke-width "2"
3771+ ==
3772+::
3773+ :- 'hep'
3774+ |= [fg=tape bg=tape]
3775+ :~ ;path
3776+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
3777+ :: =fill fg
3778+ =vector-effect "non-scaling-stroke";
3779+ :: =stroke bg
3780+ :: =stroke-width "0.5"
3781+ ;line
3782+ =x1 "-0.00285417"
3783+ =x2 "127.983"
3784+ =y2 "127.986"
3785+ =vector-effect "non-scaling-stroke"
3786+ :: =stroke bg
3787+ :: =stroke-linecap "square"
3788+ =fill "none";
3789+ ;path
3790+ =d "M-0.00292969 0L127.997 128"
3791+ =vector-effect "non-scaling-stroke"
3792+ :: =stroke bg
3793+ :: =stroke-linecap "square"
3794+ =fill "none";
3795+ ==
3796+::
3797+ :- 'hes'
3798+ |= [fg=tape bg=tape]
3799+ :~ ;path
3800+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
3801+ :: =fill fg
3802+ =vector-effect "non-scaling-stroke";
3803+ :: =stroke bg
3804+ :: =stroke-width "0.5"
3805+ ;path
3806+ =d "M32 0L32 128"
3807+ =vector-effect "non-scaling-stroke"
3808+ :: =stroke bg
3809+ =fill "none";
3810+ ;path
3811+ =fill-rule "evenodd"
3812+ =clip-rule "evenodd"
3813+ =stroke "none"
3814+ =d "M48 96C48 104.837 40.8366 112 32 112C23.1634 112 16 104.837 16 96C16 87.1634 23.1634 80 32 80C40.8366 80 48 87.1634 48 96ZM32 104C36.4183 104 40 100.418 40 96C40 91.5817 36.4183 88 32 88C27.5817 88 24 91.5817 24 96C24 100.418 27.5817 104 32 104Z"
3815+ =fill bg;
3816+ ==
3817+::
3818+ :- 'het'
3819+ |= [fg=tape bg=tape]
3820+ :~ ;circle
3821+ =cx "64"
3822+ =cy "64"
3823+ =r "64"
3824+ :: =fill fg
3825+ =vector-effect "non-scaling-stroke";
3826+ :: =stroke bg
3827+ :: =stroke-width "0.5"
3828+ ;path
3829+ =d "M96 128L96 0"
3830+ =vector-effect "non-scaling-stroke"
3831+ :: =stroke bg
3832+ =fill "none";
3833+ ==
3834+::
3835+ :- 'hex'
3836+ |= [fg=tape bg=tape]
3837+ :~ ;path
3838+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
3839+ :: =fill fg
3840+ =vector-effect "non-scaling-stroke";
3841+ :: =stroke bg
3842+ :: =stroke-width "0.5"
3843+ ;path
3844+ =d "M128 0L0 128"
3845+ =vector-effect "non-scaling-stroke"
3846+ :: =stroke bg
3847+ :: =stroke-linecap "square"
3848+ =fill "none";
3849+ ;path
3850+ =fill-rule "evenodd"
3851+ =clip-rule "evenodd"
3852+ =stroke "none"
3853+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
3854+ =fill bg;
3855+ ==
3856+::
3857+ :- 'hid'
3858+ |= [fg=tape bg=tape]
3859+ :~ ;path
3860+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
3861+ :: =fill fg
3862+ =vector-effect "non-scaling-stroke";
3863+ :: =stroke bg
3864+ :: =stroke-width "0.5"
3865+ ;path
3866+ =d "M-0.00292969 0L127.997 128"
3867+ =vector-effect "non-scaling-stroke"
3868+ :: =stroke bg
3869+ :: =stroke-linecap "square"
3870+ =fill "none";
3871+ ;path
3872+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
3873+ =vector-effect "non-scaling-stroke"
3874+ :: =stroke bg
3875+ =fill "none";
3876+ ;path
3877+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
3878+ =vector-effect "non-scaling-stroke"
3879+ :: =stroke bg
3880+ =fill "none";
3881+ ;path
3882+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
3883+ =vector-effect "non-scaling-stroke"
3884+ :: =stroke bg
3885+ =fill "none";
3886+ ;path
3887+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
3888+ =vector-effect "non-scaling-stroke"
3889+ :: =stroke bg
3890+ =fill "none";
3891+ ==
3892+::
3893+ :- 'hil'
3894+ |= [fg=tape bg=tape]
3895+ :~ ;path
3896+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
3897+ :: =fill fg
3898+ =vector-effect "non-scaling-stroke";
3899+ :: =stroke bg
3900+ :: =stroke-width "0.5"
3901+ ;line
3902+ =x1 "8.74228e-08"
3903+ =y1 "64"
3904+ =x2 "128"
3905+ =y2 "64"
3906+ =vector-effect "non-scaling-stroke"
3907+ :: =stroke bg
3908+ =fill "none";
3909+ ;line
3910+ =x1 "64"
3911+ =y1 "2.18557e-08"
3912+ =x2 "64"
3913+ =y2 "128"
3914+ =vector-effect "non-scaling-stroke"
3915+ :: =stroke bg
3916+ =fill "none";
3917+ ==
3918+::
3919+ :- 'hin'
3920+ |= [fg=tape bg=tape]
3921+ :~ ;rect
3922+ =width "128"
3923+ =height "128"
3924+ :: =fill fg
3925+ =vector-effect "non-scaling-stroke";
3926+ :: =stroke bg
3927+ :: =stroke-width "0.5"
3928+ ;line
3929+ =x1 "32"
3930+ =y1 "2.18557e-08"
3931+ =x2 "32"
3932+ =y2 "128"
3933+ =vector-effect "non-scaling-stroke"
3934+ :: =stroke bg
3935+ =fill "none";
3936+ ;path
3937+ =fill-rule "evenodd"
3938+ =clip-rule "evenodd"
3939+ =stroke "none"
3940+ =d "M48 64C48 72.8366 40.8366 80 32 80C23.1634 80 16 72.8366 16 64C16 55.1634 23.1634 48 32 48C40.8366 48 48 55.1634 48 64ZM32 72C36.4183 72 40 68.4183 40 64C40 59.5817 36.4183 56 32 56C27.5817 56 24 59.5817 24 64C24 68.4183 27.5817 72 32 72Z"
3941+ =fill bg;
3942+ ==
3943+::
3944+ :- 'hob'
3945+ |= [fg=tape bg=tape]
3946+ :~ ;path
3947+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
3948+ :: =fill fg
3949+ =vector-effect "non-scaling-stroke";
3950+ :: =stroke bg
3951+ :: =stroke-width "0.5"
3952+ ;line
3953+ =x1 "128"
3954+ =y1 "64"
3955+ =x2 "-4.37114e-08"
3956+ =y2 "64"
3957+ =vector-effect "non-scaling-stroke"
3958+ :: =stroke bg
3959+ =fill "none";
3960+ ==
3961+::
3962+ :- 'hoc'
3963+ |= [fg=tape bg=tape]
3964+ :~ ;path
3965+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
3966+ :: =fill fg
3967+ =vector-effect "non-scaling-stroke";
3968+ :: =stroke bg
3969+ :: =stroke-width "0.5"
3970+ ;line
3971+ =y1 "-0.5"
3972+ =x2 "45.2548"
3973+ =y2 "-0.5"
3974+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
3975+ =vector-effect "non-scaling-stroke"
3976+ :: =stroke bg
3977+ =fill "none";
3978+ ;circle
3979+ =cx "64"
3980+ =cy "64"
3981+ =r "11.5"
3982+ :: =fill fg
3983+ =vector-effect "non-scaling-stroke"
3984+ =stroke fg;
3985+ ;circle
3986+ =cx "64"
3987+ =cy "64"
3988+ =r "9"
3989+ =fill bg
3990+ =vector-effect "non-scaling-stroke";
3991+ :: =stroke bg
3992+ :: =stroke-width "2"
3993+ ==
3994+::
3995+ :- 'hod'
3996+ |= [fg=tape bg=tape]
3997+ :~ ;path
3998+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
3999+ :: =fill fg
4000+ =vector-effect "non-scaling-stroke";
4001+ :: =stroke bg
4002+ :: =stroke-width "0.5"
4003+ ;path
4004+ =d "M32 0L32 128"
4005+ =vector-effect "non-scaling-stroke"
4006+ :: =stroke bg
4007+ =fill "none";
4008+ ==
4009+::
4010+ :- 'hol'
4011+ |= [fg=tape bg=tape]
4012+ :~ ;circle
4013+ =cx "64"
4014+ =cy "64"
4015+ =r "64"
4016+ :: =fill fg
4017+ =vector-effect "non-scaling-stroke";
4018+ :: =stroke bg
4019+ :: =stroke-width "0.5"
4020+ ;line
4021+ =x1 "128"
4022+ =y1 "64"
4023+ =x2 "-4.37114e-08"
4024+ =y2 "64"
4025+ =vector-effect "non-scaling-stroke"
4026+ :: =stroke bg
4027+ =fill "none";
4028+ ;circle
4029+ =cx "64"
4030+ =cy "64"
4031+ =r "16"
4032+ =vector-effect "non-scaling-stroke"
4033+ :: =stroke bg
4034+ =fill "none";
4035+ ;circle
4036+ =cx "64"
4037+ =cy "96"
4038+ =r "11.5"
4039+ :: =fill fg
4040+ =vector-effect "non-scaling-stroke"
4041+ =stroke fg;
4042+ ;circle
4043+ =cx "64"
4044+ =cy "96"
4045+ =r "9"
4046+ =fill bg
4047+ =vector-effect "non-scaling-stroke";
4048+ :: =stroke bg
4049+ :: =stroke-width "2"
4050+ ==
4051+::
4052+ :- 'hop'
4053+ |= [fg=tape bg=tape]
4054+ :~ ;circle
4055+ =cx "64"
4056+ =cy "64"
4057+ =r "64"
4058+ :: =fill fg
4059+ =vector-effect "non-scaling-stroke";
4060+ :: =stroke bg
4061+ :: =stroke-width "0.5"
4062+ ;path
4063+ =d "M128 64L0 64"
4064+ =vector-effect "non-scaling-stroke"
4065+ :: =stroke bg
4066+ =fill "none";
4067+ ;path
4068+ =d "M64 96C81.6731 96 96 81.6731 96 64C96 46.3269 81.6731 32 64 32"
4069+ =vector-effect "non-scaling-stroke"
4070+ :: =stroke bg
4071+ =fill "none";
4072+ ;circle
4073+ =cx "64"
4074+ =cy "64"
4075+ =r "11.5"
4076+ :: =fill fg
4077+ =vector-effect "non-scaling-stroke"
4078+ =stroke fg;
4079+ ;circle
4080+ =cx "64"
4081+ =cy "64"
4082+ =r "9"
4083+ =fill bg
4084+ =vector-effect "non-scaling-stroke";
4085+ :: =stroke bg
4086+ :: =stroke-width "2"
4087+ ==
4088+::
4089+ :- 'hos'
4090+ |= [fg=tape bg=tape]
4091+ :~ ;path
4092+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
4093+ :: =fill fg
4094+ =vector-effect "non-scaling-stroke";
4095+ :: =stroke bg
4096+ :: =stroke-width "0.5"
4097+ ;line
4098+ =x1 "80.0036"
4099+ =y1 "79.9965"
4100+ =x2 "112.004"
4101+ =y2 "111.997"
4102+ =vector-effect "non-scaling-stroke"
4103+ :: =stroke bg
4104+ =fill "none";
4105+ ;line
4106+ =x1 "16.0036"
4107+ =y1 "15.9965"
4108+ =x2 "48.0036"
4109+ =y2 "47.9965"
4110+ =vector-effect "non-scaling-stroke"
4111+ :: =stroke bg
4112+ =fill "none";
4113+ ;circle
4114+ =cx "48"
4115+ =cy "48"
4116+ =r "11.5"
4117+ :: =fill fg
4118+ =vector-effect "non-scaling-stroke"
4119+ =stroke fg;
4120+ ;circle
4121+ =cx "48"
4122+ =cy "48"
4123+ =r "9"
4124+ =fill bg
4125+ =vector-effect "non-scaling-stroke";
4126+ :: =stroke bg
4127+ :: =stroke-width "2"
4128+ ;circle
4129+ =cx "80"
4130+ =cy "47"
4131+ =r "11.5"
4132+ :: =fill fg
4133+ =vector-effect "non-scaling-stroke"
4134+ =stroke fg;
4135+ ;circle
4136+ =cx "80"
4137+ =cy "47"
4138+ =r "9"
4139+ =fill bg
4140+ =vector-effect "non-scaling-stroke";
4141+ :: =stroke bg
4142+ :: =stroke-width "2"
4143+ ;circle
4144+ =cx "80"
4145+ =cy "81"
4146+ =r "11.5"
4147+ :: =fill fg
4148+ =vector-effect "non-scaling-stroke"
4149+ =stroke fg;
4150+ ;circle
4151+ =cx "80"
4152+ =cy "81"
4153+ =r "9"
4154+ =fill bg
4155+ =vector-effect "non-scaling-stroke";
4156+ :: =stroke bg
4157+ :: =stroke-width "2"
4158+ ;circle
4159+ =cx "48"
4160+ =cy "80"
4161+ =r "11.5"
4162+ :: =fill fg
4163+ =vector-effect "non-scaling-stroke"
4164+ =stroke fg;
4165+ ;circle
4166+ =cx "48"
4167+ =cy "80"
4168+ =r "9"
4169+ =fill bg
4170+ =vector-effect "non-scaling-stroke";
4171+ :: =stroke bg
4172+ :: =stroke-width "2"
4173+ ==
4174+::
4175+ :- 'hul'
4176+ |= [fg=tape bg=tape]
4177+ :~ ;circle
4178+ =cx "64"
4179+ =cy "64"
4180+ =r "64"
4181+ :: =fill fg
4182+ =vector-effect "non-scaling-stroke";
4183+ :: =stroke bg
4184+ :: =stroke-width "0.5"
4185+ ;circle
4186+ =cx "64"
4187+ =cy "64"
4188+ =r "32"
4189+ =vector-effect "non-scaling-stroke"
4190+ :: =stroke bg
4191+ =fill "none";
4192+ ;circle
4193+ =cx "48"
4194+ =cy "64"
4195+ =r "11.5"
4196+ :: =fill fg
4197+ =vector-effect "non-scaling-stroke"
4198+ =stroke fg;
4199+ ;circle
4200+ =cx "48"
4201+ =cy "64"
4202+ =r "9"
4203+ =fill bg
4204+ =vector-effect "non-scaling-stroke";
4205+ :: =stroke bg
4206+ :: =stroke-width "2"
4207+ ==
4208+::
4209+ :- 'hus'
4210+ |= [fg=tape bg=tape]
4211+ :~ ;path
4212+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
4213+ :: =fill fg
4214+ =vector-effect "non-scaling-stroke";
4215+ :: =stroke bg
4216+ :: =stroke-width "0.5"
4217+ ;path
4218+ =d "M-0.00292969 0L127.997 128"
4219+ =vector-effect "non-scaling-stroke"
4220+ :: =stroke bg
4221+ :: =stroke-linecap "square"
4222+ =fill "none";
4223+ ;path
4224+ =d "M64 96C46.3269 96 32 81.6731 32 64"
4225+ =vector-effect "non-scaling-stroke"
4226+ :: =stroke bg
4227+ =fill "none";
4228+ ;circle
4229+ =cx "64"
4230+ =cy "64"
4231+ =r "11.5"
4232+ :: =fill fg
4233+ =vector-effect "non-scaling-stroke"
4234+ =stroke fg;
4235+ ;circle
4236+ =cx "64"
4237+ =cy "64"
4238+ =r "9"
4239+ =fill bg
4240+ =vector-effect "non-scaling-stroke";
4241+ :: =stroke bg
4242+ :: =stroke-width "2"
4243+ ==
4244+::
4245+ :- 'hut'
4246+ |= [fg=tape bg=tape]
4247+ :~ ;rect
4248+ =width "128"
4249+ =height "128"
4250+ :: =fill fg
4251+ =vector-effect "non-scaling-stroke";
4252+ :: =stroke bg
4253+ :: =stroke-width "0.5"
4254+ ;circle
4255+ =cx "64"
4256+ =cy "64"
4257+ =r "48"
4258+ =vector-effect "non-scaling-stroke"
4259+ :: =stroke bg
4260+ =fill "none";
4261+ ;circle
4262+ =cx "32"
4263+ =cy "32"
4264+ =r "11.5"
4265+ :: =fill fg
4266+ =vector-effect "non-scaling-stroke"
4267+ =stroke fg;
4268+ ;circle
4269+ =cx "32"
4270+ =cy "32"
4271+ =r "9"
4272+ =fill bg
4273+ =vector-effect "non-scaling-stroke";
4274+ :: =stroke bg
4275+ :: =stroke-width "2"
4276+ ;circle
4277+ =cx "96"
4278+ =cy "96"
4279+ =r "11.5"
4280+ :: =fill fg
4281+ =vector-effect "non-scaling-stroke"
4282+ =stroke fg;
4283+ ;circle
4284+ =cx "96"
4285+ =cy "96"
4286+ =r "9"
4287+ =fill bg
4288+ =vector-effect "non-scaling-stroke";
4289+ :: =stroke bg
4290+ :: =stroke-width "2"
4291+ ==
4292+::
4293+ :- 'lab'
4294+ |= [fg=tape bg=tape]
4295+ :~ ;path
4296+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
4297+ :: =fill fg
4298+ =vector-effect "non-scaling-stroke";
4299+ :: =stroke bg
4300+ :: =stroke-width "0.5"
4301+ ;line
4302+ =x1 "-0.0029152"
4303+ =x2 "127.983"
4304+ =y2 "127.986"
4305+ =vector-effect "non-scaling-stroke"
4306+ :: =stroke bg
4307+ :: =stroke-linecap "square"
4308+ =fill "none";
4309+ ;line
4310+ =y1 "-0.5"
4311+ =x2 "45.2548"
4312+ =y2 "-0.5"
4313+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
4314+ =vector-effect "non-scaling-stroke"
4315+ :: =stroke bg
4316+ =fill "none";
4317+ ;line
4318+ =x1 "15.9964"
4319+ =y1 "111.997"
4320+ =x2 "47.9964"
4321+ =y2 "79.9965"
4322+ =vector-effect "non-scaling-stroke"
4323+ :: =stroke bg
4324+ =fill "none";
4325+ ==
4326+::
4327+ :- 'lac'
4328+ |= [fg=tape bg=tape]
4329+ :~ ;path
4330+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
4331+ :: =fill fg
4332+ =vector-effect "non-scaling-stroke";
4333+ :: =stroke bg
4334+ :: =stroke-width "0.5"
4335+ ;path
4336+ =d "M64 -9.40976e-06C64 70.6924 92.6538 128 128 128"
4337+ =vector-effect "non-scaling-stroke"
4338+ :: =stroke bg
4339+ =fill "none";
4340+ ;path
4341+ =d "M32 -7.63193e-07C32 70.6924 74.9807 128 128 128"
4342+ =vector-effect "non-scaling-stroke"
4343+ :: =stroke bg
4344+ =fill "none";
4345+ ;path
4346+ =d "M128 64L0 64"
4347+ =vector-effect "non-scaling-stroke"
4348+ :: =stroke bg
4349+ =fill "none";
4350+ ==
4351+::
4352+ :- 'lad'
4353+ |= [fg=tape bg=tape]
4354+ :~ ;path
4355+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
4356+ :: =fill fg
4357+ =vector-effect "non-scaling-stroke";
4358+ :: =stroke bg
4359+ :: =stroke-width "0.5"
4360+ ;line
4361+ =x1 "95.35"
4362+ =y1 "32.7071"
4363+ =x2 "32.0571"
4364+ =y2 "96"
4365+ =vector-effect "non-scaling-stroke"
4366+ :: =stroke bg
4367+ :: =stroke-linecap "square"
4368+ =fill "none";
4369+ ;circle
4370+ =cx "96"
4371+ =cy "32"
4372+ =r "11.5"
4373+ :: =fill fg
4374+ =vector-effect "non-scaling-stroke"
4375+ =stroke fg;
4376+ ;circle
4377+ =cx "96"
4378+ =cy "32"
4379+ =r "9"
4380+ =fill bg
4381+ =vector-effect "non-scaling-stroke";
4382+ :: =stroke bg
4383+ :: =stroke-width "2"
4384+ ;circle
4385+ =cx "32"
4386+ =cy "96"
4387+ =r "11.5"
4388+ :: =fill fg
4389+ =vector-effect "non-scaling-stroke"
4390+ =stroke fg;
4391+ ;circle
4392+ =cx "32"
4393+ =cy "96"
4394+ =r "9"
4395+ =fill bg
4396+ =vector-effect "non-scaling-stroke";
4397+ :: =stroke bg
4398+ :: =stroke-width "2"
4399+ ==
4400+::
4401+ :- 'lag'
4402+ |= [fg=tape bg=tape]
4403+ :~ ;path
4404+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
4405+ :: =fill fg
4406+ =vector-effect "non-scaling-stroke";
4407+ :: =stroke bg
4408+ :: =stroke-width "0.5"
4409+ ;path
4410+ =d "M64 112C90.5097 112 112 90.5097 112 64"
4411+ =vector-effect "non-scaling-stroke"
4412+ :: =stroke bg
4413+ =fill "none";
4414+ ==
4415+::
4416+ :- 'lan'
4417+ |= [fg=tape bg=tape]
4418+ :~ ;path
4419+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
4420+ :: =fill fg
4421+ =vector-effect "non-scaling-stroke";
4422+ :: =stroke bg
4423+ :: =stroke-width "0.5"
4424+ ;line
4425+ =x1 "64"
4426+ =y1 "2.18557e-08"
4427+ =x2 "64"
4428+ =y2 "128"
4429+ =vector-effect "non-scaling-stroke"
4430+ :: =stroke bg
4431+ =fill "none";
4432+ ;line
4433+ =x1 "32"
4434+ =y1 "2.18557e-08"
4435+ =x2 "32"
4436+ =y2 "128"
4437+ =vector-effect "non-scaling-stroke"
4438+ :: =stroke bg
4439+ =fill "none";
4440+ ;circle
4441+ =cx "64"
4442+ =cy "64"
4443+ =r "16"
4444+ =vector-effect "non-scaling-stroke"
4445+ :: =stroke bg
4446+ =fill "none";
4447+ ==
4448+::
4449+ :- 'lap'
4450+ |= [fg=tape bg=tape]
4451+ :~ ;path
4452+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
4453+ :: =fill fg
4454+ =vector-effect "non-scaling-stroke";
4455+ :: =stroke bg
4456+ :: =stroke-width "0.5"
4457+ ;path
4458+ =d "M112 64C112 37.4903 90.5097 16 64 16"
4459+ =vector-effect "non-scaling-stroke"
4460+ :: =stroke bg
4461+ =fill "none";
4462+ ;circle
4463+ =cx "112"
4464+ =cy "64"
4465+ =r "11.5"
4466+ :: =fill fg
4467+ =vector-effect "non-scaling-stroke"
4468+ =stroke fg;
4469+ ;circle
4470+ =cx "112"
4471+ =cy "64"
4472+ =r "9"
4473+ =fill bg
4474+ =vector-effect "non-scaling-stroke";
4475+ :: =stroke bg
4476+ :: =stroke-width "2"
4477+ ==
4478+::
4479+ :- 'lar'
4480+ |= [fg=tape bg=tape]
4481+ :~ ;circle
4482+ =cx "64"
4483+ =cy "64"
4484+ =r "64"
4485+ :: =fill fg
4486+ =vector-effect "non-scaling-stroke";
4487+ :: =stroke bg
4488+ :: =stroke-width "0.5"
4489+ ;line
4490+ =x1 "2.78181e-08"
4491+ =y1 "64"
4492+ =x2 "128"
4493+ =y2 "64"
4494+ =vector-effect "non-scaling-stroke"
4495+ :: =stroke bg
4496+ =fill "none";
4497+ ;circle
4498+ =cx "64"
4499+ =cy "64"
4500+ =r "16"
4501+ =vector-effect "non-scaling-stroke"
4502+ :: =stroke bg
4503+ =fill "none";
4504+ ;circle
4505+ =cx "64"
4506+ =cy "96"
4507+ =r "11.5"
4508+ :: =fill fg
4509+ =vector-effect "non-scaling-stroke"
4510+ =stroke fg;
4511+ ;circle
4512+ =cx "64"
4513+ =cy "96"
4514+ =r "9"
4515+ =fill bg
4516+ =vector-effect "non-scaling-stroke";
4517+ :: =stroke bg
4518+ :: =stroke-width "2"
4519+ ;circle
4520+ =cx "64"
4521+ =cy "32"
4522+ =r "11.5"
4523+ :: =fill fg
4524+ =vector-effect "non-scaling-stroke"
4525+ =stroke fg;
4526+ ;circle
4527+ =cx "64"
4528+ =cy "32"
4529+ =r "9"
4530+ =fill bg
4531+ =vector-effect "non-scaling-stroke";
4532+ :: =stroke bg
4533+ :: =stroke-width "2"
4534+ ==
4535+::
4536+ :- 'las'
4537+ |= [fg=tape bg=tape]
4538+ :~ ;rect
4539+ =width "128"
4540+ =height "128"
4541+ :: =fill fg
4542+ =vector-effect "non-scaling-stroke";
4543+ :: =stroke bg
4544+ :: =stroke-width "0.5"
4545+ ;circle
4546+ =cx "64"
4547+ =cy "64"
4548+ =r "48"
4549+ =vector-effect "non-scaling-stroke"
4550+ :: =stroke bg
4551+ =fill "none";
4552+ ;circle
4553+ =cx "16"
4554+ =cy "64"
4555+ =r "11.5"
4556+ :: =fill fg
4557+ =vector-effect "non-scaling-stroke"
4558+ =stroke fg;
4559+ ;circle
4560+ =cx "16"
4561+ =cy "64"
4562+ =r "9"
4563+ =fill bg
4564+ =vector-effect "non-scaling-stroke";
4565+ :: =stroke bg
4566+ :: =stroke-width "2"
4567+ ==
4568+::
4569+ :- 'lat'
4570+ |= [fg=tape bg=tape]
4571+ :~ ;path
4572+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
4573+ :: =fill fg
4574+ =vector-effect "non-scaling-stroke";
4575+ :: =stroke bg
4576+ :: =stroke-width "0.5"
4577+ ;path
4578+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
4579+ =vector-effect "non-scaling-stroke"
4580+ :: =stroke bg
4581+ =fill "none";
4582+ ;path
4583+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
4584+ =vector-effect "non-scaling-stroke"
4585+ :: =stroke bg
4586+ =fill "none";
4587+ ;path
4588+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
4589+ =vector-effect "non-scaling-stroke"
4590+ :: =stroke bg
4591+ =fill "none";
4592+ ;path
4593+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
4594+ =vector-effect "non-scaling-stroke"
4595+ :: =stroke bg
4596+ =fill "none";
4597+ ==
4598+::
4599+ :- 'lav'
4600+ |= [fg=tape bg=tape]
4601+ :~ ;path
4602+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
4603+ :: =fill fg
4604+ =vector-effect "non-scaling-stroke";
4605+ :: =stroke bg
4606+ :: =stroke-width "0.5"
4607+ ;path
4608+ =d "M128 128C92.6489 128 60.6449 113.669 37.4807 90.5"
4609+ =vector-effect "non-scaling-stroke"
4610+ :: =stroke bg
4611+ =fill "none";
4612+ ;path
4613+ =d "M128 96C101.492 96 77.4939 85.2564 60.1217 67.8862"
4614+ =vector-effect "non-scaling-stroke"
4615+ :: =stroke bg
4616+ =fill "none";
4617+ ;path
4618+ =d "M128 64C110.328 64 94.3287 56.8374 82.7471 45.2568"
4619+ =vector-effect "non-scaling-stroke"
4620+ :: =stroke bg
4621+ =fill "none";
4622+ ;path
4623+ =d "M128 32.3716C119.164 32.3716 111.164 28.7903 105.374 23"
4624+ =vector-effect "non-scaling-stroke"
4625+ :: =stroke bg
4626+ =fill "none";
4627+ ==
4628+::
4629+ :- 'leb'
4630+ |= [fg=tape bg=tape]
4631+ :~ ;rect
4632+ =width "128"
4633+ =height "128"
4634+ :: =fill fg
4635+ =vector-effect "non-scaling-stroke";
4636+ :: =stroke bg
4637+ :: =stroke-width "0.5"
4638+ ;path
4639+ =d "M-1.64036e-05 32C53.0193 32 96 74.9807 96 128"
4640+ =vector-effect "non-scaling-stroke"
4641+ :: =stroke bg
4642+ =fill "none";
4643+ ==
4644+::
4645+ :- 'lec'
4646+ |= [fg=tape bg=tape]
4647+ :~ ;path
4648+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
4649+ :: =fill fg
4650+ =vector-effect "non-scaling-stroke";
4651+ :: =stroke bg
4652+ :: =stroke-width "0.5"
4653+ ;path
4654+ =d "M-0.00292969 0L127.997 128"
4655+ =vector-effect "non-scaling-stroke"
4656+ :: =stroke bg
4657+ :: =stroke-linecap "square"
4658+ =fill "none";
4659+ ;circle
4660+ =cx "64"
4661+ =cy "64"
4662+ =r "11.5"
4663+ :: =fill fg
4664+ =vector-effect "non-scaling-stroke"
4665+ =stroke fg;
4666+ ;circle
4667+ =cx "64"
4668+ =cy "64"
4669+ =r "9"
4670+ =fill bg
4671+ =vector-effect "non-scaling-stroke";
4672+ :: =stroke bg
4673+ :: =stroke-width "2"
4674+ ==
4675+::
4676+ :- 'led'
4677+ |= [fg=tape bg=tape]
4678+ :~ ;circle
4679+ =cx "64"
4680+ =cy "64"
4681+ =r "64"
4682+ :: =fill fg
4683+ =vector-effect "non-scaling-stroke";
4684+ :: =stroke bg
4685+ :: =stroke-width "0.5"
4686+ ;circle
4687+ =cx "64"
4688+ =cy "32"
4689+ =r "11.5"
4690+ :: =fill fg
4691+ =vector-effect "non-scaling-stroke"
4692+ =stroke fg;
4693+ ;circle
4694+ =cx "64"
4695+ =cy "32"
4696+ =r "9"
4697+ =fill bg
4698+ =vector-effect "non-scaling-stroke";
4699+ :: =stroke bg
4700+ :: =stroke-width "2"
4701+ ==
4702+::
4703+ :- 'leg'
4704+ |= [fg=tape bg=tape]
4705+ :~ ;rect
4706+ =width "128"
4707+ =height "128"
4708+ :: =fill fg
4709+ =vector-effect "non-scaling-stroke";
4710+ :: =stroke bg
4711+ :: =stroke-width "0.5"
4712+ ;path
4713+ =d "M7.63192e-07 32C17.6731 32 32 46.3269 32 64C32 81.6731 17.6731 96 0 96"
4714+ =vector-effect "non-scaling-stroke"
4715+ :: =stroke bg
4716+ =fill "none";
4717+ ==
4718+::
4719+ :- 'len'
4720+ |= [fg=tape bg=tape]
4721+ :~ ;rect
4722+ =width "128"
4723+ =height "128"
4724+ :: =fill fg
4725+ =vector-effect "non-scaling-stroke";
4726+ :: =stroke bg
4727+ :: =stroke-width "0.5"
4728+ ;circle
4729+ =cx "64"
4730+ =cy "64"
4731+ =r "48"
4732+ =vector-effect "non-scaling-stroke"
4733+ :: =stroke bg
4734+ =fill "none";
4735+ ;circle
4736+ =cx "64"
4737+ =cy "96"
4738+ =r "11.5"
4739+ :: =fill fg
4740+ =vector-effect "non-scaling-stroke"
4741+ =stroke fg;
4742+ ;circle
4743+ =cx "64"
4744+ =cy "96"
4745+ =r "9"
4746+ =fill bg
4747+ =vector-effect "non-scaling-stroke";
4748+ :: =stroke bg
4749+ :: =stroke-width "2"
4750+ ==
4751+::
4752+ :- 'lep'
4753+ |= [fg=tape bg=tape]
4754+ :~ ;path
4755+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
4756+ :: =fill fg
4757+ =vector-effect "non-scaling-stroke";
4758+ :: =stroke bg
4759+ :: =stroke-width "0.5"
4760+ ;path
4761+ =d "M128 96C110.327 96 96 110.327 96 128"
4762+ =vector-effect "non-scaling-stroke"
4763+ :: =stroke bg
4764+ =fill "none";
4765+ ==
4766+::
4767+ :- 'ler'
4768+ |= [fg=tape bg=tape]
4769+ :~ ;path
4770+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
4771+ :: =fill fg
4772+ =vector-effect "non-scaling-stroke";
4773+ :: =stroke bg
4774+ :: =stroke-width "0.5"
4775+ ;path
4776+ =d "M32 0L32 128"
4777+ =vector-effect "non-scaling-stroke"
4778+ :: =stroke bg
4779+ =fill "none";
4780+ ;circle
4781+ =cx "32"
4782+ =cy "32"
4783+ =r "11.5"
4784+ :: =fill fg
4785+ =vector-effect "non-scaling-stroke"
4786+ =stroke fg;
4787+ ;circle
4788+ =cx "32"
4789+ =cy "32"
4790+ =r "9"
4791+ =fill bg
4792+ =vector-effect "non-scaling-stroke";
4793+ :: =stroke bg
4794+ :: =stroke-width "2"
4795+ ==
4796+::
4797+ :- 'let'
4798+ |= [fg=tape bg=tape]
4799+ :~ ;circle
4800+ =cx "64"
4801+ =cy "64"
4802+ =r "64"
4803+ :: =fill fg
4804+ =vector-effect "non-scaling-stroke";
4805+ :: =stroke bg
4806+ :: =stroke-width "0.5"
4807+ ;path
4808+ =d "M64 0L64 128"
4809+ =vector-effect "non-scaling-stroke"
4810+ :: =stroke bg
4811+ =fill "none";
4812+ ==
4813+::
4814+ :- 'lev'
4815+ |= [fg=tape bg=tape]
4816+ :~ ;path
4817+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
4818+ :: =fill fg
4819+ =vector-effect "non-scaling-stroke";
4820+ :: =stroke bg
4821+ :: =stroke-width "0.5"
4822+ ;circle
4823+ =cx "32"
4824+ =cy "32"
4825+ =r "11.5"
4826+ :: =fill fg
4827+ =vector-effect "non-scaling-stroke"
4828+ =stroke fg;
4829+ ;circle
4830+ =cx "32"
4831+ =cy "32"
4832+ =r "9"
4833+ =fill bg
4834+ =vector-effect "non-scaling-stroke";
4835+ :: =stroke bg
4836+ :: =stroke-width "2"
4837+ ==
4838+::
4839+ :- 'lex'
4840+ |= [fg=tape bg=tape]
4841+ :~ ;path
4842+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
4843+ :: =fill fg
4844+ =vector-effect "non-scaling-stroke";
4845+ :: =stroke bg
4846+ :: =stroke-width "0.5"
4847+ ;path
4848+ =d "M-0.00292969 0L127.997 128"
4849+ =vector-effect "non-scaling-stroke"
4850+ :: =stroke bg
4851+ :: =stroke-linecap "square"
4852+ =fill "none";
4853+ ;line
4854+ =x1 "15.9965"
4855+ =y1 "111.997"
4856+ =x2 "47.9965"
4857+ =y2 "79.9965"
4858+ =vector-effect "non-scaling-stroke"
4859+ :: =stroke bg
4860+ =fill "none";
4861+ ;path
4862+ =fill-rule "evenodd"
4863+ =clip-rule "evenodd"
4864+ =stroke "none"
4865+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
4866+ =fill bg;
4867+ ==
4868+::
4869+ :- 'lib'
4870+ |= [fg=tape bg=tape]
4871+ :~ ;circle
4872+ =cx "64"
4873+ =cy "64"
4874+ =r "64"
4875+ :: =fill fg
4876+ =vector-effect "non-scaling-stroke";
4877+ :: =stroke bg
4878+ :: =stroke-width "0.5"
4879+ ;path
4880+ =d "M128 64C92.6538 64 64 92.6538 64 128"
4881+ =vector-effect "non-scaling-stroke"
4882+ :: =stroke bg
4883+ =fill "none";
4884+ ;path
4885+ =d "M128 64L0 64"
4886+ =vector-effect "non-scaling-stroke"
4887+ :: =stroke bg
4888+ =fill "none";
4889+ ==
4890+::
4891+ :- 'lid'
4892+ |= [fg=tape bg=tape]
4893+ :~ ;path
4894+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
4895+ :: =fill fg
4896+ =vector-effect "non-scaling-stroke";
4897+ :: =stroke bg
4898+ :: =stroke-width "0.5"
4899+ ;line
4900+ =x1 "16.0036"
4901+ =y1 "15.9965"
4902+ =x2 "48.0036"
4903+ =y2 "47.9965"
4904+ =vector-effect "non-scaling-stroke"
4905+ :: =stroke bg
4906+ =fill "none";
4907+ ;path
4908+ =d "M128 0L0 128"
4909+ =vector-effect "non-scaling-stroke"
4910+ :: =stroke bg
4911+ :: =stroke-linecap "square"
4912+ =fill "none";
4913+ ==
4914+::
4915+ :- 'lig'
4916+ |= [fg=tape bg=tape]
4917+ :~ ;circle
4918+ =cx "64"
4919+ =cy "64"
4920+ =r "64"
4921+ :: =fill fg
4922+ =vector-effect "non-scaling-stroke";
4923+ :: =stroke bg
4924+ :: =stroke-width "0.5"
4925+ ;circle
4926+ =cx "64"
4927+ =cy "64"
4928+ =r "48"
4929+ =vector-effect "non-scaling-stroke"
4930+ :: =stroke bg
4931+ =fill "none";
4932+ ==
4933+::
4934+ :- 'lin'
4935+ |= [fg=tape bg=tape]
4936+ :~ ;rect
4937+ =width "128"
4938+ =height "128"
4939+ :: =fill fg
4940+ =vector-effect "non-scaling-stroke";
4941+ :: =stroke bg
4942+ :: =stroke-width "0.5"
4943+ ;line
4944+ =x1 "64"
4945+ =y1 "128"
4946+ =x2 "64"
4947+ =y2 "-6.55671e-08"
4948+ =vector-effect "non-scaling-stroke"
4949+ :: =stroke bg
4950+ =fill "none";
4951+ ;circle
4952+ =cx "80"
4953+ =cy "64"
4954+ =r "8"
4955+ =fill bg
4956+ =stroke "none";
4957+ ==
4958+::
4959+ :- 'lis'
4960+ |= [fg=tape bg=tape]
4961+ :~ ;path
4962+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
4963+ :: =fill fg
4964+ =vector-effect "non-scaling-stroke";
4965+ :: =stroke bg
4966+ :: =stroke-width "0.5"
4967+ ;path
4968+ =d "M128 64L0 64"
4969+ =vector-effect "non-scaling-stroke"
4970+ :: =stroke bg
4971+ =fill "none";
4972+ ;path
4973+ =d "M-4.70488e-06 64C35.3462 64 64 35.3462 64 0"
4974+ =vector-effect "non-scaling-stroke"
4975+ :: =stroke bg
4976+ =fill "none";
4977+ ==
4978+::
4979+ :- 'lit'
4980+ |= [fg=tape bg=tape]
4981+ :~ ;path
4982+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
4983+ :: =fill fg
4984+ =vector-effect "non-scaling-stroke";
4985+ :: =stroke bg
4986+ :: =stroke-width "0.5"
4987+ ;path
4988+ =d "M-0.00286865 0L127.997 128"
4989+ =vector-effect "non-scaling-stroke"
4990+ :: =stroke bg
4991+ :: =stroke-linecap "square"
4992+ =fill "none";
4993+ ;path
4994+ =d "M128 0C128 35.3511 113.669 67.3551 90.5 90.5193"
4995+ =vector-effect "non-scaling-stroke"
4996+ :: =stroke bg
4997+ =fill "none";
4998+ ;path
4999+ =d "M96 0C96 26.5077 85.2564 50.5061 67.8862 67.8783"
5000+ =vector-effect "non-scaling-stroke"
5001+ :: =stroke bg
5002+ =fill "none";
5003+ ;path
5004+ =d "M64 0C64 17.6721 56.8374 33.6713 45.2568 45.2529"
5005+ =vector-effect "non-scaling-stroke"
5006+ :: =stroke bg
5007+ =fill "none";
5008+ ;path
5009+ =d "M32.3716 0C32.3716 8.83603 28.7903 16.8356 23 22.6264"
5010+ =vector-effect "non-scaling-stroke"
5011+ :: =stroke bg
5012+ =fill "none";
5013+ ==
5014+::
5015+ :- 'liv'
5016+ |= [fg=tape bg=tape]
5017+ :~ ;rect
5018+ =width "128"
5019+ =height "128"
5020+ :: =fill fg
5021+ =vector-effect "non-scaling-stroke";
5022+ :: =stroke bg
5023+ :: =stroke-width "0.5"
5024+ ;path
5025+ =d "M-5.21346e-06 32C70.6924 32 128 17.6731 128 0"
5026+ =vector-effect "non-scaling-stroke"
5027+ :: =stroke bg
5028+ =fill "none";
5029+ ;path
5030+ =d "M3.4331e-06 96C70.6924 96 128 53.0193 128 0"
5031+ =vector-effect "non-scaling-stroke"
5032+ :: =stroke bg
5033+ =fill "none";
5034+ ;path
5035+ =d "M64 0L64 128"
5036+ =vector-effect "non-scaling-stroke"
5037+ :: =stroke bg
5038+ =fill "none";
5039+ ==
5040+::
5041+ :- 'loc'
5042+ |= [fg=tape bg=tape]
5043+ :~ ;path
5044+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
5045+ :: =fill fg
5046+ =vector-effect "non-scaling-stroke";
5047+ :: =stroke bg
5048+ :: =stroke-width "0.5"
5049+ ;path
5050+ =d "M128 96C74.9807 96 32 53.0193 32 -4.19629e-06"
5051+ =vector-effect "non-scaling-stroke"
5052+ :: =stroke bg
5053+ =fill "none";
5054+ ==
5055+::
5056+ :- 'lod'
5057+ |= [fg=tape bg=tape]
5058+ :~ ;path
5059+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
5060+ :: =fill fg
5061+ =vector-effect "non-scaling-stroke";
5062+ :: =stroke bg
5063+ :: =stroke-width "0.5"
5064+ ;path
5065+ =d "M16 64C16 90.5097 37.4903 112 64 112"
5066+ =vector-effect "non-scaling-stroke"
5067+ :: =stroke bg
5068+ =fill "none";
5069+ ==
5070+::
5071+ :- 'lom'
5072+ |= [fg=tape bg=tape]
5073+ :~ ;rect
5074+ =width "128"
5075+ =height "128"
5076+ :: =fill fg
5077+ =vector-effect "non-scaling-stroke";
5078+ :: =stroke bg
5079+ :: =stroke-width "0.5"
5080+ ;circle
5081+ =cx "32"
5082+ =cy "32"
5083+ =r "11.5"
5084+ :: =fill fg
5085+ =vector-effect "non-scaling-stroke"
5086+ =stroke fg;
5087+ ;circle
5088+ =cx "32"
5089+ =cy "32"
5090+ =r "9"
5091+ =fill bg
5092+ =vector-effect "non-scaling-stroke";
5093+ :: =stroke bg
5094+ :: =stroke-width "2"
5095+ ;circle
5096+ =cx "96"
5097+ =cy "32"
5098+ =r "11.5"
5099+ :: =fill fg
5100+ =vector-effect "non-scaling-stroke"
5101+ =stroke fg;
5102+ ;circle
5103+ =cx "96"
5104+ =cy "32"
5105+ =r "9"
5106+ =fill bg
5107+ =vector-effect "non-scaling-stroke";
5108+ :: =stroke bg
5109+ :: =stroke-width "2"
5110+ ;circle
5111+ =cx "96"
5112+ =cy "96"
5113+ =r "11.5"
5114+ :: =fill fg
5115+ =vector-effect "non-scaling-stroke"
5116+ =stroke fg;
5117+ ;circle
5118+ =cx "96"
5119+ =cy "96"
5120+ =r "9"
5121+ =fill bg
5122+ =vector-effect "non-scaling-stroke";
5123+ :: =stroke bg
5124+ :: =stroke-width "2"
5125+ ==
5126+::
5127+ :- 'lon'
5128+ |= [fg=tape bg=tape]
5129+ :~ ;path
5130+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
5131+ :: =fill fg
5132+ =vector-effect "non-scaling-stroke";
5133+ :: =stroke bg
5134+ :: =stroke-width "0.5"
5135+ ;path
5136+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
5137+ =vector-effect "non-scaling-stroke"
5138+ :: =stroke bg
5139+ =fill "none";
5140+ ;path
5141+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
5142+ =vector-effect "non-scaling-stroke"
5143+ :: =stroke bg
5144+ =fill "none";
5145+ ;path
5146+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
5147+ =vector-effect "non-scaling-stroke"
5148+ :: =stroke bg
5149+ =fill "none";
5150+ ;path
5151+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
5152+ =vector-effect "non-scaling-stroke"
5153+ :: =stroke bg
5154+ =fill "none";
5155+ ==
5156+::
5157+ :- 'lop'
5158+ |= [fg=tape bg=tape]
5159+ :~ ;circle
5160+ =cx "64"
5161+ =cy "64"
5162+ =r "64"
5163+ :: =fill fg
5164+ =vector-effect "non-scaling-stroke";
5165+ :: =stroke bg
5166+ :: =stroke-width "0.5"
5167+ ;line
5168+ =x1 "128"
5169+ =y1 "64"
5170+ =x2 "-8.87604e-09"
5171+ =y2 "64"
5172+ =vector-effect "non-scaling-stroke"
5173+ :: =stroke bg
5174+ =fill "none";
5175+ ;line
5176+ =x1 "128"
5177+ =y1 "32"
5178+ =x2 "-8.87604e-09"
5179+ =y2 "32"
5180+ =vector-effect "non-scaling-stroke"
5181+ :: =stroke bg
5182+ =fill "none";
5183+ ;circle
5184+ =cx "64"
5185+ =cy "64"
5186+ =r "11.5"
5187+ :: =fill fg
5188+ =vector-effect "non-scaling-stroke"
5189+ =stroke fg;
5190+ ;circle
5191+ =cx "64"
5192+ =cy "64"
5193+ =r "9"
5194+ =fill bg
5195+ =vector-effect "non-scaling-stroke";
5196+ :: =stroke bg
5197+ :: =stroke-width "2"
5198+ ==
5199+::
5200+ :- 'lor'
5201+ |= [fg=tape bg=tape]
5202+ :~ ;path
5203+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
5204+ :: =fill fg
5205+ =vector-effect "non-scaling-stroke";
5206+ :: =stroke bg
5207+ :: =stroke-width "0.5"
5208+ ;line
5209+ =x1 "64"
5210+ =y1 "2.18557e-08"
5211+ =x2 "64"
5212+ =y2 "128"
5213+ =vector-effect "non-scaling-stroke"
5214+ :: =stroke bg
5215+ =fill "none";
5216+ ==
5217+::
5218+ :- 'los'
5219+ |= [fg=tape bg=tape]
5220+ :~ ;path
5221+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
5222+ :: =fill fg
5223+ =vector-effect "non-scaling-stroke";
5224+ :: =stroke bg
5225+ :: =stroke-width "0.5"
5226+ ;line
5227+ =x1 "-0.0029152"
5228+ =x2 "127.983"
5229+ =y2 "127.986"
5230+ =vector-effect "non-scaling-stroke"
5231+ :: =stroke bg
5232+ :: =stroke-linecap "square"
5233+ =fill "none";
5234+ ;circle
5235+ =cx "96"
5236+ =cy "96"
5237+ =r "11.5"
5238+ :: =fill fg
5239+ =vector-effect "non-scaling-stroke"
5240+ =stroke fg;
5241+ ;circle
5242+ =cx "96"
5243+ =cy "96"
5244+ =r "9"
5245+ =fill bg
5246+ =vector-effect "non-scaling-stroke";
5247+ :: =stroke bg
5248+ :: =stroke-width "2"
5249+ ==
5250+::
5251+ :- 'luc'
5252+ |= [fg=tape bg=tape]
5253+ :~ ;path
5254+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5255+ :: =fill fg
5256+ =vector-effect "non-scaling-stroke";
5257+ :: =stroke bg
5258+ :: =stroke-width "0.5"
5259+ ;line
5260+ =x1 "128"
5261+ =y1 "64"
5262+ =x2 "-8.87604e-09"
5263+ =y2 "64"
5264+ =vector-effect "non-scaling-stroke"
5265+ :: =stroke bg
5266+ =fill "none";
5267+ ;path
5268+ =d "M128 64L0 64"
5269+ =vector-effect "non-scaling-stroke"
5270+ :: =stroke bg
5271+ =fill "none";
5272+ ;path
5273+ =d "M128 96L0 96"
5274+ =vector-effect "non-scaling-stroke"
5275+ :: =stroke bg
5276+ =fill "none";
5277+ ==
5278+::
5279+ :- 'lud'
5280+ |= [fg=tape bg=tape]
5281+ :~ ;path
5282+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5283+ :: =fill fg
5284+ =vector-effect "non-scaling-stroke";
5285+ :: =stroke bg
5286+ :: =stroke-width "0.5"
5287+ ;path
5288+ =d "M128 64L0 64"
5289+ =vector-effect "non-scaling-stroke"
5290+ :: =stroke bg
5291+ =fill "none";
5292+ ;path
5293+ =d "M32 0L32 128"
5294+ =vector-effect "non-scaling-stroke"
5295+ :: =stroke bg
5296+ =fill "none";
5297+ ;path
5298+ =d "M64 0L64 128"
5299+ =vector-effect "non-scaling-stroke"
5300+ :: =stroke bg
5301+ =fill "none";
5302+ ;path
5303+ =d "M96 0L96 128"
5304+ =vector-effect "non-scaling-stroke"
5305+ :: =stroke bg
5306+ =fill "none";
5307+ ==
5308+::
5309+ :- 'lug'
5310+ |= [fg=tape bg=tape]
5311+ :~ ;path
5312+ =d "M64 128H0L5.59506e-06 -7.62939e-06L64 -2.03434e-06C99.3462 1.05573e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
5313+ :: =fill fg
5314+ =vector-effect "non-scaling-stroke";
5315+ :: =stroke bg
5316+ :: =stroke-width "0.5"
5317+ ==
5318+::
5319+ :- 'lun'
5320+ |= [fg=tape bg=tape]
5321+ :~ ;circle
5322+ =cx "64"
5323+ =cy "64"
5324+ =r "64"
5325+ :: =fill fg
5326+ =vector-effect "non-scaling-stroke";
5327+ :: =stroke bg
5328+ :: =stroke-width "0.5"
5329+ ;circle
5330+ =cx "64"
5331+ =cy "64"
5332+ =r "32"
5333+ =vector-effect "non-scaling-stroke"
5334+ :: =stroke bg
5335+ =fill "none";
5336+ ==
5337+::
5338+ :- 'lup'
5339+ |= [fg=tape bg=tape]
5340+ :~ ;path
5341+ =d "M64 128H0L5.59506e-06 -7.62939e-06L64 -2.03434e-06C99.3462 1.05573e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
5342+ :: =fill fg
5343+ =vector-effect "non-scaling-stroke";
5344+ :: =stroke bg
5345+ :: =stroke-width "0.5"
5346+ ;path
5347+ =d "M64 16C90.5097 16 112 37.4903 112 64C112 90.5097 90.5097 112 64 112"
5348+ =vector-effect "non-scaling-stroke"
5349+ :: =stroke bg
5350+ =fill "none";
5351+ ;line
5352+ =x1 "128"
5353+ =y1 "64"
5354+ =x2 "-8.87604e-09"
5355+ =y2 "64"
5356+ =vector-effect "non-scaling-stroke"
5357+ :: =stroke bg
5358+ =fill "none";
5359+ ==
5360+::
5361+ :- 'lur'
5362+ |= [fg=tape bg=tape]
5363+ :~ ;path
5364+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5365+ :: =fill fg
5366+ =vector-effect "non-scaling-stroke";
5367+ :: =stroke bg
5368+ :: =stroke-width "0.5"
5369+ ;path
5370+ =d "M64 0L64 128"
5371+ =vector-effect "non-scaling-stroke"
5372+ :: =stroke bg
5373+ =fill "none";
5374+ ;path
5375+ =d "M96 0L96 128"
5376+ =vector-effect "non-scaling-stroke"
5377+ :: =stroke bg
5378+ =fill "none";
5379+ ;path
5380+ =d "M32 0L32 128"
5381+ =vector-effect "non-scaling-stroke"
5382+ :: =stroke bg
5383+ =fill "none";
5384+ ==
5385+::
5386+ :- 'lus'
5387+ |= [fg=tape bg=tape]
5388+ :~ ;path
5389+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5390+ :: =fill fg
5391+ =vector-effect "non-scaling-stroke";
5392+ :: =stroke bg
5393+ :: =stroke-width "0.5"
5394+ ;path
5395+ =d "M128 0L0 128"
5396+ =vector-effect "non-scaling-stroke"
5397+ :: =stroke bg
5398+ :: =stroke-linecap "square"
5399+ =fill "none";
5400+ ;circle
5401+ =cx "96"
5402+ =cy "96"
5403+ =r "11.5"
5404+ :: =fill fg
5405+ =vector-effect "non-scaling-stroke"
5406+ =stroke fg;
5407+ ;circle
5408+ =cx "96"
5409+ =cy "96"
5410+ =r "9"
5411+ =fill bg
5412+ =vector-effect "non-scaling-stroke";
5413+ :: =stroke bg
5414+ :: =stroke-width "2"
5415+ ==
5416+::
5417+ :- 'lut'
5418+ |= [fg=tape bg=tape]
5419+ :~ ;rect
5420+ =width "128"
5421+ =height "128"
5422+ :: =fill fg
5423+ =vector-effect "non-scaling-stroke";
5424+ :: =stroke bg
5425+ :: =stroke-width "0.5"
5426+ ;circle
5427+ =cx "32"
5428+ =cy "64"
5429+ =r "11.5"
5430+ :: =fill fg
5431+ =vector-effect "non-scaling-stroke"
5432+ =stroke fg;
5433+ ;circle
5434+ =cx "32"
5435+ =cy "64"
5436+ =r "9"
5437+ =fill bg
5438+ =vector-effect "non-scaling-stroke";
5439+ :: =stroke bg
5440+ :: =stroke-width "2"
5441+ ==
5442+::
5443+ :- 'lux'
5444+ |= [fg=tape bg=tape]
5445+ :~ ;path
5446+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
5447+ :: =fill fg
5448+ =vector-effect "non-scaling-stroke";
5449+ :: =stroke bg
5450+ :: =stroke-width "0.5"
5451+ ;path
5452+ =fill-rule "evenodd"
5453+ =clip-rule "evenodd"
5454+ =stroke "none"
5455+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
5456+ =fill bg;
5457+ ==
5458+::
5459+ :- 'lyd'
5460+ |= [fg=tape bg=tape]
5461+ :~ ;path
5462+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
5463+ :: =fill fg
5464+ =vector-effect "non-scaling-stroke";
5465+ :: =stroke bg
5466+ :: =stroke-width "0.5"
5467+ ;path
5468+ =d "M-0.00280762 0L127.997 128"
5469+ =vector-effect "non-scaling-stroke"
5470+ :: =stroke bg
5471+ :: =stroke-linecap "square"
5472+ =fill "none";
5473+ ;circle
5474+ =cx "64"
5475+ =cy "64"
5476+ =r "32"
5477+ =vector-effect "non-scaling-stroke"
5478+ :: =stroke bg
5479+ =fill "none";
5480+ ;circle
5481+ =cx "64"
5482+ =cy "32"
5483+ =r "11.5"
5484+ :: =fill fg
5485+ =vector-effect "non-scaling-stroke"
5486+ =stroke fg;
5487+ ;circle
5488+ =cx "64"
5489+ =cy "32"
5490+ =r "9"
5491+ =fill bg
5492+ =vector-effect "non-scaling-stroke";
5493+ :: =stroke bg
5494+ :: =stroke-width "2"
5495+ ==
5496+::
5497+ :- 'lyn'
5498+ |= [fg=tape bg=tape]
5499+ :~ ;path
5500+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
5501+ :: =fill fg
5502+ =vector-effect "non-scaling-stroke";
5503+ :: =stroke bg
5504+ :: =stroke-width "0.5"
5505+ ;path
5506+ =d "M32 0L32 128"
5507+ =vector-effect "non-scaling-stroke"
5508+ :: =stroke bg
5509+ =fill "none";
5510+ ==
5511+::
5512+ :- 'lyr'
5513+ |= [fg=tape bg=tape]
5514+ :~ ;path
5515+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
5516+ :: =fill fg
5517+ =vector-effect "non-scaling-stroke";
5518+ :: =stroke bg
5519+ :: =stroke-width "0.5"
5520+ ;path
5521+ =d "M-0.00268555 0L127.997 128"
5522+ =vector-effect "non-scaling-stroke"
5523+ :: =stroke bg
5524+ :: =stroke-linecap "square"
5525+ =fill "none";
5526+ ;circle
5527+ =cx "80"
5528+ =cy "48"
5529+ =r "11.5"
5530+ :: =fill fg
5531+ =vector-effect "non-scaling-stroke"
5532+ =stroke fg;
5533+ ;circle
5534+ =cx "80"
5535+ =cy "48"
5536+ =r "9"
5537+ =fill bg
5538+ =vector-effect "non-scaling-stroke";
5539+ :: =stroke bg
5540+ :: =stroke-width "2"
5541+ ==
5542+::
5543+ :- 'lys'
5544+ |= [fg=tape bg=tape]
5545+ :~ ;path
5546+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5547+ :: =fill fg
5548+ =vector-effect "non-scaling-stroke";
5549+ :: =stroke bg
5550+ :: =stroke-width "0.5"
5551+ ;circle
5552+ =cx "64"
5553+ =cy "64"
5554+ =r "11.5"
5555+ :: =fill fg
5556+ =vector-effect "non-scaling-stroke"
5557+ =stroke fg;
5558+ ;circle
5559+ =cx "64"
5560+ =cy "64"
5561+ =r "9"
5562+ =fill bg
5563+ =vector-effect "non-scaling-stroke";
5564+ :: =stroke bg
5565+ :: =stroke-width "2"
5566+ ;circle
5567+ =cx "16"
5568+ =cy "112"
5569+ =r "11.5"
5570+ :: =fill fg
5571+ =vector-effect "non-scaling-stroke"
5572+ =stroke fg;
5573+ ;circle
5574+ =cx "16"
5575+ =cy "112"
5576+ =r "9"
5577+ =fill bg
5578+ =vector-effect "non-scaling-stroke";
5579+ :: =stroke bg
5580+ :: =stroke-width "2"
5581+ ==
5582+::
5583+ :- 'lyt'
5584+ |= [fg=tape bg=tape]
5585+ :~ ;path
5586+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
5587+ :: =fill fg
5588+ =vector-effect "non-scaling-stroke";
5589+ :: =stroke bg
5590+ :: =stroke-width "0.5"
5591+ ;path
5592+ =d "M128 0L0 128"
5593+ =vector-effect "non-scaling-stroke"
5594+ :: =stroke bg
5595+ :: =stroke-linecap "square"
5596+ =fill "none";
5597+ ;line
5598+ =x1 "80.0035"
5599+ =y1 "79.9965"
5600+ =x2 "112.003"
5601+ =y2 "111.997"
5602+ =vector-effect "non-scaling-stroke"
5603+ :: =stroke bg
5604+ =fill "none";
5605+ ;circle
5606+ =cx "64"
5607+ =cy "64"
5608+ =r "16"
5609+ =vector-effect "non-scaling-stroke"
5610+ :: =stroke bg
5611+ =fill "none";
5612+ ==
5613+::
5614+ :- 'lyx'
5615+ |= [fg=tape bg=tape]
5616+ :~ ;path
5617+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
5618+ :: =fill fg
5619+ =vector-effect "non-scaling-stroke";
5620+ :: =stroke bg
5621+ :: =stroke-width "0.5"
5622+ ;path
5623+ =d "M-0.00292969 0L127.997 128"
5624+ =vector-effect "non-scaling-stroke"
5625+ :: =stroke bg
5626+ :: =stroke-linecap "square"
5627+ =fill "none";
5628+ ;circle
5629+ =cx "32"
5630+ =cy "32"
5631+ =r "11.5"
5632+ :: =fill fg
5633+ =vector-effect "non-scaling-stroke"
5634+ =stroke fg;
5635+ ;circle
5636+ =cx "32"
5637+ =cy "32"
5638+ =r "9"
5639+ =fill bg
5640+ =vector-effect "non-scaling-stroke";
5641+ :: =stroke bg
5642+ :: =stroke-width "2"
5643+ ==
5644+::
5645+ :- 'mac'
5646+ |= [fg=tape bg=tape]
5647+ :~ ;path
5648+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
5649+ :: =fill fg
5650+ =vector-effect "non-scaling-stroke";
5651+ :: =stroke bg
5652+ :: =stroke-width "0.5"
5653+ ;circle
5654+ =cx "16"
5655+ =cy "112"
5656+ =r "11.5"
5657+ =fill bg
5658+ =vector-effect "non-scaling-stroke";
5659+ :: =stroke bg
5660+ ;circle
5661+ =cx "16"
5662+ =cy "112"
5663+ =r "9"
5664+ :: =fill fg
5665+ =vector-effect "non-scaling-stroke"
5666+ =stroke fg;
5667+ :: =stroke-width "2"
5668+ ==
5669+::
5670+ :- 'mag'
5671+ |= [fg=tape bg=tape]
5672+ :~ ;path
5673+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
5674+ :: =fill fg
5675+ =vector-effect "non-scaling-stroke";
5676+ :: =stroke bg
5677+ :: =stroke-width "0.5"
5678+ ;circle
5679+ =cx "64"
5680+ =cy "64"
5681+ =r "32"
5682+ =vector-effect "non-scaling-stroke"
5683+ :: =stroke bg
5684+ =fill "none";
5685+ ;path
5686+ =d "M128 64L0 64"
5687+ =vector-effect "non-scaling-stroke"
5688+ :: =stroke bg
5689+ =fill "none";
5690+ ;circle
5691+ =cx "64"
5692+ =cy "96"
5693+ =r "11.5"
5694+ :: =fill fg
5695+ =vector-effect "non-scaling-stroke"
5696+ =stroke fg;
5697+ ;circle
5698+ =cx "64"
5699+ =cy "96"
5700+ =r "9"
5701+ =fill bg
5702+ =vector-effect "non-scaling-stroke";
5703+ :: =stroke bg
5704+ :: =stroke-width "2"
5705+ ==
5706+::
5707+ :- 'mal'
5708+ |= [fg=tape bg=tape]
5709+ :~ ;path
5710+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
5711+ :: =fill fg
5712+ =vector-effect "non-scaling-stroke";
5713+ :: =stroke bg
5714+ :: =stroke-width "0.5"
5715+ ;line
5716+ =x1 "80.0035"
5717+ =y1 "79.9964"
5718+ =x2 "112.004"
5719+ =y2 "111.996"
5720+ =vector-effect "non-scaling-stroke"
5721+ :: =stroke bg
5722+ =fill "none";
5723+ ;circle
5724+ =cx "16"
5725+ =cy "112"
5726+ =r "11.5"
5727+ =fill bg
5728+ =vector-effect "non-scaling-stroke";
5729+ :: =stroke bg
5730+ ;circle
5731+ =cx "16"
5732+ =cy "112"
5733+ =r "9"
5734+ :: =fill fg
5735+ =vector-effect "non-scaling-stroke"
5736+ =stroke fg;
5737+ :: =stroke-width "2"
5738+ ==
5739+::
5740+ :- 'map'
5741+ |= [fg=tape bg=tape]
5742+ :~ ;path
5743+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
5744+ :: =fill fg
5745+ =vector-effect "non-scaling-stroke";
5746+ :: =stroke bg
5747+ :: =stroke-width "0.5"
5748+ ;line
5749+ =x1 "80.0036"
5750+ =y1 "79.9965"
5751+ =x2 "112.004"
5752+ =y2 "111.997"
5753+ =vector-effect "non-scaling-stroke"
5754+ :: =stroke bg
5755+ =fill "none";
5756+ ;circle
5757+ =cx "64"
5758+ =cy "64"
5759+ =r "11.5"
5760+ :: =fill fg
5761+ =vector-effect "non-scaling-stroke"
5762+ =stroke fg;
5763+ ;circle
5764+ =cx "64"
5765+ =cy "64"
5766+ =r "9"
5767+ =fill bg
5768+ =vector-effect "non-scaling-stroke";
5769+ :: =stroke bg
5770+ :: =stroke-width "2"
5771+ ==
5772+::
5773+ :- 'mar'
5774+ |= [fg=tape bg=tape]
5775+ :~ ;circle
5776+ =cx "64"
5777+ =cy "64"
5778+ =r "64"
5779+ :: =fill fg
5780+ =vector-effect "non-scaling-stroke";
5781+ :: =stroke bg
5782+ :: =stroke-width "0.5"
5783+ ;path
5784+ =d "M-0.0029152 0L127.997 128"
5785+ =vector-effect "non-scaling-stroke"
5786+ :: =stroke bg
5787+ :: =stroke-linecap "square"
5788+ =fill "none";
5789+ ;path
5790+ =d "M64 64L64 128"
5791+ =vector-effect "non-scaling-stroke"
5792+ :: =stroke bg
5793+ =fill "none";
5794+ ;path
5795+ =d "M86.6274 86.6274C99.1242 74.1307 99.1242 53.8694 86.6274 41.3726C74.1306 28.8758 53.8694 28.8758 41.3726 41.3726"
5796+ =vector-effect "non-scaling-stroke"
5797+ :: =stroke bg
5798+ =fill "none";
5799+ ;path
5800+ =d "M75.3137 75.3137C81.5621 69.0653 81.5621 58.9347 75.3137 52.6863C69.0653 46.4379 58.9347 46.4379 52.6863 52.6863"
5801+ =vector-effect "non-scaling-stroke"
5802+ :: =stroke bg
5803+ =fill "none";
5804+ ;path
5805+ =d "M97.9411 97.9411C116.686 79.1959 116.686 48.804 97.9411 30.0589C79.196 11.3137 48.804 11.3137 30.0589 30.0589"
5806+ =vector-effect "non-scaling-stroke"
5807+ :: =stroke bg
5808+ =fill "none";
5809+ ==
5810+::
5811+ :- 'mas'
5812+ |= [fg=tape bg=tape]
5813+ :~ ;rect
5814+ =width "128"
5815+ =height "128"
5816+ :: =fill fg
5817+ =vector-effect "non-scaling-stroke";
5818+ :: =stroke bg
5819+ :: =stroke-width "0.5"
5820+ ;circle
5821+ =cx "64"
5822+ =cy "64"
5823+ =r "32"
5824+ =vector-effect "non-scaling-stroke"
5825+ :: =stroke bg
5826+ =fill "none";
5827+ ;path
5828+ =fill-rule "evenodd"
5829+ =clip-rule "evenodd"
5830+ =stroke "none"
5831+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
5832+ =fill bg;
5833+ ==
5834+::
5835+ :- 'mat'
5836+ |= [fg=tape bg=tape]
5837+ :~ ;path
5838+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
5839+ :: =fill fg
5840+ =vector-effect "non-scaling-stroke";
5841+ :: =stroke bg
5842+ :: =stroke-width "0.5"
5843+ ;path
5844+ =d "M128 32C110.327 32 96 17.6731 96 0"
5845+ =vector-effect "non-scaling-stroke"
5846+ :: =stroke bg
5847+ =fill "none";
5848+ ==
5849+::
5850+ :- 'meb'
5851+ |= [fg=tape bg=tape]
5852+ :~ ;rect
5853+ =width "128"
5854+ =height "128"
5855+ :: =fill fg
5856+ =vector-effect "non-scaling-stroke";
5857+ :: =stroke bg
5858+ :: =stroke-width "0.5"
5859+ ;path
5860+ =d "M32 -3.05151e-06C32 53.0193 74.9807 96 128 96"
5861+ =vector-effect "non-scaling-stroke"
5862+ :: =stroke bg
5863+ =fill "none";
5864+ ==
5865+::
5866+ :- 'mec'
5867+ |= [fg=tape bg=tape]
5868+ :~ ;path
5869+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
5870+ :: =fill fg
5871+ =vector-effect "non-scaling-stroke";
5872+ :: =stroke bg
5873+ :: =stroke-width "0.5"
5874+ ;line
5875+ =x1 "80.0035"
5876+ =y1 "79.9965"
5877+ =x2 "112.003"
5878+ =y2 "111.997"
5879+ =vector-effect "non-scaling-stroke"
5880+ :: =stroke bg
5881+ =fill "none";
5882+ ;circle
5883+ =cx "64"
5884+ =cy "64"
5885+ =r "11.5"
5886+ :: =fill fg
5887+ =vector-effect "non-scaling-stroke"
5888+ =stroke fg;
5889+ ;circle
5890+ =cx "64"
5891+ =cy "64"
5892+ =r "9"
5893+ =fill bg
5894+ =vector-effect "non-scaling-stroke";
5895+ :: =stroke bg
5896+ :: =stroke-width "2"
5897+ ==
5898+::
5899+ :- 'med'
5900+ |= [fg=tape bg=tape]
5901+ :~ ;circle
5902+ =cx "64"
5903+ =cy "64"
5904+ =r "64"
5905+ :: =fill fg
5906+ =vector-effect "non-scaling-stroke";
5907+ :: =stroke bg
5908+ :: =stroke-width "0.5"
5909+ ;circle
5910+ =cx "96"
5911+ =cy "64"
5912+ =r "11.5"
5913+ :: =fill fg
5914+ =vector-effect "non-scaling-stroke"
5915+ =stroke fg;
5916+ ;circle
5917+ =cx "96"
5918+ =cy "64"
5919+ =r "9"
5920+ =fill bg
5921+ =vector-effect "non-scaling-stroke";
5922+ :: =stroke bg
5923+ :: =stroke-width "2"
5924+ ==
5925+::
5926+ :- 'meg'
5927+ |= [fg=tape bg=tape]
5928+ :~ ;rect
5929+ =width "128"
5930+ =height "128"
5931+ :: =fill fg
5932+ =vector-effect "non-scaling-stroke";
5933+ :: =stroke bg
5934+ :: =stroke-width "0.5"
5935+ ;path
5936+ =d "M128 64C92.6538 64 64 92.6538 64 128"
5937+ =vector-effect "non-scaling-stroke"
5938+ :: =stroke bg
5939+ =fill "none";
5940+ ==
5941+::
5942+ :- 'mel'
5943+ |= [fg=tape bg=tape]
5944+ :~ ;path
5945+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
5946+ :: =fill fg
5947+ =vector-effect "non-scaling-stroke";
5948+ :: =stroke bg
5949+ :: =stroke-width "0.5"
5950+ ;line
5951+ =x1 "15.9964"
5952+ =y1 "111.997"
5953+ =x2 "47.9964"
5954+ =y2 "79.9965"
5955+ =vector-effect "non-scaling-stroke"
5956+ :: =stroke bg
5957+ =fill "none";
5958+ ==
5959+::
5960+ :- 'mep'
5961+ |= [fg=tape bg=tape]
5962+ :~ ;path
5963+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
5964+ :: =fill fg
5965+ =vector-effect "non-scaling-stroke";
5966+ :: =stroke bg
5967+ :: =stroke-width "0.5"
5968+ ;path
5969+ =d "M128 64L0 64"
5970+ =vector-effect "non-scaling-stroke"
5971+ :: =stroke bg
5972+ =fill "none";
5973+ ;path
5974+ =d "M128 96L0 96"
5975+ =vector-effect "non-scaling-stroke"
5976+ :: =stroke bg
5977+ =fill "none";
5978+ ;path
5979+ =d "M128 32L0 32"
5980+ =vector-effect "non-scaling-stroke"
5981+ :: =stroke bg
5982+ =fill "none";
5983+ ==
5984+::
5985+ :- 'mer'
5986+ |= [fg=tape bg=tape]
5987+ :~ ;path
5988+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
5989+ :: =fill fg
5990+ =vector-effect "non-scaling-stroke";
5991+ :: =stroke bg
5992+ :: =stroke-width "0.5"
5993+ ;path
5994+ =d "M32 0L32 128"
5995+ =vector-effect "non-scaling-stroke"
5996+ :: =stroke bg
5997+ =fill "none";
5998+ ==
5999+::
6000+ :- 'mes'
6001+ |= [fg=tape bg=tape]
6002+ :~ ;path
6003+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
6004+ :: =fill fg
6005+ =vector-effect "non-scaling-stroke";
6006+ :: =stroke bg
6007+ :: =stroke-width "0.5"
6008+ ;path
6009+ =d "M-0.00280762 0L127.997 128"
6010+ =vector-effect "non-scaling-stroke"
6011+ :: =stroke bg
6012+ :: =stroke-linecap "square"
6013+ =fill "none";
6014+ ;line
6015+ =x1 "15.9964"
6016+ =y1 "111.996"
6017+ =x2 "47.9964"
6018+ =y2 "79.9964"
6019+ =vector-effect "non-scaling-stroke"
6020+ :: =stroke bg
6021+ =fill "none";
6022+ ==
6023+::
6024+ :- 'met'
6025+ |= [fg=tape bg=tape]
6026+ :~ ;circle
6027+ =cx "64"
6028+ =cy "64"
6029+ =r "64"
6030+ :: =fill fg
6031+ =vector-effect "non-scaling-stroke";
6032+ :: =stroke bg
6033+ :: =stroke-width "0.5"
6034+ ;path
6035+ =d "M32 128L32 0"
6036+ =vector-effect "non-scaling-stroke"
6037+ :: =stroke bg
6038+ =fill "none";
6039+ ==
6040+::
6041+ :- 'mev'
6042+ |= [fg=tape bg=tape]
6043+ :~ ;path
6044+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
6045+ :: =fill fg
6046+ =vector-effect "non-scaling-stroke";
6047+ :: =stroke bg
6048+ :: =stroke-width "0.5"
6049+ ;circle
6050+ =cx "64"
6051+ =cy "64"
6052+ =r "16"
6053+ =vector-effect "non-scaling-stroke"
6054+ :: =stroke bg
6055+ =fill "none";
6056+ ==
6057+::
6058+ :- 'mex'
6059+ |= [fg=tape bg=tape]
6060+ :~ ;path
6061+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
6062+ :: =fill fg
6063+ =vector-effect "non-scaling-stroke";
6064+ :: =stroke bg
6065+ :: =stroke-width "0.5"
6066+ ;path
6067+ =d "M-0.00292969 0L127.997 128"
6068+ =vector-effect "non-scaling-stroke"
6069+ :: =stroke bg
6070+ :: =stroke-linecap "square"
6071+ =fill "none";
6072+ ;path
6073+ =fill-rule "evenodd"
6074+ =clip-rule "evenodd"
6075+ =stroke "none"
6076+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
6077+ =fill bg;
6078+ ==
6079+::
6080+ :- 'mic'
6081+ |= [fg=tape bg=tape]
6082+ :~ ;path
6083+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
6084+ :: =fill fg
6085+ =vector-effect "non-scaling-stroke";
6086+ :: =stroke bg
6087+ :: =stroke-width "0.5"
6088+ ;path
6089+ =d "M-2.09815e-06 80C26.5097 80 48 101.49 48 128"
6090+ =vector-effect "non-scaling-stroke"
6091+ :: =stroke bg
6092+ =fill "none";
6093+ ==
6094+::
6095+ :- 'mid'
6096+ |= [fg=tape bg=tape]
6097+ :~ ;path
6098+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
6099+ :: =fill fg
6100+ =vector-effect "non-scaling-stroke";
6101+ :: =stroke bg
6102+ :: =stroke-width "0.5"
6103+ ;line
6104+ =x1 "128"
6105+ =y1 "64"
6106+ =x2 "-4.37114e-08"
6107+ =y2 "64"
6108+ =vector-effect "non-scaling-stroke"
6109+ :: =stroke bg
6110+ =fill "none";
6111+ ;path
6112+ =d "M128 64C92.6538 64 64 92.6538 64 128"
6113+ =vector-effect "non-scaling-stroke"
6114+ :: =stroke bg
6115+ =fill "none";
6116+ ==
6117+::
6118+ :- 'mig'
6119+ |= [fg=tape bg=tape]
6120+ :~ ;path
6121+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6122+ :: =fill fg
6123+ =vector-effect "non-scaling-stroke";
6124+ :: =stroke bg
6125+ :: =stroke-width "0.5"
6126+ ;line
6127+ =x1 "64"
6128+ =y1 "2.18557e-08"
6129+ =x2 "64"
6130+ =y2 "128"
6131+ =vector-effect "non-scaling-stroke"
6132+ :: =stroke bg
6133+ =fill "none";
6134+ ;line
6135+ =x1 "80.0036"
6136+ =y1 "79.9965"
6137+ =x2 "112.004"
6138+ =y2 "111.997"
6139+ =vector-effect "non-scaling-stroke"
6140+ :: =stroke bg
6141+ =fill "none";
6142+ ;circle
6143+ =cx "64"
6144+ =cy "64"
6145+ =r "16"
6146+ =vector-effect "non-scaling-stroke"
6147+ :: =stroke bg
6148+ =fill "none";
6149+ ==
6150+::
6151+ :- 'mil'
6152+ |= [fg=tape bg=tape]
6153+ :~ ;path
6154+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6155+ :: =fill fg
6156+ =vector-effect "non-scaling-stroke";
6157+ :: =stroke bg
6158+ :: =stroke-width "0.5"
6159+ ;line
6160+ =x1 "128"
6161+ =y1 "64"
6162+ =x2 "-4.37114e-08"
6163+ =y2 "64"
6164+ =vector-effect "non-scaling-stroke"
6165+ :: =stroke bg
6166+ =fill "none";
6167+ ;line
6168+ =x1 "128"
6169+ =y1 "32"
6170+ =x2 "-4.37114e-08"
6171+ =y2 "32"
6172+ =vector-effect "non-scaling-stroke"
6173+ :: =stroke bg
6174+ =fill "none";
6175+ ;line
6176+ =x1 "128"
6177+ =y1 "96"
6178+ =x2 "-4.37114e-08"
6179+ =y2 "96"
6180+ =vector-effect "non-scaling-stroke"
6181+ :: =stroke bg
6182+ =fill "none";
6183+ ==
6184+::
6185+ :- 'min'
6186+ |= [fg=tape bg=tape]
6187+ :~ ;rect
6188+ =width "128"
6189+ =height "128"
6190+ :: =fill fg
6191+ =vector-effect "non-scaling-stroke";
6192+ :: =stroke bg
6193+ :: =stroke-width "0.5"
6194+ ;line
6195+ =x1 "-0.0029152"
6196+ =x2 "127.983"
6197+ =y2 "127.986"
6198+ =vector-effect "non-scaling-stroke"
6199+ :: =stroke bg
6200+ :: =stroke-linecap "square"
6201+ =fill "none";
6202+ ==
6203+::
6204+ :- 'mip'
6205+ |= [fg=tape bg=tape]
6206+ :~ ;path
6207+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
6208+ :: =fill fg
6209+ =vector-effect "non-scaling-stroke";
6210+ :: =stroke bg
6211+ :: =stroke-width "0.5"
6212+ ;line
6213+ =x1 "64"
6214+ =y1 "2.18557e-08"
6215+ =x2 "64"
6216+ =y2 "128"
6217+ =vector-effect "non-scaling-stroke"
6218+ :: =stroke bg
6219+ =fill "none";
6220+ ;path
6221+ =d "M128 128C92.6538 128 64 99.3462 64 64C64 28.6538 92.6538 4.215e-07 128 0"
6222+ =vector-effect "non-scaling-stroke"
6223+ :: =stroke bg
6224+ =fill "none";
6225+ ;circle
6226+ =cx "64"
6227+ =cy "64"
6228+ =r "16"
6229+ =vector-effect "non-scaling-stroke"
6230+ :: =stroke bg
6231+ =fill "none";
6232+ ==
6233+::
6234+ :- 'mir'
6235+ |= [fg=tape bg=tape]
6236+ :~ ;path
6237+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
6238+ :: =fill fg
6239+ =vector-effect "non-scaling-stroke";
6240+ :: =stroke bg
6241+ :: =stroke-width "0.5"
6242+ ;line
6243+ =x1 "16.0036"
6244+ =y1 "15.9964"
6245+ =x2 "48.0036"
6246+ =y2 "47.9964"
6247+ =vector-effect "non-scaling-stroke"
6248+ :: =stroke bg
6249+ =fill "none";
6250+ ;path
6251+ =d "M96 64C96 46.3269 81.6731 32 64 32"
6252+ =vector-effect "non-scaling-stroke"
6253+ :: =stroke bg
6254+ =fill "none";
6255+ ;circle
6256+ =cx "64"
6257+ =cy "64"
6258+ =r "16"
6259+ =vector-effect "non-scaling-stroke"
6260+ :: =stroke bg
6261+ =fill "none";
6262+ ==
6263+::
6264+ :- 'mis'
6265+ |= [fg=tape bg=tape]
6266+ :~ ;path
6267+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
6268+ :: =fill fg
6269+ =vector-effect "non-scaling-stroke";
6270+ :: =stroke bg
6271+ :: =stroke-width "0.5"
6272+ ;path
6273+ =d "M128 64C92.6538 64 64 92.6538 64 128"
6274+ =vector-effect "non-scaling-stroke"
6275+ :: =stroke bg
6276+ =fill "none";
6277+ ;path
6278+ =d "M-0.00286865 0L127.997 128"
6279+ =vector-effect "non-scaling-stroke"
6280+ :: =stroke bg
6281+ :: =stroke-linecap "square"
6282+ =fill "none";
6283+ ==
6284+::
6285+ :- 'mit'
6286+ |= [fg=tape bg=tape]
6287+ :~ ;path
6288+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
6289+ :: =fill fg
6290+ =vector-effect "non-scaling-stroke";
6291+ :: =stroke bg
6292+ :: =stroke-width "0.5"
6293+ ;line
6294+ =x1 "0.5"
6295+ =y1 "-0.5"
6296+ =x2 "181.5"
6297+ =y2 "-0.5"
6298+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
6299+ =vector-effect "non-scaling-stroke"
6300+ :: =stroke bg
6301+ :: =stroke-linecap "square"
6302+ =fill "none";
6303+ ;circle
6304+ =cx "32"
6305+ =cy "32"
6306+ =r "11.5"
6307+ :: =fill fg
6308+ =vector-effect "non-scaling-stroke"
6309+ =stroke fg;
6310+ ;circle
6311+ =cx "32"
6312+ =cy "32"
6313+ =r "9"
6314+ =fill bg
6315+ =vector-effect "non-scaling-stroke";
6316+ :: =stroke bg
6317+ :: =stroke-width "2"
6318+ ==
6319+::
6320+ :- 'moc'
6321+ |= [fg=tape bg=tape]
6322+ :~ ;path
6323+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
6324+ :: =fill fg
6325+ =vector-effect "non-scaling-stroke";
6326+ :: =stroke bg
6327+ :: =stroke-width "0.5"
6328+ ;path
6329+ =d "M128 64L0 64"
6330+ =vector-effect "non-scaling-stroke"
6331+ :: =stroke bg
6332+ =fill "none";
6333+ ;path
6334+ =d "M128 96L0 96"
6335+ =vector-effect "non-scaling-stroke"
6336+ :: =stroke bg
6337+ =fill "none";
6338+ ;path
6339+ =d "M128 32L0 32"
6340+ =vector-effect "non-scaling-stroke"
6341+ :: =stroke bg
6342+ =fill "none";
6343+ ==
6344+::
6345+ :- 'mod'
6346+ |= [fg=tape bg=tape]
6347+ :~ ;path
6348+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6349+ :: =fill fg
6350+ =vector-effect "non-scaling-stroke";
6351+ :: =stroke bg
6352+ :: =stroke-width "0.5"
6353+ ;path
6354+ =d "M0 96L128 96"
6355+ =vector-effect "non-scaling-stroke"
6356+ :: =stroke bg
6357+ =fill "none";
6358+ ;line
6359+ =x1 "16.0035"
6360+ =y1 "15.9965"
6361+ =x2 "48.0035"
6362+ =y2 "47.9965"
6363+ =vector-effect "non-scaling-stroke"
6364+ :: =stroke bg
6365+ =fill "none";
6366+ ==
6367+::
6368+ :- 'mog'
6369+ |= [fg=tape bg=tape]
6370+ :~ ;path
6371+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
6372+ :: =fill fg
6373+ =vector-effect "non-scaling-stroke";
6374+ :: =stroke bg
6375+ :: =stroke-width "0.5"
6376+ ;line
6377+ =x1 "-0.0029152"
6378+ =x2 "127.983"
6379+ =y2 "127.986"
6380+ =vector-effect "non-scaling-stroke"
6381+ :: =stroke bg
6382+ :: =stroke-linecap "square"
6383+ =fill "none";
6384+ ;circle
6385+ =cx "64"
6386+ =cy "64"
6387+ =r "32"
6388+ =vector-effect "non-scaling-stroke"
6389+ :: =stroke bg
6390+ =fill "none";
6391+ ;circle
6392+ =cx "64"
6393+ =cy "64"
6394+ =r "16"
6395+ =vector-effect "non-scaling-stroke"
6396+ :: =stroke bg
6397+ =fill "none";
6398+ ==
6399+::
6400+ :- 'mol'
6401+ |= [fg=tape bg=tape]
6402+ :~ ;circle
6403+ =cx "64"
6404+ =cy "64"
6405+ =r "64"
6406+ :: =fill fg
6407+ =vector-effect "non-scaling-stroke";
6408+ :: =stroke bg
6409+ :: =stroke-width "0.5"
6410+ ;line
6411+ =x1 "128"
6412+ =y1 "64"
6413+ =x2 "-4.37114e-08"
6414+ =y2 "64"
6415+ =vector-effect "non-scaling-stroke"
6416+ :: =stroke bg
6417+ =fill "none";
6418+ ;path
6419+ =d "M112 64C112 90.5097 90.5097 112 64 112C37.4903 112 16 90.5097 16 64"
6420+ =vector-effect "non-scaling-stroke"
6421+ :: =stroke bg
6422+ =fill "none";
6423+ ;path
6424+ =d "M112 0C112 26.5097 90.5097 48 64 48C37.4903 48 16 26.5097 16 0"
6425+ =vector-effect "non-scaling-stroke"
6426+ :: =stroke bg
6427+ =fill "none";
6428+ ==
6429+::
6430+ :- 'mon'
6431+ |= [fg=tape bg=tape]
6432+ :~ ;path
6433+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
6434+ :: =fill fg
6435+ =vector-effect "non-scaling-stroke";
6436+ :: =stroke bg
6437+ :: =stroke-width "0.5"
6438+ ;path
6439+ =fill-rule "evenodd"
6440+ =clip-rule "evenodd"
6441+ =stroke "none"
6442+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
6443+ =fill bg;
6444+ ==
6445+::
6446+ :- 'mop'
6447+ |= [fg=tape bg=tape]
6448+ :~ ;circle
6449+ =cx "64"
6450+ =cy "64"
6451+ =r "64"
6452+ :: =fill fg
6453+ =vector-effect "non-scaling-stroke";
6454+ :: =stroke bg
6455+ :: =stroke-width "0.5"
6456+ ;line
6457+ =x1 "-0.0029152"
6458+ =x2 "127.983"
6459+ =y2 "127.986"
6460+ =vector-effect "non-scaling-stroke"
6461+ :: =stroke bg
6462+ :: =stroke-linecap "square"
6463+ =fill "none";
6464+ ;circle
6465+ =cx "64"
6466+ =cy "64"
6467+ =r "32"
6468+ =vector-effect "non-scaling-stroke"
6469+ :: =stroke bg
6470+ =fill "none";
6471+ ;circle
6472+ =cx "32"
6473+ =cy "64"
6474+ =r "11.5"
6475+ :: =fill fg
6476+ =vector-effect "non-scaling-stroke"
6477+ =stroke fg;
6478+ ;circle
6479+ =cx "32"
6480+ =cy "64"
6481+ =r "9"
6482+ =fill bg
6483+ =vector-effect "non-scaling-stroke";
6484+ :: =stroke bg
6485+ :: =stroke-width "2"
6486+ ==
6487+::
6488+ :- 'mor'
6489+ |= [fg=tape bg=tape]
6490+ :~ ;path
6491+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6492+ :: =fill fg
6493+ =vector-effect "non-scaling-stroke";
6494+ :: =stroke bg
6495+ :: =stroke-width "0.5"
6496+ ;line
6497+ =x1 "16.0035"
6498+ =y1 "15.9964"
6499+ =x2 "48.0035"
6500+ =y2 "47.9964"
6501+ =vector-effect "non-scaling-stroke"
6502+ :: =stroke bg
6503+ =fill "none";
6504+ ;line
6505+ =x1 "15.9964"
6506+ =y1 "111.996"
6507+ =x2 "47.9964"
6508+ =y2 "79.9964"
6509+ =vector-effect "non-scaling-stroke"
6510+ :: =stroke bg
6511+ =fill "none";
6512+ ;circle
6513+ =cx "64"
6514+ =cy "64"
6515+ =r "11.5"
6516+ :: =fill fg
6517+ =vector-effect "non-scaling-stroke"
6518+ =stroke fg;
6519+ ;circle
6520+ =cx "64"
6521+ =cy "64"
6522+ =r "9"
6523+ =fill bg
6524+ =vector-effect "non-scaling-stroke";
6525+ :: =stroke bg
6526+ :: =stroke-width "2"
6527+ ==
6528+::
6529+ :- 'mos'
6530+ |= [fg=tape bg=tape]
6531+ :~ ;path
6532+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
6533+ :: =fill fg
6534+ =vector-effect "non-scaling-stroke";
6535+ :: =stroke bg
6536+ :: =stroke-width "0.5"
6537+ ;line
6538+ =x1 "0.5"
6539+ =y1 "-0.5"
6540+ =x2 "181.5"
6541+ =y2 "-0.5"
6542+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
6543+ =vector-effect "non-scaling-stroke"
6544+ :: =stroke bg
6545+ :: =stroke-linecap "square"
6546+ =fill "none";
6547+ ;circle
6548+ =cx "96"
6549+ =cy "32"
6550+ =r "11.5"
6551+ :: =fill fg
6552+ =vector-effect "non-scaling-stroke"
6553+ =stroke fg;
6554+ ;circle
6555+ =cx "96"
6556+ =cy "32"
6557+ =r "9"
6558+ =fill bg
6559+ =vector-effect "non-scaling-stroke";
6560+ :: =stroke bg
6561+ :: =stroke-width "2"
6562+ ==
6563+::
6564+ :- 'mot'
6565+ |= [fg=tape bg=tape]
6566+ :~ ;path
6567+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6568+ :: =fill fg
6569+ =vector-effect "non-scaling-stroke";
6570+ :: =stroke bg
6571+ :: =stroke-width "0.5"
6572+ ;path
6573+ =d "M128 96C110.327 96 96 81.6731 96 64C96 46.3269 110.327 32 128 32"
6574+ =vector-effect "non-scaling-stroke"
6575+ :: =stroke bg
6576+ =fill "none";
6577+ ;circle
6578+ =cx "64"
6579+ =cy "64"
6580+ =r "11.5"
6581+ :: =fill fg
6582+ =vector-effect "non-scaling-stroke"
6583+ =stroke fg;
6584+ ;circle
6585+ =cx "64"
6586+ =cy "64"
6587+ =r "9"
6588+ =fill bg
6589+ =vector-effect "non-scaling-stroke";
6590+ :: =stroke bg
6591+ :: =stroke-width "2"
6592+ ==
6593+::
6594+ :- 'mud'
6595+ |= [fg=tape bg=tape]
6596+ :~ ;path
6597+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
6598+ :: =fill fg
6599+ =vector-effect "non-scaling-stroke";
6600+ :: =stroke bg
6601+ :: =stroke-width "0.5"
6602+ ;path
6603+ =d "M-0.00292969 0L127.997 128"
6604+ =vector-effect "non-scaling-stroke"
6605+ :: =stroke bg
6606+ :: =stroke-linecap "square"
6607+ =fill "none";
6608+ ;circle
6609+ =cx "80"
6610+ =cy "80"
6611+ =r "11.5"
6612+ :: =fill fg
6613+ =vector-effect "non-scaling-stroke"
6614+ =stroke fg;
6615+ ;circle
6616+ =cx "80"
6617+ =cy "80"
6618+ =r "9"
6619+ =fill bg
6620+ =vector-effect "non-scaling-stroke";
6621+ :: =stroke bg
6622+ :: =stroke-width "2"
6623+ ==
6624+::
6625+ :- 'mug'
6626+ |= [fg=tape bg=tape]
6627+ :~ ;path
6628+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
6629+ :: =fill fg
6630+ =vector-effect "non-scaling-stroke";
6631+ :: =stroke bg
6632+ :: =stroke-width "0.5"
6633+ ;path
6634+ =d "M64 96C81.6731 96 96 81.6731 96 64C96 46.3269 81.6731 32 64 32"
6635+ =vector-effect "non-scaling-stroke"
6636+ :: =stroke bg
6637+ =fill "none";
6638+ ==
6639+::
6640+ :- 'mul'
6641+ |= [fg=tape bg=tape]
6642+ :~ ;circle
6643+ =cx "64"
6644+ =cy "64"
6645+ =r "64"
6646+ :: =fill fg
6647+ =vector-effect "non-scaling-stroke";
6648+ :: =stroke bg
6649+ :: =stroke-width "0.5"
6650+ ;line
6651+ =x1 "80.0035"
6652+ =y1 "79.9964"
6653+ =x2 "112.003"
6654+ =y2 "111.996"
6655+ =vector-effect "non-scaling-stroke"
6656+ :: =stroke bg
6657+ =fill "none";
6658+ ;path
6659+ =d "M112 64C112 37.4903 90.5097 16 64 16"
6660+ =vector-effect "non-scaling-stroke"
6661+ :: =stroke bg
6662+ =fill "none";
6663+ ==
6664+::
6665+ :- 'mun'
6666+ |= [fg=tape bg=tape]
6667+ :~ ;circle
6668+ =cx "64"
6669+ =cy "64"
6670+ =r "64"
6671+ :: =fill fg
6672+ =vector-effect "non-scaling-stroke";
6673+ :: =stroke bg
6674+ :: =stroke-width "0.5"
6675+ ;path
6676+ =d "M128 64C92.6538 64 64 35.3462 64 0"
6677+ =vector-effect "non-scaling-stroke"
6678+ :: =stroke bg
6679+ =fill "none";
6680+ ;circle
6681+ =cx "64"
6682+ =cy "64"
6683+ =r "11.5"
6684+ :: =fill fg
6685+ =vector-effect "non-scaling-stroke"
6686+ =stroke fg;
6687+ ;circle
6688+ =cx "64"
6689+ =cy "64"
6690+ =r "9"
6691+ =fill bg
6692+ =vector-effect "non-scaling-stroke";
6693+ :: =stroke bg
6694+ :: =stroke-width "2"
6695+ ==
6696+::
6697+ :- 'mur'
6698+ |= [fg=tape bg=tape]
6699+ :~ ;path
6700+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
6701+ :: =fill fg
6702+ =vector-effect "non-scaling-stroke";
6703+ :: =stroke bg
6704+ :: =stroke-width "0.5"
6705+ ;path
6706+ =d "M128 64L0 64"
6707+ =vector-effect "non-scaling-stroke"
6708+ :: =stroke bg
6709+ =fill "none";
6710+ ;circle
6711+ =cx "64"
6712+ =cy "64"
6713+ =r "11.5"
6714+ :: =fill fg
6715+ =vector-effect "non-scaling-stroke"
6716+ =stroke fg;
6717+ ;circle
6718+ =cx "64"
6719+ =cy "64"
6720+ =r "9"
6721+ =fill bg
6722+ =vector-effect "non-scaling-stroke";
6723+ :: =stroke bg
6724+ :: =stroke-width "2"
6725+ ;circle
6726+ =cx "32"
6727+ =cy "64"
6728+ =r "11.5"
6729+ :: =fill fg
6730+ =vector-effect "non-scaling-stroke"
6731+ =stroke fg;
6732+ ;circle
6733+ =cx "32"
6734+ =cy "64"
6735+ =r "9"
6736+ =fill bg
6737+ =vector-effect "non-scaling-stroke";
6738+ :: =stroke bg
6739+ :: =stroke-width "2"
6740+ ==
6741+::
6742+ :- 'mus'
6743+ |= [fg=tape bg=tape]
6744+ :~ ;path
6745+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
6746+ :: =fill fg
6747+ =vector-effect "non-scaling-stroke";
6748+ :: =stroke bg
6749+ :: =stroke-width "0.5"
6750+ ;line
6751+ =x1 "0.5"
6752+ =y1 "-0.5"
6753+ =x2 "181.5"
6754+ =y2 "-0.5"
6755+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
6756+ =vector-effect "non-scaling-stroke"
6757+ :: =stroke bg
6758+ :: =stroke-linecap "square"
6759+ =fill "none";
6760+ ;path
6761+ =d "M96 128C96 74.9807 53.0193 32 0 32"
6762+ =vector-effect "non-scaling-stroke"
6763+ :: =stroke bg
6764+ =fill "none";
6765+ ==
6766+::
6767+ :- 'mut'
6768+ |= [fg=tape bg=tape]
6769+ :~ ;rect
6770+ =width "128"
6771+ =height "128"
6772+ :: =fill fg
6773+ =vector-effect "non-scaling-stroke";
6774+ :: =stroke bg
6775+ :: =stroke-width "0.5"
6776+ ;circle
6777+ =cx "96"
6778+ =cy "32"
6779+ =r "11.5"
6780+ :: =fill fg
6781+ =vector-effect "non-scaling-stroke"
6782+ =stroke fg;
6783+ ;circle
6784+ =cx "96"
6785+ =cy "32"
6786+ =r "9"
6787+ =fill bg
6788+ =vector-effect "non-scaling-stroke";
6789+ :: =stroke bg
6790+ :: =stroke-width "2"
6791+ ==
6792+::
6793+ :- 'myl'
6794+ |= [fg=tape bg=tape]
6795+ :~ ;path
6796+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
6797+ :: =fill fg
6798+ =vector-effect "non-scaling-stroke";
6799+ :: =stroke bg
6800+ :: =stroke-width "0.5"
6801+ ;line
6802+ =x1 "16.0035"
6803+ =y1 "15.9965"
6804+ =x2 "48.0035"
6805+ =y2 "47.9965"
6806+ =vector-effect "non-scaling-stroke"
6807+ :: =stroke bg
6808+ =fill "none";
6809+ ;circle
6810+ =cx "16"
6811+ =cy "16"
6812+ =r "11.5"
6813+ :: =fill fg
6814+ =vector-effect "non-scaling-stroke"
6815+ =stroke fg;
6816+ ;circle
6817+ =cx "16"
6818+ =cy "16"
6819+ =r "9"
6820+ =fill bg
6821+ =vector-effect "non-scaling-stroke";
6822+ :: =stroke bg
6823+ :: =stroke-width "2"
6824+ ==
6825+::
6826+ :- 'myn'
6827+ |= [fg=tape bg=tape]
6828+ :~ ;path
6829+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
6830+ :: =fill fg
6831+ =vector-effect "non-scaling-stroke";
6832+ :: =stroke bg
6833+ :: =stroke-width "0.5"
6834+ ;path
6835+ =d "M128 1.52638e-06C57.3076 -7.74381e-06 9.2702e-06 57.3075 0 128"
6836+ =vector-effect "non-scaling-stroke"
6837+ :: =stroke bg
6838+ =fill "none";
6839+ ;path
6840+ =d "M128 32C74.9807 32 32 74.9807 32 128"
6841+ =vector-effect "non-scaling-stroke"
6842+ :: =stroke bg
6843+ =fill "none";
6844+ ;path
6845+ =d "M128 64C92.6538 64 64 92.6538 64 128"
6846+ =vector-effect "non-scaling-stroke"
6847+ :: =stroke bg
6848+ =fill "none";
6849+ ;path
6850+ =d "M128 96C110.327 96 96 110.327 96 128"
6851+ =vector-effect "non-scaling-stroke"
6852+ :: =stroke bg
6853+ =fill "none";
6854+ ==
6855+::
6856+ :- 'myr'
6857+ |= [fg=tape bg=tape]
6858+ :~ ;path
6859+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
6860+ :: =fill fg
6861+ =vector-effect "non-scaling-stroke";
6862+ :: =stroke bg
6863+ :: =stroke-width "0.5"
6864+ ;path
6865+ =d "M-0.00292969 0L127.997 128"
6866+ =vector-effect "non-scaling-stroke"
6867+ :: =stroke bg
6868+ :: =stroke-linecap "square"
6869+ =fill "none";
6870+ ;circle
6871+ =cx "32"
6872+ =cy "96"
6873+ =r "11.5"
6874+ :: =fill fg
6875+ =vector-effect "non-scaling-stroke"
6876+ =stroke fg;
6877+ ;circle
6878+ =cx "32"
6879+ =cy "96"
6880+ =r "9"
6881+ =fill bg
6882+ =vector-effect "non-scaling-stroke";
6883+ :: =stroke bg
6884+ :: =stroke-width "2"
6885+ ==
6886+::
6887+ :- 'nac'
6888+ |= [fg=tape bg=tape]
6889+ :~ ;path
6890+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
6891+ :: =fill fg
6892+ =vector-effect "non-scaling-stroke";
6893+ :: =stroke bg
6894+ :: =stroke-width "0.5"
6895+ ;circle
6896+ =cx "64"
6897+ =cy "64"
6898+ =r "16"
6899+ =vector-effect "non-scaling-stroke"
6900+ :: =stroke bg
6901+ =fill "none";
6902+ ;circle
6903+ =cx "16"
6904+ =cy "112"
6905+ =r "11.5"
6906+ =fill bg
6907+ =vector-effect "non-scaling-stroke";
6908+ :: =stroke bg
6909+ ;circle
6910+ =cx "16"
6911+ =cy "112"
6912+ =r "9"
6913+ :: =fill fg
6914+ =vector-effect "non-scaling-stroke"
6915+ =stroke fg;
6916+ :: =stroke-width "2"
6917+ ==
6918+::
6919+ :- 'nal'
6920+ |= [fg=tape bg=tape]
6921+ :~ ;path
6922+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
6923+ :: =fill fg
6924+ =vector-effect "non-scaling-stroke";
6925+ :: =stroke bg
6926+ :: =stroke-width "0.5"
6927+ ;line
6928+ =x1 "-0.0029152"
6929+ =x2 "127.983"
6930+ =y2 "127.986"
6931+ =vector-effect "non-scaling-stroke"
6932+ :: =stroke bg
6933+ :: =stroke-linecap "square"
6934+ =fill "none";
6935+ ;path
6936+ =d "M2.82114e-06 110C60.7513 110 110 60.7513 110 0"
6937+ =vector-effect "non-scaling-stroke"
6938+ :: =stroke bg
6939+ =fill "none";
6940+ ;path
6941+ =d "M-5.09828e-06 73C40.3168 73 73 40.3168 73 0"
6942+ =vector-effect "non-scaling-stroke"
6943+ :: =stroke bg
6944+ =fill "none";
6945+ ;path
6946+ =d "M-6.63647e-07 37C20.4345 37 37 20.4345 37 0"
6947+ =vector-effect "non-scaling-stroke"
6948+ :: =stroke bg
6949+ =fill "none";
6950+ ==
6951+::
6952+ :- 'nam'
6953+ |= [fg=tape bg=tape]
6954+ :~ ;path
6955+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
6956+ :: =fill fg
6957+ =vector-effect "non-scaling-stroke";
6958+ :: =stroke bg
6959+ :: =stroke-width "0.5"
6960+ ;line
6961+ =x1 "8.74228e-08"
6962+ =y1 "64"
6963+ =x2 "128"
6964+ =y2 "64"
6965+ =vector-effect "non-scaling-stroke"
6966+ :: =stroke bg
6967+ =fill "none";
6968+ ;circle
6969+ =cx "64"
6970+ =cy "64"
6971+ =r "11.5"
6972+ :: =fill fg
6973+ =vector-effect "non-scaling-stroke"
6974+ =stroke fg;
6975+ ;circle
6976+ =cx "64"
6977+ =cy "64"
6978+ =r "9"
6979+ =fill bg
6980+ =vector-effect "non-scaling-stroke";
6981+ :: =stroke bg
6982+ :: =stroke-width "2"
6983+ ;circle
6984+ =cx "112"
6985+ =cy "64"
6986+ =r "11.5"
6987+ :: =fill fg
6988+ =vector-effect "non-scaling-stroke"
6989+ =stroke fg;
6990+ ;circle
6991+ =cx "112"
6992+ =cy "64"
6993+ =r "9"
6994+ =fill bg
6995+ =vector-effect "non-scaling-stroke";
6996+ :: =stroke bg
6997+ :: =stroke-width "2"
6998+ ==
6999+::
7000+ :- 'nap'
7001+ |= [fg=tape bg=tape]
7002+ :~ ;path
7003+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
7004+ :: =fill fg
7005+ =vector-effect "non-scaling-stroke";
7006+ :: =stroke bg
7007+ :: =stroke-width "0.5"
7008+ ;line
7009+ =x1 "64"
7010+ =y1 "2.18557e-08"
7011+ =x2 "64"
7012+ =y2 "128"
7013+ =vector-effect "non-scaling-stroke"
7014+ :: =stroke bg
7015+ =fill "none";
7016+ ;circle
7017+ =cx "96"
7018+ =cy "32"
7019+ =r "11.5"
7020+ :: =fill fg
7021+ =vector-effect "non-scaling-stroke"
7022+ =stroke fg;
7023+ ;circle
7024+ =cx "96"
7025+ =cy "32"
7026+ =r "9"
7027+ =fill bg
7028+ =vector-effect "non-scaling-stroke";
7029+ :: =stroke bg
7030+ :: =stroke-width "2"
7031+ ;circle
7032+ =cx "96"
7033+ =cy "96"
7034+ =r "11.5"
7035+ :: =fill fg
7036+ =vector-effect "non-scaling-stroke"
7037+ =stroke fg;
7038+ ;circle
7039+ =cx "96"
7040+ =cy "96"
7041+ =r "9"
7042+ =fill bg
7043+ =vector-effect "non-scaling-stroke";
7044+ :: =stroke bg
7045+ :: =stroke-width "2"
7046+ ==
7047+::
7048+ :- 'nar'
7049+ |= [fg=tape bg=tape]
7050+ :~ ;circle
7051+ =cx "64"
7052+ =cy "64"
7053+ =r "64"
7054+ :: =fill fg
7055+ =vector-effect "non-scaling-stroke";
7056+ :: =stroke bg
7057+ :: =stroke-width "0.5"
7058+ ;circle
7059+ =cx "64"
7060+ =cy "64"
7061+ =r "32"
7062+ =vector-effect "non-scaling-stroke"
7063+ :: =stroke bg
7064+ =fill "none";
7065+ ;circle
7066+ =cx "64"
7067+ =cy "64"
7068+ =r "8"
7069+ =vector-effect "non-scaling-stroke"
7070+ :: =stroke bg
7071+ =fill "none";
7072+ ==
7073+::
7074+ :- 'nat'
7075+ |= [fg=tape bg=tape]
7076+ :~ ;path
7077+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
7078+ :: =fill fg
7079+ =vector-effect "non-scaling-stroke";
7080+ :: =stroke bg
7081+ :: =stroke-width "0.5"
7082+ ;path
7083+ =d "M-1.52588e-05 128C-9.07866e-06 57.3075 57.3076 1.44926e-06 128 7.62939e-06"
7084+ =vector-effect "non-scaling-stroke"
7085+ :: =stroke bg
7086+ =fill "none";
7087+ ==
7088+::
7089+ :- 'nav'
7090+ |= [fg=tape bg=tape]
7091+ :~ ;path
7092+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
7093+ :: =fill fg
7094+ =vector-effect "non-scaling-stroke";
7095+ :: =stroke bg
7096+ :: =stroke-width "0.5"
7097+ ;path
7098+ =d "M128 96C101.492 96 77.4939 85.2564 60.1217 67.8862"
7099+ =vector-effect "non-scaling-stroke"
7100+ :: =stroke bg
7101+ =fill "none";
7102+ ;path
7103+ =d "M128 64C110.328 64 94.3287 56.8374 82.7471 45.2568"
7104+ =vector-effect "non-scaling-stroke"
7105+ :: =stroke bg
7106+ =fill "none";
7107+ ;path
7108+ =d "M128 32.3716C119.164 32.3716 111.164 28.7903 105.374 23"
7109+ =vector-effect "non-scaling-stroke"
7110+ :: =stroke bg
7111+ =fill "none";
7112+ ==
7113+::
7114+ :- 'neb'
7115+ |= [fg=tape bg=tape]
7116+ :~ ;rect
7117+ =width "128"
7118+ =height "128"
7119+ :: =fill fg
7120+ =vector-effect "non-scaling-stroke";
7121+ :: =stroke bg
7122+ :: =stroke-width "0.5"
7123+ ;path
7124+ =d "M128 32C74.9807 32 32 74.9807 32 128"
7125+ =vector-effect "non-scaling-stroke"
7126+ :: =stroke bg
7127+ =fill "none";
7128+ ==
7129+::
7130+ :- 'nec'
7131+ |= [fg=tape bg=tape]
7132+ :~ ;path
7133+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
7134+ :: =fill fg
7135+ =vector-effect "non-scaling-stroke";
7136+ :: =stroke bg
7137+ :: =stroke-width "0.5"
7138+ ;circle
7139+ =cx "32"
7140+ =cy "32"
7141+ =r "11.5"
7142+ :: =fill fg
7143+ =vector-effect "non-scaling-stroke"
7144+ =stroke fg;
7145+ ;circle
7146+ =cx "32"
7147+ =cy "32"
7148+ =r "9"
7149+ =fill bg
7150+ =vector-effect "non-scaling-stroke";
7151+ :: =stroke bg
7152+ :: =stroke-width "2"
7153+ ;circle
7154+ =cx "96"
7155+ =cy "96"
7156+ =r "11.5"
7157+ :: =fill fg
7158+ =vector-effect "non-scaling-stroke"
7159+ =stroke fg;
7160+ ;circle
7161+ =cx "96"
7162+ =cy "96"
7163+ =r "9"
7164+ =fill bg
7165+ =vector-effect "non-scaling-stroke";
7166+ :: =stroke bg
7167+ :: =stroke-width "2"
7168+ ;path
7169+ =d "M64 0L64 128"
7170+ =vector-effect "non-scaling-stroke"
7171+ :: =stroke bg
7172+ =fill "none";
7173+ ==
7174+::
7175+ :- 'ned'
7176+ |= [fg=tape bg=tape]
7177+ :~ ;circle
7178+ =cx "64"
7179+ =cy "64"
7180+ =r "64"
7181+ :: =fill fg
7182+ =vector-effect "non-scaling-stroke";
7183+ :: =stroke bg
7184+ :: =stroke-width "0.5"
7185+ ;circle
7186+ =cx "64"
7187+ =cy "64"
7188+ =r "11.5"
7189+ :: =fill fg
7190+ =vector-effect "non-scaling-stroke"
7191+ =stroke fg;
7192+ ;circle
7193+ =cx "64"
7194+ =cy "64"
7195+ =r "9"
7196+ =fill bg
7197+ =vector-effect "non-scaling-stroke";
7198+ :: =stroke bg
7199+ :: =stroke-width "2"
7200+ ==
7201+::
7202+ :- 'nel'
7203+ |= [fg=tape bg=tape]
7204+ :~ ;path
7205+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
7206+ :: =fill fg
7207+ =vector-effect "non-scaling-stroke";
7208+ :: =stroke bg
7209+ :: =stroke-width "0.5"
7210+ ;path
7211+ =d "M-0.00268555 0L127.997 128"
7212+ =vector-effect "non-scaling-stroke"
7213+ :: =stroke bg
7214+ :: =stroke-linecap "square"
7215+ =fill "none";
7216+ ;path
7217+ =d "M96 1.90735e-06C96 53.0193 53.0193 96 0 96"
7218+ =vector-effect "non-scaling-stroke"
7219+ :: =stroke bg
7220+ =fill "none";
7221+ ==
7222+::
7223+ :- 'nem'
7224+ |= [fg=tape bg=tape]
7225+ :~ ;circle
7226+ =cx "64"
7227+ =cy "64"
7228+ =r "64"
7229+ :: =fill fg
7230+ =vector-effect "non-scaling-stroke";
7231+ :: =stroke bg
7232+ :: =stroke-width "0.5"
7233+ ;path
7234+ =d "M-0.00292969 0L127.997 128"
7235+ =vector-effect "non-scaling-stroke"
7236+ :: =stroke bg
7237+ :: =stroke-linecap "square"
7238+ =fill "none";
7239+ ;path
7240+ =d "M128 64C92.6538 64 64 92.6538 64 128"
7241+ =vector-effect "non-scaling-stroke"
7242+ :: =stroke bg
7243+ =fill "none";
7244+ ;circle
7245+ =cx "32"
7246+ =cy "32"
7247+ =r "11.5"
7248+ :: =fill fg
7249+ =vector-effect "non-scaling-stroke"
7250+ =stroke fg;
7251+ ;circle
7252+ =cx "32"
7253+ =cy "32"
7254+ =r "9"
7255+ =fill bg
7256+ =vector-effect "non-scaling-stroke";
7257+ :: =stroke bg
7258+ :: =stroke-width "2"
7259+ ==
7260+::
7261+ :- 'nep'
7262+ |= [fg=tape bg=tape]
7263+ :~ ;path
7264+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
7265+ :: =fill fg
7266+ =vector-effect "non-scaling-stroke";
7267+ :: =stroke bg
7268+ :: =stroke-width "0.5"
7269+ ;path
7270+ =d "M128 128C57.3076 128 3.09007e-06 70.6925 0 0"
7271+ =vector-effect "non-scaling-stroke"
7272+ :: =stroke bg
7273+ =fill "none";
7274+ ;path
7275+ =d "M128 96C74.9807 96 32 53.0193 32 0"
7276+ =vector-effect "non-scaling-stroke"
7277+ :: =stroke bg
7278+ =fill "none";
7279+ ;path
7280+ =d "M128 64C92.6538 64 64 35.3462 64 0"
7281+ =vector-effect "non-scaling-stroke"
7282+ :: =stroke bg
7283+ =fill "none";
7284+ ;path
7285+ =d "M128 32C110.327 32 96 17.6731 96 0"
7286+ =vector-effect "non-scaling-stroke"
7287+ :: =stroke bg
7288+ =fill "none";
7289+ ==
7290+::
7291+ :- 'ner'
7292+ |= [fg=tape bg=tape]
7293+ :~ ;path
7294+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
7295+ :: =fill fg
7296+ =vector-effect "non-scaling-stroke";
7297+ :: =stroke bg
7298+ :: =stroke-width "0.5"
7299+ ;path
7300+ =d "M64 0L64 128"
7301+ =vector-effect "non-scaling-stroke"
7302+ :: =stroke bg
7303+ =fill "none";
7304+ ;line
7305+ =x1 "15.9965"
7306+ =y1 "111.997"
7307+ =x2 "47.9965"
7308+ =y2 "79.9965"
7309+ =vector-effect "non-scaling-stroke"
7310+ :: =stroke bg
7311+ =fill "none";
7312+ ==
7313+::
7314+ :- 'nes'
7315+ |= [fg=tape bg=tape]
7316+ :~ ;path
7317+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
7318+ :: =fill fg
7319+ =vector-effect "non-scaling-stroke";
7320+ :: =stroke bg
7321+ :: =stroke-width "0.5"
7322+ ;path
7323+ =d "M64 0L64 128"
7324+ =vector-effect "non-scaling-stroke"
7325+ :: =stroke bg
7326+ =fill "none";
7327+ ==
7328+::
7329+ :- 'net'
7330+ |= [fg=tape bg=tape]
7331+ :~ ;circle
7332+ =cx "64"
7333+ =cy "64"
7334+ =r "64"
7335+ :: =fill fg
7336+ =vector-effect "non-scaling-stroke";
7337+ :: =stroke bg
7338+ :: =stroke-width "0.5"
7339+ ;path
7340+ =d "M64 64L64 128"
7341+ =vector-effect "non-scaling-stroke"
7342+ :: =stroke bg
7343+ =fill "none";
7344+ ==
7345+::
7346+ :- 'nev'
7347+ |= [fg=tape bg=tape]
7348+ :~ ;path
7349+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
7350+ :: =fill fg
7351+ =vector-effect "non-scaling-stroke";
7352+ :: =stroke bg
7353+ :: =stroke-width "0.5"
7354+ ;circle
7355+ =cx "64"
7356+ =cy "64"
7357+ =r "16"
7358+ =vector-effect "non-scaling-stroke"
7359+ :: =stroke bg
7360+ =fill "none";
7361+ ;circle
7362+ =cx "32"
7363+ =cy "32"
7364+ =r "11.5"
7365+ :: =fill fg
7366+ =vector-effect "non-scaling-stroke"
7367+ =stroke fg;
7368+ ;circle
7369+ =cx "32"
7370+ =cy "32"
7371+ =r "9"
7372+ =fill bg
7373+ =vector-effect "non-scaling-stroke";
7374+ :: =stroke bg
7375+ :: =stroke-width "2"
7376+ ==
7377+::
7378+ :- 'nex'
7379+ |= [fg=tape bg=tape]
7380+ :~ ;path
7381+ =d "M64 128H0L5.59506e-06 -7.62939e-06L64 -2.03434e-06C99.3462 1.05573e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
7382+ :: =fill fg
7383+ =vector-effect "non-scaling-stroke";
7384+ :: =stroke bg
7385+ :: =stroke-width "0.5"
7386+ ;line
7387+ =x1 "80.0035"
7388+ =y1 "79.9964"
7389+ =x2 "112.003"
7390+ =y2 "111.996"
7391+ =vector-effect "non-scaling-stroke"
7392+ :: =stroke bg
7393+ =fill "none";
7394+ ;path
7395+ =fill-rule "evenodd"
7396+ =clip-rule "evenodd"
7397+ =stroke "none"
7398+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
7399+ =fill bg;
7400+ ==
7401+::
7402+ :- 'nib'
7403+ |= [fg=tape bg=tape]
7404+ :~ ;circle
7405+ =cx "64"
7406+ =cy "64"
7407+ =r "64"
7408+ :: =fill fg
7409+ =vector-effect "non-scaling-stroke";
7410+ :: =stroke bg
7411+ :: =stroke-width "0.5"
7412+ ;path
7413+ =d "M128 64L0 64"
7414+ =vector-effect "non-scaling-stroke"
7415+ :: =stroke bg
7416+ =fill "none";
7417+ ;path
7418+ =d "M128 96L0 96"
7419+ =vector-effect "non-scaling-stroke"
7420+ :: =stroke bg
7421+ =fill "none";
7422+ ==
7423+::
7424+ :- 'nid'
7425+ |= [fg=tape bg=tape]
7426+ :~ ;path
7427+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
7428+ :: =fill fg
7429+ =vector-effect "non-scaling-stroke";
7430+ :: =stroke bg
7431+ :: =stroke-width "0.5"
7432+ ;path
7433+ =d "M128 64L0 64"
7434+ =vector-effect "non-scaling-stroke"
7435+ :: =stroke bg
7436+ =fill "none";
7437+ ;path
7438+ =d "M128 128C92.6538 128 64 70.6925 64 7.63192e-07"
7439+ =vector-effect "non-scaling-stroke"
7440+ :: =stroke bg
7441+ =fill "none";
7442+ ==
7443+::
7444+ :- 'nil'
7445+ |= [fg=tape bg=tape]
7446+ :~ ;path
7447+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
7448+ :: =fill fg
7449+ =vector-effect "non-scaling-stroke";
7450+ :: =stroke bg
7451+ :: =stroke-width "0.5"
7452+ ;line
7453+ =x1 "128"
7454+ =y1 "64"
7455+ =x2 "-8.87604e-09"
7456+ =y2 "64"
7457+ =vector-effect "non-scaling-stroke"
7458+ :: =stroke bg
7459+ =fill "none";
7460+ ;line
7461+ =x1 "128"
7462+ =y1 "32"
7463+ =x2 "-8.87604e-09"
7464+ =y2 "32"
7465+ =vector-effect "non-scaling-stroke"
7466+ :: =stroke bg
7467+ =fill "none";
7468+ ==
7469+::
7470+ :- 'nim'
7471+ |= [fg=tape bg=tape]
7472+ :~ ;path
7473+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
7474+ :: =fill fg
7475+ =vector-effect "non-scaling-stroke";
7476+ :: =stroke bg
7477+ :: =stroke-width "0.5"
7478+ ;line
7479+ =x1 "64"
7480+ =y1 "2.18557e-08"
7481+ =x2 "64"
7482+ =y2 "128"
7483+ =vector-effect "non-scaling-stroke"
7484+ :: =stroke bg
7485+ =fill "none";
7486+ ==
7487+::
7488+ :- 'nis'
7489+ |= [fg=tape bg=tape]
7490+ :~ ;path
7491+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
7492+ :: =fill fg
7493+ =vector-effect "non-scaling-stroke";
7494+ :: =stroke bg
7495+ :: =stroke-width "0.5"
7496+ ;path
7497+ =d "M128 32C74.9807 32 32 74.9807 32 128"
7498+ =vector-effect "non-scaling-stroke"
7499+ :: =stroke bg
7500+ =fill "none";
7501+ ;path
7502+ =d "M-0.00285435 0L127.997 128"
7503+ =vector-effect "non-scaling-stroke"
7504+ :: =stroke bg
7505+ :: =stroke-linecap "square"
7506+ =fill "none";
7507+ ==
7508+::
7509+ :- 'noc'
7510+ |= [fg=tape bg=tape]
7511+ :~ ;path
7512+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
7513+ :: =fill fg
7514+ =vector-effect "non-scaling-stroke";
7515+ :: =stroke bg
7516+ :: =stroke-width "0.5"
7517+ ;line
7518+ =x1 "64"
7519+ =y1 "2.18557e-08"
7520+ =x2 "64"
7521+ =y2 "128"
7522+ =vector-effect "non-scaling-stroke"
7523+ :: =stroke bg
7524+ =fill "none";
7525+ ;circle
7526+ =cx "64"
7527+ =cy "64"
7528+ =r "11.5"
7529+ :: =fill fg
7530+ =vector-effect "non-scaling-stroke"
7531+ =stroke fg;
7532+ ;circle
7533+ =cx "64"
7534+ =cy "64"
7535+ =r "9"
7536+ =fill bg
7537+ =vector-effect "non-scaling-stroke";
7538+ :: =stroke bg
7539+ :: =stroke-width "2"
7540+ ==
7541+::
7542+ :- 'nod'
7543+ |= [fg=tape bg=tape]
7544+ :~ ;path
7545+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
7546+ :: =fill fg
7547+ =vector-effect "non-scaling-stroke";
7548+ :: =stroke bg
7549+ :: =stroke-width "0.5"
7550+ ;circle
7551+ =cx "32"
7552+ =cy "64"
7553+ =r "11.5"
7554+ :: =fill fg
7555+ =vector-effect "non-scaling-stroke"
7556+ =stroke fg;
7557+ ;circle
7558+ =cx "32"
7559+ =cy "64"
7560+ =r "9"
7561+ =fill bg
7562+ =vector-effect "non-scaling-stroke";
7563+ :: =stroke bg
7564+ :: =stroke-width "2"
7565+ ;circle
7566+ =cx "96"
7567+ =cy "64"
7568+ =r "11.5"
7569+ :: =fill fg
7570+ =vector-effect "non-scaling-stroke"
7571+ =stroke fg;
7572+ ;circle
7573+ =cx "96"
7574+ =cy "64"
7575+ =r "9"
7576+ =fill bg
7577+ =vector-effect "non-scaling-stroke";
7578+ :: =stroke bg
7579+ :: =stroke-width "2"
7580+ ==
7581+::
7582+ :- 'nol'
7583+ |= [fg=tape bg=tape]
7584+ :~ ;circle
7585+ =cx "64"
7586+ =cy "64"
7587+ =r "64"
7588+ :: =fill fg
7589+ =vector-effect "non-scaling-stroke";
7590+ :: =stroke bg
7591+ :: =stroke-width "0.5"
7592+ ;line
7593+ =x1 "128"
7594+ =y1 "64"
7595+ =x2 "1.51277e-05"
7596+ =y2 "64"
7597+ =vector-effect "non-scaling-stroke"
7598+ :: =stroke bg
7599+ =fill "none";
7600+ ;circle
7601+ =cx "64"
7602+ =cy "96"
7603+ =r "11.5"
7604+ :: =fill fg
7605+ =vector-effect "non-scaling-stroke"
7606+ =stroke fg;
7607+ ;circle
7608+ =cx "64"
7609+ =cy "96"
7610+ =r "9"
7611+ =fill bg
7612+ =vector-effect "non-scaling-stroke";
7613+ :: =stroke bg
7614+ :: =stroke-width "2"
7615+ ==
7616+::
7617+ :- 'nom'
7618+ |= [fg=tape bg=tape]
7619+ :~ ;rect
7620+ =width "128"
7621+ =height "128"
7622+ :: =fill fg
7623+ =vector-effect "non-scaling-stroke";
7624+ :: =stroke bg
7625+ :: =stroke-width "0.5"
7626+ ;circle
7627+ =cx "32"
7628+ =cy "96"
7629+ =r "11.5"
7630+ :: =fill fg
7631+ =vector-effect "non-scaling-stroke"
7632+ =stroke fg;
7633+ ;circle
7634+ =cx "32"
7635+ =cy "96"
7636+ =r "9"
7637+ =fill bg
7638+ =vector-effect "non-scaling-stroke";
7639+ :: =stroke bg
7640+ :: =stroke-width "2"
7641+ ;circle
7642+ =cx "96"
7643+ =cy "96"
7644+ =r "11.5"
7645+ :: =fill fg
7646+ =vector-effect "non-scaling-stroke"
7647+ =stroke fg;
7648+ ;circle
7649+ =cx "96"
7650+ =cy "96"
7651+ =r "9"
7652+ =fill bg
7653+ =vector-effect "non-scaling-stroke";
7654+ :: =stroke bg
7655+ :: =stroke-width "2"
7656+ ;circle
7657+ =cx "96"
7658+ =cy "32"
7659+ =r "11.5"
7660+ :: =fill fg
7661+ =vector-effect "non-scaling-stroke"
7662+ =stroke fg;
7663+ ;circle
7664+ =cx "96"
7665+ =cy "32"
7666+ =r "9"
7667+ =fill bg
7668+ =vector-effect "non-scaling-stroke";
7669+ :: =stroke bg
7670+ :: =stroke-width "2"
7671+ ==
7672+::
7673+ :- 'nop'
7674+ |= [fg=tape bg=tape]
7675+ :~ ;circle
7676+ =cx "64"
7677+ =cy "64"
7678+ =r "64"
7679+ :: =fill fg
7680+ =vector-effect "non-scaling-stroke";
7681+ :: =stroke bg
7682+ :: =stroke-width "0.5"
7683+ ;line
7684+ =x1 "-0.0029152"
7685+ =x2 "127.983"
7686+ =y2 "127.986"
7687+ =vector-effect "non-scaling-stroke"
7688+ :: =stroke bg
7689+ :: =stroke-linecap "square"
7690+ =fill "none";
7691+ ;line
7692+ =y1 "-0.5"
7693+ =x2 "45.2548"
7694+ =y2 "-0.5"
7695+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.65)"
7696+ =vector-effect "non-scaling-stroke"
7697+ :: =stroke bg
7698+ =fill "none";
7699+ ;circle
7700+ =cx "64"
7701+ =cy "64"
7702+ =r "11.5"
7703+ :: =fill fg
7704+ =vector-effect "non-scaling-stroke"
7705+ =stroke fg;
7706+ ;circle
7707+ =cx "64"
7708+ =cy "64"
7709+ =r "9"
7710+ =fill bg
7711+ =vector-effect "non-scaling-stroke";
7712+ :: =stroke bg
7713+ :: =stroke-width "2"
7714+ ==
7715+::
7716+ :- 'nor'
7717+ |= [fg=tape bg=tape]
7718+ :~ ;path
7719+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
7720+ :: =fill fg
7721+ =vector-effect "non-scaling-stroke";
7722+ :: =stroke bg
7723+ :: =stroke-width "0.5"
7724+ ;path
7725+ =d "M64 96C46.3269 96 32 81.6731 32 64"
7726+ =vector-effect "non-scaling-stroke"
7727+ :: =stroke bg
7728+ =fill "none";
7729+ ;circle
7730+ =cx "64"
7731+ =cy "64"
7732+ =r "11.5"
7733+ :: =fill fg
7734+ =vector-effect "non-scaling-stroke"
7735+ =stroke fg;
7736+ ;circle
7737+ =cx "64"
7738+ =cy "64"
7739+ =r "9"
7740+ =fill bg
7741+ =vector-effect "non-scaling-stroke";
7742+ :: =stroke bg
7743+ :: =stroke-width "2"
7744+ ==
7745+::
7746+ :- 'nos'
7747+ |= [fg=tape bg=tape]
7748+ :~ ;path
7749+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
7750+ :: =fill fg
7751+ =vector-effect "non-scaling-stroke";
7752+ :: =stroke bg
7753+ :: =stroke-width "0.5"
7754+ ;line
7755+ =x1 "0.5"
7756+ =y1 "-0.5"
7757+ =x2 "181.5"
7758+ =y2 "-0.5"
7759+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
7760+ =vector-effect "non-scaling-stroke"
7761+ :: =stroke bg
7762+ :: =stroke-linecap "square"
7763+ =fill "none";
7764+ ;circle
7765+ =cx "32"
7766+ =cy "32"
7767+ =r "11.5"
7768+ :: =fill fg
7769+ =vector-effect "non-scaling-stroke"
7770+ =stroke fg;
7771+ ;circle
7772+ =cx "32"
7773+ =cy "32"
7774+ =r "9"
7775+ =fill bg
7776+ =vector-effect "non-scaling-stroke";
7777+ :: =stroke bg
7778+ :: =stroke-width "2"
7779+ ==
7780+::
7781+ :- 'nov'
7782+ |= [fg=tape bg=tape]
7783+ :~ ;rect
7784+ =width "128"
7785+ =height "128"
7786+ :: =fill fg
7787+ =vector-effect "non-scaling-stroke";
7788+ :: =stroke bg
7789+ :: =stroke-width "0.5"
7790+ ;line
7791+ =x1 "-0.0029152"
7792+ =x2 "127.983"
7793+ =y2 "127.986"
7794+ =vector-effect "non-scaling-stroke"
7795+ :: =stroke bg
7796+ :: =stroke-linecap "square"
7797+ =fill "none";
7798+ ;path
7799+ =d "M2.03434e-06 128C70.6924 128 128 70.6925 128 0"
7800+ =vector-effect "non-scaling-stroke"
7801+ :: =stroke bg
7802+ =fill "none";
7803+ ;path
7804+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
7805+ =vector-effect "non-scaling-stroke"
7806+ :: =stroke bg
7807+ =fill "none";
7808+ ;path
7809+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
7810+ =vector-effect "non-scaling-stroke"
7811+ :: =stroke bg
7812+ =fill "none";
7813+ ;path
7814+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
7815+ =vector-effect "non-scaling-stroke"
7816+ :: =stroke bg
7817+ =fill "none";
7818+ ==
7819+::
7820+ :- 'nub'
7821+ |= [fg=tape bg=tape]
7822+ :~ ;path
7823+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
7824+ :: =fill fg
7825+ =vector-effect "non-scaling-stroke";
7826+ :: =stroke bg
7827+ :: =stroke-width "0.5"
7828+ ;path
7829+ =d "M128 64L0 64"
7830+ =vector-effect "non-scaling-stroke"
7831+ :: =stroke bg
7832+ =fill "none";
7833+ ==
7834+::
7835+ :- 'nul'
7836+ |= [fg=tape bg=tape]
7837+ :~ ;circle
7838+ =cx "64"
7839+ =cy "64"
7840+ =r "64"
7841+ :: =fill fg
7842+ =vector-effect "non-scaling-stroke";
7843+ :: =stroke bg
7844+ :: =stroke-width "0.5"
7845+ ;circle
7846+ =cx "64"
7847+ =cy "64"
7848+ =r "32"
7849+ =vector-effect "non-scaling-stroke"
7850+ :: =stroke bg
7851+ =fill "none";
7852+ ;circle
7853+ =cx "32"
7854+ =cy "64"
7855+ =r "11.5"
7856+ :: =fill fg
7857+ =vector-effect "non-scaling-stroke"
7858+ =stroke fg;
7859+ ;circle
7860+ =cx "32"
7861+ =cy "64"
7862+ =r "9"
7863+ =fill bg
7864+ =vector-effect "non-scaling-stroke";
7865+ :: =stroke bg
7866+ :: =stroke-width "2"
7867+ ==
7868+::
7869+ :- 'num'
7870+ |= [fg=tape bg=tape]
7871+ :~ ;path
7872+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
7873+ :: =fill fg
7874+ =vector-effect "non-scaling-stroke";
7875+ :: =stroke bg
7876+ :: =stroke-width "0.5"
7877+ ;path
7878+ =d "M128 0L0 128"
7879+ =vector-effect "non-scaling-stroke"
7880+ :: =stroke bg
7881+ :: =stroke-linecap "square"
7882+ =fill "none";
7883+ ;circle
7884+ =cx "32"
7885+ =cy "32"
7886+ =r "11.5"
7887+ :: =fill fg
7888+ =vector-effect "non-scaling-stroke"
7889+ =stroke fg;
7890+ ;circle
7891+ =cx "32"
7892+ =cy "32"
7893+ =r "9"
7894+ =fill bg
7895+ =vector-effect "non-scaling-stroke";
7896+ :: =stroke bg
7897+ :: =stroke-width "2"
7898+ ;circle
7899+ =cx "96"
7900+ =cy "96"
7901+ =r "11.5"
7902+ :: =fill fg
7903+ =vector-effect "non-scaling-stroke"
7904+ =stroke fg;
7905+ ;circle
7906+ =cx "96"
7907+ =cy "96"
7908+ =r "9"
7909+ =fill bg
7910+ =vector-effect "non-scaling-stroke";
7911+ :: =stroke bg
7912+ :: =stroke-width "2"
7913+ ==
7914+::
7915+ :- 'nup'
7916+ |= [fg=tape bg=tape]
7917+ :~ ;path
7918+ =d "M64 128H0L5.59506e-06 -7.62939e-06L64 -2.03434e-06C99.3462 1.05573e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
7919+ :: =fill fg
7920+ =vector-effect "non-scaling-stroke";
7921+ :: =stroke bg
7922+ :: =stroke-width "0.5"
7923+ ;path
7924+ =d "M64 16C90.5097 16 112 37.4903 112 64C112 90.5097 90.5097 112 64 112"
7925+ =vector-effect "non-scaling-stroke"
7926+ :: =stroke bg
7927+ =fill "none";
7928+ ==
7929+::
7930+ :- 'nus'
7931+ |= [fg=tape bg=tape]
7932+ :~ ;path
7933+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
7934+ :: =fill fg
7935+ =vector-effect "non-scaling-stroke";
7936+ :: =stroke bg
7937+ :: =stroke-width "0.5"
7938+ ;path
7939+ =d "M-0.00280762 0L127.997 128"
7940+ =vector-effect "non-scaling-stroke"
7941+ :: =stroke bg
7942+ :: =stroke-linecap "square"
7943+ =fill "none";
7944+ ;path
7945+ =d "M0.000105172 128C35.3582 128 67.3679 113.664 90.5332 90.4863"
7946+ =vector-effect "non-scaling-stroke"
7947+ :: =stroke bg
7948+ =fill "none";
7949+ ;circle
7950+ =cx "31"
7951+ =cy "32"
7952+ =r "11.5"
7953+ :: =fill fg
7954+ =vector-effect "non-scaling-stroke"
7955+ =stroke fg;
7956+ ;circle
7957+ =cx "31"
7958+ =cy "32"
7959+ =r "9"
7960+ =fill bg
7961+ =vector-effect "non-scaling-stroke";
7962+ :: =stroke bg
7963+ :: =stroke-width "2"
7964+ ==
7965+::
7966+ :- 'nut'
7967+ |= [fg=tape bg=tape]
7968+ :~ ;rect
7969+ =width "128"
7970+ =height "128"
7971+ :: =fill fg
7972+ =vector-effect "non-scaling-stroke";
7973+ :: =stroke bg
7974+ :: =stroke-width "0.5"
7975+ ;line
7976+ =x1 "80.0035"
7977+ =y1 "79.9964"
7978+ =x2 "112.003"
7979+ =y2 "111.996"
7980+ =vector-effect "non-scaling-stroke"
7981+ :: =stroke bg
7982+ =fill "none";
7983+ ;line
7984+ =y1 "-0.5"
7985+ =x2 "45.2548"
7986+ =y2 "-0.5"
7987+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.6499 47.6499)"
7988+ =vector-effect "non-scaling-stroke"
7989+ :: =stroke bg
7990+ =fill "none";
7991+ ;circle
7992+ =cx "96"
7993+ =cy "96"
7994+ =r "11.5"
7995+ :: =fill fg
7996+ =vector-effect "non-scaling-stroke"
7997+ =stroke fg;
7998+ ;circle
7999+ =cx "96"
8000+ =cy "96"
8001+ =r "9"
8002+ =fill bg
8003+ =vector-effect "non-scaling-stroke";
8004+ :: =stroke bg
8005+ :: =stroke-width "2"
8006+ ==
8007+::
8008+ :- 'nux'
8009+ |= [fg=tape bg=tape]
8010+ :~ ;path
8011+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8012+ :: =fill fg
8013+ =vector-effect "non-scaling-stroke";
8014+ :: =stroke bg
8015+ :: =stroke-width "0.5"
8016+ ;path
8017+ =d "M128 64L0 64"
8018+ =vector-effect "non-scaling-stroke"
8019+ :: =stroke bg
8020+ =fill "none";
8021+ ;path
8022+ =d "M128 96L0 96"
8023+ =vector-effect "non-scaling-stroke"
8024+ :: =stroke bg
8025+ =fill "none";
8026+ ;path
8027+ =d "M128 32L0 32"
8028+ =vector-effect "non-scaling-stroke"
8029+ :: =stroke bg
8030+ =fill "none";
8031+ ==
8032+::
8033+ :- 'nyd'
8034+ |= [fg=tape bg=tape]
8035+ :~ ;path
8036+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
8037+ :: =fill fg
8038+ =vector-effect "non-scaling-stroke";
8039+ :: =stroke bg
8040+ :: =stroke-width "0.5"
8041+ ;path
8042+ =d "M-0.00292969 0L127.997 128"
8043+ =vector-effect "non-scaling-stroke"
8044+ :: =stroke bg
8045+ :: =stroke-linecap "square"
8046+ =fill "none";
8047+ ;circle
8048+ =cx "64"
8049+ =cy "64"
8050+ =r "32"
8051+ =vector-effect "non-scaling-stroke"
8052+ :: =stroke bg
8053+ =fill "none";
8054+ ;circle
8055+ =cx "64"
8056+ =cy "64"
8057+ =r "16"
8058+ =vector-effect "non-scaling-stroke"
8059+ :: =stroke bg
8060+ =fill "none";
8061+ ==
8062+::
8063+ :- 'nyl'
8064+ |= [fg=tape bg=tape]
8065+ :~ ;path
8066+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8067+ :: =fill fg
8068+ =vector-effect "non-scaling-stroke";
8069+ :: =stroke bg
8070+ :: =stroke-width "0.5"
8071+ ;path
8072+ =d "M-0.00292969 0L127.997 128"
8073+ =vector-effect "non-scaling-stroke"
8074+ :: =stroke bg
8075+ :: =stroke-linecap "square"
8076+ =fill "none";
8077+ ;path
8078+ =d "M0 128C4.63574e-06 92.6489 14.3309 60.6449 37.5 37.4807"
8079+ =vector-effect "non-scaling-stroke"
8080+ :: =stroke bg
8081+ =fill "none";
8082+ ;path
8083+ =d "M32 128C32 101.492 42.7436 77.4939 60.1138 60.1217"
8084+ =vector-effect "non-scaling-stroke"
8085+ :: =stroke bg
8086+ =fill "none";
8087+ ;path
8088+ =d "M64 128C64 110.328 71.1626 94.3287 82.7432 82.7471"
8089+ =vector-effect "non-scaling-stroke"
8090+ :: =stroke bg
8091+ =fill "none";
8092+ ;path
8093+ =d "M95.6284 128C95.6284 119.164 99.2097 111.164 105 105.374"
8094+ =vector-effect "non-scaling-stroke"
8095+ :: =stroke bg
8096+ =fill "none";
8097+ ==
8098+::
8099+ :- 'nym'
8100+ |= [fg=tape bg=tape]
8101+ :~ ;path
8102+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
8103+ :: =fill fg
8104+ =vector-effect "non-scaling-stroke";
8105+ :: =stroke bg
8106+ :: =stroke-width "0.5"
8107+ ;path
8108+ =d "M64 0L64 128"
8109+ =vector-effect "non-scaling-stroke"
8110+ :: =stroke bg
8111+ =fill "none";
8112+ ;path
8113+ =d "M96 0L96 128"
8114+ =vector-effect "non-scaling-stroke"
8115+ :: =stroke bg
8116+ =fill "none";
8117+ ;path
8118+ =d "M32 0L32 128"
8119+ =vector-effect "non-scaling-stroke"
8120+ :: =stroke bg
8121+ =fill "none";
8122+ ==
8123+::
8124+ :- 'nyr'
8125+ |= [fg=tape bg=tape]
8126+ :~ ;path
8127+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
8128+ :: =fill fg
8129+ =vector-effect "non-scaling-stroke";
8130+ :: =stroke bg
8131+ :: =stroke-width "0.5"
8132+ ;path
8133+ =d "M-0.00268555 0L127.997 128"
8134+ =vector-effect "non-scaling-stroke"
8135+ :: =stroke bg
8136+ :: =stroke-linecap "square"
8137+ =fill "none";
8138+ ;path
8139+ =d "M95.9984 0C95.9984 26.3298 85.3985 50.1839 68.2332 67.5278M63.9983 0C63.9983 17.4933 56.9799 33.3473 45.6054 44.8999M31.9983 0C31.9983 8.65672 28.5609 16.5106 22.9766 22.2711"
8140+ =vector-effect "non-scaling-stroke"
8141+ :: =stroke bg
8142+ =fill "none";
8143+ ==
8144+::
8145+ :- 'nys'
8146+ |= [fg=tape bg=tape]
8147+ :~ ;path
8148+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8149+ :: =fill fg
8150+ =vector-effect "non-scaling-stroke";
8151+ :: =stroke bg
8152+ :: =stroke-width "0.5"
8153+ ;circle
8154+ =cx "16"
8155+ =cy "112"
8156+ =r "11.5"
8157+ :: =fill fg
8158+ =vector-effect "non-scaling-stroke"
8159+ =stroke fg;
8160+ ;circle
8161+ =cx "16"
8162+ =cy "112"
8163+ =r "9"
8164+ =fill bg
8165+ =vector-effect "non-scaling-stroke";
8166+ :: =stroke bg
8167+ :: =stroke-width "2"
8168+ ==
8169+::
8170+ :- 'nyt'
8171+ |= [fg=tape bg=tape]
8172+ :~ ;path
8173+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
8174+ :: =fill fg
8175+ =vector-effect "non-scaling-stroke";
8176+ :: =stroke bg
8177+ :: =stroke-width "0.5"
8178+ ;path
8179+ =d "M128 64L0 64"
8180+ =vector-effect "non-scaling-stroke"
8181+ :: =stroke bg
8182+ =fill "none";
8183+ ;path
8184+ =d "M64 32C81.6731 32 96 46.3269 96 64"
8185+ =vector-effect "non-scaling-stroke"
8186+ :: =stroke bg
8187+ =fill "none";
8188+ ;path
8189+ =d "M64 16C90.5097 16 112 37.4903 112 64"
8190+ =vector-effect "non-scaling-stroke"
8191+ :: =stroke bg
8192+ =fill "none";
8193+ ==
8194+::
8195+ :- 'nyx'
8196+ |= [fg=tape bg=tape]
8197+ :~ ;path
8198+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
8199+ :: =fill fg
8200+ =vector-effect "non-scaling-stroke";
8201+ :: =stroke bg
8202+ :: =stroke-width "0.5"
8203+ ;path
8204+ =d "M-0.00292969 0L127.997 128"
8205+ =vector-effect "non-scaling-stroke"
8206+ :: =stroke bg
8207+ :: =stroke-linecap "square"
8208+ =fill "none";
8209+ ;path
8210+ =fill-rule "evenodd"
8211+ =clip-rule "evenodd"
8212+ =stroke "none"
8213+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
8214+ =fill bg;
8215+ ==
8216+::
8217+ :- 'pac'
8218+ |= [fg=tape bg=tape]
8219+ :~ ;path
8220+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8221+ :: =fill fg
8222+ =vector-effect "non-scaling-stroke";
8223+ :: =stroke bg
8224+ :: =stroke-width "0.5"
8225+ ;path
8226+ =d "M128 0L0 128"
8227+ =vector-effect "non-scaling-stroke"
8228+ :: =stroke bg
8229+ :: =stroke-linecap "square"
8230+ =fill "none";
8231+ ;circle
8232+ =cx "64"
8233+ =cy "64"
8234+ =r "16"
8235+ =vector-effect "non-scaling-stroke"
8236+ :: =stroke bg
8237+ =fill "none";
8238+ ;circle
8239+ =cx "64"
8240+ =cy "32"
8241+ =r "11.5"
8242+ :: =fill fg
8243+ =vector-effect "non-scaling-stroke"
8244+ =stroke fg;
8245+ ;circle
8246+ =cx "64"
8247+ =cy "32"
8248+ =r "9"
8249+ =fill bg
8250+ =vector-effect "non-scaling-stroke";
8251+ :: =stroke bg
8252+ :: =stroke-width "2"
8253+ ==
8254+::
8255+ :- 'pad'
8256+ |= [fg=tape bg=tape]
8257+ :~ ;path
8258+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8259+ :: =fill fg
8260+ =vector-effect "non-scaling-stroke";
8261+ :: =stroke bg
8262+ :: =stroke-width "0.5"
8263+ ;circle
8264+ =cx "96"
8265+ =cy "32"
8266+ =r "11.5"
8267+ :: =fill fg
8268+ =vector-effect "non-scaling-stroke"
8269+ =stroke fg;
8270+ ;circle
8271+ =cx "96"
8272+ =cy "32"
8273+ =r "9"
8274+ =fill bg
8275+ =vector-effect "non-scaling-stroke";
8276+ :: =stroke bg
8277+ :: =stroke-width "2"
8278+ ==
8279+::
8280+ :- 'pag'
8281+ |= [fg=tape bg=tape]
8282+ :~ ;path
8283+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
8284+ :: =fill fg
8285+ =vector-effect "non-scaling-stroke";
8286+ :: =stroke bg
8287+ :: =stroke-width "0.5"
8288+ ;line
8289+ =x1 "15.9964"
8290+ =y1 "111.997"
8291+ =x2 "47.9964"
8292+ =y2 "79.9965"
8293+ =vector-effect "non-scaling-stroke"
8294+ :: =stroke bg
8295+ =fill "none";
8296+ ==
8297+::
8298+ :- 'pal'
8299+ |= [fg=tape bg=tape]
8300+ :~ ;path
8301+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
8302+ :: =fill fg
8303+ =vector-effect "non-scaling-stroke";
8304+ :: =stroke bg
8305+ :: =stroke-width "0.5"
8306+ ;path
8307+ =d "M128 0L0 128"
8308+ =vector-effect "non-scaling-stroke"
8309+ :: =stroke bg
8310+ :: =stroke-linecap "square"
8311+ =fill "none";
8312+ ;path
8313+ =d "M128 96C101.492 96 77.4939 85.2564 60.1217 67.8862"
8314+ =vector-effect "non-scaling-stroke"
8315+ :: =stroke bg
8316+ =fill "none";
8317+ ;path
8318+ =d "M128 64C110.328 64 94.3287 56.8374 82.7471 45.2568"
8319+ =vector-effect "non-scaling-stroke"
8320+ :: =stroke bg
8321+ =fill "none";
8322+ ;path
8323+ =d "M128 32.3716C119.164 32.3716 111.164 28.7903 105.374 23"
8324+ =vector-effect "non-scaling-stroke"
8325+ :: =stroke bg
8326+ =fill "none";
8327+ ==
8328+::
8329+ :- 'pan'
8330+ |= [fg=tape bg=tape]
8331+ :~ ;path
8332+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8333+ :: =fill fg
8334+ =vector-effect "non-scaling-stroke";
8335+ :: =stroke bg
8336+ :: =stroke-width "0.5"
8337+ ;line
8338+ =x1 "0.5"
8339+ =y1 "-0.5"
8340+ =x2 "181.5"
8341+ =y2 "-0.5"
8342+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
8343+ =vector-effect "non-scaling-stroke"
8344+ :: =stroke bg
8345+ :: =stroke-linecap "square"
8346+ =fill "none";
8347+ ;path
8348+ =d "M41.3726 86.6274C28.8758 74.1306 28.8758 53.8693 41.3726 41.3725C53.8694 28.8758 74.1306 28.8758 86.6274 41.3725"
8349+ =vector-effect "non-scaling-stroke"
8350+ :: =stroke bg
8351+ =fill "none";
8352+ ==
8353+::
8354+ :- 'par'
8355+ |= [fg=tape bg=tape]
8356+ :~ ;circle
8357+ =cx "64"
8358+ =cy "64"
8359+ =r "64"
8360+ :: =fill fg
8361+ =vector-effect "non-scaling-stroke";
8362+ :: =stroke bg
8363+ :: =stroke-width "0.5"
8364+ ;line
8365+ =x1 "0.5"
8366+ =y1 "-0.5"
8367+ =x2 "181.5"
8368+ =y2 "-0.5"
8369+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.693 0)"
8370+ =vector-effect "non-scaling-stroke"
8371+ :: =stroke bg
8372+ :: =stroke-linecap "square"
8373+ =fill "none";
8374+ ;circle
8375+ =cx "64"
8376+ =cy "64"
8377+ =r "16"
8378+ =vector-effect "non-scaling-stroke"
8379+ :: =stroke bg
8380+ =fill "none";
8381+ ==
8382+::
8383+ :- 'pas'
8384+ |= [fg=tape bg=tape]
8385+ :~ ;rect
8386+ =width "128"
8387+ =height "128"
8388+ :: =fill fg
8389+ =vector-effect "non-scaling-stroke";
8390+ :: =stroke bg
8391+ :: =stroke-width "0.5"
8392+ ;path
8393+ =d "M32 0L32 128"
8394+ =vector-effect "non-scaling-stroke"
8395+ :: =stroke bg
8396+ =fill "none";
8397+ ;path
8398+ =d "M64 0L64 128"
8399+ =vector-effect "non-scaling-stroke"
8400+ :: =stroke bg
8401+ =fill "none";
8402+ ;path
8403+ =d "M96 0L96 128"
8404+ =vector-effect "non-scaling-stroke"
8405+ :: =stroke bg
8406+ =fill "none";
8407+ ==
8408+::
8409+ :- 'pat'
8410+ |= [fg=tape bg=tape]
8411+ :~ ;path
8412+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8413+ :: =fill fg
8414+ =vector-effect "non-scaling-stroke";
8415+ :: =stroke bg
8416+ :: =stroke-width "0.5"
8417+ ;path
8418+ =d "M32 -2.67054e-06C32 53.0193 74.9807 96 128 96"
8419+ =vector-effect "non-scaling-stroke"
8420+ :: =stroke bg
8421+ =fill "none";
8422+ ;path
8423+ =d "M64 -1.78036e-06C64 35.3462 92.6538 64 128 64"
8424+ =vector-effect "non-scaling-stroke"
8425+ :: =stroke bg
8426+ =fill "none";
8427+ ;path
8428+ =d "M96 -8.9018e-07C96 17.6731 110.327 32 128 32"
8429+ =vector-effect "non-scaling-stroke"
8430+ :: =stroke bg
8431+ =fill "none";
8432+ ==
8433+::
8434+ :- 'pec'
8435+ |= [fg=tape bg=tape]
8436+ :~ ;path
8437+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8438+ :: =fill fg
8439+ =vector-effect "non-scaling-stroke";
8440+ :: =stroke bg
8441+ :: =stroke-width "0.5"
8442+ ;path
8443+ =d "M128 0L0 128"
8444+ =vector-effect "non-scaling-stroke"
8445+ :: =stroke bg
8446+ :: =stroke-linecap "square"
8447+ =fill "none";
8448+ ;circle
8449+ =cx "64"
8450+ =cy "64"
8451+ =r "11.5"
8452+ :: =fill fg
8453+ =vector-effect "non-scaling-stroke"
8454+ =stroke fg;
8455+ ;circle
8456+ =cx "64"
8457+ =cy "64"
8458+ =r "9"
8459+ =fill bg
8460+ =vector-effect "non-scaling-stroke";
8461+ :: =stroke bg
8462+ :: =stroke-width "2"
8463+ ==
8464+::
8465+ :- 'ped'
8466+ |= [fg=tape bg=tape]
8467+ :~ ;circle
8468+ =cx "64"
8469+ =cy "64"
8470+ =r "64"
8471+ :: =fill fg
8472+ =vector-effect "non-scaling-stroke";
8473+ :: =stroke bg
8474+ :: =stroke-width "0.5"
8475+ ;circle
8476+ =cx "32"
8477+ =cy "64"
8478+ =r "11.5"
8479+ :: =fill fg
8480+ =vector-effect "non-scaling-stroke"
8481+ =stroke fg;
8482+ ;circle
8483+ =cx "32"
8484+ =cy "64"
8485+ =r "9"
8486+ =fill bg
8487+ =vector-effect "non-scaling-stroke";
8488+ :: =stroke bg
8489+ :: =stroke-width "2"
8490+ ==
8491+::
8492+ :- 'peg'
8493+ |= [fg=tape bg=tape]
8494+ :~ ;rect
8495+ =width "128"
8496+ =height "128"
8497+ :: =fill fg
8498+ =vector-effect "non-scaling-stroke";
8499+ :: =stroke bg
8500+ :: =stroke-width "0.5"
8501+ ;path
8502+ =d "M96 0C96 17.6731 81.6731 32 64 32C46.3269 32 32 17.6731 32 0"
8503+ =vector-effect "non-scaling-stroke"
8504+ :: =stroke bg
8505+ =fill "none";
8506+ ==
8507+::
8508+ :- 'pel'
8509+ |= [fg=tape bg=tape]
8510+ :~ ;path
8511+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
8512+ :: =fill fg
8513+ =vector-effect "non-scaling-stroke";
8514+ :: =stroke bg
8515+ :: =stroke-width "0.5"
8516+ ;circle
8517+ =cx "64"
8518+ =cy "64"
8519+ =r "32"
8520+ =vector-effect "non-scaling-stroke"
8521+ :: =stroke bg
8522+ =fill "none";
8523+ ;path
8524+ =d "M112 64C112 37.4903 90.5097 16 64 16"
8525+ =vector-effect "non-scaling-stroke"
8526+ :: =stroke bg
8527+ =fill "none";
8528+ ==
8529+::
8530+ :- 'pem'
8531+ |= [fg=tape bg=tape]
8532+ :~ ;circle
8533+ =cx "64"
8534+ =cy "64"
8535+ =r "64"
8536+ :: =fill fg
8537+ =vector-effect "non-scaling-stroke";
8538+ :: =stroke bg
8539+ :: =stroke-width "0.5"
8540+ ;path
8541+ =d "M-0.00280762 0L127.997 128"
8542+ =vector-effect "non-scaling-stroke"
8543+ :: =stroke bg
8544+ :: =stroke-linecap "square"
8545+ =fill "none";
8546+ ;path
8547+ =d "M64 128C64 92.6538 35.3462 64 0 64"
8548+ =vector-effect "non-scaling-stroke"
8549+ :: =stroke bg
8550+ =fill "none";
8551+ ==
8552+::
8553+ :- 'pen'
8554+ |= [fg=tape bg=tape]
8555+ :~ ;rect
8556+ =width "128"
8557+ =height "128"
8558+ :: =fill fg
8559+ =vector-effect "non-scaling-stroke";
8560+ :: =stroke bg
8561+ :: =stroke-width "0.5"
8562+ ;path
8563+ =d "M96 0C96 17.6731 81.6731 32 64 32C46.3269 32 32 17.6731 32 0"
8564+ =vector-effect "non-scaling-stroke"
8565+ :: =stroke bg
8566+ =fill "none";
8567+ ;path
8568+ =d "M-0.00292969 0L127.997 128"
8569+ =vector-effect "non-scaling-stroke"
8570+ :: =stroke bg
8571+ :: =stroke-linecap "square"
8572+ =fill "none";
8573+ ==
8574+::
8575+ :- 'per'
8576+ |= [fg=tape bg=tape]
8577+ :~ ;path
8578+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
8579+ :: =fill fg
8580+ =vector-effect "non-scaling-stroke";
8581+ :: =stroke bg
8582+ :: =stroke-width "0.5"
8583+ ;path
8584+ =d "M64 0L64 128"
8585+ =vector-effect "non-scaling-stroke"
8586+ :: =stroke bg
8587+ =fill "none";
8588+ ==
8589+::
8590+ :- 'pes'
8591+ |= [fg=tape bg=tape]
8592+ :~ ;path
8593+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
8594+ :: =fill fg
8595+ =vector-effect "non-scaling-stroke";
8596+ :: =stroke bg
8597+ :: =stroke-width "0.5"
8598+ ;path
8599+ =d "M64 112C90.5097 112 112 90.5097 112 64"
8600+ =vector-effect "non-scaling-stroke"
8601+ :: =stroke bg
8602+ =fill "none";
8603+ ;line
8604+ =x1 "-0.00285417"
8605+ =x2 "127.983"
8606+ =y2 "127.986"
8607+ =vector-effect "non-scaling-stroke"
8608+ :: =stroke bg
8609+ :: =stroke-linecap "square"
8610+ =fill "none";
8611+ ==
8612+::
8613+ :- 'pet'
8614+ |= [fg=tape bg=tape]
8615+ :~ ;circle
8616+ =cx "64"
8617+ =cy "64"
8618+ =r "64"
8619+ :: =fill fg
8620+ =vector-effect "non-scaling-stroke";
8621+ :: =stroke bg
8622+ :: =stroke-width "0.5"
8623+ ;line
8624+ =x1 "80.0035"
8625+ =y1 "79.9964"
8626+ =x2 "112.003"
8627+ =y2 "111.996"
8628+ =vector-effect "non-scaling-stroke"
8629+ :: =stroke bg
8630+ =fill "none";
8631+ ==
8632+::
8633+ :- 'pex'
8634+ |= [fg=tape bg=tape]
8635+ :~ ;path
8636+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
8637+ :: =fill fg
8638+ =vector-effect "non-scaling-stroke";
8639+ :: =stroke bg
8640+ :: =stroke-width "0.5"
8641+ ;circle
8642+ =cx "64"
8643+ =cy "64"
8644+ =r "32"
8645+ =vector-effect "non-scaling-stroke"
8646+ :: =stroke bg
8647+ =fill "none";
8648+ ;path
8649+ =fill-rule "evenodd"
8650+ =clip-rule "evenodd"
8651+ =stroke "none"
8652+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
8653+ =fill bg;
8654+ ==
8655+::
8656+ :- 'pic'
8657+ |= [fg=tape bg=tape]
8658+ :~ ;path
8659+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8660+ :: =fill fg
8661+ =vector-effect "non-scaling-stroke";
8662+ :: =stroke bg
8663+ :: =stroke-width "0.5"
8664+ ;path
8665+ =d "M96 128C96 74.9807 53.0193 32 0 32"
8666+ =vector-effect "non-scaling-stroke"
8667+ :: =stroke bg
8668+ =fill "none";
8669+ ;path
8670+ =d "M64 128C64 92.6538 35.3462 64 0 64"
8671+ =vector-effect "non-scaling-stroke"
8672+ :: =stroke bg
8673+ =fill "none";
8674+ ;path
8675+ =d "M32 128C32 110.327 17.6731 96 0 96"
8676+ =vector-effect "non-scaling-stroke"
8677+ :: =stroke bg
8678+ =fill "none";
8679+ ==
8680+::
8681+ :- 'pid'
8682+ |= [fg=tape bg=tape]
8683+ :~ ;path
8684+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8685+ :: =fill fg
8686+ =vector-effect "non-scaling-stroke";
8687+ :: =stroke bg
8688+ :: =stroke-width "0.5"
8689+ ;line
8690+ =x1 "-0.0029152"
8691+ =x2 "127.983"
8692+ =y2 "127.986"
8693+ =vector-effect "non-scaling-stroke"
8694+ :: =stroke bg
8695+ :: =stroke-linecap "square"
8696+ =fill "none";
8697+ ;circle
8698+ =cx "16"
8699+ =cy "112"
8700+ =r "11.5"
8701+ =fill bg
8702+ =vector-effect "non-scaling-stroke";
8703+ :: =stroke bg
8704+ ;circle
8705+ =cx "16"
8706+ =cy "112"
8707+ =r "9"
8708+ :: =fill fg
8709+ =vector-effect "non-scaling-stroke"
8710+ =stroke fg;
8711+ :: =stroke-width "2"
8712+ ==
8713+::
8714+ :- 'pil'
8715+ |= [fg=tape bg=tape]
8716+ :~ ;path
8717+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
8718+ :: =fill fg
8719+ =vector-effect "non-scaling-stroke";
8720+ :: =stroke bg
8721+ :: =stroke-width "0.5"
8722+ ;line
8723+ =x1 "0.5"
8724+ =y1 "-0.5"
8725+ =x2 "181.5"
8726+ =y2 "-0.5"
8727+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
8728+ =vector-effect "non-scaling-stroke"
8729+ :: =stroke bg
8730+ :: =stroke-linecap "square"
8731+ =fill "none";
8732+ ;circle
8733+ =cx "96"
8734+ =cy "96"
8735+ =r "11.5"
8736+ :: =fill fg
8737+ =vector-effect "non-scaling-stroke"
8738+ =stroke fg;
8739+ ;circle
8740+ =cx "96"
8741+ =cy "96"
8742+ =r "9"
8743+ =fill bg
8744+ =vector-effect "non-scaling-stroke";
8745+ :: =stroke bg
8746+ :: =stroke-width "2"
8747+ ==
8748+::
8749+ :- 'pin'
8750+ |= [fg=tape bg=tape]
8751+ :~ ;rect
8752+ =width "128"
8753+ =height "128"
8754+ :: =fill fg
8755+ =vector-effect "non-scaling-stroke";
8756+ :: =stroke bg
8757+ :: =stroke-width "0.5"
8758+ ;path
8759+ =d "M32 0L32 128"
8760+ =vector-effect "non-scaling-stroke"
8761+ :: =stroke bg
8762+ =fill "none";
8763+ ;circle
8764+ =cx "32"
8765+ =cy "32"
8766+ =r "11.5"
8767+ :: =fill fg
8768+ =vector-effect "non-scaling-stroke"
8769+ =stroke fg;
8770+ ;circle
8771+ =cx "32"
8772+ =cy "32"
8773+ =r "9"
8774+ =fill bg
8775+ =vector-effect "non-scaling-stroke";
8776+ :: =stroke bg
8777+ :: =stroke-width "2"
8778+ ==
8779+::
8780+ :- 'pit'
8781+ |= [fg=tape bg=tape]
8782+ :~ ;path
8783+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
8784+ :: =fill fg
8785+ =vector-effect "non-scaling-stroke";
8786+ :: =stroke bg
8787+ :: =stroke-width "0.5"
8788+ ;line
8789+ =x1 "0.5"
8790+ =y1 "-0.5"
8791+ =x2 "181.5"
8792+ =y2 "-0.5"
8793+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
8794+ =vector-effect "non-scaling-stroke"
8795+ :: =stroke bg
8796+ :: =stroke-linecap "square"
8797+ =fill "none";
8798+ ;circle
8799+ =cx "16"
8800+ =cy "112"
8801+ =r "11.5"
8802+ =fill bg
8803+ =vector-effect "non-scaling-stroke";
8804+ :: =stroke bg
8805+ ;circle
8806+ =cx "16"
8807+ =cy "112"
8808+ =r "9"
8809+ :: =fill fg
8810+ =vector-effect "non-scaling-stroke"
8811+ =stroke fg;
8812+ :: =stroke-width "2"
8813+ ==
8814+::
8815+ :- 'poc'
8816+ |= [fg=tape bg=tape]
8817+ :~ ;path
8818+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
8819+ :: =fill fg
8820+ =vector-effect "non-scaling-stroke";
8821+ :: =stroke bg
8822+ :: =stroke-width "0.5"
8823+ ;line
8824+ =x1 "64.5"
8825+ =y1 "-0.5"
8826+ =x2 "64.5"
8827+ =y2 "127.5"
8828+ =vector-effect "non-scaling-stroke"
8829+ :: =stroke bg
8830+ =fill "none";
8831+ ;line
8832+ =x1 "96.5"
8833+ =y1 "-0.5"
8834+ =x2 "96.5"
8835+ =y2 "127.5"
8836+ =vector-effect "non-scaling-stroke"
8837+ :: =stroke bg
8838+ =fill "none";
8839+ ;line
8840+ =x1 "32.5"
8841+ =y1 "-0.5"
8842+ =x2 "32.5"
8843+ =y2 "127.5"
8844+ =vector-effect "non-scaling-stroke"
8845+ :: =stroke bg
8846+ =fill "none";
8847+ ==
8848+::
8849+ :- 'pod'
8850+ |= [fg=tape bg=tape]
8851+ :~ ;path
8852+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
8853+ :: =fill fg
8854+ =vector-effect "non-scaling-stroke";
8855+ :: =stroke bg
8856+ :: =stroke-width "0.5"
8857+ ;line
8858+ =x1 "128"
8859+ =y1 "96"
8860+ =x2 "-8.87604e-09"
8861+ =y2 "96"
8862+ =vector-effect "non-scaling-stroke"
8863+ :: =stroke bg
8864+ =fill "none";
8865+ ==
8866+::
8867+ :- 'pol'
8868+ |= [fg=tape bg=tape]
8869+ :~ ;circle
8870+ =cx "64"
8871+ =cy "64"
8872+ =r "64"
8873+ :: =fill fg
8874+ =vector-effect "non-scaling-stroke";
8875+ :: =stroke bg
8876+ :: =stroke-width "0.5"
8877+ ;circle
8878+ =cx "64"
8879+ =cy "64"
8880+ =r "48"
8881+ =vector-effect "non-scaling-stroke"
8882+ :: =stroke bg
8883+ =fill "none";
8884+ ;line
8885+ =x1 "128"
8886+ =y1 "32"
8887+ =x2 "-8.87604e-09"
8888+ =y2 "32"
8889+ =vector-effect "non-scaling-stroke"
8890+ :: =stroke bg
8891+ =fill "none";
8892+ ==
8893+::
8894+ :- 'pon'
8895+ |= [fg=tape bg=tape]
8896+ :~ ;path
8897+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
8898+ :: =fill fg
8899+ =vector-effect "non-scaling-stroke";
8900+ :: =stroke bg
8901+ :: =stroke-width "0.5"
8902+ ==
8903+::
8904+ :- 'pos'
8905+ |= [fg=tape bg=tape]
8906+ :~ ;path
8907+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
8908+ :: =fill fg
8909+ =vector-effect "non-scaling-stroke";
8910+ :: =stroke bg
8911+ :: =stroke-width "0.5"
8912+ ;line
8913+ =x1 "-0.0029152"
8914+ =x2 "127.983"
8915+ =y2 "127.986"
8916+ =vector-effect "non-scaling-stroke"
8917+ :: =stroke bg
8918+ :: =stroke-linecap "square"
8919+ =fill "none";
8920+ ;circle
8921+ =cx "96"
8922+ =cy "32"
8923+ =r "11.5"
8924+ :: =fill fg
8925+ =vector-effect "non-scaling-stroke"
8926+ =stroke fg;
8927+ ;circle
8928+ =cx "96"
8929+ =cy "32"
8930+ =r "9"
8931+ =fill bg
8932+ =vector-effect "non-scaling-stroke";
8933+ :: =stroke bg
8934+ :: =stroke-width "2"
8935+ ==
8936+::
8937+ :- 'pub'
8938+ |= [fg=tape bg=tape]
8939+ :~ ;path
8940+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
8941+ :: =fill fg
8942+ =vector-effect "non-scaling-stroke";
8943+ :: =stroke bg
8944+ :: =stroke-width "0.5"
8945+ ;path
8946+ =d "M32 0L32 128"
8947+ =vector-effect "non-scaling-stroke"
8948+ :: =stroke bg
8949+ =fill "none";
8950+ ==
8951+::
8952+ :- 'pun'
8953+ |= [fg=tape bg=tape]
8954+ :~ ;circle
8955+ =cx "64"
8956+ =cy "64"
8957+ =r "64"
8958+ :: =fill fg
8959+ =vector-effect "non-scaling-stroke";
8960+ :: =stroke bg
8961+ :: =stroke-width "0.5"
8962+ ;path
8963+ =d "M112 64C112 37.4903 90.5097 16 64 16"
8964+ =vector-effect "non-scaling-stroke"
8965+ :: =stroke bg
8966+ =fill "none";
8967+ ;path
8968+ =d "M96 64C96 46.3269 81.6731 32 64 32"
8969+ =vector-effect "non-scaling-stroke"
8970+ :: =stroke bg
8971+ =fill "none";
8972+ ;path
8973+ =d "M80 64C80 55.1634 72.8366 48 64 48"
8974+ =vector-effect "non-scaling-stroke"
8975+ :: =stroke bg
8976+ =fill "none";
8977+ ==
8978+::
8979+ :- 'pur'
8980+ |= [fg=tape bg=tape]
8981+ :~ ;path
8982+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
8983+ :: =fill fg
8984+ =vector-effect "non-scaling-stroke";
8985+ :: =stroke bg
8986+ :: =stroke-width "0.5"
8987+ ;path
8988+ =d "M-0.00292969 0L127.997 128"
8989+ =vector-effect "non-scaling-stroke"
8990+ :: =stroke bg
8991+ :: =stroke-linecap "square"
8992+ =fill "none";
8993+ ;path
8994+ =d "M3.73284e-05 64C17.6633 64 33.6554 56.8445 45.2356 45.2741"
8995+ =vector-effect "non-scaling-stroke"
8996+ :: =stroke bg
8997+ =fill "none";
8998+ ==
8999+::
9000+ :- 'put'
9001+ |= [fg=tape bg=tape]
9002+ :~ ;rect
9003+ =width "128"
9004+ =height "128"
9005+ :: =fill fg
9006+ =vector-effect "non-scaling-stroke";
9007+ :: =stroke bg
9008+ :: =stroke-width "0.5"
9009+ ;circle
9010+ =cx "32"
9011+ =cy "96"
9012+ =r "11.5"
9013+ :: =fill fg
9014+ =vector-effect "non-scaling-stroke"
9015+ =stroke fg;
9016+ ;circle
9017+ =cx "32"
9018+ =cy "96"
9019+ =r "9"
9020+ =fill bg
9021+ =vector-effect "non-scaling-stroke";
9022+ :: =stroke bg
9023+ :: =stroke-width "2"
9024+ ==
9025+::
9026+ :- 'pyl'
9027+ |= [fg=tape bg=tape]
9028+ :~ ;path
9029+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
9030+ :: =fill fg
9031+ =vector-effect "non-scaling-stroke";
9032+ :: =stroke bg
9033+ :: =stroke-width "0.5"
9034+ ;path
9035+ =d "M-5.59506e-06 128C35.3462 128 64 99.3462 64 64C64 28.6538 35.3462 1.54503e-06 0 0"
9036+ =vector-effect "non-scaling-stroke"
9037+ :: =stroke bg
9038+ =fill "none";
9039+ ==
9040+::
9041+ :- 'pyx'
9042+ |= [fg=tape bg=tape]
9043+ :~ ;path
9044+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
9045+ :: =fill fg
9046+ =vector-effect "non-scaling-stroke";
9047+ :: =stroke bg
9048+ :: =stroke-width "0.5"
9049+ ;path
9050+ =d "M-0.00292969 0L127.997 128"
9051+ =vector-effect "non-scaling-stroke"
9052+ :: =stroke bg
9053+ :: =stroke-linecap "square"
9054+ =fill "none";
9055+ ;circle
9056+ =cx "96"
9057+ =cy "32"
9058+ =r "11.5"
9059+ :: =fill fg
9060+ =vector-effect "non-scaling-stroke"
9061+ =stroke fg;
9062+ ;circle
9063+ =cx "96"
9064+ =cy "32"
9065+ =r "9"
9066+ =fill bg
9067+ =vector-effect "non-scaling-stroke";
9068+ :: =stroke bg
9069+ :: =stroke-width "2"
9070+ ==
9071+::
9072+ :- 'rab'
9073+ |= [fg=tape bg=tape]
9074+ :~ ;path
9075+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
9076+ :: =fill fg
9077+ =vector-effect "non-scaling-stroke";
9078+ :: =stroke bg
9079+ :: =stroke-width "0.5"
9080+ ;path
9081+ =d "M-0.00292969 0L127.997 128"
9082+ =vector-effect "non-scaling-stroke"
9083+ :: =stroke bg
9084+ :: =stroke-linecap "square"
9085+ =fill "none";
9086+ ;line
9087+ =x1 "15.9965"
9088+ =y1 "111.997"
9089+ =x2 "47.9964"
9090+ =y2 "79.9965"
9091+ =vector-effect "non-scaling-stroke"
9092+ :: =stroke bg
9093+ =fill "none";
9094+ ==
9095+::
9096+ :- 'rac'
9097+ |= [fg=tape bg=tape]
9098+ :~ ;path
9099+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
9100+ :: =fill fg
9101+ =vector-effect "non-scaling-stroke";
9102+ :: =stroke bg
9103+ :: =stroke-width "0.5"
9104+ ;circle
9105+ =cx "16"
9106+ =cy "112"
9107+ =r "11.5"
9108+ =fill bg
9109+ =vector-effect "non-scaling-stroke";
9110+ :: =stroke bg
9111+ ;circle
9112+ =cx "16"
9113+ =cy "112"
9114+ =r "9"
9115+ :: =fill fg
9116+ =vector-effect "non-scaling-stroke"
9117+ =stroke fg;
9118+ :: =stroke-width "2"
9119+ ==
9120+::
9121+ :- 'rad'
9122+ |= [fg=tape bg=tape]
9123+ :~ ;path
9124+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
9125+ :: =fill fg
9126+ =vector-effect "non-scaling-stroke";
9127+ :: =stroke bg
9128+ :: =stroke-width "0.5"
9129+ ;circle
9130+ =cx "32"
9131+ =cy "96"
9132+ =r "11.5"
9133+ :: =fill fg
9134+ =vector-effect "non-scaling-stroke"
9135+ =stroke fg;
9136+ ;circle
9137+ =cx "32"
9138+ =cy "96"
9139+ =r "9"
9140+ =fill bg
9141+ =vector-effect "non-scaling-stroke";
9142+ :: =stroke bg
9143+ :: =stroke-width "2"
9144+ ==
9145+::
9146+ :- 'rag'
9147+ |= [fg=tape bg=tape]
9148+ :~ ;path
9149+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
9150+ :: =fill fg
9151+ =vector-effect "non-scaling-stroke";
9152+ :: =stroke bg
9153+ :: =stroke-width "0.5"
9154+ ;line
9155+ =x1 "16.0036"
9156+ =y1 "15.9965"
9157+ =x2 "48.0036"
9158+ =y2 "47.9965"
9159+ =vector-effect "non-scaling-stroke"
9160+ :: =stroke bg
9161+ =fill "none";
9162+ ==
9163+::
9164+ :- 'ral'
9165+ |= [fg=tape bg=tape]
9166+ :~ ;path
9167+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
9168+ :: =fill fg
9169+ =vector-effect "non-scaling-stroke";
9170+ :: =stroke bg
9171+ :: =stroke-width "0.5"
9172+ ;circle
9173+ =cx "64"
9174+ =cy "64"
9175+ =r "32"
9176+ =vector-effect "non-scaling-stroke"
9177+ :: =stroke bg
9178+ =fill "none";
9179+ ;circle
9180+ =cx "64"
9181+ =cy "64"
9182+ =r "16"
9183+ =vector-effect "non-scaling-stroke"
9184+ :: =stroke bg
9185+ =fill "none";
9186+ ==
9187+::
9188+ :- 'ram'
9189+ |= [fg=tape bg=tape]
9190+ :~ ;path
9191+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
9192+ :: =fill fg
9193+ =vector-effect "non-scaling-stroke";
9194+ :: =stroke bg
9195+ :: =stroke-width "0.5"
9196+ ;line
9197+ =x1 "64"
9198+ =y1 "2.18557e-08"
9199+ =x2 "64"
9200+ =y2 "128"
9201+ =vector-effect "non-scaling-stroke"
9202+ :: =stroke bg
9203+ =fill "none";
9204+ ;path
9205+ =fill-rule "evenodd"
9206+ =clip-rule "evenodd"
9207+ =stroke "none"
9208+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
9209+ =fill bg;
9210+ ==
9211+::
9212+ :- 'ran'
9213+ |= [fg=tape bg=tape]
9214+ :~ ;path
9215+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
9216+ :: =fill fg
9217+ =vector-effect "non-scaling-stroke";
9218+ :: =stroke bg
9219+ :: =stroke-width "0.5"
9220+ ;path
9221+ =d "M64 0L64 128"
9222+ =vector-effect "non-scaling-stroke"
9223+ :: =stroke bg
9224+ =fill "none";
9225+ ;path
9226+ =d "M-0.00291443 0L127.997 128"
9227+ =vector-effect "non-scaling-stroke"
9228+ :: =stroke bg
9229+ :: =stroke-linecap "square"
9230+ =fill "none";
9231+ ;circle
9232+ =cx "64"
9233+ =cy "64"
9234+ =r "16"
9235+ =vector-effect "non-scaling-stroke"
9236+ :: =stroke bg
9237+ =fill "none";
9238+ ==
9239+::
9240+ :- 'rap'
9241+ |= [fg=tape bg=tape]
9242+ :~ ;path
9243+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
9244+ :: =fill fg
9245+ =vector-effect "non-scaling-stroke";
9246+ :: =stroke bg
9247+ :: =stroke-width "0.5"
9248+ ;line
9249+ =x1 "64"
9250+ =y1 "-1.29797e-08"
9251+ =x2 "64"
9252+ =y2 "128"
9253+ =vector-effect "non-scaling-stroke"
9254+ :: =stroke bg
9255+ =fill "none";
9256+ ;circle
9257+ =cx "96"
9258+ =cy "64"
9259+ =r "11.5"
9260+ :: =fill fg
9261+ =vector-effect "non-scaling-stroke"
9262+ =stroke fg;
9263+ ;circle
9264+ =cx "96"
9265+ =cy "64"
9266+ =r "9"
9267+ =fill bg
9268+ =vector-effect "non-scaling-stroke";
9269+ :: =stroke bg
9270+ :: =stroke-width "2"
9271+ ==
9272+::
9273+ :- 'rav'
9274+ |= [fg=tape bg=tape]
9275+ :~ ;path
9276+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
9277+ :: =fill fg
9278+ =vector-effect "non-scaling-stroke";
9279+ :: =stroke bg
9280+ :: =stroke-width "0.5"
9281+ ;path
9282+ =d "M128 32L0 32"
9283+ =vector-effect "non-scaling-stroke"
9284+ :: =stroke bg
9285+ =fill "none";
9286+ ==
9287+::
9288+ :- 'reb'
9289+ |= [fg=tape bg=tape]
9290+ :~ ;rect
9291+ =width "128"
9292+ =height "128"
9293+ :: =fill fg
9294+ =vector-effect "non-scaling-stroke";
9295+ :: =stroke bg
9296+ :: =stroke-width "0.5"
9297+ ;path
9298+ =d "M128 -9.40976e-06C57.3075 -6.31969e-06 -3.09007e-06 57.3075 0 128"
9299+ =vector-effect "non-scaling-stroke"
9300+ :: =stroke bg
9301+ =fill "none";
9302+ ==
9303+::
9304+ :- 'rec'
9305+ |= [fg=tape bg=tape]
9306+ :~ ;path
9307+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
9308+ :: =fill fg
9309+ =vector-effect "non-scaling-stroke";
9310+ :: =stroke bg
9311+ :: =stroke-width "0.5"
9312+ ;circle
9313+ =cx "32"
9314+ =cy "96"
9315+ =r "11.5"
9316+ :: =fill fg
9317+ =vector-effect "non-scaling-stroke"
9318+ =stroke fg;
9319+ ;circle
9320+ =cx "32"
9321+ =cy "96"
9322+ =r "9"
9323+ =fill bg
9324+ =vector-effect "non-scaling-stroke";
9325+ :: =stroke bg
9326+ :: =stroke-width "2"
9327+ ;circle
9328+ =cx "96"
9329+ =cy "96"
9330+ =r "11.5"
9331+ :: =fill fg
9332+ =vector-effect "non-scaling-stroke"
9333+ =stroke fg;
9334+ ;circle
9335+ =cx "96"
9336+ =cy "96"
9337+ =r "9"
9338+ =fill bg
9339+ =vector-effect "non-scaling-stroke";
9340+ :: =stroke bg
9341+ :: =stroke-width "2"
9342+ ==
9343+::
9344+ :- 'red'
9345+ |= [fg=tape bg=tape]
9346+ :~ ;circle
9347+ =cx "64"
9348+ =cy "64"
9349+ =r "64"
9350+ :: =fill fg
9351+ =vector-effect "non-scaling-stroke";
9352+ :: =stroke bg
9353+ :: =stroke-width "0.5"
9354+ ;circle
9355+ =cx "64"
9356+ =cy "96"
9357+ =r "11.5"
9358+ :: =fill fg
9359+ =vector-effect "non-scaling-stroke"
9360+ =stroke fg;
9361+ ;circle
9362+ =cx "64"
9363+ =cy "96"
9364+ =r "9"
9365+ =fill bg
9366+ =vector-effect "non-scaling-stroke";
9367+ :: =stroke bg
9368+ :: =stroke-width "2"
9369+ ==
9370+::
9371+ :- 'ref'
9372+ |= [fg=tape bg=tape]
9373+ :~ ;path
9374+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
9375+ :: =fill fg
9376+ =vector-effect "non-scaling-stroke";
9377+ :: =stroke bg
9378+ :: =stroke-width "0.5"
9379+ ;path
9380+ =d "M-0.00292969 0L127.997 128"
9381+ =vector-effect "non-scaling-stroke"
9382+ :: =stroke bg
9383+ :: =stroke-linecap "square"
9384+ =fill "none";
9385+ ;circle
9386+ =cx "16"
9387+ =cy "112"
9388+ =r "11.5"
9389+ =fill bg
9390+ =vector-effect "non-scaling-stroke";
9391+ :: =stroke bg
9392+ ;circle
9393+ =cx "16"
9394+ =cy "112"
9395+ =r "9"
9396+ :: =fill fg
9397+ =vector-effect "non-scaling-stroke"
9398+ =stroke fg;
9399+ :: =stroke-width "2"
9400+ ==
9401+::
9402+ :- 'reg'
9403+ |= [fg=tape bg=tape]
9404+ :~ ;rect
9405+ =width "128"
9406+ =height "128"
9407+ :: =fill fg
9408+ =vector-effect "non-scaling-stroke";
9409+ :: =stroke bg
9410+ :: =stroke-width "0.5"
9411+ ;path
9412+ =d "M128 96C110.327 96 96 81.6731 96 64C96 46.3269 110.327 32 128 32"
9413+ =vector-effect "non-scaling-stroke"
9414+ :: =stroke bg
9415+ =fill "none";
9416+ ==
9417+::
9418+ :- 'rel'
9419+ |= [fg=tape bg=tape]
9420+ :~ ;path
9421+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
9422+ :: =fill fg
9423+ =vector-effect "non-scaling-stroke";
9424+ :: =stroke bg
9425+ :: =stroke-width "0.5"
9426+ ;path
9427+ =d "M128 64L0 64"
9428+ =vector-effect "non-scaling-stroke"
9429+ :: =stroke bg
9430+ =fill "none";
9431+ ;path
9432+ =d "M128 96L0 96"
9433+ =vector-effect "non-scaling-stroke"
9434+ :: =stroke bg
9435+ =fill "none";
9436+ ;path
9437+ =d "M128 32L0 32"
9438+ =vector-effect "non-scaling-stroke"
9439+ :: =stroke bg
9440+ =fill "none";
9441+ ==
9442+::
9443+ :- 'rem'
9444+ |= [fg=tape bg=tape]
9445+ :~ ;circle
9446+ =cx "64"
9447+ =cy "64"
9448+ =r "64"
9449+ :: =fill fg
9450+ =vector-effect "non-scaling-stroke";
9451+ :: =stroke bg
9452+ :: =stroke-width "0.5"
9453+ ;path
9454+ =d "M-0.00292969 0L127.997 128"
9455+ =vector-effect "non-scaling-stroke"
9456+ :: =stroke bg
9457+ :: =stroke-linecap "square"
9458+ =fill "none";
9459+ ;path
9460+ =d "M128 64C92.6538 64 64 35.3462 64 0"
9461+ =vector-effect "non-scaling-stroke"
9462+ :: =stroke bg
9463+ =fill "none";
9464+ ==
9465+::
9466+ :- 'ren'
9467+ |= [fg=tape bg=tape]
9468+ :~ ;rect
9469+ =width "128"
9470+ =height "128"
9471+ :: =fill fg
9472+ =vector-effect "non-scaling-stroke";
9473+ :: =stroke bg
9474+ :: =stroke-width "0.5"
9475+ ;line
9476+ =x1 "80.0035"
9477+ =y1 "79.9965"
9478+ =x2 "112.003"
9479+ =y2 "111.997"
9480+ =vector-effect "non-scaling-stroke"
9481+ :: =stroke bg
9482+ =fill "none";
9483+ ;circle
9484+ =cx "64"
9485+ =cy "64"
9486+ =r "16"
9487+ =vector-effect "non-scaling-stroke"
9488+ :: =stroke bg
9489+ =fill "none";
9490+ ==
9491+::
9492+ :- 'rep'
9493+ |= [fg=tape bg=tape]
9494+ :~ ;path
9495+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
9496+ :: =fill fg
9497+ =vector-effect "non-scaling-stroke";
9498+ :: =stroke bg
9499+ :: =stroke-width "0.5"
9500+ ;path
9501+ =d "M32 128C32 74.9807 74.9807 32 128 32"
9502+ =vector-effect "non-scaling-stroke"
9503+ :: =stroke bg
9504+ =fill "none";
9505+ ==
9506+::
9507+ :- 'res'
9508+ |= [fg=tape bg=tape]
9509+ :~ ;path
9510+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
9511+ :: =fill fg
9512+ =vector-effect "non-scaling-stroke";
9513+ :: =stroke bg
9514+ :: =stroke-width "0.5"
9515+ ;line
9516+ =x1 "80.0035"
9517+ =y1 "79.9965"
9518+ =x2 "112.003"
9519+ =y2 "111.997"
9520+ =vector-effect "non-scaling-stroke"
9521+ :: =stroke bg
9522+ =fill "none";
9523+ ==
9524+::
9525+ :- 'ret'
9526+ |= [fg=tape bg=tape]
9527+ :~ ;circle
9528+ =cx "64"
9529+ =cy "64"
9530+ =r "64"
9531+ :: =fill fg
9532+ =vector-effect "non-scaling-stroke";
9533+ :: =stroke bg
9534+ :: =stroke-width "0.5"
9535+ ;path
9536+ =d "M128 64L0 64"
9537+ =vector-effect "non-scaling-stroke"
9538+ :: =stroke bg
9539+ =fill "none";
9540+ ==
9541+::
9542+ :- 'rev'
9543+ |= [fg=tape bg=tape]
9544+ :~ ;path
9545+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
9546+ :: =fill fg
9547+ =vector-effect "non-scaling-stroke";
9548+ :: =stroke bg
9549+ :: =stroke-width "0.5"
9550+ ;line
9551+ =x1 "15.9965"
9552+ =y1 "111.997"
9553+ =x2 "53.9965"
9554+ =y2 "73.9965"
9555+ =vector-effect "non-scaling-stroke"
9556+ :: =stroke bg
9557+ =fill "none";
9558+ ;circle
9559+ =cx "16"
9560+ =cy "112"
9561+ =r "11.5"
9562+ :: =fill fg
9563+ =vector-effect "non-scaling-stroke"
9564+ =stroke fg;
9565+ ;circle
9566+ =cx "16"
9567+ =cy "112"
9568+ =r "9"
9569+ =fill bg
9570+ =vector-effect "non-scaling-stroke";
9571+ :: =stroke bg
9572+ :: =stroke-width "2"
9573+ ;path
9574+ =fill-rule "evenodd"
9575+ =clip-rule "evenodd"
9576+ =stroke "none"
9577+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
9578+ =fill bg;
9579+ ==
9580+::
9581+ :- 'rex'
9582+ |= [fg=tape bg=tape]
9583+ :~ ;path
9584+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
9585+ :: =fill fg
9586+ =vector-effect "non-scaling-stroke";
9587+ :: =stroke bg
9588+ :: =stroke-width "0.5"
9589+ ;path
9590+ =d "M128 64L0 64"
9591+ =vector-effect "non-scaling-stroke"
9592+ :: =stroke bg
9593+ =fill "none";
9594+ ;path
9595+ =fill-rule "evenodd"
9596+ =clip-rule "evenodd"
9597+ =stroke "none"
9598+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
9599+ =fill bg;
9600+ ==
9601+::
9602+ :- 'rib'
9603+ |= [fg=tape bg=tape]
9604+ :~ ;circle
9605+ =cx "64"
9606+ =cy "64"
9607+ =r "64"
9608+ :: =fill fg
9609+ =vector-effect "non-scaling-stroke";
9610+ :: =stroke bg
9611+ :: =stroke-width "0.5"
9612+ ;line
9613+ =x1 "8.74228e-08"
9614+ =y1 "64"
9615+ =x2 "128"
9616+ =y2 "64"
9617+ =vector-effect "non-scaling-stroke"
9618+ :: =stroke bg
9619+ =fill "none";
9620+ ;line
9621+ =x1 "64"
9622+ =y1 "2.18557e-08"
9623+ =x2 "64"
9624+ =y2 "128"
9625+ =vector-effect "non-scaling-stroke"
9626+ :: =stroke bg
9627+ =fill "none";
9628+ ==
9629+::
9630+ :- 'ric'
9631+ |= [fg=tape bg=tape]
9632+ :~ ;path
9633+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
9634+ :: =fill fg
9635+ =vector-effect "non-scaling-stroke";
9636+ :: =stroke bg
9637+ :: =stroke-width "0.5"
9638+ ;path
9639+ =d "M96 128C96 74.9807 53.0193 32 0 32"
9640+ =vector-effect "non-scaling-stroke"
9641+ :: =stroke bg
9642+ =fill "none";
9643+ ==
9644+::
9645+ :- 'rid'
9646+ |= [fg=tape bg=tape]
9647+ :~ ;path
9648+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
9649+ :: =fill fg
9650+ =vector-effect "non-scaling-stroke";
9651+ :: =stroke bg
9652+ :: =stroke-width "0.5"
9653+ ;path
9654+ =d "M64 0L64 128"
9655+ =vector-effect "non-scaling-stroke"
9656+ :: =stroke bg
9657+ =fill "none";
9658+ ;path
9659+ =d "M96 0L96 128"
9660+ =vector-effect "non-scaling-stroke"
9661+ :: =stroke bg
9662+ =fill "none";
9663+ ==
9664+::
9665+ :- 'rig'
9666+ |= [fg=tape bg=tape]
9667+ :~ ;circle
9668+ =cx "64"
9669+ =cy "64"
9670+ =r "64"
9671+ :: =fill fg
9672+ =vector-effect "non-scaling-stroke";
9673+ :: =stroke bg
9674+ :: =stroke-width "0.5"
9675+ ;circle
9676+ =cx "64"
9677+ =cy "32"
9678+ =r "11.5"
9679+ :: =fill fg
9680+ =vector-effect "non-scaling-stroke"
9681+ =stroke fg;
9682+ ;circle
9683+ =cx "64"
9684+ =cy "32"
9685+ =r "9"
9686+ =fill bg
9687+ =vector-effect "non-scaling-stroke";
9688+ :: =stroke bg
9689+ :: =stroke-width "2"
9690+ ;circle
9691+ =cx "64"
9692+ =cy "96"
9693+ =r "11.5"
9694+ :: =fill fg
9695+ =vector-effect "non-scaling-stroke"
9696+ =stroke fg;
9697+ ;circle
9698+ =cx "64"
9699+ =cy "96"
9700+ =r "9"
9701+ =fill bg
9702+ =vector-effect "non-scaling-stroke";
9703+ :: =stroke bg
9704+ :: =stroke-width "2"
9705+ ==
9706+::
9707+ :- 'ril'
9708+ |= [fg=tape bg=tape]
9709+ :~ ;path
9710+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
9711+ :: =fill fg
9712+ =vector-effect "non-scaling-stroke";
9713+ :: =stroke bg
9714+ :: =stroke-width "0.5"
9715+ ;line
9716+ =x1 "0.5"
9717+ =y1 "-0.5"
9718+ =x2 "181.5"
9719+ =y2 "-0.5"
9720+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.693 0)"
9721+ =vector-effect "non-scaling-stroke"
9722+ :: =stroke bg
9723+ :: =stroke-linecap "square"
9724+ =fill "none";
9725+ ;circle
9726+ =cx "96"
9727+ =cy "32"
9728+ =r "11.5"
9729+ :: =fill fg
9730+ =vector-effect "non-scaling-stroke"
9731+ =stroke fg;
9732+ ;circle
9733+ =cx "96"
9734+ =cy "32"
9735+ =r "9"
9736+ =fill bg
9737+ =vector-effect "non-scaling-stroke";
9738+ :: =stroke bg
9739+ :: =stroke-width "2"
9740+ ==
9741+::
9742+ :- 'rin'
9743+ |= [fg=tape bg=tape]
9744+ :~ ;rect
9745+ =width "128"
9746+ =height "128"
9747+ :: =fill fg
9748+ =vector-effect "non-scaling-stroke";
9749+ :: =stroke bg
9750+ :: =stroke-width "0.5"
9751+ ;line
9752+ =x1 "64"
9753+ =y1 "2.18557e-08"
9754+ =x2 "64"
9755+ =y2 "128"
9756+ =vector-effect "non-scaling-stroke"
9757+ :: =stroke bg
9758+ =fill "none";
9759+ ;line
9760+ =x1 "32"
9761+ =y1 "2.18557e-08"
9762+ =x2 "32"
9763+ =y2 "128"
9764+ =vector-effect "non-scaling-stroke"
9765+ :: =stroke bg
9766+ =fill "none";
9767+ ==
9768+::
9769+ :- 'rip'
9770+ |= [fg=tape bg=tape]
9771+ :~ ;path
9772+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
9773+ :: =fill fg
9774+ =vector-effect "non-scaling-stroke";
9775+ :: =stroke bg
9776+ :: =stroke-width "0.5"
9777+ ;path
9778+ =d "M-0.00292969 0L127.997 128"
9779+ =vector-effect "non-scaling-stroke"
9780+ :: =stroke bg
9781+ :: =stroke-linecap "square"
9782+ =fill "none";
9783+ ;path
9784+ =d "M96 64C96 46.3269 81.6731 32 64 32"
9785+ =vector-effect "non-scaling-stroke"
9786+ :: =stroke bg
9787+ =fill "none";
9788+ ;circle
9789+ =cx "96"
9790+ =cy "64"
9791+ =r "11.5"
9792+ :: =fill fg
9793+ =vector-effect "non-scaling-stroke"
9794+ =stroke fg;
9795+ ;circle
9796+ =cx "96"
9797+ =cy "64"
9798+ =r "9"
9799+ =fill bg
9800+ =vector-effect "non-scaling-stroke";
9801+ :: =stroke bg
9802+ :: =stroke-width "2"
9803+ ==
9804+::
9805+ :- 'ris'
9806+ |= [fg=tape bg=tape]
9807+ :~ ;path
9808+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
9809+ :: =fill fg
9810+ =vector-effect "non-scaling-stroke";
9811+ :: =stroke bg
9812+ :: =stroke-width "0.5"
9813+ ;line
9814+ =x1 "-0.0029152"
9815+ =x2 "127.983"
9816+ =y2 "127.986"
9817+ =vector-effect "non-scaling-stroke"
9818+ :: =stroke bg
9819+ :: =stroke-linecap "square"
9820+ =fill "none";
9821+ ;path
9822+ =d "M128 0C128 35.3511 113.669 67.3551 90.5 90.5193"
9823+ =vector-effect "non-scaling-stroke"
9824+ :: =stroke bg
9825+ =fill "none";
9826+ ;path
9827+ =d "M96 0C96 26.5077 85.2564 50.5061 67.8862 67.8783"
9828+ =vector-effect "non-scaling-stroke"
9829+ :: =stroke bg
9830+ =fill "none";
9831+ ;path
9832+ =d "M64 0C64 17.6721 56.8374 33.6713 45.2568 45.2529"
9833+ =vector-effect "non-scaling-stroke"
9834+ :: =stroke bg
9835+ =fill "none";
9836+ ;path
9837+ =d "M32.3716 0C32.3716 8.83603 28.7903 16.8356 23 22.6264"
9838+ =vector-effect "non-scaling-stroke"
9839+ :: =stroke bg
9840+ =fill "none";
9841+ ==
9842+::
9843+ :- 'rit'
9844+ |= [fg=tape bg=tape]
9845+ :~ ;path
9846+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
9847+ :: =fill fg
9848+ =vector-effect "non-scaling-stroke";
9849+ :: =stroke bg
9850+ :: =stroke-width "0.5"
9851+ ;line
9852+ =x1 "0.5"
9853+ =y1 "-0.5"
9854+ =x2 "181.5"
9855+ =y2 "-0.5"
9856+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
9857+ =vector-effect "non-scaling-stroke"
9858+ :: =stroke bg
9859+ :: =stroke-linecap "square"
9860+ =fill "none";
9861+ ;path
9862+ =fill-rule "evenodd"
9863+ =clip-rule "evenodd"
9864+ =stroke "none"
9865+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
9866+ =fill bg;
9867+ ==
9868+::
9869+ :- 'riv'
9870+ |= [fg=tape bg=tape]
9871+ :~ ;rect
9872+ =width "128"
9873+ =height "128"
9874+ :: =fill fg
9875+ =vector-effect "non-scaling-stroke";
9876+ :: =stroke bg
9877+ :: =stroke-width "0.5"
9878+ ;circle
9879+ =cx "64"
9880+ =cy "64"
9881+ =r "32"
9882+ =vector-effect "non-scaling-stroke"
9883+ :: =stroke bg
9884+ =fill "none";
9885+ ;line
9886+ =x1 "64"
9887+ =y1 "2.18557e-08"
9888+ =x2 "64"
9889+ =y2 "128"
9890+ =vector-effect "non-scaling-stroke"
9891+ :: =stroke bg
9892+ =fill "none";
9893+ ;circle
9894+ =cx "64"
9895+ =cy "64"
9896+ =r "48"
9897+ =vector-effect "non-scaling-stroke"
9898+ :: =stroke bg
9899+ =fill "none";
9900+ ==
9901+::
9902+ :- 'roc'
9903+ |= [fg=tape bg=tape]
9904+ :~ ;path
9905+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
9906+ :: =fill fg
9907+ =vector-effect "non-scaling-stroke";
9908+ :: =stroke bg
9909+ :: =stroke-width "0.5"
9910+ ;circle
9911+ =cx "64"
9912+ =cy "64"
9913+ =r "11.5"
9914+ :: =fill fg
9915+ =vector-effect "non-scaling-stroke"
9916+ =stroke fg;
9917+ ;circle
9918+ =cx "64"
9919+ =cy "64"
9920+ =r "9"
9921+ =fill bg
9922+ =vector-effect "non-scaling-stroke";
9923+ :: =stroke bg
9924+ :: =stroke-width "2"
9925+ ;circle
9926+ =cx "16"
9927+ =cy "112"
9928+ =r "11.5"
9929+ =fill bg
9930+ =vector-effect "non-scaling-stroke";
9931+ :: =stroke bg
9932+ ;circle
9933+ =cx "16"
9934+ =cy "112"
9935+ =r "9"
9936+ :: =fill fg
9937+ =vector-effect "non-scaling-stroke"
9938+ =stroke fg;
9939+ :: =stroke-width "2"
9940+ ;circle
9941+ =cx "112"
9942+ =cy "16"
9943+ =r "11.5"
9944+ =fill bg
9945+ =vector-effect "non-scaling-stroke";
9946+ :: =stroke bg
9947+ ;circle
9948+ =cx "112"
9949+ =cy "16"
9950+ =r "9"
9951+ :: =fill fg
9952+ =vector-effect "non-scaling-stroke"
9953+ =stroke fg;
9954+ :: =stroke-width "2"
9955+ ==
9956+::
9957+ :- 'rol'
9958+ |= [fg=tape bg=tape]
9959+ :~ ;circle
9960+ =cx "64"
9961+ =cy "64"
9962+ =r "64"
9963+ :: =fill fg
9964+ =vector-effect "non-scaling-stroke";
9965+ :: =stroke bg
9966+ :: =stroke-width "0.5"
9967+ ;path
9968+ =d "M128 64L0 64"
9969+ =vector-effect "non-scaling-stroke"
9970+ :: =stroke bg
9971+ =fill "none";
9972+ ;path
9973+ =d "M64 16C90.5097 16 112 37.4903 112 64C112 90.5097 90.5097 112 64 112"
9974+ =vector-effect "non-scaling-stroke"
9975+ :: =stroke bg
9976+ =fill "none";
9977+ ==
9978+::
9979+ :- 'ron'
9980+ |= [fg=tape bg=tape]
9981+ :~ ;path
9982+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
9983+ :: =fill fg
9984+ =vector-effect "non-scaling-stroke";
9985+ :: =stroke bg
9986+ :: =stroke-width "0.5"
9987+ ;path
9988+ =d "M128 0C128 70.6924 70.6925 128 0 128"
9989+ =vector-effect "non-scaling-stroke"
9990+ :: =stroke bg
9991+ =fill "none";
9992+ ==
9993+::
9994+ :- 'rop'
9995+ |= [fg=tape bg=tape]
9996+ :~ ;circle
9997+ =cx "64"
9998+ =cy "64"
9999+ =r "64"
10000+ :: =fill fg
10001+ =vector-effect "non-scaling-stroke";
10002+ :: =stroke bg
10003+ :: =stroke-width "0.5"
10004+ ;path
10005+ =d "M-0.00292969 0L127.997 128"
10006+ =vector-effect "non-scaling-stroke"
10007+ :: =stroke bg
10008+ :: =stroke-linecap "square"
10009+ =fill "none";
10010+ ;path
10011+ =d "M112 64C112 37.4903 90.5097 16 64 16"
10012+ =vector-effect "non-scaling-stroke"
10013+ :: =stroke bg
10014+ =fill "none";
10015+ ==
10016+::
10017+ :- 'ros'
10018+ |= [fg=tape bg=tape]
10019+ :~ ;path
10020+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10021+ :: =fill fg
10022+ =vector-effect "non-scaling-stroke";
10023+ :: =stroke bg
10024+ :: =stroke-width "0.5"
10025+ ;line
10026+ =x1 "0.5"
10027+ =y1 "-0.5"
10028+ =x2 "181.5"
10029+ =y2 "-0.5"
10030+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
10031+ =vector-effect "non-scaling-stroke"
10032+ :: =stroke bg
10033+ :: =stroke-linecap "square"
10034+ =fill "none";
10035+ ;circle
10036+ =cx "96"
10037+ =cy "96"
10038+ =r "11.5"
10039+ :: =fill fg
10040+ =vector-effect "non-scaling-stroke"
10041+ =stroke fg;
10042+ ;circle
10043+ =cx "96"
10044+ =cy "96"
10045+ =r "9"
10046+ =fill bg
10047+ =vector-effect "non-scaling-stroke";
10048+ :: =stroke bg
10049+ :: =stroke-width "2"
10050+ ==
10051+::
10052+ :- 'rov'
10053+ |= [fg=tape bg=tape]
10054+ :~ ;rect
10055+ =width "128"
10056+ =height "128"
10057+ :: =fill fg
10058+ =vector-effect "non-scaling-stroke";
10059+ :: =stroke bg
10060+ :: =stroke-width "0.5"
10061+ ;line
10062+ =x1 "-0.0029152"
10063+ =x2 "127.983"
10064+ =y2 "127.986"
10065+ =vector-effect "non-scaling-stroke"
10066+ :: =stroke bg
10067+ :: =stroke-linecap "square"
10068+ =fill "none";
10069+ ;path
10070+ =d "M128 0C128 35.3511 113.669 67.3551 90.5 90.5193"
10071+ =vector-effect "non-scaling-stroke"
10072+ :: =stroke bg
10073+ =fill "none";
10074+ ;path
10075+ =d "M96 0C96 26.5077 85.2564 50.5061 67.8862 67.8783"
10076+ =vector-effect "non-scaling-stroke"
10077+ :: =stroke bg
10078+ =fill "none";
10079+ ;path
10080+ =d "M64 0C64 17.6721 56.8374 33.6713 45.2568 45.2529"
10081+ =vector-effect "non-scaling-stroke"
10082+ :: =stroke bg
10083+ =fill "none";
10084+ ;path
10085+ =d "M32.3716 0C32.3716 8.83603 28.7903 16.8356 23 22.6264"
10086+ =vector-effect "non-scaling-stroke"
10087+ :: =stroke bg
10088+ =fill "none";
10089+ ==
10090+::
10091+ :- 'ruc'
10092+ |= [fg=tape bg=tape]
10093+ :~ ;path
10094+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10095+ :: =fill fg
10096+ =vector-effect "non-scaling-stroke";
10097+ :: =stroke bg
10098+ :: =stroke-width "0.5"
10099+ ;path
10100+ =d "M128 64L0 64"
10101+ =vector-effect "non-scaling-stroke"
10102+ :: =stroke bg
10103+ =fill "none";
10104+ ;path
10105+ =d "M128 32L0 32"
10106+ =vector-effect "non-scaling-stroke"
10107+ :: =stroke bg
10108+ =fill "none";
10109+ ==
10110+::
10111+ :- 'rud'
10112+ |= [fg=tape bg=tape]
10113+ :~ ;path
10114+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10115+ :: =fill fg
10116+ =vector-effect "non-scaling-stroke";
10117+ :: =stroke bg
10118+ :: =stroke-width "0.5"
10119+ ;path
10120+ =d "M128 64L0 64"
10121+ =vector-effect "non-scaling-stroke"
10122+ :: =stroke bg
10123+ =fill "none";
10124+ ;path
10125+ =d "M32 0L32 128"
10126+ =vector-effect "non-scaling-stroke"
10127+ :: =stroke bg
10128+ =fill "none";
10129+ ;path
10130+ =d "M64 0L64 128"
10131+ =vector-effect "non-scaling-stroke"
10132+ :: =stroke bg
10133+ =fill "none";
10134+ ==
10135+::
10136+ :- 'rul'
10137+ |= [fg=tape bg=tape]
10138+ :~ ;circle
10139+ =cx "64"
10140+ =cy "64"
10141+ =r "64"
10142+ :: =fill fg
10143+ =vector-effect "non-scaling-stroke";
10144+ :: =stroke bg
10145+ :: =stroke-width "0.5"
10146+ ;line
10147+ =x1 "80.0035"
10148+ =y1 "79.9964"
10149+ =x2 "112.003"
10150+ =y2 "111.996"
10151+ =vector-effect "non-scaling-stroke"
10152+ :: =stroke bg
10153+ =fill "none";
10154+ ;path
10155+ =fill-rule "evenodd"
10156+ =clip-rule "evenodd"
10157+ =stroke "none"
10158+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
10159+ =fill bg;
10160+ ==
10161+::
10162+ :- 'rum'
10163+ |= [fg=tape bg=tape]
10164+ :~ ;path
10165+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10166+ :: =fill fg
10167+ =vector-effect "non-scaling-stroke";
10168+ :: =stroke bg
10169+ :: =stroke-width "0.5"
10170+ ;path
10171+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
10172+ =vector-effect "non-scaling-stroke"
10173+ :: =stroke bg
10174+ =fill "none";
10175+ ==
10176+::
10177+ :- 'run'
10178+ |= [fg=tape bg=tape]
10179+ :~ ;path
10180+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
10181+ :: =fill fg
10182+ =vector-effect "non-scaling-stroke";
10183+ :: =stroke bg
10184+ :: =stroke-width "0.5"
10185+ ;path
10186+ =d "M64 0L64 128"
10187+ =vector-effect "non-scaling-stroke"
10188+ :: =stroke bg
10189+ =fill "none";
10190+ ;path
10191+ =d "M96 0L96 128"
10192+ =vector-effect "non-scaling-stroke"
10193+ :: =stroke bg
10194+ =fill "none";
10195+ ;path
10196+ =d "M32 0L32 128"
10197+ =vector-effect "non-scaling-stroke"
10198+ :: =stroke bg
10199+ =fill "none";
10200+ ==
10201+::
10202+ :- 'rup'
10203+ |= [fg=tape bg=tape]
10204+ :~ ;path
10205+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
10206+ :: =fill fg
10207+ =vector-effect "non-scaling-stroke";
10208+ :: =stroke bg
10209+ :: =stroke-width "0.5"
10210+ ;path
10211+ =d "M64 0L64 128"
10212+ =vector-effect "non-scaling-stroke"
10213+ :: =stroke bg
10214+ =fill "none";
10215+ ;path
10216+ =d "M64 112C90.5097 112 112 90.5097 112 64C112 37.4903 90.5097 16 64 16"
10217+ =vector-effect "non-scaling-stroke"
10218+ :: =stroke bg
10219+ =fill "none";
10220+ ;circle
10221+ =cx "64"
10222+ =cy "64"
10223+ =r "32"
10224+ =vector-effect "non-scaling-stroke"
10225+ :: =stroke bg
10226+ =fill "none";
10227+ ==
10228+::
10229+ :- 'rus'
10230+ |= [fg=tape bg=tape]
10231+ :~ ;path
10232+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10233+ :: =fill fg
10234+ =vector-effect "non-scaling-stroke";
10235+ :: =stroke bg
10236+ :: =stroke-width "0.5"
10237+ ;path
10238+ =d "M128 0L0 128"
10239+ =vector-effect "non-scaling-stroke"
10240+ :: =stroke bg
10241+ :: =stroke-linecap "square"
10242+ =fill "none";
10243+ ;path
10244+ =d "M64 128C64 92.6538 35.3462 64 0 64"
10245+ =vector-effect "non-scaling-stroke"
10246+ :: =stroke bg
10247+ =fill "none";
10248+ ==
10249+::
10250+ :- 'rut'
10251+ |= [fg=tape bg=tape]
10252+ :~ ;rect
10253+ =width "128"
10254+ =height "128"
10255+ :: =fill fg
10256+ =vector-effect "non-scaling-stroke";
10257+ :: =stroke bg
10258+ :: =stroke-width "0.5"
10259+ ;circle
10260+ =cx "32"
10261+ =cy "32"
10262+ =r "11.5"
10263+ :: =fill fg
10264+ =vector-effect "non-scaling-stroke"
10265+ =stroke fg;
10266+ ;circle
10267+ =cx "32"
10268+ =cy "32"
10269+ =r "9"
10270+ =fill bg
10271+ =vector-effect "non-scaling-stroke";
10272+ :: =stroke bg
10273+ :: =stroke-width "2"
10274+ ==
10275+::
10276+ :- 'rux'
10277+ |= [fg=tape bg=tape]
10278+ :~ ;path
10279+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10280+ :: =fill fg
10281+ =vector-effect "non-scaling-stroke";
10282+ :: =stroke bg
10283+ :: =stroke-width "0.5"
10284+ ;path
10285+ =d "M128 64L0 64"
10286+ =vector-effect "non-scaling-stroke"
10287+ :: =stroke bg
10288+ =fill "none";
10289+ ;path
10290+ =d "M32 64C32 81.6731 46.3269 96 64 96"
10291+ =vector-effect "non-scaling-stroke"
10292+ :: =stroke bg
10293+ =fill "none";
10294+ ==
10295+::
10296+ :- 'ryc'
10297+ |= [fg=tape bg=tape]
10298+ :~ ;path
10299+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10300+ :: =fill fg
10301+ =vector-effect "non-scaling-stroke";
10302+ :: =stroke bg
10303+ :: =stroke-width "0.5"
10304+ ;path
10305+ =d "M128 96L0 96"
10306+ =vector-effect "non-scaling-stroke"
10307+ :: =stroke bg
10308+ =fill "none";
10309+ ==
10310+::
10311+ :- 'ryd'
10312+ |= [fg=tape bg=tape]
10313+ :~ ;path
10314+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
10315+ :: =fill fg
10316+ =vector-effect "non-scaling-stroke";
10317+ :: =stroke bg
10318+ :: =stroke-width "0.5"
10319+ ;path
10320+ =d "M-0.00280762 0L127.997 128"
10321+ =vector-effect "non-scaling-stroke"
10322+ :: =stroke bg
10323+ :: =stroke-linecap "square"
10324+ =fill "none";
10325+ ;path
10326+ =d "M96 64C96 81.6731 81.6731 96 64 96"
10327+ =vector-effect "non-scaling-stroke"
10328+ :: =stroke bg
10329+ =fill "none";
10330+ ==
10331+::
10332+ :- 'ryg'
10333+ |= [fg=tape bg=tape]
10334+ :~ ;path
10335+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10336+ :: =fill fg
10337+ =vector-effect "non-scaling-stroke";
10338+ :: =stroke bg
10339+ :: =stroke-width "0.5"
10340+ ;path
10341+ =d "M-2.79795e-06 -3.55988e-06C70.6924 -4.40288e-06 128 57.3075 128 128"
10342+ =vector-effect "non-scaling-stroke"
10343+ :: =stroke bg
10344+ =fill "none";
10345+ ;line
10346+ =x1 "16.0035"
10347+ =y1 "15.9965"
10348+ =x2 "48.0035"
10349+ =y2 "47.9965"
10350+ =vector-effect "non-scaling-stroke"
10351+ :: =stroke bg
10352+ =fill "none";
10353+ ;circle
10354+ =cx "64"
10355+ =cy "64"
10356+ =r "11.5"
10357+ :: =fill fg
10358+ =vector-effect "non-scaling-stroke"
10359+ =stroke fg;
10360+ ;circle
10361+ =cx "64"
10362+ =cy "64"
10363+ =r "9"
10364+ =fill bg
10365+ =vector-effect "non-scaling-stroke";
10366+ :: =stroke bg
10367+ :: =stroke-width "2"
10368+ ==
10369+::
10370+ :- 'ryl'
10371+ |= [fg=tape bg=tape]
10372+ :~ ;path
10373+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10374+ :: =fill fg
10375+ =vector-effect "non-scaling-stroke";
10376+ :: =stroke bg
10377+ :: =stroke-width "0.5"
10378+ ;path
10379+ =d "M128 0L0 128"
10380+ =vector-effect "non-scaling-stroke"
10381+ :: =stroke bg
10382+ :: =stroke-linecap "square"
10383+ =fill "none";
10384+ ;path
10385+ =d "M128 128C92.6489 128 60.6449 113.669 37.4807 90.5"
10386+ =vector-effect "non-scaling-stroke"
10387+ :: =stroke bg
10388+ =fill "none";
10389+ ;path
10390+ =d "M128 96C101.492 96 77.4939 85.2564 60.1217 67.8862"
10391+ =vector-effect "non-scaling-stroke"
10392+ :: =stroke bg
10393+ =fill "none";
10394+ ;path
10395+ =d "M128 64C110.328 64 94.3287 56.8374 82.7471 45.2568"
10396+ =vector-effect "non-scaling-stroke"
10397+ :: =stroke bg
10398+ =fill "none";
10399+ ;path
10400+ =d "M128 32.3716C119.164 32.3716 111.164 28.7903 105.374 23"
10401+ =vector-effect "non-scaling-stroke"
10402+ :: =stroke bg
10403+ =fill "none";
10404+ ==
10405+::
10406+ :- 'rym'
10407+ |= [fg=tape bg=tape]
10408+ :~ ;path
10409+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10410+ :: =fill fg
10411+ =vector-effect "non-scaling-stroke";
10412+ :: =stroke bg
10413+ :: =stroke-width "0.5"
10414+ ;path
10415+ =d "M128 96L0 96"
10416+ =vector-effect "non-scaling-stroke"
10417+ :: =stroke bg
10418+ =fill "none";
10419+ ==
10420+::
10421+ :- 'ryn'
10422+ |= [fg=tape bg=tape]
10423+ :~ ;path
10424+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10425+ :: =fill fg
10426+ =vector-effect "non-scaling-stroke";
10427+ :: =stroke bg
10428+ :: =stroke-width "0.5"
10429+ ;path
10430+ =d "M128 128C57.3075 128 -3.09007e-06 70.6925 0 0"
10431+ =vector-effect "non-scaling-stroke"
10432+ :: =stroke bg
10433+ =fill "none";
10434+ ==
10435+::
10436+ :- 'ryp'
10437+ |= [fg=tape bg=tape]
10438+ :~ ;path
10439+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10440+ :: =fill fg
10441+ =vector-effect "non-scaling-stroke";
10442+ :: =stroke bg
10443+ :: =stroke-width "0.5"
10444+ ;path
10445+ =d "M-0.00292969 0L127.997 128"
10446+ =vector-effect "non-scaling-stroke"
10447+ :: =stroke bg
10448+ :: =stroke-linecap "square"
10449+ =fill "none";
10450+ ==
10451+::
10452+ :- 'rys'
10453+ |= [fg=tape bg=tape]
10454+ :~ ;path
10455+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10456+ :: =fill fg
10457+ =vector-effect "non-scaling-stroke";
10458+ :: =stroke bg
10459+ :: =stroke-width "0.5"
10460+ ;path
10461+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
10462+ =vector-effect "non-scaling-stroke"
10463+ :: =stroke bg
10464+ =fill "none";
10465+ ==
10466+::
10467+ :- 'ryt'
10468+ |= [fg=tape bg=tape]
10469+ :~ ;path
10470+ =d "M64 128H0L5.59506e-06 -7.62939e-06L64 -2.03434e-06C99.3462 1.05573e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
10471+ :: =fill fg
10472+ =vector-effect "non-scaling-stroke";
10473+ :: =stroke bg
10474+ :: =stroke-width "0.5"
10475+ ;circle
10476+ =cx "64"
10477+ =cy "64"
10478+ =r "16"
10479+ =vector-effect "non-scaling-stroke"
10480+ :: =stroke bg
10481+ =fill "none";
10482+ ;circle
10483+ =cx "64"
10484+ =cy "64"
10485+ =r "48"
10486+ =vector-effect "non-scaling-stroke"
10487+ :: =stroke bg
10488+ =fill "none";
10489+ ;path
10490+ =d "M128 0L0 128"
10491+ =vector-effect "non-scaling-stroke"
10492+ :: =stroke bg
10493+ :: =stroke-linecap "square"
10494+ =fill "none";
10495+ ==
10496+::
10497+ :- 'ryx'
10498+ |= [fg=tape bg=tape]
10499+ :~ ;path
10500+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
10501+ :: =fill fg
10502+ =vector-effect "non-scaling-stroke";
10503+ :: =stroke bg
10504+ :: =stroke-width "0.5"
10505+ ;line
10506+ =x1 "0.5"
10507+ =y1 "-0.5"
10508+ =x2 "181.5"
10509+ =y2 "-0.5"
10510+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
10511+ =vector-effect "non-scaling-stroke"
10512+ :: =stroke bg
10513+ :: =stroke-linecap "square"
10514+ =fill "none";
10515+ ;path
10516+ =d "M128 0L0 128"
10517+ =vector-effect "non-scaling-stroke"
10518+ :: =stroke bg
10519+ :: =stroke-linecap "square"
10520+ =fill "none";
10521+ ;circle
10522+ =cx "64"
10523+ =cy "64"
10524+ =r "16"
10525+ =vector-effect "non-scaling-stroke"
10526+ :: =stroke bg
10527+ =fill "none";
10528+ ==
10529+::
10530+ :- 'sab'
10531+ |= [fg=tape bg=tape]
10532+ :~ ;path
10533+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10534+ :: =fill fg
10535+ =vector-effect "non-scaling-stroke";
10536+ :: =stroke bg
10537+ :: =stroke-width "0.5"
10538+ ;path
10539+ =d "M-0.00292969 0L127.997 128"
10540+ =vector-effect "non-scaling-stroke"
10541+ :: =stroke bg
10542+ :: =stroke-linecap "square"
10543+ =fill "none";
10544+ ;line
10545+ =y1 "-0.5"
10546+ =x2 "45.2548"
10547+ =y2 "-0.5"
10548+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.65)"
10549+ =vector-effect "non-scaling-stroke"
10550+ :: =stroke bg
10551+ =fill "none";
10552+ ;circle
10553+ =cx "16"
10554+ =cy "112"
10555+ =r "11.5"
10556+ =fill bg
10557+ =vector-effect "non-scaling-stroke";
10558+ :: =stroke bg
10559+ ;circle
10560+ =cx "16"
10561+ =cy "112"
10562+ =r "9"
10563+ :: =fill fg
10564+ =vector-effect "non-scaling-stroke"
10565+ =stroke fg;
10566+ :: =stroke-width "2"
10567+ ==
10568+::
10569+ :- 'sal'
10570+ |= [fg=tape bg=tape]
10571+ :~ ;path
10572+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
10573+ :: =fill fg
10574+ =vector-effect "non-scaling-stroke";
10575+ :: =stroke bg
10576+ :: =stroke-width "0.5"
10577+ ;path
10578+ =d "M0 128L128 0"
10579+ =vector-effect "non-scaling-stroke"
10580+ :: =stroke bg
10581+ :: =stroke-linecap "square"
10582+ =fill "none";
10583+ ;path
10584+ =d "M-0.701724 31.9914C25.6281 31.9914 49.4822 42.5913 66.8261 59.7565M-0.701723 63.9914C16.7916 63.9914 32.6456 71.0098 44.1982 82.3844M-0.701722 95.9914C7.955 95.9914 15.8089 99.4288 21.5694 105.013"
10585+ =vector-effect "non-scaling-stroke"
10586+ :: =stroke bg
10587+ =fill "none";
10588+ ==
10589+::
10590+ :- 'sam'
10591+ |= [fg=tape bg=tape]
10592+ :~ ;path
10593+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
10594+ :: =fill fg
10595+ =vector-effect "non-scaling-stroke";
10596+ :: =stroke bg
10597+ :: =stroke-width "0.5"
10598+ ;circle
10599+ =cx "64"
10600+ =cy "64"
10601+ =r "48"
10602+ =vector-effect "non-scaling-stroke"
10603+ :: =stroke bg
10604+ =fill "none";
10605+ ;path
10606+ =d "M64 0L64 128"
10607+ =vector-effect "non-scaling-stroke"
10608+ :: =stroke bg
10609+ =fill "none";
10610+ ;path
10611+ =fill-rule "evenodd"
10612+ =clip-rule "evenodd"
10613+ =stroke "none"
10614+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
10615+ =fill bg;
10616+ ==
10617+::
10618+ :- 'san'
10619+ |= [fg=tape bg=tape]
10620+ :~ ;path
10621+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10622+ :: =fill fg
10623+ =vector-effect "non-scaling-stroke";
10624+ :: =stroke bg
10625+ :: =stroke-width "0.5"
10626+ ;line
10627+ =x1 "-0.0029152"
10628+ =x2 "127.983"
10629+ =y2 "127.986"
10630+ =vector-effect "non-scaling-stroke"
10631+ :: =stroke bg
10632+ :: =stroke-linecap "square"
10633+ =fill "none";
10634+ ==
10635+::
10636+ :- 'sap'
10637+ |= [fg=tape bg=tape]
10638+ :~ ;path
10639+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10640+ :: =fill fg
10641+ =vector-effect "non-scaling-stroke";
10642+ :: =stroke bg
10643+ :: =stroke-width "0.5"
10644+ ;line
10645+ =x1 "128"
10646+ =y1 "64"
10647+ =x2 "-4.37114e-08"
10648+ =y2 "64"
10649+ =vector-effect "non-scaling-stroke"
10650+ :: =stroke bg
10651+ =fill "none";
10652+ ;circle
10653+ =cx "96"
10654+ =cy "64"
10655+ =r "8"
10656+ =fill bg
10657+ =stroke "none";
10658+ ==
10659+::
10660+ :- 'sar'
10661+ |= [fg=tape bg=tape]
10662+ :~ ;circle
10663+ =cx "64"
10664+ =cy "64"
10665+ =r "64"
10666+ :: =fill fg
10667+ =vector-effect "non-scaling-stroke";
10668+ :: =stroke bg
10669+ :: =stroke-width "0.5"
10670+ ;circle
10671+ =cx "64"
10672+ =cy "64"
10673+ =r "48"
10674+ =vector-effect "non-scaling-stroke"
10675+ :: =stroke bg
10676+ =fill "none";
10677+ ;circle
10678+ =cx "64"
10679+ =cy "64"
10680+ =r "48"
10681+ =vector-effect "non-scaling-stroke"
10682+ :: =stroke bg
10683+ =fill "none";
10684+ ;line
10685+ =x1 "64"
10686+ =y1 "2.18557e-08"
10687+ =x2 "64"
10688+ =y2 "128"
10689+ =vector-effect "non-scaling-stroke"
10690+ :: =stroke bg
10691+ =fill "none";
10692+ ==
10693+::
10694+ :- 'sat'
10695+ |= [fg=tape bg=tape]
10696+ :~ ;path
10697+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
10698+ :: =fill fg
10699+ =vector-effect "non-scaling-stroke";
10700+ :: =stroke bg
10701+ :: =stroke-width "0.5"
10702+ ;path
10703+ =d "M128 128C128 57.3076 70.6925 0 0 0"
10704+ =vector-effect "non-scaling-stroke"
10705+ :: =stroke bg
10706+ =fill "none";
10707+ ==
10708+::
10709+ :- 'sav'
10710+ |= [fg=tape bg=tape]
10711+ :~ ;path
10712+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
10713+ :: =fill fg
10714+ =vector-effect "non-scaling-stroke";
10715+ :: =stroke bg
10716+ :: =stroke-width "0.5"
10717+ ;line
10718+ =x1 "0.5"
10719+ =y1 "-0.5"
10720+ =x2 "181.5"
10721+ =y2 "-0.5"
10722+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
10723+ =vector-effect "non-scaling-stroke"
10724+ :: =stroke bg
10725+ :: =stroke-linecap "square"
10726+ =fill "none";
10727+ ;path
10728+ =d "M96 64C96 46.3269 81.6731 32 64 32"
10729+ =vector-effect "non-scaling-stroke"
10730+ :: =stroke bg
10731+ =fill "none";
10732+ ;circle
10733+ =cx "64"
10734+ =cy "32"
10735+ =r "11.5"
10736+ :: =fill fg
10737+ =vector-effect "non-scaling-stroke"
10738+ =stroke fg;
10739+ ;circle
10740+ =cx "64"
10741+ =cy "32"
10742+ =r "9"
10743+ =fill bg
10744+ =vector-effect "non-scaling-stroke";
10745+ :: =stroke bg
10746+ :: =stroke-width "2"
10747+ ==
10748+::
10749+ :- 'seb'
10750+ |= [fg=tape bg=tape]
10751+ :~ ;rect
10752+ =width "128"
10753+ =height "128"
10754+ :: =fill fg
10755+ =vector-effect "non-scaling-stroke";
10756+ :: =stroke bg
10757+ :: =stroke-width "0.5"
10758+ ;path
10759+ =d "M128 64C92.6538 64 64 35.3462 64 0"
10760+ =vector-effect "non-scaling-stroke"
10761+ :: =stroke bg
10762+ =fill "none";
10763+ ==
10764+::
10765+ :- 'sec'
10766+ |= [fg=tape bg=tape]
10767+ :~ ;path
10768+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
10769+ :: =fill fg
10770+ =vector-effect "non-scaling-stroke";
10771+ :: =stroke bg
10772+ :: =stroke-width "0.5"
10773+ ;circle
10774+ =cx "32"
10775+ =cy "32"
10776+ =r "11.5"
10777+ :: =fill fg
10778+ =vector-effect "non-scaling-stroke"
10779+ =stroke fg;
10780+ ;circle
10781+ =cx "32"
10782+ =cy "32"
10783+ =r "9"
10784+ =fill bg
10785+ =vector-effect "non-scaling-stroke";
10786+ :: =stroke bg
10787+ :: =stroke-width "2"
10788+ ==
10789+::
10790+ :- 'sed'
10791+ |= [fg=tape bg=tape]
10792+ :~ ;circle
10793+ =cx "64"
10794+ =cy "64"
10795+ =r "64"
10796+ :: =fill fg
10797+ =vector-effect "non-scaling-stroke";
10798+ :: =stroke bg
10799+ :: =stroke-width "0.5"
10800+ ;circle
10801+ =cx "64"
10802+ =cy "64"
10803+ =r "11.5"
10804+ :: =fill fg
10805+ =vector-effect "non-scaling-stroke"
10806+ =stroke fg;
10807+ ;circle
10808+ =cx "64"
10809+ =cy "64"
10810+ =r "9"
10811+ =fill bg
10812+ =vector-effect "non-scaling-stroke";
10813+ :: =stroke bg
10814+ :: =stroke-width "2"
10815+ ;circle
10816+ =cx "96"
10817+ =cy "64"
10818+ =r "11.5"
10819+ :: =fill fg
10820+ =vector-effect "non-scaling-stroke"
10821+ =stroke fg;
10822+ ;circle
10823+ =cx "96"
10824+ =cy "64"
10825+ =r "9"
10826+ =fill bg
10827+ =vector-effect "non-scaling-stroke";
10828+ :: =stroke bg
10829+ :: =stroke-width "2"
10830+ ==
10831+::
10832+ :- 'sef'
10833+ |= [fg=tape bg=tape]
10834+ :~ ;path
10835+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
10836+ :: =fill fg
10837+ =vector-effect "non-scaling-stroke";
10838+ :: =stroke bg
10839+ :: =stroke-width "0.5"
10840+ ;circle
10841+ =cx "64"
10842+ =cy "64"
10843+ =r "11.5"
10844+ :: =fill fg
10845+ =vector-effect "non-scaling-stroke"
10846+ =stroke fg;
10847+ ;circle
10848+ =cx "64"
10849+ =cy "64"
10850+ =r "9"
10851+ =fill bg
10852+ =vector-effect "non-scaling-stroke";
10853+ :: =stroke bg
10854+ :: =stroke-width "2"
10855+ ;circle
10856+ =cx "16"
10857+ =cy "112"
10858+ =r "11.5"
10859+ =fill bg
10860+ =vector-effect "non-scaling-stroke";
10861+ :: =stroke bg
10862+ ;circle
10863+ =cx "16"
10864+ =cy "112"
10865+ =r "9"
10866+ :: =fill fg
10867+ =vector-effect "non-scaling-stroke"
10868+ =stroke fg;
10869+ :: =stroke-width "2"
10870+ ==
10871+::
10872+ :- 'seg'
10873+ |= [fg=tape bg=tape]
10874+ :~ ;rect
10875+ =width "128"
10876+ =height "128"
10877+ :: =fill fg
10878+ =vector-effect "non-scaling-stroke";
10879+ :: =stroke bg
10880+ :: =stroke-width "0.5"
10881+ ;path
10882+ =d "M32 128C32 110.327 46.3269 96 64 96C81.6731 96 96 110.327 96 128"
10883+ =vector-effect "non-scaling-stroke"
10884+ :: =stroke bg
10885+ =fill "none";
10886+ ==
10887+::
10888+ :- 'sel'
10889+ |= [fg=tape bg=tape]
10890+ :~ ;path
10891+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
10892+ :: =fill fg
10893+ =vector-effect "non-scaling-stroke";
10894+ :: =stroke bg
10895+ :: =stroke-width "0.5"
10896+ ;circle
10897+ =cx "64"
10898+ =cy "64"
10899+ =r "8"
10900+ =vector-effect "non-scaling-stroke"
10901+ :: =stroke bg
10902+ =fill "none";
10903+ ==
10904+::
10905+ :- 'sem'
10906+ |= [fg=tape bg=tape]
10907+ :~ ;circle
10908+ =cx "64"
10909+ =cy "64"
10910+ =r "64"
10911+ :: =fill fg
10912+ =vector-effect "non-scaling-stroke";
10913+ :: =stroke bg
10914+ :: =stroke-width "0.5"
10915+ ;path
10916+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
10917+ =vector-effect "non-scaling-stroke"
10918+ :: =stroke bg
10919+ =fill "none";
10920+ ;path
10921+ =d "M-0.00292969 0L127.997 128"
10922+ =vector-effect "non-scaling-stroke"
10923+ :: =stroke bg
10924+ :: =stroke-linecap "square"
10925+ =fill "none";
10926+ ==
10927+::
10928+ :- 'sen'
10929+ |= [fg=tape bg=tape]
10930+ :~ ;rect
10931+ =width "128"
10932+ =height "128"
10933+ :: =fill fg
10934+ =vector-effect "non-scaling-stroke";
10935+ :: =stroke bg
10936+ :: =stroke-width "0.5"
10937+ ;path
10938+ =d "M64 0L64 128"
10939+ =vector-effect "non-scaling-stroke"
10940+ :: =stroke bg
10941+ =fill "none";
10942+ ;path
10943+ =d "M96 128C96 110.327 81.6731 96 64 96C46.3269 96 32 110.327 32 128"
10944+ =vector-effect "non-scaling-stroke"
10945+ :: =stroke bg
10946+ =fill "none";
10947+ ;circle
10948+ =cx "64"
10949+ =cy "64"
10950+ =r "11.5"
10951+ :: =fill fg
10952+ =vector-effect "non-scaling-stroke"
10953+ =stroke fg;
10954+ ;circle
10955+ =cx "64"
10956+ =cy "64"
10957+ =r "9"
10958+ =fill bg
10959+ =vector-effect "non-scaling-stroke";
10960+ :: =stroke bg
10961+ :: =stroke-width "2"
10962+ ==
10963+::
10964+ :- 'sep'
10965+ |= [fg=tape bg=tape]
10966+ :~ ;path
10967+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
10968+ :: =fill fg
10969+ =vector-effect "non-scaling-stroke";
10970+ :: =stroke bg
10971+ :: =stroke-width "0.5"
10972+ ;path
10973+ =d "M64 128L64 0"
10974+ =vector-effect "non-scaling-stroke"
10975+ :: =stroke bg
10976+ =fill "none";
10977+ ;path
10978+ =d "M32 128L32 0"
10979+ =vector-effect "non-scaling-stroke"
10980+ :: =stroke bg
10981+ =fill "none";
10982+ ;path
10983+ =d "M96 128L96 0"
10984+ =vector-effect "non-scaling-stroke"
10985+ :: =stroke bg
10986+ =fill "none";
10987+ ==
10988+::
10989+ :- 'ser'
10990+ |= [fg=tape bg=tape]
10991+ :~ ;path
10992+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
10993+ :: =fill fg
10994+ =vector-effect "non-scaling-stroke";
10995+ :: =stroke bg
10996+ :: =stroke-width "0.5"
10997+ ;path
10998+ =d "M32 0L32 128"
10999+ =vector-effect "non-scaling-stroke"
11000+ :: =stroke bg
11001+ =fill "none";
11002+ ==
11003+::
11004+ :- 'set'
11005+ |= [fg=tape bg=tape]
11006+ :~ ;circle
11007+ =cx "64"
11008+ =cy "64"
11009+ =r "64"
11010+ :: =fill fg
11011+ =vector-effect "non-scaling-stroke";
11012+ :: =stroke bg
11013+ :: =stroke-width "0.5"
11014+ ;path
11015+ =d "M64 64L128 64"
11016+ =vector-effect "non-scaling-stroke"
11017+ :: =stroke bg
11018+ =fill "none";
11019+ ==
11020+::
11021+ :- 'sev'
11022+ |= [fg=tape bg=tape]
11023+ :~ ;path
11024+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
11025+ :: =fill fg
11026+ =vector-effect "non-scaling-stroke";
11027+ :: =stroke bg
11028+ :: =stroke-width "0.5"
11029+ ;circle
11030+ =cx "64"
11031+ =cy "64"
11032+ =r "48"
11033+ =vector-effect "non-scaling-stroke"
11034+ :: =stroke bg
11035+ =fill "none";
11036+ ==
11037+::
11038+ :- 'sib'
11039+ |= [fg=tape bg=tape]
11040+ :~ ;circle
11041+ =cx "64"
11042+ =cy "64"
11043+ =r "64"
11044+ :: =fill fg
11045+ =vector-effect "non-scaling-stroke";
11046+ :: =stroke bg
11047+ :: =stroke-width "0.5"
11048+ ;path
11049+ =d "M128 0L0 128"
11050+ =vector-effect "non-scaling-stroke"
11051+ :: =stroke bg
11052+ :: =stroke-linecap "square"
11053+ =fill "none";
11054+ ;path
11055+ =d "M64 9.40976e-06C64 35.3462 92.6538 64 128 64"
11056+ =vector-effect "non-scaling-stroke"
11057+ :: =stroke bg
11058+ =fill "none";
11059+ ==
11060+::
11061+ :- 'sic'
11062+ |= [fg=tape bg=tape]
11063+ :~ ;path
11064+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
11065+ :: =fill fg
11066+ =vector-effect "non-scaling-stroke";
11067+ :: =stroke bg
11068+ :: =stroke-width "0.5"
11069+ ;path
11070+ =d "M128 0L0 128"
11071+ =vector-effect "non-scaling-stroke"
11072+ :: =stroke bg
11073+ :: =stroke-linecap "square"
11074+ =fill "none";
11075+ ==
11076+::
11077+ :- 'sid'
11078+ |= [fg=tape bg=tape]
11079+ :~ ;path
11080+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
11081+ :: =fill fg
11082+ =vector-effect "non-scaling-stroke";
11083+ :: =stroke bg
11084+ :: =stroke-width "0.5"
11085+ ;path
11086+ =d "M128 64L0 64"
11087+ =vector-effect "non-scaling-stroke"
11088+ :: =stroke bg
11089+ =fill "none";
11090+ ;path
11091+ =d "M128 128C110.327 128 96 113.673 96 96C96 78.3269 110.327 64 128 64"
11092+ =vector-effect "non-scaling-stroke"
11093+ :: =stroke bg
11094+ =fill "none";
11095+ ==
11096+::
11097+ :- 'sig'
11098+ |= [fg=tape bg=tape]
11099+ :~ ;circle
11100+ =cx "64"
11101+ =cy "64"
11102+ =r "64"
11103+ :: =fill fg
11104+ =vector-effect "non-scaling-stroke";
11105+ :: =stroke bg
11106+ :: =stroke-width "0.5"
11107+ ;circle
11108+ =cx "32"
11109+ =cy "64"
11110+ =r "11.5"
11111+ :: =fill fg
11112+ =vector-effect "non-scaling-stroke"
11113+ =stroke fg;
11114+ ;circle
11115+ =cx "32"
11116+ =cy "64"
11117+ =r "9"
11118+ =fill bg
11119+ =vector-effect "non-scaling-stroke";
11120+ :: =stroke bg
11121+ :: =stroke-width "2"
11122+ ;circle
11123+ =cx "96"
11124+ =cy "64"
11125+ =r "11.5"
11126+ :: =fill fg
11127+ =vector-effect "non-scaling-stroke"
11128+ =stroke fg;
11129+ ;circle
11130+ =cx "96"
11131+ =cy "64"
11132+ =r "9"
11133+ =fill bg
11134+ =vector-effect "non-scaling-stroke";
11135+ :: =stroke bg
11136+ :: =stroke-width "2"
11137+ ==
11138+::
11139+ :- 'sil'
11140+ |= [fg=tape bg=tape]
11141+ :~ ;path
11142+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
11143+ :: =fill fg
11144+ =vector-effect "non-scaling-stroke";
11145+ :: =stroke bg
11146+ :: =stroke-width "0.5"
11147+ ;line
11148+ =x1 "16.0036"
11149+ =y1 "15.9965"
11150+ =x2 "48.0036"
11151+ =y2 "47.9965"
11152+ =vector-effect "non-scaling-stroke"
11153+ :: =stroke bg
11154+ =fill "none";
11155+ ;path
11156+ =d "M128 0L0 128"
11157+ =vector-effect "non-scaling-stroke"
11158+ :: =stroke bg
11159+ :: =stroke-linecap "square"
11160+ =fill "none";
11161+ ==
11162+::
11163+ :- 'sim'
11164+ |= [fg=tape bg=tape]
11165+ :~ ;path
11166+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
11167+ :: =fill fg
11168+ =vector-effect "non-scaling-stroke";
11169+ :: =stroke bg
11170+ :: =stroke-width "0.5"
11171+ ;path
11172+ =d "M64 0L64 128"
11173+ =vector-effect "non-scaling-stroke"
11174+ :: =stroke bg
11175+ =fill "none";
11176+ ;path
11177+ =d "M32 0L32 128"
11178+ =vector-effect "non-scaling-stroke"
11179+ :: =stroke bg
11180+ =fill "none";
11181+ ==
11182+::
11183+ :- 'sip'
11184+ |= [fg=tape bg=tape]
11185+ :~ ;rect
11186+ =width "128"
11187+ =height "128"
11188+ :: =fill fg
11189+ =vector-effect "non-scaling-stroke";
11190+ :: =stroke bg
11191+ :: =stroke-width "0.5"
11192+ ;path
11193+ =d "M64 0L64 128"
11194+ =vector-effect "non-scaling-stroke"
11195+ :: =stroke bg
11196+ =fill "none";
11197+ ;path
11198+ =d "M16 64C16 37.4903 37.4903 16 64 16"
11199+ =vector-effect "non-scaling-stroke"
11200+ :: =stroke bg
11201+ =fill "none";
11202+ ;circle
11203+ =cx "16"
11204+ =cy "64"
11205+ =r "11.5"
11206+ :: =fill fg
11207+ =vector-effect "non-scaling-stroke"
11208+ =stroke fg;
11209+ ;circle
11210+ =cx "16"
11211+ =cy "64"
11212+ =r "9"
11213+ =fill bg
11214+ =vector-effect "non-scaling-stroke";
11215+ :: =stroke bg
11216+ :: =stroke-width "2"
11217+ ==
11218+::
11219+ :- 'sit'
11220+ |= [fg=tape bg=tape]
11221+ :~ ;path
11222+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
11223+ :: =fill fg
11224+ =vector-effect "non-scaling-stroke";
11225+ :: =stroke bg
11226+ :: =stroke-width "0.5"
11227+ ;path
11228+ =fill-rule "evenodd"
11229+ =clip-rule "evenodd"
11230+ =stroke "none"
11231+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
11232+ =fill bg;
11233+ ==
11234+::
11235+ :- 'siv'
11236+ |= [fg=tape bg=tape]
11237+ :~ ;rect
11238+ =width "128"
11239+ =height "128"
11240+ :: =fill fg
11241+ =vector-effect "non-scaling-stroke";
11242+ :: =stroke bg
11243+ :: =stroke-width "0.5"
11244+ ;path
11245+ =d "M64 0L64 128"
11246+ =vector-effect "non-scaling-stroke"
11247+ :: =stroke bg
11248+ =fill "none";
11249+ ;path
11250+ =d "M128 96L0 96"
11251+ =vector-effect "non-scaling-stroke"
11252+ :: =stroke bg
11253+ =fill "none";
11254+ ;circle
11255+ =cx "64"
11256+ =cy "64"
11257+ =r "11.5"
11258+ :: =fill fg
11259+ =vector-effect "non-scaling-stroke"
11260+ =stroke fg;
11261+ ;circle
11262+ =cx "64"
11263+ =cy "64"
11264+ =r "9"
11265+ =fill bg
11266+ =vector-effect "non-scaling-stroke";
11267+ :: =stroke bg
11268+ :: =stroke-width "2"
11269+ ==
11270+::
11271+ :- 'soc'
11272+ |= [fg=tape bg=tape]
11273+ :~ ;path
11274+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
11275+ :: =fill fg
11276+ =vector-effect "non-scaling-stroke";
11277+ :: =stroke bg
11278+ :: =stroke-width "0.5"
11279+ ;line
11280+ =x1 "64"
11281+ =y1 "2.18557e-08"
11282+ =x2 "64"
11283+ =y2 "128"
11284+ =vector-effect "non-scaling-stroke"
11285+ :: =stroke bg
11286+ =fill "none";
11287+ ;circle
11288+ =cx "64"
11289+ =cy "64"
11290+ =r "16"
11291+ =vector-effect "non-scaling-stroke"
11292+ :: =stroke bg
11293+ =fill "none";
11294+ ;circle
11295+ =cx "16"
11296+ =cy "16"
11297+ =r "11.5"
11298+ =fill bg
11299+ =vector-effect "non-scaling-stroke";
11300+ :: =stroke bg
11301+ ;circle
11302+ =cx "16"
11303+ =cy "16"
11304+ =r "9"
11305+ :: =fill fg
11306+ =vector-effect "non-scaling-stroke"
11307+ =stroke fg;
11308+ :: =stroke-width "2"
11309+ ==
11310+::
11311+ :- 'sog'
11312+ |= [fg=tape bg=tape]
11313+ :~ ;path
11314+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
11315+ :: =fill fg
11316+ =vector-effect "non-scaling-stroke";
11317+ :: =stroke bg
11318+ :: =stroke-width "0.5"
11319+ ;path
11320+ =d "M128 0L0 128"
11321+ =vector-effect "non-scaling-stroke"
11322+ :: =stroke bg
11323+ :: =stroke-linecap "square"
11324+ =fill "none";
11325+ ;path
11326+ =d "M64 96C81.6731 96 96 81.6731 96 64C96 46.3269 81.6731 32 64 32"
11327+ =vector-effect "non-scaling-stroke"
11328+ :: =stroke bg
11329+ =fill "none";
11330+ ;circle
11331+ =cx "64"
11332+ =cy "64"
11333+ =r "16"
11334+ =vector-effect "non-scaling-stroke"
11335+ :: =stroke bg
11336+ =fill "none";
11337+ ==
11338+::
11339+ :- 'sol'
11340+ |= [fg=tape bg=tape]
11341+ :~ ;circle
11342+ =cx "64"
11343+ =cy "64"
11344+ =r "64"
11345+ :: =fill fg
11346+ =vector-effect "non-scaling-stroke";
11347+ :: =stroke bg
11348+ :: =stroke-width "0.5"
11349+ ;circle
11350+ =cx "64"
11351+ =cy "64"
11352+ =r "32"
11353+ =vector-effect "non-scaling-stroke"
11354+ :: =stroke bg
11355+ =fill "none";
11356+ ;path
11357+ =d "M128 64L-5.96046e-08 64"
11358+ =vector-effect "non-scaling-stroke"
11359+ :: =stroke bg
11360+ =fill "none";
11361+ ==
11362+::
11363+ :- 'som'
11364+ |= [fg=tape bg=tape]
11365+ :~ ;rect
11366+ =width "128"
11367+ =height "128"
11368+ :: =fill fg
11369+ =vector-effect "non-scaling-stroke";
11370+ :: =stroke bg
11371+ :: =stroke-width "0.5"
11372+ ;circle
11373+ =cx "96"
11374+ =cy "96"
11375+ =r "11.5"
11376+ :: =fill fg
11377+ =vector-effect "non-scaling-stroke"
11378+ =stroke fg;
11379+ ;circle
11380+ =cx "96"
11381+ =cy "96"
11382+ =r "9"
11383+ =fill bg
11384+ =vector-effect "non-scaling-stroke";
11385+ :: =stroke bg
11386+ :: =stroke-width "2"
11387+ ;circle
11388+ =cx "32"
11389+ =cy "96"
11390+ =r "11.5"
11391+ :: =fill fg
11392+ =vector-effect "non-scaling-stroke"
11393+ =stroke fg;
11394+ ;circle
11395+ =cx "32"
11396+ =cy "96"
11397+ =r "9"
11398+ =fill bg
11399+ =vector-effect "non-scaling-stroke";
11400+ :: =stroke bg
11401+ :: =stroke-width "2"
11402+ ;circle
11403+ =cx "32"
11404+ =cy "32"
11405+ =r "11.5"
11406+ :: =fill fg
11407+ =vector-effect "non-scaling-stroke"
11408+ =stroke fg;
11409+ ;circle
11410+ =cx "32"
11411+ =cy "32"
11412+ =r "9"
11413+ =fill bg
11414+ =vector-effect "non-scaling-stroke";
11415+ :: =stroke bg
11416+ :: =stroke-width "2"
11417+ ==
11418+::
11419+ :- 'son'
11420+ |= [fg=tape bg=tape]
11421+ :~ ;path
11422+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
11423+ :: =fill fg
11424+ =vector-effect "non-scaling-stroke";
11425+ :: =stroke bg
11426+ :: =stroke-width "0.5"
11427+ ;line
11428+ =x1 "127.553"
11429+ =y1 "128.224"
11430+ =x2 "63.5528"
11431+ =y2 "0.223598"
11432+ =vector-effect "non-scaling-stroke"
11433+ :: =stroke bg
11434+ =fill "none";
11435+ ==
11436+::
11437+ :- 'sop'
11438+ |= [fg=tape bg=tape]
11439+ :~ ;circle
11440+ =cx "64"
11441+ =cy "64"
11442+ =r "64"
11443+ :: =fill fg
11444+ =vector-effect "non-scaling-stroke";
11445+ :: =stroke bg
11446+ :: =stroke-width "0.5"
11447+ ;circle
11448+ =cx "64"
11449+ =cy "64"
11450+ =r "32"
11451+ =vector-effect "non-scaling-stroke"
11452+ :: =stroke bg
11453+ =fill "none";
11454+ ;path
11455+ =d "M-0.00292969 0L127.997 128"
11456+ =vector-effect "non-scaling-stroke"
11457+ :: =stroke bg
11458+ :: =stroke-linecap "square"
11459+ =fill "none";
11460+ ;circle
11461+ =cx "64"
11462+ =cy "32"
11463+ =r "11.5"
11464+ :: =fill fg
11465+ =vector-effect "non-scaling-stroke"
11466+ =stroke fg;
11467+ ;circle
11468+ =cx "64"
11469+ =cy "32"
11470+ =r "9"
11471+ =fill bg
11472+ =vector-effect "non-scaling-stroke";
11473+ :: =stroke bg
11474+ :: =stroke-width "2"
11475+ ==
11476+::
11477+ :- 'sor'
11478+ |= [fg=tape bg=tape]
11479+ :~ ;path
11480+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
11481+ :: =fill fg
11482+ =vector-effect "non-scaling-stroke";
11483+ :: =stroke bg
11484+ :: =stroke-width "0.5"
11485+ ;path
11486+ =d "M-0.00292969 0L127.997 128"
11487+ =vector-effect "non-scaling-stroke"
11488+ :: =stroke bg
11489+ :: =stroke-linecap "square"
11490+ =fill "none";
11491+ ;path
11492+ =d "M128 0C128 35.3511 113.669 67.3551 90.5 90.5193"
11493+ =vector-effect "non-scaling-stroke"
11494+ :: =stroke bg
11495+ =fill "none";
11496+ ;path
11497+ =d "M96 0C96 26.5077 85.2564 50.5061 67.8862 67.8783"
11498+ =vector-effect "non-scaling-stroke"
11499+ :: =stroke bg
11500+ =fill "none";
11501+ ;path
11502+ =d "M64 0C64 17.6721 56.8374 33.6713 45.2568 45.2529"
11503+ =vector-effect "non-scaling-stroke"
11504+ :: =stroke bg
11505+ =fill "none";
11506+ ;path
11507+ =d "M32.3716 0C32.3716 8.83603 28.7903 16.8356 23 22.6264"
11508+ =vector-effect "non-scaling-stroke"
11509+ :: =stroke bg
11510+ =fill "none";
11511+ ==
11512+::
11513+ :- 'sov'
11514+ |= [fg=tape bg=tape]
11515+ :~ ;rect
11516+ =width "128"
11517+ =height "128"
11518+ :: =fill fg
11519+ =vector-effect "non-scaling-stroke";
11520+ :: =stroke bg
11521+ :: =stroke-width "0.5"
11522+ ;path
11523+ =d "M0 128L128 0"
11524+ =vector-effect "non-scaling-stroke"
11525+ :: =stroke bg
11526+ :: =stroke-linecap "square"
11527+ =fill "none";
11528+ ;path
11529+ =d "M128 128C92.6489 128 60.6449 113.669 37.4807 90.5"
11530+ =vector-effect "non-scaling-stroke"
11531+ :: =stroke bg
11532+ =fill "none";
11533+ ;path
11534+ =d "M128 96C101.492 96 77.4939 85.2564 60.1217 67.8862"
11535+ =vector-effect "non-scaling-stroke"
11536+ :: =stroke bg
11537+ =fill "none";
11538+ ;path
11539+ =d "M128 64C110.328 64 94.3287 56.8374 82.7471 45.2568"
11540+ =vector-effect "non-scaling-stroke"
11541+ :: =stroke bg
11542+ =fill "none";
11543+ ;path
11544+ =d "M128 32.3716C119.164 32.3716 111.164 28.7903 105.374 23"
11545+ =vector-effect "non-scaling-stroke"
11546+ :: =stroke bg
11547+ =fill "none";
11548+ ==
11549+::
11550+ :- 'sub'
11551+ |= [fg=tape bg=tape]
11552+ :~ ;path
11553+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
11554+ :: =fill fg
11555+ =vector-effect "non-scaling-stroke";
11556+ :: =stroke bg
11557+ :: =stroke-width "0.5"
11558+ ;path
11559+ =d "M64 0L64 128"
11560+ =vector-effect "non-scaling-stroke"
11561+ :: =stroke bg
11562+ =fill "none";
11563+ ==
11564+::
11565+ :- 'sud'
11566+ |= [fg=tape bg=tape]
11567+ :~ ;path
11568+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
11569+ :: =fill fg
11570+ =vector-effect "non-scaling-stroke";
11571+ :: =stroke bg
11572+ :: =stroke-width "0.5"
11573+ ;line
11574+ =x1 "128"
11575+ =y1 "64"
11576+ =x2 "-8.87604e-09"
11577+ =y2 "64"
11578+ =vector-effect "non-scaling-stroke"
11579+ :: =stroke bg
11580+ =fill "none";
11581+ ;path
11582+ =d "M128 64L0 64"
11583+ =vector-effect "non-scaling-stroke"
11584+ :: =stroke bg
11585+ =fill "none";
11586+ ;path
11587+ =fill-rule "evenodd"
11588+ =clip-rule "evenodd"
11589+ =stroke "none"
11590+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
11591+ =fill bg;
11592+ ==
11593+::
11594+ :- 'sug'
11595+ |= [fg=tape bg=tape]
11596+ :~ ;path
11597+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
11598+ :: =fill fg
11599+ =vector-effect "non-scaling-stroke";
11600+ :: =stroke bg
11601+ :: =stroke-width "0.5"
11602+ ;circle
11603+ =cx "16"
11604+ =cy "64"
11605+ =r "11.5"
11606+ :: =fill fg
11607+ =vector-effect "non-scaling-stroke"
11608+ =stroke fg;
11609+ ;circle
11610+ =cx "16"
11611+ =cy "64"
11612+ =r "9"
11613+ =fill bg
11614+ =vector-effect "non-scaling-stroke";
11615+ :: =stroke bg
11616+ :: =stroke-width "2"
11617+ ;circle
11618+ =cx "80"
11619+ =cy "64"
11620+ =r "11.5"
11621+ :: =fill fg
11622+ =vector-effect "non-scaling-stroke"
11623+ =stroke fg;
11624+ ;circle
11625+ =cx "80"
11626+ =cy "64"
11627+ =r "9"
11628+ =fill bg
11629+ =vector-effect "non-scaling-stroke";
11630+ :: =stroke bg
11631+ :: =stroke-width "2"
11632+ ==
11633+::
11634+ :- 'sul'
11635+ |= [fg=tape bg=tape]
11636+ :~ ;circle
11637+ =cx "64"
11638+ =cy "64"
11639+ =r "64"
11640+ :: =fill fg
11641+ =vector-effect "non-scaling-stroke";
11642+ :: =stroke bg
11643+ :: =stroke-width "0.5"
11644+ ;path
11645+ =d "M64 96C46.3269 96 32 81.6731 32 64C32 46.3269 46.3269 32 64 32"
11646+ =vector-effect "non-scaling-stroke"
11647+ :: =stroke bg
11648+ =fill "none";
11649+ ==
11650+::
11651+ :- 'sum'
11652+ |= [fg=tape bg=tape]
11653+ :~ ;path
11654+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
11655+ :: =fill fg
11656+ =vector-effect "non-scaling-stroke";
11657+ :: =stroke bg
11658+ :: =stroke-width "0.5"
11659+ ;path
11660+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
11661+ =vector-effect "non-scaling-stroke"
11662+ :: =stroke bg
11663+ =fill "none";
11664+ ==
11665+::
11666+ :- 'sun'
11667+ |= [fg=tape bg=tape]
11668+ :~ ;circle
11669+ =cx "64"
11670+ =cy "64"
11671+ =r "64"
11672+ :: =fill fg
11673+ =stroke "none";
11674+ ;circle
11675+ =cx "80"
11676+ =cy "80"
11677+ =r "11.5"
11678+ :: =fill fg
11679+ =vector-effect "non-scaling-stroke"
11680+ =stroke fg;
11681+ ;circle
11682+ =cx "80"
11683+ =cy "80"
11684+ =r "9"
11685+ =fill bg
11686+ =vector-effect "non-scaling-stroke";
11687+ :: =stroke bg
11688+ :: =stroke-width "2"
11689+ ;circle
11690+ =cx "80"
11691+ =cy "48"
11692+ =r "11.5"
11693+ :: =fill fg
11694+ =vector-effect "non-scaling-stroke"
11695+ =stroke fg;
11696+ ;circle
11697+ =cx "80"
11698+ =cy "48"
11699+ =r "9"
11700+ =fill bg
11701+ =vector-effect "non-scaling-stroke";
11702+ :: =stroke bg
11703+ :: =stroke-width "2"
11704+ ;circle
11705+ =cx "48"
11706+ =cy "48"
11707+ =r "11.5"
11708+ :: =fill fg
11709+ =vector-effect "non-scaling-stroke"
11710+ =stroke fg;
11711+ ;circle
11712+ =cx "48"
11713+ =cy "48"
11714+ =r "9"
11715+ =fill bg
11716+ =vector-effect "non-scaling-stroke";
11717+ :: =stroke bg
11718+ :: =stroke-width "2"
11719+ ;circle
11720+ =cx "48"
11721+ =cy "80"
11722+ =r "11.5"
11723+ :: =fill fg
11724+ =vector-effect "non-scaling-stroke"
11725+ =stroke fg;
11726+ ;circle
11727+ =cx "48"
11728+ =cy "80"
11729+ =r "9"
11730+ =fill bg
11731+ =vector-effect "non-scaling-stroke";
11732+ :: =stroke bg
11733+ :: =stroke-width "2"
11734+ ==
11735+::
11736+ :- 'sup'
11737+ |= [fg=tape bg=tape]
11738+ :~ ;path
11739+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
11740+ :: =fill fg
11741+ =vector-effect "non-scaling-stroke";
11742+ :: =stroke bg
11743+ :: =stroke-width "0.5"
11744+ ;path
11745+ =d "M64 112C90.5097 112 112 90.5097 112 64C112 37.4903 90.5097 16 64 16"
11746+ =vector-effect "non-scaling-stroke"
11747+ :: =stroke bg
11748+ =fill "none";
11749+ ;path
11750+ =d "M128 64L0 64"
11751+ =vector-effect "non-scaling-stroke"
11752+ :: =stroke bg
11753+ =fill "none";
11754+ ;circle
11755+ =cx "64"
11756+ =cy "64"
11757+ =r "11.5"
11758+ :: =fill fg
11759+ =vector-effect "non-scaling-stroke"
11760+ =stroke fg;
11761+ ;circle
11762+ =cx "64"
11763+ =cy "64"
11764+ =r "9"
11765+ =fill bg
11766+ =vector-effect "non-scaling-stroke";
11767+ :: =stroke bg
11768+ :: =stroke-width "2"
11769+ ==
11770+::
11771+ :- 'sur'
11772+ |= [fg=tape bg=tape]
11773+ :~ ;path
11774+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
11775+ :: =fill fg
11776+ =vector-effect "non-scaling-stroke";
11777+ :: =stroke bg
11778+ :: =stroke-width "0.5"
11779+ ;path
11780+ =d "M-0.00292969 0L127.997 128"
11781+ =vector-effect "non-scaling-stroke"
11782+ :: =stroke bg
11783+ :: =stroke-linecap "square"
11784+ =fill "none";
11785+ ;path
11786+ =d "M3.73284e-05 64.0001C17.6633 64.0001 33.6554 56.8446 45.2356 45.2742"
11787+ =vector-effect "non-scaling-stroke"
11788+ :: =stroke bg
11789+ =fill "none";
11790+ ;path
11791+ =d "M0.000105172 128C35.3582 128 67.3679 113.664 90.5332 90.4863"
11792+ =vector-effect "non-scaling-stroke"
11793+ :: =stroke bg
11794+ =fill "none";
11795+ ==
11796+::
11797+ :- 'sut'
11798+ |= [fg=tape bg=tape]
11799+ :~ ;rect
11800+ =width "128"
11801+ =height "128"
11802+ :: =fill fg
11803+ =vector-effect "non-scaling-stroke";
11804+ :: =stroke bg
11805+ :: =stroke-width "0.5"
11806+ ;circle
11807+ =cx "32"
11808+ =cy "32"
11809+ =r "11.5"
11810+ :: =fill fg
11811+ =vector-effect "non-scaling-stroke"
11812+ =stroke fg;
11813+ ;circle
11814+ =cx "32"
11815+ =cy "32"
11816+ =r "9"
11817+ =fill bg
11818+ =vector-effect "non-scaling-stroke";
11819+ :: =stroke bg
11820+ :: =stroke-width "2"
11821+ ;circle
11822+ =cx "96"
11823+ =cy "96"
11824+ =r "11.5"
11825+ :: =fill fg
11826+ =vector-effect "non-scaling-stroke"
11827+ =stroke fg;
11828+ ;circle
11829+ =cx "96"
11830+ =cy "96"
11831+ =r "9"
11832+ =fill bg
11833+ =vector-effect "non-scaling-stroke";
11834+ :: =stroke bg
11835+ :: =stroke-width "2"
11836+ ==
11837+::
11838+ :- 'syd'
11839+ |= [fg=tape bg=tape]
11840+ :~ ;path
11841+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
11842+ :: =fill fg
11843+ =vector-effect "non-scaling-stroke";
11844+ :: =stroke bg
11845+ :: =stroke-width "0.5"
11846+ ;path
11847+ =d "M64 16C37.4903 16 16 37.4903 16 64"
11848+ =vector-effect "non-scaling-stroke"
11849+ :: =stroke bg
11850+ =fill "none";
11851+ ;path
11852+ =d "M-0.00292969 0L127.997 128"
11853+ =vector-effect "non-scaling-stroke"
11854+ :: =stroke bg
11855+ :: =stroke-linecap "square"
11856+ =fill "none";
11857+ ==
11858+::
11859+ :- 'syl'
11860+ |= [fg=tape bg=tape]
11861+ :~ ;path
11862+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
11863+ :: =fill fg
11864+ =vector-effect "non-scaling-stroke";
11865+ :: =stroke bg
11866+ :: =stroke-width "0.5"
11867+ ;path
11868+ =d "M-0.00292969 0L127.997 128"
11869+ =vector-effect "non-scaling-stroke"
11870+ :: =stroke bg
11871+ :: =stroke-linecap "square"
11872+ =fill "none";
11873+ ;circle
11874+ =cx "32"
11875+ =cy "96"
11876+ =r "11.5"
11877+ :: =fill fg
11878+ =vector-effect "non-scaling-stroke"
11879+ =stroke fg;
11880+ ;circle
11881+ =cx "32"
11882+ =cy "96"
11883+ =r "9"
11884+ =fill bg
11885+ =vector-effect "non-scaling-stroke";
11886+ :: =stroke bg
11887+ :: =stroke-width "2"
11888+ ;circle
11889+ =cx "96"
11890+ =cy "32"
11891+ =r "11.5"
11892+ :: =fill fg
11893+ =vector-effect "non-scaling-stroke"
11894+ =stroke fg;
11895+ ;circle
11896+ =cx "96"
11897+ =cy "32"
11898+ =r "9"
11899+ =fill bg
11900+ =vector-effect "non-scaling-stroke";
11901+ :: =stroke bg
11902+ :: =stroke-width "2"
11903+ ==
11904+::
11905+ :- 'sym'
11906+ |= [fg=tape bg=tape]
11907+ :~ ;path
11908+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
11909+ :: =fill fg
11910+ =vector-effect "non-scaling-stroke";
11911+ :: =stroke bg
11912+ :: =stroke-width "0.5"
11913+ ;line
11914+ =x1 "96.5"
11915+ =y1 "3.07317e-08"
11916+ =x2 "96.5"
11917+ =y2 "128"
11918+ =vector-effect "non-scaling-stroke"
11919+ :: =stroke bg
11920+ =fill "none";
11921+ ==
11922+::
11923+ :- 'syn'
11924+ |= [fg=tape bg=tape]
11925+ :~ ;path
11926+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
11927+ :: =fill fg
11928+ =vector-effect "non-scaling-stroke";
11929+ :: =stroke bg
11930+ :: =stroke-width "0.5"
11931+ ;path
11932+ =d "M0 0C35.3511 0 67.3551 14.3309 90.5193 37.5"
11933+ =vector-effect "non-scaling-stroke"
11934+ :: =stroke bg
11935+ =fill "none";
11936+ ;path
11937+ =d "M0 32C26.5077 32 50.5061 42.7436 67.8783 60.1138"
11938+ =vector-effect "non-scaling-stroke"
11939+ :: =stroke bg
11940+ =fill "none";
11941+ ;path
11942+ =d "M0 64C17.6721 64 33.6713 71.1626 45.2529 82.7432"
11943+ =vector-effect "non-scaling-stroke"
11944+ :: =stroke bg
11945+ =fill "none";
11946+ ;path
11947+ =d "M0 95.6284C8.83603 95.6284 16.8356 99.2097 22.6264 105"
11948+ =vector-effect "non-scaling-stroke"
11949+ :: =stroke bg
11950+ =fill "none";
11951+ ==
11952+::
11953+ :- 'syp'
11954+ |= [fg=tape bg=tape]
11955+ :~ ;path
11956+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
11957+ :: =fill fg
11958+ =vector-effect "non-scaling-stroke";
11959+ :: =stroke bg
11960+ :: =stroke-width "0.5"
11961+ ;path
11962+ =d "M-0.00280762 0L127.997 128"
11963+ =vector-effect "non-scaling-stroke"
11964+ :: =stroke bg
11965+ :: =stroke-linecap "square"
11966+ =fill "none";
11967+ ;path
11968+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
11969+ =vector-effect "non-scaling-stroke"
11970+ :: =stroke bg
11971+ =fill "none";
11972+ ==
11973+::
11974+ :- 'syr'
11975+ |= [fg=tape bg=tape]
11976+ :~ ;path
11977+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
11978+ :: =fill fg
11979+ =vector-effect "non-scaling-stroke";
11980+ :: =stroke bg
11981+ :: =stroke-width "0.5"
11982+ ;path
11983+ =d "M-0.00292969 0L127.997 128"
11984+ =vector-effect "non-scaling-stroke"
11985+ :: =stroke bg
11986+ :: =stroke-linecap "square"
11987+ =fill "none";
11988+ ;circle
11989+ =cx "96"
11990+ =cy "32"
11991+ =r "11.5"
11992+ :: =fill fg
11993+ =vector-effect "non-scaling-stroke"
11994+ =stroke fg;
11995+ ;circle
11996+ =cx "96"
11997+ =cy "32"
11998+ =r "9"
11999+ =fill bg
12000+ =vector-effect "non-scaling-stroke";
12001+ :: =stroke bg
12002+ :: =stroke-width "2"
12003+ ==
12004+::
12005+ :- 'syt'
12006+ |= [fg=tape bg=tape]
12007+ :~ ;path
12008+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
12009+ :: =fill fg
12010+ =vector-effect "non-scaling-stroke";
12011+ :: =stroke bg
12012+ :: =stroke-width "0.5"
12013+ ;circle
12014+ =cx "64"
12015+ =cy "64"
12016+ =r "32"
12017+ =vector-effect "non-scaling-stroke"
12018+ :: =stroke bg
12019+ =fill "none";
12020+ ;circle
12021+ =cx "64"
12022+ =cy "64"
12023+ =r "48"
12024+ =vector-effect "non-scaling-stroke"
12025+ :: =stroke bg
12026+ =fill "none";
12027+ ;path
12028+ =d "M128 0L0 128"
12029+ =vector-effect "non-scaling-stroke"
12030+ :: =stroke bg
12031+ :: =stroke-linecap "square"
12032+ =fill "none";
12033+ ==
12034+::
12035+ :- 'syx'
12036+ |= [fg=tape bg=tape]
12037+ :~ ;path
12038+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
12039+ :: =fill fg
12040+ =vector-effect "non-scaling-stroke";
12041+ :: =stroke bg
12042+ :: =stroke-width "0.5"
12043+ ;path
12044+ =d "M0 128C4.63574e-06 92.6488 14.3309 60.6449 37.5 37.4807"
12045+ =vector-effect "non-scaling-stroke"
12046+ :: =stroke bg
12047+ =fill "none";
12048+ ;path
12049+ =d "M32 128C32 101.492 42.7436 77.4939 60.1138 60.1216"
12050+ =vector-effect "non-scaling-stroke"
12051+ :: =stroke bg
12052+ =fill "none";
12053+ ;path
12054+ =d "M64 128C64 110.328 71.1626 94.3287 82.7432 82.7471"
12055+ =vector-effect "non-scaling-stroke"
12056+ :: =stroke bg
12057+ =fill "none";
12058+ ;path
12059+ =d "M95.6284 128C95.6284 119.164 99.2097 111.164 105 105.374"
12060+ =vector-effect "non-scaling-stroke"
12061+ :: =stroke bg
12062+ =fill "none";
12063+ ;path
12064+ =d "M-0.00280762 0L127.997 128"
12065+ =vector-effect "non-scaling-stroke"
12066+ :: =stroke bg
12067+ :: =stroke-linecap "square"
12068+ =fill "none";
12069+ ==
12070+::
12071+ :- 'tab'
12072+ |= [fg=tape bg=tape]
12073+ :~ ;path
12074+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12075+ :: =fill fg
12076+ =vector-effect "non-scaling-stroke";
12077+ :: =stroke bg
12078+ :: =stroke-width "0.5"
12079+ ;circle
12080+ =cx "64"
12081+ =cy "64"
12082+ =r "8"
12083+ =vector-effect "non-scaling-stroke"
12084+ :: =stroke bg
12085+ =fill "none";
12086+ ;line
12087+ =x1 "-0.0029152"
12088+ =x2 "127.983"
12089+ =y2 "127.986"
12090+ =vector-effect "non-scaling-stroke"
12091+ :: =stroke bg
12092+ :: =stroke-linecap "square"
12093+ =fill "none";
12094+ ;circle
12095+ =cx "16"
12096+ =cy "112"
12097+ =r "11.5"
12098+ =fill bg
12099+ =vector-effect "non-scaling-stroke";
12100+ :: =stroke bg
12101+ ;circle
12102+ =cx "16"
12103+ =cy "112"
12104+ =r "9"
12105+ :: =fill fg
12106+ =vector-effect "non-scaling-stroke"
12107+ =stroke fg;
12108+ :: =stroke-width "2"
12109+ ==
12110+::
12111+ :- 'tac'
12112+ |= [fg=tape bg=tape]
12113+ :~ ;path
12114+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12115+ :: =fill fg
12116+ =vector-effect "non-scaling-stroke";
12117+ :: =stroke bg
12118+ :: =stroke-width "0.5"
12119+ ;path
12120+ =d "M128 0L0 128"
12121+ =vector-effect "non-scaling-stroke"
12122+ :: =stroke bg
12123+ :: =stroke-linecap "square"
12124+ =fill "none";
12125+ ;circle
12126+ =cx "64"
12127+ =cy "32"
12128+ =r "11.5"
12129+ :: =fill fg
12130+ =vector-effect "non-scaling-stroke"
12131+ =stroke fg;
12132+ ;circle
12133+ =cx "64"
12134+ =cy "32"
12135+ =r "9"
12136+ =fill bg
12137+ =vector-effect "non-scaling-stroke";
12138+ :: =stroke bg
12139+ :: =stroke-width "2"
12140+ ;circle
12141+ =cx "96"
12142+ =cy "64"
12143+ =r "11.5"
12144+ :: =fill fg
12145+ =vector-effect "non-scaling-stroke"
12146+ =stroke fg;
12147+ ;circle
12148+ =cx "96"
12149+ =cy "64"
12150+ =r "9"
12151+ =fill bg
12152+ =vector-effect "non-scaling-stroke";
12153+ :: =stroke bg
12154+ :: =stroke-width "2"
12155+ ==
12156+::
12157+ :- 'tad'
12158+ |= [fg=tape bg=tape]
12159+ :~ ;path
12160+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12161+ :: =fill fg
12162+ =vector-effect "non-scaling-stroke";
12163+ :: =stroke bg
12164+ :: =stroke-width "0.5"
12165+ ;circle
12166+ =cx "32"
12167+ =cy "32"
12168+ =r "11.5"
12169+ :: =fill fg
12170+ =vector-effect "non-scaling-stroke"
12171+ =stroke fg;
12172+ ;circle
12173+ =cx "32"
12174+ =cy "32"
12175+ =r "9"
12176+ =fill bg
12177+ =vector-effect "non-scaling-stroke";
12178+ :: =stroke bg
12179+ :: =stroke-width "2"
12180+ ;circle
12181+ =cx "96"
12182+ =cy "96"
12183+ =r "11.5"
12184+ :: =fill fg
12185+ =vector-effect "non-scaling-stroke"
12186+ =stroke fg;
12187+ ;circle
12188+ =cx "96"
12189+ =cy "96"
12190+ =r "9"
12191+ =fill bg
12192+ =vector-effect "non-scaling-stroke";
12193+ :: =stroke bg
12194+ :: =stroke-width "2"
12195+ ==
12196+::
12197+ :- 'tag'
12198+ |= [fg=tape bg=tape]
12199+ :~ ;path
12200+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
12201+ :: =fill fg
12202+ =vector-effect "non-scaling-stroke";
12203+ :: =stroke bg
12204+ :: =stroke-width "0.5"
12205+ ;line
12206+ =x1 "80.0036"
12207+ =y1 "79.9964"
12208+ =x2 "112.004"
12209+ =y2 "111.996"
12210+ =vector-effect "non-scaling-stroke"
12211+ :: =stroke bg
12212+ =fill "none";
12213+ ==
12214+::
12215+ :- 'tal'
12216+ |= [fg=tape bg=tape]
12217+ :~ ;path
12218+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
12219+ :: =fill fg
12220+ =vector-effect "non-scaling-stroke";
12221+ :: =stroke bg
12222+ :: =stroke-width "0.5"
12223+ ;line
12224+ =x1 "0.5"
12225+ =y1 "-0.5"
12226+ =x2 "181.5"
12227+ =y2 "-0.5"
12228+ =transform "matrix(-0.707107 0.707107 0.707107 0.707107 128.71 0)"
12229+ =vector-effect "non-scaling-stroke"
12230+ :: =stroke bg
12231+ :: =stroke-linecap "square"
12232+ =fill "none";
12233+ ;path
12234+ =d "M96 128C96 74.9807 53.0193 32 0 32"
12235+ =vector-effect "non-scaling-stroke"
12236+ :: =stroke bg
12237+ =fill "none";
12238+ ==
12239+::
12240+ :- 'tam'
12241+ |= [fg=tape bg=tape]
12242+ :~ ;path
12243+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
12244+ :: =fill fg
12245+ =vector-effect "non-scaling-stroke";
12246+ :: =stroke bg
12247+ :: =stroke-width "0.5"
12248+ ;line
12249+ =x1 "128"
12250+ =y1 "96"
12251+ =x2 "-8.87604e-09"
12252+ =y2 "96"
12253+ =vector-effect "non-scaling-stroke"
12254+ :: =stroke bg
12255+ =fill "none";
12256+ ;line
12257+ =x1 "128"
12258+ =y1 "32"
12259+ =x2 "-8.87604e-09"
12260+ =y2 "32"
12261+ =vector-effect "non-scaling-stroke"
12262+ :: =stroke bg
12263+ =fill "none";
12264+ ;circle
12265+ =cx "64"
12266+ =cy "64"
12267+ =r "11.5"
12268+ :: =fill fg
12269+ =vector-effect "non-scaling-stroke"
12270+ =stroke fg;
12271+ ;circle
12272+ =cx "64"
12273+ =cy "64"
12274+ =r "9"
12275+ =fill bg
12276+ =vector-effect "non-scaling-stroke";
12277+ :: =stroke bg
12278+ :: =stroke-width "2"
12279+ ==
12280+::
12281+ :- 'tan'
12282+ |= [fg=tape bg=tape]
12283+ :~ ;path
12284+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12285+ :: =fill fg
12286+ =vector-effect "non-scaling-stroke";
12287+ :: =stroke bg
12288+ :: =stroke-width "0.5"
12289+ ;path
12290+ =d "M96 128C96 74.9807 53.0193 32 0 32"
12291+ =vector-effect "non-scaling-stroke"
12292+ :: =stroke bg
12293+ =fill "none";
12294+ ;path
12295+ =d "M64 128C64 92.6538 35.3462 64 0 64"
12296+ =vector-effect "non-scaling-stroke"
12297+ :: =stroke bg
12298+ =fill "none";
12299+ ;path
12300+ =d "M48 128C48 101.49 26.5097 80 0 80"
12301+ =vector-effect "non-scaling-stroke"
12302+ :: =stroke bg
12303+ =fill "none";
12304+ ;path
12305+ =d "M32 128C32 110.327 17.6731 96 0 96"
12306+ =vector-effect "non-scaling-stroke"
12307+ :: =stroke bg
12308+ =fill "none";
12309+ ;path
12310+ =d "M16 128C16 119.163 8.83656 112 0 112"
12311+ =vector-effect "non-scaling-stroke"
12312+ :: =stroke bg
12313+ =fill "none";
12314+ ;path
12315+ =d "M128 128C128 57.3075 70.6925 0 0 0"
12316+ =vector-effect "non-scaling-stroke"
12317+ :: =stroke bg
12318+ =fill "none";
12319+ ==
12320+::
12321+ :- 'tap'
12322+ |= [fg=tape bg=tape]
12323+ :~ ;circle
12324+ =cx "64"
12325+ =cy "64"
12326+ =r "64"
12327+ :: =fill fg
12328+ =vector-effect "non-scaling-stroke";
12329+ :: =stroke bg
12330+ :: =stroke-width "0.5"
12331+ ;circle
12332+ =cx "64"
12333+ =cy "64"
12334+ =r "48"
12335+ =vector-effect "non-scaling-stroke"
12336+ :: =stroke bg
12337+ =fill "none";
12338+ ;line
12339+ =x1 "128"
12340+ =y1 "64"
12341+ =x2 "-8.87604e-09"
12342+ =y2 "64"
12343+ =vector-effect "non-scaling-stroke"
12344+ :: =stroke bg
12345+ =fill "none";
12346+ ;path
12347+ =d "M64 32C81.6731 32 96 46.3269 96 64C96 81.6731 81.6731 96 64 96"
12348+ =vector-effect "non-scaling-stroke"
12349+ :: =stroke bg
12350+ =fill "none";
12351+ ;circle
12352+ =cx "64"
12353+ =cy "64"
12354+ =r "11.5"
12355+ :: =fill fg
12356+ =vector-effect "non-scaling-stroke"
12357+ =stroke fg;
12358+ ;circle
12359+ =cx "64"
12360+ =cy "64"
12361+ =r "9"
12362+ =fill bg
12363+ =vector-effect "non-scaling-stroke";
12364+ :: =stroke bg
12365+ :: =stroke-width "2"
12366+ ==
12367+::
12368+ :- 'tar'
12369+ |= [fg=tape bg=tape]
12370+ :~ ;circle
12371+ =cx "64"
12372+ =cy "64"
12373+ =r "64"
12374+ :: =fill fg
12375+ =vector-effect "non-scaling-stroke";
12376+ :: =stroke bg
12377+ :: =stroke-width "0.5"
12378+ ;circle
12379+ =cx "64"
12380+ =cy "64"
12381+ =r "48"
12382+ =vector-effect "non-scaling-stroke"
12383+ :: =stroke bg
12384+ =fill "none";
12385+ ;circle
12386+ =cx "16"
12387+ =cy "64"
12388+ =r "11.5"
12389+ :: =fill fg
12390+ =vector-effect "non-scaling-stroke"
12391+ =stroke fg;
12392+ ;circle
12393+ =cx "16"
12394+ =cy "64"
12395+ =r "9"
12396+ =fill bg
12397+ =vector-effect "non-scaling-stroke";
12398+ :: =stroke bg
12399+ :: =stroke-width "2"
12400+ ==
12401+::
12402+ :- 'tas'
12403+ |= [fg=tape bg=tape]
12404+ :~ ;rect
12405+ =width "128"
12406+ =height "128"
12407+ :: =fill fg
12408+ =vector-effect "non-scaling-stroke";
12409+ :: =stroke bg
12410+ :: =stroke-width "0.5"
12411+ ;path
12412+ =d "M64 0L64 128"
12413+ =vector-effect "non-scaling-stroke"
12414+ :: =stroke bg
12415+ =fill "none";
12416+ ;path
12417+ =d "M64 32C81.6731 32 96 46.3269 96 64C96 81.6731 81.6731 96 64 96"
12418+ =vector-effect "non-scaling-stroke"
12419+ :: =stroke bg
12420+ =fill "none";
12421+ ==
12422+::
12423+ :- 'teb'
12424+ |= [fg=tape bg=tape]
12425+ :~ ;rect
12426+ =width "128"
12427+ =height "128"
12428+ :: =fill fg
12429+ =vector-effect "non-scaling-stroke";
12430+ :: =stroke bg
12431+ :: =stroke-width "0.5"
12432+ ;path
12433+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
12434+ =vector-effect "non-scaling-stroke"
12435+ :: =stroke bg
12436+ =fill "none";
12437+ ==
12438+::
12439+ :- 'tec'
12440+ |= [fg=tape bg=tape]
12441+ :~ ;path
12442+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
12443+ :: =fill fg
12444+ =vector-effect "non-scaling-stroke";
12445+ :: =stroke bg
12446+ :: =stroke-width "0.5"
12447+ ;line
12448+ =x1 "80.0035"
12449+ =y1 "79.9965"
12450+ =x2 "112.003"
12451+ =y2 "111.997"
12452+ =vector-effect "non-scaling-stroke"
12453+ :: =stroke bg
12454+ =fill "none";
12455+ ;path
12456+ =fill-rule "evenodd"
12457+ =clip-rule "evenodd"
12458+ =stroke "none"
12459+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
12460+ =fill bg;
12461+ ==
12462+::
12463+ :- 'ted'
12464+ |= [fg=tape bg=tape]
12465+ :~ ;circle
12466+ =cx "64"
12467+ =cy "64"
12468+ =r "64"
12469+ :: =fill fg
12470+ =vector-effect "non-scaling-stroke";
12471+ :: =stroke bg
12472+ :: =stroke-width "0.5"
12473+ ;circle
12474+ =cx "32"
12475+ =cy "96"
12476+ =r "11.5"
12477+ :: =fill fg
12478+ =vector-effect "non-scaling-stroke"
12479+ =stroke fg;
12480+ ;circle
12481+ =cx "32"
12482+ =cy "96"
12483+ =r "9"
12484+ =fill bg
12485+ =vector-effect "non-scaling-stroke";
12486+ :: =stroke bg
12487+ :: =stroke-width "2"
12488+ ==
12489+::
12490+ :- 'teg'
12491+ |= [fg=tape bg=tape]
12492+ :~ ;rect
12493+ =width "128"
12494+ =height "128"
12495+ :: =fill fg
12496+ =vector-effect "non-scaling-stroke";
12497+ :: =stroke bg
12498+ :: =stroke-width "0.5"
12499+ ;path
12500+ =d "M128 80C119.163 80 112 72.8366 112 64C112 55.1634 119.163 48 128 48"
12501+ =vector-effect "non-scaling-stroke"
12502+ :: =stroke bg
12503+ =fill "none";
12504+ ==
12505+::
12506+ :- 'tel'
12507+ |= [fg=tape bg=tape]
12508+ :~ ;path
12509+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
12510+ :: =fill fg
12511+ =vector-effect "non-scaling-stroke";
12512+ :: =stroke bg
12513+ :: =stroke-width "0.5"
12514+ ;circle
12515+ =cx "15"
12516+ =cy "112"
12517+ =r "11.5"
12518+ :: =fill fg
12519+ =vector-effect "non-scaling-stroke"
12520+ =stroke fg;
12521+ ;circle
12522+ =cx "15"
12523+ =cy "112"
12524+ =r "9"
12525+ =fill bg
12526+ =vector-effect "non-scaling-stroke";
12527+ :: =stroke bg
12528+ :: =stroke-width "2"
12529+ ;path
12530+ =d "M0 0L127.986 127.986"
12531+ =vector-effect "non-scaling-stroke"
12532+ :: =stroke bg
12533+ :: =stroke-linecap "square"
12534+ =fill "none";
12535+ ;path
12536+ =d "M32 0L128 96"
12537+ =vector-effect "non-scaling-stroke"
12538+ :: =stroke bg
12539+ :: =stroke-linecap "square"
12540+ =fill "none";
12541+ ;path
12542+ =d "M64 0L128 64"
12543+ =vector-effect "non-scaling-stroke"
12544+ :: =stroke bg
12545+ :: =stroke-linecap "square"
12546+ =fill "none";
12547+ ;path
12548+ =d "M96 0L128 32"
12549+ =vector-effect "non-scaling-stroke"
12550+ :: =stroke bg
12551+ :: =stroke-linecap "square"
12552+ =fill "none";
12553+ ==
12554+::
12555+ :- 'tem'
12556+ |= [fg=tape bg=tape]
12557+ :~ ;circle
12558+ =cx "64"
12559+ =cy "64"
12560+ =r "64"
12561+ :: =fill fg
12562+ =vector-effect "non-scaling-stroke";
12563+ :: =stroke bg
12564+ :: =stroke-width "0.5"
12565+ ;path
12566+ =d "M128 64C92.6538 64 64 92.6538 64 128"
12567+ =vector-effect "non-scaling-stroke"
12568+ :: =stroke bg
12569+ =fill "none";
12570+ ;line
12571+ =x1 "-0.00285417"
12572+ =x2 "127.983"
12573+ =y2 "127.986"
12574+ =vector-effect "non-scaling-stroke"
12575+ :: =stroke bg
12576+ :: =stroke-linecap "square"
12577+ =fill "none";
12578+ ==
12579+::
12580+ :- 'ten'
12581+ |= [fg=tape bg=tape]
12582+ :~ ;rect
12583+ =width "128"
12584+ =height "128"
12585+ :: =fill fg
12586+ =vector-effect "non-scaling-stroke";
12587+ :: =stroke bg
12588+ :: =stroke-width "0.5"
12589+ ;circle
12590+ =cx "48"
12591+ =cy "48"
12592+ =r "11.5"
12593+ :: =fill fg
12594+ =vector-effect "non-scaling-stroke"
12595+ =stroke fg;
12596+ ;circle
12597+ =cx "48"
12598+ =cy "48"
12599+ =r "9"
12600+ =fill bg
12601+ =vector-effect "non-scaling-stroke";
12602+ :: =stroke bg
12603+ :: =stroke-width "2"
12604+ ;circle
12605+ =cx "80"
12606+ =cy "48"
12607+ =r "11.5"
12608+ :: =fill fg
12609+ =vector-effect "non-scaling-stroke"
12610+ =stroke fg;
12611+ ;circle
12612+ =cx "80"
12613+ =cy "48"
12614+ =r "9"
12615+ =fill bg
12616+ =vector-effect "non-scaling-stroke";
12617+ :: =stroke bg
12618+ :: =stroke-width "2"
12619+ ;circle
12620+ =cx "80"
12621+ =cy "80"
12622+ =r "11.5"
12623+ :: =fill fg
12624+ =vector-effect "non-scaling-stroke"
12625+ =stroke fg;
12626+ ;circle
12627+ =cx "80"
12628+ =cy "80"
12629+ =r "9"
12630+ =fill bg
12631+ =vector-effect "non-scaling-stroke";
12632+ :: =stroke bg
12633+ :: =stroke-width "2"
12634+ ;circle
12635+ =cx "48"
12636+ =cy "80"
12637+ =r "11.5"
12638+ :: =fill fg
12639+ =vector-effect "non-scaling-stroke"
12640+ =stroke fg;
12641+ ;circle
12642+ =cx "48"
12643+ =cy "80"
12644+ =r "9"
12645+ =fill bg
12646+ =vector-effect "non-scaling-stroke";
12647+ :: =stroke bg
12648+ :: =stroke-width "2"
12649+ ==
12650+::
12651+ :- 'tep'
12652+ |= [fg=tape bg=tape]
12653+ :~ ;path
12654+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
12655+ :: =fill fg
12656+ =vector-effect "non-scaling-stroke";
12657+ :: =stroke bg
12658+ :: =stroke-width "0.5"
12659+ ;path
12660+ =d "M1.14479e-06 96C53.0193 96 96 53.0193 96 0"
12661+ =vector-effect "non-scaling-stroke"
12662+ :: =stroke bg
12663+ =fill "none";
12664+ ==
12665+::
12666+ :- 'ter'
12667+ |= [fg=tape bg=tape]
12668+ :~ ;path
12669+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
12670+ :: =fill fg
12671+ =vector-effect "non-scaling-stroke";
12672+ :: =stroke bg
12673+ :: =stroke-width "0.5"
12674+ ;line
12675+ =x1 "96.5"
12676+ =y1 "3.07317e-08"
12677+ =x2 "96.5"
12678+ =y2 "128"
12679+ =vector-effect "non-scaling-stroke"
12680+ :: =stroke bg
12681+ =fill "none";
12682+ ;path
12683+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
12684+ =vector-effect "non-scaling-stroke"
12685+ :: =stroke bg
12686+ =fill "none";
12687+ ==
12688+::
12689+ :- 'tes'
12690+ |= [fg=tape bg=tape]
12691+ :~ ;path
12692+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
12693+ :: =fill fg
12694+ =vector-effect "non-scaling-stroke";
12695+ :: =stroke bg
12696+ :: =stroke-width "0.5"
12697+ ;path
12698+ =d "M64 0L64 128"
12699+ =vector-effect "non-scaling-stroke"
12700+ :: =stroke bg
12701+ =fill "none";
12702+ ;path
12703+ =d "M128 64L0 64"
12704+ =vector-effect "non-scaling-stroke"
12705+ :: =stroke bg
12706+ =fill "none";
12707+ ==
12708+::
12709+ :- 'tev'
12710+ |= [fg=tape bg=tape]
12711+ :~ ;path
12712+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
12713+ :: =fill fg
12714+ =vector-effect "non-scaling-stroke";
12715+ :: =stroke bg
12716+ :: =stroke-width "0.5"
12717+ ;circle
12718+ =cx "64"
12719+ =cy "64"
12720+ =r "32"
12721+ =vector-effect "non-scaling-stroke"
12722+ :: =stroke bg
12723+ =fill "none";
12724+ ==
12725+::
12726+ :- 'tex'
12727+ |= [fg=tape bg=tape]
12728+ :~ ;path
12729+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
12730+ :: =fill fg
12731+ =vector-effect "non-scaling-stroke";
12732+ :: =stroke bg
12733+ :: =stroke-width "0.5"
12734+ ;line
12735+ =x1 "15.9965"
12736+ =y1 "111.997"
12737+ =x2 "47.9965"
12738+ =y2 "79.9965"
12739+ =vector-effect "non-scaling-stroke"
12740+ :: =stroke bg
12741+ =fill "none";
12742+ ;path
12743+ =fill-rule "evenodd"
12744+ =clip-rule "evenodd"
12745+ =stroke "none"
12746+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
12747+ =fill bg;
12748+ ==
12749+::
12750+ :- 'tic'
12751+ |= [fg=tape bg=tape]
12752+ :~ ;path
12753+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12754+ :: =fill fg
12755+ =vector-effect "non-scaling-stroke";
12756+ :: =stroke bg
12757+ :: =stroke-width "0.5"
12758+ ;path
12759+ =d "M128 32C110.327 32 96 17.6731 96 -1.39876e-06"
12760+ =vector-effect "non-scaling-stroke"
12761+ :: =stroke bg
12762+ =fill "none";
12763+ ;circle
12764+ =cx "64"
12765+ =cy "64"
12766+ =r "32"
12767+ =vector-effect "non-scaling-stroke"
12768+ :: =stroke bg
12769+ =fill "none";
12770+ ;circle
12771+ =cx "64"
12772+ =cy "64"
12773+ =r "11.5"
12774+ :: =fill fg
12775+ =vector-effect "non-scaling-stroke"
12776+ =stroke fg;
12777+ ;circle
12778+ =cx "64"
12779+ =cy "64"
12780+ =r "9"
12781+ =fill bg
12782+ =vector-effect "non-scaling-stroke";
12783+ :: =stroke bg
12784+ :: =stroke-width "2"
12785+ ==
12786+::
12787+ :- 'tid'
12788+ |= [fg=tape bg=tape]
12789+ :~ ;path
12790+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12791+ :: =fill fg
12792+ =vector-effect "non-scaling-stroke";
12793+ :: =stroke bg
12794+ :: =stroke-width "0.5"
12795+ ;line
12796+ =x1 "64"
12797+ =y1 "2.18557e-08"
12798+ =x2 "64"
12799+ =y2 "128"
12800+ =vector-effect "non-scaling-stroke"
12801+ :: =stroke bg
12802+ =fill "none";
12803+ ;line
12804+ =x1 "96"
12805+ =y1 "2.18557e-08"
12806+ =x2 "96"
12807+ =y2 "128"
12808+ =vector-effect "non-scaling-stroke"
12809+ :: =stroke bg
12810+ =fill "none";
12811+ ;path
12812+ =fill-rule "evenodd"
12813+ =clip-rule "evenodd"
12814+ =stroke "none"
12815+ =d "M112 32C112 40.8366 104.837 48 96 48C87.1634 48 80 40.8366 80 32C80 23.1634 87.1634 16 96 16C104.837 16 112 23.1634 112 32ZM96 40C100.418 40 104 36.4183 104 32C104 27.5817 100.418 24 96 24C91.5817 24 88 27.5817 88 32C88 36.4183 91.5817 40 96 40Z"
12816+ =fill bg;
12817+ ==
12818+::
12819+ :- 'til'
12820+ |= [fg=tape bg=tape]
12821+ :~ ;path
12822+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
12823+ :: =fill fg
12824+ =vector-effect "non-scaling-stroke";
12825+ :: =stroke bg
12826+ :: =stroke-width "0.5"
12827+ ;line
12828+ =x1 "80.0036"
12829+ =y1 "79.9965"
12830+ =x2 "112.004"
12831+ =y2 "111.997"
12832+ =vector-effect "non-scaling-stroke"
12833+ :: =stroke bg
12834+ =fill "none";
12835+ ;circle
12836+ =cx "64"
12837+ =cy "64"
12838+ =r "11.5"
12839+ :: =fill fg
12840+ =vector-effect "non-scaling-stroke"
12841+ =stroke fg;
12842+ ;circle
12843+ =cx "64"
12844+ =cy "64"
12845+ =r "9"
12846+ =fill bg
12847+ =vector-effect "non-scaling-stroke";
12848+ :: =stroke bg
12849+ :: =stroke-width "2"
12850+ ==
12851+::
12852+ :- 'tim'
12853+ |= [fg=tape bg=tape]
12854+ :~ ;path
12855+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
12856+ :: =fill fg
12857+ =vector-effect "non-scaling-stroke";
12858+ :: =stroke bg
12859+ :: =stroke-width "0.5"
12860+ ;path
12861+ =d "M-0.00291443 0L127.997 128"
12862+ =vector-effect "non-scaling-stroke"
12863+ :: =stroke bg
12864+ :: =stroke-linecap "square"
12865+ =fill "none";
12866+ ==
12867+::
12868+ :- 'tin'
12869+ |= [fg=tape bg=tape]
12870+ :~ ;rect
12871+ =width "128"
12872+ =height "128"
12873+ :: =fill fg
12874+ =vector-effect "non-scaling-stroke";
12875+ :: =stroke bg
12876+ :: =stroke-width "0.5"
12877+ ;line
12878+ =x1 "32"
12879+ =y1 "2.18557e-08"
12880+ =x2 "32"
12881+ =y2 "128"
12882+ =vector-effect "non-scaling-stroke"
12883+ :: =stroke bg
12884+ =fill "none";
12885+ ==
12886+::
12887+ :- 'tip'
12888+ |= [fg=tape bg=tape]
12889+ :~ ;path
12890+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
12891+ :: =fill fg
12892+ =vector-effect "non-scaling-stroke";
12893+ :: =stroke bg
12894+ :: =stroke-width "0.5"
12895+ ;path
12896+ =d "M64 0L64 128"
12897+ =vector-effect "non-scaling-stroke"
12898+ :: =stroke bg
12899+ =fill "none";
12900+ ;path
12901+ =fill-rule "evenodd"
12902+ =clip-rule "evenodd"
12903+ =stroke "none"
12904+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
12905+ =fill bg;
12906+ ==
12907+::
12908+ :- 'tir'
12909+ |= [fg=tape bg=tape]
12910+ :~ ;path
12911+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
12912+ :: =fill fg
12913+ =vector-effect "non-scaling-stroke";
12914+ :: =stroke bg
12915+ :: =stroke-width "0.5"
12916+ ;line
12917+ =x1 "-0.0029152"
12918+ =x2 "127.983"
12919+ =y2 "127.986"
12920+ =vector-effect "non-scaling-stroke"
12921+ :: =stroke bg
12922+ :: =stroke-linecap "square"
12923+ =fill "none";
12924+ ;circle
12925+ =cx "64"
12926+ =cy "64"
12927+ =r "16"
12928+ =vector-effect "non-scaling-stroke"
12929+ :: =stroke bg
12930+ =fill "none";
12931+ ;circle
12932+ =cx "64"
12933+ =cy "64"
12934+ =r "32"
12935+ =vector-effect "non-scaling-stroke"
12936+ :: =stroke bg
12937+ =fill "none";
12938+ ==
12939+::
12940+ :- 'tob'
12941+ |= [fg=tape bg=tape]
12942+ :~ ;path
12943+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
12944+ :: =fill fg
12945+ =vector-effect "non-scaling-stroke";
12946+ :: =stroke bg
12947+ :: =stroke-width "0.5"
12948+ ;path
12949+ =d "M128 96L0 96"
12950+ =vector-effect "non-scaling-stroke"
12951+ :: =stroke bg
12952+ =fill "none";
12953+ ==
12954+::
12955+ :- 'toc'
12956+ |= [fg=tape bg=tape]
12957+ :~ ;path
12958+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
12959+ :: =fill fg
12960+ =vector-effect "non-scaling-stroke";
12961+ :: =stroke bg
12962+ :: =stroke-width "0.5"
12963+ ;line
12964+ =x1 "128"
12965+ =y1 "96"
12966+ =x2 "-8.87604e-09"
12967+ =y2 "96"
12968+ =vector-effect "non-scaling-stroke"
12969+ :: =stroke bg
12970+ =fill "none";
12971+ ;circle
12972+ =cx "64"
12973+ =cy "64"
12974+ =r "16"
12975+ =vector-effect "non-scaling-stroke"
12976+ :: =stroke bg
12977+ =fill "none";
12978+ ==
12979+::
12980+ :- 'tod'
12981+ |= [fg=tape bg=tape]
12982+ :~ ;path
12983+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
12984+ :: =fill fg
12985+ =vector-effect "non-scaling-stroke";
12986+ :: =stroke bg
12987+ :: =stroke-width "0.5"
12988+ ;circle
12989+ =cx "64"
12990+ =cy "96"
12991+ =r "11.5"
12992+ :: =fill fg
12993+ =vector-effect "non-scaling-stroke"
12994+ =stroke fg;
12995+ ;circle
12996+ =cx "64"
12997+ =cy "96"
12998+ =r "9"
12999+ =fill bg
13000+ =vector-effect "non-scaling-stroke";
13001+ :: =stroke bg
13002+ :: =stroke-width "2"
13003+ ;circle
13004+ =cx "64"
13005+ =cy "32"
13006+ =r "11.5"
13007+ :: =fill fg
13008+ =vector-effect "non-scaling-stroke"
13009+ =stroke fg;
13010+ ;circle
13011+ =cx "64"
13012+ =cy "32"
13013+ =r "9"
13014+ =fill bg
13015+ =vector-effect "non-scaling-stroke";
13016+ :: =stroke bg
13017+ :: =stroke-width "2"
13018+ ==
13019+::
13020+ :- 'tog'
13021+ |= [fg=tape bg=tape]
13022+ :~ ;path
13023+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
13024+ :: =fill fg
13025+ =vector-effect "non-scaling-stroke";
13026+ :: =stroke bg
13027+ :: =stroke-width "0.5"
13028+ ;path
13029+ =d "M64 96C46.3269 96 32 81.6731 32 64"
13030+ =vector-effect "non-scaling-stroke"
13031+ :: =stroke bg
13032+ =fill "none";
13033+ ;circle
13034+ =cx "64"
13035+ =cy "64"
13036+ =r "16"
13037+ =vector-effect "non-scaling-stroke"
13038+ :: =stroke bg
13039+ =fill "none";
13040+ ;path
13041+ =d "M128 0L0 128"
13042+ =vector-effect "non-scaling-stroke"
13043+ :: =stroke bg
13044+ :: =stroke-linecap "square"
13045+ =fill "none";
13046+ ==
13047+::
13048+ :- 'tol'
13049+ |= [fg=tape bg=tape]
13050+ :~ ;circle
13051+ =cx "64"
13052+ =cy "64"
13053+ =r "64"
13054+ :: =fill fg
13055+ =vector-effect "non-scaling-stroke";
13056+ :: =stroke bg
13057+ :: =stroke-width "0.5"
13058+ ;line
13059+ =x1 "128"
13060+ =y1 "64"
13061+ =x2 "-4.37114e-08"
13062+ =y2 "64"
13063+ =vector-effect "non-scaling-stroke"
13064+ :: =stroke bg
13065+ =fill "none";
13066+ ;path
13067+ =d "M16 128C16 101.49 37.4903 80 64 80C90.5097 80 112 101.49 112 128"
13068+ =vector-effect "non-scaling-stroke"
13069+ :: =stroke bg
13070+ =fill "none";
13071+ ==
13072+::
13073+ :- 'tom'
13074+ |= [fg=tape bg=tape]
13075+ :~ ;rect
13076+ =width "128"
13077+ =height "128"
13078+ :: =fill fg
13079+ =vector-effect "non-scaling-stroke";
13080+ :: =stroke bg
13081+ :: =stroke-width "0.5"
13082+ ;circle
13083+ =cx "32"
13084+ =cy "32"
13085+ =r "11.5"
13086+ :: =fill fg
13087+ =vector-effect "non-scaling-stroke"
13088+ =stroke fg;
13089+ ;circle
13090+ =cx "32"
13091+ =cy "32"
13092+ =r "9"
13093+ =fill bg
13094+ =vector-effect "non-scaling-stroke";
13095+ :: =stroke bg
13096+ :: =stroke-width "2"
13097+ ;circle
13098+ =cx "96"
13099+ =cy "32"
13100+ =r "11.5"
13101+ :: =fill fg
13102+ =vector-effect "non-scaling-stroke"
13103+ =stroke fg;
13104+ ;circle
13105+ =cx "96"
13106+ =cy "32"
13107+ =r "9"
13108+ =fill bg
13109+ =vector-effect "non-scaling-stroke";
13110+ :: =stroke bg
13111+ :: =stroke-width "2"
13112+ ;circle
13113+ =cx "32"
13114+ =cy "96"
13115+ =r "11.5"
13116+ :: =fill fg
13117+ =vector-effect "non-scaling-stroke"
13118+ =stroke fg;
13119+ ;circle
13120+ =cx "32"
13121+ =cy "96"
13122+ =r "9"
13123+ =fill bg
13124+ =vector-effect "non-scaling-stroke";
13125+ :: =stroke bg
13126+ :: =stroke-width "2"
13127+ ==
13128+::
13129+ :- 'ton'
13130+ |= [fg=tape bg=tape]
13131+ :~ ;path
13132+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
13133+ :: =fill fg
13134+ =vector-effect "non-scaling-stroke";
13135+ :: =stroke bg
13136+ :: =stroke-width "0.5"
13137+ ;path
13138+ =d "M128 32C74.9807 32 32 74.9807 32 128"
13139+ =vector-effect "non-scaling-stroke"
13140+ :: =stroke bg
13141+ =fill "none";
13142+ ;path
13143+ =d "M128 64C92.6538 64 64 92.6538 64 128"
13144+ =vector-effect "non-scaling-stroke"
13145+ :: =stroke bg
13146+ =fill "none";
13147+ ;path
13148+ =d "M128 96C110.327 96 96 110.327 96 128"
13149+ =vector-effect "non-scaling-stroke"
13150+ :: =stroke bg
13151+ =fill "none";
13152+ ==
13153+::
13154+ :- 'top'
13155+ |= [fg=tape bg=tape]
13156+ :~ ;circle
13157+ =cx "64"
13158+ =cy "64"
13159+ =r "64"
13160+ :: =fill fg
13161+ =vector-effect "non-scaling-stroke";
13162+ :: =stroke bg
13163+ :: =stroke-width "0.5"
13164+ ;line
13165+ =x1 "-0.0029152"
13166+ =x2 "127.983"
13167+ =y2 "127.986"
13168+ =vector-effect "non-scaling-stroke"
13169+ :: =stroke bg
13170+ :: =stroke-linecap "square"
13171+ =fill "none";
13172+ ;circle
13173+ =cx "64"
13174+ =cy "64"
13175+ =r "32"
13176+ =vector-effect "non-scaling-stroke"
13177+ :: =stroke bg
13178+ =fill "none";
13179+ ;circle
13180+ =cx "64"
13181+ =cy "64"
13182+ =r "16"
13183+ =vector-effect "non-scaling-stroke"
13184+ :: =stroke bg
13185+ =fill "none";
13186+ ==
13187+::
13188+ :- 'tor'
13189+ |= [fg=tape bg=tape]
13190+ :~ ;path
13191+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
13192+ :: =fill fg
13193+ =vector-effect "non-scaling-stroke";
13194+ :: =stroke bg
13195+ :: =stroke-width "0.5"
13196+ ;circle
13197+ =cx "64"
13198+ =cy "64"
13199+ =r "32"
13200+ =vector-effect "non-scaling-stroke"
13201+ :: =stroke bg
13202+ =fill "none";
13203+ ;circle
13204+ =cx "64"
13205+ =cy "64"
13206+ =r "11.5"
13207+ :: =fill fg
13208+ =vector-effect "non-scaling-stroke"
13209+ =stroke fg;
13210+ ;circle
13211+ =cx "64"
13212+ =cy "64"
13213+ =r "9"
13214+ =fill bg
13215+ =vector-effect "non-scaling-stroke";
13216+ :: =stroke bg
13217+ :: =stroke-width "2"
13218+ ==
13219+::
13220+ :- 'tuc'
13221+ |= [fg=tape bg=tape]
13222+ :~ ;path
13223+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13224+ :: =fill fg
13225+ =vector-effect "non-scaling-stroke";
13226+ :: =stroke bg
13227+ :: =stroke-width "0.5"
13228+ ;path
13229+ =d "M128 64L0 64"
13230+ =vector-effect "non-scaling-stroke"
13231+ :: =stroke bg
13232+ =fill "none";
13233+ ;path
13234+ =d "M128 96L0 96"
13235+ =vector-effect "non-scaling-stroke"
13236+ :: =stroke bg
13237+ =fill "none";
13238+ ;circle
13239+ =cx "96"
13240+ =cy "96"
13241+ =r "11.5"
13242+ :: =fill fg
13243+ =vector-effect "non-scaling-stroke"
13244+ =stroke fg;
13245+ ;circle
13246+ =cx "96"
13247+ =cy "96"
13248+ =r "9"
13249+ =fill bg
13250+ =vector-effect "non-scaling-stroke";
13251+ :: =stroke bg
13252+ :: =stroke-width "2"
13253+ ;circle
13254+ =cx "32"
13255+ =cy "64"
13256+ =r "11.5"
13257+ :: =fill fg
13258+ =vector-effect "non-scaling-stroke"
13259+ =stroke fg;
13260+ ;circle
13261+ =cx "32"
13262+ =cy "64"
13263+ =r "9"
13264+ =fill bg
13265+ =vector-effect "non-scaling-stroke";
13266+ :: =stroke bg
13267+ :: =stroke-width "2"
13268+ ==
13269+::
13270+ :- 'tud'
13271+ |= [fg=tape bg=tape]
13272+ :~ ;path
13273+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13274+ :: =fill fg
13275+ =vector-effect "non-scaling-stroke";
13276+ :: =stroke bg
13277+ :: =stroke-width "0.5"
13278+ ;path
13279+ =d "M128 64L0 64"
13280+ =vector-effect "non-scaling-stroke"
13281+ :: =stroke bg
13282+ =fill "none";
13283+ ;circle
13284+ =cx "32"
13285+ =cy "64"
13286+ =r "11.5"
13287+ :: =fill fg
13288+ =vector-effect "non-scaling-stroke"
13289+ =stroke fg;
13290+ ;circle
13291+ =cx "32"
13292+ =cy "64"
13293+ =r "9"
13294+ =fill bg
13295+ =vector-effect "non-scaling-stroke";
13296+ :: =stroke bg
13297+ :: =stroke-width "2"
13298+ ==
13299+::
13300+ :- 'tug'
13301+ |= [fg=tape bg=tape]
13302+ :~ ;path
13303+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
13304+ :: =fill fg
13305+ =vector-effect "non-scaling-stroke";
13306+ :: =stroke bg
13307+ :: =stroke-width "0.5"
13308+ ;path
13309+ =d "M128 64L0 64"
13310+ =vector-effect "non-scaling-stroke"
13311+ :: =stroke bg
13312+ =fill "none";
13313+ ;path
13314+ =d "M128 32L0 32"
13315+ =vector-effect "non-scaling-stroke"
13316+ :: =stroke bg
13317+ =fill "none";
13318+ ==
13319+::
13320+ :- 'tul'
13321+ |= [fg=tape bg=tape]
13322+ :~ ;circle
13323+ =cx "64"
13324+ =cy "64"
13325+ =r "64"
13326+ :: =fill fg
13327+ =vector-effect "non-scaling-stroke";
13328+ :: =stroke bg
13329+ :: =stroke-width "0.5"
13330+ ;path
13331+ =fill-rule "evenodd"
13332+ =clip-rule "evenodd"
13333+ =stroke "none"
13334+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
13335+ =fill bg;
13336+ ==
13337+::
13338+ :- 'tun'
13339+ |= [fg=tape bg=tape]
13340+ :~ ;path
13341+ =d "M128 64V128H0L2.79753e-06 64C4.34256e-06 28.6538 28.6538 -1.54503e-06 64 0C99.3462 1.54503e-06 128 28.6538 128 64Z"
13342+ :: =fill fg
13343+ =vector-effect "non-scaling-stroke";
13344+ :: =stroke bg
13345+ :: =stroke-width "0.5"
13346+ ;path
13347+ =d "M-0.00292969 0L127.997 128"
13348+ =vector-effect "non-scaling-stroke"
13349+ :: =stroke bg
13350+ :: =stroke-linecap "square"
13351+ =fill "none";
13352+ ;circle
13353+ =cx "64"
13354+ =cy "64"
13355+ =r "48"
13356+ =vector-effect "non-scaling-stroke"
13357+ :: =stroke bg
13358+ =fill "none";
13359+ ;circle
13360+ =cx "64"
13361+ =cy "64"
13362+ =r "11.5"
13363+ :: =fill fg
13364+ =vector-effect "non-scaling-stroke"
13365+ =stroke fg;
13366+ ;circle
13367+ =cx "64"
13368+ =cy "64"
13369+ =r "9"
13370+ =fill bg
13371+ =vector-effect "non-scaling-stroke";
13372+ :: =stroke bg
13373+ :: =stroke-width "2"
13374+ ==
13375+::
13376+ :- 'tus'
13377+ |= [fg=tape bg=tape]
13378+ :~ ;path
13379+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13380+ :: =fill fg
13381+ =vector-effect "non-scaling-stroke";
13382+ :: =stroke bg
13383+ :: =stroke-width "0.5"
13384+ ;path
13385+ =d "M128 0L0 128"
13386+ =vector-effect "non-scaling-stroke"
13387+ :: =stroke bg
13388+ :: =stroke-linecap "square"
13389+ =fill "none";
13390+ ;circle
13391+ =cx "32"
13392+ =cy "32"
13393+ =r "11.5"
13394+ :: =fill fg
13395+ =vector-effect "non-scaling-stroke"
13396+ =stroke fg;
13397+ ;circle
13398+ =cx "32"
13399+ =cy "32"
13400+ =r "9"
13401+ =fill bg
13402+ =vector-effect "non-scaling-stroke";
13403+ :: =stroke bg
13404+ :: =stroke-width "2"
13405+ ==
13406+::
13407+ :- 'tux'
13408+ |= [fg=tape bg=tape]
13409+ :~ ;path
13410+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13411+ :: =fill fg
13412+ =vector-effect "non-scaling-stroke";
13413+ :: =stroke bg
13414+ :: =stroke-width "0.5"
13415+ ;path
13416+ =d "M128 64L0 64"
13417+ =vector-effect "non-scaling-stroke"
13418+ :: =stroke bg
13419+ =fill "none";
13420+ ;circle
13421+ =cx "64"
13422+ =cy "96"
13423+ =r "11.5"
13424+ :: =fill fg
13425+ =vector-effect "non-scaling-stroke"
13426+ =stroke fg;
13427+ ;circle
13428+ =cx "64"
13429+ =cy "96"
13430+ =r "9"
13431+ =fill bg
13432+ =vector-effect "non-scaling-stroke";
13433+ :: =stroke bg
13434+ :: =stroke-width "2"
13435+ ==
13436+::
13437+ :- 'tyc'
13438+ |= [fg=tape bg=tape]
13439+ :~ ;path
13440+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13441+ :: =fill fg
13442+ =vector-effect "non-scaling-stroke";
13443+ :: =stroke bg
13444+ :: =stroke-width "0.5"
13445+ ;path
13446+ =fill-rule "evenodd"
13447+ =clip-rule "evenodd"
13448+ =stroke "none"
13449+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
13450+ =fill bg;
13451+ ==
13452+::
13453+ :- 'tyd'
13454+ |= [fg=tape bg=tape]
13455+ :~ ;path
13456+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
13457+ :: =fill fg
13458+ =vector-effect "non-scaling-stroke";
13459+ :: =stroke bg
13460+ :: =stroke-width "0.5"
13461+ ;path
13462+ =d "M-0.00280762 0L127.997 128"
13463+ =vector-effect "non-scaling-stroke"
13464+ :: =stroke bg
13465+ :: =stroke-linecap "square"
13466+ =fill "none";
13467+ ;line
13468+ =y1 "-0.5"
13469+ =x2 "45.2548"
13470+ =y2 "-0.5"
13471+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.6499)"
13472+ =vector-effect "non-scaling-stroke"
13473+ :: =stroke bg
13474+ =fill "none";
13475+ ;line
13476+ =x1 "15.9964"
13477+ =y1 "111.997"
13478+ =x2 "47.9964"
13479+ =y2 "79.9965"
13480+ =vector-effect "non-scaling-stroke"
13481+ :: =stroke bg
13482+ =fill "none";
13483+ ;circle
13484+ =cx "64"
13485+ =cy "64"
13486+ =r "11.5"
13487+ :: =fill fg
13488+ =vector-effect "non-scaling-stroke"
13489+ =stroke fg;
13490+ ;circle
13491+ =cx "64"
13492+ =cy "64"
13493+ =r "9"
13494+ =fill bg
13495+ =vector-effect "non-scaling-stroke";
13496+ :: =stroke bg
13497+ :: =stroke-width "2"
13498+ ==
13499+::
13500+ :- 'tyl'
13501+ |= [fg=tape bg=tape]
13502+ :~ ;path
13503+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
13504+ :: =fill fg
13505+ =vector-effect "non-scaling-stroke";
13506+ :: =stroke bg
13507+ :: =stroke-width "0.5"
13508+ ;path
13509+ =d "M7.37542e-06 -3.56072e-06C1.19529e-06 70.6924 57.3075 128 128 128"
13510+ =vector-effect "non-scaling-stroke"
13511+ :: =stroke bg
13512+ =fill "none";
13513+ ==
13514+::
13515+ :- 'tyn'
13516+ |= [fg=tape bg=tape]
13517+ :~ ;path
13518+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
13519+ :: =fill fg
13520+ =vector-effect "non-scaling-stroke";
13521+ :: =stroke bg
13522+ :: =stroke-width "0.5"
13523+ ;path
13524+ =d "M128 -2.28831e-06C57.3076 -3.13131e-06 8.42999e-07 57.3075 0 128"
13525+ =vector-effect "non-scaling-stroke"
13526+ :: =stroke bg
13527+ =fill "none";
13528+ ==
13529+::
13530+ :- 'typ'
13531+ |= [fg=tape bg=tape]
13532+ :~ ;path
13533+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
13534+ :: =fill fg
13535+ =vector-effect "non-scaling-stroke";
13536+ :: =stroke bg
13537+ :: =stroke-width "0.5"
13538+ ;path
13539+ =d "M-0.00292969 0L127.997 128"
13540+ =vector-effect "non-scaling-stroke"
13541+ :: =stroke bg
13542+ :: =stroke-linecap "square"
13543+ =fill "none";
13544+ ;path
13545+ =d "M96 1.90735e-06C96 53.0193 53.0193 96 0 96"
13546+ =vector-effect "non-scaling-stroke"
13547+ :: =stroke bg
13548+ =fill "none";
13549+ ==
13550+::
13551+ :- 'tyr'
13552+ |= [fg=tape bg=tape]
13553+ :~ ;path
13554+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
13555+ :: =fill fg
13556+ =vector-effect "non-scaling-stroke";
13557+ :: =stroke bg
13558+ :: =stroke-width "0.5"
13559+ ;path
13560+ =d "M0 0L128 128"
13561+ =vector-effect "non-scaling-stroke"
13562+ :: =stroke bg
13563+ :: =stroke-linecap "square"
13564+ =fill "none";
13565+ ;path
13566+ =d "M128 64C92.6538 64 64 35.3462 64 0"
13567+ =vector-effect "non-scaling-stroke"
13568+ :: =stroke bg
13569+ =fill "none";
13570+ ;path
13571+ =d "M0 64C35.3462 64 64 92.6538 64 128"
13572+ =vector-effect "non-scaling-stroke"
13573+ :: =stroke bg
13574+ =fill "none";
13575+ ==
13576+::
13577+ :- 'tyv'
13578+ |= [fg=tape bg=tape]
13579+ :~ ;path
13580+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
13581+ :: =fill fg
13582+ =vector-effect "non-scaling-stroke";
13583+ :: =stroke bg
13584+ :: =stroke-width "0.5"
13585+ ;path
13586+ =d "M256 0L128 128"
13587+ =vector-effect "non-scaling-stroke"
13588+ :: =stroke bg
13589+ :: =stroke-linecap "square"
13590+ =fill "none";
13591+ ;circle
13592+ =cx "64"
13593+ =cy "64"
13594+ =r "32"
13595+ =vector-effect "non-scaling-stroke"
13596+ :: =stroke bg
13597+ =fill "none";
13598+ ;circle
13599+ =cx "96"
13600+ =cy "32"
13601+ =r "11.5"
13602+ :: =fill fg
13603+ =vector-effect "non-scaling-stroke"
13604+ =stroke fg;
13605+ ;circle
13606+ =cx "96"
13607+ =cy "32"
13608+ =r "9"
13609+ =fill bg
13610+ =vector-effect "non-scaling-stroke";
13611+ :: =stroke bg
13612+ :: =stroke-width "2"
13613+ ;circle
13614+ =cx "32"
13615+ =cy "96"
13616+ =r "11.5"
13617+ :: =fill fg
13618+ =vector-effect "non-scaling-stroke"
13619+ =stroke fg;
13620+ ;circle
13621+ =cx "32"
13622+ =cy "96"
13623+ =r "9"
13624+ =fill bg
13625+ =vector-effect "non-scaling-stroke";
13626+ :: =stroke bg
13627+ :: =stroke-width "2"
13628+ ==
13629+::
13630+ :- 'wac'
13631+ |= [fg=tape bg=tape]
13632+ :~ ;path
13633+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
13634+ :: =fill fg
13635+ =vector-effect "non-scaling-stroke";
13636+ :: =stroke bg
13637+ :: =stroke-width "0.5"
13638+ ;path
13639+ =d "M128 64L0 64"
13640+ =vector-effect "non-scaling-stroke"
13641+ :: =stroke bg
13642+ =fill "none";
13643+ ;circle
13644+ =cx "64"
13645+ =cy "64"
13646+ =r "11.5"
13647+ :: =fill fg
13648+ =vector-effect "non-scaling-stroke"
13649+ =stroke fg;
13650+ ;circle
13651+ =cx "64"
13652+ =cy "64"
13653+ =r "9"
13654+ =fill bg
13655+ =vector-effect "non-scaling-stroke";
13656+ :: =stroke bg
13657+ :: =stroke-width "2"
13658+ ;circle
13659+ =cx "16"
13660+ =cy "112"
13661+ =r "11.5"
13662+ =fill bg
13663+ =vector-effect "non-scaling-stroke";
13664+ :: =stroke bg
13665+ ;circle
13666+ =cx "16"
13667+ =cy "112"
13668+ =r "9"
13669+ :: =fill fg
13670+ =vector-effect "non-scaling-stroke"
13671+ =stroke fg;
13672+ :: =stroke-width "2"
13673+ ==
13674+::
13675+ :- 'wal'
13676+ |= [fg=tape bg=tape]
13677+ :~ ;path
13678+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
13679+ :: =fill fg
13680+ =vector-effect "non-scaling-stroke";
13681+ :: =stroke bg
13682+ :: =stroke-width "0.5"
13683+ ;line
13684+ =x1 "64.5"
13685+ =y1 "-0.5"
13686+ =x2 "64.5"
13687+ =y2 "127.5"
13688+ =vector-effect "non-scaling-stroke"
13689+ :: =stroke bg
13690+ =fill "none";
13691+ ;line
13692+ =x1 "32"
13693+ =y1 "2.18557e-08"
13694+ =x2 "32"
13695+ =y2 "128"
13696+ =vector-effect "non-scaling-stroke"
13697+ :: =stroke bg
13698+ =fill "none";
13699+ ==
13700+::
13701+ :- 'wan'
13702+ |= [fg=tape bg=tape]
13703+ :~ ;path
13704+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
13705+ :: =fill fg
13706+ =vector-effect "non-scaling-stroke";
13707+ :: =stroke bg
13708+ :: =stroke-width "0.5"
13709+ ;path
13710+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
13711+ :: =fill fg
13712+ =vector-effect "non-scaling-stroke";
13713+ :: =stroke bg
13714+ :: =stroke-width "0.5"
13715+ ==
13716+::
13717+ :- 'wat'
13718+ |= [fg=tape bg=tape]
13719+ :~ ;path
13720+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
13721+ :: =fill fg
13722+ =vector-effect "non-scaling-stroke";
13723+ :: =stroke bg
13724+ :: =stroke-width "0.5"
13725+ ;path
13726+ =fill-rule "evenodd"
13727+ =clip-rule "evenodd"
13728+ =stroke "none"
13729+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
13730+ =fill bg;
13731+ ==
13732+::
13733+ :- 'web'
13734+ |= [fg=tape bg=tape]
13735+ :~ ;rect
13736+ =width "128"
13737+ =height "128"
13738+ :: =fill fg
13739+ =vector-effect "non-scaling-stroke";
13740+ :: =stroke bg
13741+ :: =stroke-width "0.5"
13742+ ;path
13743+ =d "M128 128C128 57.3075 70.6925 0 0 0"
13744+ =vector-effect "non-scaling-stroke"
13745+ :: =stroke bg
13746+ =fill "none";
13747+ ==
13748+::
13749+ :- 'wed'
13750+ |= [fg=tape bg=tape]
13751+ :~ ;circle
13752+ =cx "64"
13753+ =cy "64"
13754+ =r "64"
13755+ :: =fill fg
13756+ =vector-effect "non-scaling-stroke";
13757+ :: =stroke bg
13758+ :: =stroke-width "0.5"
13759+ ;circle
13760+ =cx "32"
13761+ =cy "32"
13762+ =r "11.5"
13763+ :: =fill fg
13764+ =vector-effect "non-scaling-stroke"
13765+ =stroke fg;
13766+ ;circle
13767+ =cx "32"
13768+ =cy "32"
13769+ =r "9"
13770+ =fill bg
13771+ =vector-effect "non-scaling-stroke";
13772+ :: =stroke bg
13773+ :: =stroke-width "2"
13774+ ==
13775+::
13776+ :- 'weg'
13777+ |= [fg=tape bg=tape]
13778+ :~ ;rect
13779+ =width "128"
13780+ =height "128"
13781+ :: =fill fg
13782+ =vector-effect "non-scaling-stroke";
13783+ :: =stroke bg
13784+ :: =stroke-width "0.5"
13785+ ;path
13786+ =d "M79.5254 0C79.5254 8.83656 72.3619 16 63.5254 16C54.6888 16 47.5254 8.83656 47.5254 0"
13787+ =vector-effect "non-scaling-stroke"
13788+ :: =stroke bg
13789+ =fill "none";
13790+ ==
13791+::
13792+ :- 'wel'
13793+ |= [fg=tape bg=tape]
13794+ :~ ;path
13795+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
13796+ :: =fill fg
13797+ =vector-effect "non-scaling-stroke";
13798+ :: =stroke bg
13799+ :: =stroke-width "0.5"
13800+ ;path
13801+ =d "M128 32C74.9807 32 32 74.9807 32 128"
13802+ =vector-effect "non-scaling-stroke"
13803+ :: =stroke bg
13804+ =fill "none";
13805+ ;path
13806+ =d "M128 64C92.6538 64 64 92.6538 64 128"
13807+ =vector-effect "non-scaling-stroke"
13808+ :: =stroke bg
13809+ =fill "none";
13810+ ;path
13811+ =d "M128 96C110.327 96 96 110.327 96 128"
13812+ =vector-effect "non-scaling-stroke"
13813+ :: =stroke bg
13814+ =fill "none";
13815+ ==
13816+::
13817+ :- 'wen'
13818+ |= [fg=tape bg=tape]
13819+ :~ ;rect
13820+ =width "128"
13821+ =height "128"
13822+ :: =fill fg
13823+ =vector-effect "non-scaling-stroke";
13824+ :: =stroke bg
13825+ :: =stroke-width "0.5"
13826+ ;path
13827+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
13828+ =vector-effect "non-scaling-stroke"
13829+ :: =stroke bg
13830+ =fill "none";
13831+ ;path
13832+ =d "M-0.00292969 0L127.997 128"
13833+ =vector-effect "non-scaling-stroke"
13834+ :: =stroke bg
13835+ :: =stroke-linecap "square"
13836+ =fill "none";
13837+ ==
13838+::
13839+ :- 'wep'
13840+ |= [fg=tape bg=tape]
13841+ :~ ;path
13842+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
13843+ :: =fill fg
13844+ =vector-effect "non-scaling-stroke";
13845+ :: =stroke bg
13846+ :: =stroke-width "0.5"
13847+ ;circle
13848+ =cx "96"
13849+ =cy "96"
13850+ =r "11.5"
13851+ :: =fill fg
13852+ =vector-effect "non-scaling-stroke"
13853+ =stroke fg;
13854+ ;circle
13855+ =cx "96"
13856+ =cy "96"
13857+ =r "9"
13858+ =fill bg
13859+ =vector-effect "non-scaling-stroke";
13860+ :: =stroke bg
13861+ :: =stroke-width "2"
13862+ ==
13863+::
13864+ :- 'wer'
13865+ |= [fg=tape bg=tape]
13866+ :~ ;path
13867+ =d "M0 64L5.59506e-06 0L128 1.11901e-05V64C128 99.3462 99.3462 128 64 128C28.6538 128 -4.6351e-06 99.3462 0 64Z"
13868+ :: =fill fg
13869+ =vector-effect "non-scaling-stroke";
13870+ :: =stroke bg
13871+ :: =stroke-width "0.5"
13872+ ;path
13873+ =d "M32 0L32 128"
13874+ =vector-effect "non-scaling-stroke"
13875+ :: =stroke bg
13876+ =fill "none";
13877+ ;circle
13878+ =cx "32"
13879+ =cy "32"
13880+ =r "11.5"
13881+ :: =fill fg
13882+ =vector-effect "non-scaling-stroke"
13883+ =stroke fg;
13884+ ;circle
13885+ =cx "32"
13886+ =cy "32"
13887+ =r "9"
13888+ =fill bg
13889+ =vector-effect "non-scaling-stroke";
13890+ :: =stroke bg
13891+ :: =stroke-width "2"
13892+ ==
13893+::
13894+ :- 'wes'
13895+ |= [fg=tape bg=tape]
13896+ :~ ;path
13897+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
13898+ :: =fill fg
13899+ =vector-effect "non-scaling-stroke";
13900+ :: =stroke bg
13901+ :: =stroke-width "0.5"
13902+ ;line
13903+ =x1 "80.0035"
13904+ =y1 "79.9965"
13905+ =x2 "112.003"
13906+ =y2 "111.997"
13907+ =vector-effect "non-scaling-stroke"
13908+ :: =stroke bg
13909+ =fill "none";
13910+ ;circle
13911+ =cx "112"
13912+ =cy "112"
13913+ =r "11.5"
13914+ :: =fill fg
13915+ =vector-effect "non-scaling-stroke"
13916+ =stroke fg;
13917+ ;circle
13918+ =cx "112"
13919+ =cy "112"
13920+ =r "9"
13921+ =fill bg
13922+ =vector-effect "non-scaling-stroke";
13923+ :: =stroke bg
13924+ :: =stroke-width "2"
13925+ ==
13926+::
13927+ :- 'wet'
13928+ |= [fg=tape bg=tape]
13929+ :~ ;circle
13930+ =cx "64"
13931+ =cy "64"
13932+ =r "64"
13933+ :: =fill fg
13934+ =vector-effect "non-scaling-stroke";
13935+ :: =stroke bg
13936+ :: =stroke-width "0.5"
13937+ ;path
13938+ =d "M64 64H0"
13939+ =vector-effect "non-scaling-stroke"
13940+ :: =stroke bg
13941+ =fill "none";
13942+ ==
13943+::
13944+ :- 'wex'
13945+ |= [fg=tape bg=tape]
13946+ :~ ;path
13947+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
13948+ :: =fill fg
13949+ =vector-effect "non-scaling-stroke";
13950+ :: =stroke bg
13951+ :: =stroke-width "0.5"
13952+ ;path
13953+ =fill-rule "evenodd"
13954+ =clip-rule "evenodd"
13955+ =stroke "none"
13956+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
13957+ =fill bg;
13958+ ==
13959+::
13960+ :- 'wic'
13961+ |= [fg=tape bg=tape]
13962+ :~ ;path
13963+ =d "M128 0C57.3075 8.42999e-07 -8.42999e-07 57.3075 0 128H128V0Z"
13964+ :: =fill fg
13965+ =vector-effect "non-scaling-stroke";
13966+ :: =stroke bg
13967+ :: =stroke-width "0.5"
13968+ ;circle
13969+ =cx "96"
13970+ =cy "32"
13971+ =r "11.5"
13972+ :: =fill fg
13973+ =vector-effect "non-scaling-stroke"
13974+ =stroke fg;
13975+ ;circle
13976+ =cx "96"
13977+ =cy "32"
13978+ =r "9"
13979+ =fill bg
13980+ =vector-effect "non-scaling-stroke";
13981+ :: =stroke bg
13982+ :: =stroke-width "2"
13983+ ;circle
13984+ =cx "32"
13985+ =cy "96"
13986+ =r "11.5"
13987+ :: =fill fg
13988+ =vector-effect "non-scaling-stroke"
13989+ =stroke fg;
13990+ ;circle
13991+ =cx "32"
13992+ =cy "96"
13993+ =r "9"
13994+ =fill bg
13995+ =vector-effect "non-scaling-stroke";
13996+ :: =stroke bg
13997+ :: =stroke-width "2"
13998+ ==
13999+::
14000+ :- 'wid'
14001+ |= [fg=tape bg=tape]
14002+ :~ ;path
14003+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
14004+ :: =fill fg
14005+ =vector-effect "non-scaling-stroke";
14006+ :: =stroke bg
14007+ :: =stroke-width "0.5"
14008+ ;line
14009+ =x1 "48.0035"
14010+ =y1 "80.0036"
14011+ =x2 "16.0035"
14012+ =y2 "112.004"
14013+ =vector-effect "non-scaling-stroke"
14014+ :: =stroke bg
14015+ =fill "none";
14016+ ;path
14017+ =fill-rule "evenodd"
14018+ =clip-rule "evenodd"
14019+ =stroke "none"
14020+ =d "M80 64C80 72.8366 72.8366 80 64 80C55.1634 80 48 72.8366 48 64C48 55.1634 55.1634 48 64 48C72.8366 48 80 55.1634 80 64ZM64 72C68.4183 72 72 68.4183 72 64C72 59.5817 68.4183 56 64 56C59.5817 56 56 59.5817 56 64C56 68.4183 59.5817 72 64 72Z"
14021+ =fill bg;
14022+ ==
14023+::
14024+ :- 'win'
14025+ |= [fg=tape bg=tape]
14026+ :~ ;rect
14027+ =width "128"
14028+ =height "128"
14029+ :: =fill fg
14030+ =vector-effect "non-scaling-stroke";
14031+ :: =stroke bg
14032+ :: =stroke-width "0.5"
14033+ ;line
14034+ =x1 "64"
14035+ =y1 "2.18557e-08"
14036+ =x2 "64"
14037+ =y2 "128"
14038+ =vector-effect "non-scaling-stroke"
14039+ :: =stroke bg
14040+ =fill "none";
14041+ ==
14042+::
14043+ :- 'wis'
14044+ |= [fg=tape bg=tape]
14045+ :~ ;path
14046+ =d "M0 0C0 70.6925 57.3075 128 128 128V0H0Z"
14047+ :: =fill fg
14048+ =vector-effect "non-scaling-stroke";
14049+ :: =stroke bg
14050+ :: =stroke-width "0.5"
14051+ ;path
14052+ =d "M128 64L0 64"
14053+ =vector-effect "non-scaling-stroke"
14054+ :: =stroke bg
14055+ =fill "none";
14056+ ;path
14057+ =d "M128 32L0 32"
14058+ =vector-effect "non-scaling-stroke"
14059+ :: =stroke bg
14060+ =fill "none";
14061+ ==
14062+::
14063+ :- 'wit'
14064+ |= [fg=tape bg=tape]
14065+ :~ ;path
14066+ =d "M0 127.946C0.0292286 57.2783 57.3256 3.08928e-06 128 0C128 70.6823 70.7089 127.984 0.0305092 128C0.0203397 128 0.01017 128 2.36469e-09 128L0 127.946Z"
14067+ :: =fill fg
14068+ =vector-effect "non-scaling-stroke";
14069+ :: =stroke bg
14070+ :: =stroke-width "0.5"
14071+ ;line
14072+ =x1 "64"
14073+ =y1 "2.18557e-08"
14074+ =x2 "64"
14075+ =y2 "128"
14076+ =vector-effect "non-scaling-stroke"
14077+ :: =stroke bg
14078+ =fill "none";
14079+ ;line
14080+ =x1 "32"
14081+ =y1 "2.18557e-08"
14082+ =x2 "32"
14083+ =y2 "128"
14084+ =vector-effect "non-scaling-stroke"
14085+ :: =stroke bg
14086+ =fill "none";
14087+ ;line
14088+ =x1 "96"
14089+ =y1 "2.18557e-08"
14090+ =x2 "96"
14091+ =y2 "128"
14092+ =vector-effect "non-scaling-stroke"
14093+ :: =stroke bg
14094+ =fill "none";
14095+ ==
14096+::
14097+ :- 'wol'
14098+ |= [fg=tape bg=tape]
14099+ :~ ;circle
14100+ =cx "64"
14101+ =cy "64"
14102+ =r "64"
14103+ :: =fill fg
14104+ =vector-effect "non-scaling-stroke";
14105+ :: =stroke bg
14106+ :: =stroke-width "0.5"
14107+ ;path
14108+ =d "M0 64L128 64"
14109+ =vector-effect "non-scaling-stroke"
14110+ :: =stroke bg
14111+ =fill "none";
14112+ ;path
14113+ =d "M128 96C110.327 96 96 81.6731 96 64C96 46.3269 110.327 32 128 32"
14114+ =vector-effect "non-scaling-stroke"
14115+ :: =stroke bg
14116+ =fill "none";
14117+ ==
14118+::
14119+ :- 'wor'
14120+ |= [fg=tape bg=tape]
14121+ :~ ;path
14122+ =d "M64 0H128V128H64C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0Z"
14123+ :: =fill fg
14124+ =vector-effect "non-scaling-stroke";
14125+ :: =stroke bg
14126+ :: =stroke-width "0.5"
14127+ ;line
14128+ =y1 "-0.5"
14129+ =x2 "45.2548"
14130+ =y2 "-0.5"
14131+ =transform "matrix(0.707107 -0.707107 -0.707107 -0.707107 79.65 47.65)"
14132+ =vector-effect "non-scaling-stroke"
14133+ :: =stroke bg
14134+ =fill "none";
14135+ ;line
14136+ =x1 "-0.0029152"
14137+ =x2 "127.983"
14138+ =y2 "127.986"
14139+ =vector-effect "non-scaling-stroke"
14140+ :: =stroke bg
14141+ :: =stroke-linecap "square"
14142+ =fill "none";
14143+ ;path
14144+ =d "M64 96C46.3269 96 32 81.6731 32 64"
14145+ =vector-effect "non-scaling-stroke"
14146+ :: =stroke bg
14147+ =fill "none";
14148+ ;circle
14149+ =cx "64"
14150+ =cy "64"
14151+ =r "11.5"
14152+ :: =fill fg
14153+ =vector-effect "non-scaling-stroke"
14154+ =stroke fg;
14155+ ;circle
14156+ =cx "64"
14157+ =cy "64"
14158+ =r "9"
14159+ =fill bg
14160+ =vector-effect "non-scaling-stroke";
14161+ :: =stroke bg
14162+ :: =stroke-width "2"
14163+ ==
14164+::
14165+ :- 'wyc'
14166+ |= [fg=tape bg=tape]
14167+ :~ ;path
14168+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
14169+ :: =fill fg
14170+ =vector-effect "non-scaling-stroke";
14171+ :: =stroke bg
14172+ :: =stroke-width "0.5"
14173+ ==
14174+::
14175+ :- 'wyd'
14176+ |= [fg=tape bg=tape]
14177+ :~ ;path
14178+ =d "M0.0541 0C70.7217 0.0292317 128 57.3256 128 128C57.3177 128 0.0164917 70.7089 7.62806e-06 0.0305091C7.62851e-06 0.0203397 -4.44317e-10 0.01017 0 0H0.0541Z"
14179+ :: =fill fg
14180+ =vector-effect "non-scaling-stroke";
14181+ :: =stroke bg
14182+ :: =stroke-width "0.5"
14183+ ;path
14184+ =d "M-0.00292969 0L127.997 128"
14185+ =vector-effect "non-scaling-stroke"
14186+ :: =stroke bg
14187+ :: =stroke-linecap "square"
14188+ =fill "none";
14189+ ;path
14190+ =d "M32 64C32 46.3269 46.3269 32 64 32"
14191+ =vector-effect "non-scaling-stroke"
14192+ :: =stroke bg
14193+ =fill "none";
14194+ ;circle
14195+ =cx "32"
14196+ =cy "64"
14197+ =r "11.5"
14198+ :: =fill fg
14199+ =vector-effect "non-scaling-stroke"
14200+ =stroke fg;
14201+ ;circle
14202+ =cx "32"
14203+ =cy "64"
14204+ =r "9"
14205+ =fill bg
14206+ =vector-effect "non-scaling-stroke";
14207+ :: =stroke bg
14208+ :: =stroke-width "2"
14209+ ==
14210+::
14211+ :- 'wyl'
14212+ |= [fg=tape bg=tape]
14213+ :~ ;path
14214+ =d "M128 128C128 57.3076 70.6925 6.18013e-06 1.11901e-05 0L0 128L128 128Z"
14215+ :: =fill fg
14216+ =vector-effect "non-scaling-stroke";
14217+ :: =stroke bg
14218+ :: =stroke-width "0.5"
14219+ ;path
14220+ =d "M-3.8147e-06 128C-7.24633e-07 92.6538 28.6538 64 64 64C99.3462 64 128 92.6538 128 128"
14221+ =vector-effect "non-scaling-stroke"
14222+ :: =stroke bg
14223+ =fill "none";
14224+ ==
14225+::
14226+ :- 'wyn'
14227+ |= [fg=tape bg=tape]
14228+ :~ ;path
14229+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
14230+ :: =fill fg
14231+ =vector-effect "non-scaling-stroke";
14232+ :: =stroke bg
14233+ :: =stroke-width "0.5"
14234+ ;path
14235+ =d "M1.52575e-06 96C53.0193 96 96 53.0193 96 0"
14236+ =vector-effect "non-scaling-stroke"
14237+ :: =stroke bg
14238+ =fill "none";
14239+ ;path
14240+ =d "M1.01717e-06 64C35.3462 64 64 35.3462 64 0"
14241+ =vector-effect "non-scaling-stroke"
14242+ :: =stroke bg
14243+ =fill "none";
14244+ ;path
14245+ =d "M5.08584e-07 32C17.6731 32 32 17.6731 32 0"
14246+ =vector-effect "non-scaling-stroke"
14247+ :: =stroke bg
14248+ =fill "none";
14249+ ==
14250+::
14251+ :- 'wyt'
14252+ |= [fg=tape bg=tape]
14253+ :~ ;path
14254+ =d "M64 128H0L5.59506e-06 0L64 5.59506e-06C99.3462 8.68512e-06 128 28.6538 128 64C128 99.3462 99.3462 128 64 128Z"
14255+ :: =fill fg
14256+ =vector-effect "non-scaling-stroke";
14257+ :: =stroke bg
14258+ :: =stroke-width "0.5"
14259+ ;path
14260+ =d "M128 0L0 128"
14261+ =vector-effect "non-scaling-stroke"
14262+ :: =stroke bg
14263+ :: =stroke-linecap "square"
14264+ =fill "none";
14265+ ;circle
14266+ =cx "64"
14267+ =cy "64"
14268+ =r "48"
14269+ =vector-effect "non-scaling-stroke"
14270+ :: =stroke bg
14271+ =fill "none";
14272+ ;circle
14273+ =cx "16"
14274+ =cy "64"
14275+ =r "11.5"
14276+ :: =fill fg
14277+ =vector-effect "non-scaling-stroke"
14278+ =stroke fg;
14279+ ;circle
14280+ =cx "16"
14281+ =cy "64"
14282+ =r "9"
14283+ =fill bg
14284+ =vector-effect "non-scaling-stroke";
14285+ :: =stroke bg
14286+ :: =stroke-width "2"
14287+ ==
14288+::
14289+ :- 'wyx'
14290+ |= [fg=tape bg=tape]
14291+ :~ ;path
14292+ =d "M5.59506e-06 128C70.6925 128 128 70.6925 128 0L0 5.59506e-06L5.59506e-06 128Z"
14293+ :: =fill fg
14294+ =vector-effect "non-scaling-stroke";
14295+ :: =stroke bg
14296+ :: =stroke-width "0.5"
14297+ ;path
14298+ =d "M-0.00292969 0L127.997 128"
14299+ =vector-effect "non-scaling-stroke"
14300+ :: =stroke bg
14301+ :: =stroke-linecap "square"
14302+ =fill "none";
14303+ ;circle
14304+ =cx "32"
14305+ =cy "96"
14306+ =r "11.5"
14307+ :: =fill fg
14308+ =vector-effect "non-scaling-stroke"
14309+ =stroke fg;
14310+ ;circle
14311+ =cx "32"
14312+ =cy "96"
14313+ =r "9"
14314+ =fill bg
14315+ =vector-effect "non-scaling-stroke";
14316+ :: =stroke bg
14317+ :: =stroke-width "2"
14318+ ;circle
14319+ =cx "32"
14320+ =cy "32"
14321+ =r "11.5"
14322+ :: =fill fg
14323+ =vector-effect "non-scaling-stroke"
14324+ =stroke fg;
14325+ ;circle
14326+ =cx "32"
14327+ =cy "32"
14328+ =r "9"
14329+ =fill bg
14330+ =vector-effect "non-scaling-stroke";
14331+ :: =stroke bg
14332+ :: =stroke-width "2"
14333+ ;circle
14334+ =cx "96"
14335+ =cy "32"
14336+ =r "11.5"
14337+ :: =fill fg
14338+ =vector-effect "non-scaling-stroke"
14339+ =stroke fg;
14340+ ;circle
14341+ =cx "96"
14342+ =cy "32"
14343+ =r "9"
14344+ =fill bg
14345+ =vector-effect "non-scaling-stroke";
14346+ :: =stroke bg
14347+ :: =stroke-width "2"
14348+ ==
14349+::
14350+ :- 'zod'
14351+ |= [fg=tape bg=tape]
14352+ :~ ;circle
14353+ =cx "64"
14354+ =cy "64"
14355+ =r "64"
14356+ :: =fill fg
14357+ =vector-effect "non-scaling-stroke";
14358+ :: =stroke bg
14359+ :: =stroke-width "0.5"
14360+ ==
14361+==
desk/lib/skeleton.hoonnew file+51
@@ -0,0 +1,51 @@
1+:: Similar to default-agent except crashes everywhere
2+^- agent:gall
3+|_ bowl:gall
4+++ on-init
5+ ^- (quip card:agent:gall agent:gall)
6+ !!
7+::
8+++ on-save
9+ ^- vase
10+ !!
11+::
12+++ on-load
13+ |~ old-state=vase
14+ ^- (quip card:agent:gall agent:gall)
15+ !!
16+::
17+++ on-poke
18+ |~ in-poke-data=cage
19+ ^- (quip card:agent:gall agent:gall)
20+ !!
21+::
22+++ on-watch
23+ |~ path
24+ ^- (quip card:agent:gall agent:gall)
25+ !!
26+::
27+++ on-leave
28+ |~ path
29+ ^- (quip card:agent:gall agent:gall)
30+ !!
31+::
32+++ on-peek
33+ |~ path
34+ ^- (unit (unit cage))
35+ !!
36+::
37+++ on-agent
38+ |~ [wire sign:agent:gall]
39+ ^- (quip card:agent:gall agent:gall)
40+ !!
41+::
42+++ on-arvo
43+ |~ [wire =sign-arvo]
44+ ^- (quip card:agent:gall agent:gall)
45+ !!
46+::
47+++ on-fail
48+ |~ [term tang]
49+ ^- (quip card:agent:gall agent:gall)
50+ !!
51+--
desk/lib/test.hoonnew file+103
@@ -0,0 +1,103 @@
1+:: testing utilities meant to be directly used from files in %/tests
2+::
3+|%
4+:: +expect-eq: compares :expected and :actual and pretty-prints the result
5+::
6+++ expect-eq
7+ |= [expected=vase actual=vase]
8+ ^- tang
9+ ::
10+ =| result=tang
11+ ::
12+ =? result !=(q.expected q.actual)
13+ %+ weld result
14+ ^- tang
15+ :~ [%palm [": " ~ ~ ~] [leaf+"expected" (sell expected) ~]]
16+ [%palm [": " ~ ~ ~] [leaf+"actual " (sell actual) ~]]
17+ ==
18+ ::
19+ =? result !(~(nest ut p.actual) | p.expected)
20+ %+ weld result
21+ ^- tang
22+ :~ :+ %palm [": " ~ ~ ~]
23+ :~ [%leaf "failed to nest"]
24+ (~(dunk ut p.actual) %actual)
25+ (~(dunk ut p.expected) %expected)
26+ == ==
27+ result
28+:: +expect: compares :actual to %.y and pretty-prints anything else
29+::
30+++ expect
31+ |= actual=vase
32+ (expect-eq !>(%.y) actual)
33+:: +expect-fail: kicks a trap, expecting crash. pretty-prints if succeeds
34+::
35+++ expect-fail
36+ |= a=(trap)
37+ ^- tang
38+ =/ b (mule a)
39+ ?- -.b
40+ %| ~
41+ %& ['expected failure - succeeded' ~]
42+ ==
43+:: +expect-success: kicks a trap, expecting success; returns trace on failure
44+::
45+++ expect-success
46+ |= a=(trap)
47+ ^- tang
48+ =/ b (mule a)
49+ ?- -.b
50+ %& ~
51+ %| ['expected success - failed' p.b]
52+ ==
53+::
54+:: +expect-fail-message: kicks a trap, expecting crash, compares the resulting error message
55+++ expect-fail-message
56+ |= [msg=@t a=(trap)]
57+ ^- tang
58+ =/ b (mule a)
59+ ?- -.b
60+ %| |^
61+ =/ =tang (flatten +.b)
62+ ?: ?=(^ (find (trip msg) tang))
63+ ~
64+ ['expected error message - not found' ~]
65+ ++ flatten
66+ |= tang=(list tank)
67+ =| res=tape
68+ |- ^- tape
69+ ?~ tang res
70+ $(tang t.tang, res (weld ~(ram re i.tang) res))
71+ --
72+ %& ['expected failure - succeeded' ~]
73+ ==
74+:: $a-test-chain: a sequence of tests to be run
75+::
76+:: NB: arms shouldn't start with `test-` so that `-test % ~` runs
77+::
78++$ a-test-chain
79+ $_
80+ |?
81+ ?: =(0 0)
82+ [%& p=*tang]
83+ [%| p=[tang=*tang next=^?(..$)]]
84+:: +run-chain: run a sequence of tests, stopping at first failure
85+::
86+++ run-chain
87+ |= seq=a-test-chain
88+ ^- tang
89+ =/ res $:seq
90+ ?- -.res
91+ %& p.res
92+ %| ?. =(~ tang.p.res)
93+ tang.p.res
94+ $(seq next.p.res)
95+ ==
96+:: +category: prepends a name to an error result; passes successes unchanged
97+::
98+++ category
99+ |= [a=tape b=tang] ^- tang
100+ ?: =(~ b) ~ :: test OK
101+ :- leaf+"in: '{a}'"
102+ (turn b |=(c=tank rose+[~ " " ~]^~[c]))
103+--
desk/mar/bill.hoonnew file+34
@@ -0,0 +1,34 @@
1+|_ bil=(list dude:gall)
2+++ grow
3+ |%
4+ ++ mime `^mime`[/text/x-bill (as-octs:mimes:html hoon)]
5+ ++ noun bil
6+ ++ hoon
7+ ^- @t
8+ |^ (crip (of-wall:format (wrap-lines (spit-duz bil))))
9+ ::
10+ ++ wrap-lines
11+ |= taz=wall
12+ ^- wall
13+ ?~ taz ["~"]~
14+ :- (weld ":~ " i.taz)
15+ %- snoc :_ "=="
16+ (turn t.taz |=(t=tape (weld " " t)))
17+ ::
18+ ++ spit-duz
19+ |= duz=(list dude:gall)
20+ ^- wall
21+ (turn duz |=(=dude:gall ['%' (trip dude)]))
22+ --
23+ ++ txt (to-wain:format hoon)
24+ --
25+++ grab
26+ |%
27+ ++ noun (list dude:gall)
28+ ++ mime
29+ |= [=mite len=@ud tex=@]
30+ ~_ tex
31+ !<((list dude:gall) (slap !>(~) (ream tex)))
32+ --
33+++ grad %noun
34+--
desk/mar/css.hoonnew file+25
@@ -0,0 +1,25 @@
1+::
2+:::: /hoon/css/mar
3+ ::
4+/? 310
5+=, eyre
6+=, mimes:html
7+|_ mud=@t
8+++ grow :: convert to
9+ |%
10+ ++ mime [/text/css (as-octs mud)] :: convert to %mime
11+ ++ hymn :: convert to %hymn
12+ |^ html
13+ ++ style ;style
14+ ;- (trip mud)
15+ ==
16+ ++ html ;html:(head:"{style}" body)
17+ --
18+ --
19+++ grab
20+ |% :: convert from
21+ ++ mime |=([p=mite q=octs] (@t q.q))
22+ ++ noun @t :: clam from %noun
23+ --
24+++ grad %mime
25+--
desk/mar/hoon.hoonnew file+303
@@ -0,0 +1,303 @@
1+|_ own=@t
2+::
3+++ grow :: convert to
4+ |%
5+ ++ mime `^mime`[/text/x-hoon (as-octs:mimes:html own)] :: convert to %mime
6+ ++ hymn
7+ ^- manx
8+ =/ to-wall
9+ |= =tape
10+ ^- wall
11+ %+ roll (flop tape)
12+ |= [char=@tD =wall]
13+ ?~ wall
14+ [[char ~] ~]
15+ ?: =('\0a' char)
16+ [~ wall]
17+ [[char i.wall] t.wall]
18+ ::
19+ =/ src=tape (trip own)
20+ =/ count=@ud (lent (to-wall src))
21+ =; [style=tape script=tape]
22+ ;html
23+ ;head
24+ ;title: source
25+ ;meta(charset "utf-8");
26+ ;meta(name "viewport", content "width=device-width, initial-scale=1");
27+ ;style: {style}
28+ ==
29+ ;body
30+ ;div.viewer
31+ :: ;div.viewer-bar
32+ :: ;span.viewer-name: {(scow %ud count)} lines
33+ :: ;button.copy-link(id "copy-link", hidden ""): copy link
34+ :: ==
35+ ;div.code
36+ ;pre.gutter(id "gutter");
37+ ;div.code-body
38+ ;div(id "hl");
39+ ;pre.code-pre(id "code"): {src}
40+ ==
41+ ==
42+ ==
43+ ;script: {script}
44+ ==
45+ ==
46+ ::
47+ :-
48+ ^~ ^= style
49+ ^- tape
50+ %- trip
51+ '''
52+ :root {
53+ --bg: #fbfbf9;
54+ --panel: #ffffff;
55+ --gutter-bg: #f3f3ef;
56+ --line: #e4e4dd;
57+ --fg: #2b2b2b;
58+ --fg-dim: #9a9a90;
59+ --sel: #fff7d6;
60+ --sel-edge: #f1e4a8;
61+ --accent: #4a6da7;
62+ --lh: 20px;
63+ --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
64+ "Liberation Mono", "Courier New", monospace;
65+ }
66+ * { box-sizing: border-box; }
67+ html, body {
68+ margin: 0;
69+ height: 100%;
70+ background: var(--bg);
71+ color: var(--fg);
72+ font-family: var(--mono);
73+ -webkit-font-smoothing: antialiased;
74+ }
75+ .viewer {
76+ height: 100vh;
77+ display: flex;
78+ flex-direction: column;
79+ padding: 16px;
80+ gap: 12px;
81+ }
82+ .viewer-bar {
83+ flex: 0 0 auto;
84+ display: flex;
85+ align-items: center;
86+ gap: 12px;
87+ font-size: 13px;
88+ color: var(--fg-dim);
89+ }
90+ .viewer-name {
91+ flex: 1 1 auto;
92+ min-width: 0;
93+ overflow: hidden;
94+ text-overflow: ellipsis;
95+ white-space: nowrap;
96+ color: var(--fg);
97+ }
98+ .copy-link {
99+ flex: 0 0 auto;
100+ padding: 4px 12px;
101+ border: 1px solid var(--line);
102+ border-radius: 6px;
103+ background: var(--panel);
104+ color: var(--fg-dim);
105+ font: inherit;
106+ font-size: 12px;
107+ cursor: pointer;
108+ transition: color .12s, border-color .12s;
109+ }
110+ .copy-link:hover { color: var(--accent); border-color: var(--accent); }
111+ .copy-link[hidden] { display: none; }
112+ .code {
113+ flex: 1 1 auto;
114+ min-height: 0;
115+ display: flex;
116+ align-items: flex-start;
117+ overflow: auto;
118+ background: var(--panel);
119+ border: 1px solid var(--line);
120+ border-radius: 8px;
121+ }
122+ .code-body {
123+ position: relative;
124+ flex: 1 1 auto;
125+ min-width: 0;
126+ width: max-content;
127+ }
128+ #gutter, #code {
129+ margin: 0;
130+ padding: 14px 0;
131+ font-family: var(--mono);
132+ font-size: 13px;
133+ line-height: var(--lh);
134+ white-space: pre;
135+ tab-size: 2;
136+ }
137+ #gutter {
138+ position: sticky;
139+ left: 0;
140+ z-index: 2;
141+ flex: 0 0 auto;
142+ padding-left: 16px;
143+ padding-right: 12px;
144+ text-align: right;
145+ color: var(--fg-dim);
146+ background: var(--gutter-bg);
147+ border-right: 1px solid var(--line);
148+ user-select: none;
149+ -webkit-user-select: none;
150+ cursor: pointer;
151+ }
152+ #code {
153+ display: block;
154+ padding-left: 14px;
155+ padding-right: 18px;
156+ color: var(--fg);
157+ }
158+ #hl {
159+ position: absolute;
160+ left: 0;
161+ right: 0;
162+ z-index: 0; /* under the text */
163+ display: none;
164+ background: var(--sel);
165+ box-shadow: inset 2px 0 0 var(--sel-edge);
166+ pointer-events: none;
167+ }
168+ #code { position: relative; z-index: 1; } /* text above the bar */
169+ :focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
170+ '''
171+ ^~ ^= code
172+ ^- tape
173+ %- trip
174+ '''
175+ (function () {
176+ "use strict";
177+ const panel = document.querySelector(".code"); // the scroll container
178+ const code = document.getElementById("code");
179+ const gutter = document.getElementById("gutter");
180+ const hl = document.getElementById("hl");
181+ if (!panel || !code || !gutter || !hl) return;
182+ const text = code.textContent;
183+ let lineCount = text.length ? text.split("\n").length : 1;
184+ if (text.endsWith("\n")) lineCount -= 1;
185+ if (lineCount < 1) lineCount = 1;
186+ (function fillGutter() {
187+ let s = "";
188+ for (let i = 1; i <= lineCount; i++) s += i + "\n";
189+ gutter.textContent = s;
190+ })();
191+ let lineH = 0;
192+ let codeTop = 0; // code's content-box top padding, the y-origin of line 1
193+ function measure() {
194+ const cs = getComputedStyle(code);
195+ const lh = parseFloat(cs.lineHeight);
196+ lineH = isNaN(lh) ? parseFloat(cs.fontSize) * 1.55 : lh;
197+ codeTop = parseFloat(cs.paddingTop) || 0;
198+ positionHighlight(); // keep the bar correct after a re-measure
199+ }
200+ let anchor = null;
201+ let selLo = 0;
202+ let selHi = 0;
203+ function positionHighlight() {
204+ if (!selLo) { hl.style.display = "none"; return; }
205+ hl.style.display = "block";
206+ hl.style.top = (codeTop + (selLo - 1) * lineH) + "px";
207+ hl.style.height = ((selHi - selLo + 1) * lineH) + "px";
208+ }
209+ function applySel(lo, hi) {
210+ selLo = lo;
211+ selHi = hi;
212+ positionHighlight();
213+ }
214+ function deselect() {
215+ selLo = selHi = 0;
216+ anchor = null;
217+ positionHighlight();
218+ history.replaceState(null, "", location.pathname + location.search);
219+ }
220+ function parseHash(hash) {
221+ const m = /^#L(\d+)(?:-L(\d+))?$/.exec(hash || "");
222+ if (!m) return null;
223+ let lo = parseInt(m[1], 10);
224+ let hi = m[2] ? parseInt(m[2], 10) : lo;
225+ if (hi < lo) { const t = lo; lo = hi; hi = t; }
226+ lo = Math.max(1, Math.min(lo, lineCount));
227+ hi = Math.max(1, Math.min(hi, lineCount));
228+ return [lo, hi];
229+ }
230+ function setHash(lo, hi) {
231+ const frag = lo === hi ? "L" + lo : "L" + lo + "-L" + hi;
232+ history.replaceState(null, "", "#" + frag);
233+ }
234+ function scrollToLine(n) {
235+ const y = codeTop + (n - 1) * lineH;
236+ if (y < panel.scrollTop || y > panel.scrollTop + panel.clientHeight) {
237+ panel.scrollTop = Math.max(0, y - panel.clientHeight / 2);
238+ }
239+ }
240+ function selectFromHash(scroll) {
241+ const r = parseHash(location.hash);
242+ if (!r) return false;
243+ anchor = r[0];
244+ applySel(r[0], r[1]);
245+ if (scroll) scrollToLine(r[0]);
246+ return true;
247+ }
248+ function lineFromEvent(e) {
249+ // y within the code content: pointer relative to the code pre's rendered
250+ // top, which already accounts for scroll since getBoundingClientRect is
251+ // viewport-relative and the pre moves as the panel scrolls.
252+ const rect = code.getBoundingClientRect();
253+ const y = e.clientY - rect.top - codeTop;
254+ let n = Math.floor(y / lineH) + 1;
255+ if (n < 1) n = 1;
256+ if (n > lineCount) n = lineCount;
257+ return n;
258+ }
259+ function onClick(e) {
260+ const inGutter = e.target === gutter;
261+ if (!inGutter && !e.shiftKey) return; // normal text interaction in code
262+ const n = lineFromEvent(e);
263+ if (!e.shiftKey && selLo === n && selHi === n) {
264+ deselect();
265+ return;
266+ }
267+ if (e.shiftKey && anchor !== null) {
268+ applySel(Math.min(anchor, n), Math.max(anchor, n));
269+ setHash(selLo, selHi);
270+ } else {
271+ anchor = n;
272+ applySel(n, n);
273+ setHash(n, n);
274+ }
275+ }
276+ gutter.addEventListener("click", onClick);
277+ code.addEventListener("click", onClick);
278+ document.addEventListener("keydown", function (e) {
279+ if (e.key === "Escape") deselect();
280+ });
281+ window.addEventListener("hashchange", function () {
282+ if (!selectFromHash(true)) deselect();
283+ });
284+ let rz = null;
285+ window.addEventListener("resize", function () {
286+ clearTimeout(rz);
287+ rz = setTimeout(measure, 100);
288+ });
289+ measure();
290+ selectFromHash(true);
291+ })();
292+ '''
293+ ++ txt
294+ (to-wain:format own)
295+ --
296+++ grab
297+ |% :: convert from
298+ ++ mime |=([p=mite q=octs] q.q)
299+ ++ noun @t :: clam from %noun
300+ ++ txt of-wain:format
301+ --
302+++ grad %txt
303+--
desk/mar/js.hoonnew file+25
@@ -0,0 +1,25 @@
1+::
2+:::: /hoon/js/mar
3+ ::
4+/? 310
5+::
6+=, eyre
7+|_ mud=@
8+++ grow
9+ |%
10+ ++ mime [/application/javascript (as-octs:mimes:html (@t mud))]
11+ ++ hymn :: convert to %hymn
12+ |^ html
13+ ++ script ;script
14+ ;- (trip (@t mud))
15+ ==
16+ ++ html ;html:(head:"{script}" body)
17+ --
18+ --
19+++ grab
20+ |% :: convert from
21+ ++ mime |=([p=mite q=octs] (@t q.q))
22+ ++ noun cord :: clam from %noun
23+ --
24+++ grad %mime
25+--
desk/mar/kelvin.hoonnew file+28
@@ -0,0 +1,28 @@
1+|_ kal=waft:clay
2+++ grow
3+ |%
4+ ++ mime `^mime`[/text/x-kelvin (as-octs:mimes:html hoon)]
5+ ++ noun kal
6+ ++ hoon
7+ %+ rap 3
8+ %+ turn
9+ %+ sort
10+ ~(tap in (waft-to-wefts:clay kal))
11+ |= [a=weft b=weft]
12+ ?: =(lal.a lal.b)
13+ (gte num.a num.b)
14+ (gte lal.a lal.b)
15+ |= =weft
16+ (rap 3 '[%' (scot %tas lal.weft) ' ' (scot %ud num.weft) ']\0a' ~)
17+ ::
18+ ++ txt (to-wain:format hoon)
19+ --
20+++ grab
21+ |%
22+ ++ noun waft:clay
23+ ++ mime
24+ |= [=mite len=@ud tex=@]
25+ (cord-to-waft:clay tex)
26+ --
27+++ grad %noun
28+--
desk/mar/mime.hoonnew file+32
@@ -0,0 +1,32 @@
1+::
2+:::: /hoon/mime/mar
3+ ::
4+/? 310
5+::
6+|_ own=mime
7+++ grow
8+ ^?
9+ |%
10+ ++ jam `@`q.q.own
11+ --
12+::
13+++ grab :: convert from
14+ ^?
15+ |%
16+ ++ noun mime :: clam from %noun
17+ ++ tape
18+ |=(a=_"" [/application/x-urb-unknown (as-octt:mimes:html a)])
19+ --
20+++ grad
21+ ^?
22+ |%
23+ ++ form %mime
24+ ++ diff |=(mime +<)
25+ ++ pact |=(mime +<)
26+ ++ join |=([mime mime] `(unit mime)`~)
27+ ++ mash
28+ |= [[ship desk mime] [ship desk mime]]
29+ ^- mime
30+ ~|(%mime-mash !!)
31+ --
32+--
desk/mar/noun.hoonnew file+22
@@ -0,0 +1,22 @@
1+::
2+:::: /hoon/noun/mar
3+ ::
4+/? 310
5+!:
6+:::: A minimal noun mark
7+|_ non=*
8+++ grab |%
9+ ++ noun *
10+ --
11+++ grow |%
12+ ++ mime [/application/x-urb-jam (as-octs:mimes:html (jam non))]
13+ --
14+++ grad
15+ |%
16+ ++ form %noun
17+ ++ diff |=(* +<)
18+ ++ pact |=(* +<)
19+ ++ join |=([* *] *(unit *))
20+ ++ mash |=([[ship desk *] [ship desk *]] `*`~|(%noun-mash !!))
21+ --
22+--
desk/mar/shelf/action.hoonnew file+12
@@ -0,0 +1,12 @@
1+/- shelf
2+|_ act=action:shelf
3+++ grad %noun
4+++ grow
5+ |%
6+ ++ noun act
7+ --
8+++ grab
9+ |%
10+ ++ noun action:shelf
11+ --
12+--
desk/mar/txt.hoonnew file+274
@@ -0,0 +1,274 @@
1+::
2+:::: /hoon/txt/mar
3+ ::
4+/? 310
5+::
6+=, clay
7+=, differ
8+=, format
9+=, mimes:html
10+|_ txt=wain
11+::
12+++ grab :: convert from
13+ |%
14+ ++ mime |=((pair mite octs) (to-wain q.q))
15+ ++ noun wain :: clam from %noun
16+ --
17+++ grow
18+ => v=.
19+ |%
20+ ++ mime => v [/text/plain (as-octs (of-wain txt))]
21+ --
22+++ grad
23+ |%
24+ ++ form %txt-diff
25+ ++ diff
26+ |= tyt=wain
27+ ^- (urge cord)
28+ (lusk txt tyt (loss txt tyt))
29+ ::
30+ ++ pact
31+ |= dif=(urge cord)
32+ ~| [%pacting dif]
33+ ^- wain
34+ (lurk txt dif)
35+ ::
36+ ++ join
37+ |= [ali=(urge cord) bob=(urge cord)]
38+ ^- (unit (urge cord))
39+ |^
40+ =. ali (clean ali)
41+ =. bob (clean bob)
42+ |- ^- (unit (urge cord))
43+ ?~ ali `bob
44+ ?~ bob `ali
45+ ?- -.i.ali
46+ %&
47+ ?- -.i.bob
48+ %&
49+ ?: =(p.i.ali p.i.bob)
50+ %+ bind $(ali t.ali, bob t.bob)
51+ |=(cud=(urge cord) [i.ali cud])
52+ ?: (gth p.i.ali p.i.bob)
53+ %+ bind $(p.i.ali (sub p.i.ali p.i.bob), bob t.bob)
54+ |=(cud=(urge cord) [i.bob cud])
55+ %+ bind $(ali t.ali, p.i.bob (sub p.i.bob p.i.ali))
56+ |=(cud=(urge cord) [i.ali cud])
57+ ::
58+ %|
59+ ?: =(p.i.ali (lent p.i.bob))
60+ %+ bind $(ali t.ali, bob t.bob)
61+ |=(cud=(urge cord) [i.bob cud])
62+ ?: (gth p.i.ali (lent p.i.bob))
63+ %+ bind $(p.i.ali (sub p.i.ali (lent p.i.bob)), bob t.bob)
64+ |=(cud=(urge cord) [i.bob cud])
65+ ~
66+ ==
67+ ::
68+ %|
69+ ?- -.i.bob
70+ %|
71+ ?. =(i.ali i.bob)
72+ ~
73+ %+ bind $(ali t.ali, bob t.bob)
74+ |=(cud=(urge cord) [i.ali cud])
75+ ::
76+ %&
77+ ?: =(p.i.bob (lent p.i.ali))
78+ %+ bind $(ali t.ali, bob t.bob)
79+ |=(cud=(urge cord) [i.ali cud])
80+ ?: (gth p.i.bob (lent p.i.ali))
81+ %+ bind $(ali t.ali, p.i.bob (sub p.i.bob (lent p.i.ali)))
82+ |=(cud=(urge cord) [i.ali cud])
83+ ~
84+ ==
85+ ==
86+ ++ clean :: clean
87+ |= wig=(urge cord)
88+ ^- (urge cord)
89+ ?~ wig ~
90+ ?~ t.wig wig
91+ ?: ?=(%& -.i.wig)
92+ ?: ?=(%& -.i.t.wig)
93+ $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig])
94+ [i.wig $(wig t.wig)]
95+ ?: ?=(%| -.i.t.wig)
96+ $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig])
97+ [i.wig $(wig t.wig)]
98+ --
99+ ::
100+ ++ mash
101+ |= $: [als=ship ald=desk ali=(urge cord)]
102+ [bos=ship bod=desk bob=(urge cord)]
103+ ==
104+ ^- (urge cord)
105+ |^
106+ =. ali (clean ali)
107+ =. bob (clean bob)
108+ |- ^- (urge cord)
109+ ?~ ali bob
110+ ?~ bob ali
111+ ?- -.i.ali
112+ %&
113+ ?- -.i.bob
114+ %&
115+ ?: =(p.i.ali p.i.bob)
116+ [i.ali $(ali t.ali, bob t.bob)]
117+ ?: (gth p.i.ali p.i.bob)
118+ [i.bob $(p.i.ali (sub p.i.ali p.i.bob), bob t.bob)]
119+ [i.ali $(ali t.ali, p.i.bob (sub p.i.bob p.i.ali))]
120+ ::
121+ %|
122+ ?: =(p.i.ali (lent p.i.bob))
123+ [i.bob $(ali t.ali, bob t.bob)]
124+ ?: (gth p.i.ali (lent p.i.bob))
125+ [i.bob $(p.i.ali (sub p.i.ali (lent p.i.bob)), bob t.bob)]
126+ =/ [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
127+ (resolve ali bob)
128+ [fic $(ali ali, bob bob)]
129+ :: ~ :: here, alice is good for a while, but not for the whole
130+ == :: length of bob's changes
131+ ::
132+ %|
133+ ?- -.i.bob
134+ %|
135+ =/ [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
136+ (resolve ali bob)
137+ [fic $(ali ali, bob bob)]
138+ ::
139+ %&
140+ ?: =(p.i.bob (lent p.i.ali))
141+ [i.ali $(ali t.ali, bob t.bob)]
142+ ?: (gth p.i.bob (lent p.i.ali))
143+ [i.ali $(ali t.ali, p.i.bob (sub p.i.bob (lent p.i.ali)))]
144+ =/ [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
145+ (resolve ali bob)
146+ [fic $(ali ali, bob bob)]
147+ ==
148+ ==
149+ ::
150+ ++ annotate :: annotate conflict
151+ |= $: ali=(list @t)
152+ bob=(list @t)
153+ bas=(list @t)
154+ ==
155+ ^- (list @t)
156+ %- zing
157+ ^- (list (list @t))
158+ %- flop
159+ ^- (list (list @t))
160+ :- :_ ~
161+ %^ cat 3 '<<<<<<<<<<<<'
162+ %^ cat 3 ' '
163+ %^ cat 3 `@t`(scot %p bos)
164+ %^ cat 3 '/'
165+ bod
166+
167+ :- bob
168+ :- ~['------------']
169+ :- bas
170+ :- ~['++++++++++++']
171+ :- ali
172+ :- :_ ~
173+ %^ cat 3 '>>>>>>>>>>>>'
174+ %^ cat 3 ' '
175+ %^ cat 3 `@t`(scot %p als)
176+ %^ cat 3 '/'
177+ ald
178+ ~
179+ ::
180+ ++ clean :: clean
181+ |= wig=(urge cord)
182+ ^- (urge cord)
183+ ?~ wig ~
184+ ?~ t.wig wig
185+ ?: ?=(%& -.i.wig)
186+ ?: ?=(%& -.i.t.wig)
187+ $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig])
188+ [i.wig $(wig t.wig)]
189+ ?: ?=(%| -.i.t.wig)
190+ $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig])
191+ [i.wig $(wig t.wig)]
192+ ::
193+ ++ resolve
194+ |= [ali=(urge cord) bob=(urge cord)]
195+ ^- [fic=[%| p=(list cord) q=(list cord)] ali=(urge cord) bob=(urge cord)]
196+ =- [[%| bac (annotate alc boc bac)] ali bob]
197+ |- ^- $: $: bac=(list cord)
198+ alc=(list cord)
199+ boc=(list cord)
200+ ==
201+ ali=(urge cord)
202+ bob=(urge cord)
203+ ==
204+ ?~ ali [[~ ~ ~] ali bob]
205+ ?~ bob [[~ ~ ~] ali bob]
206+ ?- -.i.ali
207+ %&
208+ ?- -.i.bob
209+ %& [[~ ~ ~] ali bob] :: no conflict
210+ %|
211+ =+ lob=(lent p.i.bob)
212+ ?: =(lob p.i.ali)
213+ [[p.i.bob p.i.bob q.i.bob] t.ali t.bob]
214+ ?: (lth lob p.i.ali)
215+ [[p.i.bob p.i.bob q.i.bob] [[%& (sub p.i.ali lob)] t.ali] t.bob]
216+ =+ wat=(scag (sub lob p.i.ali) p.i.bob)
217+ =+ ^= res
218+ %= $
219+ ali t.ali
220+ bob [[%| (scag (sub lob p.i.ali) p.i.bob) ~] t.bob]
221+ ==
222+ :* :* (welp bac.res wat)
223+ (welp alc.res wat)
224+ (welp boc.res q.i.bob)
225+ ==
226+ ali.res
227+ bob.res
228+ ==
229+ ==
230+ ::
231+ %|
232+ ?- -.i.bob
233+ %&
234+ =+ loa=(lent p.i.ali)
235+ ?: =(loa p.i.bob)
236+ [[p.i.ali q.i.ali p.i.ali] t.ali t.bob]
237+ ?: (lth loa p.i.bob)
238+ [[p.i.ali q.i.ali p.i.ali] t.ali [[%& (sub p.i.bob loa)] t.bob]]
239+ =+ wat=(slag (sub loa p.i.bob) p.i.ali)
240+ =+ ^= res
241+ %= $
242+ ali [[%| (scag (sub loa p.i.bob) p.i.ali) ~] t.ali]
243+ bob t.bob
244+ ==
245+ :* :* (welp bac.res wat)
246+ (welp alc.res q.i.ali)
247+ (welp boc.res wat)
248+ ==
249+ ali.res
250+ bob.res
251+ ==
252+ ::
253+ %|
254+ =+ loa=(lent p.i.ali)
255+ =+ lob=(lent p.i.bob)
256+ ?: =(loa lob)
257+ [[p.i.ali q.i.ali q.i.bob] t.ali t.bob]
258+ =+ ^= res
259+ ?: (gth loa lob)
260+ $(ali [[%| (scag (sub loa lob) p.i.ali) ~] t.ali], bob t.bob)
261+ ~& [%scagging loa=loa pibob=p.i.bob slag=(scag loa p.i.bob)]
262+ $(ali t.ali, bob [[%| (scag (sub lob loa) p.i.bob) ~] t.bob])
263+ :* :* (welp bac.res ?:((gth loa lob) p.i.bob p.i.ali))
264+ (welp alc.res q.i.ali)
265+ (welp boc.res q.i.bob)
266+ ==
267+ ali.res
268+ bob.res
269+ ==
270+ ==
271+ ==
272+ --
273+ --
274+--
desk/sur/docket.hoonnew file+82
@@ -0,0 +1,82 @@
1+|%
2+::
3++$ version
4+ [major=@ud minor=@ud patch=@ud]
5+::
6++$ glob (map path mime)
7+::
8++$ url cord
9+:: $glob-location: How to retrieve a glob
10+::
11++$ glob-reference
12+ [hash=@uvH location=glob-location]
13+::
14++$ glob-location
15+ $% [%http =url]
16+ [%ames =ship]
17+ ==
18+:: $href: Where a tile links to
19+::
20++$ href
21+ $% [%glob base=term =glob-reference]
22+ [%site =path]
23+ ==
24+:: $chad: State of a docket
25+::
26++$ chad
27+ $~ [%install ~]
28+ $% :: Done
29+ [%glob =glob]
30+ [%site ~]
31+ :: Waiting
32+ [%install ~]
33+ [%suspend glob=(unit glob)]
34+ :: Error
35+ [%hung err=cord]
36+ ==
37+::
38+:: $charge: A realized $docket
39+::
40++$ charge
41+ $: =docket
42+ =chad
43+ ==
44+::
45+:: $clause: A key and value, as part of a docket
46+::
47+:: Only used to parse $docket
48+::
49++$ clause
50+ $% [%title title=@t]
51+ [%info info=@t]
52+ [%color color=@ux]
53+ [%glob-http url=cord hash=@uvH]
54+ [%glob-ames =ship hash=@uvH]
55+ [%image =url]
56+ [%site =path]
57+ [%base base=term]
58+ [%version =version]
59+ [%website website=url]
60+ [%license license=cord]
61+ ==
62+::
63+:: $docket: A description of JS bundles for a desk
64+::
65++$ docket
66+ $: %1
67+ title=@t
68+ info=@t
69+ color=@ux
70+ =href
71+ image=(unit url)
72+ =version
73+ website=url
74+ license=cord
75+ ==
76+::
77++$ charge-update
78+ $% [%initial initial=(map desk charge)]
79+ [%add-charge =desk =charge]
80+ [%del-charge =desk]
81+ ==
82+--
desk/sur/shelf.hoonnew file+13
@@ -0,0 +1,13 @@
1+:: shelf: owner configuration for the %shelf agent
2+::
3+|%
4+:: $action: set raw HTML the page appends to its <head> or <body>
5+::
6+:: Meant for analytics snippets and the like. It is inserted as-is,
7+:: unescaped. '' clears it.
8+::
9++$ action
10+ $% [%head html=@t]
11+ [%body html=@t]
12+ ==
13+--
desk/sur/treaty.hoonnew file+59
@@ -0,0 +1,59 @@
1+/- docket
2+|%
3+++ treaty
4+ =< treaty
5+ |%
6+ :: $treaty: An extrajudicial docket
7+ ::
8+ :: Includes the docket itself, plus provenance generated by clay
9+ ::
10+ +$ treaty
11+ [=ship =desk =case hash=@uv =docket:docket]
12+ ::
13+ :: $update:treaty: Diff of treaty state
14+ ::
15+ +$ update
16+ $% [%ini init=(map [=ship =desk] =treaty)]
17+ [%add =treaty]
18+ [%del =ship =desk]
19+ ==
20+ --
21+++ alliance
22+ =< alliance
23+ |%
24+ :: $alliance: Dockets to be advertised for install
25+ ::
26+ +$ alliance (set [=ship =desk])
27+ +$ diff
28+ $% [%add =ship =desk]
29+ [%del =ship =desk]
30+ ==
31+ ::
32+ +$ update
33+ $% [%ini init=(set [=ship =desk])]
34+ diff
35+ ==
36+ --
37+
38+:: +ally: Discovery structures
39+::
40+++ ally
41+ |%
42+ ::
43+ :: $allies: Provider ships and their alliances
44+ ::
45+ +$ allies (map ship alliance)
46+ :: $diff: Request to change ally state
47+ +$ diff
48+ $% [%add =ship]
49+ [%del =ship]
50+ ==
51+ :: $update: Changed ally state
52+ ::
53+ +$ update
54+ $% diff
55+ [%ini init=(map ship alliance)]
56+ [%new =ship =alliance]
57+ ==
58+ --
59+--
desk/sys.kelvinnew file+1
@@ -0,0 +1 @@
1+[%zuse 408]
desk/tests/lib/shelf.hoonnew file+471
@@ -0,0 +1,471 @@
1+/- docket, treaty
2+/+ *test, *shelf
3+|%
4+:: fixtures for the page tests
5+::
6+++ harbor
7+ ^- treaty:treaty
8+ :* ~zod %harbor da+~2026.1.1 0v1
9+ %1 'Harbor' 'Every desk on your ship.' 0x24.466f [%site /apps/harbor]
10+ `'https://x.y/harbor.svg' [2 0 1] 'https://github.com/zod/harbor' 'MIT'
11+ ==
12+::
13+++ marginalia
14+ ^- treaty:treaty
15+ :* ~bus %marginalia da+~2026.1.1 0v2
16+ %1 'Marginalia' 'Annotate any page.' 0x3d.3934 [%site /apps/marginalia]
17+ ~ [0 4 2] 'https://github.com/bus/marginalia' 'MIT'
18+ ==
19+::
20+++ oddity
21+ ^- treaty:treaty
22+ :* ~zod %oddity da+~2026.1.1 0v3
23+ %1 '<Odd & "Quoted"> App' 'a < b & c > \'d\'' 0xff.ffff [%site /apps/oddity]
24+ `'javascript:alert(1)' [10 20 300] 'javascript:alert(2)' ''
25+ ==
26+::
27+++ has
28+ |= [hay=tape needle=tape]
29+ ^- ?
30+ ?=(^ (find needle hay))
31+::
32+++ count
33+ |= [hay=tape needle=tape]
34+ ^- @ud
35+ (lent (fand needle hay))
36+::
37+++ render
38+ |= $: our=ship
39+ rows=(list treaty:treaty)
40+ open=(unit [ship desk])
41+ err=?
42+ mine=(unit @t)
43+ ==
44+ ^- tape
45+ (~(document ui our rows open err mine) 'CSS' 'JS' '' '')
46+::
47+++ test-ui-empty
48+ =/ doc (render ~zod ~ ~ | ~)
49+ ;: weld
50+ (expect !>((has doc "<p class=\"empty\">No apps published yet.</p>")))
51+ (expect !>(!(has doc "apps-head")))
52+ (expect !>((has doc "<title>~zod · Apps</title>")))
53+ (expect !>((has doc "<style>CSS</style>")))
54+ (expect !>((has doc "<main class=\"page\">")))
55+ (expect !>((has doc "<link rel=\"icon\" href=\"data:,\" />")))
56+ (expect !>((has doc "<script>JS</script>")))
57+ ==
58+::
59+++ test-ui-rows
60+ =/ doc (render ~zod ~[harbor marginalia oddity] ~ | ~)
61+ ;: weld
62+ (expect !>((has doc "<span class=\"count\">3 apps</span>")))
63+ (expect !>(=(1 (count doc "by ~bus"))))
64+ (expect !>((has doc "<section class=\"apps\" aria-label=\"Published apps\">")))
65+ (expect !>((has doc "&lt;Odd &amp; &quot;Quoted&quot;&gt; App")))
66+ (expect !>((has doc "a &lt; b &amp; c &gt; &#39;d&#39;")))
67+ (expect !>(!(has doc "<Odd")))
68+ (expect !>(!(has doc "javascript:")))
69+ (expect !>(=(2 (count doc "class=\"site\""))))
70+ (expect !>((has doc "<span class=\"initial\">&lt;</span>")))
71+ (expect !>((has doc "<span class=\"initial\">M</span>")))
72+ (expect !>((has doc "<img src=\"https://x.y/harbor.svg\"")))
73+ (expect !>((has doc "--tile:#24466f;--tile-ink:#ffffff")))
74+ (expect !>((has doc "<span class=\"version\">10.20.300</span>")))
75+ (expect !>((has doc "href=\"/?install=harbor&amp;host=~zod#harbor-zod\"")))
76+ (expect !>((has doc "href=\"/?install=marginalia&amp;host=~bus#marginalia-bus\"")))
77+ (expect !>((has doc "data-copy=\"|install ~bus %marginalia\"")))
78+ (expect !>((has doc "<article class=\"app\" id=\"oddity-zod\">")))
79+ (expect !>(!(has doc "panel-wrap")))
80+ (expect !>((has doc "New to Urbit?\0a<a href=\"https://urbit.org\"")))
81+ ==
82+::
83+++ test-ui-one-app
84+ =/ doc (render ~zod ~[harbor] ~ | ~)
85+ (expect !>((has doc "<span class=\"count\">1 app</span>")))
86+::
87+++ test-ui-open-panel
88+ =/ doc (render ~zod ~[harbor marginalia] `[~zod %harbor] | ~)
89+ ;: weld
90+ (expect !>(=(1 (count doc "panel-wrap"))))
91+ (expect !>((has doc "href=\"/#harbor-zod\">Close</a>")))
92+ (expect !>((has doc "<form class=\"panel\" method=\"post\" action=\"/\">")))
93+ (expect !>((has doc "name=\"install\" value=\"harbor\"")))
94+ (expect !>((has doc "name=\"host\" value=\"~zod\"")))
95+ (expect !>((has doc "Install Harbor on your ship")))
96+ (expect !>((has doc "<span class=\"hint\">")))
97+ (expect !>(!(has doc "<span class=\"error\">")))
98+ (expect !>((has doc "href=\"/?install=marginalia&amp;host=~bus#marginalia-bus\">Install</a>")))
99+ ==
100+::
101+++ test-ui-open-error
102+ =/ doc (render ~zod ~[harbor] `[~zod %harbor] & ~)
103+ ;: weld
104+ (expect !>((has doc "<span class=\"error\">That doesn&#39;t look like a ship URL.")))
105+ (expect !>(!(has doc "<span class=\"hint\">")))
106+ ==
107+::
108+++ test-ui-open-unknown
109+ :: ?install= naming an app that isn't on the shelf opens nothing
110+ =/ doc (render ~zod ~[harbor] `[~zod %nope] | ~)
111+ (expect !>(!(has doc "panel-wrap")))
112+::
113+++ test-ui-saved-ship
114+ =/ mine `'https://sampel-palnet.tlon.network'
115+ =/ doc (render ~zod ~[harbor marginalia] ~ | mine)
116+ ;: weld
117+ %- expect !>
118+ %+ has doc
119+ "href=\"https://sampel-palnet.tlon.network/apps/landscape/search/direct/apps/~zod/harbor\">Install on ~sampel-palnet</a>"
120+ ::
121+ %- expect !>
122+ %+ has doc
123+ "/apps/landscape/search/direct/apps/~bus/marginalia\">Install on ~sampel-palnet</a>"
124+ ::
125+ %- expect !>
126+ (has doc "Installs open on ~sampel-palnet.\0a<a class=\"change\" href=\"/?forget\">Change ship</a>")
127+ ::
128+ (expect !>((has doc "<main class=\"page saved\">")))
129+ (expect !>(!(has doc "New to Urbit?")))
130+ ==
131+::
132+++ test-ui-saved-ship-panel
133+ :: a saved ship prefills the panel's input
134+ =/ doc (render ~zod ~[harbor] `[~zod %harbor] | `'http://localhost:8080')
135+ ;: weld
136+ (expect !>((has doc "value=\"http://localhost:8080\"")))
137+ (expect !>((has doc "Installs open on localhost:8080.")))
138+ ==
139+::
140+++ test-ui-raw-html
141+ =/ doc
142+ %. ['' '' '<script id="h"></script>' '<script id="b"></script>']
143+ ~(document ui ~zod ~ ~ | ~)
144+ ;: weld
145+ (expect !>((has doc "<script id=\"h\"></script></head><body>")))
146+ (expect !>((has doc "<script id=\"b\"></script></body></html>")))
147+ (expect !>(=("<!doctype html>" (scag 15 doc))))
148+ ==
149+::
150+++ test-ui-sigil
151+ ;: weld
152+ (expect !>((has (render ~zod ~ ~ | ~) "<div class=\"sigil\" aria-hidden=\"true\"><svg")))
153+ (expect !>((has (render ~sampel-palnet ~ ~ | ~) "<div class=\"sigil\" aria-hidden=\"true\"><svg")))
154+ %- expect !>
155+ %+ has (render ~doprut-posfel-sampel-palnet ~ ~ | ~)
156+ "<div class=\"sigil\" aria-hidden=\"true\"></div>"
157+ ==
158+::
159+++ test-sigil-colors
160+ =/ svg (en-xml:html (need (sigil-svg ~sampel-palnet)))
161+ ;: weld
162+ (expect !>((has svg "fill=\"currentColor\"")))
163+ (expect !>((has svg "style=\"fill:var(--ink)\"")))
164+ (expect !>(!(has svg "=\"var(--ink)\"")))
165+ (expect !>(!(has svg "width: ")))
166+ (expect !>((has svg "transform=\"translate(16 16) scale(0.375)\"")))
167+ ==
168+::
169+++ test-give-chunked
170+ =/ big=@ (fil 3 40.000 'x')
171+ =/ cards=(list card:agent:gall) (give-chunked 'id' [[200 ~] `[40.000 big]])
172+ =/ chunks=(list octs)
173+ %+ murn cards
174+ |= c=card:agent:gall
175+ ^- (unit octs)
176+ ?. ?=(%give -.c) ~
177+ ?. ?=(%fact -.p.c) ~
178+ ?. =(%http-response-data p.cage.p.c) ~
179+ !<((unit octs) q.cage.p.c)
180+ ;: weld
181+ (expect-eq !>(~[16.384 16.384 7.232]) !>((turn chunks head)))
182+ (expect-eq !>(big) !>((can 3 chunks)))
183+ (expect-eq !>(5) !>((lent cards)))
184+ (expect-eq !>(2) !>((lent (give-chunked 'id' [[303 ~] ~]))))
185+ ==
186+::
187+++ test-clean-utf8
188+ ;: weld
189+ (expect-eq !>('Café ✓ 🎉') !>((clean-utf8 'Café ✓ 🎉')))
190+ (expect-eq !>('Caf\ef\bf\bd') !>((clean-utf8 'Caf\e9')))
191+ (expect-eq !>('\ef\bf\bd\ef\bf\bdx') !>((clean-utf8 '\c0\afx')))
192+ (expect-eq !>('a\ef\bf\bd\ef\bf\bd') !>((clean-utf8 'a\e2\82')))
193+ (expect-eq !>('') !>((clean-utf8 '')))
194+ ==
195+::
196+++ test-treaty-json
197+ =/ one (en:json:html (treaty-json harbor))
198+ =/ two (en:json:html (treaty-json marginalia))
199+ ;: weld
200+ (expect !>((has (trip one) "\"install\":\"|install ~zod %harbor\"")))
201+ (expect !>((has (trip one) "\"color\":\"#24466f\"")))
202+ (expect !>((has (trip one) "\"image\":\"https://x.y/harbor.svg\"")))
203+ (expect !>((has (trip one) "\"version\":\"2.0.1\"")))
204+ (expect !>((has (trip one) "\"hash\":\"0v1\"")))
205+ (expect !>((has (trip two) "\"image\":null")))
206+ (expect !>((has (trip two) "\"ship\":\"~bus\"")))
207+ ==
208+::
209+++ test-normalize-url
210+ =/ ok
211+ |= [in=@t out=@t]
212+ (expect-eq !>(`(unit @t)``out) !>((normalize-url in)))
213+ =/ bad
214+ |= in=@t
215+ (expect-eq !>(`(unit @t)`~) !>((normalize-url in)))
216+ ;: weld
217+ (ok 'sampel-palnet.tlon.network' 'https://sampel-palnet.tlon.network')
218+ (ok ' HTTPS://Sampel-Palnet.Tlon.Network/ ' 'https://sampel-palnet.tlon.network')
219+ (ok 'https://sampel-palnet.tlon.network/apps/landscape/' 'https://sampel-palnet.tlon.network')
220+ (ok 'https://zod.example.com?x=1#y' 'https://zod.example.com')
221+ (ok 'http://localhost:8080' 'http://localhost:8080')
222+ (ok 'https://localhost:8443' 'https://localhost:8443')
223+ (ok 'localhost:8080/' 'http://localhost:8080')
224+ (ok '127.0.0.1:8080' 'http://127.0.0.1:8080')
225+ (ok 'localhost.example.com' 'https://localhost.example.com')
226+ (ok '127.example.com' 'https://127.example.com')
227+ (ok 'example.com:65535' 'https://example.com:65535')
228+ (ok '192.168.1.5:8080' 'https://192.168.1.5:8080')
229+ (ok 'sampel - palnet.tlon.network' 'https://sampel-palnet.tlon.network')
230+ (bad '')
231+ (bad ' ')
232+ (bad 'https://')
233+ (bad 'https:///apps')
234+ (bad 'ftp://example.com')
235+ (bad 'javascript:alert(1)')
236+ (bad 'user@example.com')
237+ (bad 'example..com')
238+ (bad 'ex_ample.com')
239+ (bad '~sampel-palnet')
240+ (bad 'example.com:')
241+ (bad 'example.com:123456')
242+ (bad 'example.com:80a')
243+ (bad 'example.com:65536')
244+ (bad 'example.com:0')
245+ ==
246+::
247+++ test-ship-label
248+ ;: weld
249+ %+ expect-eq !>(`(unit ship)``~sampel-palnet)
250+ !>((ship-label 'https://sampel-palnet.tlon.network'))
251+ ::
252+ %+ expect-eq !>(`(unit ship)``~zod)
253+ !>((ship-label 'https://zod.arvo.network'))
254+ ::
255+ %+ expect-eq !>(`(unit ship)``~marzod)
256+ !>((ship-label 'https://marzod.tlon.network:443'))
257+ ::
258+ %+ expect-eq !>(`(unit ship)`~)
259+ !>((ship-label 'http://zod:8080'))
260+ ::
261+ %+ expect-eq !>(`(unit ship)`~)
262+ !>((ship-label 'https://dev.example.com'))
263+ ::
264+ %+ expect-eq !>(`(unit ship)`~)
265+ !>((ship-label 'https://master.example.com'))
266+ ::
267+ %+ expect-eq !>(`(unit ship)``~sampel-palnet)
268+ !>((ship-label 'https://sampel-palnet.example.com'))
269+ ::
270+ %+ expect-eq !>(`(unit ship)`~)
271+ !>((ship-label 'http://localhost:8080'))
272+ ::
273+ %+ expect-eq !>(`(unit ship)`~)
274+ !>((ship-label 'https://apps.example.com'))
275+ ==
276+::
277+++ test-web-url
278+ ;: weld
279+ (expect-eq !>(`(unit @t)``'https://a.b/i.png') !>((web-url 'https://a.b/i.png')))
280+ (expect-eq !>(`(unit @t)``'HTTP://a.b') !>((web-url 'HTTP://a.b')))
281+ (expect-eq !>(`(unit @t)`~) !>((web-url 'javascript:alert(1)')))
282+ (expect-eq !>(`(unit @t)`~) !>((web-url '//evil.com/x')))
283+ (expect-eq !>(`(unit @t)`~) !>((web-url 'data:image/png;base64,AAAA')))
284+ (expect-eq !>(`(unit @t)`~) !>((web-url '')))
285+ ==
286+::
287+++ test-header
288+ =/ hs=header-list:http
289+ ~[['Accept' 'text/html'] ['cookie' 'a=1']]
290+ ;: weld
291+ (expect-eq !>(`(unit @t)``'text/html') !>((header 'accept' hs)))
292+ (expect-eq !>(`(unit @t)``'a=1') !>((header 'Cookie' hs)))
293+ (expect-eq !>(`(unit @t)`~) !>((header 'host' hs)))
294+ ==
295+::
296+++ test-cookie
297+ ;: weld
298+ %+ expect-eq !>(`(unit @t)``'https://a.b')
299+ !>((cookie 'shelf-ship' 'x=1; shelf-ship=https://a.b; y=2'))
300+ ::
301+ %+ expect-eq !>(`(unit @t)``'')
302+ !>((cookie 'shelf-ship' 'shelf-ship='))
303+ ::
304+ %+ expect-eq !>(`(unit @t)`~)
305+ !>((cookie 'shelf-ship' 'shelf-shipx=1; xshelf-ship=2'))
306+ ::
307+ %+ expect-eq !>(`(unit @t)`~)
308+ !>((cookie 'shelf-ship' ''))
309+ ==
310+::
311+++ test-get-cookie
312+ ;: weld
313+ %+ expect-eq !>(`(unit @t)``'https://a.b')
314+ !>((get-cookie 'shelf-ship' ~[['cookie' 'x=1'] ['Cookie' 'shelf-ship=https://a.b']]))
315+ ::
316+ %+ expect-eq !>(`(unit @t)`~)
317+ !>((get-cookie 'shelf-ship' ~[['accept' 'shelf-ship=1'] ['cookie' 'x=1']]))
318+ ::
319+ (expect-eq !>(`(unit @t)`~) !>((get-cookie 'shelf-ship' ~)))
320+ ==
321+::
322+++ test-cookies-out
323+ ;: weld
324+ %+ expect-eq
325+ !>('shelf-ship=https://a.b; Path=/; Max-Age=31536000; SameSite=Lax; HttpOnly; Secure')
326+ !>((ship-cookie 'https://a.b' &))
327+ ::
328+ %+ expect-eq
329+ !>('shelf-ship=http://a.b:8080; Path=/; Max-Age=31536000; SameSite=Lax; HttpOnly')
330+ !>((ship-cookie 'http://a.b:8080' |))
331+ ::
332+ %+ expect-eq
333+ !>('shelf-ship=; Path=/; Max-Age=0; SameSite=Lax; HttpOnly')
334+ !>((forget-cookie |))
335+ ==
336+::
337+++ test-labels
338+ ;: weld
339+ (expect-eq !>("Install on ~sampel-palnet") !>((install-label 'https://sampel-palnet.tlon.network')))
340+ (expect-eq !>("Install on your ship") !>((install-label 'http://localhost:8080')))
341+ (expect-eq !>("~sampel-palnet") !>((ship-name 'https://sampel-palnet.tlon.network')))
342+ (expect-eq !>("localhost:8080") !>((ship-name 'http://localhost:8080')))
343+ (expect-eq !>("|install ~zod %harbor") !>((install-cmd ~zod %harbor)))
344+ %+ expect-eq
345+ !>("https://a.b/apps/landscape/search/direct/apps/~zod/harbor")
346+ !>((deep-link 'https://a.b' ~zod %harbor))
347+ ==
348+::
349+++ test-header-all
350+ =/ hs=header-list:http
351+ ~[['accept' 'text/html;q=0.1'] ['Host' 'a.b'] ['Accept' 'application/json']]
352+ ;: weld
353+ %+ expect-eq !>(`(unit @t)``'text/html;q=0.1, application/json')
354+ !>((header-all 'accept' hs))
355+ ::
356+ (expect-eq !>(`(unit @t)`~) !>((header-all 'cookie' hs)))
357+ (expect !>((wants-json (header-all 'accept' hs))))
358+ ==
359+::
360+++ test-form-args
361+ ;: weld
362+ %+ expect-eq
363+ !>((malt ~[['install' 'harbor'] ['host' '~zod'] ['url' 'a b:8080/']]))
364+ !>((form-args `(as-octs:mimes:html 'install=harbor&host=%7Ezod&url=a+b%3A8080%2F')))
365+ ::
366+ (expect-eq !>(*(map @t @t)) !>((form-args ~)))
367+ (expect-eq !>(*(map @t @t)) !>((form-args `(as-octs:mimes:html 'x=a@b'))))
368+ ==
369+::
370+++ test-is-secure
371+ ;: weld
372+ (expect-eq !>(&) !>((is-secure & ~)))
373+ (expect-eq !>(|) !>((is-secure | ~)))
374+ (expect-eq !>(&) !>((is-secure | ~[['x-forwarded-proto' 'https']])))
375+ (expect-eq !>(&) !>((is-secure | ~[['X-Forwarded-Proto' ' HTTPS, http']])))
376+ (expect-eq !>(|) !>((is-secure | ~[['x-forwarded-proto' 'http']])))
377+ ==
378+::
379+++ test-same-origin
380+ ;: weld
381+ (expect-eq !>(&) !>((same-origin ~[['sec-fetch-site' 'same-origin']])))
382+ %+ expect-eq !>(|)
383+ !>((same-origin ~[['sec-fetch-site' 'cross-site'] ['host' 'a.b'] ['referer' 'https://a.b/']]))
384+ ::
385+ %+ expect-eq !>(&)
386+ !>((same-origin ~[['host' 'Apps.Example.com'] ['referer' 'https://apps.example.com/?install=x']]))
387+ ::
388+ %+ expect-eq !>(|)
389+ !>((same-origin ~[['host' 'apps.example.com'] ['referer' 'https://evil.com/apps.example.com']]))
390+ ::
391+ %+ expect-eq !>(|)
392+ !>((same-origin ~[['host' 'apps.example.com:8443'] ['referer' 'https://apps.example.com/']]))
393+ ::
394+ (expect-eq !>(|) !>((same-origin ~)))
395+ %+ expect-eq !>(&)
396+ !>((same-origin ~[['host' 'apps.example.com'] ['origin' 'https://apps.example.com']]))
397+ ::
398+ %+ expect-eq !>(|)
399+ !>((same-origin ~[['host' 'apps.example.com'] ['origin' 'null'] ['referer' 'https://apps.example.com/']]))
400+ ::
401+ %+ expect-eq !>(|)
402+ !>((same-origin ~[['host' 'apps.example.com'] ['origin' 'https://evil.example']]))
403+ ==
404+::
405+++ test-wants-json
406+ ;: weld
407+ (expect-eq !>(|) !>((wants-json ~)))
408+ (expect-eq !>(&) !>((wants-json `'application/json')))
409+ (expect-eq !>(&) !>((wants-json `'Application/JSON; charset=utf-8')))
410+ (expect-eq !>(&) !>((wants-json `'application/json, text/plain, */*')))
411+ (expect-eq !>(&) !>((wants-json `'application/*')))
412+ (expect-eq !>(&) !>((wants-json `'text/html;q=0.5, application/json;q=0.9')))
413+ %+ expect-eq !>(|)
414+ !>((wants-json `'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'))
415+ ::
416+ (expect-eq !>(|) !>((wants-json `'*/*')))
417+ (expect-eq !>(|) !>((wants-json `'')))
418+ (expect-eq !>(|) !>((wants-json `'text/html, application/json')))
419+ (expect-eq !>(|) !>((wants-json `'application/json;q=0, */*')))
420+ (expect-eq !>(|) !>((wants-json `'*/*;q=0.5, application/json;q=0.4')))
421+ (expect-eq !>(|) !>((wants-json `'text/*')))
422+ ==
423+::
424+++ test-parse-q
425+ ;: weld
426+ (expect-eq !>(1.000) !>((parse-q "1")))
427+ (expect-eq !>(1.000) !>((parse-q "1.0")))
428+ (expect-eq !>(1.000) !>((parse-q "2")))
429+ (expect-eq !>(800) !>((parse-q "0.8")))
430+ (expect-eq !>(850) !>((parse-q "0.85")))
431+ (expect-eq !>(855) !>((parse-q "0.8555")))
432+ (expect-eq !>(0) !>((parse-q "0")))
433+ (expect-eq !>(0) !>((parse-q ".5")))
434+ (expect-eq !>(0) !>((parse-q "abc")))
435+ (expect-eq !>(0) !>((parse-q "")))
436+ ==
437+::
438+++ test-colors
439+ ;: weld
440+ (expect-eq !>("#24466f") !>((hex-color 0x24.466f)))
441+ (expect-eq !>("#000000") !>((hex-color 0x0)))
442+ (expect-eq !>("#ef0123") !>((hex-color 0xab.cdef.0123)))
443+ :: every sample tile from the design mock
444+ (expect-eq !>("#151514") !>((tile-ink 0xe6.dac6)))
445+ (expect-eq !>("#151514") !>((tile-ink 0x86.bbb2)))
446+ (expect-eq !>("#ffffff") !>((tile-ink 0x24.466f)))
447+ (expect-eq !>("#151514") !>((tile-ink 0xf2.c14e)))
448+ (expect-eq !>("#ffffff") !>((tile-ink 0x1f.3b30)))
449+ (expect-eq !>("#ffffff") !>((tile-ink 0x3d.3934)))
450+ (expect-eq !>("#151514") !>((tile-ink 0xc8.b9ee)))
451+ (expect-eq !>("#151514") !>((tile-ink 0xe9.a3a9)))
452+ (expect-eq !>("#ffffff") !>((tile-ink 0xd6.503c)))
453+ ==
454+::
455+++ test-text
456+ ;: weld
457+ (expect-eq !>("1.2.0") !>((version-tape [1 2 0])))
458+ (expect-eq !>("harbor-zod") !>((anchor ~zod %harbor)))
459+ (expect-eq !>("quill-sampel-palnet") !>((anchor ~sampel-palnet %quill)))
460+ (expect-eq !>("H") !>((initial 'Harbor')))
461+ (expect-eq !>("Å") !>((initial 'Ångström')))
462+ (expect-eq !>("") !>((initial '')))
463+ (expect-eq !>("A") !>((initial 'A\09B')))
464+ (expect-eq !>("") !>((initial '\09AB')))
465+ (expect-eq !>("") !>((initial `@t`0x61ff)))
466+ (expect-eq !>("日") !>((initial '日本')))
467+ (expect-eq !>("🎉") !>((initial '🎉 party')))
468+ (expect-eq !>(~["a" "" "b"]) !>((split "a,,b" ',')))
469+ (expect-eq !>("a b") !>((strip " a b\09 ")))
470+ ==
471+--
desk/web/copy.jsnew file+17
@@ -0,0 +1,17 @@
1+// %shelf — the page's only script. Reveals Copy buttons (rendered `hidden`
2+// so they never appear without JS) and copies their data-copy text.
3+document.querySelectorAll('button[data-copy]').forEach((btn) => {
4+ if (!navigator.clipboard) return; // needs a secure context (https)
5+ btn.hidden = false;
6+ const label = btn.textContent;
7+ btn.addEventListener('click', async () => {
8+ try {
9+ await navigator.clipboard.writeText(btn.dataset.copy);
10+ } catch (e) {
11+ return;
12+ }
13+ btn.textContent = 'Copied';
14+ clearTimeout(btn._t);
15+ btn._t = setTimeout(() => { btn.textContent = label; }, 1400);
16+ });
17+});
desk/web/shelf.cssnew file+143
@@ -0,0 +1,143 @@
1+/* %shelf — public app listing. Matches design/Urbit Apps.dc.html. */
2+:root {
3+ --bg: #fafaf8;
4+ --surface: #ffffff;
5+ --field: #f0efeb;
6+ --ink: #151514;
7+ --muted: #67665f;
8+ --line: #e3e2dd;
9+ --accent: #e8801f;
10+ --accent-hover: #f29233;
11+ --on-accent: #151514;
12+ --cols: 168px minmax(104px, 1fr) minmax(0, 2.6fr) 64px 84px minmax(96px, max-content);
13+ color-scheme: light dark;
14+}
15+@media (prefers-color-scheme: dark) {
16+ :root {
17+ --bg: #121211;
18+ --surface: #1b1b1a;
19+ --field: #222220;
20+ --ink: #efeee9;
21+ --muted: #9d9c95;
22+ --line: #2c2c2a;
23+ }
24+}
25+
26+*, *::before, *::after { box-sizing: border-box; }
27+[hidden] { display: none !important; }
28+html { -webkit-text-size-adjust: 100%; }
29+body {
30+ margin: 0;
31+ background: var(--bg);
32+ color: var(--ink);
33+ font: 15px/1.45 "Helvetica Neue", Helvetica, "Nimbus Sans", "Liberation Sans", Arial, sans-serif;
34+ -webkit-font-smoothing: antialiased;
35+}
36+a { color: inherit; text-decoration: none; }
37+a:hover { color: var(--accent); }
38+:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
39+code { font: inherit; overflow-wrap: anywhere; }
40+
41+.page { max-width: 1280px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px) 120px; }
42+
43+/* Masthead */
44+.masthead { display: flex; align-items: center; gap: 20px; min-width: 0; padding: 44px 0 48px; }
45+.masthead > div:last-child { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
46+.sigil { flex: none; width: 56px; height: 56px; overflow: hidden; background: var(--ink); color: var(--bg); }
47+.sigil svg { display: block; width: 100%; height: 100%; }
48+.masthead h1 { margin: 0; font-size: 28px; line-height: 1.1; font-weight: 600; letter-spacing: -0.02em; }
49+.masthead p { margin: 0; color: var(--muted); text-wrap: pretty; }
50+.masthead p a { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
51+.masthead p a.change { color: var(--muted); }
52+.masthead p a:hover { color: var(--accent); }
53+
54+/* Table */
55+/* One grid for the whole table: the head and every row are subgrids, so the
56+ max-content Install column fits the widest button in any row. Without
57+ subgrid support, each row falls back to its own grid. */
58+.apps { display: grid; grid-template-columns: var(--cols); column-gap: 24px; }
59+.apps > * { grid-column: 1 / -1; }
60+.app { display: grid; grid-template-columns: subgrid; }
61+.apps-head, .app-row { display: grid; grid-column: 1 / -1; grid-template-columns: var(--cols); grid-template-columns: subgrid; column-gap: 24px; }
62+.panel-wrap { grid-column: 1 / -1; }
63+.apps-head { align-items: end; padding: 0 0 10px; border-bottom: 1px solid var(--ink); font-weight: 500; color: var(--muted); }
64+.apps-head .count { text-align: right; }
65+.app { border-bottom: 1px solid var(--line); scroll-margin-top: 24px; }
66+.app-row { align-items: center; transition: background-color .15s; }
67+.app-row:hover, .app-row:focus-within { background: var(--field); }
68+
69+.tile { align-self: stretch; min-height: 112px; display: flex; align-items: center; justify-content: center; background: var(--tile); color: var(--tile-ink); }
70+.tile img { display: block; width: 64px; height: 64px; object-fit: cover; }
71+.tile .initial { font-weight: 600; }
72+
73+.app-name { display: flex; flex-direction: column; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
74+.app-name strong { font-weight: 600; }
75+.app-by { color: var(--muted); }
76+
77+.app-desc { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 20px 0; }
78+.app-info { color: var(--muted); text-wrap: pretty; overflow-wrap: anywhere; }
79+.cmd { display: flex; flex-wrap: wrap; gap: 2px 16px; opacity: 0; transition: opacity .15s; }
80+.app-row:hover .cmd, .app-row:focus-within .cmd { opacity: 1; }
81+@media (hover: none) { .cmd { opacity: 1; } }
82+
83+.version { font-variant-numeric: tabular-nums; }
84+.install-cell { display: flex; justify-content: flex-end; }
85+
86+/* Buttons */
87+.btn { display: inline-flex; align-items: center; justify-content: center; height: 36px; padding: 0 18px; border: 0; border-radius: 0; background: var(--accent); color: var(--on-accent); font: inherit; font-weight: 600; white-space: nowrap; cursor: pointer; }
88+.btn:hover { background: var(--accent-hover); color: var(--on-accent); }
89+.btn-outline { background: none; border: 1px solid var(--ink); color: var(--ink); }
90+.btn-outline:hover { background: none; color: var(--ink); }
91+.btn-lg { flex: none; height: 40px; padding: 0 16px; }
92+.copy { padding: 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
93+
94+/* Install panel */
95+.panel-wrap { display: grid; grid-template-columns: 168px minmax(0, 1fr); column-gap: 24px; }
96+.tile-ext { background: var(--tile); }
97+.panel { display: flex; flex-wrap: wrap; gap: 24px 48px; align-items: flex-start; margin: 0 0 24px; padding: 24px; background: var(--field); }
98+.panel-col { flex: 1 1 380px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
99+.panel-col.dojo-col { flex-basis: 300px; }
100+.panel label, .panel .label { font-weight: 600; }
101+.field-row { display: flex; gap: 8px; }
102+.field-row input { flex: 1; min-width: 0; height: 40px; padding: 0 12px; border: 1px solid var(--ink); border-radius: 0; background: var(--surface); color: inherit; font: inherit; }
103+.field-row input::placeholder { color: inherit; opacity: .45; }
104+.hint { color: var(--muted); }
105+.error { color: var(--ink); font-weight: 600; }
106+.dojo { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 8px 12px; border: 1px solid var(--line); background: var(--surface); }
107+.dojo .copy { flex: none; }
108+
109+/* Empty alliance */
110+.empty { margin: 0; padding: 16px 0 0; border-top: 1px solid var(--ink); color: var(--muted); }
111+
112+/* Narrow screens — not part of the mock; suggested fallback. A saved ship
113+ makes the Install buttons wider, so with one this layout starts earlier. */
114+@media (max-width: 860px) {
115+ .apps, .app { display: block; }
116+ .apps-head { display: none; }
117+ .app-row { grid-template-columns: 96px minmax(0, 1fr); column-gap: 16px; align-items: start; }
118+ .app-row > :not(.tile) { grid-column: 2; }
119+ .tile { grid-row: 1 / span 5; min-height: 96px; }
120+ .tile img { width: 48px; height: 48px; }
121+ .app-name { padding-top: 16px; }
122+ .app-desc { padding: 4px 0 8px; }
123+ .install-cell { justify-content: flex-start; padding: 8px 0 16px; }
124+ .panel-wrap { grid-template-columns: 96px minmax(0, 1fr); column-gap: 16px; }
125+ .field-row { flex-wrap: wrap; }
126+ .field-row input { flex-basis: 100%; }
127+ .install-cell .btn { height: auto; min-height: 36px; padding-block: 7px; white-space: normal; text-align: center; }
128+}
129+@media (max-width: 1040px) {
130+ .saved .apps, .saved .app { display: block; }
131+ .saved .apps-head { display: none; }
132+ .saved .app-row { grid-template-columns: 96px minmax(0, 1fr); column-gap: 16px; align-items: start; }
133+ .saved .app-row > :not(.tile) { grid-column: 2; }
134+ .saved .tile { grid-row: 1 / span 5; min-height: 96px; }
135+ .saved .tile img { width: 48px; height: 48px; }
136+ .saved .app-name { padding-top: 16px; }
137+ .saved .app-desc { padding: 4px 0 8px; }
138+ .saved .install-cell { justify-content: flex-start; padding: 8px 0 16px; }
139+ .saved .panel-wrap { grid-template-columns: 96px minmax(0, 1fr); column-gap: 16px; }
140+ .saved .field-row { flex-wrap: wrap; }
141+ .saved .field-row input { flex-basis: 100%; }
142+ .saved .install-cell .btn { height: auto; min-height: 36px; padding-block: 7px; white-space: normal; text-align: center; }
143+}