@papit/server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # @papit/server
2
+
3
+ A simple but powerful development server for modern JavaScript/TypeScript projects.
4
+
5
+ ![Logo](https://raw.githubusercontent.com/onkelhoy/papit/refs/heads/main/asset/logo.svg)
6
+
7
+ `@papit/server` can serve your **local assets, package files, dependency assets**, and automatically handle **live updates, bundling, and caching**. It’s ideal for developers who want a **fast, flexible dev environment** with **asset localization, HTML/JS bundling, import maps, and dependency-aware serving**.
8
+
9
+ **Key features:**
10
+
11
+ - πŸ“¦ Serves local project files and assets
12
+ - 🌐 Handles package and dependency assets automatically
13
+ - ⚑ Supports live-reload updates for JavaScript/TypeScript
14
+ - πŸ—‚ Efficient caching mechanism for files, HTML, and bundles
15
+ - πŸ–Ό Automatic handling of images, fonts, audio, video, and other binary assets
16
+ - πŸ›  Dev-friendly HTTP error handling (`404`, `500`, `405`)
17
+ - πŸ”Œ Optional bundling via `@papit/build` for `.ts`/`.tsx` files
18
+ - 🧩 Importmap support for module resolution across packages
19
+
20
+ ---
21
+
22
+ ![Type](https://img.shields.io/badge/Type-network-orange)
23
+ [![Tests](https://github.com/onkelhoy/papit/actions/workflows/pull-request.yml/badge.svg)](https://github.com/onkelhoy/papit/actions/workflows/pull-request.yml)
24
+ [![NPM version](https://img.shields.io/npm/v/@papit/server.svg?logo=npm)](https://www.npmjs.com/package/@papit/server)
25
+
26
+ ---
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ npm install @papit/server
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Usage
37
+
38
+ Basic usage:
39
+
40
+ ```bash
41
+ npx @papit/server
42
+ ```
43
+
44
+ - Starts a dev server on the default port `3000` (or the port specified with `--port`)
45
+ - Serves your project assets, HTML, and bundled JavaScript/TypeScript
46
+ - Supports **live reload** for client updates
47
+ - Automatically handles caching and streaming for large assets
48
+
49
+ ---
50
+
51
+ ## Flags & Configuration
52
+
53
+ All runtime flags are centralized here for easy reference. Flags can be passed via CLI or environment variables.
54
+
55
+ | Flag | Type | Default | Description |
56
+ | ---------------- | --------------- | ----------------------------- | ------------------------------------- |
57
+ | `--port` | number | 3000 | Set the server port |
58
+ | `--live` | boolean | false | Enable live updates (hot reload) |
59
+ | `--no-bundle` | boolean | false | Skip bundling of JS/TS files |
60
+ | `--asset` | string or array | `["asset","assets","public"]` | Custom asset folder(s) to serve |
61
+ | `--cache-file` | number (MB) | 50 | Max cache size for individual files |
62
+ | `--cache-html` | number (MB) | 50 | Max cache size for HTML files |
63
+ | `--cache-bundle` | number (MB) | 150 | Max cache size for bundled JS files |
64
+ | `--verbose` | boolean | false | Enable verbose logging |
65
+ | `--info` | boolean | false | Show info logs |
66
+ | `--error` | boolean | false | Show error traces |
67
+ | `--silent` | boolean | false | Suppress console output |
68
+ | `--no-cache` | boolean | false | Disable caching entirely |
69
+ | `--location` | string | - | Override project root location |
70
+ | `--mode` | string | "dev" | Server mode (`dev`/`prod`) |
71
+ | `--buildMode` | string | "ancestors" | Build mode (`ancestors`/`workspaces`) |
72
+
73
+ > **Note:** Some flags (like `--prod`, `--watch`, `--callback`) are inherited from [@papit/build](https://github.com/onkelhoy/papit/tree/main/packages/runtime/build/README.md). Please check the build README for advanced options.
74
+
75
+ ---
76
+
77
+ ## Contributing
78
+
79
+ Contributions are welcome! Please follow the development guidelines and ensure all tests pass before submitting a pull request.
80
+
81
+ ---
82
+
83
+ ## License
84
+
85
+ Licensed under the **@Papit License 1.0** – Copyright (c) 2024 Henry Pap (@onkelhoy)
86
+
87
+ **Key points:**
88
+
89
+ - βœ… Free to use in commercial projects
90
+ - βœ… Free to modify and distribute
91
+ - βœ… Attribution required
92
+ - ❌ Cannot resell the component itself as a standalone product
93
+
94
+ See the [LICENSE](https://github.com/onkelhoy/papit/blob/main/LICENSE) file for full details.
95
+
96
+ ---
97
+
98
+ ## Support
99
+
100
+ For issues, questions, or contributions, visit the [GitHub repository](https://github.com/onkelhoy/papit).
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="141.73px" height="141.73px" viewBox="0 0 141.73 141.73" enable-background="new 0 0 141.73 141.73" xml:space="preserve">
6
+ <g id="Layer_1" display="none">
7
+ <path display="inline" fill="#EFA527" d="M45.369,15.026c0,0-25.006,6.408-34.512,21.895c-2.378,3.096-19.755,33.56-3.094,65.689
8
+ c7.14,10.71,16.421,24.957,46.65,26.401c24.039,0.73,65.212,3.35,78.066-17.598c4.283-6.66,18.323-29.988-2.383-64.261
9
+ C119.148,33.115,96.537,2.888,45.369,15.026z"/>
10
+ <path display="inline" fill="none" stroke="#4D1A15" stroke-miterlimit="10" d="M69.957,101.203c0-2.103,1.782-3.885,3.884-3.885
11
+ h1.713c2.102,0,3.884,1.782,3.884,3.885v1.896c0,2.102-1.782,3.883-3.884,3.883h-1.713c-1.028,0-2.01-0.411-2.741-1.143
12
+ l-0.526-0.525v5.985c0,0.16-0.137,0.298-0.32,0.298c-0.16,0-0.297-0.138-0.297-0.298V101.203z M70.574,103.167
13
+ c0,1.759,1.553,3.197,3.267,3.197h1.713c1.782,0,3.268-1.484,3.268-3.266v-1.896c0-1.783-1.485-3.268-3.268-3.268h-1.713
14
+ c-1.782,0-3.267,1.484-3.267,3.268v1.323V103.167z"/>
15
+ <path display="inline" fill="none" stroke="#4D1A15" stroke-miterlimit="10" d="M87.138,97.318c2.124,0,3.975,1.76,3.975,3.952
16
+ v1.759c0,2.193-1.851,3.952-3.975,3.952h-2.536c-1.713,0-3.083-1.37-3.083-3.083c0-1.691,1.37-3.062,3.083-3.062h5.871
17
+ l-0.092-0.365c-0.365-1.463-1.736-2.536-3.243-2.536h-4.044c-0.16,0-0.297-0.137-0.297-0.297c0-0.184,0.137-0.32,0.297-0.32h0.298
18
+ H87.138z M87.138,106.364c1.851,0,3.335-1.553,3.335-3.335v-1.576h-5.871c-1.371,0-2.467,1.098-2.467,2.445
19
+ c0,1.37,1.096,2.466,2.467,2.466h1.371H87.138z"/>
20
+ <path display="inline" fill="none" stroke="#4D1A15" stroke-miterlimit="10" d="M93.239,101.203c0-2.103,1.781-3.885,3.883-3.885
21
+ h1.714c2.102,0,3.883,1.782,3.883,3.885v1.896c0,2.102-1.781,3.883-3.883,3.883h-1.714c-1.028,0-2.01-0.411-2.74-1.143
22
+ l-0.525-0.525v5.985c0,0.16-0.138,0.298-0.321,0.298c-0.159,0-0.296-0.138-0.296-0.298V101.203z M93.856,103.167
23
+ c0,1.759,1.553,3.197,3.266,3.197h1.714c1.782,0,3.267-1.484,3.267-3.266v-1.896c0-1.783-1.484-3.268-3.267-3.268h-1.714
24
+ c-1.781,0-3.266,1.484-3.266,3.268v1.323V103.167z"/>
25
+ <path display="inline" fill="none" stroke="#4D1A15" stroke-miterlimit="10" d="M107.874,106.685c0,0.16-0.137,0.297-0.32,0.297
26
+ c-0.159,0-0.297-0.137-0.297-0.297V94.509c0-0.159,0.138-0.297,0.297-0.297c0.184,0,0.32,0.138,0.32,0.297V106.685z"/>
27
+ <path display="inline" fill="none" stroke="#4D1A15" stroke-miterlimit="10" d="M116.897,106.685c0,0.16-0.137,0.297-0.296,0.297
28
+ c-0.183,0-0.32-0.137-0.32-0.297V94.829h-4.957c-0.16,0-0.297-0.137-0.297-0.32c0-0.159,0.137-0.297,0.297-0.297h10.53
29
+ c0.161,0,0.298,0.138,0.298,0.297c0,0.184-0.137,0.32-0.298,0.32h-4.957V106.685z"/>
30
+ </g>
31
+ <g id="Layer_2">
32
+ <path fill="#EFA527" d="M45.369,15.026c0,0-25.006,6.408-34.512,21.895c-2.378,3.096-19.755,33.56-3.094,65.689
33
+ c7.14,10.71,16.421,24.957,46.65,26.401c24.039,0.73,65.212,3.35,78.066-17.598c4.283-6.66,18.323-29.988-2.383-64.261
34
+ C119.148,33.115,96.537,2.888,45.369,15.026z"/>
35
+ <rect x="51.91" y="90.05" fill="#4D1A15" width="39.834" height="23.141"/>
36
+ <rect x="94.57" y="73.16" fill="#4D1A15" width="23.141" height="39.834"/>
37
+ </g>
38
+ </svg>
@@ -0,0 +1,17 @@
1
+ /* TEAM */
2
+ Developer: Henry Pap
3
+ Role: Architect / Engineer
4
+ Location: Sweden
5
+
6
+ Designer: Phuong Dao
7
+ Role: Design / UX / Creative Direction
8
+ Location: Sweden
9
+
10
+ /* THANKS */
11
+ Inspired by open-source communities
12
+ Built with curiosity, care, and stubbornness
13
+
14
+ /* SITE */
15
+ Standards: HTML, CSS, JavaScript
16
+ Language: English
17
+ Tools: Custom tooling, modern web standards
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"><symbol id="svg" viewBox="0 0 256 320"><path d="M32 0 H176 L256 80 V288 C256 305.7 241.7 320 224 320 H32 C14.3 320 0 305.7 0 288 V32 C0 14.3 14.3 0 32 0 Z" fill="#FF7A00" /><path d="M176 0 V64 C176 72.8 183.2 80 192 80 H256 Z" fill="#ffc69a" /><text x="128" y="210" text-anchor="middle" font-size="96" font-family="Arial, Helvetica, sans-serif" font-weight="700" fill="#FFFFFF">SVG</text></symbol><symbol id="file" viewBox="0 0 32 32"><title>file</title><path d="M20.414,2H5V30H27V8.586ZM7,28V4H19v6h6V28Z" style="fill:#c5c5c5" /></symbol><symbol id="folder" viewBox="0 0 32 32"><title>folder</title><path d="M27.5,5.5H18.2L16.1,9.7H4.4V26.5H29.6V5.5Zm0,4.2H19.3l1.1-2.1h7.1Z" style="fill:#c09553" /></symbol><symbol id="ai" viewBox="0 0 32 32"><title>ai</title><path d="M3.169,3.517H28.835V28.483H3.169Z" style="fill:#1c0a00" /><path d="M3.169,3.517H28.835V28.483H3.169ZM2,29.65H30V2.35H2Zm18.34-17.57c0-.093.035-.14.14-.14h1.832c.093,0,.14.035.14.14v9.205c0,.093-.023.14-.14.14H20.505c-.117,0-.152-.058-.152-.152V12.08h-.012Zm-.128-2.648a1.19,1.19,0,0,1,2.38,0,1.115,1.115,0,0,1-1.213,1.19A1.1,1.1,0,0,1,20.214,9.432Zm-5.25,6.487c-.327-1.3-1.1-4.118-1.388-5.483h-.023c-.245,1.365-.863,3.675-1.353,5.483Zm-3.243,1.89-.922,3.5c-.023.093-.058.117-.175.117H8.909c-.117,0-.14-.035-.117-.175l3.313-11.6a3.779,3.779,0,0,0,.117-.968c0-.082.035-.117.093-.117h2.45c.082,0,.117.023.14.117l3.71,12.588c.023.093,0,.152-.093.152H16.585c-.093,0-.152-.023-.175-.1l-.957-3.512H11.72Z" style="fill:#ff7f18" /></symbol><symbol id="ai2" viewBox="0 0 32 32"><title>ai2</title><path d="M24.037,2.072h0l5.564,5.8V29.928H8.814V30H29.67V7.945L24.037,2.072" style="fill:#909090" /><path d="M23.965,2H8.742V29.928H29.6V7.873L23.965,2" style="fill:#231612" /><path d="M23.893,2.072V7.946h5.633L23.893,2.072" style="fill:#4c4442" /><path d="M23.965,2V7.873H29.6L23.965,2Z" style="fill:#f36617" /><path d="M2.384,10.264H8.743V3.432H2.384v6.832Z" style="fill:#909090" /><path d="M8.743,10.264H22.461V3.432H8.743v6.832Z" style="fill:#4c4442" /><path d="M22.407,10.211H2.33V3.379H22.407v6.832" style="fill:#f36617" /><path d="M18.1,20.619c-.275-1.07-.948-3.226-1.223-4.344h-.014c-.206,1.054-.769,2.859-1.181,4.344H18.1Zm-2.775,1.566-.838,2.779c-.014.1-.055.128-.137.128h-1.4c-.1,0-.124-.048-.1-.16.742-2.444,1.992-6.516,2.871-9.279a3.686,3.686,0,0,0,.11-.878.086.086,0,0,1,.082-.1h1.9c.069,0,.082.016.11.08,1.016,3.274,2.129,6.884,3.173,10.19q.041.144-.082.144H19.472c-.069,0-.1-.032-.124-.1l-.879-2.811H15.323" style="fill:#f46c25" /><path d="M22.29,17.547c0-.1.027-.128.094-.128h1.431c.081,0,.108.016.108.128v7.506c0,.08-.027.128-.108.128h-1.4c-.081,0-.121-.032-.121-.144v-7.49ZM22.2,15.374a.918.918,0,0,1,.918-.99.884.884,0,0,1,.891.99.908.908,0,1,1-1.809,0" style="fill:#f46c25" /><path d="M11.238,5.279h-.013L10.9,7.352h.652ZM9.5,9.3,10.56,4.44h1.355L12.948,9.3H11.81l-.15-1.133h-.882L10.634,9.3H9.5" style="fill:#231612" /><path d="M13.438,9.3V4.44h1.086V9.3H13.438" style="fill:#231612" /></symbol><symbol id="astro" viewBox="0 0 32 32"><title>astro</title><path fill="url(#a)" d="M11.025 20.499c-.532 1.75-.154 4.184 1.105 5.331v-.042l.042-.112c.154-.741.756-1.203 1.526-1.175.713.014 1.12.392 1.217 1.217.042.308.042.616.056.938v.098c0 .7.196 1.371.588 1.959.35.56.84.993 1.497 1.287l-.028-.056-.028-.112c-.49-1.469-.14-2.49 1.147-3.358l.392-.266.868-.573a4.254 4.254 0 0 0 1.791-3.037c.07-.532 0-1.05-.154-1.553l-.21.14c-1.945 1.035-4.17 1.4-6.325.98-1.301-.197-2.56-.56-3.498-1.652z" /><path fill="#fff" d="M4.925 20.191s3.736-1.82 7.486-1.82l2.84-8.759c.098-.42.406-.7.756-.7s.644.28.756.714l2.826 8.746c4.45 0 7.487 1.82 7.487 1.82L20.709 2.84c-.168-.518-.49-.84-.896-.84h-7.612c-.406 0-.7.322-.896.84z" /><defs><linearGradient id="a" x1="8.19" x2="16.91" y1="23" y2="18.89" gradientTransform="translate(-.673 -2.198) scale(1.3993)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#D83333" /><stop offset="1" stop-color="#F041FF" /></linearGradient></defs></symbol><symbol id="babel" viewBox="0 0 32 32"><title>babel</title><path d="M13.016,4.025A26.109,26.109,0,0,1,10.17,5.82V6a.762.762,0,0,0,.281-.11c.123,0,.2.037.2.158l.2-.11h.1v.086A10.967,10.967,0,0,1,8.95,7.58l.11.171h-.1l-.209-.072c0,.062-.086.1-.281.11v.1l.219.243A.781.781,0,0,1,8.4,8.069a1.9,1.9,0,0,0-1.271.942l.11.171a2.611,2.611,0,0,1,.634-.5l.024.267a.851.851,0,0,0-.281.11l.233.342A6.837,6.837,0,0,1,9.3,8.192c.267.072.4.147.4.243h.2a15.493,15.493,0,0,1,4.25-2.3v.185c-.267.391-.439.586-.535.6a.741.741,0,0,0,.134.353,32.729,32.729,0,0,1-1.9,4.815,136.039,136.039,0,0,1-7.364,15.34.725.725,0,0,0,.11.267,2.557,2.557,0,0,0,.942-.353h.11v.185h.185l.206-.142c0,.062.072.086.2.072v.185a1.642,1.642,0,0,1-.318.843,4.395,4.395,0,0,0-.647,1.428V30h.185a11.737,11.737,0,0,0,1.819-2.627,29.214,29.214,0,0,0,5.35-2.017,5.013,5.013,0,0,0,2.822-.966v-.1l-.465.134h-.11v-.1a4.237,4.237,0,0,0,1.872-.61c1.771-1.367,3.1-2.332,4.012-2.908,2.8-2.052,4.117-4.031,3.959-5.911a11.058,11.058,0,0,0-1.846-2.308c-.024-.267.4-.623,1.257-1.113l2.431-2.14a6.315,6.315,0,0,0,.976-3.37L27.484,5.6c-.1-1.086-.88-1.966-2.37-2.637a9.2,9.2,0,0,0-4.721-.942,28.928,28.928,0,0,0-7.366,2Zm2.14,7.682c.185-1,.391-1.575.623-1.709L17.807,5.45c-.024-.281.4-.5,1.295-.647l.294-.024.024.267c.88-.134,1.418-.209,1.624-.233,1.6-.134,2.442.185,2.517.976h.185l-.037-.465h.2a1.217,1.217,0,0,1,.757.952,1.426,1.426,0,0,1-.415.952c-.123,0-.2-.072-.209-.267h-.2l-.048.551c-.818,1.222-1.4,1.846-1.771,1.872q-.495.677-.623.7a11.181,11.181,0,0,1-2.1,1.565,27.388,27.388,0,0,0-4.216,1.637.7.7,0,0,0-.391-.062V13.05a2.263,2.263,0,0,1,.476-1.337Zm-6.6-3.443V8.35a.851.851,0,0,0-.281.11h-.1V8.288Zm5.879-.136.024.267c-.086,0-.209.134-.353.391V8.6a.907.907,0,0,0,.267-.476Zm-.9,1.9.037.366h-.1l-.029-.364Zm-.233.661c-.024.3-.1.465-.267.476h-.1a.934.934,0,0,0,.158-.465Zm-.4.952v.086l-.171.294h-.185V11.94a.243.243,0,0,0,.267-.294h.088Zm-.415.856-.048.452h-.1l-.037-.452Zm2.14,1.367v.171l-.38.037v-.171ZM12.81,16.481A21.476,21.476,0,0,0,18,14.943l.575-.048a3.325,3.325,0,0,1,2.675.685l.037.366c-.439,1.271-.928,2-1.452,2.236l-2.442,1.942a23.881,23.881,0,0,1-2.942,1.808,21.859,21.859,0,0,1-5.4,2.48h-.11c.1-.342,1.38-2.98,3.873-7.942Zm2.637-1.038v.086l-.391.037v-.086Zm-6.083,5.9c-.123.623-.267.942-.391.952v-.086a1.041,1.041,0,0,1,.4-.867Zm2.442,3.445a31.3,31.3,0,0,0,5.839-3.055v.171c0,.072-.267.3-.818.709a14.845,14.845,0,0,0-2.859,1.624c-1.76.61-2.627.99-2.613,1.137a29.423,29.423,0,0,0-3.079,1.356,1.126,1.126,0,0,1-.5-.134.8.8,0,0,1,.428-.781,1.554,1.554,0,0,1,.781.123,7.543,7.543,0,0,1,1.514-.489v-.185l-.575.048a8.223,8.223,0,0,1,1.674-.781l.294-.024V24.6c-.489.037-.77.2-.832.452a.16.16,0,0,0,.2.158,2.362,2.362,0,0,0,.535-.415Zm-3-2.22v.086a.171.171,0,0,1-.171.209v-.086a.182.182,0,0,1,.153-.207Zm4.569,1.246a4.336,4.336,0,0,0-1.308.575h-.1v-.185a1.854,1.854,0,0,0,1.2-.551.183.183,0,0,1,.209.169ZM8.624,25.145l.294-.024v.1a.762.762,0,0,0-.281.11H8.453A.212.212,0,0,1,8.624,25.145Z" style="fill:#f4d44b" /></symbol><symbol id="bat" viewBox="0 0 32 32"><defs><radialGradient id="a" cx="22.737" cy="22.737" r="3.628" gradientTransform="translate(-4.708 41.626) rotate(-81.5) scale(1 1.071)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#bedcdc" /><stop offset="0.5" stop-color="#8e9e9e" stop-opacity="0.74" /><stop offset="1" stop-color="#404f5c" stop-opacity="0.84" /></radialGradient><radialGradient id="b" cx="11.336" cy="11.336" r="5.201" gradientTransform="translate(-2.347 20.753) rotate(-81.5) scale(1 1.071)" xlink:href="#a" /></defs><title>bat</title><polygon points="24.811 27.318 27.215 24.914 28.417 27.318 27.215 28.52 24.811 27.318" style="fill:silver" /><polygon points="20.964 27.443 24.365 27.443 23.515 29.993 21.815 29.993 20.964 27.443" style="fill:silver" /><polygon points="18.157 24.811 20.561 27.215 18.157 28.417 16.954 27.215 18.157 24.811" style="fill:silver" /><polygon points="18.032 20.964 18.032 24.365 15.482 23.515 15.482 21.815 18.032 20.964" style="fill:silver" /><polygon points="20.664 18.157 18.26 20.561 17.058 18.157 18.26 16.954 20.664 18.157" style="fill:silver" /><polygon points="24.51 18.032 21.11 18.032 21.96 15.482 23.66 15.482 24.51 18.032" style="fill:silver" /><polygon points="27.318 20.664 24.914 18.26 27.318 17.058 28.52 18.26 27.318 20.664" style="fill:silver" /><polygon points="27.443 24.51 27.443 21.11 29.993 21.96 29.993 23.66 27.443 24.51" style="fill:silver" /><path d="M27.776,22.737A5.039,5.039,0,1,1,26.3,19.175,5.023,5.023,0,0,1,27.776,22.737Zm-5.039-1.9a1.9,1.9,0,1,0,1.344.557A1.894,1.894,0,0,0,22.737,20.837Z" style="fill:silver" /><path d="M22.656,18.074A4.664,4.664,0,1,0,27.4,22.656,4.664,4.664,0,0,0,22.656,18.074Zm.15,8.61a3.947,3.947,0,1,1,3.877-4.015A3.947,3.947,0,0,1,22.806,26.684Z" style="fill:#a9a9a9" /><path d="M22.674,19.11a3.628,3.628,0,1,0,3.69,3.564A3.628,3.628,0,0,0,22.674,19.11Zm.1,5.7A2.073,2.073,0,1,1,24.811,22.7,2.073,2.073,0,0,1,22.774,24.81Z" style="fill:url(#a)" /><path d="M22.7,20.665A2.073,2.073,0,1,0,24.81,22.7,2.073,2.073,0,0,0,22.7,20.665Zm.067,3.826a1.754,1.754,0,1,1,1.723-1.784A1.754,1.754,0,0,1,22.768,24.491Z" style="fill:#a9a9a9" /><polygon points="6.563 16.976 8.838 18.238 7.374 19.806 6.009 19.049 6.563 16.976" style="fill:silver" /><polygon points="4.382 13.834 5.722 16.064 3.67 16.69 2.866 15.352 4.382 13.834" style="fill:silver" /><polygon points="4.065 10.023 4.11 12.624 2.02 12.14 1.993 10.579 4.065 10.023" style="fill:silver" /><polygon points="5.696 6.563 4.434 8.838 2.866 7.374 3.623 6.009 5.696 6.563" style="fill:silver" /><polygon points="8.838 4.382 6.608 5.722 5.982 3.67 7.32 2.866 8.838 4.382" style="fill:silver" /><polygon points="12.65 4.065 10.048 4.11 10.532 2.02 12.093 1.993 12.65 4.065" style="fill:silver" /><polygon points="16.109 5.696 13.834 4.434 15.298 2.866 16.663 3.623 16.109 5.696" style="fill:silver" /><polygon points="18.29 8.838 16.95 6.608 19.002 5.982 19.806 7.32 18.29 8.838" style="fill:silver" /><polygon points="18.607 12.65 18.562 10.048 20.652 10.532 20.679 12.093 18.607 12.65" style="fill:silver" /><polygon points="16.976 16.109 18.238 13.834 19.806 15.298 19.049 16.663 16.976 16.109" style="fill:silver" /><polygon points="13.834 18.29 16.064 16.95 16.69 19.002 15.352 19.806 13.834 18.29" style="fill:silver" /><polygon points="10.023 18.607 12.624 18.562 12.14 20.652 10.579 20.679 10.023 18.607" style="fill:silver" /><path d="M11.467,18.831a7.5,7.5,0,1,1,5.261-2.288A7.473,7.473,0,0,1,11.467,18.831Zm2.682-7.544a2.814,2.814,0,1,0-.789,2A2.8,2.8,0,0,0,14.149,11.287Z" style="fill:silver" /><path d="M11.218,4.6a6.737,6.737,0,1,0,6.854,6.619A6.737,6.737,0,0,0,11.218,4.6Zm.217,12.436a5.7,5.7,0,1,1,5.6-5.8A5.7,5.7,0,0,1,11.436,17.036Z" style="fill:#a9a9a9" /><path d="M11.245,6.136a5.2,5.2,0,1,0,5.29,5.109A5.2,5.2,0,0,0,11.245,6.136Zm.14,8.036a2.837,2.837,0,1,1,2.787-2.886A2.837,2.837,0,0,1,11.386,14.172Z" style="fill:url(#b)" /><path d="M11.282,8.227a3.109,3.109,0,1,0,3.163,3.055A3.109,3.109,0,0,0,11.282,8.227Zm.1,5.74a2.631,2.631,0,1,1,2.585-2.677A2.631,2.631,0,0,1,11.382,13.967Z" style="fill:#a9a9a9" /></symbol><symbol id="blend" viewBox="0 0 32 32"><title>blend</title><path fill="#0e548b" d="M16.6 17.42a3.3 3.3 0 0 1 1.2-2.34 4 4 0 0 1 2.58-.93 4 4 0 0 1 2.58.93 3.3 3.3 0 0 1 1.2 2.34c.05.95-.34 1.85-1.01 2.5-.7.68-1.67 1.1-2.77 1.1s-2.09-.42-2.78-1.1a3.24 3.24 0 0 1-1-2.5" /><path fill="#f4792b" d="M10.58 19.3c0 .37.12 1.08.3 1.63a8.6 8.6 0 0 0 1.85 3.22 9.6 9.6 0 0 0 3.25 2.34c1.33.58 2.78.88 4.27.88a10.47 10.47 0 0 0 4.27-.9 9.66 9.66 0 0 0 3.25-2.34 8.67 8.67 0 0 0 2.2-5.03 8.2 8.2 0 0 0-.05-1.78 8.3 8.3 0 0 0-1.19-3.25 9.04 9.04 0 0 0-2.16-2.38l-8.74-6.72-.03-.01a1.94 1.94 0 0 0-2.17 0c-.63.45-.7 1.18-.14 1.65l3.65 2.97-11.12.01H8c-.92 0-1.8.6-1.97 1.37-.18.77.44 1.42 1.4 1.42h5.63L3 20.08l-.04.03c-.94.73-1.25 1.94-.65 2.7.6.78 1.9.78 2.85 0l5.49-4.49s-.08.6-.07.97m14.1 2.03a6.18 6.18 0 0 1-4.43 1.81c-1.71 0-3.3-.64-4.43-1.8a5.28 5.28 0 0 1-1.2-1.88 4.91 4.91 0 0 1-.28-2.12 4.99 4.99 0 0 1 .6-1.99 5.48 5.48 0 0 1 1.35-1.6c1.1-.9 2.5-1.38 3.96-1.38 1.47 0 2.86.48 3.96 1.37a5.48 5.48 0 0 1 1.35 1.6 4.99 4.99 0 0 1 .6 1.98 4.94 4.94 0 0 1-.27 2.12 5.28 5.28 0 0 1-1.21 1.9" /></symbol><symbol id="bolt" viewBox="0 0 32 32"><title>bolt</title><path d="M9.012,2H22.979q-2.787,5.6-5.593,11.194,2.8.014,5.6.009-4.9,8.4-9.794,16.8c-.019-4.192-.009-8.375-.009-12.567-1.391,0-2.782,0-4.173-.009Z" style="fill:#fbc02d" /></symbol><symbol id="bruno" version="1.1" viewBox="0 0 32 32"><title>bruno</title><g transform="matrix(.96511 0 0 .96511 .075902 .47641)"><path d="m29.9 14.691c-0.57-2.2-1.39-4.31-2.65-6.23-0.65-0.99-1.42-1.89-2.47-2.46-0.51-0.27-1.12-0.34-1.68-0.53-0.29-0.1-0.6-0.19-0.85-0.36-2.25-1.52-4.68-2.25-7.4-1.81-1.33 0.22-2.57 0.69-3.7 1.43-0.15 0.1-0.3 0.23-0.47 0.25-1.72 0.21-2.86 1.32-3.88 2.57-1.77 2.16-2.84 4.69-3.66 7.32-0.48 1.53 0.07 3.01 0.76 4.37 0.69 1.34 1.53 2.6 2.34 3.87 0.33 0.52 0.72 0.48 0.97-0.08l0.88-2.09c0.1-0.31 0.04-0.7-0.03-1.04-0.4-2.02-0.69-4.04-0.41-6.1 0.09-0.68 0.27-1.37 0.48-2.02 0.06-0.19 0.39-0.3 0.59-0.44 0.12 0.24 0.38 0.54 0.32 0.73-0.87 2.71-0.44 5.39 0.09 8.08 0.08 0.4 0 0.88-0.14 1.27-0.14 0.38-0.12 0.67 0.08 1 0.83 1.37 1.73 2.67 3.27 3.37 0.55 0.25 0.51 0.72-0.03 1.07l1.2 0.44-0.23-2.91c-0.02-0.19-0.19-0.42-0.35-0.54-1.08-0.8-1.86-1.79-1.98-3.18-0.02-0.24-0.02-0.48 0-0.71 0.03-0.34 0.13-0.71 0.54-0.61 0.19 0.05 0.36 0.4 0.43 0.64 0.09 0.32 0.02 0.68 0.1 1 0.28 1.06 1 1.76 1.97 2.17 0.28 0.12 0.74 0 1.05-0.14 0.36-0.18 0.67-0.5 0.95-0.8 0.13-0.14 0.19-0.38 0.21-0.58 0.04-0.35-0.03-0.73 0.05-1.07 0.04-0.18 0.3-0.42 0.46-0.42s0.35 0.24 0.48 0.41c0.06 0.08 0.04 0.24 0.02 0.35-0.24 1.05 0.42 1.59 1.15 2.12 0.38 0.28 0.78 0.31 1.18 0.1 1.22-0.66 2.01-1.61 1.96-3.08-0.01-0.37 0.02-0.72 0.48-0.72 0.41 0 0.48 0.34 0.5 0.68 0.09 1.78-0.76 3.04-2.2 3.95-0.32 0.2-0.44 0.39-0.45 0.79 0 0.89-0.12 1.78-0.2 2.67l1.22-0.46c-0.51-0.5-0.47-0.84 0.14-1.14 1.62-0.8 2.44-2.28 3.23-3.79 0.07-0.14 0-0.39-0.07-0.56-0.28-0.59-0.28-1.17-0.15-1.8 0.49-2.27 0.78-4.55 0.28-6.86-0.07-0.31-0.24-0.61-0.24-0.92 0-0.24 0.2-0.48 0.31-0.72 0.2 0.14 0.51 0.24 0.6 0.44 0.52 1.26 0.66 2.59 0.56 3.93-0.11 1.52-0.38 3.03-0.57 4.55-0.03 0.21-0.05 0.45 0.02 0.64l0.91 2.14c0.23 0.49 0.6 0.55 0.91 0.13 1.41-1.92 2.67-3.92 3.14-6.3 0.13-0.65 0.16-1.37 0-2z" fill="#f1a842" /><path d="m20.84 26.951c-0.51-0.5-0.47-0.84 0.14-1.14 1.62-0.8 2.44-2.28 3.23-3.79 0.07-0.14 0-0.39-0.07-0.56-0.28-0.59-0.28-1.17-0.15-1.8 0.49-2.27 0.78-4.55 0.28-6.86-0.07-0.31-0.24-0.61-0.24-0.92 0-0.24-0.15-0.48 0.31-0.72 0.43-0.04 0.51 0.24 0.6 0.44 0.52 1.25 0.66 2.59 0.56 3.93-0.11 1.52-0.38 3.03-0.57 4.55-0.03 0.21-0.05 0.45 0.02 0.64l0.91 2.14c0.23 0.49 0.6 0.55 0.91 0.13 1.41-1.92 2.67-3.92 3.14-6.3 0.13-0.65 0.16-1.37 0-2-0.57-2.2-1.39-4.31-2.65-6.23-0.65-0.99-1.42-1.89-2.47-2.46-0.51-0.27-1.12-0.34-1.68-0.53-0.29-0.1-0.6-0.19-0.85-0.36-2.25-1.52-4.68-2.25-7.4-1.81-1.33 0.22-2.57 0.69-3.7 1.43-0.15 0.1-0.3 0.23-0.47 0.25-1.72 0.21-2.86 1.32-3.88 2.57-1.77 2.16-2.84 4.69-3.66 7.32-0.48 1.53 0.07 3.01 0.76 4.37 0.69 1.34 1.53 2.6 2.34 3.87 0.33 0.52 0.72 0.48 0.97-0.08l0.88-2.09c0.1-0.31 0.04-0.7-0.03-1.04-0.4-2.02-0.69-4.04-0.41-6.1 0.09-0.68 0.27-1.37 0.48-2.02 0.06-0.19 0.13-0.44 0.59-0.44 0.53 0.19 0.38 0.54 0.32 0.73-0.87 2.71-0.44 5.39 0.09 8.08 0.08 0.4 0 0.88-0.14 1.27-0.14 0.38-0.12 0.67 0.08 1 0.83 1.37 1.73 2.67 3.27 3.37 0.55 0.25 0.51 0.72-0.03 1.07-1.24-0.37-2.12-1.22-2.9-2.19l-1.11-1.54-0.45 0.8c-0.48 0.72-1.47 0.89-2 0.24-1.9-2.31-3.43-4.83-3.81-7.88-0.15-1.17 0.28-2.23 0.69-3.29 0.97-2.49 2.1-4.9 3.96-6.87 0.99-1.05 2.11-1.94 3.61-2.16 0.13-0.02 0.26-0.1 0.37-0.17 4-2.41 7.94-2.24 11.84 0.26 0.29 0.18 0.64 0.32 0.97 0.36 1.61 0.22 2.77 1.16 3.74 2.35 1.82 2.23 2.83 4.86 3.58 7.59 0.41 1.5 0.02 2.96-0.51 4.37-0.66 1.76-1.61 3.36-2.73 4.87-0.8 1.08-1.92 1.01-2.56-0.17-0.06-0.1-0.11-0.2-0.17-0.31-0.53 0.73-1 1.46-1.55 2.13-0.65 0.79-1.41 1.46-2.45 1.7zm-7.33 0.35-0.23-2.91c-0.02-0.19-0.19-0.42-0.35-0.54-1.08-0.8-1.86-1.79-1.98-3.18-0.02-0.24-0.02-0.48 0-0.71 0.03-0.34 0.13-0.71 0.54-0.61 0.19 0.05 0.36 0.4 0.43 0.64 0.09 0.32 0.02 0.68 0.1 1 0.28 1.06 1 1.76 1.97 2.17 0.28 0.12 0.74 0 1.05-0.14 0.36-0.18 0.67-0.5 0.95-0.8 0.13-0.14 0.19-0.38 0.21-0.58 0.04-0.35-0.03-0.73 0.05-1.07 0.04-0.18 0.3-0.42 0.46-0.42s0.35 0.24 0.48 0.41c0.06 0.08 0.04 0.24 0.02 0.35-0.24 1.05 0.42 1.59 1.15 2.12 0.38 0.28 0.78 0.31 1.18 0.1 1.22-0.66 2.01-1.61 1.96-3.08-0.01-0.37 0.02-0.72 0.48-0.72 0.41 0 0.48 0.34 0.5 0.68 0.09 1.78-0.76 3.04-2.2 3.95-0.32 0.2-0.44 0.39-0.45 0.79 0 0.89-0.12 1.78-0.2 2.67l-0.26 0.78c-0.51 1.53-1.34 2.02-2.99 1.85-1.43-0.14-2.34-0.84-2.69-2.25-0.04-0.17-0.11-0.33-0.17-0.49zm0.82-2.91c-0.04 1.26-0.01 2.47 0.48 3.6 0.12 0.29 0.38 0.64 0.65 0.71 0.62 0.17 1.28 0.22 1.92 0.25 0.43 0.02 0.72-0.25 0.89-0.66 0.47-1.12 0.61-2.29 0.56-3.49 0-0.16-0.14-0.36-0.27-0.45l-1.46-0.98c-0.31-0.25-0.5-0.28-0.79 0-0.54 0.53-1.11 1.03-1.97 1.03z" /><path d="m18.15 18.711c-1.09 0-1.88 0.09-2.63-0.03-0.58-0.09-1.14-0.42-1.68-0.69-0.11-0.05-0.13-0.31-0.16-0.48-0.01-0.07 0.03-0.15 0.06-0.23 0.8-2.42 0.57-2.19 2.87-2.18h1.55c0.44 0 0.77 0.2 0.93 0.61l0.58 1.5c0.06 0.18 0.05 0.52-0.07 0.6-0.54 0.38-1.12 0.7-1.45 0.89z" fill="#414141" /><path d="m21.54 11.181c0.56 0 1.01 0.5 1 1.1-0.01 0.54-0.39 1.01-0.82 1.01-0.56 0-1.05-0.41-1.05-0.88 0-0.83 0.28-1.23 0.86-1.24zm-8.16 1.18c0 0.52-0.46 0.93-1.05 0.93-0.43 0-0.8-0.46-0.8-1.01 0-0.62 0.43-1.11 1-1.1 0.57 0 0.84 0.38 0.86 1.18z" /><path d="m14.33 24.391c0.86 0 1.43-0.5 1.97-1.03 0.29-0.29 0.48-0.25 0.79 0 0.46 0.37 0.99 0.64 1.46 0.98 0.13 0.1 0.27 0.3 0.27 0.45 0.05 1.2-0.09 2.37-0.56 3.49-0.17 0.41-0.47 0.68-0.89 0.66-0.65-0.03-1.3-0.08-1.92-0.25-0.27-0.07-0.53-0.43-0.65-0.71-0.49-1.13-0.51-2.34-0.48-3.6z" fill="#e55947" /><path d="m20.02 17.051-0.62-1.56c-0.16-0.62-0.86-0.78-1.24-0.78h-2.88c-0.35 0.01-1.09 0.17-1.26 0.79-0.1 0.38-0.48 1.26-0.6 1.53-0.15 0.27-0.21 0.92 0.73 1.47l1.29 0.46 1-0.72-0.02-0.88h-0.79v0.48l-0.32 0.23-0.82-0.29c-0.33-0.2-0.38-0.36-0.36-0.4l0.66-1.69c0.04-0.13 0.34-0.19 0.49-0.19h2.88c0.15 0 0.45 0.06 0.49 0.19 0.14 0.52 0.64 1.64 0.66 1.69 0.01 0.04-0.03 0.2-0.3 0.36l-0.89 0.32-0.32-0.23v-0.47l-0.78-0.01v0.88l0.98 0.72 1.36-0.49c0.87-0.52 0.82-1.17 0.68-1.41z" /></g></symbol><symbol id="bun" viewBox="0 0 32 32"><path d="M29,17c0,5.65-5.82,10.23-13,10.23S3,22.61,3,17c0-3.5,2.24-6.6,5.66-8.44S14.21,4.81,16,4.81s3.32,1.54,7.34,3.71C26.76,10.36,29,13.46,29,17Z" style="fill:#fbf0df" /><path d="M16,27.65C23.32,27.65,29.46,23,29.46,17c0-3.72-2.37-7-5.89-8.85-1.39-.75-2.46-1.41-3.37-2l-1.13-.69A6.14,6.14,0,0,0,16,4.35a6.88,6.88,0,0,0-3.3,1.23c-.42.24-.86.51-1.32.8-.87.54-1.83,1.13-3,1.73C4.91,10,2.54,13.24,2.54,17,2.54,23,8.68,27.65,16,27.65Z" style="fill:none;stroke:#000" /><ellipse cx="21.65" cy="18.62" rx="2.17" ry="1.28" style="fill:#febbd0" /><ellipse cx="10.41" cy="18.62" rx="2.17" ry="1.28" style="fill:#febbd0" /><path d="M11.43,18.11a2,2,0,1,0-2-2.05A2.05,2.05,0,0,0,11.43,18.11Zm9.2,0a2,2,0,1,0-2-2.05A2,2,0,0,0,20.63,18.11Z" style="fill-rule:evenodd" /><path d="M10.79,16.19a.77.77,0,1,0-.76-.77A.76.76,0,0,0,10.79,16.19Zm9.2,0a.77.77,0,1,0,0-1.53.77.77,0,0,0,0,1.53Z" style="fill:#fff;fill-rule:evenodd" /><path d="M18.62,19.67a3.3,3.3,0,0,1-1.09,1.75,2.48,2.48,0,0,1-1.5.69,2.53,2.53,0,0,1-1.5-.69,3.28,3.28,0,0,1-1.08-1.75.26.26,0,0,1,.29-.3h4.58A.27.27,0,0,1,18.62,19.67Z" style="fill:#b71422;stroke:#000;stroke-width:0.75px" /><path d="M14.93,5.75a6.09,6.09,0,0,1-2.09,4.62c-.1.09,0,.27.11.22,1.25-.49,2.94-1.94,2.23-4.88C15.15,5.56,14.93,5.6,14.93,5.75Zm.85,0a6,6,0,0,1,.57,5c0,.13.12.24.21.13.83-1,1.54-3.11-.59-5.31C15.87,5.46,15.7,5.61,15.78,5.74Zm1-.06a6.09,6.09,0,0,1,2.53,4.38c0,.14.21.17.24,0,.34-1.3.15-3.51-2.66-4.66C16.77,5.39,16.68,5.59,16.8,5.68ZM9.94,9.55a6.27,6.27,0,0,0,3.89-3.33c.07-.13.28-.08.25.07-.64,3-2.79,3.59-4.13,3.51C9.81,9.79,9.81,9.59,9.94,9.55Z" style="fill:#ccbea7;fill-rule:evenodd" /></symbol><symbol id="bundlemon" viewBox="0 0 32 32"><title>bundlemon</title><path fill="#ea9d2d" d="m3.037 21.185 10.889 6.222V14.963L3.036 8.741z" /><path fill="#fbb540" d="M13.926 2.519 3.037 8.74l10.889 6.222v12.444l10.888-6.222V8.741z" /><path fill="#f7ba61" d="m13.926 27.407 4.666-2.592 6.223-3.63V8.74l-10.888 6.222z" /><path fill="#03cc00" d="M23.777 19.111a5.185 5.185 0 1 0 0 10.37 5.185 5.185 0 0 0 0-10.37z" /><path fill="#d9d9d9" d="m10.815 18.593-3.63-2.074V11.11l3.63 2.074z" /><path fill="#f0f0f0" d="m17.569 4.6-3.126 2.067 3.63 2.074 3.118-2.07zm-5.718 3.623L7.185 11.11l3.63 2.074 4.666-2.889z" /><path d="m21.446 13.402-4.666 2.667a.519.519 0 1 0 .516.9l4.666-2.667a.519.519 0 0 0-.516-.9m3.887-4.66a.501.501 0 0 0-.019-.136.42.42 0 0 0-.02-.052.496.496 0 0 0-.03-.073c-.012-.017-.027-.033-.04-.052a.534.534 0 0 0-.043-.056.497.497 0 0 0-.052-.039.542.542 0 0 0-.056-.043L14.185 2.069a.519.519 0 0 0-.514 0L2.783 8.29a.588.588 0 0 0-.056.043.501.501 0 0 0-.052.039.539.539 0 0 0-.044.056c-.012.018-.027.033-.038.052a.473.473 0 0 0-.03.073.496.496 0 0 0-.021.052.511.511 0 0 0-.022.135v12.444a.518.518 0 0 0 .259.45l10.885 6.22.006.003a.52.52 0 0 0 .077.032c.016.006.03.014.047.018a.509.509 0 0 0 .264 0c.015-.003.028-.011.043-.016a.489.489 0 0 0 .079-.031l4.054-2.253a5.7 5.7 0 0 0 11.095-2.619 5.7 5.7 0 0 0-3.994-4.175zm-13.46.088 2.622 1.499-3.522 2.348-2.623-1.499zm-3.305 3.89 1.728.989V17.7l-2.593-1.483v-3.99zm9.485-4.588-2.62-1.497 2.156-1.425 2.615 1.494zM16.58 4.634l-2.422 1.601a.518.518 0 0 0-.145.72.52.52 0 0 0 .173.162l3.63 2.074a.518.518 0 0 0 .544-.018l2.852-1.893 2.558 1.46-9.843 5.625-1.946-1.114 3.789-2.526a.519.519 0 0 0-.03-.881L12.11 7.77a.519.519 0 0 0-.545.018l-4.22 2.813-3.262-1.86 9.844-5.626zm-9.914 6.779v5.106a.52.52 0 0 0 .26.45l3.629 2.074a.518.518 0 0 0 .778-.45v-4.514l2.074 1.185v11.252l-9.852-5.631V9.635zm7.778 3.851 9.852-5.63v8.985a5.806 5.806 0 0 0-.519-.026 5.71 5.71 0 0 0-5.704 5.703c0 .07.008.138.011.207l-3.64 2.023zm4.666 9.032a4.667 4.667 0 0 1 9.334 0 4.672 4.672 0 0 1-4.667 4.667 4.667 4.667 0 0 1-4.667-4.667m4.734-.196a49.88 49.88 0 0 1-.749 1.553c-.01 0-.312-.467-.677-1.038-.459-.72-.686-1.052-.752-1.092-.127-.072-.399-.072-.52.003-.063.04-.203.243-.434.624l-.34.567h-1.613v.952l1.036-.01c.954-.009 1.045-.012 1.132-.069.06-.037.172-.187.293-.39.112-.18.21-.318.219-.302l.689 1.08c.471.735.699 1.07.767 1.113a.59.59 0 0 0 .53-.006c.122-.075.025.115 1.18-2.315l.823-1.743.078.137c.044.072.334.611.646 1.194.642 1.198.62 1.158.739 1.236.081.053.168.059 1.095.059h1.005v-.936h-.77l-.775-.003-.755-1.41c-.941-1.752-.926-1.724-1.038-1.784-.134-.069-.4-.06-.524.019-.116.075-.1.044-1.285 2.56z" /></symbol><symbol id="c" viewBox="0 0 32 32"><title>c</title><path d="M10.676,15.973a10.052,10.052,0,0,0,1.175,5.151,5.446,5.446,0,0,0,6.306,2.408,4.284,4.284,0,0,0,3.09-3.6c.107-.6.109-.61.109-.61,1.737.251,4.537.658,6.274.906l-.11.44a11.256,11.256,0,0,1-2.7,5.39,9.439,9.439,0,0,1-5.366,2.688,14.61,14.61,0,0,1-8.277-.819A10.151,10.151,0,0,1,5.4,21.687a16.225,16.225,0,0,1,.019-11.45,10.538,10.538,0,0,1,8.963-7.054,13.353,13.353,0,0,1,6.666.555,9.571,9.571,0,0,1,6.167,6.9c.094.352.114.417.114.417-1.932.351-4.319.8-6.238,1.215-.362-1.915-1.265-3.428-3.2-3.9a5.263,5.263,0,0,0-6.616,3.57,10.49,10.49,0,0,0-.385,1.439A12.31,12.31,0,0,0,10.676,15.973Z" style="fill:#005f91" /></symbol><symbol id="class" viewBox="0 0 32 32"><title>class</title><path d="M11.7,23.56s-1.07.622.761.833a16.023,16.023,0,0,0,5.8-.246A10.088,10.088,0,0,0,19.8,24.9c-5.481,2.349-12.405-.136-8.1-1.339" style="fill:#e76f00" /><path d="M11.026,20.494s-1.2.888.633,1.078a22.618,22.618,0,0,0,7.481-.359,3.32,3.32,0,0,0,1.152.7c-6.627,1.938-14.009.153-9.266-1.421" style="fill:#e76f00" /><path d="M16.673,15.294a2.051,2.051,0,0,1-.355,2.954s3.429-1.77,1.854-3.987c-1.471-2.067-2.6-3.095,3.508-6.636,0,0-9.586,2.394-5.007,7.669" style="fill:#e76f00" /><path d="M23.922,25.827s.792.652-.872,1.157c-3.164.958-13.168,1.248-15.948.038-1-.435.874-1.038,1.464-1.164a3.8,3.8,0,0,1,.966-.108c-1.111-.783-7.181,1.537-3.083,2.2,11.176,1.812,20.372-.816,17.473-2.124" style="fill:#e76f00" /><path d="M12.211,17.318s-5.089,1.209-1.8,1.648a38.225,38.225,0,0,0,6.731-.072c2.106-.178,4.221-.555,4.221-.555a8.934,8.934,0,0,0-1.28.685C14.913,20.382,4.93,19.75,7.8,18.359a9.629,9.629,0,0,1,4.407-1.042" style="fill:#e76f00" /><path d="M21.34,22.421c5.253-2.73,2.824-5.353,1.129-5a3.932,3.932,0,0,0-.6.161.957.957,0,0,1,.449-.346c3.354-1.179,5.933,3.478-1.083,5.322a.458.458,0,0,0,.106-.138" style="fill:#e76f00" /><path d="M18.172,1.906s2.909,2.91-2.759,7.386c-4.546,3.59-1.037,5.637,0,7.975-2.653-2.394-4.6-4.5-3.294-6.463,1.917-2.879,7.229-4.275,6.056-8.9" style="fill:#e76f00" /><path d="M12.727,29.818c5.042.323,12.786-.179,12.969-2.565,0,0-.353.9-4.167,1.623a41.458,41.458,0,0,1-12.76.2s.645.533,3.959.746" style="fill:#e76f00" /></symbol><symbol id="coffeescript" viewBox="0 0 32 32"><title>coffeescript</title><path d="M13.114,5.728c.025.153-.051.28-.306.408a3.457,3.457,0,0,0-1.63-.229c-.637.051-1.172.255-1.1.688.1.433.713.688,1.808.586,2.674-.229,2.649-2.038,6.571-2.394,3.056-.28,4.763.662,4.992,1.808.178.891-.56,1.757-2.776,1.936-1.961.178-3.107-.357-3.209-.891-.051-.28.1-.688,1.044-.79.1.433.637.891,1.91.764C21.341,7.536,22.1,7.2,22,6.7c-.1-.535-1.07-.84-2.6-.713-3.107.28-3.871,1.987-6.52,2.216C11,8.376,9.472,7.689,9.268,6.67c-.076-.382-.076-1.273,1.91-1.452,1.019-.076,1.834.1,1.936.509ZM3.181,16.374A5.279,5.279,0,0,0,2.01,19.99a4.206,4.206,0,0,0,1.655,3.056,4,4,0,0,0,3.362.79,11.434,11.434,0,0,0,1.5-.484,4.238,4.238,0,0,1-2.751-1.019,4.13,4.13,0,0,1-1.732-2.827A3.79,3.79,0,0,1,4.658,16.5,3.977,3.977,0,0,1,7.409,15a4.806,4.806,0,0,1,3.209.942,6.95,6.95,0,0,0-.866-.866,4.1,4.1,0,0,0-3.464-.688,5.2,5.2,0,0,0-3.107,1.987ZM16.833,10.49A40.837,40.837,0,0,1,8.5,9.7C6.237,9.14,5.04,8.529,5.04,7.74c0-.331.153-.611.611-.942-1.426.56-2.19,1.019-2.19,1.732.076.79,1.35,1.579,3.948,2.19a39.443,39.443,0,0,0,9.347.942A38.993,38.993,0,0,0,26.1,10.72c2.6-.611,3.846-1.426,3.846-2.19,0-.56-.56-1.1-1.579-1.5a.862.862,0,0,1,.408.688c0,.79-1.172,1.426-3.54,1.961A39.324,39.324,0,0,1,16.833,10.49Zm9.373,2.19a42.315,42.315,0,0,1-9.347.942,44.144,44.144,0,0,1-9.424-.942c-2.19-.56-3.362-1.172-3.769-1.808a23.186,23.186,0,0,0,2.6,7.641c.942,1.426,1.885,2.674,2.827,4.024a9.883,9.883,0,0,1,.866,2.369,4.559,4.559,0,0,0,2.6,1.732,10.611,10.611,0,0,0,4.177.611h.153a11.839,11.839,0,0,0,4.3-.611,4.869,4.869,0,0,0,2.521-1.732h.076a9.592,9.592,0,0,1,.79-2.369c.942-1.35,1.885-2.6,2.827-4.024A24.62,24.62,0,0,0,30,10.872C29.491,11.585,28.319,12.2,26.205,12.681Z" style="fill:#6f4e37" /></symbol><symbol id="config" viewBox="0 0 32 32"><title>config</title><path d="M23.265,24.381l.9-.894c4.164.136,4.228-.01,4.411-.438l1.144-2.785L29.805,20l-.093-.231c-.049-.122-.2-.486-2.8-2.965V15.5c3-2.89,2.936-3.038,2.765-3.461L28.538,9.225c-.171-.422-.236-.587-4.37-.474l-.9-.93a20.166,20.166,0,0,0-.141-4.106l-.116-.263-2.974-1.3c-.438-.2-.592-.272-3.4,2.786l-1.262-.019c-2.891-3.086-3.028-3.03-3.461-2.855L9.149,3.182c-.433.175-.586.237-.418,4.437l-.893.89c-4.162-.136-4.226.012-4.407.438L2.285,11.733,2.195,12l.094.232c.049.12.194.48,2.8,2.962l0,1.3c-3,2.89-2.935,3.038-2.763,3.462l1.138,2.817c.174.431.236.584,4.369.476l.9.935a20.243,20.243,0,0,0,.137,4.1l.116.265,2.993,1.308c.435.182.586.247,3.386-2.8l1.262.016c2.895,3.09,3.043,3.03,3.466,2.859l2.759-1.115C23.288,28.644,23.44,28.583,23.265,24.381ZM11.407,17.857a4.957,4.957,0,1,1,6.488,2.824A5.014,5.014,0,0,1,11.407,17.857Z" style="fill:#99b8c4" /></symbol><symbol id="cpp" viewBox="0 0 32 32"><title>cpp</title><path d="M14.742,24.047a10.242,10.242,0,0,1-4.673.919A7.628,7.628,0,0,1,4.155,22.62,8.876,8.876,0,0,1,2,16.369,9.476,9.476,0,0,1,4.422,9.621a8.216,8.216,0,0,1,6.285-2.588,11.151,11.151,0,0,1,4.035.641v3.761A6.839,6.839,0,0,0,11,10.395,4.813,4.813,0,0,0,7.288,11.93a5.9,5.9,0,0,0-1.413,4.159A5.8,5.8,0,0,0,7.209,20.1a4.57,4.57,0,0,0,3.59,1.493,7.319,7.319,0,0,0,3.943-1.113Z" style="fill:#984c93" /><polygon points="17.112 14.829 17.112 12.485 19.456 12.485 19.456 14.829 21.8 14.829 21.8 17.172 19.456 17.172 19.456 19.515 17.112 19.515 17.112 17.172 14.77 17.172 14.77 14.828 17.112 14.829" style="fill:#984c93" /><polygon points="25.313 14.829 25.313 12.485 27.657 12.485 27.657 14.829 30 14.829 30 17.172 27.657 17.172 27.657 19.515 25.313 19.515 25.313 17.172 22.971 17.172 22.971 14.828 25.313 14.829" style="fill:#984c93" /></symbol><symbol id="cs" viewBox="0 0 32 32"><title>cs</title><path d="M29,10.232a2.387,2.387,0,0,0-.318-1.244,2.451,2.451,0,0,0-.936-.879Q22.552,5.241,17.353,2.376A2.642,2.642,0,0,0,14.59,2.4c-1.378.779-8.275,4.565-10.331,5.706A2.287,2.287,0,0,0,3,10.231V21.77a2.4,2.4,0,0,0,.3,1.22,2.434,2.434,0,0,0,.954.9c2.056,1.141,8.954,4.927,10.332,5.706a2.642,2.642,0,0,0,2.763.026q5.19-2.871,10.386-5.733a2.444,2.444,0,0,0,.955-.9,2.4,2.4,0,0,0,.3-1.22V10.232" style="fill:#4e994a" /><path d="M28.549,23.171a2.126,2.126,0,0,0,.147-.182,2.4,2.4,0,0,0,.3-1.22V10.232a2.387,2.387,0,0,0-.318-1.244c-.036-.059-.089-.105-.13-.16L16,16Z" style="fill:#358230" /><path d="M28.549,23.171,16,16,3.451,23.171a2.435,2.435,0,0,0,.809.72c2.056,1.141,8.954,4.927,10.332,5.706a2.642,2.642,0,0,0,2.763.026q5.19-2.871,10.386-5.733A2.43,2.43,0,0,0,28.549,23.171Z" style="fill:#1a7515" /><path d="M19.6,18.02a4.121,4.121,0,1,1-.027-4.087l3.615-2.073A8.309,8.309,0,0,0,7.7,16a8.216,8.216,0,0,0,1.1,4.117A8.319,8.319,0,0,0,23.211,20.1L19.6,18.02" style="fill:#fff" /><path d="M27.67,15.271V14.033H26.663V13.027H25.424v1.006H23.916V13.027H22.677v1.006H21.669v1.238h1.006v1.513H21.669v1.237h1.006v1.006h1.239V18.021h1.509v1.006h1.239V18.021h1.006V16.784h-1V15.271Zm-2.246,1.513H23.916V15.271h1.508Z" style="fill:#fff" /></symbol><symbol id="css2" viewBox="0 0 32 32"><title>css</title><polygon points="5.902 27.201 3.656 2 28.344 2 26.095 27.197 15.985 30 5.902 27.201" style="fill:#1572b6" /><polygon points="16 27.858 24.17 25.593 26.092 4.061 16 4.061 16 27.858" style="fill:#33a9dc" /><polygon points="16 13.191 20.09 13.191 20.372 10.026 16 10.026 16 6.935 16.011 6.935 23.75 6.935 23.676 7.764 22.917 16.282 16 16.282 16 13.191" style="fill:#fff" /><polygon points="16.019 21.218 16.005 21.222 12.563 20.292 12.343 17.827 10.67 17.827 9.24 17.827 9.673 22.68 16.004 24.438 16.019 24.434 16.019 21.218" style="fill:#ebebeb" /><polygon points="19.827 16.151 19.455 20.29 16.008 21.22 16.008 24.436 22.344 22.68 22.391 22.158 22.928 16.151 19.827 16.151" style="fill:#fff" /><polygon points="16.011 6.935 16.011 8.855 16.011 10.018 16.011 10.026 8.555 10.026 8.555 10.026 8.545 10.026 8.483 9.331 8.342 7.764 8.268 6.935 16.011 6.935" style="fill:#ebebeb" /><polygon points="16 13.191 16 15.111 16 16.274 16 16.282 12.611 16.282 12.611 16.282 12.601 16.282 12.539 15.587 12.399 14.02 12.325 13.191 16 13.191" style="fill:#ebebeb" /></symbol><symbol id="darcs" viewBox="0 0 32 32"><title>darcs</title><path d="M27.1,13.224c-1.8,0-2.515,1.222-3.952,1.868s-2.515.359-3.018-.575-.072-1.8,1.653-2.731,2.012.359,4.024-.862,1.006-3.521.575-4.312a2.936,2.936,0,0,0-4.312-.5c-1.94,1.509-1.15,3.737-1.725,4.887a2.361,2.361,0,0,1-2.8,1.15c-.719-.359-.791-1.8-.5-3.018s1.509-1.222,2.228-3.378a3.08,3.08,0,0,0-2.515-3.737,2.9,2.9,0,0,0-3.306,2.371c-.423,2.959,1.15,2.659,1.8,4.384.329.877.5,2.371-.431,3.09s-2.587-.575-2.946-1.509-.072-3.737-1.078-4.527a3.214,3.214,0,0,0-4.24-.144c-1.725,1.294-.9,4.229,0,4.743,2.012,1.15,3.719.831,4.491,1.258,1.047.579,1.473,1.329,1.114,2.336-.634,1.776-1.8.934-2.731,1.006s-2.156-2.084-3.88-2.515a3.359,3.359,0,0,0-3.449,2.659c0,2.336.893,3.385,3.467,3.512,1.413.07,2.722-2.165,4.191-2.185.794-.011,1.755-.344,2.155.7.673,1.748-.423,2.1-1.133,2.717-1.048.9-2.869.088-4.309,1.071a2.959,2.959,0,0,0-.4,4.672,2.836,2.836,0,0,0,4.336-.28c1.234-1.773.539-3.466,1.569-4.656.131-.151,1.534-1.877,2.724-.7.66.655.791,2.017.183,3.478-.385.925-1.748.549-2.1,2.981a2.878,2.878,0,0,0,2.408,3.49,3.233,3.233,0,0,0,3.51-2.325c.675-2.613-1.537-3.392-2.03-4.546-.5-1.172-.6-1.739.59-3.032.659-.719,2.53.372,2.964,1.286.675,1.42-.183,2.783,1.006,4.352a2.976,2.976,0,0,0,4.694-.011c.824-.916,1.462-2.32-.158-4.15-.783-.885-2.452-.765-4.333-1.29-.924-.258-1.992-1.6-1.633-2.542.265-.7,1.232-1.115,2.569-.817,1.94.431,2.6,2.148,4.168,2.371A2.943,2.943,0,0,0,29.9,16.53,2.8,2.8,0,0,0,27.1,13.224Zm-11.14,5.029a2.229,2.229,0,1,1,2.229-2.229A2.229,2.229,0,0,1,15.956,18.253Z" style="fill:#72ff01" /></symbol><symbol id="dartlang" viewBox="0 0 32 32"><title>dartlang</title><path d="M16.739,2.037a1.314,1.314,0,0,0-.916.377l-.013.01L7.22,7.389l8.566,8.566v.006l10.3,10.3,1.963-3.536L20.968,5.728l-3.3-3.3a1.307,1.307,0,0,0-.927-.388Z" style="fill:#66c3fa" /><path d="M7.25,7.35,2.288,15.931l-.01.013a1.322,1.322,0,0,0-.378.919,1.3,1.3,0,0,0,.387.924L6.4,21.9l16.084,6.327,3.636-2.02-.1-.1-.025,0-10.083-10.1H15.9L7.25,7.35Z" style="fill:#215896" /><path d="M7.192,7.362l8.764,8.773h.013l10.087,10.1,3.839-.732L29.9,14.14l-4.054-3.973a6.521,6.521,0,0,0-3.624-1.616l0-.044L7.192,7.362Z" style="fill:#235997" /><path d="M7.256,7.411l8.768,8.768v.013L26.116,26.284l-.734,3.839H14.022l-3.971-4.056a6.522,6.522,0,0,1-1.614-3.625l-.044,0L7.256,7.411Z" style="fill:#58b6f0" /></symbol><symbol id="Layer_1" data-name="Layer 1" viewBox="0 0 32 32"><path d="M16.74,2a1.33,1.33,0,0,0-.92.37h0l-8.59,5L15.79,16h0l10.3,10.3,2-3.53L21,5.73l-3.3-3.3A1.31,1.31,0,0,0,16.74,2Z" style="fill:#f15742" /><path d="M7.25,7.35l-5,8.58h0a1.34,1.34,0,0,0-.38.92,1.31,1.31,0,0,0,.39.93L6.4,21.9l16.08,6.33,3.64-2-.1-.1h0L15.91,16h0Z" style="fill:#b21f24" /><path d="M7.19,7.36,16,16.14h0l10.09,10.1,3.84-.74V14.14l-4-4a6.48,6.48,0,0,0-3.63-1.62v0Z" style="fill:#b21f24" /><path d="M7.26,7.41,16,16.18h0l10.1,10.09-.74,3.84H14l-4-4.05a6.54,6.54,0,0,1-1.61-3.63h0Z" style="fill:#f15d47" /></symbol><symbol id="Layer_1" data-name="Layer 1" viewBox="0 0 32 32"><path d="M16.74,2a1.33,1.33,0,0,0-.92.37h0l-8.59,5L15.79,16h0l10.3,10.3,2-3.53L21,5.73l-3.3-3.3A1.31,1.31,0,0,0,16.74,2Z" style="fill:#91d8a1" /><path d="M7.25,7.35l-5,8.58h0a1.34,1.34,0,0,0-.38.92,1.31,1.31,0,0,0,.39.93L6.4,21.9l16.08,6.33,3.64-2-.1-.1h0L15.91,16h0Z" style="fill:#368f49" /><path d="M7.19,7.36,16,16.14h0l10.09,10.1,3.84-.74V14.14l-4-4a6.48,6.48,0,0,0-3.63-1.62v0Z" style="fill:#368f49" /><path d="M7.26,7.41,16,16.18h0l10.1,10.09-.74,3.84H14l-4-4.05a6.54,6.54,0,0,1-1.61-3.63h0Z" style="fill:#91d8a1" /></symbol><symbol id="db" viewBox="0 0 32 32"><title>db</title><path d="M8.562,15.256A21.159,21.159,0,0,0,16,16.449a21.159,21.159,0,0,0,7.438-1.194c1.864-.727,2.525-1.535,2.525-2V9.7a10.357,10.357,0,0,1-2.084,1.076A22.293,22.293,0,0,1,16,12.078a22.36,22.36,0,0,1-7.879-1.3A10.28,10.28,0,0,1,6.037,9.7v3.55C6.037,13.724,6.7,14.528,8.562,15.256Z" style="fill:#c4c7ce" /><path d="M8.562,21.961a15.611,15.611,0,0,0,2.6.741A24.9,24.9,0,0,0,16,23.155a24.9,24.9,0,0,0,4.838-.452,15.614,15.614,0,0,0,2.6-.741c1.864-.727,2.525-1.535,2.525-2v-3.39a10.706,10.706,0,0,1-1.692.825A23.49,23.49,0,0,1,16,18.74a23.49,23.49,0,0,1-8.271-1.348,10.829,10.829,0,0,1-1.692-.825V19.96C6.037,20.426,6.7,21.231,8.562,21.961Z" style="fill:#c4c7ce" /><path d="M16,30c5.5,0,9.963-1.744,9.963-3.894V23.269a10.5,10.5,0,0,1-1.535.762l-.157.063A23.487,23.487,0,0,1,16,25.445a23.422,23.422,0,0,1-8.271-1.351c-.054-.02-.106-.043-.157-.063a10.5,10.5,0,0,1-1.535-.762v2.837C6.037,28.256,10.5,30,16,30Z" style="fill:#c4c7ce" /><ellipse cx="16" cy="5.894" rx="9.963" ry="3.894" style="fill:#c4c7ce" /></symbol><symbol id="deno" viewBox="0 0 32 32"><title>deno</title><path d="M4.45,21.34A12.54,12.54,0,0,1,3.27,16a11.8,11.8,0,0,1,.09-1.46,11.07,11.07,0,0,1,.24-1.42,12.75,12.75,0,0,1,9.73-9.57A13.07,13.07,0,0,1,16,3.27c.32,0,.64,0,1,0a12.73,12.73,0,0,1,11.57,10.5A13.12,13.12,0,0,1,28.73,16c0,.32,0,.64,0,1a12.61,12.61,0,0,1-3.3,7.61,6.62,6.62,0,0,1-4.7,2.06,4.68,4.68,0,0,1-2.88-1.09,4.58,4.58,0,0,1-1.63-3.09,5.47,5.47,0,0,1,.14-1.61,3.38,3.38,0,0,1,.8-1.53,4.94,4.94,0,0,1-1.3-.88.15.15,0,0,1,0-.19.16.16,0,0,1,.18-.06,9.69,9.69,0,0,0,1.46.37,19.9,19.9,0,0,0,2.45.31C22.08,19,24.33,18,25,16.09s.43-3.83-2.08-5-3.66-2.5-5.69-3.32a5,5,0,0,0-4.3.62c-4.08,2.25-7.72,9.35-6,15.94a.21.21,0,0,1-.1.23.2.2,0,0,1-.23,0,13,13,0,0,1-1.33-1.73A12.66,12.66,0,0,1,4.45,21.34Z" style="fill-rule:evenodd" /><path d="M16.65,2A14,14,0,1,1,2,15.35,14,14,0,0,1,16.65,2Zm3.27,16.85a19.9,19.9,0,0,1-2.45-.31A8.62,8.62,0,0,1,16,18.19a.16.16,0,0,0-.18.06.15.15,0,0,0,0,.19,4.94,4.94,0,0,0,1.3.88,3.38,3.38,0,0,0-.8,1.53,5.47,5.47,0,0,0-.14,1.61,4.58,4.58,0,0,0,1.63,3.09,4.68,4.68,0,0,0,2.88,1.09,6.62,6.62,0,0,0,4.72-2.07,12.73,12.73,0,1,0-18.84,0,.21.21,0,0,0,.35-.19c-1.68-6.59,2-13.69,6-15.94a5,5,0,0,1,4.3-.62c2,.82,3.18,2.18,5.69,3.32s2.78,3,2.08,5S22.08,19,19.92,18.87ZM15.54,8.69c-.82.06-1.36,1.08-1.43,1.73s.25,1.73,1.32,1.71c1.25,0,1.64-1.09,1.5-2.13A1.39,1.39,0,0,0,15.54,8.69Z" style="fill:#f5f5f5;fill-rule:evenodd" /><path d="M15.54,8.68A1.4,1.4,0,0,1,16.93,10c.14,1-.24,2.12-1.49,2.14-1.07,0-1.4-1.06-1.33-1.71S14.72,8.75,15.54,8.68Z" style="fill-rule:evenodd" /></symbol><symbol id="docker" viewBox="0 0 32 32"><title>docker</title><path d="M18.191,13.071H20.7v2.566H21.97a5.5,5.5,0,0,0,1.744-.292,4.462,4.462,0,0,0,.848-.383,3.149,3.149,0,0,1-.589-1.623,3.427,3.427,0,0,1,.616-2.416l.264-.305.314.253a4,4,0,0,1,1.575,2.538,3.837,3.837,0,0,1,2.913.271l.345.2-.181.354a3.629,3.629,0,0,1-3.648,1.74c-2.173,5.413-6.9,7.976-12.642,7.976A7.958,7.958,0,0,1,6.3,20.211l-.025-.043-.226-.459a7.28,7.28,0,0,1-.579-3.693l.035-.38H7.648V13.071h2.51v-2.51h5.02V8.051h3.012v5.02Z" style="fill:#3a4e55" /><path d="M26.324,14.021A3.311,3.311,0,0,0,24.906,11.2a3.072,3.072,0,0,0,.289,3.821,5.279,5.279,0,0,1-3.225,1.037H5.883a6.779,6.779,0,0,0,.667,3.737l.183.335a6.2,6.2,0,0,0,.379.569h0q.992.064,1.829.045h0a8.972,8.972,0,0,0,2.669-.389.193.193,0,1,1,.126.365c-.09.031-.184.061-.281.088h0a8.4,8.4,0,0,1-1.845.3c.044,0-.046.007-.046.007l-.082.007c-.291.016-.6.02-.925.02-.351,0-.7-.007-1.083-.026l-.01.007a7.882,7.882,0,0,0,6.063,2.41c5.56,0,10.276-2.465,12.365-8,1.482.152,2.906-.226,3.553-1.49a3.5,3.5,0,0,0-3.122-.022" style="fill:#00aada" /><path d="M26.324,14.021A3.311,3.311,0,0,0,24.906,11.2a3.072,3.072,0,0,0,.289,3.821,5.279,5.279,0,0,1-3.225,1.037H6.836a5.223,5.223,0,0,0,2.106,4.686h0a8.972,8.972,0,0,0,2.669-.389.193.193,0,1,1,.126.365c-.09.031-.184.061-.281.088h0a8.83,8.83,0,0,1-1.894.314L9.543,21.1c1.892.971,4.636.967,7.782-.241a21.868,21.868,0,0,0,9.1-6.889l-.1.048" style="fill:#27b9ec" /><path d="M5.913,17.732a6.431,6.431,0,0,0,.637,2.061l.183.335a6.2,6.2,0,0,0,.379.569q.992.064,1.829.045a8.972,8.972,0,0,0,2.669-.389.193.193,0,1,1,.126.365c-.09.031-.184.061-.281.088h0a8.826,8.826,0,0,1-1.891.307l-.1,0c-.291.016-.6.026-.922.026-.351,0-.709-.007-1.1-.026a7.913,7.913,0,0,0,6.076,2.413c4.76,0,8.9-1.807,11.3-5.8Z" style="fill:#088cb9" /><path d="M6.98,17.732a4.832,4.832,0,0,0,1.961,3.01,8.972,8.972,0,0,0,2.669-.389.193.193,0,1,1,.126.365c-.09.031-.184.061-.281.088h0a8.959,8.959,0,0,1-1.9.307c1.892.971,4.628.957,7.773-.252a20.545,20.545,0,0,0,5.377-3.13Z" style="fill:#039cc7" /><path d="M9.889,13.671h.172v1.813H9.889V13.671Zm-.33,0h.179v1.813H9.559V13.671Zm-.33,0h.179v1.813H9.23V13.671Zm-.33,0h.179v1.813H8.9V13.671Zm-.33,0h.179v1.813H8.57V13.671Zm-.323,0h.172v1.813H8.248V13.671Zm-.181-.181h2.175v2.176H8.066V13.49Z" style="fill:#00acd3" /><path d="M12.4,11.161h.172v1.813H12.4V11.161Zm-.33,0h.179v1.813H12.07V11.161Zm-.33,0h.179v1.813H11.74V11.161Zm-.33,0h.179v1.813H11.41V11.161Zm-.33,0h.178v1.813h-.178V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H10.577V10.979Z" style="fill:#00acd3" /><path d="M12.4,13.671h.172v1.813H12.4V13.671Zm-.33,0h.179v1.813H12.07V13.671Zm-.33,0h.179v1.813H11.74V13.671Zm-.33,0h.179v1.813H11.41V13.671Zm-.33,0h.178v1.813h-.178V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H10.577V13.49Z" style="fill:#26c2ee" /><path d="M14.909,13.671h.172v1.813h-.172V13.671Zm-.33,0h.179v1.813H14.58V13.671Zm-.33,0h.179v1.813H14.25V13.671Zm-.33,0H14.1v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H13.087V13.49Z" style="fill:#00acd3" /><path d="M14.909,11.161h.172v1.813h-.172V11.161Zm-.33,0h.179v1.813H14.58V11.161Zm-.33,0h.179v1.813H14.25V11.161Zm-.33,0H14.1v1.813h-.179V11.161Zm-.33,0h.179v1.813h-.179V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H13.087V10.979Z" style="fill:#26c2ee" /><path d="M17.42,13.671h.172v1.813H17.42V13.671Zm-.33,0h.179v1.813H17.09V13.671Zm-.33,0h.179v1.813H16.76V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813H16.1V13.671Zm-.323,0h.172v1.813h-.172V13.671ZM15.6,13.49h2.176v2.176H15.6V13.49Z" style="fill:#26c2ee" /><path d="M17.42,11.161h.172v1.813H17.42V11.161Zm-.33,0h.179v1.813H17.09V11.161Zm-.33,0h.179v1.813H16.76V11.161Zm-.33,0h.179v1.813h-.179V11.161Zm-.33,0h.179v1.813H16.1V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H15.6V10.979Z" style="fill:#00acd3" /><path d="M17.42,8.65h.172v1.813H17.42V8.65Zm-.33,0h.179v1.813H17.09V8.65Zm-.33,0h.179v1.813H16.76V8.65Zm-.33,0h.179v1.813h-.179V8.65Zm-.33,0h.179v1.813H16.1V8.65Zm-.323,0h.172v1.813h-.172V8.65ZM15.6,8.469h2.176v2.176H15.6V8.469Z" style="fill:#26c2ee" /><path d="M19.93,13.671H20.1v1.813H19.93V13.671Zm-.33,0h.178v1.813H19.6V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H18.107V13.49Z" style="fill:#00acd3" /><path d="M12.616,19.193a.6.6,0,1,1-.6.6.6.6,0,0,1,.6-.6" style="fill:#d5eef2" /><path d="M12.616,19.363a.431.431,0,0,1,.156.029.175.175,0,1,0,.241.236.43.43,0,1,1-.4-.265" style="fill:#3a4e55" /><path d="M2,17.949H29.92c-.608-.154-1.923-.362-1.707-1.159-1.105,1.279-3.771.9-4.444.267-.749,1.087-5.111.674-5.415-.173-.939,1.1-3.85,1.1-4.789,0-.3.847-4.666,1.26-5.415.173-.673.631-3.338,1.012-4.444-.267.217.8-1.1,1.005-1.707,1.159" style="fill:#3a4e55" /><path d="M14.211,23.518a5.287,5.287,0,0,1-2.756-2.711,9.2,9.2,0,0,1-1.987.3q-.436.024-.917.025-.554,0-1.168-.033a7.942,7.942,0,0,0,6.145,2.43q.344,0,.683-.013" style="fill:#c0dbe1" /><path d="M12.007,21.773a5.206,5.206,0,0,1-.552-.966,9.2,9.2,0,0,1-1.987.3,6.325,6.325,0,0,0,2.539.664" style="fill:#d5eef2" /></symbol><symbol id="env" width="32" height="32" version="1.1"><g transform="matrix(1.1667 0 0 1.1667 2 2)" fill-rule="evenodd"><path d="m1 1h22v22h-22z" /><path d="m24 0v24h-24v-24zm-13.067 15.89h-4.093v5.52h4.198v-0.93h-3.083v-1.503h2.77v-0.93h-2.77v-1.224h2.978v-0.934zm2.146 0h-1.084v5.52h1.035v-3.6l2.226 3.6h1.118v-5.52h-1.036v3.686l-2.259-3.687zm5.117 0h-1.208l1.973 5.52h1.19l1.976-5.52h-1.182l-1.352 4.085-1.397-4.086zm-12.796 3.79h-1.68v1.68h1.68z" fill="#ecd53f" fill-rule="nonzero" /></g></symbol><symbol id="esbuild" viewBox="0 0 32 32"><circle cx="16" cy="16" r="14" fill="#ffcf00" /><path d="M18.2 23.8l-2.4-2.4 5.5-5.5-5.5-5.5L18.2 8l7.8 7.8-7.8 8zm-8.4 0l-2.4-2.4 5.5-5.5-5.5-5.5L9.8 8l7.8 7.8-7.8 8z" fill="#191919" /></symbol><symbol id="eslint" viewBox="0 0 32 32"><title>eslint</title><path d="M13.027,30,2.39,20.422l2.979-14L18.973,2,29.61,11.578l-2.979,14L13.027,30ZM7.883,18.642l6.342,5.7L22.337,21.7l1.781-8.344L17.775,7.644,9.663,10.3,7.883,18.642Z" style="fill:#4b32c3" /><path d="M21.72,25.915H10.28L4.554,16,10.28,6.085H21.72L27.446,16,21.72,25.915Zm-9.426-3.491h7.413L23.419,16,19.707,9.576H12.293L8.593,16l3.7,6.424Z" style="fill:#8080f2" /></symbol><symbol id="excel" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="4.494" y1="-2092.086" x2="13.832" y2="-2075.914" gradientTransform="translate(0 2100)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#18884f" /><stop offset="0.5" stop-color="#117e43" /><stop offset="1" stop-color="#0b6631" /></linearGradient></defs><title>excel</title><path d="M19.581,15.35,8.512,13.4V27.809A1.192,1.192,0,0,0,9.705,29h19.1A1.192,1.192,0,0,0,30,27.809h0V22.5Z" style="fill:#185c37" /><path d="M19.581,3H9.705A1.192,1.192,0,0,0,8.512,4.191h0V9.5L19.581,16l5.861,1.95L30,16V9.5Z" style="fill:#21a366" /><path d="M8.512,9.5H19.581V16H8.512Z" style="fill:#107c41" /><path d="M16.434,8.2H8.512V24.45h7.922a1.2,1.2,0,0,0,1.194-1.191V9.391A1.2,1.2,0,0,0,16.434,8.2Z" style="opacity:0.10000000149011612;isolation:isolate" /><path d="M15.783,8.85H8.512V25.1h7.271a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.783,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M15.783,8.85H8.512V23.8h7.271a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.783,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M15.132,8.85H8.512V23.8h6.62a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.132,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M3.194,8.85H15.132a1.193,1.193,0,0,1,1.194,1.191V21.959a1.193,1.193,0,0,1-1.194,1.191H3.194A1.192,1.192,0,0,1,2,21.959V10.041A1.192,1.192,0,0,1,3.194,8.85Z" style="fill:url(#a)" /><path d="M5.7,19.873l2.511-3.884-2.3-3.862H7.758L9.013,14.6c.116.234.2.408.238.524h.017c.082-.188.169-.369.26-.546l1.342-2.447h1.7l-2.359,3.84,2.419,3.905H10.821l-1.45-2.711A2.355,2.355,0,0,1,9.2,16.8H9.176a1.688,1.688,0,0,1-.168.351L7.515,19.873Z" style="fill:#fff" /><path d="M28.806,3H19.581V9.5H30V4.191A1.192,1.192,0,0,0,28.806,3Z" style="fill:#33c481" /><path d="M19.581,16H30v6.5H19.581Z" style="fill:#107c41" /></symbol><symbol id="expo" viewBox="0 0 32 32"><title>expo</title><path d="M3.979,20.059,11.252,6.2l7.155-3.835,2.127,1.074L13.422,7.457l7.349,22.088L18.407,28.17l-5.5-12.677-7.22,5.479Z" style="fill:#fff" /><ellipse cx="25.24" cy="13.967" rx="2.686" ry="2.503" style="fill:#fff" /><path d="M27.2,12.85a2.433,2.433,0,0,0-4.158.3,2.19,2.19,0,0,0,.419,2.449A3.546,3.546,0,0,0,27.2,12.85ZM19.976,3.4l-1.547-.849L11.693,6.3l.537.29,1.02.537L15.1,6.1l4.878-2.718Zm.623-.258a.24.24,0,0,1,.172.161L23.027,9.96a.223.223,0,0,1-.108.29,4.361,4.361,0,0,0-2.105,4.985,4.607,4.607,0,0,0,4.92,3.244.284.284,0,0,1,.279.172l2.331,6.833a.275.275,0,0,1-.107.3l-7.166,4.189a.263.263,0,0,1-.107.022.285.285,0,0,1-.193-.032l-2.514-1.58a.253.253,0,0,1-.108-.107L13.24,16.986,5.762,21.24a.27.27,0,0,1-.053.022.258.258,0,0,1-.237-.011l-1.7-.967a.247.247,0,0,1-.108-.322L10.93,6.178a.255.255,0,0,1,.118-.107l7.241-4.039a.274.274,0,0,1,.258,0ZM11.617,6.844l-.354-.182-7,13.332,1.279.72,6.037-7.9a.3.3,0,0,1,.248-.108.3.3,0,0,1,.214.161l6.575,15.148L20.373,29.1,13.315,8.467l-.3-.86-1.407-.773Zm10.829,7.95a2.73,2.73,0,0,1,1.343-3.115,2.965,2.965,0,0,1,3.481.43,2.717,2.717,0,0,1,.078,3.843q-.037.039-.078.078a2.932,2.932,0,0,1-4.824-1.236Z" style="fill:#4630eb" /></symbol><symbol id="fastly" viewBox="0 0 32 32"><title>fastly</title><path fill="#ff282d" d="M18.23 5.55V3.52h.73V2h-6.03v1.52h.73v2.05a12.33 12.33 0 1 0 4.57-.02zM16.34 24v-.71h-.71v.7A6.34 6.34 0 0 1 9.68 18h.72v-.71h-.7a6.34 6.34 0 0 1 5.94-5.95v.7h.72v-.71a6.33 6.33 0 0 1 5.98 5.97h-.71v.71h.71a6.36 6.36 0 0 1-6 6z" /></symbol><symbol id="font" viewBox="0 0 32 32"><title>font</title><path d="M12.677,17.781l-2.626-6.256L7.357,17.781ZM19.4,24.292H12.331V22.927l.458-.023a1.847,1.847,0,0,0,.972-.2.313.313,0,0,0,.145-.263,4.158,4.158,0,0,0-.419-1.4l-.812-1.931H7.322L6.4,21.259a3.319,3.319,0,0,0-.349,1.157c0,.036,0,.119.154.241a2.481,2.481,0,0,0,1.191.247l.448.033v1.354H2V22.981l.4-.07A2.188,2.188,0,0,0,3.4,22.593a6.318,6.318,0,0,0,1.18-2.066L10.155,7.491H11.2l5.512,13.174A5.255,5.255,0,0,0,17.761,22.5a1.959,1.959,0,0,0,1.19.4l.454.027Z" style="fill:#cfcfcf" /><path d="M25.841,21.56V17.575a22.542,22.542,0,0,0-2.226.97,3.845,3.845,0,0,0-1.29,1.05,2.03,2.03,0,0,0-.388,1.2,1.951,1.951,0,0,0,.491,1.362,1.49,1.49,0,0,0,1.13.544A4.142,4.142,0,0,0,25.841,21.56Zm-3.333,2.949a2.833,2.833,0,0,1-2.139-.893,3.206,3.206,0,0,1-.833-2.285,2.959,2.959,0,0,1,.415-1.577,5,5,0,0,1,1.791-1.625,23.876,23.876,0,0,1,3.617-1.588v-.074a2.905,2.905,0,0,0-.383-1.833,1.325,1.325,0,0,0-1.075-.412,1.155,1.155,0,0,0-.816.26.687.687,0,0,0-.277.536l.023.646a1.62,1.62,0,0,1-.4,1.158,1.481,1.481,0,0,1-2.1-.019,1.634,1.634,0,0,1-.391-1.134,2.8,2.8,0,0,1,1.182-2.177,4.813,4.813,0,0,1,3.125-.932,5.381,5.381,0,0,1,2.508.524,2.628,2.628,0,0,1,1.213,1.346,6.391,6.391,0,0,1,.244,2.2v3.55a14.665,14.665,0,0,0,.051,1.749.661.661,0,0,0,.054.2c.085-.078.284-.225.864-.806L30,20.495v1.967l-.1.128c-.958,1.283-1.883,1.907-2.83,1.907a1.6,1.6,0,0,1-1.257-.557,1.788,1.788,0,0,1-.358-.74,9.688,9.688,0,0,1-1.433.977A3.579,3.579,0,0,1,22.508,24.509Z" style="fill:#cfcfcf" /></symbol><symbol id="language" viewBox="0 0 32 32" fill="#58a0ff"><title>language</title><path d="M16,30A14,14,0,1,1,30,16,14.016,14.016,0,0,1,16,30ZM16,3.176A12.824,12.824,0,1,0,28.824,16,12.84,12.84,0,0,0,16,3.176M16.317,10.474A44.779,44.779,0,0,1,4.42,8.92l.34-1.126c.111.034,11.277,3.32,22.427,0l.335,1.127A39.374,39.374,0,0,1,16.317,10.474ZM4.785,23.907,4.45,22.781c11.5-3.422,22.634-.14,23.1,0l-.34,1.126C27.1,23.873,15.936,20.588,4.785,23.907ZM11.468,28.764a35.454,35.454,0,0,1-.742-25.71l1.082.461A34.228,34.228,0,0,0,12.55,28.3ZM20.441,28.764,19.36,28.3A34.229,34.229,0,0,0,20.1,3.515l1.082-.461A35.461,35.461,0,0,1,20.441,28.764Z" /><path d="M3,15.412v1.176h26v-1.176Z" /><path d="M15.412,3h1.176v26h-1.176Z" /></symbol><symbol id="glsl" viewBox="0 0 32 32"><title>glsl</title><path d="M7.779,18.923A2.333,2.333,0,0,1,5.4,17.16c.306,1.462,1.961,2.892,7.183,3.529a14.228,14.228,0,0,0,9.232-1.612s.733-.322.293.176c0,0-3.107,2.873-9.2,2.9S1.97,19.107,2,16c-.029-3.107,4.806-6.185,10.9-6.155s9.2,2.9,9.2,2.9c.44.5-.293.176-.293.176-1.084-.7-4.286-2.089-9.232-1.612-4.866.469-6.453,2.122-6.981,3.235a3.254,3.254,0,0,0-.318,1.24,2.424,2.424,0,0,1,2.5-2.316A2.507,2.507,0,0,1,10.3,16.195,2.506,2.506,0,0,1,7.779,18.92Zm19.647-1.074H30v.937H26.344V13.609h1.082v4.24ZM23.454,16h2.163v2.791H24.9l-.108-.649a1.9,1.9,0,0,1-1.614.786,2.414,2.414,0,0,1-2.379-2.711,2.485,2.485,0,0,1,2.531-2.74A2.053,2.053,0,0,1,25.6,15.217H24.515a1.136,1.136,0,0,0-1.132-.851c-.771,0-1.485.534-1.485,1.86,0,1.413.771,1.781,1.506,1.781a1.28,1.28,0,0,0,1.254-1.139h-1.2V16ZM7.781,14.1a1.86,1.86,0,0,0-1.8,2.105,1.86,1.86,0,0,0,1.8,2.105,1.86,1.86,0,0,0,1.8-2.105A1.86,1.86,0,0,0,7.781,14.1Zm2.911,1.383h.525v.468h.013a1.12,1.12,0,0,1,.987-.563,1.565,1.565,0,0,1,1.506,1.677,1.675,1.675,0,0,1-1.583,1.824,1,1,0,0,1-.88-.443h-.013V20.1h-.557V15.479ZM12.1,18.4c.608,0,1.019-.527,1.019-1.254,0-.424-.171-1.264-1.032-1.264-.8,0-.893.867-.893,1.406,0,.88.551,1.114.905,1.114Zm5-.652a1.378,1.378,0,0,1-1.488,1.133,1.487,1.487,0,0,1-1.482-1.658c0-1.025.494-1.842,1.588-1.842.956,0,1.424.76,1.424,1.931H14.721c0,.69.323,1.089.962,1.089a.841.841,0,0,0,.854-.652H17.1Zm-.59-.88c-.032-.513-.247-.987-.924-.987a.972.972,0,0,0-.918.987h1.842Zm3.713,1.917h-.557V16.751c0-.576-.165-.867-.709-.867-.317,0-.874.2-.874,1.1v1.8h-.557V15.479h.525v.468h.013a1.2,1.2,0,0,1,1-.563,1.046,1.046,0,0,1,1.158,1.152v2.253" style="fill:#4386b5" /></symbol><symbol id="go" viewBox="0 0 254.5 225"><title>go</title><path d="M-46.926,89c-.621,0-.777-.311-.466-.777l3.262-4.194a2.225,2.225,0,0,1,1.708-.777H13.026c.621,0,.777.466.466.932l-2.64,4.038a2.367,2.367,0,0,1-1.553.932Z" style="fill:#00acd7" /><path d="M-70.379,103.285c-.621,0-.777-.311-.466-.777l3.262-4.194a2.225,2.225,0,0,1,1.708-.777H4.95a.714.714,0,0,1,.777.932L4.484,102.2a1.358,1.358,0,0,1-1.4.932Z" style="fill:#00acd7" /><path d="M-32.792,117.574c-.621,0-.777-.466-.466-.932l2.174-3.883a2.06,2.06,0,0,1,1.553-.932H1.533c.621,0,.932.466.932,1.087l-.311,3.728a1.167,1.167,0,0,1-1.087,1.087Z" style="fill:#00acd7" /><path d="M128.426,86.2c-9.785,2.485-16.464,4.349-26.093,6.834-2.33.621-2.485.777-4.5-1.553-2.33-2.64-4.038-4.349-7.3-5.9-9.785-4.815-19.259-3.417-28.112,2.33-10.561,6.834-16,16.929-15.842,29.51.155,12.425,8.7,22.676,20.968,24.385,10.561,1.4,19.414-2.33,26.4-10.251,1.4-1.708,2.64-3.572,4.194-5.747H68.163c-3.262,0-4.038-2.019-2.951-4.659,2.019-4.815,5.747-12.891,7.921-16.929a4.194,4.194,0,0,1,3.883-2.485h56.535c-.311,4.194-.311,8.387-.932,12.581a66.239,66.239,0,0,1-12.736,30.442C108.7,159.51,94.1,168.673,75.618,171.158c-15.221,2.019-29.355-.932-41.78-10.251a48.785,48.785,0,0,1-19.725-34.48c-2.019-16.929,2.951-32.15,13.2-45.508C38.342,66.475,52.942,57.312,70.8,54.05c14.6-2.64,28.578-.932,41.159,7.61a48.686,48.686,0,0,1,18.017,21.9C130.911,84.958,130.289,85.735,128.426,86.2Z" style="fill:#00acd7" /><path d="M179.835,172.09c-14.134-.311-27.025-4.349-37.9-13.668a48.711,48.711,0,0,1-16.774-29.976c-2.8-17.551,2.019-33.082,12.581-46.905,11.338-14.91,25.006-22.676,43.488-25.938,15.842-2.8,30.753-1.243,44.265,7.921,12.27,8.387,19.88,19.725,21.9,34.635,2.64,20.968-3.417,38.052-17.861,52.652a71.17,71.17,0,0,1-37.276,19.88C188.067,171.469,183.874,171.624,179.835,172.09ZM216.8,109.343a44.7,44.7,0,0,0-.466-5.125c-2.8-15.376-16.929-24.074-31.684-20.657-14.444,3.262-23.763,12.425-27.18,27.025a25.579,25.579,0,0,0,14.289,29.355c8.542,3.728,17.085,3.262,25.317-.932C209.345,132.64,216.024,122.7,216.8,109.343Z" style="fill:#00acd7" /></symbol><symbol id="godot" version="1.1" viewBox="0 0 32 32"><title>godot</title><path d="M28.166,21.029v1.652a.374.374,0,0,1-.26.357l-2.6.841a.367.367,0,0,1-.335-.054.374.374,0,0,1-.155-.3v-1.8l-2.438.464V24.02a.375.375,0,0,1-.325.371l-3.525.483c-.016,0-.034,0-.051,0A.374.374,0,0,1,18.1,24.5V22.557l-1.819.008h-.267l-1.819-.008V24.5a.375.375,0,0,1-.375.376c-.017,0-.034,0-.052,0l-3.525-.483a.375.375,0,0,1-.324-.371V22.184l-2.439-.464v1.8a.374.374,0,0,1-.154.3.37.37,0,0,1-.336.054l-2.6-.841a.374.374,0,0,1-.259-.357V21.029l-1.608-.541a4.558,4.558,0,0,0-.124,1.04c0,4.317,6.082,7.65,13.6,7.674h.019c7.517-.024,13.6-3.356,13.6-7.674a4.54,4.54,0,0,0-.1-.95Z" fill="#bf4747" /><path d="M3.711,13.373V20.1l.907.306a.374.374,0,0,1,.256.355v1.65l1.855.6V21.267a.376.376,0,0,1,.445-.369l3.189.609a.374.374,0,0,1,.305.368v1.818l2.775.379v-1.89a.374.374,0,0,1,.376-.375h0l2.327.009,2.326-.009a.374.374,0,0,1,.377.375v1.89l2.775-.379V21.874a.373.373,0,0,1,.3-.368l3.189-.609a.377.377,0,0,1,.446.369v1.741l1.855-.6V20.76a.374.374,0,0,1,.255-.355l.618-.208V13.373h.017A26.792,26.792,0,0,0,30,10.931a19.02,19.02,0,0,0-2.509-3.288A24.507,24.507,0,0,0,25,9.091a13.01,13.01,0,0,0-1.279-1.052,15.365,15.365,0,0,0-1.375-.894,28.353,28.353,0,0,0,.232-3.071A15.968,15.968,0,0,0,18.847,2.8a26.44,26.44,0,0,0-1.385,2.7,9.46,9.46,0,0,0-1.453-.116h-.018a9.457,9.457,0,0,0-1.454.116,26.275,26.275,0,0,0-1.385-2.7A15.961,15.961,0,0,0,9.422,4.075a28.142,28.142,0,0,0,.232,3.071,15.312,15.312,0,0,0-1.376.894A13.06,13.06,0,0,0,7,9.091a24.553,24.553,0,0,0-2.49-1.448A19.02,19.02,0,0,0,2,10.931a26.792,26.792,0,0,0,1.694,2.443Z" fill="#bf4747" /><path d="m12.462 16.6a2.739 2.739 0 1 1-2.74-2.738 2.739 2.739 0 0 1 2.74 2.738" fill="#fff" /><path d="m11.8 16.764a1.819 1.819 0 1 1-1.819-1.819 1.817 1.817 0 0 1 1.819 1.819" fill="#414042" /><path d="M16.166,19.59a.844.844,0,0,1-.882-.8V16.267a.886.886,0,0,1,1.764,0v2.522a.845.845,0,0,1-.883.8" fill="#fff" /><path d="m19.871 16.6a2.739 2.739 0 1 0 2.74-2.738 2.739 2.739 0 0 0-2.74 2.738" fill="#fff" /><path d="m20.531 16.764a1.818 1.818 0 1 0 1.817-1.819 1.817 1.817 0 0 0-1.817 1.819" fill="#414042" /></symbol><symbol id="graphql" viewBox="0 0 32 32"><title>graphql</title><rect x="-0.43" y="12.534" width="22.901" height="1.187" transform="translate(-5.858 16.107) rotate(-59.999)" style="fill:#e10098" /><rect x="4.545" y="21.162" width="22.902" height="1.187" style="fill:#e10098" /><rect x="10.43" y="18.008" width="1.187" height="13.227" transform="translate(-15.812 21.857) rotate(-59.999)" style="fill:#e10098" /><rect x="20.381" y="0.771" width="1.187" height="13.227" transform="translate(4.092 21.856) rotate(-59.999)" style="fill:#e10098" /><rect x="4.412" y="6.787" width="13.227" height="1.187" transform="translate(-2.213 6.502) rotate(-30.001)" style="fill:#e10098" /><rect x="20.389" y="1.677" width="1.187" height="22.901" transform="translate(-3.753 12.25) rotate(-30.001)" style="fill:#e10098" /><rect x="5.454" y="9.386" width="1.187" height="13.228" style="fill:#e10098" /><rect x="25.36" y="9.386" width="1.187" height="13.228" style="fill:#e10098" /><rect x="15.222" y="24.097" width="11.504" height="1.037" transform="translate(-9.498 13.785) rotate(-30.001)" style="fill:#e10098" /><path d="M28.12,23a2.5,2.5,0,1,1-.915-3.411A2.5,2.5,0,0,1,28.12,23" style="fill:#e10098" /><path d="M8.2,11.5a2.5,2.5,0,1,1-.915-3.411A2.5,2.5,0,0,1,8.2,11.5" style="fill:#e10098" /><path d="M3.88,23a2.5,2.5,0,1,1,3.411.915A2.5,2.5,0,0,1,3.88,23" style="fill:#e10098" /><path d="M23.8,11.5a2.5,2.5,0,1,1,3.411.915A2.5,2.5,0,0,1,23.8,11.5" style="fill:#e10098" /><path d="M16,30a2.5,2.5,0,1,1,2.5-2.5A2.493,2.493,0,0,1,16,30" style="fill:#e10098" /><path d="M16,6.991a2.5,2.5,0,1,1,2.5-2.5,2.493,2.493,0,0,1-2.5,2.5" style="fill:#e10098" /></symbol><symbol id="grunt" viewBox="0 0 32 32"><title>grunt</title><path d="M6.957,8.806s.48,1.849.548,2.466-1.233,1.986-1.233,2.671a2.674,2.674,0,0,0,1.781,2.534,3.142,3.142,0,0,1,1.712,3.151,13.977,13.977,0,0,1-.548,2.808s-.342,4.589,1.507,5.411,1.438.822,1.849.822S16,29.9,17.779,29.424A4.88,4.88,0,0,0,20.04,28.4a2.324,2.324,0,0,0,2.329-1.439,18.6,18.6,0,0,0,.685-6.37c-.206-1.507-.479-3.493.753-4.178s2.535-1.506,2.329-2.191a5.29,5.29,0,0,0-1.3-1.644,6.753,6.753,0,0,1-.069-2.123c.205-.411,1.438-1.439.753-2.192A2.9,2.9,0,0,0,23.6,7.5l-1.575.137a9.647,9.647,0,0,0-6.165-2.26,9.275,9.275,0,0,0-5.685,2.26,3.51,3.51,0,0,0-2.192,0C6.956,8.053,6.752,7.642,6.957,8.806ZM13.05,5.749a1.585,1.585,0,0,1-.957-.585A3.311,3.311,0,0,0,9.428,3.718,11.965,11.965,0,0,0,6.561,4.1l1.245.786c.132,0,.362,0,.742.01a1.906,1.906,0,0,1,1.8,1.6l5.5-.758m3.1.01a1.585,1.585,0,0,0,.957-.585,3.309,3.309,0,0,1,2.665-1.447,11.965,11.965,0,0,1,2.867.383l-1.245.786c-.132,0-.362,0-.743.01a1.906,1.906,0,0,0-1.8,1.6l-5.5-.758" style="fill:#fba919" /><path d="M13.216,19s-1.357,2.074-2.352,3.546c-.154.228,1,.243,1,.243Zm.646-4.3s-.409,1.019-.633,1.56c-.243.588-1.17.88-1.17.88a2.651,2.651,0,0,0,.481-1.78c0-.536.692-.749.692-.749l.631.088Zm-.413.581a2.14,2.14,0,0,1-2.393.438C9.5,15.162,9.34,13.167,9.34,12.609s2.952.558,3.351.8,1.156,1.2.758,1.875ZM7.573,4.625A3.3,3.3,0,0,1,9.966,5.1,4.371,4.371,0,0,1,11.2,6.46L9.589,7.74a2.078,2.078,0,0,1-1.019-1.4c-.239-1.037-.08-1.516-1-1.715ZM13.03,12.4a3.336,3.336,0,0,0-2.451-1.324,3.162,3.162,0,0,0-2.046.382s2.272.1,2.927.956c1.219,1.6,3,1.731,3.282,1.379a1.52,1.52,0,0,1-1.078-.513A5.951,5.951,0,0,1,13.03,12.4ZM9.2,15.5s-2.521-.867-2.042-1.744.1-1.356.1-1.356S5.843,13.455,6.2,14.572c.22.685.59,1.181,2.621,2.132.974,1.809.2,5.065.247,5.081.077.026,1.367-.638,1.279-3.684-.027-.935-.1-2.213-1.155-2.6Zm3.3-9.318c-1.057.537-2.5,1.285-2.5,1.285l.57.285c-.054.088-.081.141-.081.141l.585.266s1.428,1.034,2.3,1.7a14.823,14.823,0,0,0-1.148-2.309A1.534,1.534,0,0,1,12.5,6.186Zm3.511,21.886c-3.249,0-4.349-1.649-4.349-1.649l.508,1.236A5.688,5.688,0,0,0,16,29.859m-3.984-4.55s.3,1.827,1.5,1.827c1.017,0,1.317-1.543,1.317-1.862l-2.812.035Zm-1.992-2.755a13.088,13.088,0,0,0,.6-2.553,28.767,28.767,0,0,0,.091-3.176s-.319,1.237-.6,1.436a6.439,6.439,0,0,0-.8,1.556s-.278,2.019-.41,2.7c.366.073.674-.142,1.117.04Zm-2.89-8s.678-.24.878-1.715a6.658,6.658,0,0,0-.239-2.753,9.513,9.513,0,0,1-.2,2.433c-.239.4-.439.518-.718,1.037a.771.771,0,0,0,.279,1ZM18.784,19s1.356,2.074,2.352,3.546c.154.228-1,.243-1,.243Zm-.646-4.3s.409,1.019.633,1.56c.243.588,1.17.88,1.17.88a2.652,2.652,0,0,1-.48-1.78c0-.536-.692-.749-.692-.749l-.631.088Zm.413.581a2.141,2.141,0,0,0,2.394.438c1.556-.557,1.715-2.552,1.715-3.111s-2.952.558-3.351.8-1.157,1.2-.758,1.875ZM24.427,4.625a3.3,3.3,0,0,0-2.394.479A4.382,4.382,0,0,0,20.8,6.46l1.614,1.279a2.075,2.075,0,0,0,1.019-1.4c.239-1.037.08-1.516,1-1.715ZM18.97,12.4a3.336,3.336,0,0,1,2.451-1.324,3.164,3.164,0,0,1,2.045.382s-2.272.1-2.927.956c-1.219,1.6-3,1.731-3.281,1.379a1.52,1.52,0,0,0,1.078-.513A5.951,5.951,0,0,0,18.97,12.4Zm3.835,3.1s2.52-.867,2.042-1.744-.1-1.356-.1-1.356,1.408,1.051,1.049,2.168c-.22.685-.59,1.181-2.621,2.132-.974,1.809-.2,5.065-.247,5.081-.077.026-1.367-.638-1.279-3.684C21.677,17.165,21.752,15.888,22.805,15.5ZM19.5,6.186c1.057.537,2.5,1.285,2.5,1.285l-.57.285c.054.088.081.141.081.141l-.585.266s-1.428,1.034-2.3,1.7a14.823,14.823,0,0,1,1.148-2.309A1.535,1.535,0,0,0,19.5,6.186ZM15.991,28.073c3.248,0,4.349-1.649,4.349-1.649l-.507,1.236A5.684,5.684,0,0,1,16,29.859m3.984-4.55s-.3,1.827-1.5,1.827c-1.017,0-1.317-1.543-1.317-1.862Zm1.992-2.755a13.16,13.16,0,0,1-.6-2.553,28.524,28.524,0,0,1-.091-3.176s.319,1.237.6,1.436a6.385,6.385,0,0,1,.8,1.556s.278,2.019.41,2.7c-.366.073-.674-.142-1.117.04Zm2.89-8s-.678-.24-.878-1.715a6.658,6.658,0,0,1,.239-2.753,9.513,9.513,0,0,0,.2,2.433c.239.4.439.518.718,1.037a.773.773,0,0,1-.279.995ZM16,11.3a3.028,3.028,0,0,1-1.78-.4s.695,1.218,1.779,1.218h0c1.085,0,1.779-1.218,1.779-1.218A3.037,3.037,0,0,1,16,11.3Z" style="fill:#e78724" /><path d="M13.582,14.283a2.166,2.166,0,0,1-1.888.505c-1.144-.239-1.835-.745-1.888-1.622a1.8,1.8,0,0,1,.24-1.223,6.635,6.635,0,0,1,1.888.931c.612.532,1.064,1.383,1.649,1.409ZM11.8,23.817a1.991,1.991,0,0,1,0-.788,3.621,3.621,0,0,0-.953-.338c-.253-.16-1.55.164-2.491-.974C7.182,20.291,7.43,19.44,7.43,19.44c-.3.336-.6.208-1.056,1.774s.217,2.658,1.48,3.754a4.02,4.02,0,0,0,2.167.813c-.243-.244.415-.269.869-.438a1.217,1.217,0,0,1,.3-1.009,1.55,1.55,0,0,1,.6-.358l.034-.082C11.815,23.869,11.807,23.843,11.8,23.817Zm6.618-9.534a2.166,2.166,0,0,0,1.888.505c1.144-.239,1.835-.745,1.888-1.622a1.8,1.8,0,0,0-.239-1.223,6.635,6.635,0,0,0-1.888.931C19.456,13.4,19,14.257,18.418,14.283ZM20.2,23.817a1.991,1.991,0,0,0,0-.788,3.621,3.621,0,0,1,.953-.338c.253-.16,1.551.164,2.492-.974,1.179-1.426.93-2.277.93-2.277.3.336.6.208,1.056,1.774s-.217,2.658-1.48,3.754a4.012,4.012,0,0,1-2.167.813c.243-.244-.415-.269-.869-.438a1.217,1.217,0,0,0-.3-1.009,1.55,1.55,0,0,0-.6-.358l-.034-.082a.649.649,0,0,0,.019-.076Z" style="fill:#fff" /><path d="M12.681,14.017a2.041,2.041,0,0,1-1.368.055,1.532,1.532,0,0,1-1.008-1.3s-.58,1.7,1.046,2.029a2.381,2.381,0,0,0,2.075-.493l-.745-.293Zm-1.8,11.316c-.026-.077-.046-.155-.066-.234s-.125-.33,0-.052a1.038,1.038,0,0,1-.071-.219c-2.046,0-3.827-1.408-3.483-4.361-.268-.356-.643.717-.643.717S5.6,24.158,8.242,25.311a4.094,4.094,0,0,0,1.844.549.925.925,0,0,0,.858-.365c-.024-.054-.046-.108-.065-.163Zm8.439-11.316a2.041,2.041,0,0,0,1.368.055,1.532,1.532,0,0,0,1.008-1.3s.579,1.7-1.046,2.029a2.381,2.381,0,0,1-2.075-.493l.745-.293Zm1.8,11.316c.027-.077.046-.155.066-.234s.126-.33,0-.052a1.038,1.038,0,0,0,.071-.219c2.046,0,3.827-1.408,3.482-4.361.268-.356.643.717.643.717s1.024,2.975-1.621,4.127a4.094,4.094,0,0,1-1.844.549.923.923,0,0,1-.858-.365,1.728,1.728,0,0,0,.065-.163Z" style="fill:#c9c9c9" /><path d="M9.131,13.4v-.009l0,.009ZM8.85,12.354a.784.784,0,0,1,.356-.622c-.234-.087-.463-.187-.706-.253a4.743,4.743,0,0,1,4.544,1.737,1.574,1.574,0,0,0,1.942.479,1.183,1.183,0,0,1-.473.832,1.154,1.154,0,0,1-.689.211,2.98,2.98,0,0,1-.754,1.8,2.752,2.752,0,0,0,.146-1.381,4.489,4.489,0,0,0-.184-.451c-1.054.92-2.608.072-2.982-.342a3.4,3.4,0,0,1-.687-1.879,2.555,2.555,0,0,0-.231.9A1.727,1.727,0,0,1,8.85,12.354Zm1.553-.073a1.931,1.931,0,0,0,.379,1.91,1.869,1.869,0,0,0,2.068.077A8.666,8.666,0,0,0,10.4,12.281ZM14.244,24.89H12.635a.7.7,0,0,0-.518.157.378.378,0,0,0-.048.431,2.845,2.845,0,0,0,.75.992,1.007,1.007,0,0,0,.643.23h0a.809.809,0,0,0,.6-.244,3.965,3.965,0,0,0,.713-1.057.327.327,0,0,0-.048-.364A.668.668,0,0,0,14.244,24.89ZM22.869,13.4v-.009l0,.009Zm-5.854.294a1.576,1.576,0,0,0,1.941-.479A4.743,4.743,0,0,1,23.5,11.479c-.243.066-.472.166-.706.253a.783.783,0,0,1,.355.622,1.726,1.726,0,0,1-.281,1.038,2.542,2.542,0,0,0-.231-.9,3.382,3.382,0,0,1-.687,1.877c-.374.414-1.929,1.262-2.982.342a4.526,4.526,0,0,0-.183.451,2.749,2.749,0,0,0,.146,1.38,2.974,2.974,0,0,1-.754-1.8,1.15,1.15,0,0,1-.69-.211A1.185,1.185,0,0,1,17.015,13.7Zm2.135.573a1.869,1.869,0,0,0,2.069-.077,1.929,1.929,0,0,0,.379-1.91A8.653,8.653,0,0,0,19.15,14.268Zm.733,10.777a.7.7,0,0,0-.517-.157h-1.61a.667.667,0,0,0-.484.145.329.329,0,0,0-.049.364,3.981,3.981,0,0,0,.713,1.057h0a.809.809,0,0,0,.6.244,1.007,1.007,0,0,0,.643-.23,2.845,2.845,0,0,0,.75-.992A.378.378,0,0,0,19.883,25.045ZM16,12.265h0c.7-.008,1.494-.974,1.494-.974a2.688,2.688,0,0,1-2.987,0S15.3,12.258,16,12.265Zm8.6,7.086a3.979,3.979,0,0,1,1.129,3.874,3.708,3.708,0,0,1-2.594,2.992,4.558,4.558,0,0,1-3.65,2.706A5.237,5.237,0,0,1,16,30a5.24,5.24,0,0,1-3.489-1.078,4.557,4.557,0,0,1-3.647-2.706,3.7,3.7,0,0,1-2.593-2.991A3.979,3.979,0,0,1,7.4,19.351a3.86,3.86,0,0,0,1.335,2.368,30.193,30.193,0,0,0,.213-3.387,1.835,1.835,0,0,0-.666-1.426c-.14-.08-.294-.163-.452-.249-.984-.527-2.21-1.182-2.21-2.391a1.754,1.754,0,0,1,.845-1.521c.042-.032.082-.062.118-.091a.823.823,0,0,0,.236-.238,4.315,4.315,0,0,0,.091-2.057,2.843,2.843,0,0,1-.643-2.141,1.462,1.462,0,0,1,.772-.93A2.648,2.648,0,0,1,8.1,7.051a.807.807,0,0,1,.052-.331,1.459,1.459,0,0,0,.05-.441,1.618,1.618,0,0,0-.118-.615A2.778,2.778,0,0,0,6.5,4.7L5.83,4.57l.444-.52A3.737,3.737,0,0,1,8.8,3.092a4.268,4.268,0,0,1,1.317.214,6.385,6.385,0,0,1,2.7,2.167c.106-.034.214-.058.321-.088A2.894,2.894,0,0,1,14.68,2.717c.023.247-.023,1.212.391,1.508C15.192,3.437,15.6,2.569,17.21,2a2.7,2.7,0,0,0,.1,2.037c1.1-1,1.841-.833,1.841-.833a3.371,3.371,0,0,0-.467,2.13c.167.043.336.085.5.137a6.376,6.376,0,0,1,2.7-2.164A4.269,4.269,0,0,1,23.2,3.092a3.737,3.737,0,0,1,2.532.956l.444.52L25.5,4.7a2.777,2.777,0,0,0-1.589.965,1.618,1.618,0,0,0-.118.615,1.462,1.462,0,0,0,.05.441.793.793,0,0,1,.052.328,2.647,2.647,0,0,1,1.066.238,1.462,1.462,0,0,1,.772.93,2.843,2.843,0,0,1-.643,2.141,4.315,4.315,0,0,0,.091,2.057.827.827,0,0,0,.237.238c.036.029.075.059.118.091a1.755,1.755,0,0,1,.844,1.521c0,1.209-1.226,1.864-2.21,2.391-.162.087-.316.169-.455.25h0a1.835,1.835,0,0,0-.666,1.426,29.957,29.957,0,0,0,.212,3.387A3.86,3.86,0,0,0,24.6,19.351ZM20.153,5.836c.086.038.176.065.262.1a4.044,4.044,0,0,1,.4.207A2.63,2.63,0,0,1,21.93,4.923,2.8,2.8,0,0,1,24.012,4.5a2.917,2.917,0,0,1,.521-.311,3.54,3.54,0,0,0-1.35-.274,3.134,3.134,0,0,0-.966.15A4.868,4.868,0,0,0,20.153,5.836Zm2.576,1.31A1.434,1.434,0,0,0,23,6.21a2.106,2.106,0,0,1,.239-.974c.044-.065.109-.11.158-.171a1.794,1.794,0,0,0-1.1.378,2.761,2.761,0,0,0-.728,1.245,4.22,4.22,0,0,1,.557.614C22.327,7.247,22.525,7.183,22.729,7.146ZM9.873,7.3a4.111,4.111,0,0,1,.557-.613A2.752,2.752,0,0,0,9.7,5.442a1.8,1.8,0,0,0-1.1-.378c.05.061.115.107.159.172A2.119,2.119,0,0,1,9,6.21a1.43,1.43,0,0,0,.273.936C9.477,7.183,9.674,7.247,9.873,7.3Zm1.715-1.359c.084-.04.173-.067.258-.1A4.871,4.871,0,0,0,9.782,4.062a3.134,3.134,0,0,0-.966-.15,3.54,3.54,0,0,0-1.35.274,2.939,2.939,0,0,1,.52.31,2.8,2.8,0,0,1,2.083.426,2.626,2.626,0,0,1,1.113,1.23A4.084,4.084,0,0,1,11.588,5.944ZM9.723,18.089a36.478,36.478,0,0,1-.191,4.141,6.983,6.983,0,0,0,2.138.373,7.814,7.814,0,0,0,.336-.718L12,21.88c.036-.1,1.071-2.788,1.443-3.4a24.692,24.692,0,0,1-1.285,4.88,2.471,2.471,0,0,1,.649-.02H19.2a2.534,2.534,0,0,1,.64.018,24.739,24.739,0,0,1-1.284-4.878c.372.612,1.406,3.3,1.443,3.4l0,.005a7.814,7.814,0,0,0,.336.718,6.983,6.983,0,0,0,2.138-.373,36.248,36.248,0,0,1-.191-4.141,2.288,2.288,0,0,1,1.043-1.87c.149-.085.3-.169.46-.253.812-.439,1.653-.893,1.653-1.669a1.071,1.071,0,0,0-.486-1l-.027-.022a1.257,1.257,0,0,1-.1-.091c.04.269.078.539.129.807a5.063,5.063,0,0,1-.86-2.425,6.018,6.018,0,0,1,.279-2.354c0,.285.019.568.041.852.018-.06.026-.123.048-.182a2.119,2.119,0,0,0,.512-1.454A.667.667,0,0,0,24.6,8a1.818,1.818,0,0,0-.825-.159,6.481,6.481,0,0,0-1.8.326,13.417,13.417,0,0,0-3.5,2.063l-.023.018-.3.211.19-.318a6.978,6.978,0,0,1,2.922-2.518,2.839,2.839,0,0,0-1.2-.853A9.216,9.216,0,0,0,16,5.909a9.208,9.208,0,0,0-4.066.864,2.884,2.884,0,0,0-1.2.851,6.972,6.972,0,0,1,2.922,2.518l.19.318-.3-.211-.023-.018a13.417,13.417,0,0,0-3.5-2.063,6.481,6.481,0,0,0-1.8-.326A1.818,1.818,0,0,0,7.4,8a.666.666,0,0,0-.367.427,2.121,2.121,0,0,0,.511,1.454c.022.06.03.123.048.183.022-.284.045-.568.041-.853a6.018,6.018,0,0,1,.279,2.354,5.063,5.063,0,0,1-.86,2.425c.051-.268.089-.538.13-.808-.035.03-.064.065-.1.092l-.027.022a1.071,1.071,0,0,0-.486,1c0,.776.841,1.23,1.653,1.669.16.084.311.168.46.253A2.288,2.288,0,0,1,9.723,18.089ZM8.646,25.254h.7a3.479,3.479,0,0,0,.118.353,3.822,3.822,0,0,0,1.126.152,1.664,1.664,0,0,1,.142-1.614h-.022a7.625,7.625,0,0,0,.531-.766C9.753,23.31,7.789,22.772,7.2,20.9a3.972,3.972,0,0,0,.2,3.23A3.826,3.826,0,0,0,8.646,25.254Zm2.932,2.614a7.781,7.781,0,0,1-.656-1.241,9.912,9.912,0,0,1-1.016-.135A3.834,3.834,0,0,0,11.578,27.868ZM16,29.243A4.677,4.677,0,0,0,20.642,25.7l0,0a1.256,1.256,0,0,0-.047-1.261,1.72,1.72,0,0,0-1.348-.4h-6.5a1.723,1.723,0,0,0-1.347.4,1.256,1.256,0,0,0-.047,1.261A4.676,4.676,0,0,0,16,29.243ZM22.1,26.492a9.715,9.715,0,0,1-1.018.135,7.788,7.788,0,0,1-.66,1.244A3.838,3.838,0,0,0,22.1,26.492ZM24.8,20.9c-.592,1.87-2.553,2.411-4.037,2.482.138.215.278.429.436.63h0v0c.034.043.058.092.093.134H21.28a1.669,1.669,0,0,1,.134,1.614,3.827,3.827,0,0,0,1.126-.152c.041-.116.087-.23.117-.351h.693a3.834,3.834,0,0,0,1.25-1.128A3.972,3.972,0,0,0,24.8,20.9Z" style="fill:#463014" /></symbol><symbol id="gulp" viewBox="0 0 32 32"><title>gulp</title><path d="M15.942,24.095a15.353,15.353,0,0,1-3.518-.393,6.761,6.761,0,0,1-1.006-.311l.813,1.389.318,4.34c0,.487,1.546.881,3.452.881s3.452-.394,3.452-.881l.252-4.387.769-1.346a6.691,6.691,0,0,1-1.015.315A15.353,15.353,0,0,1,15.942,24.095ZM20.5,9.973a34.285,34.285,0,0,1-4.5.261,34.285,34.285,0,0,1-4.5-.261,8.43,8.43,0,0,1-1.4-.292,2.03,2.03,0,0,1-.345-.143L10.5,16.4q.052-.177.116-.354a6.711,6.711,0,0,1,.3-.707,6.264,6.264,0,0,1,.376-.653,5.049,5.049,0,0,1,.432-.566,3.45,3.45,0,0,1,.47-.445,2.238,2.238,0,0,1,.487-.291,1.235,1.235,0,0,1,.487-.1,1.051,1.051,0,0,1,.538.152,1.541,1.541,0,0,1,.486.492.393.393,0,0,1,.066.154.838.838,0,0,1,.014.147.391.391,0,0,1-.078.257.233.233,0,0,1-.185.094.237.237,0,0,1-.182-.1,1.953,1.953,0,0,1-.188-.295.712.712,0,0,0-.215-.251.453.453,0,0,0-.255-.078.788.788,0,0,0-.457.177,2.652,2.652,0,0,0-.481.468,5.131,5.131,0,0,0-.457.666,6.946,6.946,0,0,0-.386.767,5.477,5.477,0,0,0-.267.774,2.751,2.751,0,0,0-.1.685,1.64,1.64,0,0,0,.014.208.7.7,0,0,0,.052.194.389.389,0,0,0,.1.143.247.247,0,0,0,.166.056.561.561,0,0,0,.257-.076,1.928,1.928,0,0,0,.3-.2,3.741,3.741,0,0,0,.31-.279q.156-.155.29-.315t.238-.306a1.808,1.808,0,0,0,.156-.255l.284-.85a.4.4,0,0,1,.136-.2.3.3,0,0,1,.173-.058.267.267,0,0,1,.085.014.209.209,0,0,1,.13.125.3.3,0,0,1,.02.114,1.653,1.653,0,0,1-.031.326,2.587,2.587,0,0,1-.078.3q-.047.145-.105.291t-.113.306a.694.694,0,0,0-.044.114q-.032.1-.078.241t-.1.324l-.11.365q-.057.186-.108.365t-.093.324l-.069.242c-.018.065-.03.1-.034.116a.753.753,0,0,1-.049.128.848.848,0,0,1-.079.134.488.488,0,0,1-.1.1.186.186,0,0,1-.113.042.159.159,0,0,1-.142-.065.455.455,0,0,1-.044-.239v-.051a.514.514,0,0,1,0-.054A1.283,1.283,0,0,1,12.3,18.8q.043-.159.1-.36t.128-.416q.069-.215.124-.385-.162.181-.351.36a3.788,3.788,0,0,1-.388.322,2.3,2.3,0,0,1-.4.233.947.947,0,0,1-.388.09.694.694,0,0,1-.368-.094c-.019-.011-.036-.024-.053-.037l.415,4.352c.108.271,2.142.936,4.825.936s4.719-.666,4.825-.937l.6-5.174-.143.132a6.253,6.253,0,0,1-.484.41,2.184,2.184,0,0,1-.444.266,1.153,1.153,0,0,1-.464.094.562.562,0,0,1-.359-.1.337.337,0,0,1-.127-.278v-.027a.184.184,0,0,1,0-.031.657.657,0,0,1,.095-.25,2.868,2.868,0,0,1,.2-.293q.116-.152.247-.308t.243-.295a2.847,2.847,0,0,0,.185-.255.383.383,0,0,0,.073-.188.085.085,0,0,0-.031-.069.16.16,0,0,0-.1-.025.573.573,0,0,0-.252.063,1.251,1.251,0,0,0-.257.17,2.324,2.324,0,0,0-.247.244,3.6,3.6,0,0,0-.226.286q-.105.148-.192.3t-.148.277l-.052.112q-.034.072-.073.163t-.084.186q-.044.1-.081.181l-.066.152q-.029.067-.041.092t-.05.123q-.035.09-.081.212l-.1.255-.095.253-.078.21c-.022.06-.037.1-.043.123a1.32,1.32,0,0,1-.072.177.73.73,0,0,1-.095.147.433.433,0,0,1-.122.1.312.312,0,0,1-.154.038.3.3,0,0,1-.182-.052.236.236,0,0,1-.072-.2.631.631,0,0,1,.018-.148,1.322,1.322,0,0,1,.046-.15c.018-.05.037-.1.057-.145s.037-.092.053-.136q.165-.362.336-.725t.328-.72c.022-.05.042-.1.063-.147l-.019.019a4.054,4.054,0,0,1-.4.338,2.1,2.1,0,0,1-.391.233.922.922,0,0,1-.377.087.487.487,0,0,1-.209-.04.349.349,0,0,1-.134-.108.433.433,0,0,1-.072-.163c0-.021-.008-.044-.011-.066-.036.028-.072.055-.108.081a2.192,2.192,0,0,1-.373.215.824.824,0,0,1-.33.081.312.312,0,0,1-.238-.1.482.482,0,0,1-.091-.333,1.824,1.824,0,0,1,.049-.387,1.978,1.978,0,0,1-.2.286,1.741,1.741,0,0,1-.272.264,1.358,1.358,0,0,1-.342.193,1.122,1.122,0,0,1-.412.074.737.737,0,0,1-.194-.025.407.407,0,0,1-.163-.087.436.436,0,0,1-.113-.165.679.679,0,0,1-.043-.259s0-.039.012-.11a2.357,2.357,0,0,1,.078-.336q.066-.23.2-.6t.388-.886a.489.489,0,0,1,.148-.2.308.308,0,0,1,.182-.06.335.335,0,0,1,.089.013.286.286,0,0,1,.086.04.215.215,0,0,1,.064.069.187.187,0,0,1,.024.1.251.251,0,0,1-.009.069.824.824,0,0,1-.066.161q-.05.1-.118.228t-.142.277q-.075.148-.139.307a3.069,3.069,0,0,0-.11.324,1.4,1.4,0,0,0-.052.32.238.238,0,0,0,.031.119.107.107,0,0,0,.1.054.638.638,0,0,0,.379-.13,1.683,1.683,0,0,0,.333-.324,3.108,3.108,0,0,0,.276-.416q.124-.222.206-.407a2.063,2.063,0,0,0,.1-.264,2.626,2.626,0,0,1,.1-.26.8.8,0,0,1,.119-.2.211.211,0,0,1,.168-.08.208.208,0,0,1,.174.083.316.316,0,0,1,.064.2.566.566,0,0,1-.041.179q-.041.114-.1.26t-.136.313q-.073.167-.136.338a3.352,3.352,0,0,0-.1.336,1.26,1.26,0,0,0-.041.306.117.117,0,0,0,.134.13.586.586,0,0,0,.235-.065,1.607,1.607,0,0,0,.295-.183c.026-.02.052-.04.077-.061a2.511,2.511,0,0,1,.1-.327q.107-.282.217-.561l.2-.51.925-2.333a.391.391,0,0,1,.148-.2.354.354,0,0,1,.188-.058.272.272,0,0,1,.172.061.238.238,0,0,1,.078.2.407.407,0,0,1-.026.137,1.664,1.664,0,0,1-.066.156q-.076.17-.182.416t-.226.535q-.121.289-.247.6l-.247.609q-.12.3-.226.562l-.182.461a2.031,2.031,0,0,0-.066.194.713.713,0,0,0-.032.2.177.177,0,0,0,.018.087.073.073,0,0,0,.07.033.4.4,0,0,0,.16-.045,1.638,1.638,0,0,0,.208-.119q.112-.074.232-.17t.24-.2q.119-.1.228-.206t.194-.19a.137.137,0,0,1,.047-.031c.034-.1.066-.2.093-.3q.024-.065.067-.185a2.535,2.535,0,0,1,.1-.235,1.007,1.007,0,0,1,.124-.2A.193.193,0,0,1,19.185,16a.24.24,0,0,1,.177.056.226.226,0,0,1,.055.165.6.6,0,0,1-.006.069c0,.031-.009.065-.015.1s-.013.068-.02.1a.456.456,0,0,1-.02.069q.113-.123.244-.244a2.513,2.513,0,0,1,.272-.219,1.571,1.571,0,0,1,.287-.159.755.755,0,0,1,.293-.061.71.71,0,0,1,.2.029.575.575,0,0,1,.177.085.444.444,0,0,1,.127.141.388.388,0,0,1,.049.2.78.78,0,0,1-.075.317,2.293,2.293,0,0,1-.188.338q-.113.17-.244.331t-.246.293l-.193.224a.338.338,0,0,0-.081.125.1.1,0,0,0,.028.071.128.128,0,0,0,.092.027.352.352,0,0,0,.153-.058,2.6,2.6,0,0,0,.282-.2q.182-.143.461-.383c.128-.11.277-.241.446-.39l.808-7.48a2.024,2.024,0,0,1-.345.143A8.427,8.427,0,0,1,20.5,9.973ZM16,8.2c-3.492,0-6.322.39-6.322.872S12.5,9.942,16,9.942s6.322-.39,6.322-.872S19.488,8.2,16,8.2Zm2.524,1.127c0,.113-.336.2-.751.2s-.751-.092-.751-.2.336-.2.751-.2S18.521,9.212,18.521,9.325Z" style="fill:#da4648" /><path d="M17.17,9.234a.034.034,0,0,0-.006.018c0,.073.271.132.6.132s.6-.059.6-.132l.79-3.2,3.142-3.317,0,0c.066-.075-.068-.308-.292-.508s-.466-.267-.541-.191l0,0L18.122,5.559Z" style="fill:#da4648" /></symbol><symbol id="handlebars" viewBox="0 0 32 32"><title>handlebars</title><path d="M12.3,13.1a4.238,4.238,0,0,1,2.728.9A4.592,4.592,0,0,1,16,15.127a4.144,4.144,0,0,1,2.039-1.747,4.757,4.757,0,0,1,3.286.019,7.833,7.833,0,0,1,2.443,1.558c.568.5,1.094,1.05,1.679,1.533a3.4,3.4,0,0,0,1.019.614,1.42,1.42,0,0,0,1.46-.379.965.965,0,0,0-.055-1.323.545.545,0,0,0-.8.108.659.659,0,0,0,.05.686,1.222,1.222,0,0,1-.6-.926,1.022,1.022,0,0,1,.691-1.032,2.005,2.005,0,0,1,2.312.661,3.258,3.258,0,0,1,.44,2.308,2.762,2.762,0,0,1-1.137,1.872,5.051,5.051,0,0,1-3.013.8,8.488,8.488,0,0,1-2.932-.63c-1.558-.626-3.016-1.492-4.625-1.992a13.977,13.977,0,0,0-1.7-.363c-.43.007-.861-.015-1.29.015a5.692,5.692,0,0,0-1.534.349c-1.636.509-3.116,1.4-4.7,2.024a7.625,7.625,0,0,1-4.249.474,3.74,3.74,0,0,1-2.125-1.14A2.856,2.856,0,0,1,2,16.668a2.722,2.722,0,0,1,.555-1.874,1.994,1.994,0,0,1,1.687-.68,1.425,1.425,0,0,1,1.063.52,1.04,1.04,0,0,1,.122.911,1.457,1.457,0,0,1-.556.644.643.643,0,0,0,.051-.681.547.547,0,0,0-.831-.079.975.975,0,0,0-.151,1.11,1.331,1.331,0,0,0,1.032.623,2.332,2.332,0,0,0,1.6-.7A28.526,28.526,0,0,1,9.4,14.053,5.251,5.251,0,0,1,12.3,13.1Z" style="fill:#c19770" /></symbol><symbol id="hlsl" viewBox="0 0 32 32"><title>hlsl</title><polygon points="9.525 21.947 7.56 21.947 7.56 17.1 3.958 17.1 3.958 21.947 2 21.947 2 10.044 3.958 10.044 3.958 14.792 7.56 14.792 7.56 10.044 9.525 10.044 9.525 21.947" style="fill:blue" /><polygon points="16.692 21.947 11.513 21.947 11.513 10.044 13.472 10.044 13.472 19.773 16.692 19.773 16.692 21.947" style="fill:blue" /><path d="M17.462,21.491V18.834a3.676,3.676,0,0,0,1.146.909,2.809,2.809,0,0,0,1.249.3,2.05,2.05,0,0,0,.646-.092,1.309,1.309,0,0,0,.461-.252,1.029,1.029,0,0,0,.276-.382,1.231,1.231,0,0,0,.091-.478,1.3,1.3,0,0,0-.145-.623,1.907,1.907,0,0,0-.4-.506,4.077,4.077,0,0,0-.6-.448q-.346-.215-.746-.439a4.045,4.045,0,0,1-1.519-1.419,3.884,3.884,0,0,1-.5-2.026,4.232,4.232,0,0,1,.273-1.6,3.02,3.02,0,0,1,.744-1.1,2.938,2.938,0,0,1,1.088-.634,4.167,4.167,0,0,1,1.31-.2,5.816,5.816,0,0,1,1.2.111,3.8,3.8,0,0,1,.967.345v2.482a2.859,2.859,0,0,0-.476-.365,3.212,3.212,0,0,0-.53-.262A3.1,3.1,0,0,0,21.46,12a2.794,2.794,0,0,0-.512-.05,1.994,1.994,0,0,0-.606.087,1.347,1.347,0,0,0-.461.245,1.092,1.092,0,0,0-.291.377,1.144,1.144,0,0,0-.1.494,1.2,1.2,0,0,0,.115.536,1.657,1.657,0,0,0,.328.448,3.461,3.461,0,0,0,.515.415c.2.136.43.275.686.419a7.094,7.094,0,0,1,.936.635,3.712,3.712,0,0,1,.713.759,3.269,3.269,0,0,1,.455.967,4.573,4.573,0,0,1,.158,1.266,4.439,4.439,0,0,1-.277,1.672,2.888,2.888,0,0,1-.749,1.1,2.823,2.823,0,0,1-1.1.6,4.742,4.742,0,0,1-1.325.182,5.476,5.476,0,0,1-1.361-.166A3.41,3.41,0,0,1,17.462,21.491Z" style="fill:blue" /><polygon points="30 21.947 24.822 21.947 24.822 10.044 26.78 10.044 26.78 19.773 30 19.773 30 21.947" style="fill:blue" /></symbol><symbol id="html" viewBox="0 0 32 32"><title>html</title><polygon points="5.902 27.201 3.655 2 28.345 2 26.095 27.197 15.985 30 5.902 27.201" style="fill:#e44f26" /><polygon points="16 27.858 24.17 25.593 26.092 4.061 16 4.061 16 27.858" style="fill:#f1662a" /><polygon points="16 13.407 11.91 13.407 11.628 10.242 16 10.242 16 7.151 15.989 7.151 8.25 7.151 8.324 7.981 9.083 16.498 16 16.498 16 13.407" style="fill:#ebebeb" /><polygon points="16 21.434 15.986 21.438 12.544 20.509 12.324 18.044 10.651 18.044 9.221 18.044 9.654 22.896 15.986 24.654 16 24.65 16 21.434" style="fill:#ebebeb" /><polygon points="15.989 13.407 15.989 16.498 19.795 16.498 19.437 20.507 15.989 21.437 15.989 24.653 22.326 22.896 22.372 22.374 23.098 14.237 23.174 13.407 22.341 13.407 15.989 13.407" style="fill:#fff" /><polygon points="15.989 7.151 15.989 9.071 15.989 10.235 15.989 10.242 23.445 10.242 23.445 10.242 23.455 10.242 23.517 9.548 23.658 7.981 23.732 7.151 15.989 7.151" style="fill:#fff" /></symbol><symbol id="image" viewBox="0 0 32 32"><title>image</title><path d="M30,5.851Q30,16,30,26.149H2Q2,16,2,5.851H30" style="fill:#2dcc9f" /><path d="M24.232,8.541a2.2,2.2,0,1,0,1.127.623,2.212,2.212,0,0,0-1.127-.623" style="fill:#fff" /><path d="M18.111,20.1q-2.724-3.788-5.45-7.575Q8.619,18.147,4.579,23.766q5.449,0,10.9,0,1.316-1.832,2.634-3.663" style="fill:#fff" /><path d="M22.057,16q-2.793,3.882-5.584,7.765,5.584,0,11.169,0Q24.851,19.882,22.057,16Z" style="fill:#fff" /></symbol><symbol id="ini" viewBox="0 0 32 32"><title>ini</title><path d="M23.265,24.381l.9-.894c4.164.136,4.228-.01,4.411-.438l1.144-2.785L29.805,20l-.093-.231c-.049-.122-.2-.486-2.8-2.965V15.5c3-2.89,2.936-3.038,2.765-3.461L28.538,9.225c-.171-.422-.236-.587-4.37-.474l-.9-.93a20.166,20.166,0,0,0-.141-4.106l-.116-.263-2.974-1.3c-.438-.2-.592-.272-3.4,2.786l-1.262-.019c-2.891-3.086-3.028-3.03-3.461-2.855L9.149,3.182c-.433.175-.586.237-.418,4.437l-.893.89c-4.162-.136-4.226.012-4.407.438L2.285,11.733,2.195,12l.094.232c.049.12.194.48,2.8,2.962l0,1.3c-3,2.89-2.935,3.038-2.763,3.462l1.138,2.817c.174.431.236.584,4.369.476l.9.935a20.243,20.243,0,0,0,.137,4.1l.116.265,2.993,1.308c.435.182.586.247,3.386-2.8l1.262.016c2.895,3.09,3.043,3.03,3.466,2.859l2.759-1.115C23.288,28.644,23.44,28.583,23.265,24.381ZM11.407,17.857a4.957,4.957,0,1,1,6.488,2.824A5.014,5.014,0,0,1,11.407,17.857Z" style="fill:#99b8c4" /></symbol><symbol id="jar" viewBox="0 0 32 32"><title>java</title><path d="M12.325,23.654s-1.07.622.761.833a16.023,16.023,0,0,0,5.8-.246,10.088,10.088,0,0,0,1.541.752c-5.481,2.349-12.405-.136-8.1-1.339" style="fill:#5382a1" /><path d="M11.656,20.588s-1.2.888.633,1.078a22.618,22.618,0,0,0,7.481-.359,3.32,3.32,0,0,0,1.152.7c-6.627,1.938-14.009.153-9.266-1.421" style="fill:#5382a1" /><path d="M17.3,15.388a2.051,2.051,0,0,1-.355,2.954s3.429-1.77,1.854-3.987c-1.471-2.067-2.6-3.095,3.508-6.636,0,0-9.586,2.394-5.007,7.669" style="fill:#5382a1" /><path d="M24.552,25.921s.792.652-.872,1.157c-3.164.958-13.168,1.248-15.948.038-1-.435.874-1.038,1.464-1.164a3.8,3.8,0,0,1,.966-.108c-1.111-.783-7.181,1.537-3.083,2.2,11.176,1.812,20.372-.816,17.473-2.124" style="fill:#5382a1" /><path d="M12.84,17.412s-5.089,1.209-1.8,1.648a38.225,38.225,0,0,0,6.731-.072c2.106-.178,4.221-.555,4.221-.555a8.934,8.934,0,0,0-1.28.685c-5.168,1.359-15.151.727-12.277-.663a9.629,9.629,0,0,1,4.407-1.042" style="fill:#5382a1" /><path d="M21.969,22.515c5.253-2.73,2.824-5.353,1.129-5a3.932,3.932,0,0,0-.6.161.957.957,0,0,1,.449-.346c3.354-1.179,5.933,3.478-1.083,5.322a.458.458,0,0,0,.106-.138" style="fill:#5382a1" /><path d="M18.8,2s2.909,2.91-2.759,7.386c-4.546,3.59-1.037,5.637,0,7.975-2.653-2.394-4.6-4.5-3.294-6.463C14.664,8.019,19.976,6.623,18.8,2" style="fill:#5382a1" /><path d="M13.356,29.912c5.042.323,12.786-.179,12.969-2.565,0,0-.353.9-4.167,1.623a41.458,41.458,0,0,1-12.76.2s.645.533,3.959.746" style="fill:#5382a1" /></symbol><symbol id="java" viewBox="0 0 32 32"><title>jar</title><path d="M12.7,23.56s-1.07.622.761.833a16.023,16.023,0,0,0,5.8-.246A10.088,10.088,0,0,0,20.8,24.9c-5.481,2.349-12.405-.136-8.1-1.339" style="fill:#5382a1" /><path d="M12.026,20.494s-1.2.888.633,1.078a22.618,22.618,0,0,0,7.481-.359,3.32,3.32,0,0,0,1.152.7c-6.627,1.938-14.009.153-9.266-1.421" style="fill:#5382a1" /><path d="M17.673,15.294a2.051,2.051,0,0,1-.355,2.954s3.429-1.77,1.854-3.987c-1.471-2.067-2.6-3.095,3.508-6.636,0,0-9.586,2.394-5.007,7.669" style="fill:#e76f00" /><path d="M24.922,25.827s.792.652-.872,1.157c-3.164.958-13.168,1.248-15.948.038-1-.435.874-1.038,1.464-1.164a3.8,3.8,0,0,1,.966-.108c-1.111-.783-7.181,1.537-3.083,2.2,11.176,1.812,20.372-.816,17.473-2.124" style="fill:#5382a1" /><path d="M13.211,17.318s-5.089,1.209-1.8,1.648a38.225,38.225,0,0,0,6.731-.072c2.106-.178,4.221-.555,4.221-.555a8.934,8.934,0,0,0-1.28.685C15.913,20.382,5.93,19.75,8.8,18.359a9.629,9.629,0,0,1,4.407-1.042" style="fill:#5382a1" /><path d="M22.34,22.421c5.253-2.73,2.824-5.353,1.129-5a3.932,3.932,0,0,0-.6.161.957.957,0,0,1,.449-.346c3.354-1.179,5.933,3.478-1.083,5.322a.458.458,0,0,0,.106-.138" style="fill:#5382a1" /><path d="M19.172,1.906s2.909,2.91-2.759,7.386c-4.546,3.59-1.037,5.637,0,7.975-2.653-2.394-4.6-4.5-3.294-6.463,1.917-2.879,7.229-4.275,6.056-8.9" style="fill:#e76f00" /><path d="M13.727,29.818c5.042.323,12.786-.179,12.969-2.565,0,0-.353.9-4.167,1.623a41.458,41.458,0,0,1-12.76.2s.645.533,3.959.746" style="fill:#5382a1" /></symbol><symbol id="jest" viewBox="0 0 32 32"><title>jest</title><path d="M27.089,15.786a2.606,2.606,0,0,0-2.606-2.606,2.633,2.633,0,0,0-.274.014l3.58-10.558H12.576l3.575,10.549c-.052,0-.105-.005-.158-.005a2.606,2.606,0,0,0-.791,5.09,11.383,11.383,0,0,1-2.049,2.579A10.436,10.436,0,0,1,9.5,23.116a3.323,3.323,0,0,1-1.665-4.23c.077-.18.155-.362.229-.544a2.607,2.607,0,1,0-2.09-.4,20.134,20.134,0,0,0-1.889,4.787c-.354,2.135,0,4.4,1.845,5.681,4.3,2.981,8.969-1.848,13.891-3.061,1.784-.44,3.742-.369,5.313-1.279a4.45,4.45,0,0,0,2.179-3.088,4.639,4.639,0,0,0-.831-3.522,2.6,2.6,0,0,0,.606-1.671ZM18.6,15.8v-.009a2.6,2.6,0,0,0-1.256-2.23L20.188,7.8l2.85,5.814a2.6,2.6,0,0,0-1.161,2.169c0,.019,0,.038,0,.057L18.6,15.8Z" style="fill:#c63d14" /><path d="M27.726,15.786A3.247,3.247,0,0,0,25.083,12.6L28.677,2H11.689l3.6,10.621a3.241,3.241,0,0,0-1,5.918,10.865,10.865,0,0,1-1.568,1.846,9.827,9.827,0,0,1-3.16,2.03,2.656,2.656,0,0,1-1.134-3.28l.04-.093.074-.175a3.245,3.245,0,1,0-3.34-.754c-.108.231-.222.465-.339.706a14,14,0,0,0-1.4,3.8c-.465,2.8.285,5.043,2.111,6.308A5.751,5.751,0,0,0,8.934,30c2.132,0,4.289-1.071,6.4-2.119a23.672,23.672,0,0,1,4.642-1.918c.577-.142,1.171-.228,1.8-.319a9.977,9.977,0,0,0,3.68-1.028,5.09,5.09,0,0,0,2.487-3.53,5.255,5.255,0,0,0-.691-3.613,3.223,3.223,0,0,0,.475-1.688Zm-1.273,0a1.97,1.97,0,1,1-1.97-1.97,1.972,1.972,0,0,1,1.97,1.97ZM26.9,3.273l-3.174,9.36a3.2,3.2,0,0,0-.4.125l-3.135-6.4L17.046,12.72a3.2,3.2,0,0,0-.419-.114L13.464,3.273ZM15.993,13.816a1.97,1.97,0,1,1-1.97,1.97,1.972,1.972,0,0,1,1.97-1.97Zm-8.522.019A1.97,1.97,0,1,1,5.5,15.8a1.972,1.972,0,0,1,1.97-1.97Zm19.217,7.034a3.82,3.82,0,0,1-1.871,2.646,8.9,8.9,0,0,1-3.223.869c-.632.091-1.285.185-1.924.343a24.587,24.587,0,0,0-4.9,2.013c-3.164,1.571-5.9,2.928-8.472,1.143-1.887-1.308-1.8-3.728-1.58-5.054A12.82,12.82,0,0,1,6,19.376c.092-.189.182-.375.27-.559a3.215,3.215,0,0,0,.838.21,3.965,3.965,0,0,0,2.1,4.655l.245.126.259-.092a11.029,11.029,0,0,0,3.875-2.4,12.078,12.078,0,0,0,1.918-2.319,3.241,3.241,0,0,0,2.64-5.627l2.038-4.121,2.059,4.2a3.24,3.24,0,0,0,4.088,5,3.957,3.957,0,0,1,.355,2.422Z" style="fill:#fff" /></symbol><symbol id="js" viewBox="0 0 32 32"><title>js</title><rect x="2" y="2" width="28" height="28" style="fill:#f5de19" /><path d="M20.809,23.875a2.866,2.866,0,0,0,2.6,1.6c1.09,0,1.787-.545,1.787-1.3,0-.9-.716-1.222-1.916-1.747l-.658-.282c-1.9-.809-3.16-1.822-3.16-3.964,0-1.973,1.5-3.476,3.853-3.476a3.889,3.889,0,0,1,3.742,2.107L25,18.128A1.789,1.789,0,0,0,23.311,17a1.145,1.145,0,0,0-1.259,1.128c0,.789.489,1.109,1.618,1.6l.658.282c2.236.959,3.5,1.936,3.5,4.133,0,2.369-1.861,3.667-4.36,3.667a5.055,5.055,0,0,1-4.795-2.691Zm-9.295.228c.413.733.789,1.353,1.693,1.353.864,0,1.41-.338,1.41-1.653V14.856h2.631v8.982c0,2.724-1.6,3.964-3.929,3.964a4.085,4.085,0,0,1-3.947-2.4Z" /></symbol><symbol id="jsbeautify" viewBox="0 0 32 32"><title>jsbeautify</title><path d="M14.5,10.24c-.265-1.822-1-4.338-1.086-5.538a2.215,2.215,0,0,1,1.446-2.236,2.86,2.86,0,0,1,2.272,0A2.215,2.215,0,0,1,18.582,4.7c-.085,1.2-.82,3.716-1.086,5.538" style="fill:#f1662a" /><path d="M17.724,10.273l-.457-.067c.126-.866.353-1.87.573-2.841a22.194,22.194,0,0,0,.511-2.68,1.992,1.992,0,0,0-1.311-2.01,2.63,2.63,0,0,0-2.081,0,1.992,1.992,0,0,0-1.311,2.01,22.208,22.208,0,0,0,.511,2.68c.22.971.447,1.975.573,2.841l-.457.067c-.123-.848-.349-1.843-.567-2.806a22.353,22.353,0,0,1-.521-2.749,2.427,2.427,0,0,1,1.581-2.462,3.09,3.09,0,0,1,2.463,0,2.427,2.427,0,0,1,1.581,2.462,22.365,22.365,0,0,1-.521,2.749C18.073,8.429,17.848,9.424,17.724,10.273Z" /><path d="M11.824,11.758C10.683,10.313,8.788,8.5,8.115,7.505a2.215,2.215,0,0,1,.134-2.659A2.86,2.86,0,0,1,10.216,3.71a2.215,2.215,0,0,1,2.37,1.213c.526,1.081,1.147,3.628,1.829,5.339" style="fill:#33a9dc" /><path d="M11.642,11.9c-.531-.673-1.224-1.422-1.894-2.147a22.343,22.343,0,0,1-1.825-2.12,2.427,2.427,0,0,1,.138-2.923A3.09,3.09,0,0,1,10.194,3.48a2.426,2.426,0,0,1,2.6,1.342,22.352,22.352,0,0,1,.923,2.641c.292.942.595,1.917.912,2.713l-.429.171c-.324-.813-.629-1.8-.924-2.747a22.2,22.2,0,0,0-.9-2.576,1.992,1.992,0,0,0-2.14-1.085,2.63,2.63,0,0,0-1.8,1.04,1.992,1.992,0,0,0-.131,2.4,22.2,22.2,0,0,0,1.782,2.065c.676.731,1.375,1.487,1.917,2.174Z" /><path d="M10.263,14.414c-1.711-.681-4.257-1.3-5.339-1.829a2.215,2.215,0,0,1-1.213-2.37A2.86,2.86,0,0,1,4.847,8.248a2.215,2.215,0,0,1,2.659-.134c1,.673,2.808,2.568,4.253,3.709" style="fill:#f1662a" /><path d="M10.178,14.629c-.8-.317-1.771-.62-2.713-.912a22.352,22.352,0,0,1-2.641-.923,2.427,2.427,0,0,1-1.342-2.6A3.09,3.09,0,0,1,4.713,8.06a2.427,2.427,0,0,1,2.923-.138,22.349,22.349,0,0,1,2.12,1.825c.724.67,1.474,1.362,2.146,1.894L11.616,12c-.687-.542-1.443-1.241-2.174-1.917A22.207,22.207,0,0,0,7.377,8.3a1.992,1.992,0,0,0-2.4.131,2.63,2.63,0,0,0-1.041,1.8,1.992,1.992,0,0,0,1.085,2.14,22.2,22.2,0,0,0,2.576.9c.951.3,1.934.6,2.747.924Z" /><path d="M10.239,17.5c-1.822.265-4.338,1-5.538,1.086a2.215,2.215,0,0,1-2.236-1.446,2.86,2.86,0,0,1,0-2.272A2.215,2.215,0,0,1,4.7,13.417c1.2.085,3.716.82,5.538,1.086" style="fill:#33a9dc" /><path d="M4.522,18.818a2.436,2.436,0,0,1-2.266-1.588,3.09,3.09,0,0,1,0-2.463,2.426,2.426,0,0,1,2.462-1.581,22.353,22.353,0,0,1,2.749.521c.962.218,1.957.443,2.806.567l-.067.457c-.866-.126-1.87-.353-2.841-.573a22.208,22.208,0,0,0-2.68-.511,1.993,1.993,0,0,0-2.01,1.311,2.63,2.63,0,0,0,0,2.081,1.991,1.991,0,0,0,2.01,1.311,22.194,22.194,0,0,0,2.68-.511c.971-.22,1.975-.447,2.841-.573l.067.457c-.848.123-1.843.349-2.805.567a22.365,22.365,0,0,1-2.749.521Q4.619,18.818,4.522,18.818Z" /><path d="M11.759,20.176c-1.445,1.141-3.257,3.036-4.253,3.709a2.215,2.215,0,0,1-2.659-.134,2.86,2.86,0,0,1-1.136-1.968,2.215,2.215,0,0,1,1.213-2.37c1.081-.526,3.628-1.147,5.339-1.829" style="fill:#f1662a" /><path d="M6.308,24.5a2.746,2.746,0,0,1-1.6-.563,3.09,3.09,0,0,1-1.232-2.133,2.427,2.427,0,0,1,1.342-2.6,22.338,22.338,0,0,1,2.641-.923c.942-.292,1.917-.595,2.713-.912l.171.429c-.813.324-1.8.629-2.747.924a22.212,22.212,0,0,0-2.576.9,1.992,1.992,0,0,0-1.085,2.14,2.63,2.63,0,0,0,1.041,1.8,1.992,1.992,0,0,0,2.4.131,22.216,22.216,0,0,0,2.065-1.782c.731-.676,1.487-1.375,2.174-1.917l.286.362c-.673.531-1.422,1.224-2.147,1.894a22.352,22.352,0,0,1-2.12,1.825A2.348,2.348,0,0,1,6.308,24.5Z" /><path d="M14.416,21.737c-.681,1.711-1.3,4.257-1.829,5.339a2.215,2.215,0,0,1-2.37,1.213,2.86,2.86,0,0,1-1.968-1.136,2.215,2.215,0,0,1-.134-2.659c.673-1,2.568-2.808,3.709-4.253" style="fill:#33a9dc" /><path d="M10.542,28.535q-.17,0-.347-.017a3.09,3.09,0,0,1-2.133-1.231,2.427,2.427,0,0,1-.138-2.923,22.347,22.347,0,0,1,1.825-2.12c.67-.724,1.363-1.474,1.894-2.147l.362.286c-.542.687-1.241,1.443-1.917,2.174a22.2,22.2,0,0,0-1.782,2.065,1.992,1.992,0,0,0,.131,2.4,2.629,2.629,0,0,0,1.8,1.04,1.991,1.991,0,0,0,2.14-1.085,22.2,22.2,0,0,0,.9-2.576c.3-.951.6-1.934.924-2.747l.429.171c-.317.8-.62,1.771-.912,2.713a22.351,22.351,0,0,1-.923,2.641A2.362,2.362,0,0,1,10.542,28.535Z" /><path d="M17.5,21.76c.265,1.822,1,4.338,1.086,5.538a2.215,2.215,0,0,1-1.446,2.236,2.86,2.86,0,0,1-2.272,0A2.215,2.215,0,0,1,13.418,27.3c.085-1.2.82-3.716,1.086-5.538" style="fill:#f1662a" /><path d="M16,30a2.994,2.994,0,0,1-1.231-.256,2.427,2.427,0,0,1-1.581-2.462,22.344,22.344,0,0,1,.521-2.749c.218-.962.443-1.957.567-2.806l.457.067c-.126.866-.353,1.87-.573,2.841a22.208,22.208,0,0,0-.511,2.68,1.992,1.992,0,0,0,1.311,2.01,2.63,2.63,0,0,0,2.081,0,1.992,1.992,0,0,0,1.311-2.01,22.221,22.221,0,0,0-.511-2.679c-.22-.971-.447-1.975-.573-2.841l.457-.067c.124.848.349,1.844.567,2.806a22.358,22.358,0,0,1,.521,2.749,2.427,2.427,0,0,1-1.581,2.462A2.994,2.994,0,0,1,16,30Z" /><path d="M20.176,20.241c1.141,1.445,3.036,3.257,3.709,4.253a2.215,2.215,0,0,1-.134,2.659,2.86,2.86,0,0,1-1.968,1.136,2.215,2.215,0,0,1-2.37-1.213c-.526-1.081-1.147-3.628-1.829-5.339" style="fill:#33a9dc" /><path d="M21.458,28.536a2.362,2.362,0,0,1-2.252-1.359,22.335,22.335,0,0,1-.923-2.641c-.292-.942-.595-1.916-.912-2.713l.429-.171c.324.813.629,1.8.924,2.747a22.2,22.2,0,0,0,.9,2.576,1.991,1.991,0,0,0,2.14,1.085,2.63,2.63,0,0,0,1.8-1.041,1.992,1.992,0,0,0,.131-2.4,22.193,22.193,0,0,0-1.782-2.066c-.676-.731-1.375-1.487-1.917-2.174l.362-.286c.531.673,1.224,1.422,1.893,2.146a22.329,22.329,0,0,1,1.826,2.121,2.426,2.426,0,0,1-.138,2.922,3.09,3.09,0,0,1-2.133,1.232Q21.628,28.536,21.458,28.536Z" /><path d="M21.738,17.585c1.711.681,4.257,1.3,5.339,1.829a2.215,2.215,0,0,1,1.213,2.37,2.86,2.86,0,0,1-1.136,1.968,2.215,2.215,0,0,1-2.659.134c-1-.673-2.808-2.568-4.253-3.709" style="fill:#f1662a" /><path d="M25.693,24.5a2.348,2.348,0,0,1-1.328-.426,22.349,22.349,0,0,1-2.12-1.826c-.724-.67-1.473-1.362-2.146-1.893L20.384,20c.687.542,1.443,1.241,2.174,1.917a22.214,22.214,0,0,0,2.065,1.782,1.992,1.992,0,0,0,2.4-.131,2.63,2.63,0,0,0,1.04-1.8,1.992,1.992,0,0,0-1.085-2.14,22.223,22.223,0,0,0-2.576-.9c-.951-.3-1.934-.6-2.747-.924l.171-.429c.8.317,1.771.62,2.713.912a22.344,22.344,0,0,1,2.641.923,2.427,2.427,0,0,1,1.342,2.6,3.09,3.09,0,0,1-1.231,2.133A2.747,2.747,0,0,1,25.693,24.5Z" /><path d="M21.761,14.506c1.822-.265,4.338-1,5.538-1.086a2.215,2.215,0,0,1,2.236,1.446,2.86,2.86,0,0,1,0,2.272A2.215,2.215,0,0,1,27.3,18.584c-1.2-.085-3.716-.82-5.538-1.086" style="fill:#33a9dc" /><path d="M27.478,18.821c-.065,0-.13,0-.2-.007a22.358,22.358,0,0,1-2.749-.521c-.962-.218-1.957-.443-2.806-.567l.067-.457c.866.126,1.87.353,2.841.573a22.221,22.221,0,0,0,2.679.511,1.991,1.991,0,0,0,2.01-1.311,2.63,2.63,0,0,0,0-2.081,1.991,1.991,0,0,0-2.01-1.311,22.214,22.214,0,0,0-2.68.511c-.971.22-1.975.447-2.841.573l-.067-.457c.848-.123,1.843-.349,2.806-.567a22.348,22.348,0,0,1,2.749-.521,2.427,2.427,0,0,1,2.462,1.581,3.09,3.09,0,0,1,0,2.463A2.436,2.436,0,0,1,27.478,18.821Z" /><path d="M20.243,11.825C21.688,10.685,23.5,8.79,24.5,8.116a2.215,2.215,0,0,1,2.659.134,2.86,2.86,0,0,1,1.136,1.968,2.215,2.215,0,0,1-1.213,2.37c-1.081.526-3.628,1.147-5.339,1.829" style="fill:#f1662a" /><path d="M21.824,14.631l-.171-.429c.813-.324,1.8-.629,2.747-.924a22.2,22.2,0,0,0,2.576-.9,1.992,1.992,0,0,0,1.085-2.14,2.629,2.629,0,0,0-1.04-1.8,1.992,1.992,0,0,0-2.4-.131,22.191,22.191,0,0,0-2.065,1.782c-.731.676-1.487,1.375-2.174,1.917l-.286-.362c.673-.531,1.422-1.224,2.146-1.894a22.363,22.363,0,0,1,2.12-1.826,2.427,2.427,0,0,1,2.923.138A3.09,3.09,0,0,1,28.52,10.2a2.426,2.426,0,0,1-1.342,2.6,22.351,22.351,0,0,1-2.641.923C23.6,14.012,22.621,14.314,21.824,14.631Z" /><path d="M17.585,10.263c.681-1.711,1.3-4.257,1.829-5.339a2.215,2.215,0,0,1,2.37-1.213,2.86,2.86,0,0,1,1.968,1.136,2.215,2.215,0,0,1,.134,2.659c-.673,1-2.568,2.808-3.709,4.253" style="fill:#33a9dc" /><path d="M20.357,11.9,20,11.617c.542-.687,1.241-1.443,1.917-2.174a22.2,22.2,0,0,0,1.782-2.065,1.992,1.992,0,0,0-.131-2.4,2.629,2.629,0,0,0-1.8-1.041,1.993,1.993,0,0,0-2.14,1.085,22.225,22.225,0,0,0-.9,2.576c-.3.951-.6,1.934-.924,2.747l-.429-.171c.317-.8.62-1.771.912-2.713a22.35,22.35,0,0,1,.923-2.641,2.427,2.427,0,0,1,2.6-1.342,3.09,3.09,0,0,1,2.133,1.231,2.427,2.427,0,0,1,.138,2.923,22.354,22.354,0,0,1-1.826,2.12C21.581,10.481,20.888,11.23,20.357,11.9Z" /><path d="M21.9,16A5.9,5.9,0,1,1,16,10.1,5.9,5.9,0,0,1,21.9,16Z" style="fill:#ffd800" /><path d="M16,22.175A6.175,6.175,0,1,1,22.175,16,6.182,6.182,0,0,1,16,22.175Zm0-11.8A5.622,5.622,0,1,0,21.622,16,5.628,5.628,0,0,0,16,10.378Z" style="fill:#020000" /></symbol><symbol id="kotlin" width="32" height="32" fill="none" version="1.1" viewBox="0 0 32 32"><path d="m30 30h-28v-28h28l-14.289 13.794z" fill="url(#a)" stroke-width=".58333" /><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(-28 0 0 -28 30 2)" gradientUnits="userSpaceOnUse"><stop stop-color="#E44857" offset="0" /><stop stop-color="#C711E1" offset=".50449" /><stop stop-color="#7F52FF" offset="1" /></radialGradient></defs></symbol><symbol id="light_babel" viewBox="0 0 32 32"><title>light_babel</title><path d="M13.016,4.025A26.109,26.109,0,0,1,10.17,5.82V6a.762.762,0,0,0,.281-.11c.123,0,.2.037.2.158l.2-.11h.1v.086A10.967,10.967,0,0,1,8.95,7.58l.11.171h-.1l-.209-.072c0,.062-.086.1-.281.11v.1l.219.243A.781.781,0,0,1,8.4,8.069a1.9,1.9,0,0,0-1.271.942l.11.171a2.611,2.611,0,0,1,.634-.5l.024.267a.851.851,0,0,0-.281.11l.233.342A6.837,6.837,0,0,1,9.3,8.192c.267.072.4.147.4.243h.2a15.493,15.493,0,0,1,4.25-2.3v.185c-.267.391-.439.586-.535.6a.741.741,0,0,0,.134.353,32.729,32.729,0,0,1-1.9,4.815,136.039,136.039,0,0,1-7.364,15.34.725.725,0,0,0,.11.267,2.557,2.557,0,0,0,.942-.353h.11v.185h.185l.206-.142c0,.062.072.086.2.072v.185a1.642,1.642,0,0,1-.318.843,4.395,4.395,0,0,0-.647,1.428V30h.185a11.737,11.737,0,0,0,1.819-2.627,29.214,29.214,0,0,0,5.35-2.017,5.013,5.013,0,0,0,2.822-.966v-.1l-.465.134h-.11v-.1a4.237,4.237,0,0,0,1.872-.61c1.771-1.367,3.1-2.332,4.012-2.908,2.8-2.052,4.117-4.031,3.959-5.911a11.058,11.058,0,0,0-1.846-2.308c-.024-.267.4-.623,1.257-1.113l2.431-2.14a6.315,6.315,0,0,0,.976-3.37L27.484,5.6c-.1-1.086-.88-1.966-2.37-2.637a9.2,9.2,0,0,0-4.721-.942,28.928,28.928,0,0,0-7.366,2Zm2.14,7.682c.185-1,.391-1.575.623-1.709L17.807,5.45c-.024-.281.4-.5,1.295-.647l.294-.024.024.267c.88-.134,1.418-.209,1.624-.233,1.6-.134,2.442.185,2.517.976h.185l-.037-.465h.2a1.217,1.217,0,0,1,.757.952,1.426,1.426,0,0,1-.415.952c-.123,0-.2-.072-.209-.267h-.2l-.048.551c-.818,1.222-1.4,1.846-1.771,1.872q-.495.677-.623.7a11.181,11.181,0,0,1-2.1,1.565,27.388,27.388,0,0,0-4.216,1.637.7.7,0,0,0-.391-.062V13.05a2.263,2.263,0,0,1,.476-1.337Zm-6.6-3.443V8.35a.851.851,0,0,0-.281.11h-.1V8.288Zm5.879-.136.024.267c-.086,0-.209.134-.353.391V8.6a.907.907,0,0,0,.267-.476Zm-.9,1.9.037.366h-.1l-.029-.364Zm-.233.661c-.024.3-.1.465-.267.476h-.1a.934.934,0,0,0,.158-.465Zm-.4.952v.086l-.171.294h-.185V11.94a.243.243,0,0,0,.267-.294h.088Zm-.415.856-.048.452h-.1l-.037-.452Zm2.14,1.367v.171l-.38.037v-.171ZM12.81,16.481A21.476,21.476,0,0,0,18,14.943l.575-.048a3.325,3.325,0,0,1,2.675.685l.037.366c-.439,1.271-.928,2-1.452,2.236l-2.442,1.942a23.881,23.881,0,0,1-2.942,1.808,21.859,21.859,0,0,1-5.4,2.48h-.11c.1-.342,1.38-2.98,3.873-7.942Zm2.637-1.038v.086l-.391.037v-.086Zm-6.083,5.9c-.123.623-.267.942-.391.952v-.086a1.041,1.041,0,0,1,.4-.867Zm2.442,3.445a31.3,31.3,0,0,0,5.839-3.055v.171c0,.072-.267.3-.818.709a14.845,14.845,0,0,0-2.859,1.624c-1.76.61-2.627.99-2.613,1.137a29.423,29.423,0,0,0-3.079,1.356,1.126,1.126,0,0,1-.5-.134.8.8,0,0,1,.428-.781,1.554,1.554,0,0,1,.781.123,7.543,7.543,0,0,1,1.514-.489v-.185l-.575.048a8.223,8.223,0,0,1,1.674-.781l.294-.024V24.6c-.489.037-.77.2-.832.452a.16.16,0,0,0,.2.158,2.362,2.362,0,0,0,.535-.415Zm-3-2.22v.086a.171.171,0,0,1-.171.209v-.086a.182.182,0,0,1,.153-.207Zm4.569,1.246a4.336,4.336,0,0,0-1.308.575h-.1v-.185a1.854,1.854,0,0,0,1.2-.551.183.183,0,0,1,.209.169ZM8.624,25.145l.294-.024v.1a.762.762,0,0,0-.281.11H8.453A.212.212,0,0,1,8.624,25.145Z" style="fill:#fbc02d" /></symbol><symbol id="light_font" viewBox="0 0 32 32"><title>light_font</title><path d="M12.677,17.781l-2.626-6.256L7.357,17.781ZM19.4,24.292H12.331V22.927l.458-.023a1.847,1.847,0,0,0,.972-.2.313.313,0,0,0,.145-.263,4.158,4.158,0,0,0-.419-1.4l-.812-1.931H7.322L6.4,21.259a3.319,3.319,0,0,0-.349,1.157c0,.036,0,.119.154.241a2.481,2.481,0,0,0,1.191.247l.448.033v1.354H2V22.981l.4-.07A2.188,2.188,0,0,0,3.4,22.593a6.318,6.318,0,0,0,1.18-2.066L10.155,7.491H11.2l5.512,13.174A5.255,5.255,0,0,0,17.761,22.5a1.959,1.959,0,0,0,1.19.4l.454.027Z" /><path d="M25.841,21.56V17.575a22.542,22.542,0,0,0-2.226.97,3.845,3.845,0,0,0-1.29,1.05,2.03,2.03,0,0,0-.388,1.2,1.951,1.951,0,0,0,.491,1.362,1.49,1.49,0,0,0,1.13.544A4.142,4.142,0,0,0,25.841,21.56Zm-3.333,2.949a2.833,2.833,0,0,1-2.139-.893,3.206,3.206,0,0,1-.833-2.285,2.959,2.959,0,0,1,.415-1.577,5,5,0,0,1,1.791-1.625,23.876,23.876,0,0,1,3.617-1.588v-.074a2.905,2.905,0,0,0-.383-1.833,1.325,1.325,0,0,0-1.075-.412,1.155,1.155,0,0,0-.816.26.687.687,0,0,0-.277.536l.023.646a1.62,1.62,0,0,1-.4,1.158,1.481,1.481,0,0,1-2.1-.019,1.634,1.634,0,0,1-.391-1.134,2.8,2.8,0,0,1,1.182-2.177,4.813,4.813,0,0,1,3.125-.932,5.381,5.381,0,0,1,2.508.524,2.628,2.628,0,0,1,1.213,1.346,6.391,6.391,0,0,1,.244,2.2v3.55a14.665,14.665,0,0,0,.051,1.749.661.661,0,0,0,.054.2c.085-.078.284-.225.864-.806L30,20.495v1.967l-.1.128c-.958,1.283-1.883,1.907-2.83,1.907a1.6,1.6,0,0,1-1.257-.557,1.788,1.788,0,0,1-.358-.74,9.688,9.688,0,0,1-1.433.977A3.579,3.579,0,0,1,22.508,24.509Z" /></symbol><symbol id="json" viewBox="0 0 32 32"><title>json</title><path d="M4.014,14.976a2.51,2.51,0,0,0,1.567-.518A2.377,2.377,0,0,0,6.386,13.1,15.261,15.261,0,0,0,6.6,10.156q.012-2.085.075-2.747a5.236,5.236,0,0,1,.418-1.686,3.025,3.025,0,0,1,.755-1.018A3.046,3.046,0,0,1,9,4.125,6.762,6.762,0,0,1,10.544,4h.7V5.96h-.387a2.338,2.338,0,0,0-1.723.468A3.4,3.4,0,0,0,8.709,8.52a36.054,36.054,0,0,1-.137,4.133,4.734,4.734,0,0,1-.768,2.06A4.567,4.567,0,0,1,6.1,16a3.809,3.809,0,0,1,1.992,1.754,8.861,8.861,0,0,1,.618,3.865q0,2.435.05,2.9A1.755,1.755,0,0,0,9.264,25.7a2.639,2.639,0,0,0,1.592.337h.387V28h-.7a5.655,5.655,0,0,1-1.773-.2,2.97,2.97,0,0,1-1.324-.93,3.353,3.353,0,0,1-.681-1.63A24.175,24.175,0,0,1,6.6,22.006,16.469,16.469,0,0,0,6.386,18.9a2.408,2.408,0,0,0-.805-1.361,2.489,2.489,0,0,0-1.567-.524Z" style="fill:#fbc02d" /><path d="M27.986,17.011a2.489,2.489,0,0,0-1.567.524,2.408,2.408,0,0,0-.805,1.361,16.469,16.469,0,0,0-.212,3.109,24.175,24.175,0,0,1-.169,3.234,3.353,3.353,0,0,1-.681,1.63,2.97,2.97,0,0,1-1.324.93,5.655,5.655,0,0,1-1.773.2h-.7V26.04h.387a2.639,2.639,0,0,0,1.592-.337,1.755,1.755,0,0,0,.506-1.186q.05-.462.05-2.9a8.861,8.861,0,0,1,.618-3.865A3.809,3.809,0,0,1,25.9,16a4.567,4.567,0,0,1-1.7-1.286,4.734,4.734,0,0,1-.768-2.06,36.054,36.054,0,0,1-.137-4.133,3.4,3.4,0,0,0-.425-2.092,2.338,2.338,0,0,0-1.723-.468h-.387V4h.7A6.762,6.762,0,0,1,23,4.125a3.046,3.046,0,0,1,1.149.581,3.025,3.025,0,0,1,.755,1.018,5.236,5.236,0,0,1,.418,1.686q.062.662.075,2.747a15.261,15.261,0,0,0,.212,2.947,2.377,2.377,0,0,0,.805,1.355,2.51,2.51,0,0,0,1.567.518Z" style="fill:#fbc02d" /></symbol><symbol id="light_prettier" viewBox="0 0 32 32" stroke-linecap="round" stroke-width="1.33"><title>light_prettier</title><path d="m2.45 2.45h16.3m-16.3 5.42h9.48m10.8 0h1.35m-16.3 2.71h1.35m4.06 5.42h10.8m-21.7 2.71h5.42m-5.42 8.13h2.71" stroke="#56b3b4" /><path d="m2.45 5.16h4.06m12.2 5.42h6.77m-23 5.42h1.35m6.77 2.71h5.42m-13.5 10.8h6.77" stroke="#ea5e5e" /><path d="m9.23 5.16h13.5m-20.3 5.42h2.71m13.5 2.71h6.77m-19 2.71h4.06m-4.06 5.42h12.2m-10.8 5.42h1.35" stroke="#f7b93e" /><path d="m14.6 7.87h5.42m-17.6 5.42h6.77m9.48 5.42h4.06m-20.3 2.71h1.35m-1.35 2.71h6.77" stroke="#bf85bf" /><path d="m21.4 2.45h8.13m-4.06 2.71h4.06m-2.71 2.71h2.71m-17.6 2.71h4.06m12.2 0h1.35m-17.6 2.71h4.06m12.2 0h1.35m-2.71 2.71h2.71m-4.06 2.71h4.06m-8.13 2.71h2.71m2.71 0h2.71m-17.6 2.71h2.71m2.71 0h12.2m-17.6 2.71h5.42m2.71 0h1.35m2.71 0h5.42m-17.6 2.71h8.13m2.71 0h6.77" stroke="#d0d4d8" opacity=".5" /></symbol><symbol id="light_tex" viewBox="0 0 32 32"><title>light_tex</title><path d="M11.333,13.122c-.128-1.562-.241-2.756-2.287-2.756H7.91v8.4h2.145v.611l-3.083-.029-3.082.029v-.611H6.034v-8.4H4.884c-2.046,0-2.159,1.208-2.287,2.756H2l.284-3.367h9.362l.284,3.367h-.6Z" /><path d="M19.289,22.53H10.41V21.92h1.506V13.467H10.41v-.611h8.637l.412,3.367h-.6c-.213-1.833-.682-2.756-2.855-2.756H13.791V17.2h.838c1.364,0,1.505-.6,1.505-1.662h.6v3.935h-.6c0-1.08-.142-1.662-1.505-1.662h-.838v4.106h2.216c2.472,0,3-1.108,3.3-3.225h.6Z" /><path d="M27.727,19.186c-.54,0-1.96,0-2.415.029V18.6h1.179l-2.557-3.552-2.529,3.381A4.1,4.1,0,0,0,22.7,18.6v.611c-.355-.029-1.576-.029-2.017-.029-.4,0-1.548,0-1.875.029V18.6h.383a7.459,7.459,0,0,0,.824-.043c.5-.043.54-.085.667-.256L23.536,14.5l-3.153-4.418H19V9.47c.384.028,1.79.028,2.273.028.582,0,1.918,0,2.429-.028v.611H22.528l2.117,2.955,2.074-2.784a4.1,4.1,0,0,0-1.293-.17V9.47c.356.028,1.591.028,2.032.028.4,0,1.534,0,1.861-.028v.611h-.369a5.264,5.264,0,0,0-.838.043c-.469.043-.526.071-.667.256l-2.4,3.21L28.636,18.6H30v.611C29.645,19.186,28.182,19.186,27.727,19.186Z" /></symbol><symbol id="lisp" viewBox="0 0 32 32"><title>lisp</title><path d="M24.241,21.152a1.442,1.442,0,1,1-2.879.11l.055-5.133c0-1.783,1.877-3.727,4.427-3.755a1.469,1.469,0,0,0,0-2.938H11.457a1.774,1.774,0,0,0-2.023,1.878v8.515a1.441,1.441,0,1,1-2.879,0S6.5,13.34,6.5,11.149a4.763,4.763,0,0,1,4.869-4.715H25.778A4.1,4.1,0,0,1,30,10.686a4.408,4.408,0,0,1-3.92,4.609c-1.264,0-1.8.71-1.8,1.891Z" style="fill:#c40804" /><path d="M2.025,10.989,2,21.062a4.476,4.476,0,0,0,4.361,4.5l9.357-.09a4.12,4.12,0,0,0,4.028-4.289A4.137,4.137,0,0,0,15.427,16.9a1.47,1.47,0,1,1,0-2.938h4.239c1.928,0,1.879-3.055,0-3.055l-4.522.055a4.285,4.285,0,0,0-4.221,4.3,4.334,4.334,0,0,0,4.309,4.531,1.462,1.462,0,1,1,.019,2.922H6.94a1.807,1.807,0,0,1-1.972-1.987l-.055-9.714A1.453,1.453,0,1,0,2.025,10.989Z" style="fill:#c40804" /></symbol><symbol id="locale" viewBox="0 0 32 32"><title>locale</title><path d="M28.137,30A1.854,1.854,0,0,0,30,28.168V9.454a1.854,1.854,0,0,0-1.863-1.835H9.956L17.253,30Z" style="fill:#d9d9d9" /><polygon points="22.041 24.715 17.286 30.003 15.555 24.715 22.041 24.715" style="fill:#4352b8" /><path d="M28.233,15.373V14.279H22.959V12.512H21.247v1.767H17.881v1.094h6.7a9.7,9.7,0,0,1-1.922,3.38c-1.369-1.619-1.375-2.146-1.375-2.146H19.862s.059.788,1.978,3.038a13.51,13.51,0,0,1-1.1,1.016l.438,1.366s.659-.567,1.487-1.445c.828.9,1.9,1.978,3.279,3.265l.9-.9c-1.481-1.344-2.567-2.41-3.364-3.265a9.929,9.929,0,0,0,2.385-4.315h2.368Z" style="fill:#617d8b" /><path d="M3.863,2A1.87,1.87,0,0,0,2,3.863V22.855a1.869,1.869,0,0,0,1.863,1.863H22.044L14.747,2Z" style="fill:#4f8bf5" /><path d="M16.989,7.619H28.137A1.854,1.854,0,0,1,30,9.454V20.681Z" style="fill:#fff;opacity:0.200000002980232;isolation:isolate" /><path d="M7.055,13.808c.611-1.573,1.211-3.151,1.821-4.724h1.77c.1.242.189.487.282.73.447,1.153.887,2.309,1.334,3.463s.879,2.286,1.319,3.429l.356.923c-.419,0-.839,0-1.258,0h-.3q-.331-1.011-.658-2.024H7.8q-.326,1.013-.658,2.024c-.518,0-1.036,0-1.554,0q.734-1.911,1.469-3.822m1.181.673c1.017,0,2.034,0,3.051,0-.51-1.338-1.014-2.678-1.526-4.015C9.249,11.8,8.746,13.143,8.235,14.481Z" style="fill:#f2f2f2" /></symbol><symbol id="log" viewBox="0 0 32 32"><title>log</title><path d="M29.4,27.6H2.5V4.5H29.4Zm-25.9-1H28.4V5.5H3.5Z" style="fill:#00bd02" /><rect x="2.5" y="5.5" width="26.9" height="1.9" style="fill:#00bd02" /><rect x="11.333" y="9.5" width="8.167" height="1" style="fill:#00bd02" /><rect x="11.333" y="12.083" width="12.5" height="1" style="fill:#00bd02" /><rect x="11.333" y="14.75" width="10.617" height="1" style="fill:#00bd02" /><rect x="11.333" y="17.583" width="14.167" height="1" style="fill:#00bd02" /><rect x="11.333" y="20.5" width="9.834" height="1" style="fill:#00bd02" /><rect x="11.5" y="23.083" width="12.167" height="1" style="fill:#00bd02" /><rect x="5.5" y="9.5" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="12.083" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="12.083" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="14.667" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="17.25" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="20.5" width="4.333" height="1" style="fill:#00bd02" /><rect x="5.5" y="23.083" width="4.333" height="1" style="fill:#00bd02" /></symbol><symbol id="manifest" viewBox="0 0 32 32"><title>manifest</title><path d="M20.75,2H4.35V30h23.3V9Zm4.6,25.7H6.75V4.3h11.7v7h7V27.7Z" style="fill:#c5c5c5" /><path d="M25.535,26.266l.587-.583c2.715.089,2.756-.007,2.876-.286l.746-1.816.055-.171-.061-.151c-.032-.08-.13-.317-1.825-1.933v-.85c1.956-1.884,1.914-1.981,1.8-2.256l-.743-1.835c-.111-.275-.154-.383-2.849-.309l-.587-.606a13.147,13.147,0,0,0-.092-2.677l-.076-.171-1.939-.848c-.286-.13-.386-.177-2.217,1.816l-.823-.012c-1.88-2.012-1.97-1.978-2.252-1.862l-1.8.729c-.282.114-.382.155-.273,2.893l-.582.58c-2.713-.089-2.755.008-2.873.286l-.749,1.816-.059.174.061.151c.032.078.126.313,1.825,1.931v.848c-1.956,1.884-1.913,1.981-1.8,2.257l.742,1.837c.113.281.154.381,2.848.31l.587.61a13.2,13.2,0,0,0,.089,2.673l.076.173,1.951.853c.284.119.382.161,2.207-1.825l.823.01c1.887,2.014,1.984,1.975,2.26,1.864l1.8-.727C25.55,29.045,25.649,29,25.535,26.266ZM17.8,22.013a3.232,3.232,0,1,1,4.23,1.841A3.269,3.269,0,0,1,17.8,22.012Z" style="fill:#40535b" /></symbol><symbol id="map" viewBox="0 0 32 32"><title>map</title><path d="M16,30A14,14,0,1,1,30,16,14,14,0,0,1,16,30ZM16,3.18A12.82,12.82,0,1,0,28.82,16,12.82,12.82,0,0,0,16,3.18Z" style="fill:#45d339" /><rect x="2.78" y="15.41" width="26.43" height="1.18" style="fill:#45d339" /><path d="M16.32,10.47A44.78,44.78,0,0,1,4.42,8.92l.34-1.13c.11,0,11.28,3.32,22.43,0l.33,1.13A39.37,39.37,0,0,1,16.32,10.47Z" style="fill:#45d339" /><path d="M4.79,23.91l-.34-1.13c11.5-3.42,22.63-.14,23.1,0l-.34,1.13C27.1,23.87,15.94,20.59,4.79,23.91Z" style="fill:#45d339" /><path d="M11.47,28.76a35.45,35.45,0,0,1-.74-25.71l1.08.46a34.23,34.23,0,0,0,.74,24.79Z" style="fill:#45d339" /><path d="M20.44,28.76l-1.08-.46A34.23,34.23,0,0,0,20.1,3.52l1.08-.46A35.46,35.46,0,0,1,20.44,28.76Z" style="fill:#45d339" /><rect x="15.41" y="2.78" width="1.18" height="26.92" style="fill:#45d339" /></symbol><symbol id="markdown" viewBox="0 0 32 32"><title>markdown</title><rect x="2.5" y="7.955" width="27" height="16.091" style="fill:none;stroke:#755838" /><polygon points="5.909 20.636 5.909 11.364 8.636 11.364 11.364 14.773 14.091 11.364 16.818 11.364 16.818 20.636 14.091 20.636 14.091 15.318 11.364 18.727 8.636 15.318 8.636 20.636 5.909 20.636" style="fill:#755838" /><polygon points="22.955 20.636 18.864 16.136 21.591 16.136 21.591 11.364 24.318 11.364 24.318 16.136 27.045 16.136 22.955 20.636" style="fill:#755838" /></symbol><symbol id="maya" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="-611.348" y1="-67.488" x2="-600.272" y2="-65.335" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0f6067" /><stop offset="0.5" stop-color="#05abac" /><stop offset="1" stop-color="#58bec4" /></linearGradient><linearGradient id="b" x1="-603.594" y1="-77.699" x2="-602.011" y2="-59.604" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#117c83" /><stop offset="0.5" stop-color="#21b5b5" /><stop offset="1" stop-color="#7ed4d4" /></linearGradient><linearGradient id="c" x1="-612.757" y1="-59.906" x2="-616.934" y2="-72.76" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9accd3" /><stop offset="0.5" stop-color="#72aeb3" /><stop offset="1" stop-color="#317d7f" /></linearGradient><linearGradient id="d" x1="-621.851" y1="-74.579" x2="-614.84" y2="-72.301" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#21626e" /><stop offset="0.5" stop-color="#157c84" /><stop offset="1" stop-color="#03a3a5" /></linearGradient><linearGradient id="e" x1="-616.369" y1="-64.469" x2="-625.34" y2="-72.835" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0b7c81" /><stop offset="0.5" stop-color="#068d90" /><stop offset="1" stop-color="#16b1b1" /></linearGradient><linearGradient id="f" x1="-608.072" y1="-74.678" x2="-603.488" y2="-70.966" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0a8a8f" /><stop offset="0.5" stop-color="#0f7c82" /><stop offset="1" stop-color="#1a5964" /></linearGradient><linearGradient id="g" x1="-601.134" y1="-70.113" x2="-606.008" y2="-67.067" gradientTransform="matrix(1.437, 0, 0, -1.437, 894.417, -82.292)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#256a77" /><stop offset="0.5" stop-color="#0d9499" /><stop offset="1" stop-color="#06a0a2" /></linearGradient></defs><title>maya</title><path d="M21.6,3.462H30L18.767,24.211s-1.893-5.5-2.706-7.459" style="fill:url(#a)" /><path d="M23.669,29.118H30V3.462C29.995,16.869,24.36,29.118,23.669,29.118Z" style="fill:url(#b)" /><path d="M18.767,24.211H13.541L2,3.462c2.047-.26,6.135-.611,8.16-.776Z" style="fill:url(#c)" /><path d="M8.693,16.019C6.96,22.866,1.995,29.32,2,29.314c5.752,0,6.991-.835,6.991-1.276V16.54C8.89,16.37,8.794,16.194,8.693,16.019Z" style="fill:url(#d)" /><path d="M2,3.462V29.314c3.147-5.2,4.981-8.6,6.6-13.45C4.6,8.794,2,3.462,2,3.462Z" style="fill:url(#e)" /><polyline points="23.233 28.102 23.669 29.118 23.669 15.647 23.233 16.375" style="fill:url(#f)" /><path d="M23.647,15.673v13.4l.016.043c.452,0,6.332-14.5,6.332-25.656C29.995,3.462,26.406,10.947,23.647,15.673Z" style="fill:url(#g)" /></symbol><symbol id="mongo" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="-645.732" y1="839.188" x2="-654.59" y2="839.25" gradientTransform="matrix(-0.977, -0.323, -0.29, 0.877, -375.944, -928.287)" gradientUnits="userSpaceOnUse"><stop offset="0.231" stop-color="#999875" /><stop offset="0.563" stop-color="#9b9977" /><stop offset="0.683" stop-color="#a09f7e" /><stop offset="0.768" stop-color="#a9a889" /><stop offset="0.837" stop-color="#b7b69a" /><stop offset="0.896" stop-color="#c9c7b0" /><stop offset="0.948" stop-color="#deddcb" /><stop offset="0.994" stop-color="#f8f6eb" /><stop offset="1" stop-color="#fbf9ef" /></linearGradient><linearGradient id="b" x1="-644.287" y1="823.405" x2="-657.028" y2="845.476" gradientTransform="matrix(-0.977, -0.323, -0.29, 0.877, -375.944, -928.287)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#48a547" /><stop offset="1" stop-color="#3f9143" /></linearGradient><linearGradient id="c" x1="-643.386" y1="839.485" x2="-652.418" y2="833.417" gradientTransform="matrix(-0.977, -0.323, -0.29, 0.877, -375.944, -928.287)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#41a247" /><stop offset="0.352" stop-color="#4ba74b" /><stop offset="0.956" stop-color="#67b554" /><stop offset="1" stop-color="#69b655" /></linearGradient></defs><title>mongo</title><path d="M16.62,30l-.751-.249s.1-3.8-1.275-4.067c-.9-1.048.133-44.741,3.423-.149a2.712,2.712,0,0,0-1.333,1.523A14.1,14.1,0,0,0,16.62,30Z" style="fill:url(#a)" /><path d="M17.026,26.329a13.223,13.223,0,0,0,5-13.225C20.556,6.619,17.075,4.487,16.7,3.673a9.792,9.792,0,0,1-.825-1.6l.277,18.069S15.578,25.664,17.026,26.329Z" style="fill:url(#b)" /><path d="M15.487,26.569S9.366,22.4,9.72,15.025A15.54,15.54,0,0,1,15.239,3.377,1.725,1.725,0,0,0,15.846,2c.381.82.319,12.243.359,13.579C16.36,20.776,15.916,25.588,15.487,26.569Z" style="fill:url(#c)" /></symbol><symbol id="package" viewBox="0 0 32 32"><title>package</title><path d="M7.61,3.093c2.078-.019,4.159,0,6.238-.008-.493,2.123-.966,4.252-1.457,6.376q-4.745,0-9.491,0c-.3,0-.6.01-.9-.012C3.864,7.325,5.749,5.219,7.61,3.093Z" style="fill:#f2e6c9" /><path d="M18.163,3.086q3.109,0,6.22,0C26.251,5.212,28.137,7.32,30,9.449c-1.2.025-2.4,0-3.6.011q-3.4,0-6.795,0C19.133,7.333,18.629,5.214,18.163,3.086Z" style="fill:#f2e6c9" /><path d="M13.848,3.086q2.158,0,4.315,0c.466,2.128.969,4.247,1.444,6.373-2.405,0-4.811,0-7.216,0C12.882,7.337,13.355,5.209,13.848,3.086Z" style="fill:#efc75e" /><path d="M2,9.448c.3.022.6.011.9.012q4.745,0,9.491,0c0,2.245,0,4.49.007,6.735a2.44,2.44,0,0,0,.256.018q3.372,0,6.743,0c.067,0,.134-.007.2-.014.019-2.247,0-4.494.009-6.741q3.4,0,6.795,0c1.2-.006,2.4.014,3.6-.011q0,9.732,0,19.466-14,0-28,0Q2,19.181,2,9.448Z" style="fill:#e7bf55" /><path d="M12.391,9.462c2.405,0,4.811,0,7.216,0-.008,2.247.011,4.494-.009,6.741-.067.007-.134.012-.2.014q-3.372,0-6.743,0A2.44,2.44,0,0,1,12.4,16.2C12.386,13.952,12.4,11.706,12.391,9.462Z" style="fill:#dbb551" /><rect x="4.044" y="22.581" width="9.37" height="3.608" style="fill:var(--inverse-color)" /></symbol><symbol id="pdf2" viewBox="0 0 32 32"><title>pdf2</title><path d="M24.1,2.072h0l5.564,5.8V29.928H8.879V30H29.735V7.945L24.1,2.072" style="fill:#909090" /><path d="M24.031,2H8.808V29.928H29.664V7.873L24.03,2" style="fill:#f4f4f4" /><path d="M8.655,3.5H2.265v6.827h20.1V3.5H8.655" style="fill:#7a7b7c" /><path d="M22.472,10.211H2.395V3.379H22.472v6.832" style="fill:#dd2025" /><path d="M9.052,4.534h-.03l-.207,0H7.745v4.8H8.773V7.715L9,7.728a2.042,2.042,0,0,0,.647-.117,1.427,1.427,0,0,0,.493-.291,1.224,1.224,0,0,0,.335-.454,2.13,2.13,0,0,0,.105-.908,2.237,2.237,0,0,0-.114-.644,1.173,1.173,0,0,0-.687-.65A2.149,2.149,0,0,0,9.37,4.56a2.232,2.232,0,0,0-.319-.026M8.862,6.828l-.089,0V5.348h.193a.57.57,0,0,1,.459.181.92.92,0,0,1,.183.558c0,.246,0,.469-.222.626a.942.942,0,0,1-.524.114" style="fill:#464648" /><path d="M12.533,4.521c-.111,0-.219.008-.295.011L12,4.538h-.78v4.8h.918a2.677,2.677,0,0,0,1.028-.175,1.71,1.71,0,0,0,.68-.491,1.939,1.939,0,0,0,.373-.749,3.728,3.728,0,0,0,.114-.949,4.416,4.416,0,0,0-.087-1.127,1.777,1.777,0,0,0-.4-.733,1.63,1.63,0,0,0-.535-.4,2.413,2.413,0,0,0-.549-.178,1.282,1.282,0,0,0-.228-.017m-.182,3.937-.1,0V5.392h.013a1.062,1.062,0,0,1,.6.107,1.2,1.2,0,0,1,.324.4,1.3,1.3,0,0,1,.142.526c.009.22,0,.4,0,.549a2.926,2.926,0,0,1-.033.513,1.756,1.756,0,0,1-.169.5,1.13,1.13,0,0,1-.363.36.673.673,0,0,1-.416.106" style="fill:#464648" /><path d="M17.43,4.538H15v4.8h1.028V7.434h1.3V6.542h-1.3V5.43h1.4V4.538" style="fill:#464648" /><path d="M21.781,20.255s3.188-.578,3.188.511S22.994,21.412,21.781,20.255Zm-2.357.083a7.543,7.543,0,0,0-1.473.489l.4-.9c.4-.9.815-2.127.815-2.127a14.216,14.216,0,0,0,1.658,2.252,13.033,13.033,0,0,0-1.4.288Zm-1.262-6.5c0-.949.307-1.208.546-1.208s.508.115.517.939a10.787,10.787,0,0,1-.517,2.434A4.426,4.426,0,0,1,18.161,13.841ZM13.513,24.354c-.978-.585,2.051-2.386,2.6-2.444C16.11,21.911,14.537,24.966,13.513,24.354ZM25.9,20.895c-.01-.1-.1-1.207-2.07-1.16a14.228,14.228,0,0,0-2.453.173,12.542,12.542,0,0,1-2.012-2.655,11.76,11.76,0,0,0,.623-3.1c-.029-1.2-.316-1.888-1.236-1.878s-1.054.815-.933,2.013a9.309,9.309,0,0,0,.665,2.338s-.425,1.323-.987,2.639-.946,2.006-.946,2.006a9.622,9.622,0,0,0-2.725,1.4c-.824.767-1.159,1.356-.725,1.945.374.508,1.683.623,2.853-.91a22.549,22.549,0,0,0,1.7-2.492s1.784-.489,2.339-.623,1.226-.24,1.226-.24,1.629,1.639,3.2,1.581,1.495-.939,1.485-1.035" style="fill:#dd2025" /><path d="M23.954,2.077V7.95h5.633L23.954,2.077Z" style="fill:#909090" /><path d="M24.031,2V7.873h5.633L24.031,2Z" style="fill:#f4f4f4" /><path d="M8.975,4.457h-.03l-.207,0H7.668v4.8H8.7V7.639l.228.013a2.042,2.042,0,0,0,.647-.117,1.428,1.428,0,0,0,.493-.291A1.224,1.224,0,0,0,10.4,6.79a2.13,2.13,0,0,0,.105-.908,2.237,2.237,0,0,0-.114-.644,1.173,1.173,0,0,0-.687-.65,2.149,2.149,0,0,0-.411-.105,2.232,2.232,0,0,0-.319-.026M8.785,6.751l-.089,0V5.271H8.89a.57.57,0,0,1,.459.181.92.92,0,0,1,.183.558c0,.246,0,.469-.222.626a.942.942,0,0,1-.524.114" style="fill:#fff" /><path d="M12.456,4.444c-.111,0-.219.008-.295.011l-.235.006h-.78v4.8h.918a2.677,2.677,0,0,0,1.028-.175,1.71,1.71,0,0,0,.68-.491,1.939,1.939,0,0,0,.373-.749,3.728,3.728,0,0,0,.114-.949,4.416,4.416,0,0,0-.087-1.127,1.777,1.777,0,0,0-.4-.733,1.63,1.63,0,0,0-.535-.4,2.413,2.413,0,0,0-.549-.178,1.282,1.282,0,0,0-.228-.017m-.182,3.937-.1,0V5.315h.013a1.062,1.062,0,0,1,.6.107,1.2,1.2,0,0,1,.324.4,1.3,1.3,0,0,1,.142.526c.009.22,0,.4,0,.549a2.926,2.926,0,0,1-.033.513,1.756,1.756,0,0,1-.169.5,1.13,1.13,0,0,1-.363.36.673.673,0,0,1-.416.106" style="fill:#fff" /><path d="M17.353,4.461h-2.43v4.8h1.028V7.357h1.3V6.465h-1.3V5.353h1.4V4.461" style="fill:#fff" /></symbol><symbol id="pgsql" viewBox="0 0 32 32"><title>pgsql</title><path d="M29.507,18.773a1.378,1.378,0,0,0-1.144-.921,2.619,2.619,0,0,0-.913.051,8.2,8.2,0,0,1-1.406.185,27.125,27.125,0,0,0,2.872-6.83c.953-3.689.444-5.369-.151-6.13A8.239,8.239,0,0,0,22.121,2a11.773,11.773,0,0,0-3.453.484A12.858,12.858,0,0,0,16.648,2.3a6.565,6.565,0,0,0-3.518.867,16.039,16.039,0,0,0-2.484-.624,7.694,7.694,0,0,0-5.819.924C3.093,4.691,2.289,6.819,2.438,9.792A36.351,36.351,0,0,0,3.844,16.33a22.579,22.579,0,0,0,1.514,3.863A4.786,4.786,0,0,0,7.8,22.742a2.4,2.4,0,0,0,2.379-.516,2.08,2.08,0,0,0,.5.43,3.328,3.328,0,0,0,.944.4,5.069,5.069,0,0,0,3.3-.2c.006.171.011.335.014.477.006.229.013.454.021.665a11.641,11.641,0,0,0,.441,3.3c.016.043.037.107.059.176a3.975,3.975,0,0,0,.991,1.745,2.955,2.955,0,0,0,2.09.777,4.7,4.7,0,0,0,.977-.109A4.592,4.592,0,0,0,22.607,28.1c.811-1.155,1.206-2.894,1.277-5.635.009-.078.018-.152.026-.222l.017-.145.191.017.049,0a7.562,7.562,0,0,0,3.163-.548c.631-.293,2.654-1.361,2.177-2.8" /><path d="M27.689,19.053c-3.163.652-3.38-.418-3.38-.418C27.648,13.68,29.044,7.39,27.839,5.851c-3.286-4.2-8.975-2.213-9.07-2.162l-.031.006a11.28,11.28,0,0,0-2.11-.22,5.212,5.212,0,0,0-3.34,1S3.14.294,3.612,9.733c.1,2.008,2.878,15.194,6.191,11.211,1.211-1.456,2.381-2.688,2.381-2.688a3.071,3.071,0,0,0,2.006.512l.057-.048a2.21,2.21,0,0,0,.023.567c-.854.954-.6,1.121-2.309,1.472-1.726.356-.712.989-.05,1.155a3.508,3.508,0,0,0,3.915-1.272l-.05.2c.334.268.569,1.742.53,3.079a8.481,8.481,0,0,0,.2,2.971c.264.717.526,2.329,2.769,1.849a3.307,3.307,0,0,0,2.98-3.179c.1-1.234.313-1.052.326-2.155l.174-.522c.2-1.673.032-2.213,1.186-1.962l.281.025a6.4,6.4,0,0,0,2.615-.44c1.406-.652,2.239-1.742.853-1.455h0" style="fill:#336791" /><path d="M13.882,10.631a.981.981,0,0,0-.674.1.247.247,0,0,0-.1.164.48.48,0,0,0,.117.314.881.881,0,0,0,.559.349.637.637,0,0,0,.09.006.725.725,0,0,0,.687-.467c.035-.248-.326-.414-.676-.463m9.442.008c-.027-.195-.374-.25-.7-.2s-.647.194-.62.389a.667.667,0,0,0,.62.411.592.592,0,0,0,.083-.006.8.8,0,0,0,.451-.247.5.5,0,0,0,.169-.343" style="fill:#fff" /><path d="M28.741,18.979c-.121-.365-.509-.482-1.154-.349-1.915.4-2.6.121-2.826-.044a26.327,26.327,0,0,0,3.373-7.565,14.374,14.374,0,0,0,.5-3.253,3.513,3.513,0,0,0-.509-2.2,7.482,7.482,0,0,0-6.049-2.825,10.363,10.363,0,0,0-3.5.551,8.717,8.717,0,0,0-1.968-.253,5.684,5.684,0,0,0-3.372.929,15.051,15.051,0,0,0-2.74-.718,6.978,6.978,0,0,0-5.242.805c-1.5,1.064-2.2,2.966-2.061,5.653a35.489,35.489,0,0,0,1.373,6.348c1.07,3.505,2.233,5.49,3.457,5.9a1.548,1.548,0,0,0,.491.081,2.049,2.049,0,0,0,1.563-.886q1.042-1.25,2.155-2.438a3.472,3.472,0,0,0,1.55.417l0,.042q-.14.166-.273.338c-.375.475-.452.574-1.658.823-.343.071-1.254.259-1.267.9-.014.7,1.077.991,1.2,1.022a5.144,5.144,0,0,0,1.249.162,3.634,3.634,0,0,0,2.5-.934,23.674,23.674,0,0,0,.381,5.684,2.854,2.854,0,0,0,2.729,2.1,4.378,4.378,0,0,0,.917-.1,3.462,3.462,0,0,0,3.156-3.212c.177-1.026.481-3.475.624-4.789a3.859,3.859,0,0,0,1.11.137,6.6,6.6,0,0,0,2.519-.48c.712-.331,2-1.141,1.763-1.846ZM24.051,10.1a7.968,7.968,0,0,1-.116,1.107,10.229,10.229,0,0,0-.14,1.3,9.859,9.859,0,0,0,.1,1.47,5.236,5.236,0,0,1-.229,2.986,3.882,3.882,0,0,1-.207-.426c-.058-.141-.185-.368-.359-.681-.68-1.22-2.274-4.078-1.458-5.244.243-.347.86-.7,2.408-.512ZM22.174,3.531a6.617,6.617,0,0,1,5.334,2.522c.975,1.245-.1,6.912-3.205,11.8l-.094-.119-.039-.049a5.524,5.524,0,0,0,.506-3.8,9.114,9.114,0,0,1-.1-1.352,9.572,9.572,0,0,1,.131-1.206,7.614,7.614,0,0,0,.123-1.493.619.619,0,0,0,.013-.21,8.381,8.381,0,0,0-1.912-3.6,8.61,8.61,0,0,0-3.039-2.284,10.246,10.246,0,0,1,2.28-.214ZM9.479,20.654c-.627.754-1.061.61-1.2.562-.928-.31-2.006-2.272-2.955-5.384a35.167,35.167,0,0,1-1.34-6.159c-.12-2.4.462-4.074,1.73-4.974,2.063-1.463,5.456-.587,6.819-.143-.02.019-.04.037-.059.057-2.237,2.259-2.184,6.119-2.178,6.355,0,.091.007.22.018.4a15.969,15.969,0,0,1-.081,3.226A4.08,4.08,0,0,0,11.3,18.007q.133.138.278.262c-.383.41-1.216,1.318-2.1,2.385Zm2.39-3.19a3.3,3.3,0,0,1-.865-2.764,16.7,16.7,0,0,0,.087-3.381c-.006-.095-.011-.178-.014-.243A4.3,4.3,0,0,1,14,10.223a1.188,1.188,0,0,1,.918,1.026c.646,2.989.085,4.234-.365,5.235-.093.206-.181.4-.255.6l-.058.156a10.218,10.218,0,0,0-.368,1.109,2.788,2.788,0,0,1-2-.887Zm.113,4.03a1.733,1.733,0,0,1-.523-.225,2.553,2.553,0,0,1,.557-.166c1.418-.292,1.637-.5,2.116-1.105.11-.139.234-.3.406-.489h0c.256-.287.374-.238.586-.15a.829.829,0,0,1,.408.525.585.585,0,0,1-.05.491A3.1,3.1,0,0,1,11.983,21.495ZM19.406,28.4a2.113,2.113,0,0,1-2.754-1.526,31.129,31.129,0,0,1-.3-6.853.392.392,0,0,0-.017-.124,1.643,1.643,0,0,0-.048-.23,1.589,1.589,0,0,0-.862-1.034,1.216,1.216,0,0,0-.793-.1,9.586,9.586,0,0,1,.342-1.022l.058-.157c.066-.177.148-.36.235-.554.471-1.047,1.117-2.482.416-5.722a2.044,2.044,0,0,0-2.468-1.669A5.694,5.694,0,0,0,11.328,10c-.078.04-.15.078-.216.115A8.244,8.244,0,0,1,13.03,5.163,4.711,4.711,0,0,1,16.6,3.827,7.567,7.567,0,0,1,22.381,6.59,8.774,8.774,0,0,1,23.963,9.3c-1.463-.149-2.458.14-2.962.861-1.1,1.568.6,4.612,1.416,6.075.15.268.279.5.319.6a5.432,5.432,0,0,0,.861,1.387c.077.1.152.189.208.271-.443.128-1.239.423-1.166,1.9-.058.74-.474,4.205-.686,5.43-.279,1.617-.874,2.22-2.548,2.579Zm7.242-8.288a5.714,5.714,0,0,1-1.931.4,2.422,2.422,0,0,1-1.3-.167c-.045-.919.3-1.015.66-1.117.057-.016.112-.032.166-.05a1.353,1.353,0,0,0,.11.08c.639.422,1.78.467,3.39.135l.018,0a4.334,4.334,0,0,1-1.116.72Z" style="fill:#fff" /></symbol><symbol id="psd" viewBox="0 0 32 32"><title>psd</title><path d="M3.167,3.517H28.833V28.483H3.167Z" style="fill:#0c0824" /><path d="M3.167,3.517H28.833V28.483H3.167ZM2,29.65H30V2.35H2Zm18.877-16.1c-.922,0-1.237.467-1.237.852,0,.42.21.712,1.447,1.353,1.832.887,2.4,1.738,2.4,2.987,0,1.867-1.423,2.87-3.348,2.87a5.076,5.076,0,0,1-2.392-.5c-.082-.035-.093-.093-.093-.187V19.208c0-.117.058-.152.14-.093a4.33,4.33,0,0,0,2.345.688c.922,0,1.307-.385,1.307-.91,0-.42-.268-.793-1.447-1.4-1.657-.793-2.345-1.6-2.345-2.94,0-1.505,1.178-2.753,3.22-2.753a5.365,5.365,0,0,1,2.088.327.258.258,0,0,1,.117.233v1.6c0,.093-.058.152-.175.117a3.941,3.941,0,0,0-2.03-.525ZM10.843,14.938c.268.023.478.023.945.023,1.365,0,2.648-.478,2.648-2.333,0-1.482-.922-2.228-2.473-2.228-.467,0-.91.023-1.12.035Zm-2.077-6.2c0-.082.163-.14.257-.14.747-.035,1.855-.058,3.01-.058,3.232,0,4.492,1.773,4.492,4.037,0,2.963-2.147,4.235-4.783,4.235-.443,0-.595-.023-.91-.023v4.48c0,.093-.035.14-.14.14H8.907c-.093,0-.14-.035-.14-.14V8.743Z" style="fill:#31c5f0" /></symbol><symbol id="psd2" viewBox="0 0 32 32"><title>psd2</title><polyline points="24.099 2 8.837 2 8.837 30 8.909 30 29.747 30 29.747 7.888 24.168 2.072 24.099 2" style="fill:#070444" /><rect x="2.253" y="3.493" width="20.307" height="7.844" style="fill:#5bc3f6" /><polygon points="24.099 2 24.099 7.888 29.747 7.888 24.099 2" style="fill:#5bc3f6" /><path d="M7.1,4.987a6,6,0,0,1,1.242-.1,1.576,1.576,0,0,1,1.187.392,1.714,1.714,0,0,1,.429,1.207A1.946,1.946,0,0,1,9.6,7.712a1.565,1.565,0,0,1-1.254.518A2.084,2.084,0,0,1,8.1,8.215v1.7h-1Zm1,2.206a1.61,1.61,0,0,0,.228.015.621.621,0,0,0,.641-.7A.546.546,0,0,0,8.4,5.89a1.166,1.166,0,0,0-.3.03Z" style="fill:#070444" /><path d="M11.083,8.578a1.845,1.845,0,0,0,.975.311c.345,0,.513-.156.513-.407S12.4,8.1,11.98,7.9a1.594,1.594,0,0,1-1.053-1.5,1.454,1.454,0,0,1,1.5-1.562,1.925,1.925,0,0,1,1.02.259L13.24,6.164a1.576,1.576,0,0,0-.819-.237c-.306,0-.474.148-.474.37,0,.252.2.355.674.592a1.543,1.543,0,0,1,.981,1.5,1.494,1.494,0,0,1-1.6,1.6,2.117,2.117,0,0,1-1.1-.311Z" style="fill:#070444" /><path d="M15.62,8.98l-.1,0V5.755h.014a1.117,1.117,0,0,1,.629.113,1.262,1.262,0,0,1,.341.422,1.369,1.369,0,0,1,.149.553c.01.231,0,.417,0,.578a3.079,3.079,0,0,1-.035.539,1.846,1.846,0,0,1-.178.529,1.187,1.187,0,0,1-.382.379.707.707,0,0,1-.437.111m.192-4.141c-.117,0-.23.009-.31.012l-.247.007h-.82V9.911H15.4a2.815,2.815,0,0,0,1.082-.184A1.8,1.8,0,0,0,17.2,9.21a2.04,2.04,0,0,0,.392-.788,3.921,3.921,0,0,0,.12-1,4.644,4.644,0,0,0-.092-1.186,1.868,1.868,0,0,0-.425-.771,1.712,1.712,0,0,0-.563-.422,2.537,2.537,0,0,0-.577-.188,1.349,1.349,0,0,0-.24-.018" style="fill:#070444" /><path d="M16,19.651a7.218,7.218,0,0,1-.9-.031V16.13c.111-.016.5-.031,1.04-.031,1.3,0,1.873.546,1.873,1.791,0,1.556-.916,1.761-2.012,1.761m.139-5.031c-1.054,0-2.095.016-2.622.031-.069,0-.083.031-.083.109v9.93c0,.078.028.109.1.109H15c.069,0,.1-.031.1-.125V21.13h.86c2.039,0,3.718-.658,3.718-3.132-.014-1.805-.818-3.378-3.538-3.378" style="fill:#5bc3f6" /><path d="M23.075,17.218a2.266,2.266,0,0,0-2.539,2.257c0,1.136.5,1.743,1.928,2.4,1,.451,1.249.685,1.249,1.089,0,.342-.222.7-.86.7a4.067,4.067,0,0,1-2.247-.841.056.056,0,0,0-.034-.012c-.033,0-.063.032-.063.09v1.432a.159.159,0,0,0,.083.156,3.942,3.942,0,0,0,2.15.607,2.317,2.317,0,0,0,2.594-2.4c0-1.121-.61-1.7-2.039-2.35-1.04-.467-1.221-.669-1.221-1.043,0-.3.18-.654.86-.654a3.8,3.8,0,0,1,1.928.591.094.094,0,0,0,.052.018c.043,0,.073-.043.073-.112V17.872a.224.224,0,0,0-.083-.2,3.365,3.365,0,0,0-1.831-.451" style="fill:#5bc3f6" /></symbol><symbol id="php" viewBox="0 0 32 32"><defs><radialGradient id="a" cx="-16.114" cy="20.532" r="18.384" gradientTransform="translate(26.52 -9.307)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.5" stop-color="#4c6b96" /><stop offset="1" stop-color="#231f20" /></radialGradient></defs><title>php</title><ellipse cx="16" cy="16" rx="14" ry="7.365" style="fill:url(#a)" /><ellipse cx="16" cy="16" rx="13.453" ry="6.818" style="fill:#6280b6" /><path d="M18.725,18.2l.667-3.434a1.752,1.752,0,0,0-.372-1.719,2.929,2.929,0,0,0-2-.525H15.867l.331-1.7a.219.219,0,0,0-.215-.26h-1.6a.219.219,0,0,0-.215.177l-.709,3.646a2.051,2.051,0,0,0-.477-1.054,2.783,2.783,0,0,0-2.2-.807H7.7a.219.219,0,0,0-.215.177l-1.434,7.38a.219.219,0,0,0,.215.26H7.869a.219.219,0,0,0,.215-.177l.347-1.785h1.2a5.167,5.167,0,0,0,1.568-.2,3.068,3.068,0,0,0,1.15-.689,3.538,3.538,0,0,0,.68-.844l-.287,1.475a.219.219,0,0,0,.215.26h1.6a.219.219,0,0,0,.215-.177l.787-4.051h1.094c.466,0,.6.093.64.133s.1.165.025.569l-.635,3.265a.219.219,0,0,0,.215.26h1.62A.219.219,0,0,0,18.725,18.2ZM11.33,15.366a1.749,1.749,0,0,1-.561,1.092,2.171,2.171,0,0,1-1.315.321H8.742l.515-2.651h.921c.677,0,.949.145,1.059.266A1.181,1.181,0,0,1,11.33,15.366Z" style="fill:#fff" /><path d="M25.546,13.332a2.783,2.783,0,0,0-2.2-.807H20.255a.219.219,0,0,0-.215.177l-1.434,7.38a.219.219,0,0,0,.215.26h1.608a.219.219,0,0,0,.215-.177l.347-1.785h1.2a5.167,5.167,0,0,0,1.568-.2,3.068,3.068,0,0,0,1.15-.689,3.425,3.425,0,0,0,1.076-1.927A2.512,2.512,0,0,0,25.546,13.332Zm-1.667,2.034a1.749,1.749,0,0,1-.561,1.092A2.171,2.171,0,0,1,22,16.778H21.29l.515-2.651h.921c.677,0,.949.145,1.059.266A1.181,1.181,0,0,1,23.879,15.366Z" style="fill:#fff" /><path d="M10.178,13.908a1.645,1.645,0,0,1,1.221.338,1.34,1.34,0,0,1,.145,1.161,1.945,1.945,0,0,1-.642,1.223A2.361,2.361,0,0,1,9.454,17H8.476l.6-3.089ZM6.261,20.124H7.869l.381-1.962H9.627a4.931,4.931,0,0,0,1.5-.191,2.84,2.84,0,0,0,1.07-.642,3.207,3.207,0,0,0,1.01-1.808,2.3,2.3,0,0,0-.385-2.044,2.568,2.568,0,0,0-2.035-.732H7.7Z" style="fill:#000004" /><path d="M14.387,10.782h1.6L15.6,12.744h1.421a2.767,2.767,0,0,1,1.85.468,1.548,1.548,0,0,1,.305,1.516l-.667,3.434H16.89l.635-3.265a.886.886,0,0,0-.08-.76,1.121,1.121,0,0,0-.8-.2H15.37l-.822,4.228h-1.6Z" style="fill:#000004" /><path d="M22.727,13.908a1.645,1.645,0,0,1,1.221.338,1.34,1.34,0,0,1,.145,1.161,1.945,1.945,0,0,1-.642,1.223A2.361,2.361,0,0,1,22,17h-.978l.6-3.089ZM18.81,20.124h1.608l.381-1.962h1.377a4.931,4.931,0,0,0,1.5-.191,2.84,2.84,0,0,0,1.07-.642,3.207,3.207,0,0,0,1.01-1.808,2.3,2.3,0,0,0-.385-2.044,2.568,2.568,0,0,0-2.035-.732H20.244Z" style="fill:#000004" /></symbol><symbol id="php3" viewBox="0 0 32 32"><title>php3</title><path d="M7.6,13.791a2.352,2.352,0,0,1,1.745.483,1.916,1.916,0,0,1,.207,1.66,2.78,2.78,0,0,1-.918,1.748,3.375,3.375,0,0,1-2.07.529h-1.4L6.024,13.8ZM2,22.677H4.3l.545-2.8H6.812A7.049,7.049,0,0,0,8.956,19.6a4.06,4.06,0,0,0,1.53-.918A4.585,4.585,0,0,0,11.93,16.1a3.288,3.288,0,0,0-.55-2.922A3.671,3.671,0,0,0,8.47,12.129H4.057Z" style="fill:#8993be" /><path d="M13.617,9.323H15.9l-.553,2.8h2.031a3.956,3.956,0,0,1,2.645.669,2.213,2.213,0,0,1,.436,2.167l-.954,4.909H17.195l.908-4.667a1.267,1.267,0,0,0-.114-1.086,1.6,1.6,0,0,0-1.144-.286H15.022l-1.175,6.044H11.559Z" style="fill:#8993be" /><path d="M25.539,13.791a2.352,2.352,0,0,1,1.745.483,1.916,1.916,0,0,1,.207,1.66,2.78,2.78,0,0,1-.918,1.748,3.375,3.375,0,0,1-2.074.529H23.1l.858-4.416Zm-5.6,8.886h2.3l.545-2.8h1.968A7.049,7.049,0,0,0,26.9,19.6a4.06,4.06,0,0,0,1.53-.918A4.585,4.585,0,0,0,29.869,16.1a3.288,3.288,0,0,0-.55-2.922,3.671,3.671,0,0,0-2.909-1.046h-4.42Z" style="fill:#8993be" /></symbol><symbol id="postman" viewBox="0 0 32 32"><title>postman</title><path fill="#ff6c37" d="M17.783 2.114a14 14 0 1 0-3.566 27.772 14 14 0 0 0 3.566-27.772z" /><g fill="#fff" stroke-width=".875"><path d="M12.121 16.885a.053.053 0 0 0 .062.028l2.24-.483-.943-.955-1.342 1.343a.052.052 0 0 0-.017.067zM22.61 7.267a2.087 2.087 0 1 0 .88 3.981l-1.42-1.42a.175.175 0 0 1 0-.247l1.855-1.854a2.087 2.087 0 0 0-1.315-.46z" /><path d="M24.18 7.968 22.441 9.7l1.364 1.364a2.1 2.1 0 0 0 .375-3.095zM20.701 11.164h-.03a.546.546 0 0 0-.109.01h-.012a.821.821 0 0 0-.115.033l-.03.014a.549.549 0 0 0-.08.042l-.031.02a.729.729 0 0 0-.096.078l-5.156 5.158.639.638 5.46-4.792a.635.635 0 0 0 .084-.09l.023-.03a.762.762 0 0 0 .097-.205c0-.016.01-.033.014-.05a.82.82 0 0 0 .014-.105v-.122c0-.025 0-.033-.007-.05a.68.68 0 0 0-.533-.536h-.027a.735.735 0 0 0-.105-.013zM13.722 15.227l1.058 1.053 5.17-5.17c.169-.165.388-.267.622-.29-.914-.7-1.91-.517-6.85 4.407zM21.432 12.567l-.063.062-5.46 4.79.928.927c2.302-2.177 4.344-4.25 4.595-5.779zM7.812 23.791a.05.05 0 0 0 .045.036l2.38.164-1.334-1.334-1.08 1.078a.053.053 0 0 0-.01.056zM9.152 22.409l1.407 1.407a.107.107 0 0 0 .133.018.105.105 0 0 0 .055-.122l-.237-1.01a.302.302 0 0 1 .156-.338c2.466-1.236 4.456-2.509 5.916-3.78l-.98-.98-2.1.452zM15.301 17.308l-.526-.526-.728.726a.035.035 0 0 0 0 .045.034.034 0 0 0 .04.018z" /></g><path fill="#ff6c37" d="M24.229 9.097a.163.163 0 1 0-.29.14.487.487 0 0 1-.06.526.162.162 0 0 0 .25.207.81.81 0 0 0 .1-.873z" /></symbol><symbol id="powerpoint" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="4.494" y1="-1748.086" x2="13.832" y2="-1731.914" gradientTransform="translate(0 1756)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ca4c28" /><stop offset="0.5" stop-color="#c5401e" /><stop offset="1" stop-color="#b62f14" /></linearGradient></defs><title>powerpoint</title><path d="M18.93,17.3,16.977,3h-.146A12.9,12.9,0,0,0,3.953,15.854V16Z" style="fill:#ed6c47" /><path d="M17.123,3h-.146V16l6.511,2.6L30,16v-.146A12.9,12.9,0,0,0,17.123,3Z" style="fill:#ff8f6b" /><path d="M30,16v.143A12.905,12.905,0,0,1,17.12,29h-.287A12.907,12.907,0,0,1,3.953,16.143V16Z" style="fill:#d35230" /><path d="M17.628,9.389V23.26a1.2,1.2,0,0,1-.742,1.1,1.16,1.16,0,0,1-.45.091H7.027c-.182-.208-.358-.429-.521-.65a12.735,12.735,0,0,1-2.553-7.657v-.286A12.705,12.705,0,0,1,6.05,8.85c.143-.221.293-.442.456-.65h9.93A1.2,1.2,0,0,1,17.628,9.389Z" style="opacity:0.10000000149011612;isolation:isolate" /><path d="M16.977,10.04V23.911a1.15,1.15,0,0,1-.091.448,1.2,1.2,0,0,1-1.1.741H7.62q-.309-.314-.593-.65c-.182-.208-.358-.429-.521-.65a12.735,12.735,0,0,1-2.553-7.657v-.286A12.705,12.705,0,0,1,6.05,8.85h9.735A1.2,1.2,0,0,1,16.977,10.04Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M16.977,10.04V22.611A1.2,1.2,0,0,1,15.785,23.8H6.506a12.735,12.735,0,0,1-2.553-7.657v-.286A12.705,12.705,0,0,1,6.05,8.85h9.735A1.2,1.2,0,0,1,16.977,10.04Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M16.326,10.04V22.611A1.2,1.2,0,0,1,15.134,23.8H6.506a12.735,12.735,0,0,1-2.553-7.657v-.286A12.705,12.705,0,0,1,6.05,8.85h9.084A1.2,1.2,0,0,1,16.326,10.04Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M3.194,8.85H15.132a1.193,1.193,0,0,1,1.194,1.191V21.959a1.193,1.193,0,0,1-1.194,1.191H3.194A1.192,1.192,0,0,1,2,21.959V10.041A1.192,1.192,0,0,1,3.194,8.85Z" style="fill:url(#a)" /><path d="M9.293,12.028a3.287,3.287,0,0,1,2.174.636,2.27,2.27,0,0,1,.756,1.841,2.555,2.555,0,0,1-.373,1.376,2.49,2.49,0,0,1-1.059.935A3.607,3.607,0,0,1,9.2,17.15H7.687v2.8H6.141V12.028ZM7.686,15.94H9.017a1.735,1.735,0,0,0,1.177-.351,1.3,1.3,0,0,0,.4-1.025q0-1.309-1.525-1.31H7.686V15.94Z" style="fill:#fff" /></symbol><symbol id="preact" viewBox="0 0 32 32"><path fill="#673ab8" d="M16 2l12.12 7v14L16 30 3.88 23V9z" /><ellipse fill="none" stroke="#fff" cx="16" cy="16" rx="10.72" ry="4.1" transform="rotate(-37.5 16.007 15.996)" /><ellipse fill="none" stroke="#fff" cx="16" cy="16" rx="4.1" ry="10.72" transform="rotate(-52.5 15.998 15.994)" /><circle fill="#fff" cx="16" cy="16" r="1.86" /></symbol><symbol id="prettier" viewBox="0 0 32 32" stroke-linecap="round" stroke-width="1.33"><title>prettier</title><path d="m2.45 2.45h16.3m-16.3 5.42h9.48m10.8 0h1.35m-16.3 2.71h1.35m4.06 5.42h10.8m-21.7 2.71h5.42m-5.42 8.13h2.71" stroke="#56b3b4" /><path d="m2.45 5.16h4.06m12.2 5.42h6.77m-23 5.42h1.35m6.77 2.71h5.42m-13.5 10.8h6.77" stroke="#ea5e5e" /><path d="m9.23 5.16h13.5m-20.3 5.42h2.71m13.5 2.71h6.77m-19 2.71h4.06m-4.06 5.42h12.2m-10.8 5.42h1.35" stroke="#f7b93e" /><path d="m14.6 7.87h5.42m-17.6 5.42h6.77m9.48 5.42h4.06m-20.3 2.71h1.35m-1.35 2.71h6.77" stroke="#bf85bf" /><path d="m21.4 2.45h8.13m-4.06 2.71h4.06m-2.71 2.71h2.71m-17.6 2.71h4.06m12.2 0h1.35m-17.6 2.71h4.06m12.2 0h1.35m-2.71 2.71h2.71m-4.06 2.71h4.06m-8.13 2.71h2.71m2.71 0h2.71m-17.6 2.71h2.71m2.71 0h12.2m-17.6 2.71h5.42m2.71 0h1.35m2.71 0h5.42m-17.6 2.71h8.13m2.71 0h6.77" stroke="#4d616e" opacity=".5" /></symbol><symbol id="pug" viewBox="0 0 32 32"><title>pug</title><path d="M25.514,12.846c-.052-.938.209-1.825-.209-2.554-1.043-1.825-3.649-2.867-8.863-2.867V7.372h0v.052c-5.735,0-8.185,1.043-9.227,2.867a5.6,5.6,0,0,0-.469,2.554,9.546,9.546,0,0,0-.261,2.45c.156,1.147.261,2.294.417,3.336.156.886,1.408,1.564,1.564,2.4.313,2.242,2.294,3.284,8.028,3.284v.261h-.1v-.261c5.213,0,7.4-1.043,7.716-3.284.1-.834,1.147-1.512,1.3-2.4.156-1.043.209-2.19.365-3.336A11.774,11.774,0,0,0,25.514,12.846Z" style="fill:#efcca3" /><path d="M16.182,13.68a3.241,3.241,0,0,1,2.19,1.147c.73.626,1.929,1.043,2.45,1.616a4.715,4.715,0,0,1,1.408,1.981,8.9,8.9,0,0,1,.313,2.242c0,.261.156.209.573,0a9.02,9.02,0,0,0,2.19-1.877c-.156.886-1.251,1.668-1.355,2.5-.313,2.242-2.5,3.336-7.872,3.336h.313" style="fill:#ccac8d" /><path d="M19.519,11.908c.209.678.886,3.024-.469,2.242a2.557,2.557,0,0,1,.938,1.564,1.831,1.831,0,0,0,1.3,1.408,3.479,3.479,0,0,0,2.554-.626,2.956,2.956,0,0,0,.678-3.284,2.43,2.43,0,0,0-2.137-1.616C21.4,11.334,19.31,11.126,19.519,11.908Z" style="fill:#ccac8d" /><circle cx="22.178" cy="14.41" r="1.929" /><circle cx="21.656" cy="13.524" r="0.521" style="fill:#fff" /><path d="M19.206,14.306a17.68,17.68,0,0,1,2.711,2.346c.938,1.2.938,1.408.938,1.408l-.678.313a7.1,7.1,0,0,0-2.137-2.5c-1.2-.678-1.355-1.251-1.355-1.251Z" style="fill:#efcca3" /><path d="M16.235,13.68a3.605,3.605,0,0,0-2.346,1.147c-.73.626-2.033,1.043-2.5,1.616a4.806,4.806,0,0,0-1.46,1.981,8.9,8.9,0,0,0-.313,2.242c0,.261.052.313-.626,0A7.972,7.972,0,0,1,6.8,18.789c.156.886,1.251,1.668,1.355,2.5.313,2.19,2.5,3.284,7.872,3.284h.365" style="fill:#ccac8d" /><path d="M21.239,17.277a6.552,6.552,0,0,0-5.109-2.607h0a6.638,6.638,0,0,0-5.109,2.607,3.861,3.861,0,0,0-1.043,3.18c0,4.64,1.616,3.232,2.711,3.806a7.466,7.466,0,0,0,3.389.313h0a7.4,7.4,0,0,0,3.389-.313c1.095-.573,2.711.834,2.711-3.806A3.386,3.386,0,0,0,21.239,17.277Z" style="fill:#56332b" /><path d="M16.026,15.974a9.549,9.549,0,0,1-.469,2.554l.573-.156Z" style="fill:#442823" /><path d="M16.182,15.974a9.549,9.549,0,0,0,.469,2.554l-.573-.156Z" style="fill:#442823" /><path d="M14.358,15.453c-.209-.521.573-1.355,1.825-1.355s2.033.834,1.825,1.355-1.043.678-1.825.678C15.348,16.13,14.566,15.974,14.358,15.453Z" style="fill:#56332b" /><path d="M16.182,15.974c0-.1.73-.1,1.147-.365,0,0-.834.261-.991.156a.656.656,0,0,1-.209-.365.656.656,0,0,1-.209.365c-.156.1-1.095-.156-1.095-.156a8.058,8.058,0,0,1,1.2.365v.417a10.492,10.492,0,0,0,.1,2.033c.156.209.1-1.46.1-2.033A1.3,1.3,0,0,1,16.182,15.974Z" /><path d="M16.182,18.945a3.35,3.35,0,0,1,1.616.678,3.121,3.121,0,0,0-1.616-1.095,3.036,3.036,0,0,0-1.825,1.2A3.312,3.312,0,0,1,16.182,18.945Z" style="fill:#7f4a41" /><path d="M16.078,22.8a8.9,8.9,0,0,1-2.4-.469c-.156-.052-.313.052-.469,0a6.172,6.172,0,0,1-3.18-2.137v.209c0,4.64,1.616,3.232,2.711,3.806a7.466,7.466,0,0,0,3.389.313h0a7.4,7.4,0,0,0,3.389-.313c1.095-.573,2.711.834,2.711-3.806v-.469A5.914,5.914,0,0,1,19,22.282c-.156.052-.417-.052-.573-.052A7.045,7.045,0,0,1,16.078,22.8Z" style="fill:#442823" /><path d="M13.941,20.3s-.573,1.668-.156,2.4l-.521-.209A15.433,15.433,0,0,1,13.941,20.3Z" style="fill:#442823" /><path d="M18.32,20.3s.573,1.668.156,2.4L19,22.491A10.629,10.629,0,0,0,18.32,20.3Z" style="fill:#442823" /><path d="M12.585,11.908c-.209.678-.886,3.024.469,2.242a2.557,2.557,0,0,0-.938,1.564,1.831,1.831,0,0,1-1.3,1.408A3.479,3.479,0,0,1,8.258,16.5a2.956,2.956,0,0,1-.678-3.284,2.43,2.43,0,0,1,2.137-1.616C10.709,11.334,12.794,11.126,12.585,11.908Z" style="fill:#ccac8d" /><path d="M16.13,18.528a3.393,3.393,0,0,1,2.45,2.867v-.1a3.051,3.051,0,0,0-2.45-2.919,3,3,0,0,0-2.45,2.919v.1A3.463,3.463,0,0,1,16.13,18.528Z" /><ellipse cx="16.546" cy="15.138" rx="0.156" ry="0.313" transform="translate(-3.256 4.611) rotate(-14.46)" style="fill:#331712" /><ellipse cx="15.609" cy="15.146" rx="0.313" ry="0.156" transform="translate(-3.482 25.567) rotate(-72.765)" style="fill:#331712" /><circle cx="10.031" cy="14.41" r="1.929" /><circle cx="10.552" cy="13.524" r="0.521" style="fill:#fff" /><path d="M16.7,14.41s-.521.209-.626.261a2.492,2.492,0,0,1-.626-.261H16.7Z" style="fill:#7f4a41" /><path d="M12.9,14.306a17.68,17.68,0,0,0-2.711,2.346c-.938,1.2-.938,1.408-.938,1.408l.678.313a7.1,7.1,0,0,1,2.137-2.5c1.2-.678,1.355-1.251,1.355-1.251Z" style="fill:#efcca3" /><path d="M9.092,10.813a4.519,4.519,0,0,1-1.929,2.294A2.19,2.19,0,0,0,9.092,10.813Z" style="fill:#ccac8d" /><path d="M22.908,10.813a4.519,4.519,0,0,0,1.929,2.294A2.19,2.19,0,0,1,22.908,10.813Z" style="fill:#ccac8d" /><path d="M19.31,13.836a5.16,5.16,0,0,0-3.076-1.408h.156a3.852,3.852,0,0,0-3.024,1.408,4.832,4.832,0,0,1,3.024-1.043h0A5.785,5.785,0,0,1,19.31,13.836Z" style="fill:#ccac8d" /><path d="M17.746,10.969a2.455,2.455,0,0,0-1.564-.938h.156a1.786,1.786,0,0,0-1.512.938,2.187,2.187,0,0,1,1.512-.678h0A1.894,1.894,0,0,1,17.746,10.969Z" style="fill:#ccac8d" /><path d="M10.031,17.746a2.545,2.545,0,0,1-1.773.209H8.05a3.68,3.68,0,0,1-.886-1.512A2.27,2.27,0,0,0,10.031,17.746Z" style="fill:#ccac8d" /><path d="M22.126,17.746a2.545,2.545,0,0,0,1.773.209H23.69a1.749,1.749,0,0,0,1.095-1.512A2.02,2.02,0,0,1,22.126,17.746Z" style="fill:#ccac8d" /><path d="M11.23,10.709a4.75,4.75,0,0,1,2.242.1c.938.313.209,1.564.365,1.616a2.865,2.865,0,0,1,2.242-.73c1.773.1,1.981.886,2.242.73.261-.1-.261-2.19,2.45-1.72,0,0-2.763-.73-2.659,1.251a3.675,3.675,0,0,0-3.858-.1S14.827,9.927,11.23,10.709Z" style="fill:#ccac8d" /><path d="M10.5,8s-2.4,2.972-2.711,4.118c-.365,1.147-.626,5.943-.938,6.621L5.756,14.045l2.033-4.9Z" style="fill:#ccac8d" /><path d="M21.656,8s2.4,2.972,2.711,4.118c.365,1.147.626,5.943.938,6.621L26.4,14.045l-2.033-4.9Z" style="fill:#ccac8d" /><path d="M21.5,8a11.617,11.617,0,0,1,3.284,4.588c.73,2.45.417,5.474.991,5.839.834.521,1.72-2.607,2.033-2.919.469-.521,2.085-1.877,2.19-2.137s-3.232-3.91-4.744-4.64C23.585,7.893,21.4,7.789,21.5,8Z" style="fill:#56332b" /><path d="M23.69,9.3a15.379,15.379,0,0,1,2.972,8.654l1.2-2.45A16.564,16.564,0,0,0,23.69,9.3Z" style="fill:#442823" /><path d="M10.5,8a11.617,11.617,0,0,0-3.284,4.588c-.73,2.45-.417,5.474-.991,5.839-.834.521-1.72-2.607-2.033-2.919-.469-.521-2.085-1.877-2.19-2.137s3.232-3.91,4.744-4.64C8.415,7.893,10.6,7.789,10.5,8Z" style="fill:#56332b" /><path d="M8.31,9.3a15.379,15.379,0,0,0-2.972,8.654L4.14,15.5A16.564,16.564,0,0,1,8.31,9.3Z" style="fill:#442823" /><path d="M6.642,18.007a4.118,4.118,0,0,0,.573,1.564c.365.365.1-.313.1-.313s-.365-.209-.313-1.72S6.642,18.007,6.642,18.007Z" style="fill:#ccac8d" /><path d="M25.41,18.007a4.118,4.118,0,0,1-.573,1.564c-.365.365-.1-.313-.1-.313s.365-.209.313-1.72C24.993,16.078,25.41,18.007,25.41,18.007Z" style="fill:#ccac8d" /><circle cx="13.889" cy="17.121" r="0.156" style="fill:#442823" /><circle cx="12.846" cy="18.216" r="0.156" style="fill:#442823" /><circle cx="12.533" cy="17.121" r="0.156" style="fill:#442823" /><circle cx="18.164" cy="17.121" r="0.156" style="fill:#442823" /><circle cx="19.154" cy="18.216" r="0.156" style="fill:#442823" /><circle cx="19.467" cy="17.121" r="0.156" style="fill:#442823" /></symbol><symbol id="python" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="-133.268" y1="-202.91" x2="-133.198" y2="-202.84" gradientTransform="translate(25243.061 38519.17) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#387eb8" /><stop offset="1" stop-color="#366994" /></linearGradient><linearGradient id="b" x1="-133.575" y1="-203.203" x2="-133.495" y2="-203.133" gradientTransform="translate(25309.061 38583.42) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffe052" /><stop offset="1" stop-color="#ffc331" /></linearGradient></defs><title>python</title><path d="M15.885,2.1c-7.1,0-6.651,3.07-6.651,3.07V8.36h6.752v1H6.545S2,8.8,2,16.005s4.013,6.912,4.013,6.912H8.33V19.556s-.13-4.013,3.9-4.013h6.762s3.772.06,3.772-3.652V5.8s.572-3.712-6.842-3.712h0ZM12.153,4.237a1.214,1.214,0,1,1-1.183,1.244v-.02a1.214,1.214,0,0,1,1.214-1.214h0Z" style="fill:url(#a)" /><path d="M16.085,29.91c7.1,0,6.651-3.08,6.651-3.08V23.65H15.985v-1h9.47S30,23.158,30,15.995s-4.013-6.912-4.013-6.912H23.64V12.4s.13,4.013-3.9,4.013H12.975S9.2,16.356,9.2,20.068V26.2s-.572,3.712,6.842,3.712h.04Zm3.732-2.147A1.214,1.214,0,1,1,21,26.519v.03a1.214,1.214,0,0,1-1.214,1.214h.03Z" style="fill:url(#b)" /></symbol><symbol id="r" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="-134.811" y1="-103.284" x2="-134.772" y2="-103.323" gradientTransform="matrix(721.094, 0, 0, -482.937, 97213.595, -49874.512)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#cbced0" /><stop offset="1" stop-color="#84838b" /></linearGradient><linearGradient id="b" x1="-135.378" y1="-102.985" x2="-135.339" y2="-103.024" gradientTransform="matrix(398, 0, 0, -406.124, 53893, -41812.836)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#276dc3" /><stop offset="1" stop-color="#165caa" /></linearGradient></defs><title>r</title><path d="M16,23.956c-7.732,0-14-4.2-14-9.376S8.268,5.2,16,5.2,30,9.4,30,14.58,23.732,23.956,16,23.956ZM18.143,8.87C12.266,8.87,7.5,11.74,7.5,15.28s4.764,6.41,10.641,6.41,10.214-1.962,10.214-6.41S24.02,8.87,18.143,8.87Z" style="fill:url(#a)" /><path d="M23.321,19.726a10.545,10.545,0,0,1,1.34.5,2.591,2.591,0,0,1,.68.485,1.835,1.835,0,0,1,.311.447l3.339,5.63-5.4,0-2.524-4.74a6.1,6.1,0,0,0-.835-1.145.879.879,0,0,0-.641-.291H18.311v6.173l-4.776,0V11.026h9.591S27.5,11.1,27.5,15.261,23.321,19.726,23.321,19.726Zm-2.077-5.28-2.891,0v2.681h2.893a1.323,1.323,0,0,0,1.34-1.364A1.247,1.247,0,0,0,21.244,14.447Z" style="fill:url(#b)" /></symbol><symbol id="rails" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="5.501" y1="16" x2="26.5" y2="16" gradientUnits="userSpaceOnUse"><stop offset="0.08" stop-color="#aa2237" /><stop offset="0.982" stop-color="#b4313d" /></linearGradient><linearGradient id="b" x1="10.099" y1="5.601" x2="16.169" y2="5.601" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#b83a41" /><stop offset="0.896" stop-color="#bf4a50" /></linearGradient><linearGradient id="c" x1="7.851" y1="20.836" x2="7.851" y2="14.698" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#a92237" /><stop offset="0.939" stop-color="#972235" /></linearGradient><linearGradient id="d" x1="13.133" y1="29.442" x2="13.133" y2="20.836" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#bc4245" /><stop offset="0.939" stop-color="#a42136" /></linearGradient><linearGradient id="e" x1="19.212" y1="8.696" x2="19.212" y2="2.575" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#cc5057" /><stop offset="0.896" stop-color="#b73840" /></linearGradient><linearGradient id="f" x1="21.776" y1="7.866" x2="24.376" y2="6.365" gradientUnits="userSpaceOnUse"><stop offset="0.08" stop-color="#d4575f" /><stop offset="0.945" stop-color="#b63540" /></linearGradient><linearGradient id="g" x1="22.256" y1="11.733" x2="26.484" y2="11.733" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c04b51" /><stop offset="1" stop-color="#b83a41" /></linearGradient><linearGradient id="h" x1="22.239" y1="17.79" x2="26.475" y2="17.79" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ba4044" /><stop offset="1" stop-color="#b4303c" /></linearGradient><linearGradient id="i" x1="21.349" y1="23.257" x2="24.603" y2="24.442" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#972136" /><stop offset="1" stop-color="#9f2236" /></linearGradient><linearGradient id="j" x1="18.562" y1="21.3" x2="24.103" y2="27.904" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#b22c3a" /><stop offset="0.939" stop-color="#c04d53" /></linearGradient><linearGradient id="k" x1="16.199" y1="29.443" x2="16.199" y2="23.313" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#b22c3a" /><stop offset="0.939" stop-color="#9b2135" /></linearGradient><linearGradient id="l" x1="22.221" y1="6.635" x2="25.29" y2="6.635" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#fff" /><stop offset="0.742" stop-color="#f4e6d9" /></linearGradient><linearGradient id="m" x1="17.162" y1="4.552" x2="22.113" y2="7.411" gradientUnits="userSpaceOnUse"><stop offset="0.037" stop-color="#fff" /><stop offset="0.896" stop-color="#f4e6d9" /></linearGradient></defs><title>rails</title><path d="M27.007,26.836A3.163,3.163,0,0,1,23.844,30H4.993V5.164A3.164,3.164,0,0,1,8.156,2H27.007Z" style="fill:#80152a" /><path d="M26.5,26.539a2.876,2.876,0,0,1-2.945,2.945H5.5V5.461A2.876,2.876,0,0,1,8.446,2.517H26.5Z" style="fill:url(#a)" /><polygon points="10.099 2.541 10.167 8.661 5.619 10.184 10.099 2.541" style="fill:#8a2034" /><polygon points="10.099 2.541 10.167 8.661 16.169 6.159 10.099 2.541" style="fill:url(#b)" /><polygon points="7.614 14.698 10.167 8.661 5.619 10.184 7.614 14.698" style="fill:#ae2338" /><polygon points="7.614 14.698 10.133 20.836 5.568 19.365 7.614 14.698" style="fill:url(#c)" /><polygon points="10.108 29.442 10.133 20.836 5.568 19.365 10.108 29.442" style="fill:#8a2034" /><polygon points="10.108 29.442 5.568 29.443 5.568 19.365 10.108 29.442" style="fill:#8c2033" /><polygon points="10.108 29.442 10.133 20.836 16.158 23.315 10.108 29.442" style="fill:url(#d)" /><polygon points="22.188 2.575 22.256 8.696 16.169 6.159 22.188 2.575" style="fill:url(#e)" /><polygon points="22.188 2.575 22.256 8.696 26.484 10.201 22.188 2.575" style="fill:url(#f)" /><polygon points="24.737 14.77 22.256 8.696 26.484 10.201 24.737 14.77" style="fill:url(#g)" /><polygon points="24.737 14.77 22.239 20.81 26.475 19.297 24.737 14.77" style="fill:url(#h)" /><polygon points="22.29 29.426 22.239 20.81 26.475 19.297 22.29 29.426" style="fill:url(#i)" /><polygon points="22.29 29.426 22.239 20.81 16.162 23.313 22.29 29.426" style="fill:url(#j)" /><polygon points="22.29 29.426 10.109 29.443 16.162 23.313 22.29 29.426" style="fill:url(#k)" /><path d="M16.786,16.577l1.37.628-.139-.976-1.249-.672ZM6.4,19.847l1.784.2.389-1.658-1.708-.3Zm6.345-11.48L11.575,7.5l-.812,1.1,1.281.8Zm3.576-2.9-.748-.976-1.052.621.875.952Zm3.855-.685-.241-.8-1.268-.1.368.875Zm4.287,1-1.065-.761v.494l1.027.635ZM10.065,12.868l-1.458-.634-.495,1.445,1.5.558Zm7.26-.654-.26.894.939.863.235-.831Zm5.992-4,.78.038.007-.362-.812-.165ZM20.075,5.2C16.324,5.014,9.609,8.569,8.645,22.831h9.2c-2.062-5.343-1.823-9.374-.405-12.106,2.062-3.973,5.132-4.236,8-2.561.1-.241.241-.545.241-.545A7.821,7.821,0,0,0,20.075,5.2Zm.275,2.96.342.818.634-.342-.235-.755Zm-2.08,1.858.7.958.431-.628L18.79,9.4Zm1.065,11.147L18.9,20.115l-1.592-.3.419,1.2Z" style="fill:#f7dee1" /><polygon points="10.969 8.329 12.069 7.869 11.575 7.503 10.969 8.329" style="fill:#fff" /><polygon points="15.392 6.059 15.684 5.87 14.654 5.256 15.392 6.059" style="fill:#fff" /><polygon points="6.862 18.089 6.449 19.649 7.427 19.964 8.18 20.05 8.569 18.392 6.862 18.089" style="fill:#d7c4c9" /><path d="M9.165,18.478Q9,19.413,8.873,20.43l1.26.406Z" style="fill:#d7c4c9" /><polygon points="6.449 19.649 6.397 19.847 7.427 19.964 6.449 19.649" style="fill:#c2c3c6" /><path d="M10.133,20.836l-1.26-.406c-.094.765-.171,1.564-.228,2.4h1.482Z" style="fill:#c2c3c6" /><polygon points="10.127 22.831 14.981 22.831 10.133 20.836 10.127 22.831" style="fill:#ddc3c8" /><path d="M23.68,5.223l-.286-.2v.494l.689.426Zm.77,1.368a7.094,7.094,0,0,0-2.229-1.069l.018,1.669a6.321,6.321,0,0,1,3.05.89ZM23.317,8.214l.78.038.007-.362-.812-.165Z" style="fill:url(#l)" /><path d="M22.221,5.522A9.532,9.532,0,0,0,20.075,5.2a7.357,7.357,0,0,0-3.854.985L20.04,7.773a4.373,4.373,0,0,1,2.2-.581Zm-2.05-.745-.241-.8-.087-.008-.913.543.1.237Zm.5,3.258.538.225-.119-.382Z" style="fill:url(#m)" /><path d="M10.218,26.044v-.678A1.081,1.081,0,0,0,9.2,24.353H7.047V28.42h1.1V27.236l.888,1.184h1.319l-1.032-1.37A1.1,1.1,0,0,0,10.218,26.044Zm-1.082.2h-1v-.82h1Zm4.269-1.911h-1a1.074,1.074,0,0,0-1.023,1.057V28.4h1.082v-.794h.972V28.4h1.1V25.384A1.1,1.1,0,0,0,13.405,24.335Zm.033,2.181h-.972v-1.09h.972ZM23.5,25.8H22.442v-.444H24.3V24.351H22.436a1.08,1.08,0,0,0-1.1,1.04v.431a1.1,1.1,0,0,0,1.091,1.065h.983v.494h-2v1.027H23.38a1.082,1.082,0,0,0,1.123-.982v-.539A1.056,1.056,0,0,0,23.5,25.8Zm-4.433-1.458h-1.09v4.071H20.7V27.324h-1.63Zm-3.36,4.071H16.8V24.344H15.709Z" style="fill:#fff" /></symbol><symbol id="jsx" viewBox="0 0 32 32"><title>jsx</title><circle cx="16" cy="15.974" r="2.5" style="fill:#00d8ff" /><path d="M16,21.706a28.385,28.385,0,0,1-8.88-1.2,11.3,11.3,0,0,1-3.657-1.958A3.543,3.543,0,0,1,2,15.974c0-1.653,1.816-3.273,4.858-4.333A28.755,28.755,0,0,1,16,10.293a28.674,28.674,0,0,1,9.022,1.324,11.376,11.376,0,0,1,3.538,1.866A3.391,3.391,0,0,1,30,15.974c0,1.718-2.03,3.459-5.3,4.541A28.8,28.8,0,0,1,16,21.706Zm0-10.217a27.948,27.948,0,0,0-8.749,1.282c-2.8.977-4.055,2.313-4.055,3.2,0,.928,1.349,2.387,4.311,3.4A27.21,27.21,0,0,0,16,20.51a27.6,27.6,0,0,0,8.325-1.13C27.4,18.361,28.8,16.9,28.8,15.974a2.327,2.327,0,0,0-1.01-1.573,10.194,10.194,0,0,0-3.161-1.654A27.462,27.462,0,0,0,16,11.489Z" style="fill:#00d8ff" /><path d="M10.32,28.443a2.639,2.639,0,0,1-1.336-.328c-1.432-.826-1.928-3.208-1.327-6.373a28.755,28.755,0,0,1,3.4-8.593h0A28.676,28.676,0,0,1,16.71,5.995a11.376,11.376,0,0,1,3.384-2.133,3.391,3.391,0,0,1,2.878,0c1.489.858,1.982,3.486,1.287,6.859a28.806,28.806,0,0,1-3.316,8.133,28.385,28.385,0,0,1-5.476,7.093,11.3,11.3,0,0,1-3.523,2.189A4.926,4.926,0,0,1,10.32,28.443Zm1.773-14.7a27.948,27.948,0,0,0-3.26,8.219c-.553,2.915-.022,4.668.75,5.114.8.463,2.742.024,5.1-2.036a27.209,27.209,0,0,0,5.227-6.79,27.6,27.6,0,0,0,3.181-7.776c.654-3.175.089-5.119-.713-5.581a2.327,2.327,0,0,0-1.868.089A10.194,10.194,0,0,0,17.5,6.9a27.464,27.464,0,0,0-5.4,6.849Z" style="fill:#00d8ff" /><path d="M21.677,28.456c-1.355,0-3.076-.82-4.868-2.361a28.756,28.756,0,0,1-5.747-7.237h0a28.676,28.676,0,0,1-3.374-8.471,11.376,11.376,0,0,1-.158-4A3.391,3.391,0,0,1,8.964,3.9c1.487-.861,4.01.024,6.585,2.31a28.8,28.8,0,0,1,5.39,6.934,28.384,28.384,0,0,1,3.41,8.287,11.3,11.3,0,0,1,.137,4.146,3.543,3.543,0,0,1-1.494,2.555A2.59,2.59,0,0,1,21.677,28.456Zm-9.58-10.2a27.949,27.949,0,0,0,5.492,6.929c2.249,1.935,4.033,2.351,4.8,1.9.8-.465,1.39-2.363.782-5.434A27.212,27.212,0,0,0,19.9,13.74,27.6,27.6,0,0,0,14.755,7.1c-2.424-2.152-4.39-2.633-5.191-2.169a2.327,2.327,0,0,0-.855,1.662,10.194,10.194,0,0,0,.153,3.565,27.465,27.465,0,0,0,3.236,8.1Z" style="fill:#00d8ff" /></symbol><symbol id="tsx" viewBox="0 0 32 32"><title>tsx</title><circle cx="16" cy="15.974" r="2.5" style="fill:#007acc" /><path d="M16,21.706a28.385,28.385,0,0,1-8.88-1.2,11.3,11.3,0,0,1-3.657-1.958A3.543,3.543,0,0,1,2,15.974c0-1.653,1.816-3.273,4.858-4.333A28.755,28.755,0,0,1,16,10.293a28.674,28.674,0,0,1,9.022,1.324,11.376,11.376,0,0,1,3.538,1.866A3.391,3.391,0,0,1,30,15.974c0,1.718-2.03,3.459-5.3,4.541A28.8,28.8,0,0,1,16,21.706Zm0-10.217a27.948,27.948,0,0,0-8.749,1.282c-2.8.977-4.055,2.313-4.055,3.2,0,.928,1.349,2.387,4.311,3.4A27.21,27.21,0,0,0,16,20.51a27.6,27.6,0,0,0,8.325-1.13C27.4,18.361,28.8,16.9,28.8,15.974a2.327,2.327,0,0,0-1.01-1.573,10.194,10.194,0,0,0-3.161-1.654A27.462,27.462,0,0,0,16,11.489Z" style="fill:#007acc" /><path d="M10.32,28.443a2.639,2.639,0,0,1-1.336-.328c-1.432-.826-1.928-3.208-1.327-6.373a28.755,28.755,0,0,1,3.4-8.593h0A28.676,28.676,0,0,1,16.71,5.995a11.376,11.376,0,0,1,3.384-2.133,3.391,3.391,0,0,1,2.878,0c1.489.858,1.982,3.486,1.287,6.859a28.806,28.806,0,0,1-3.316,8.133,28.385,28.385,0,0,1-5.476,7.093,11.3,11.3,0,0,1-3.523,2.189A4.926,4.926,0,0,1,10.32,28.443Zm1.773-14.7a27.948,27.948,0,0,0-3.26,8.219c-.553,2.915-.022,4.668.75,5.114.8.463,2.742.024,5.1-2.036a27.209,27.209,0,0,0,5.227-6.79,27.6,27.6,0,0,0,3.181-7.776c.654-3.175.089-5.119-.713-5.581a2.327,2.327,0,0,0-1.868.089A10.194,10.194,0,0,0,17.5,6.9a27.464,27.464,0,0,0-5.4,6.849Z" style="fill:#007acc" /><path d="M21.677,28.456c-1.355,0-3.076-.82-4.868-2.361a28.756,28.756,0,0,1-5.747-7.237h0a28.676,28.676,0,0,1-3.374-8.471,11.376,11.376,0,0,1-.158-4A3.391,3.391,0,0,1,8.964,3.9c1.487-.861,4.01.024,6.585,2.31a28.8,28.8,0,0,1,5.39,6.934,28.384,28.384,0,0,1,3.41,8.287,11.3,11.3,0,0,1,.137,4.146,3.543,3.543,0,0,1-1.494,2.555A2.59,2.59,0,0,1,21.677,28.456Zm-9.58-10.2a27.949,27.949,0,0,0,5.492,6.929c2.249,1.935,4.033,2.351,4.8,1.9.8-.465,1.39-2.363.782-5.434A27.212,27.212,0,0,0,19.9,13.74,27.6,27.6,0,0,0,14.755,7.1c-2.424-2.152-4.39-2.633-5.191-2.169a2.327,2.327,0,0,0-.855,1.662,10.194,10.194,0,0,0,.153,3.565,27.465,27.465,0,0,0,3.236,8.1Z" style="fill:#007acc" /></symbol><symbol id="rest" viewBox="0 0 32 32"><title>rest</title><path d="M16,30A13.859,13.859,0,0,1,2.286,16,14.149,14.149,0,0,1,6.3,6.1,13.517,13.517,0,0,1,25.7,6.1,14.149,14.149,0,0,1,29.714,16,13.859,13.859,0,0,1,16,30Z" style="fill:#ce3f31" /><path d="M11.869,23.015h-.4a4.263,4.263,0,0,1-1.048-.113,1.387,1.387,0,0,1-.767-.548,2.2,2.2,0,0,1-.409-1.026A13.28,13.28,0,0,1,9.159,19.6a12.78,12.78,0,0,0-.08-1.687,1.773,1.773,0,0,0-.405-.924,1.325,1.325,0,0,0-1.026-.391V15.4a1.325,1.325,0,0,0,1.026-.391,1.773,1.773,0,0,0,.405-.924,12.78,12.78,0,0,0,.08-1.687,13.28,13.28,0,0,1,.084-1.731,2.2,2.2,0,0,1,.409-1.026,1.387,1.387,0,0,1,.767-.548,4.263,4.263,0,0,1,1.048-.113h.4v1.14h-.226q-.76,0-.931.4a7.72,7.72,0,0,0-.172,2.17,4.876,4.876,0,0,1-.416,2.316A2.117,2.117,0,0,1,8.859,16a2.089,2.089,0,0,1,1.264.986A4.876,4.876,0,0,1,10.54,19.3a7.72,7.72,0,0,0,.172,2.17q.172.4.931.4h.226Zm1.6-3.141h1.035V16.42h1.459l1.97,3.454h1.184L17.04,16.308a2.243,2.243,0,0,0,1.833-2.319c0-1.7-1.2-2.294-2.855-2.294H13.474Zm1.035-4.3V12.53h1.359c1.272,0,1.97.386,1.97,1.459s-.7,1.583-1.97,1.583Zm5.557-6.591h.4a4.263,4.263,0,0,1,1.048.113,1.387,1.387,0,0,1,.767.548,2.2,2.2,0,0,1,.409,1.026,13.28,13.28,0,0,1,.084,1.731,12.78,12.78,0,0,0,.08,1.687,1.773,1.773,0,0,0,.405.924,1.325,1.325,0,0,0,1.026.391v1.191a1.325,1.325,0,0,0-1.026.391,1.773,1.773,0,0,0-.405.924,12.78,12.78,0,0,0-.08,1.687,13.28,13.28,0,0,1-.084,1.731,2.2,2.2,0,0,1-.409,1.026,1.387,1.387,0,0,1-.767.548,4.263,4.263,0,0,1-1.048.113h-.4v-1.14h.226q.76,0,.931-.4A7.72,7.72,0,0,0,21.4,19.3a4.876,4.876,0,0,1,.416-2.316A2.089,2.089,0,0,1,23.075,16a2.117,2.117,0,0,1-1.264-.994,4.876,4.876,0,0,1-.416-2.316,7.72,7.72,0,0,0-.172-2.17q-.172-.4-.931-.4h-.226Z" style="fill:#fff" /></symbol><symbol id="robots" viewBox="0 0 32 32"><title>robots</title><path d="M9.763,4.857a7.748,7.748,0,0,1,6.264-2.85c0,2.617.02,5.335-.008,7.953-2.219-.005-7.434.018-7.434.018A6.988,6.988,0,0,1,9.763,4.857m2.405.765a1.659,1.659,0,0,0,.038,2.658,1.688,1.688,0,1,0-.038-2.658Z" style="fill:#ed6a54" /><path d="M16.031,28.028a12.514,12.514,0,0,1-2.185-.169c0,.1-.008.287-.012.383C13.813,28.8,13.8,30,13.8,30H8.832s.019-2.811-.015-4.214c.023-.367-.28-.609-.492-.863a7.959,7.959,0,0,1-2-5.389c0-2.814,0-5.619,0-8.433h9.7Q16.016,19.563,16.031,28.028Z" style="fill:#ed6a54" /><path d="M5.541,12.644v6.6H3.753v-6.6Z" style="fill:#ed6a54" /><path d="M16.022,2a7.946,7.946,0,0,1,5.483,1.989,6.3,6.3,0,0,1,1.676,2.625,12.042,12.042,0,0,1,.276,3.362l-7.44-.018s.005-5.342,0-7.959m1.784,3.553a1.663,1.663,0,0,0-.137,2.682,1.641,1.641,0,0,0,2.075.063,1.662,1.662,0,0,0,.39-2.25A1.634,1.634,0,0,0,17.806,5.555Z" style="fill:#d7433f" /><path d="M16.022,11.1h9.7c0,2.814,0,5.619,0,8.433a7.959,7.959,0,0,1-2,5.389c-.212.254-.515.5-.492.863C23.2,27.189,23.217,30,23.217,30H18.246s-.01-1.2-.03-1.758c0-.1-.01-.288-.012-.383a12.514,12.514,0,0,1-2.185.169Q16.043,19.562,16.022,11.1Z" style="fill:#d7433f" /><path d="M26.387,12.643h1.86l0,6.6H26.368Z" style="fill:#d7433f" /></symbol><symbol id="ruby" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="-235.957" y1="-308.579" x2="-235.986" y2="-308.527" gradientTransform="matrix(202.935, 0, 0, -202.78, 47910.461, -62541.16)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fb7655" /><stop offset="0.41" stop-color="#e42b1e" /><stop offset="0.99" stop-color="#900" /><stop offset="1" stop-color="#900" /></linearGradient><linearGradient id="b" x1="-235.571" y1="-309.087" x2="-235.697" y2="-309.041" gradientTransform="matrix(60.308, 0, 0, -111.778, 14236.351, -34525.395)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#871101" /><stop offset="0.99" stop-color="#911209" /><stop offset="1" stop-color="#911209" /></linearGradient><linearGradient id="c" x1="-235.896" y1="-313.362" x2="-235.937" y2="-313.129" gradientTransform="matrix(188.32, 0, 0, -21.986, 44447.302, -6856.882)" xlink:href="#b" /><linearGradient id="d" x1="-233.515" y1="-309.082" x2="-233.497" y2="-309.161" gradientTransform="matrix(65.222, 0, 0, -97.1, 15237.802, -29991.814)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.23" stop-color="#e57252" /><stop offset="0.46" stop-color="#de3b20" /><stop offset="0.99" stop-color="#a60003" /><stop offset="1" stop-color="#a60003" /></linearGradient><linearGradient id="e" x1="-235.314" y1="-309.534" x2="-235.31" y2="-309.607" gradientTransform="matrix(105.32, 0, 0, -106.825, 24798.925, -33053.152)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.23" stop-color="#e4714e" /><stop offset="0.56" stop-color="#be1a0d" /><stop offset="0.99" stop-color="#a80d00" /><stop offset="1" stop-color="#a80d00" /></linearGradient><linearGradient id="f" x1="-235.882" y1="-311.851" x2="-235.869" y2="-311.935" gradientTransform="matrix(94.321, 0, 0, -66.418, 22271.499, -20707.004)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.18" stop-color="#e46342" /><stop offset="0.4" stop-color="#c82410" /><stop offset="0.99" stop-color="#a80d00" /><stop offset="1" stop-color="#a80d00" /></linearGradient><linearGradient id="g" x1="-235.412" y1="-321.074" x2="-235.333" y2="-320.958" gradientTransform="matrix(70.767, 0, 0, -24.301, 16678.116, -7798.647)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.54" stop-color="#c81f11" /><stop offset="0.99" stop-color="#bf0905" /><stop offset="1" stop-color="#bf0905" /></linearGradient><linearGradient id="h" x1="-223.821" y1="-310.116" x2="-223.796" y2="-310.18" gradientTransform="matrix(18.177, 0, 0, -72.645, 4071.017, -22510.233)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" /><stop offset="0.31" stop-color="#de4024" /><stop offset="0.99" stop-color="#bf190b" /><stop offset="1" stop-color="#bf190b" /></linearGradient><linearGradient id="i" x1="-235.561" y1="-309.258" x2="-235.424" y2="-309.116" gradientTransform="matrix(158.162, 0, 0, -157.937, 37256.313, -48819.382)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#bd0012" /><stop offset="0.07" stop-color="#fff" /><stop offset="0.17" stop-color="#fff" /><stop offset="0.27" stop-color="#c82f1c" /><stop offset="0.33" stop-color="#820c01" /><stop offset="0.46" stop-color="#a31601" /><stop offset="0.72" stop-color="#b31301" /><stop offset="0.99" stop-color="#e82609" /><stop offset="1" stop-color="#e82609" /></linearGradient><linearGradient id="j" x1="-235.424" y1="-309.143" x2="-235.476" y2="-309.126" gradientTransform="matrix(127.074, 0, 0, -97.409, 29932.229, -30086.947)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8c0c01" /><stop offset="0.54" stop-color="#990c00" /><stop offset="0.99" stop-color="#a80d0e" /><stop offset="1" stop-color="#a80d0e" /></linearGradient><linearGradient id="k" x1="-235.839" y1="-309.604" x2="-235.901" y2="-309.555" gradientTransform="matrix(94.011, 0, 0, -105.603, 22198.743, -32676.856)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#7e110b" /><stop offset="0.99" stop-color="#9e0c00" /><stop offset="1" stop-color="#9e0c00" /></linearGradient><linearGradient id="l" x1="-235.854" y1="-311.24" x2="-235.891" y2="-311.202" gradientTransform="matrix(79.702, 0, 0, -81.791, 18827.397, -25447.905)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#79130d" /><stop offset="0.99" stop-color="#9e120b" /><stop offset="1" stop-color="#9e120b" /></linearGradient><radialGradient id="m" cx="-235.882" cy="-312.543" r="0.076" gradientTransform="matrix(93.113, 0, 0, -48.655, 21986.073, -15193.61)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#a80d00" /><stop offset="0.99" stop-color="#7e0e08" /><stop offset="1" stop-color="#7e0e08" /></radialGradient><radialGradient id="n" cx="-235.282" cy="-309.704" r="0.097" gradientTransform="matrix(97.434, 0, 0, -75.848, 22937.057, -23467.84)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#a30c00" /><stop offset="0.99" stop-color="#800e08" /><stop offset="1" stop-color="#800e08" /></radialGradient><linearGradient id="o" x1="-231.241" y1="-309.435" x2="-231.299" y2="-309.337" gradientTransform="matrix(40.137, 0, 0, -81.143, 9286.998, -25078.589)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8b2114" /><stop offset="0.43" stop-color="#9e100a" /><stop offset="0.99" stop-color="#b3100c" /><stop offset="1" stop-color="#b3100c" /></linearGradient><linearGradient id="p" x1="-235.898" y1="-317.466" x2="-235.831" y2="-317.537" gradientTransform="matrix(78.099, 0, 0, -32.624, 18447.361, -10353.553)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b31000" /><stop offset="0.44" stop-color="#910f08" /><stop offset="0.99" stop-color="#791c12" /><stop offset="1" stop-color="#791c12" /></linearGradient></defs><title>ruby</title><path d="M23.693,20.469,7.707,29.961l20.7-1.4L30,7.685Z" style="fill:url(#a)" /><path d="M28.44,28.542,26.661,16.263l-4.846,6.4Z" style="fill:url(#b)" /><path d="M28.464,28.542,15.43,27.519,7.776,29.934Z" style="fill:url(#c)" /><path d="M7.794,29.937,11.05,19.27,3.885,20.8Z" style="fill:url(#d)" /><path d="M21.813,22.7l-3-11.735L10.243,19Z" style="fill:url(#e)" /><path d="M29.32,11.127l-8.1-6.619-2.257,7.3Z" style="fill:url(#f)" /><path d="M25.53,2.148,20.763,4.782l-3.007-2.67Z" style="fill:url(#g)" /><path d="M2,24.38l2-3.642L2.382,16.4Z" style="fill:url(#h)" /><path d="M2.274,16.263,3.9,20.873l7.062-1.584L19.024,11.8,21.3,4.569l-3.583-2.53-6.091,2.28C9.706,6.1,5.982,9.635,5.848,9.7s-2.459,4.464-3.574,6.562Z" style="fill:#fff" /><path d="M7.981,7.981C12.14,3.858,17.5,1.421,19.559,3.5s-.124,7.121-4.283,11.244S5.821,21.434,3.765,19.358,3.822,12.1,7.981,7.981Z" style="fill:url(#i)" /><path d="M7.794,29.933l3.231-10.7,10.729,3.447c-3.879,3.638-8.194,6.713-13.96,7.254Z" style="fill:url(#j)" /><path d="M19.038,11.774l2.754,10.91c3.24-3.407,6.149-7.07,7.573-11.6l-10.328.691Z" style="fill:url(#k)" /><path d="M29.337,11.139c1.1-3.327,1.357-8.1-3.841-8.985L21.231,4.509l8.106,6.629Z" style="fill:url(#l)" /><path d="M2,24.332c.153,5.49,4.114,5.572,5.8,5.62l-3.9-9.1L2,24.332Z" style="fill:#9e1209" /><path d="M19.053,11.791c2.49,1.531,7.509,4.6,7.61,4.661a17.552,17.552,0,0,0,2.619-5.343l-10.229.683Z" style="fill:url(#m)" /><path d="M11.021,19.232l4.319,8.332a27.924,27.924,0,0,0,6.385-4.88l-10.7-3.452Z" style="fill:url(#n)" /><path d="M3.887,20.861l-.612,7.287c1.155,1.577,2.743,1.714,4.409,1.591-1.205-3-3.614-9-3.8-8.878Z" style="fill:url(#o)" /><path d="M21.206,4.528l8.58,1.2c-.458-1.94-1.864-3.192-4.261-3.584l-4.319,2.38Z" style="fill:url(#p)" /></symbol><symbol id="rust" viewBox="0 0 32 32"><defs><radialGradient id="a" cx="-492.035" cy="-883.37" r="13.998" gradientTransform="matrix(0.866, -0.5, -0.3, -0.52, 177.106, -689.033)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#7d7d7d" /><stop offset="0.267" stop-color="#7e7c7a" /><stop offset="0.45" stop-color="#817871" /><stop offset="0.608" stop-color="#867162" /><stop offset="0.753" stop-color="#8d684c" /><stop offset="0.886" stop-color="#965c30" /><stop offset="1" stop-color="#a04f12" /></radialGradient></defs><title>rust</title><path d="M15.124,5.3a.832.832,0,1,1,.832.832h0a.831.831,0,0,1-.832-.832M5.2,12.834a.832.832,0,1,1,.832.832h0a.832.832,0,0,1-.832-.832m19.856.039a.832.832,0,1,1,.832.832.831.831,0,0,1-.832-.832h0M7.605,14.013a.76.76,0,0,0,.386-1l-.369-.835H9.074v6.545H6.144a10.247,10.247,0,0,1-.332-3.911Zm6.074.161V12.245h3.458c.179,0,1.261.206,1.261,1.016,0,.672-.83.913-1.513.913ZM8.958,24.561a.832.832,0,1,1,.832.832.831.831,0,0,1-.832-.832h0m12.331.039a.832.832,0,1,1,.832.832.832.832,0,0,1-.832-.832h0m.257-1.887a.758.758,0,0,0-.9.584l-.418,1.949a10.249,10.249,0,0,1-8.545-.041l-.417-1.949a.759.759,0,0,0-.9-.583h0l-1.721.37a10.233,10.233,0,0,1-.89-1.049h8.374c.095,0,.158-.017.158-.1V18.928c0-.086-.063-.1-.158-.1h-2.45V16.947h2.649a1.665,1.665,0,0,1,1.629,1.412c.105.413.336,1.757.494,2.187.157.483.8,1.447,1.482,1.447h4.323a10.243,10.243,0,0,1-.949,1.1Zm4.65-7.821a10.261,10.261,0,0,1,.022,1.779H25.167c-.105,0-.148.069-.148.172v.483c0,1.136-.641,1.384-1.2,1.447-.535.06-1.128-.224-1.2-.551a3.616,3.616,0,0,0-1.671-2.808c1.03-.654,2.1-1.619,2.1-2.911A3.292,3.292,0,0,0,21.44,9.8a4.559,4.559,0,0,0-2.2-.724H8.367A10.246,10.246,0,0,1,14.1,5.84l1.282,1.344a.758.758,0,0,0,1.072.026h0l1.434-1.372a10.248,10.248,0,0,1,7.015,5l-.982,2.217a.761.761,0,0,0,.386,1Zm2.448.036-.033-.343,1.011-.943a.42.42,0,0,0-.013-.595.428.428,0,0,0-.121-.081L28.2,12.483l-.1-.334.806-1.12a.422.422,0,0,0-.13-.581.43.43,0,0,0-.133-.055l-1.363-.222-.164-.306.573-1.257a.419.419,0,0,0-.236-.544.426.426,0,0,0-.146-.029l-1.383.048L25.7,7.819l.318-1.347a.421.421,0,0,0-.343-.487.435.435,0,0,0-.144,0L24.183,6.3l-.266-.219L23.966,4.7a.421.421,0,0,0-.431-.411.426.426,0,0,0-.141.028l-1.257.573-.306-.164-.222-1.363a.421.421,0,0,0-.5-.318.43.43,0,0,0-.133.055l-1.121.806-.333-.1-.483-1.293a.421.421,0,0,0-.555-.215.442.442,0,0,0-.12.08L17.418,3.39l-.343-.033L16.347,2.18a.421.421,0,0,0-.688,0l-.728,1.177-.343.033-.943-1.012a.421.421,0,0,0-.595.015.442.442,0,0,0-.08.12L12.483,3.8l-.333.1-1.12-.8a.422.422,0,0,0-.581.13.43.43,0,0,0-.055.133l-.222,1.363-.306.164L8.608,4.317a.421.421,0,0,0-.544.239.444.444,0,0,0-.028.144l.048,1.383L7.818,6.3,6.471,5.984a.421.421,0,0,0-.487.343.435.435,0,0,0,0,.144L6.3,7.819l-.218.265L4.7,8.036a.422.422,0,0,0-.383.573L4.89,9.866l-.164.306-1.363.222a.42.42,0,0,0-.318.5.43.43,0,0,0,.055.133l.806,1.12-.1.334-1.293.483a.421.421,0,0,0-.215.555.414.414,0,0,0,.081.121l1.011.943-.033.343-1.177.728a.421.421,0,0,0,0,.688l1.177.728.033.343-1.011.943a.421.421,0,0,0,.015.595.436.436,0,0,0,.119.08l1.293.483.1.334L3.1,20.972a.421.421,0,0,0,.131.581.43.43,0,0,0,.133.055l1.363.222.164.307-.573,1.257a.422.422,0,0,0,.24.545.438.438,0,0,0,.143.028l1.383-.048.219.266-.317,1.348a.42.42,0,0,0,.341.486.4.4,0,0,0,.146,0L7.818,25.7l.266.218L8.035,27.3a.419.419,0,0,0,.429.41.413.413,0,0,0,.143-.028l1.257-.573.306.164.222,1.362a.421.421,0,0,0,.5.319.407.407,0,0,0,.133-.055l1.12-.807.334.1.483,1.292a.422.422,0,0,0,.556.214.436.436,0,0,0,.119-.08l.943-1.011.343.034.728,1.177a.422.422,0,0,0,.588.1.413.413,0,0,0,.1-.1l.728-1.177.343-.034.943,1.011a.421.421,0,0,0,.595-.015.436.436,0,0,0,.08-.119l.483-1.292.334-.1,1.12.807a.421.421,0,0,0,.581-.131.43.43,0,0,0,.055-.133l.222-1.362.306-.164,1.257.573a.421.421,0,0,0,.544-.239.438.438,0,0,0,.028-.143l-.048-1.384.265-.218,1.347.317a.421.421,0,0,0,.487-.34.447.447,0,0,0,0-.146L25.7,24.183l.218-.266,1.383.048a.421.421,0,0,0,.41-.431.4.4,0,0,0-.028-.142l-.573-1.257.164-.307,1.363-.222a.421.421,0,0,0,.319-.5.434.434,0,0,0-.056-.135l-.806-1.12.1-.334,1.293-.483a.42.42,0,0,0,.215-.554.414.414,0,0,0-.081-.121l-1.011-.943.033-.343,1.177-.728a.421.421,0,0,0,0-.688Z" style="fill:url(#a)" /></symbol><symbol id="sass" viewBox="0 0 32 32"><title>sass</title><path d="M26.11,17.572a5.8,5.8,0,0,0-2.537.588,5.345,5.345,0,0,1-.568-1.314,3.53,3.53,0,0,1-.051-1.1,9.811,9.811,0,0,1,.332-1.192c-.005-.051-.061-.292-.624-.3s-1.048.107-1.1.256a6.171,6.171,0,0,0-.235.834,19.686,19.686,0,0,1-1.713,3.294,3.186,3.186,0,0,1-.44-2.066,9.811,9.811,0,0,1,.332-1.192c-.005-.051-.061-.292-.624-.3s-1.048.107-1.1.256-.118.5-.235.834-1.483,3.386-1.841,4.173c-.184.4-.343.726-.455.946h0a.233.233,0,0,1-.02.041c-.1.189-.153.292-.153.292v.005c-.077.138-.159.266-.2.266a1.711,1.711,0,0,1,.01-.869c.2-1.059.69-2.705.685-2.762,0-.031.092-.317-.317-.465a.508.508,0,0,0-.578.1c-.036,0-.061.087-.061.087s.445-1.851-.849-1.851a3.855,3.855,0,0,0-2.475,1.683c-.348.189-1.089.593-1.882,1.028-.3.169-.614.338-.905.5-.02-.02-.041-.046-.061-.066C6.87,17.6,3.975,16.416,4.1,14.171c.046-.818.327-2.966,5.559-5.575,4.306-2.122,7.733-1.534,8.326-.23.849,1.862-1.836,5.319-6.285,5.82a3.351,3.351,0,0,1-2.813-.711c-.235-.256-.271-.271-.358-.22-.143.077-.051.307,0,.44a2.626,2.626,0,0,0,1.606,1.263,8.55,8.55,0,0,0,5.217-.517c2.7-1.043,4.8-3.943,4.184-6.372-.619-2.465-4.71-3.278-8.582-1.9A19.5,19.5,0,0,0,4.359,9.952c-2.133,1.995-2.47,3.728-2.332,4.455.5,2.578,4.051,4.255,5.472,5.5-.072.041-.138.077-.194.107-.711.353-3.421,1.77-4.1,3.268-.767,1.7.123,2.915.711,3.079a4.374,4.374,0,0,0,4.71-1.908A4.725,4.725,0,0,0,9.049,20.1a.107.107,0,0,0-.02-.031l.557-.327c.363-.215.721-.414,1.028-.578a6.74,6.74,0,0,0-.363,1.862,3.886,3.886,0,0,0,.834,2.7.921.921,0,0,0,.675.22c.6,0,.875-.5,1.176-1.094.368-.726.7-1.57.7-1.57s-.414,2.281.711,2.281c.409,0,.823-.532,1.008-.8v.005s.01-.015.031-.051l.066-.107v-.01c.164-.286.532-.936,1.079-2.015.706-1.391,1.386-3.13,1.386-3.13a8.888,8.888,0,0,0,.271,1.13,10.643,10.643,0,0,0,.583,1.309c-.164.23-.266.358-.266.358l.005.005c-.133.174-.276.363-.435.547a16.3,16.3,0,0,0-1.314,1.647.447.447,0,0,0,.123.6,1.116,1.116,0,0,0,.685.113,3.147,3.147,0,0,0,1.028-.235,3.45,3.45,0,0,0,.885-.465,1.98,1.98,0,0,0,.849-1.744,3.521,3.521,0,0,0-.322-1.233c.051-.072.1-.143.148-.215a23.428,23.428,0,0,0,1.534-2.649,8.888,8.888,0,0,0,.271,1.13,7.57,7.57,0,0,0,.5,1.125A4.861,4.861,0,0,0,20.965,20.8c-.322.931-.072,1.35.4,1.447a1.425,1.425,0,0,0,.747-.153,3.4,3.4,0,0,0,.946-.486,2.126,2.126,0,0,0,1.043-1.729,3.268,3.268,0,0,0-.235-1.023,5.356,5.356,0,0,1,2.716-.312c2.434.286,2.915,1.805,2.823,2.445a1.618,1.618,0,0,1-.772,1.094c-.169.107-.225.143-.21.22.02.113.1.107.245.087A1.9,1.9,0,0,0,30,20.7c.077-1.5-1.355-3.145-3.887-3.13ZM7.33,23.9c-.808.88-1.933,1.212-2.419.931-.522-.3-.317-1.6.675-2.532a12.884,12.884,0,0,1,1.9-1.417c.118-.072.292-.174.5-.3l.056-.031h0l.123-.077A3.493,3.493,0,0,1,7.33,23.9Zm5.881-4c-.281.685-.869,2.44-1.227,2.342-.307-.082-.5-1.412-.061-2.726a6.193,6.193,0,0,1,.956-1.754c.44-.491.926-.655,1.043-.455a9.062,9.062,0,0,1-.711,2.593Zm4.853,2.322c-.118.061-.23.1-.281.072-.036-.02.051-.1.051-.1s.609-.655.849-.951c.138-.174.3-.378.476-.609V20.7c0,.782-.757,1.309-1.094,1.524Zm3.744-.854c-.087-.061-.072-.266.22-.905a3.408,3.408,0,0,1,.834-1.074,1.448,1.448,0,0,1,.082.471,1.547,1.547,0,0,1-1.135,1.509Z" style="fill:#cd6799" /></symbol><symbol id="scss" viewBox="0 0 32 32"><title>scss</title><path d="M16.171,18.7c-.481.221-1.008.509-2.063,1.088-.4.225-.818.45-1.207.662-.027-.027-.055-.061-.082-.089-2.087-2.23-5.947-3.805-5.783-6.8.061-1.091.436-3.955,7.413-7.433,5.742-2.83,10.311-2.046,11.1-.307C26.683,8.3,23.1,12.913,17.17,13.582a4.469,4.469,0,0,1-3.751-.948c-.314-.341-.361-.361-.477-.293-.191.1-.068.409,0,.586a3.5,3.5,0,0,0,2.141,1.684,11.4,11.4,0,0,0,6.956-.689c3.594-1.391,6.4-5.258,5.578-8.5-.825-3.287-6.281-4.371-11.443-2.537a26,26,0,0,0-8.79,5.047c-2.844,2.66-3.294,4.972-3.11,5.94.662,3.437,5.4,5.674,7.3,7.331-.1.055-.184.1-.259.143-.948.471-4.562,2.36-5.463,4.358-1.023,2.264.164,3.887.948,4.105a5.832,5.832,0,0,0,6.281-2.544,6.3,6.3,0,0,0,.559-5.8,5.03,5.03,0,0,1,.716-.477c.484-.286.945-.568,1.354-.786l0,0a10.475,10.475,0,0,1,4.475-.989c3.246.382,3.887,2.407,3.764,3.26a2.157,2.157,0,0,1-1.03,1.459c-.225.143-.3.191-.28.293.027.15.136.143.327.116a2.535,2.535,0,0,0,1.766-2.257c.1-2-1.807-4.194-5.183-4.174a7.753,7.753,0,0,0-2.946.587q-.225.093-.437.2Zm-4.825,7.839c-1.078,1.173-2.578,1.616-3.226,1.241-.7-.4-.423-2.135.9-3.376a17.18,17.18,0,0,1,2.53-1.889c.157-.1.389-.232.668-.4.048-.027.075-.041.075-.041l.164-.1A4.658,4.658,0,0,1,11.346,26.539Z" style="fill:#cd6799" /></symbol><symbol id="sln" version="1.1" viewBox="0 0 32 32" xml:space="preserve"><title>sln</title><g transform="matrix(1.1549 0 0 1.1549 6.6699 14.758)"><path d="m0.41 9.37-4.01-3.01a1 1 0 0 1-0.4-0.8v-9.04a1 1 0 0 1 0.4-0.8l4.01-3.01a0.9 0.9 0 0 0-0.27 0.8v15.06a0.91 0.91 0 0 0 0.27 0.8z" fill="#5e438f" /><path d="m19.64-6.82a1 1 0 0 0-1.25 0.11l-0.07 0.07-16.54 15.86-0.07 0.07a1 1 0 0 1-1.3 0.08l-4.01-3.01a1 1 0 0 0 1.36-0.15c4.85-5.61 9.68-11.24 14.52-16.86 0.2-0.23 0.47-0.35 0.77-0.35 0.2 0 0.39 0.05 0.55 0.16z" fill="#7252aa" /><path d="m19.65 8.9-6.03 4.02c-0.42 0.28-0.99 0.2-1.32-0.18l-14.53-16.87a1 1 0 0 0-1.37-0.15l4.02-3.01a1 1 0 0 1 0.6-0.2c0.26 0 0.51 0.1 0.7 0.28l0.06 0.07 16.54 15.86 0.07 0.07a1 1 0 0 0 1.25 0.11z" fill="#ae7fe2" /><path d="m20.09-5.99v14.05a1 1 0 0 1-0.45 0.84l-6.02 4.02a1 1 0 0 0 0.44-0.84v-22.08a1.02 1.02 0 0 0-0.46-0.84l6.04 4.02a1.01 1.01 0 0 1 0.45 0.83z" fill="#d59dff" /></g></symbol><symbol id="sql" viewBox="0 0 32 32"><title>sql</title><path d="M8.562,15.256A21.159,21.159,0,0,0,16,16.449a21.159,21.159,0,0,0,7.438-1.194c1.864-.727,2.525-1.535,2.525-2V9.7a10.357,10.357,0,0,1-2.084,1.076A22.293,22.293,0,0,1,16,12.078a22.36,22.36,0,0,1-7.879-1.3A10.28,10.28,0,0,1,6.037,9.7v3.55C6.037,13.724,6.7,14.528,8.562,15.256Z" style="fill:#ffda44" /><path d="M8.562,21.961a15.611,15.611,0,0,0,2.6.741A24.9,24.9,0,0,0,16,23.155a24.9,24.9,0,0,0,4.838-.452,15.614,15.614,0,0,0,2.6-.741c1.864-.727,2.525-1.535,2.525-2v-3.39a10.706,10.706,0,0,1-1.692.825A23.49,23.49,0,0,1,16,18.74a23.49,23.49,0,0,1-8.271-1.348,10.829,10.829,0,0,1-1.692-.825V19.96C6.037,20.426,6.7,21.231,8.562,21.961Z" style="fill:#ffda44" /><path d="M16,30c5.5,0,9.963-1.744,9.963-3.894V23.269a10.5,10.5,0,0,1-1.535.762l-.157.063A23.487,23.487,0,0,1,16,25.445a23.422,23.422,0,0,1-8.271-1.351c-.054-.02-.106-.043-.157-.063a10.5,10.5,0,0,1-1.535-.762v2.837C6.037,28.256,10.5,30,16,30Z" style="fill:#ffda44" /><ellipse cx="16" cy="5.894" rx="9.963" ry="3.894" style="fill:#ffda44" /></symbol><symbol id="storybook" viewBox="0 0 32 32"><title>storybook</title><path d="M20.735,5.442l.133-3.173,2.72-.168.122,3.23a.216.216,0,0,1-.047.143.21.21,0,0,1-.3.029l-1.05-.82-1.243.934a.212.212,0,0,1-.3-.04A.206.206,0,0,1,20.735,5.442Z" style="fill:#fff" /><path d="M20.868,2.268l-.133,3.174a.206.206,0,0,0,.043.135.212.212,0,0,0,.3.04l1.243-.934,1.05.82a.21.21,0,0,0,.3-.029.216.216,0,0,0,.047-.143L23.588,2.1,25.154,2A1.415,1.415,0,0,1,26.66,3.321q0,.043,0,.087V28.592A1.414,1.414,0,0,1,25.245,30l-.066,0L6.231,29.156A1.414,1.414,0,0,1,4.876,27.8L4,4.69A1.412,1.412,0,0,1,5.33,3.232l15.537-.963Z" style="fill:#ff4785" /><path d="M17.253,12.554c0,.547,3.72.285,4.22-.1,0-3.73-2.018-5.69-5.714-5.69S9.993,8.754,9.993,11.74c0,5.2,7.077,5.3,7.077,8.136a1.127,1.127,0,0,1-1.258,1.27c-1.127,0-1.573-.572-1.52-2.512,0-.421-4.3-.553-4.43,0-.334,4.7,2.621,6.06,6,6.06,3.276,0,5.845-1.733,5.845-4.868,0-5.573-7.182-5.423-7.182-8.185a1.18,1.18,0,0,1,1.337-1.269C16.388,10.372,17.332,10.464,17.253,12.554Z" style="fill:#fff" /></symbol><symbol id="svelte" viewBox="0 0 32 32"><title>svelte</title><path d="M26.47,5.7A8.973,8.973,0,0,0,14.677,3.246L7.96,7.4a7.461,7.461,0,0,0-3.481,5.009,7.686,7.686,0,0,0,.8,5.058,7.358,7.358,0,0,0-1.151,2.8,7.789,7.789,0,0,0,1.4,6.028,8.977,8.977,0,0,0,11.794,2.458L24.04,24.6a7.468,7.468,0,0,0,3.481-5.009,7.673,7.673,0,0,0-.8-5.062,7.348,7.348,0,0,0,1.152-2.8A7.785,7.785,0,0,0,26.47,5.7" style="fill:#ff3e00" /><path d="M14.022,26.64A5.413,5.413,0,0,1,8.3,24.581a4.678,4.678,0,0,1-.848-3.625,4.307,4.307,0,0,1,.159-.61l.127-.375.344.238a8.76,8.76,0,0,0,2.628,1.274l.245.073-.025.237a1.441,1.441,0,0,0,.271.968,1.63,1.63,0,0,0,1.743.636,1.512,1.512,0,0,0,.411-.175l6.7-4.154a1.366,1.366,0,0,0,.633-.909,1.407,1.407,0,0,0-.244-1.091,1.634,1.634,0,0,0-1.726-.622,1.509,1.509,0,0,0-.413.176l-2.572,1.584a4.934,4.934,0,0,1-1.364.582,5.415,5.415,0,0,1-5.727-2.06A4.678,4.678,0,0,1,7.811,13.1,4.507,4.507,0,0,1,9.9,10.09l6.708-4.154a4.932,4.932,0,0,1,1.364-.581A5.413,5.413,0,0,1,23.7,7.414a4.679,4.679,0,0,1,.848,3.625,4.272,4.272,0,0,1-.159.61l-.127.375-.344-.237a8.713,8.713,0,0,0-2.628-1.274l-.245-.074.025-.237a1.438,1.438,0,0,0-.272-.968,1.629,1.629,0,0,0-1.725-.622,1.484,1.484,0,0,0-.411.176l-6.722,4.14a1.353,1.353,0,0,0-.631.908,1.394,1.394,0,0,0,.244,1.092,1.634,1.634,0,0,0,1.726.621,1.538,1.538,0,0,0,.413-.175l2.562-1.585a4.9,4.9,0,0,1,1.364-.581,5.417,5.417,0,0,1,5.728,2.059,4.681,4.681,0,0,1,.843,3.625A4.5,4.5,0,0,1,22.1,21.905l-6.707,4.154a4.9,4.9,0,0,1-1.364.581" style="fill:#fff" /></symbol><symbol id="swagger" viewBox="0 0 32 32"><title>swagger</title><path d="M30,16a14,14,0,1,1-4.1-9.9A13.956,13.956,0,0,1,30,16Z" style="fill:#fff" /><path d="M27.9,16a11.9,11.9,0,1,1-3.485-8.415A11.863,11.863,0,0,1,27.9,16Z" style="fill:#6d9a00" /><path d="M11.66,15.983a.938.938,0,0,1,.977-.976.976.976,0,1,1-.977.976Z" style="fill:#fff" /><path d="M15.031,15.983a.938.938,0,0,1,.977-.976.976.976,0,1,1-.977.976Z" style="fill:#fff" /><path d="M18.4,15.983a.938.938,0,0,1,.977-.976.976.976,0,1,1-.977.976Z" style="fill:#fff" /><path d="M7.619,16.89V15.142A2.824,2.824,0,0,0,8.5,15a1.126,1.126,0,0,0,.439-.441,2.1,2.1,0,0,0,.254-.776,9.08,9.08,0,0,0,.055-1.216,10.547,10.547,0,0,1,.123-1.97,1.847,1.847,0,0,1,.446-.9,1.72,1.72,0,0,1,.81-.552,4.788,4.788,0,0,1,1.316-.131h.363v1.437a3.177,3.177,0,0,0-.977.091.63.63,0,0,0-.319.277,3.372,3.372,0,0,0-.1.941q0,.459-.062,1.741a4.639,4.639,0,0,1-.178,1.169,2.435,2.435,0,0,1-.367.739,2.939,2.939,0,0,1-.682.6,2.432,2.432,0,0,1,.662.579,2.377,2.377,0,0,1,.394.8,5.8,5.8,0,0,1,.178,1.267q.048,1.209.048,1.544a3.034,3.034,0,0,0,.11.932.694.694,0,0,0,.333.288,2.927,2.927,0,0,0,.963.1v1.486h-.363a3.843,3.843,0,0,1-1.292-.192A1.905,1.905,0,0,1,9.82,22.3a1.875,1.875,0,0,1-.456-.9,8.724,8.724,0,0,1-.117-1.686,8.414,8.414,0,0,0-.11-1.741,1.553,1.553,0,0,0-.456-.834A2.106,2.106,0,0,0,7.619,16.89Z" style="fill:#fff" /><path d="M23.285,17.143a1.553,1.553,0,0,0-.456.834,8.414,8.414,0,0,0-.11,1.741A8.724,8.724,0,0,1,22.6,21.4a1.875,1.875,0,0,1-.456.9,1.905,1.905,0,0,1-.833.521,3.843,3.843,0,0,1-1.292.192h-.363V21.53a2.927,2.927,0,0,0,.963-.1.694.694,0,0,0,.333-.288,3.034,3.034,0,0,0,.11-.932q0-.335.048-1.544A5.8,5.8,0,0,1,21.29,17.4a2.377,2.377,0,0,1,.394-.8,2.432,2.432,0,0,1,.662-.579,2.939,2.939,0,0,1-.682-.6,2.435,2.435,0,0,1-.367-.739,4.639,4.639,0,0,1-.178-1.169q-.062-1.282-.062-1.741a3.372,3.372,0,0,0-.1-.941.63.63,0,0,0-.319-.277,3.177,3.177,0,0,0-.977-.091V9.016h.363a4.788,4.788,0,0,1,1.316.131,1.72,1.72,0,0,1,.81.552,1.847,1.847,0,0,1,.446.9,10.547,10.547,0,0,1,.123,1.97,9.08,9.08,0,0,0,.055,1.216,2.1,2.1,0,0,0,.254.776,1.126,1.126,0,0,0,.439.441,2.824,2.824,0,0,0,.883.144V16.89A2.106,2.106,0,0,0,23.285,17.143Z" style="fill:#fff" /></symbol><symbol id="test_js" viewBox="0 0 32 32"><title>test_js</title><path d="M26.4,24.383c-2.306-.538-3.109-3.31-1.771-6.111a11.927,11.927,0,0,1,2.956-3.706L28,14.221l.012.475a8.972,8.972,0,0,0,1,3.233,18.789,18.789,0,0,1,.833,2.175,4.255,4.255,0,0,1-.1,2.611,3.561,3.561,0,0,1-1.488,1.45A3.726,3.726,0,0,1,26.4,24.383Zm.468-4.753c.166-.191.207-.443.218-1.335l.014-1.1-.269.211a2.238,2.238,0,0,0-.846,1.867c.093.285.382.6.548.594A.686.686,0,0,0,26.869,19.631Z" style="fill:#f5de19" /><path d="M6.165,29.08A5.136,5.136,0,0,1,2.124,23c.339-1.427.269-1.344,7.635-9.049L16.7,6.691l.984.938.984.938-4,4.176-4,4.176,3.345-.072,3.345-.072,2.364-2.466,2.364-2.466.98.943.98.943-6.951,7.24c-6.377,6.642-7.009,7.269-7.657,7.59a5.185,5.185,0,0,1-3.27.524Zm19.55-16.646c-.183-.11-2.061-1.862-4.173-3.895L17.7,4.844l-.012-.561a1.15,1.15,0,0,1,.259-.9,1.32,1.32,0,0,1,1.385-.494,91.788,91.788,0,0,1,8.37,8.031,1.339,1.339,0,0,1-1.99,1.511Z" style="fill:#f5de19" /><path d="M4.1,23.621c-.353,2.277.959,3.823,3.439,3.486.255-.268,3.21-3.353,9.849-10.316-3.34.072-3.3-.074-6.641,0C4.066,23.717,3.933,23.667,4.1,23.621Z" style="fill:#f5de19" /><path d="M23.4,26.737a3.106,3.106,0,0,0,2.813,1.732c1.182,0,1.936-.591,1.936-1.407,0-.978-.776-1.324-2.076-1.893l-.713-.306c-2.058-.877-3.425-1.975-3.425-4.3,0-2.139,1.63-3.767,4.176-3.767a4.215,4.215,0,0,1,4.056,2.283l-2.221,1.426a1.939,1.939,0,0,0-1.835-1.222,1.241,1.241,0,0,0-1.365,1.222c0,.856.53,1.2,1.753,1.732l.713.305c2.423,1.039,3.791,2.1,3.791,4.48C31,29.594,28.983,31,26.274,31a5.479,5.479,0,0,1-5.2-2.916Zm-10.074.247c.448.795.856,1.467,1.835,1.467.937,0,1.528-.367,1.528-1.792v-9.7h2.852V26.7c0,2.953-1.731,4.3-4.258,4.3A4.427,4.427,0,0,1,11,28.39Z" style="fill:#f5de19;stroke:#000;stroke-miterlimit:10;stroke-width:0.5px" /></symbol><symbol id="tex" viewBox="0 0 32 32"><title>tex</title><path d="M11.333,13.122c-.128-1.562-.241-2.756-2.287-2.756H7.91v8.4h2.145v.611l-3.083-.029-3.082.029v-.611H6.034v-8.4H4.884c-2.046,0-2.159,1.208-2.287,2.756H2l.284-3.367h9.362l.284,3.367h-.6Z" style="fill:#cfcfcf" /><path d="M19.289,22.53H10.41V21.92h1.506V13.467H10.41v-.611h8.637l.412,3.367h-.6c-.213-1.833-.682-2.756-2.855-2.756H13.791V17.2h.838c1.364,0,1.505-.6,1.505-1.662h.6v3.935h-.6c0-1.08-.142-1.662-1.505-1.662h-.838v4.106h2.216c2.472,0,3-1.108,3.3-3.225h.6Z" style="fill:#cfcfcf" /><path d="M27.727,19.186c-.54,0-1.96,0-2.415.029V18.6h1.179l-2.557-3.552-2.529,3.381A4.1,4.1,0,0,0,22.7,18.6v.611c-.355-.029-1.576-.029-2.017-.029-.4,0-1.548,0-1.875.029V18.6h.383a7.459,7.459,0,0,0,.824-.043c.5-.043.54-.085.667-.256L23.536,14.5l-3.153-4.418H19V9.47c.384.028,1.79.028,2.273.028.582,0,1.918,0,2.429-.028v.611H22.528l2.117,2.955,2.074-2.784a4.1,4.1,0,0,0-1.293-.17V9.47c.356.028,1.591.028,2.032.028.4,0,1.534,0,1.861-.028v.611h-.369a5.264,5.264,0,0,0-.838.043c-.469.043-.526.071-.667.256l-2.4,3.21L28.636,18.6H30v.611C29.645,19.186,28.182,19.186,27.727,19.186Z" style="fill:#cfcfcf" /></symbol><symbol id="txt" viewBox="0 0 32 32"><title>txt</title><path d="M22.038,2H6.375a1.755,1.755,0,0,0-1.75,1.75v24.5A1.755,1.755,0,0,0,6.375,30h19.25a1.755,1.755,0,0,0,1.75-1.75V6.856Zm.525,2.844,1.663,1.531H22.563ZM6.375,28.25V3.75H20.813V8.125h4.813V28.25Z" style="fill:#c2c2c2" /><rect x="8.125" y="15.097" width="13.076" height="1.75" style="fill:#829ec2" /><rect x="8.125" y="24.439" width="9.762" height="1.75" style="fill:#829ec2" /><rect x="8.125" y="19.763" width="15.75" height="1.75" style="fill:#829ec2" /><rect x="8.125" y="10.23" width="15.75" height="1.75" style="fill:#829ec2" /></symbol><symbol id="travis" viewBox="0 0 32 32"><title>travis</title><path d="M29.931,11.868c-.013-.1-.029-.2-.05-.3a3.189,3.189,0,0,0-.072-.311l-.078-.124a5.4,5.4,0,0,0-1.02-.611c-.29-.137-.586-.257-.884-.367a12.6,12.6,0,0,0-4.143-5.783,10.817,10.817,0,0,0-13.221,0A12.6,12.6,0,0,0,6.32,10.152c-.3.11-.593.23-.883.366a5.378,5.378,0,0,0-1.02.611l-.078.124c-.031.112-.051.208-.072.311s-.035.2-.05.3c-.029.2-.048.405-.059.609A7.654,7.654,0,0,0,4.194,13.7a7.757,7.757,0,0,0,.226,1.205c.057.2.121.393.2.587.038.1.079.194.125.29.023.048.047.095.072.144.056.1.066.117.089.152l.106.1c.069.035.126.062.188.092l.182.081.1.041a15.073,15.073,0,0,0-2.5,2.98L2,20.916l1.376-1.208a22.633,22.633,0,0,1,3.1-2.151l.027.221a8.045,8.045,0,0,0-.911.534c-.3.248-.313.632-.233,1.349a12.437,12.437,0,0,0,.364,1.735c.32,1.125.555,1.324.761,1.371a1.553,1.553,0,0,0,.348.033,4.474,4.474,0,0,0,1.149-.165,11.288,11.288,0,0,0,1.5,3.029l-.09.026c-.375-.174-1.688-.782-2.129-.98l-.922-.415.545.851c.04.061.981,1.529,1.749,2.518a4.214,4.214,0,0,0,3.56,1.867,6.385,6.385,0,0,0,.7-.041c.554-.064.97-.114,1.286-.154a8.714,8.714,0,0,0,6.139-.013,8.982,8.982,0,0,0,1.534-.758c.786-.189,1.647-.394,2.072-.513.068-.018.153-.039.242-.06a2.806,2.806,0,0,0,2.109-1.421c.532-1.065,1.4-2.7,1.408-2.713l.405-.761-.79.343c-.042.019-1.043.455-1.563.728a14.828,14.828,0,0,0,.648-1.785,5.076,5.076,0,0,0,1.04.061,1.813,1.813,0,0,0,.421-.054c.206-.052.366-.19.665-1.351a13.017,13.017,0,0,0,.334-1.788c.066-.735.045-1.129-.255-1.378a6.788,6.788,0,0,0-.811-.476.314.314,0,0,1,.191-.036l.2-.768c.071-.03.147-.061.233-.094.122-.049.245-.1.367-.15l.181-.081c.063-.03.119-.056.188-.092l.106-.1a.93.93,0,0,0,.049-.08c.067-.12.09-.167.113-.215.046-.1.086-.193.125-.29.076-.194.14-.39.2-.587a7.742,7.742,0,0,0,.227-1.205,7.584,7.584,0,0,0,.035-1.223c-.01-.2-.03-.408-.059-.609Z" style="fill:#0e0f0d" /><path d="M18.351,27.687c-.149.022-.3.041-.446.052-.1,0-.2.014-.288.014h-.034c.115-.257.2-.456.269-.607.135.151.306.338.5.54" style="fill:#e1c5a2" /><path d="M18.17,16.211a6.545,6.545,0,0,1-.735.52l-.854.515a7.222,7.222,0,0,0-1.026.206.147.147,0,0,0-.044.019.2.2,0,0,0-.088.112l-.869,2.864L9.907,21.479,8.443,20.454l-.426-3.448c.831-.153,1.943-.329,3.277-.479-.143.171-.282.351-.414.539l-.795,1.141,1.157-.771A18.979,18.979,0,0,1,13.2,16.349c1.2-.09,2.528-.148,3.946-.148.347,0,.686,0,1.019.01ZM10.938,20.1a2.683,2.683,0,0,1,1.287-.151c.062,0,.127,0,.194,0l.176,0c.6-.006,1.1.051,1.093-.893s-.429-1.708-1.03-1.7-1.183.779-1.147,1.723a1.5,1.5,0,0,0,.1.551.949.949,0,0,0-.677.476Z" style="fill:#a89983" /><path d="M26.222,16.994,25.8,19.927,24.328,20.96l-4.64-.527-.866-2.851a.2.2,0,0,0-.133-.131,7.076,7.076,0,0,0-1.212-.225l.111-.007a18.444,18.444,0,0,0,3.607-.862,49.236,49.236,0,0,1,5.025.638Zm-2.965,2.714c-.006-.023-.133-.4-.692-.336a1.192,1.192,0,0,0,.073-.59c-.074-.942-.622-1.691-1.223-1.67s-.986.8-.953,1.747.537.937,1.138.915c.808-.015,1.251-.263,1.656-.067Z" style="fill:#a89983" /><path d="M21.67,18.012a.307.307,0,1,1-.313-.3.307.307,0,0,1,.313.3" style="fill:#fff" /><path d="M13.058,18.238a.308.308,0,1,1-.315-.3.307.307,0,0,1,.315.3" style="fill:#fff" /><path d="M28.247,18.284a5.236,5.236,0,0,0-.551-.326l-.389,2.726a.2.2,0,0,1-.082.132l-.556.389c-.013.066-.023.121-.033.172a1.6,1.6,0,0,0,1.376-.544,11.424,11.424,0,0,0,.3-1.631c.063-.707.007-.859-.064-.918" style="fill:#e1c5a2" /><path d="M19.654,28.64a2.657,2.657,0,0,1-.98-.623l-.071-.072a5.892,5.892,0,0,1-.683.1c-.1,0-.191.013-.293.013h-.209a2.642,2.642,0,0,1-1.38.944,8.41,8.41,0,0,0,3.615-.36" style="fill:#e1c5a2" /><path d="M7.768,21.964c-.012-.041-.025-.082-.037-.123l-.723-.506a.2.2,0,0,1-.081-.136l-.352-2.862a6.045,6.045,0,0,0-.643.378c-.07.058-.123.2-.048.886a11.711,11.711,0,0,0,.421,1.891,1.937,1.937,0,0,0,1.462.472" style="fill:#e1c5a2" /><path d="M18.574,21.834a.2.2,0,0,1-.164-.137l-.892-2.939a2.563,2.563,0,0,0-.788,0l-.867,2.855a.2.2,0,0,1-.144.133l-.415.092a.694.694,0,0,1-.539.479,44.075,44.075,0,0,1-5,1.3,4.225,4.225,0,0,1-1.127-.533c-.147-.347-.229-.583-.247-.638h0A12.711,12.711,0,0,0,10,25.511c1.116-.329,2.08-.636,2.389-.733.628-.968,1.522-1.929,2.158-1.962.11-.005.224-.009.336-.009a7.517,7.517,0,0,1,.884.055,1.106,1.106,0,0,1-.316-.572,2.71,2.71,0,0,0,1.843.5,3.256,3.256,0,0,0,1.675-.728l.02-.183-.415-.047" style="fill:#e1c5a2" /><path d="M19.413,22.206a.869.869,0,0,1-.434-.236l-.011.094a1.053,1.053,0,0,1-.453.77,6.139,6.139,0,0,1,1.469-.351.721.721,0,0,1,.52.211c.022.019.044.038.071.059.666.524,1.466,1.16,1.7,1.347.271.031,1.131.13,1.672.179.312.029.594.053.87.053.089,0,.172,0,.252-.008a13.771,13.771,0,0,0,.782-1.818,5.627,5.627,0,0,1-1.391.779,43.875,43.875,0,0,1-5.047-1.078" style="fill:#e1c5a2" /><path d="M29.417,11.926c-.008-.094-.018-.188-.029-.281-.008-.067-.018-.136-.03-.2a5.689,5.689,0,0,0-.834-.569,10.812,10.812,0,0,0-1-.513c-.341-.161-.692-.307-1.044-.449q-.264-.108-.532-.207c-.178-.069-.357-.134-.537-.2.377.063.751.149,1.122.244.241.062.481.132.72.207A11.056,11.056,0,0,0,17.074,2.64,11.053,11.053,0,0,0,6.9,9.958c.238-.075.478-.145.719-.207.371-.1.745-.182,1.123-.244-.181.065-.36.13-.538.2s-.355.135-.531.207c-.352.142-.7.288-1.045.449a11,11,0,0,0-1,.513,5.716,5.716,0,0,0-.834.569c-.01.064-.021.133-.03.2-.011.093-.021.187-.03.281-.016.189-.023.378-.024.568A8.318,8.318,0,0,0,5,14.743c.05.181.108.359.174.533.033.086.069.172.107.254.019.041.038.082.058.121l.024.046.084.042.168.08c.094.043.224.1.332.153l.017-.016-.313-1.192c.066-.018.66-.172,1.684-.367-.082-.015-.165-.033-.248-.053a5.231,5.231,0,0,1-.686-.219,3.165,3.165,0,0,1-.323-.156,1.112,1.112,0,0,1-.285-.217c1.125.367,3.449.2,5.516-.012A56.645,56.645,0,0,1,17,13.416a56.622,56.622,0,0,1,5.688.325c2.067.214,4.392.38,5.516.012a1.109,1.109,0,0,1-.284.217,3.245,3.245,0,0,1-.324.156,5.193,5.193,0,0,1-.686.219l-.1.023c1.123.208,1.777.378,1.846.4l-.3,1.135c.061-.026.122-.053.18-.08l.169-.08.085-.042.023-.046c.02-.039.04-.08.059-.121.038-.082.074-.168.107-.254.066-.173.124-.352.174-.533a8.429,8.429,0,0,0,.294-2.249c0-.19-.008-.379-.025-.568" style="fill:#e0d896" /><path d="M21.731,9.721a8.054,8.054,0,0,1-.231,2.288.186.186,0,0,0,0,.1c-.3-.032-.6-.059-.9-.083a4.946,4.946,0,0,0,.427-1.726,7.9,7.9,0,0,0,.706-.577" style="fill:#d7c184" /><path d="M13.124,10.3a4.917,4.917,0,0,0,.427,1.725q-.451.036-.9.083a.19.19,0,0,0,0-.1,8.109,8.109,0,0,1-.232-2.288,7.975,7.975,0,0,0,.707.577" style="fill:#d7c184" /><path d="M25.426,12.811l-.006.025.1.03a7.581,7.581,0,0,1,.823.309,3.186,3.186,0,0,1-.882-1.757,8.008,8.008,0,0,1-.032,1.392" style="fill:#d7c184" /><path d="M12.046,9.561l-2.872.817a9.575,9.575,0,0,0-.092,2.266l.015-.009a8.421,8.421,0,0,1,.284-1.684c.1-.24.7-.393,1.158-.5s1.192-.328,1.334.317a4.634,4.634,0,0,0,.324.974,8.943,8.943,0,0,1-.151-2.18" style="fill:#d7c184" /><path d="M22.1,9.561a8.778,8.778,0,0,1-.174,2.283,4.456,4.456,0,0,0,.376-1.078c.142-.645.874-.426,1.334-.317s1.06.263,1.158.5a7.644,7.644,0,0,1,.278,1.6,9.813,9.813,0,0,0-.1-2.178L22.1,9.561" style="fill:#d7c184" /><path d="M13.1,9.81c.1.082.209.161.313.231a.19.19,0,0,1,.082.153,4.558,4.558,0,0,0,.44,1.762.281.281,0,0,1,.014.038c1.04-.071,2.083-.1,3.124-.1s2.084.031,3.123.1a.192.192,0,0,1,.015-.04,4.554,4.554,0,0,0,.44-1.762.191.191,0,0,1,.083-.153c.1-.068.2-.145.3-.223l.013-.037a14.656,14.656,0,0,0-.435-5.031c-.013.659-.17,6.305-1.571,6.305H15.176c-1.488,0-1.608-6.366-1.608-6.366l-.077.226A14.587,14.587,0,0,0,13.1,9.81" style="fill:#d7c184" /><path d="M8.728,12.835l-.006-.025a7.918,7.918,0,0,1-.033-1.394,3.188,3.188,0,0,1-.884,1.759,7.5,7.5,0,0,1,.824-.31l.1-.03" style="fill:#d7c184" /><path d="M26.636,21.377c-.024.122-.043.22-.082.374a3.406,3.406,0,0,0,1.09.083,3.238,3.238,0,0,0,.368-1,1.6,1.6,0,0,1-1.376.544" style="fill:#9f8f78" /><path d="M15.207,29.184a6.99,6.99,0,0,0,2.307.248,9.219,9.219,0,0,0,2.827-.648,2.621,2.621,0,0,1-.686-.144,8.408,8.408,0,0,1-3.615.36,3.8,3.8,0,0,1-.665.158c-.056.006-.1.014-.167.026" style="fill:#9f8f78" /><path d="M7.818,22.135c-.018-.057-.034-.114-.05-.171a1.936,1.936,0,0,1-1.462-.472,2.532,2.532,0,0,0,.327.767,3.574,3.574,0,0,0,1.185-.125" style="fill:#9f8f78" /><path d="M8.642,23.079a4.218,4.218,0,0,0,1.127.533,44.075,44.075,0,0,0,5-1.3.694.694,0,0,0,.539-.479L9.638,23.1a.26.26,0,0,1-.042,0h0a.2.2,0,0,1-.112-.035l-.221-.154L8.6,22.45h0l-.267-.187.015.045c.015.044.03.088.046.132h0c.019.056.1.292.248.638" style="fill:#9f8f78" /><path d="M26.022,21.991c.036-.134.072-.269.1-.406l-.2.138-.529.371-.573.4a.2.2,0,0,1-.1.035.2.2,0,0,1-.035,0l-5.705-.649-.01.089a.868.868,0,0,0,.434.236,43.846,43.846,0,0,0,5.047,1.078,5.623,5.623,0,0,0,1.391-.779l.008-.023q.037-.107.073-.215c.031-.091.06-.183.09-.276" style="fill:#9f8f78" /><path d="M19.985,14.3c-.045.058-.094.122-.147.188A12.356,12.356,0,0,1,18.748,15.7q-.777-.024-1.6-.025c-.9,0-1.772.024-2.6.063A20.682,20.682,0,0,1,18.631,14.5c.442-.084.894-.151,1.354-.2" style="fill:#6e6a67" /><path d="M13.175,14.825a10.337,10.337,0,0,0-1.34,1.116c-1.165.117-2.181.258-3.019.393a22.911,22.911,0,0,1,4.359-1.509" style="fill:#6e6a67" /><path d="M27.408,17.23l-.474,3.314-2.27,1.591-5.92-.673-.891-2.935a.2.2,0,0,0-.155-.136,3.167,3.167,0,0,0-1.152,0,.2.2,0,0,0-.155.136l-.869,2.863L9.636,22.7,7.3,21.066l-.46-3.72.305-.169q.217-.047.487-.1l.433,3.51a.19.19,0,0,0,.082.134l1.605,1.125a.2.2,0,0,0,.111.035.226.226,0,0,0,.043,0l4.84-1.077a.239.239,0,0,0,.048-.018.194.194,0,0,0,.095-.116l.872-2.869a6.054,6.054,0,0,1,1.359-.2,6.064,6.064,0,0,1,1.358.2l.872,2.869a.2.2,0,0,0,.164.137l4.84.55a.194.194,0,0,0,.133-.034L26.1,20.2a.2.2,0,0,0,.08-.133l.429-3c.322.062.591.118.8.164" style="fill:#6e6a67" /><path d="M28.005,15.151l-.417,1.581a45.562,45.562,0,0,0-5.271-.805,12.839,12.839,0,0,0,2.454-1.356c1.516.214,2.629.444,3.234.581" style="fill:#6e6a67" /><path d="M6.3,15.151l.116.438c.324-.258.621-.472.871-.643-.408.078-.741.15-.987.205" style="fill:#6e6a67" /><path d="M22.641,14.269q-.957-.054-1.914-.093c-.037.055-.112.164-.22.312a12.175,12.175,0,0,1-1.88,2.03A15.061,15.061,0,0,0,23.163,14.3l-.522-.032" style="fill:#93232c" /><path d="M17.967,14.1h0c-.323,0-.647-.008-.97-.009h0c-.476,0-.951.007-1.427.016l-.877.416-.013.007a10.314,10.314,0,0,0-2.369,1.682c.095-.05.2-.1.3-.154a15.107,15.107,0,0,1,4.635-1.964c.24,0,.48,0,.72.007" style="fill:#93232c" /><path d="M12.574,14.207q-.609.028-1.219.063-.706.039-1.409.093c-.234.018-.468.038-.7.062-.067.007-.133.014-.2.022a19.617,19.617,0,0,0-4.569,3.765l.085-.1a18.406,18.406,0,0,1,8.01-3.906" style="fill:#93232c" /><path d="M26.068,24.671l-.054.028a2.566,2.566,0,0,1-1.2.234c-.3,0-.6-.025-.925-.055-.654-.06-1.762-.19-1.774-.192l-.085-.009-.067-.054c-.01-.007-.98-.78-1.764-1.4l-.087-.071c-.083-.071-.083-.071-.132-.071a17.7,17.7,0,0,0-2.585.723l-.1.031-.1-.037a7.466,7.466,0,0,0-2.321-.392c-.1,0-.206,0-.306.008-.126.006-.834.343-1.74,1.775l-.058.092-.1.033c-.015,0-1.573.508-3.226.98l-.107.03-.1-.047c-.011,0-.656-.3-1.271-.586l.136.063c.607.524,1.77,1.532,1.9,1.672.018.02.043.045.072.072-.03-.034-.059-.069-.088-.1h0a3.471,3.471,0,0,0,.894.628,1.956,1.956,0,0,0,.508.165,1.591,1.591,0,0,0,.261.022c.09,0,.182,0,.273-.007.363-.019.73-.046,1.1-.082s.731-.069,1.1-.114.729-.085,1.09-.141c.181-.026.361-.056.537-.1a1.438,1.438,0,0,0,.245-.074,1.067,1.067,0,0,0,.2-.147c.136-.117.267-.247.4-.376s.257-.262.384-.4c.214-.224.4-.462.6-.693L17.658,26h0l0,0c.043.031.086.063.129.1.249.186.507.387.755.561a11.493,11.493,0,0,0,.98.638,1.523,1.523,0,0,0,.253.118.137.137,0,0,0,.028.007.12.12,0,0,0,.031.007c.016,0,.038,0,.059,0,.045,0,.092,0,.139,0,.189-.013.381-.041.573-.071.383-.06.768-.129,1.15-.205s.766-.152,1.146-.236.763-.17,1.14-.265a3.153,3.153,0,0,0,.543-.178,2.105,2.105,0,0,0,.476-.314,3.7,3.7,0,0,0,.749-.9h0a4.062,4.062,0,0,0,.258-.585" style="fill:#93232c" /><path d="M18.918,6.647h.674V5.277H14.661v1.37h.674v-.7H16.73v4.231h-.574v.785H18.1v-.785h-.574V5.952h1.395v.7" style="fill:#93232c" /><path d="M24.021,14.362h0q-.419-.032-.838-.058h-.016a15.06,15.06,0,0,1-4.536,2.216l-.038.032a15.141,15.141,0,0,0,3.385-1.024,11.363,11.363,0,0,0,1.906-1.063c.048-.033.094-.068.14-.1" style="fill:#731b2a" /><path d="M17.247,14.094a15.1,15.1,0,0,0-4.635,1.964c.476-.242,1.039-.509,1.672-.774l.01,0,.2-.081.064-.026.172-.069.1-.038.157-.061.119-.045.147-.055.139-.05.137-.049.158-.055.126-.043.187-.062.1-.034.3-.094q.327-.1.668-.193c.3-.08.6-.156.9-.224-.24,0-.48-.005-.72-.007" style="fill:#731b2a" /><path d="M12.574,14.207a18.406,18.406,0,0,0-8.01,3.906c-.028.033-.057.066-.085.1a26.233,26.233,0,0,1,7.344-3.574l.314-.09c.535-.15,1.086-.281,1.651-.391q-.606.022-1.213.05" style="fill:#731b2a" /><path d="M26.649,24.39l-.03.014-.062.029-.05.023-.04.019-.061.029-.026.013-.068.033-.015.008-.072.035-.008,0-.148.075a4.061,4.061,0,0,1-.258.585h0v0a3.71,3.71,0,0,1-.748.9,2.106,2.106,0,0,1-.476.314,3.168,3.168,0,0,1-.543.178c-.377.1-.758.184-1.14.265s-.763.163-1.146.236-.767.146-1.15.205c-.192.03-.384.058-.573.071-.047,0-.093,0-.139,0-.021,0-.043,0-.059,0a.114.114,0,0,1-.03-.007.115.115,0,0,1-.028-.007,1.5,1.5,0,0,1-.253-.117,11.591,11.591,0,0,1-.98-.638c-.248-.174-.506-.375-.755-.561l-.022.031,0,0,.047.041h0l-.033-.025.209.249.024.028c.107.125.553.643,1.083,1.168a1.992,1.992,0,0,0,1.448.6,2.583,2.583,0,0,0,.593-.073l.6-.145c.619-.147,1.3-.311,1.759-.429l.088-.023.175-.047c.082-.023.173-.045.269-.066a2.232,2.232,0,0,0,1.706-1.1c.111-.221.235-.465.363-.715.178-.347.363-.7.528-1.017l.077-.147h0l.04-.076-.094.044" style="fill:#731b2a" /><path d="M17.613,26.118l-.036-.034c-.207.231-.391.469-.6.693-.127.135-.254.268-.384.4s-.261.26-.4.376a1.068,1.068,0,0,1-.2.147,1.424,1.424,0,0,1-.245.074c-.176.039-.356.069-.537.1-.361.056-.726.1-1.09.141s-.731.081-1.1.114-.732.063-1.1.082c-.092,0-.183.007-.273.007a1.577,1.577,0,0,1-.261-.022,1.958,1.958,0,0,1-.508-.165,3.478,3.478,0,0,1-.893-.628h0c.036.045.076.086.114.129l-.027-.025c-.03-.028-.054-.052-.072-.072-.129-.14-1.292-1.148-1.9-1.672l-.136-.063c.108.159.225.332.348.508.178.256.365.519.548.767.083.112.165.221.245.323a3.618,3.618,0,0,0,3.085,1.634,5.635,5.635,0,0,0,.63-.037l.149-.017.137-.016c1.386-.159,1.767-.227,1.978-.264l.152-.025.061-.009a3.351,3.351,0,0,0,.935-.284,1.562,1.562,0,0,0,.778-.725c.384-.858.462-1.063.465-1.071l.135-.361" style="fill:#731b2a" /><path d="M21.369,18.325a.307.307,0,1,0-.313-.3.308.308,0,0,0,.313.3Zm1.889,1.383c-.406-.2-.849.052-1.656.067-.6.021-1.105.028-1.138-.915s.351-1.726.953-1.747,1.149.728,1.223,1.67a1.191,1.191,0,0,1-.073.59c.559-.067.686.313.692.336Z" style="fill:#0e0f0d" /><path d="M12.759,18.553a.307.307,0,1,0-.316-.3.307.307,0,0,0,.316.3Zm.928.494c.009.944-.491.887-1.093.893l-.176,0c-.067,0-.132,0-.194,0a2.683,2.683,0,0,0-1.287.151.95.95,0,0,1,.677-.477,1.493,1.493,0,0,1-.1-.551c-.036-.943.546-1.717,1.147-1.723s1.021.758,1.03,1.7Z" style="fill:#0e0f0d" /><path d="M25.073,12.556c-.006.083-.013.142-.016.174-.237-.065-.477-.123-.718-.18a23.837,23.837,0,0,0-2.406-.4l-.085-.009a.294.294,0,0,0,.014-.036c.024-.088.045-.176.065-.265A8.778,8.778,0,0,0,22.1,9.561l2.873.817a9.821,9.821,0,0,1,.1,2.178ZM21.5,12.009a.186.186,0,0,0,0,.1c-.3-.032-.6-.059-.9-.083a4.946,4.946,0,0,0,.427-1.726,7.916,7.916,0,0,0,.706-.577,8.054,8.054,0,0,1-.231,2.288Zm-8.851.1a.19.19,0,0,0,0-.1,8.109,8.109,0,0,1-.232-2.288,7.918,7.918,0,0,0,.707.577,4.917,4.917,0,0,0,.427,1.725q-.451.036-.9.083Zm-.434.047c-.4.049-.806.1-1.208.167s-.8.141-1.2.23c-.241.056-.479.115-.718.18,0-.019-.005-.048-.008-.085a9.575,9.575,0,0,1,.092-2.266l2.872-.817a8.938,8.938,0,0,0,.151,2.18c.026.123.055.246.088.369a.237.237,0,0,0,.014.035l-.085.01Zm14.4,1.16-.072-.035-.12-.059,0,0a.744.744,0,0,1-.075-.043,7.6,7.6,0,0,0-.823-.309l-.1-.03.006-.025a8.016,8.016,0,0,0,.032-1.392,10.978,10.978,0,0,0-.132-1.218.189.189,0,0,0-.134-.151l-.409-.116a7.612,7.612,0,0,0-1.433-4.7,8.706,8.706,0,0,1,1.135,4.618l-2.539-.722H21.94a.24.24,0,0,0-.033,0H21.9a.158.158,0,0,0-.042,0l-.007,0a.141.141,0,0,0-.033.011l-.011.005-.025.017-.006,0,0,0-.007.006s-.071.069-.177.17c.008-.237.009-.6-.018-1.045l-.008-.128A9.681,9.681,0,0,0,20.429,4.12c.007.02.085.247.185.63a14.659,14.659,0,0,1,.435,5.031l0,.029-.01.008c-.1.079-.2.156-.3.223a.191.191,0,0,0-.083.153,4.554,4.554,0,0,1-.44,1.762A.193.193,0,0,0,20.2,12c-1.039-.071-2.082-.1-3.123-.1s-2.084.029-3.124.1a.269.269,0,0,0-.014-.038,4.558,4.558,0,0,1-.44-1.762.19.19,0,0,0-.082-.153c-.1-.07-.21-.15-.313-.231a14.592,14.592,0,0,1,.391-4.895c.12-.482.22-.773.228-.8a10.488,10.488,0,0,0-1.157,5.224c-.108-.1-.175-.167-.177-.17l-.008-.006,0,0-.007,0-.025-.015-.012-.007a.092.092,0,0,0-.031-.01l-.007,0a.169.169,0,0,0-.042,0h-.011l-.031,0H12.2l-2.538.722A8.7,8.7,0,0,1,10.8,5.23a7.622,7.622,0,0,0-1.433,4.7l-.408.116a.187.187,0,0,0-.135.151,11.04,11.04,0,0,0-.132,1.217,7.932,7.932,0,0,0,.033,1.394l.006.025-.1.03a7.511,7.511,0,0,0-.824.31.732.732,0,0,1-.075.042l0,0-.12.059-.062.031-.04.022a4.533,4.533,0,0,1,.578-.176c.2-.049.392-.092.589-.129.4-.073.791-.137,1.19-.186s.8-.1,1.2-.129.8-.068,1.2-.091c1.6-.095,3.21-.125,4.818-.125s3.215.026,4.818.125c.4.023.8.057,1.2.091s.8.078,1.2.13.8.111,1.19.185c.2.038.393.08.588.129a4.512,4.512,0,0,1,.579.176l-.031-.018Z" style="fill:#0e0f0d" /><path d="M17.523,5.952v4.231H18.1v.785H16.156v-.785h.574V5.952H15.336v.7h-.674V5.277h4.931v1.37h-.674v-.7h-1.4Zm2.577,1.2V4.77H14.155V7.154h1.688v-.7h.379V9.675H15.65v1.8H18.6v-1.8H18.03V6.458h.381v.7Z" style="fill:#0e0f0d" /></symbol><symbol id="tsconfig" viewBox="0 0 32 32"><title>tsconfig</title><path d="M23.827,8.243A4.424,4.424,0,0,1,26.05,9.524a5.853,5.853,0,0,1,.852,1.143c.011.045-1.534,1.083-2.471,1.662-.034.023-.169-.124-.322-.35a2.014,2.014,0,0,0-1.67-1c-1.077-.074-1.771.49-1.766,1.433a1.3,1.3,0,0,0,.153.666c.237.49.677.784,2.059,1.383,2.544,1.1,3.636,1.817,4.31,2.843a5.158,5.158,0,0,1,.416,4.333,4.764,4.764,0,0,1-3.932,2.815,10.9,10.9,0,0,1-2.708-.028,6.531,6.531,0,0,1-3.616-1.884,6.278,6.278,0,0,1-.926-1.371,2.655,2.655,0,0,1,.327-.208c.158-.09.756-.434,1.32-.761l1.024-.6.214.312a4.771,4.771,0,0,0,1.35,1.292,3.3,3.3,0,0,0,3.458-.175,1.545,1.545,0,0,0,.2-1.974c-.276-.4-.84-.727-2.443-1.422a8.8,8.8,0,0,1-3.349-2.055,4.687,4.687,0,0,1-.976-1.777,7.116,7.116,0,0,1-.062-2.268,4.332,4.332,0,0,1,3.644-3.374A9,9,0,0,1,23.827,8.243ZM15.484,9.726l.011,1.454h-4.63V24.328H7.6V11.183H2.97V9.755a13.986,13.986,0,0,1,.04-1.466c.017-.023,2.832-.034,6.245-.028l6.211.017Z" style="fill:#007acc" /><path d="M27.075,25.107l.363-.361c1.68.055,1.706,0,1.78-.177l.462-1.124.034-.107-.038-.093c-.02-.049-.081-.2-1.13-1.2v-.526c1.211-1.166,1.185-1.226,1.116-1.4l-.46-1.136c-.069-.17-.1-.237-1.763-.191l-.364-.367a8.138,8.138,0,0,0-.057-1.657l-.047-.106-1.2-.525c-.177-.081-.239-.11-1.372,1.124l-.509-.008c-1.167-1.245-1.222-1.223-1.4-1.152l-1.115.452c-.175.071-.236.1-.169,1.79l-.36.359c-1.68-.055-1.7,0-1.778.177L18.606,20l-.036.108.038.094c.02.048.078.194,1.13,1.2v.525c-1.211,1.166-1.184,1.226-1.115,1.4l.459,1.137c.07.174.1.236,1.763.192l.363.377a8.169,8.169,0,0,0,.055,1.654l.047.107,1.208.528c.176.073.236.1,1.366-1.13l.509.006c1.168,1.247,1.228,1.223,1.4,1.154l1.113-.45C27.082,26.827,27.143,26.8,27.075,25.107Zm-4.788-2.632a2,2,0,1,1,2.618,1.14A2.023,2.023,0,0,1,22.287,22.475Z" style="fill:#99b8c4" /></symbol><symbol id="tslint" viewBox="0 0 32 32"><title>tslint</title><path d="M22.395,9.855a3.372,3.372,0,0,1,1.694.976,4.46,4.46,0,0,1,.649.868c.009.034-1.169.825-1.883,1.268-.026.017-.129-.095-.245-.267a1.535,1.535,0,0,0-1.273-.765c-.821-.056-1.35.374-1.346,1.092a.993.993,0,0,0,.116.507c.181.374.516.6,1.569,1.053,1.939.834,2.769,1.384,3.285,2.167a3.93,3.93,0,0,1,.314,3.3,3.631,3.631,0,0,1-3,2.145,8.3,8.3,0,0,1-2.064-.021,4.977,4.977,0,0,1-2.756-1.436,4.785,4.785,0,0,1-.705-1.045A2.024,2.024,0,0,1,17,19.541c.12-.069.576-.331,1.006-.58l.778-.451.163.241a3.636,3.636,0,0,0,1.028.985,2.515,2.515,0,0,0,2.636-.133,1.177,1.177,0,0,0,.15-1.5c-.211-.3-.641-.555-1.862-1.083a6.7,6.7,0,0,1-2.55-1.569,3.572,3.572,0,0,1-.744-1.354,5.423,5.423,0,0,1-.047-1.728A3.3,3.3,0,0,1,20.34,9.794,6.861,6.861,0,0,1,22.395,9.855Zm-6.359,1.131.009,1.109H12.519V22.112H10.025V12.095H6.5V11.007a10.659,10.659,0,0,1,.03-1.118c.013-.017,2.158-.026,4.759-.021l4.734.013Z" style="fill:#007acc" /><path d="M2,15.17c1.844,0,2.1-1.223,2.1-2.322a22.044,22.044,0,0,0-.209-2.633A22.058,22.058,0,0,1,3.688,7.61c0-2.886,1.559-4.11,3.767-4.11H8V5.227H7.533c-1.533,0-2.051,1-2.051,2.7a16.225,16.225,0,0,0,.182,2.227,17.645,17.645,0,0,1,.182,2.383c.025,2.008-.7,3.011-1.872,3.389v.061c1.17.345,1.9,1.412,1.872,3.42a17.2,17.2,0,0,1-.182,2.383,16.668,16.668,0,0,0-.182,2.26c0,1.755.6,2.728,2.051,2.728H8V28.5H7.454c-2.155,0-3.767-1.129-3.767-4.3a21.463,21.463,0,0,1,.207-2.572A20.586,20.586,0,0,0,4.1,19.091c0-.973-.26-2.322-2.1-2.322Z" style="fill:#33a9dc" /><path d="M29.937,16.815c-1.844,0-2.1,1.348-2.1,2.321a21,21,0,0,0,.207,2.541,21.076,21.076,0,0,1,.209,2.572c0,3.167-1.637,4.3-3.767,4.3h-.546V26.821h.442c1.455-.031,2.077-.973,2.077-2.728,0-.753-.1-1.476-.182-2.26a17.087,17.087,0,0,1-.207-2.383c0-2.007.728-3.075,1.87-3.42V15.97c-1.142-.378-1.87-1.382-1.87-3.389a17.582,17.582,0,0,1,.207-2.383,22.114,22.114,0,0,0,.182-2.227c0-1.693-.546-2.666-2.051-2.7h-.467V3.548h.52c2.208,0,3.792,1.223,3.792,4.109a21.618,21.618,0,0,1-.209,2.6,22.484,22.484,0,0,0-.207,2.633c0,1.1.26,2.321,2.1,2.321Z" style="fill:#33a9dc" /><polygon points="13.595 26.5 12.405 25.132 11.214 26.499 10.016 25.13 8.819 26.498 7.624 25.13 6.857 26.008 6 25.361 7.624 23.501 8.819 24.87 10.016 23.502 11.212 24.87 12.405 23.5 13.597 24.868 14.788 23.502 15.987 24.871 17.183 23.501 18.379 24.871 19.579 23.503 20.776 24.871 21.976 23.502 23.171 24.871 24.37 23.504 26 25.359 25.144 26.009 24.37 25.128 23.168 26.497 21.974 25.13 20.775 26.497 19.578 25.129 18.377 26.497 17.183 25.13 15.988 26.497 14.79 25.13 13.595 26.5" style="fill:#c1272d" /></symbol><symbol id="d_ts" viewBox="0 0 32 32"><title>d_ts</title><path d="M23.827,8.243A4.424,4.424,0,0,1,26.05,9.524a5.853,5.853,0,0,1,.852,1.143c.011.045-1.534,1.083-2.471,1.662-.034.023-.169-.124-.322-.35a2.014,2.014,0,0,0-1.67-1c-1.077-.074-1.771.49-1.766,1.433a1.3,1.3,0,0,0,.153.666c.237.49.677.784,2.059,1.383,2.544,1.095,3.636,1.817,4.31,2.843a5.158,5.158,0,0,1,.416,4.333,4.764,4.764,0,0,1-3.932,2.815,10.9,10.9,0,0,1-2.708-.028,6.531,6.531,0,0,1-3.616-1.884,6.278,6.278,0,0,1-.926-1.371,2.655,2.655,0,0,1,.327-.208c.158-.09.756-.434,1.32-.761L19.1,19.6l.214.312a4.771,4.771,0,0,0,1.35,1.292,3.3,3.3,0,0,0,3.458-.175,1.545,1.545,0,0,0,.2-1.974c-.276-.395-.84-.727-2.443-1.422a8.8,8.8,0,0,1-3.349-2.055,4.687,4.687,0,0,1-.976-1.777,7.116,7.116,0,0,1-.062-2.268,4.332,4.332,0,0,1,3.644-3.374A9,9,0,0,1,23.827,8.243ZM15.484,9.726l.011,1.454h-4.63V24.328H7.6V11.183H2.97V9.755A13.986,13.986,0,0,1,3.01,8.289c.017-.023,2.832-.034,6.245-.028l6.211.017Z" style="fill:#007acc" /></symbol><symbol id="ts" viewBox="0 0 32 32"><title>ts</title><rect x="2" y="2" width="28" height="28" rx="1.312" style="fill:#3178c6" /><path d="M18.245,23.759v3.068a6.492,6.492,0,0,0,1.764.575,11.56,11.56,0,0,0,2.146.192,9.968,9.968,0,0,0,2.088-.211,5.11,5.11,0,0,0,1.735-.7,3.542,3.542,0,0,0,1.181-1.266,4.469,4.469,0,0,0,.186-3.394,3.409,3.409,0,0,0-.717-1.117,5.236,5.236,0,0,0-1.123-.877,12.027,12.027,0,0,0-1.477-.734q-.6-.249-1.08-.484a5.5,5.5,0,0,1-.813-.479,2.089,2.089,0,0,1-.516-.518,1.091,1.091,0,0,1-.181-.618,1.039,1.039,0,0,1,.162-.571,1.4,1.4,0,0,1,.459-.436,2.439,2.439,0,0,1,.726-.283,4.211,4.211,0,0,1,.956-.1,5.942,5.942,0,0,1,.808.058,6.292,6.292,0,0,1,.856.177,5.994,5.994,0,0,1,.836.3,4.657,4.657,0,0,1,.751.422V13.9a7.509,7.509,0,0,0-1.525-.4,12.426,12.426,0,0,0-1.9-.129,8.767,8.767,0,0,0-2.064.235,5.239,5.239,0,0,0-1.716.733,3.655,3.655,0,0,0-1.171,1.271,3.731,3.731,0,0,0-.431,1.845,3.588,3.588,0,0,0,.789,2.34,6,6,0,0,0,2.395,1.639q.63.26,1.175.509a6.458,6.458,0,0,1,.942.517,2.463,2.463,0,0,1,.626.585,1.2,1.2,0,0,1,.23.719,1.1,1.1,0,0,1-.144.552,1.269,1.269,0,0,1-.435.441,2.381,2.381,0,0,1-.726.292,4.377,4.377,0,0,1-1.018.105,5.773,5.773,0,0,1-1.969-.35A5.874,5.874,0,0,1,18.245,23.759Zm-5.154-7.638h4V13.594H5.938v2.527H9.92V27.375h3.171Z" style="fill:#fff;fill-rule:evenodd" /></symbol><symbol id="vite" fill="none" viewBox="0 0 32 32"><title>vite</title><path d="M29.8836 6.146L16.7418 29.6457c-.2714.4851-.9684.488-1.2439.0052L2.0956 6.1482c-.3-.5262.1498-1.1635.746-1.057l13.156 2.3516a.7144.7144 0 00.2537-.0004l12.8808-2.3478c.5942-.1083 1.0463.5241.7515 1.0513z" fill="url(#paint0_linear)" /><path d="M22.2644 2.0069l-9.7253 1.9056a.3571.3571 0 00-.2879.3294l-.5982 10.1038c-.014.238.2045.4227.4367.3691l2.7077-.6248c.2534-.0585.4823.1647.4302.4194l-.8044 3.9393c-.0542.265.1947.4918.4536.4132l1.6724-.5082c.2593-.0787.5084.1487.4536.414l-1.2784 6.1877c-.08.387.4348.598.6495.2662L16.5173 25 24.442 9.1848c.1327-.2648-.096-.5667-.387-.5106l-2.787.5379c-.262.0505-.4848-.1934-.4109-.4497l1.8191-6.306c.074-.2568-.1496-.5009-.4118-.4495z" fill="url(#paint1_linear)" /><defs id="defs50"><linearGradient id="paint0_linear" x1="6.0002" y1="32.9999" x2="235" y2="344" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.07142 0 0 .07142 1.3398 1.8944)"><stop id="stop38" stop-color="#41D1FF" /><stop id="stop40" offset="1" stop-color="#BD34FE" /></linearGradient><linearGradient id="paint1_linear" x1="194.651" y1="8.8182" x2="236.076" y2="292.989" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.07142 0 0 .07142 1.3398 1.8944)"><stop id="stop43" stop-color="#FFEA83" /><stop id="stop45" offset=".0833" stop-color="#FFDD35" /><stop id="stop47" offset="1" stop-color="#FFA800" /></linearGradient></defs></symbol><symbol id="vscode" viewBox="0 0 32 32"><title>vscode</title><path d="M29.01,5.03,23.244,2.254a1.742,1.742,0,0,0-1.989.338L2.38,19.8A1.166,1.166,0,0,0,2.3,21.447c.025.027.05.053.077.077l1.541,1.4a1.165,1.165,0,0,0,1.489.066L28.142,5.75A1.158,1.158,0,0,1,30,6.672V6.605A1.748,1.748,0,0,0,29.01,5.03Z" style="fill:#0065a9" /><path d="M29.01,26.97l-5.766,2.777a1.745,1.745,0,0,1-1.989-.338L2.38,12.2A1.166,1.166,0,0,1,2.3,10.553c.025-.027.05-.053.077-.077l1.541-1.4A1.165,1.165,0,0,1,5.41,9.01L28.142,26.25A1.158,1.158,0,0,0,30,25.328V25.4A1.749,1.749,0,0,1,29.01,26.97Z" style="fill:#007acc" /><path d="M23.244,29.747a1.745,1.745,0,0,1-1.989-.338A1.025,1.025,0,0,0,23,28.684V3.316a1.024,1.024,0,0,0-1.749-.724,1.744,1.744,0,0,1,1.989-.339l5.765,2.772A1.748,1.748,0,0,1,30,6.6V25.4a1.748,1.748,0,0,1-.991,1.576Z" style="fill:#1f9cf0" /></symbol><symbol id="vue" viewBox="0 0 32 32"><title>vue</title><path d="M24.4,3.925H30L16,28.075,2,3.925H12.71L16,9.525l3.22-5.6Z" style="fill:#41b883" /><path d="M2,3.925l14,24.15L30,3.925H24.4L16,18.415,7.53,3.925Z" style="fill:#41b883" /><path d="M7.53,3.925,16,18.485l8.4-14.56H19.22L16,9.525l-3.29-5.6Z" style="fill:#35495e" /></symbol><symbol id="wiki" viewBox="0 0 32 32"><title>wiki</title><path d="M30,30V2H2V30Z" /><path d="M29.153,29.123H2.847V2.872H29.153ZM13.214,21.4c-.03-.065-.053-.11-.073-.155L8.722,10.948a7.984,7.984,0,0,1-.311-.806,1.07,1.07,0,0,1,.422-1.236,2.131,2.131,0,0,1,1-.352c.231-.031.252-.051.259-.3a1.117,1.117,0,0,0-.014-.186.186.186,0,0,0-.217-.181c-.642.031-1.284.049-1.925.086A19.388,19.388,0,0,1,5.244,7.97c-.56-.045-1.123-.058-1.684-.074a.232.232,0,0,0-.183.115c-.11.3.047.559.3.54a.84.84,0,0,1,.179.025A2.583,2.583,0,0,1,5.845,9.911a11.307,11.307,0,0,1,.537,1.074q2.244,5.283,4.474,10.572.559,1.322,1.116,2.644a.347.347,0,0,0,.313.248.371.371,0,0,0,.376-.2c.028-.049.054-.1.08-.149l3.528-6.618c.026-.048.053-.1.09-.161.032.064.056.108.077.153l1.681,3.622L19.557,24.2a.379.379,0,0,0,.374.256c.179,0,.259-.107.327-.264q2.852-6.634,5.713-13.262a11.5,11.5,0,0,1,.679-1.311,2.12,2.12,0,0,1,1.717-1.058.405.405,0,0,0,.34-.5c-.022-.111-.075-.173-.2-.166-.336.02-.673.022-1.007.054A11.768,11.768,0,0,1,25.46,8c-.57-.045-1.142-.073-1.713-.1-.164-.008-.227.057-.241.226a1.676,1.676,0,0,0,0,.217c.006.142.073.2.216.217a3.705,3.705,0,0,1,.8.186.956.956,0,0,1,.618.893,2.8,2.8,0,0,1-.264,1.276L20.671,20.993c-.023.055-.05.108-.084.181-.027-.048-.046-.077-.06-.107Q19.114,18.1,17.7,15.139a.227.227,0,0,1,.01-.229c.454-.858.9-1.722,1.355-2.577.418-.776.835-1.556,1.287-2.313a4.415,4.415,0,0,1,.739-.913,2.382,2.382,0,0,1,1.44-.559.268.268,0,0,0,.282-.293,1.149,1.149,0,0,0,0-.2c-.011-.106-.06-.168-.177-.161-.356.02-.712.025-1.067.053a13.049,13.049,0,0,1-2.1.053c-.575-.047-1.152-.068-1.728-.107a.223.223,0,0,0-.25.174.889.889,0,0,0-.03.273c0,.14.07.2.217.215a3.272,3.272,0,0,1,.663.121.991.991,0,0,1,.745,1.162,2.821,2.821,0,0,1-.351,1.016q-.751,1.45-1.506,2.9c-.027.052-.056.1-.09.167-.027-.049-.049-.083-.066-.12-.524-1.094-1.051-2.186-1.568-3.283a5.408,5.408,0,0,1-.307-.807.689.689,0,0,1,.431-.937,4.249,4.249,0,0,1,.813-.207c.329-.062.352-.08.326-.432a.137.137,0,0,0,0-.031c-.016-.136-.073-.217-.223-.21-.561.031-1.123.049-1.684.086A15.3,15.3,0,0,1,12.43,7.97c-.48-.044-.962-.056-1.443-.075a.213.213,0,0,0-.164.072.385.385,0,0,0-.028.366.373.373,0,0,0,.116.147.358.358,0,0,0,.171.069A1.967,1.967,0,0,1,12.72,9.6c.138.258.3.5.422.769q1.335,2.856,2.662,5.717a.284.284,0,0,1-.006.285q-1.237,2.4-2.468,4.795Z" style="fill:#fff" /></symbol><symbol id="word" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="4.494" y1="-1712.086" x2="13.832" y2="-1695.914" gradientTransform="translate(0 1720)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2368c4" /><stop offset="0.5" stop-color="#1a5dbe" /><stop offset="1" stop-color="#1146ac" /></linearGradient></defs><title>word</title><path d="M28.806,3H9.705A1.192,1.192,0,0,0,8.512,4.191h0V9.5l11.069,3.25L30,9.5V4.191A1.192,1.192,0,0,0,28.806,3Z" style="fill:#41a5ee" /><path d="M30,9.5H8.512V16l11.069,1.95L30,16Z" style="fill:#2b7cd3" /><path d="M8.512,16v6.5L18.93,23.8,30,22.5V16Z" style="fill:#185abd" /><path d="M9.705,29h19.1A1.192,1.192,0,0,0,30,27.809h0V22.5H8.512v5.309A1.192,1.192,0,0,0,9.705,29Z" style="fill:#103f91" /><path d="M16.434,8.2H8.512V24.45h7.922a1.2,1.2,0,0,0,1.194-1.191V9.391A1.2,1.2,0,0,0,16.434,8.2Z" style="opacity:0.10000000149011612;isolation:isolate" /><path d="M15.783,8.85H8.512V25.1h7.271a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.783,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M15.783,8.85H8.512V23.8h7.271a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.783,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M15.132,8.85H8.512V23.8h6.62a1.2,1.2,0,0,0,1.194-1.191V10.041A1.2,1.2,0,0,0,15.132,8.85Z" style="opacity:0.20000000298023224;isolation:isolate" /><path d="M3.194,8.85H15.132a1.193,1.193,0,0,1,1.194,1.191V21.959a1.193,1.193,0,0,1-1.194,1.191H3.194A1.192,1.192,0,0,1,2,21.959V10.041A1.192,1.192,0,0,1,3.194,8.85Z" style="fill:url(#a)" /><path d="M6.9,17.988c.023.184.039.344.046.481h.028c.01-.13.032-.287.065-.47s.062-.338.089-.465l1.255-5.407h1.624l1.3,5.326a7.761,7.761,0,0,1,.162,1h.022a7.6,7.6,0,0,1,.135-.975l1.039-5.358h1.477l-1.824,7.748H10.591L9.354,14.742q-.054-.222-.122-.578t-.084-.52H9.127q-.021.189-.084.561c-.042.249-.075.432-.1.552L7.78,19.871H6.024L4.19,12.127h1.5l1.131,5.418A4.469,4.469,0,0,1,6.9,17.988Z" style="fill:#fff" /></symbol><symbol id="word2" viewBox="0 0 32 32"><title>word2</title><path d="M18.536,2.323V4.868c3.4.019,7.12-.035,10.521.019a.783.783,0,0,1,.912.861c.054,6.266-.013,12.89.032,19.157-.02.4.009,1.118-.053,1.517-.079.509-.306.607-.817.676-.286.039-.764.034-1.045.047-2.792-.014-5.582-.011-8.374-.01l-1.175,0v2.547L2,27.133Q2,16,2,4.873L18.536,2.322" style="fill:#283c82" /><path d="M18.536,5.822h10.5V26.18h-10.5V23.635h8.27V22.363h-8.27v-1.59h8.27V19.5h-8.27v-1.59h8.27V16.637h-8.27v-1.59h8.27V13.774h-8.27v-1.59h8.27V10.911h-8.27V9.321h8.27V8.048h-8.27V5.822" style="fill:#fff" /><path d="M8.573,11.443c.6-.035,1.209-.06,1.813-.092.423,2.147.856,4.291,1.314,6.429.359-2.208.757-4.409,1.142-6.613.636-.022,1.272-.057,1.905-.1-.719,3.082-1.349,6.19-2.134,9.254-.531.277-1.326-.013-1.956.032-.423-2.106-.916-4.2-1.295-6.314C8.99,16.1,8.506,18.133,8.08,20.175q-.916-.048-1.839-.111c-.528-2.8-1.148-5.579-1.641-8.385.544-.025,1.091-.048,1.635-.067.328,2.026.7,4.043.986,6.072.448-2.08.907-4.161,1.352-6.241" style="fill:#fff" /></symbol><symbol id="xml" viewBox="0 0 32 32"><title>xml</title><path d="M20.42,21.157l2.211,2.211L30,16,22.631,8.631,20.42,10.843,25.58,16Z" style="fill:#f1662a" /><path d="M11.58,10.843,9.369,8.631,2,16l7.369,7.369,2.211-2.211L6.42,16Z" style="fill:#f1662a" /><path d="M17.411,7.677l1.6.437-4.42,16.209-1.6-.437,4.42-16.209Z" style="fill:#f1662a" /></symbol><symbol id="yaml" viewBox="0 0 32 32"><title>yaml</title><path fill="#cb171e" d="M20.06 12.73H14.5l-1.13 2.73h-2.47l5.22-12.3h2.52l5 12.3H21l-.94-2.73zm-.92-2.46-1.71-4.51-1.9 4.51z" /><path fill="#d2d2d2" d="M30 28.82v-2.57h-6.36v-9.44H21v12zm-15.87-2.68 2.8-5.78v8.5h2.48V16.82H16l-3 5.46-2.86-5.46H6.8v12.06h2.58v-8.32l2.71 5.6zM2 3.14h3.46L8.5 7.97l3.07-4.85h3.31l-5.02 7.53v4.77H6.8v-4.77z" /></symbol><symbol id="zip" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="17.65" y1="26.056" x2="21.099" y2="26.056" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4d4d4d" /><stop offset="0.5" stop-color="#fff" /><stop offset="1" stop-color="#4d4d4d" /></linearGradient><linearGradient id="b" x1="17.65" y1="23.756" x2="21.099" y2="23.756" xlink:href="#a" /><linearGradient id="c" x1="17.65" y1="21.456" x2="21.099" y2="21.456" xlink:href="#a" /><linearGradient id="d" x1="17.65" y1="19.156" x2="21.099" y2="19.156" xlink:href="#a" /><linearGradient id="e" x1="17.65" y1="16.857" x2="21.099" y2="16.857" xlink:href="#a" /><linearGradient id="f" x1="17.65" y1="14.557" x2="21.099" y2="14.557" xlink:href="#a" /><linearGradient id="g" x1="17.65" y1="12.257" x2="21.099" y2="12.257" xlink:href="#a" /><linearGradient id="h" x1="17.65" y1="9.957" x2="21.099" y2="9.957" xlink:href="#a" /><linearGradient id="i" x1="17.65" y1="7.657" x2="21.099" y2="7.657" xlink:href="#a" /><linearGradient id="j" x1="16.237" y1="27.217" x2="19.686" y2="27.217" xlink:href="#a" /><linearGradient id="k" x1="16.237" y1="24.918" x2="19.686" y2="24.918" xlink:href="#a" /><linearGradient id="l" x1="16.237" y1="22.618" x2="19.686" y2="22.618" xlink:href="#a" /><linearGradient id="m" x1="16.237" y1="20.318" x2="19.686" y2="20.318" xlink:href="#a" /><linearGradient id="n" x1="16.237" y1="18.018" x2="19.686" y2="18.018" xlink:href="#a" /><linearGradient id="o" x1="17.65" y1="28.356" x2="21.099" y2="28.356" xlink:href="#a" /><linearGradient id="p" x1="16.237" y1="15.718" x2="19.686" y2="15.718" xlink:href="#a" /><linearGradient id="q" x1="16.237" y1="13.419" x2="19.686" y2="13.419" xlink:href="#a" /><linearGradient id="r" x1="16.237" y1="11.119" x2="19.686" y2="11.119" xlink:href="#a" /><linearGradient id="s" x1="16.237" y1="8.819" x2="19.686" y2="8.819" xlink:href="#a" /><linearGradient id="t" x1="16.237" y1="29.514" x2="19.686" y2="29.514" xlink:href="#a" /><linearGradient id="u" x1="16.985" y1="11.196" x2="20.446" y2="11.196" xlink:href="#a" /><linearGradient id="v" x1="18.096" y1="5.329" x2="19.336" y2="5.329" xlink:href="#a" /><linearGradient id="w" x1="16.029" y1="5.591" x2="21.403" y2="5.591" xlink:href="#a" /></defs><title>zip</title><path d="M27.667,27.667V17.333L23,15V2H4.333V30H27.667Zm-4.667,0V18.556l2.333,1.222v7.889Z" style="fill:#c09553" /><rect x="17.65" y="25.559" width="3.45" height="0.993" style="fill:url(#a)" /><rect x="17.65" y="23.26" width="3.45" height="0.993" style="fill:url(#b)" /><rect x="17.65" y="20.96" width="3.45" height="0.993" style="fill:url(#c)" /><rect x="17.65" y="18.66" width="3.45" height="0.993" style="fill:url(#d)" /><rect x="17.65" y="16.36" width="3.45" height="0.993" style="fill:url(#e)" /><rect x="17.65" y="14.06" width="3.45" height="0.993" style="fill:url(#f)" /><rect x="17.65" y="11.76" width="3.45" height="0.993" style="fill:url(#g)" /><rect x="17.65" y="9.461" width="3.45" height="0.993" style="fill:url(#h)" /><rect x="17.65" y="7.161" width="3.45" height="0.993" style="fill:url(#i)" /><rect x="16.237" y="26.721" width="3.45" height="0.993" style="fill:url(#j)" /><rect x="16.237" y="24.421" width="3.45" height="0.993" style="fill:url(#k)" /><rect x="16.237" y="22.121" width="3.45" height="0.993" style="fill:url(#l)" /><rect x="16.237" y="19.821" width="3.45" height="0.993" style="fill:url(#m)" /><rect x="16.237" y="17.522" width="3.45" height="0.993" style="fill:url(#n)" /><rect x="17.65" y="27.859" width="3.45" height="0.993" style="fill:url(#o)" /><rect x="16.237" y="15.222" width="3.45" height="0.993" style="fill:url(#p)" /><rect x="16.237" y="12.922" width="3.45" height="0.993" style="fill:url(#q)" /><rect x="16.237" y="10.622" width="3.45" height="0.993" style="fill:url(#r)" /><rect x="16.237" y="8.322" width="3.45" height="0.993" style="fill:url(#s)" /><rect x="16.237" y="29.018" width="3.45" height="0.993" style="fill:url(#t)" /><path d="M20.1,5.911a.554.554,0,0,0-.548-.53h-.009v.557h.092l.206,2.514H17.589L17.8,5.938h.094V5.381h-.044a.552.552,0,0,0-.547.53l-.314,10.569a.513.513,0,0,0,.515.531h2.432a.512.512,0,0,0,.513-.531Zm-1.384,10.5a1.171,1.171,0,1,1,1.171-1.171A1.171,1.171,0,0,1,18.716,16.408Z" style="fill:url(#u)" /><rect x="18.096" y="3.802" width="1.24" height="3.054" style="fill:url(#v)" /><path d="M21.4,4.56a2.549,2.549,0,0,0-2.549-2.549h-.276a2.55,2.55,0,0,0-2.436,3.3h0l0,.006v0A7.986,7.986,0,0,1,16.4,7.878H16.4a1.811,1.811,0,0,0,.641,1.271l.109-3.441a.593.593,0,0,1,.6-.551h.135V3.587h1.653v1.57h.1a.6.6,0,0,1,.605.551l.121,3.462a1.813,1.813,0,0,0,.666-1.292h0V7.8c0-.014,0-.027,0-.041s0-.026,0-.039a7.693,7.693,0,0,1,.236-2.359A2.543,2.543,0,0,0,21.4,4.56Z" style="fill:url(#w)" /></symbol><symbol id="git" width="24" height="24" viewBox="0 0 24 24"><path fill="var(--color)" d="M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z" /></symbol><symbol id="md" width="24" height="24" viewBox="0 0 24 24"><path fill="var(--color)" d="M22.289 4.5A1.71 1.71 0 0 1 24 6.226v11.557c0 .946-.766 1.726-1.726 1.726H1.726A1.74 1.74 0 0 1 0 17.768V6.226C0 5.28.78 4.5 1.726 4.5Zm-8.781 12.007V7.501h-3.002l-2.251 3.002-2.252-3.002H3.002v9.006h3.001v-4.503l2.252 2.882 2.251-2.882v4.503Zm4.489.75 3.767-5.253h-2.251V7.501h-3.002v4.503h-2.252Z" /></symbol></svg>
@@ -0,0 +1,4 @@
1
+ User-agent: *
2
+ Disallow:
3
+
4
+ Sitemap: /sitemap.xml
@@ -0,0 +1,26 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+
7
+ <title>@papit/server</title>
8
+
9
+ <meta name="description" content="development server - explorer" />
10
+ <meta name="color-scheme" content="light dark" />
11
+
12
+ <link rel="stylesheet" href="/templates/explorer/style.css" />
13
+ </head>
14
+
15
+ <body>
16
+ <div>
17
+ <h1>Explorer</h1>
18
+ <details>
19
+ <span>location: [<span data-location />]</span>
20
+ </details>
21
+ </div>
22
+
23
+ <ul data-folders />
24
+ <ul data-files />
25
+ </body>
26
+ </html>
@@ -0,0 +1,43 @@
1
+ :root {
2
+ color-scheme: dark light;
3
+
4
+ --color: light-dark(black, white);
5
+ --inverse-color: light-dark(white, black);
6
+ --lighter-color: light-dark(#686868, #b7b7b7);
7
+ }
8
+
9
+ ul {
10
+ list-style: none;
11
+ padding-left: 0;
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 0.125rem;
15
+
16
+ li {
17
+ font-size: 12pt;
18
+ font-family: monospace;
19
+ color: var(--color);
20
+
21
+ &.hidden {
22
+ color: var(--lighter-color);
23
+ }
24
+
25
+ a {
26
+ color: inherit;
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 0.5rem;
30
+ text-underline-offset: 2px;
31
+ text-decoration: none;
32
+
33
+ &:hover {
34
+ text-decoration: underline;
35
+ }
36
+
37
+ svg {
38
+ width: 1.5rem;
39
+ height: 1.5rem;
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,20 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>@papit/server</title>
6
+
7
+ <meta name="description" content="development server - serve" />
8
+ <meta name="color-scheme" content="light dark" />
9
+
10
+ <link rel="stylesheet" href="/templates/live/style.css" />
11
+ <script defer src="/templates/live/main.js"></script>
12
+ </head>
13
+
14
+ <body>
15
+ <dialog id="liveservererrorpopup">
16
+ <span>ERROR</span>
17
+ <div class="content"></div>
18
+ </dialog>
19
+ </body>
20
+ </html>
@@ -0,0 +1,38 @@
1
+ window.addEventListener("load", function () {
2
+
3
+ const ws = new WebSocket('ws://localhost:' + location.port ?? window.PAPIT_PORT);
4
+ ws.onerror = (error) => {
5
+ console.error('live-server socket error:', error);
6
+ }
7
+ ws.onopen = () => {
8
+ console.log('live-server socket connected', 'ws://localhost:' + location.port ?? window.PAPIT_PORT);
9
+
10
+ ws.send(JSON.stringify({ type: "register", location: window.location.pathname }));
11
+ }
12
+ ws.onmessage = (message) => {
13
+ const data = JSON.parse(message.data); // { action: 'update', filename, content }
14
+
15
+ switch (data.action)
16
+ {
17
+ case "update":
18
+ // NOTE: this might need to be expanded since this wont upgrade whenever
19
+ // NOTE: server now deals with understanding if this is descendant or the current packaghe - it might miss weird assets coming from arbitrary packages - but thats fine.
20
+ window.location.reload();
21
+ // if (data.isDescendant || window.location.pathname.startsWith(data.filename) || data.filename.startsWith(window.location.pathname))
22
+ // else
23
+ // console.log("hot reload skipped", {filename: data.filename, window: window.location.pathname})
24
+ break;
25
+ case "error":
26
+ console.log('wonk wonk an error..');
27
+ window.currentliveservererrorfile = data.filename;
28
+ window.liveservererrorpopup.querySelector('div.content').innerHTML = data.error.map(error => `<p>${error}</p>`).join('');
29
+ window.liveservererrorpopup.showModal();
30
+ break;
31
+ default:
32
+ console.log('incomming message from server', data, message);
33
+ break;
34
+ }
35
+ }
36
+
37
+ window.currentliveservererrorfile = null;
38
+ });
@@ -0,0 +1,19 @@
1
+ dialog#liveservererrorpopup {
2
+ border: none;
3
+ background: none;
4
+ width: 100%;
5
+ height: 100%;
6
+ color: white;
7
+ font-size: 16pt;
8
+ }
9
+
10
+ dialog#liveservererrorpopup>span {
11
+ background-color: rgba(255, 0, 0, 0.584);
12
+ font-weight: bold;
13
+ padding: 0.1rem 0.5rem;
14
+ letter-spacing: 0.1rem;
15
+ }
16
+
17
+ dialog#liveservererrorpopup::backdrop {
18
+ background-color: rgba(0, 0, 0, 0.63);
19
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "region": "GB",
4
+ "language": "en-UK"
5
+ },
6
+ "dev-server": "dev-server"
7
+ }
package/lib/bin.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import oe from"node:path";import re from"node:fs";import{Arguments as J}from"@papit/arguments";import{Terminal as Be}from"@papit/terminal";import{Information as S}from"@papit/information";import Z from"node:path";import X from"node:fs";import He from"node:fs";import M from"node:path";import{deepMergeTwo as Ue}from"@papit/deep-merge";function ne(e,t,o){let i=JSON.parse(He.readFileSync(t,{encoding:"utf-8"})),r=i?.meta?.language??M.basename(t,".json");o.data[r]||(o.data[r]={meta:i.meta}),o.data[r]=Ue(o.data[r],i,["meta"]);let s=M.relative(e,t).split(M.sep);for(;s.length>0;){let a="/"+s.join("/");o.map[a]=r,s.shift()}}function ie(e){if(!e.endsWith(".json"))return!1;let t=M.basename(M.dirname(e));return/^(transl|locale|i18)/i.test(t)}import A from"node:path";var C=class extends Error{constructor(t,o){super(t,o),this.name="http-error"}},B=class extends C{constructor(t,o){super(t??"internal server error",o),this.name="Internal Server Error",this.status=500}},x=class extends C{constructor(t,o){super(t??"not found",o),this.name="Not Found",this.status=404}},O=class extends C{constructor(t,o){super(t??"method not allowed",o),this.name="Method not allowed",this.status=405}};import G from"node:fs";import De from"node:path";import{Arguments as $e}from"@papit/arguments";import{Arguments as se}from"@papit/arguments";var y=class{static{this.MimeTypes={".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".mjs":"text/javascript",".ts":"text/typescript",".tsx":"text/typescript",".jsx":"text/javascript",".json":"application/json",".xml":"application/xml",".txt":"text/plain",".md":"text/markdown",".markdown":"text/markdown",".csv":"text/csv",".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".ico":"image/x-icon",".bmp":"image/bmp",".tiff":"image/tiff",".tif":"image/tiff",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".m4a":"audio/mp4",".mp4":"video/mp4",".webm":"video/webm",".ogv":"video/ogg",".avi":"video/x-msvideo",".mov":"video/quicktime",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".7z":"application/x-7z-compressed",".rar":"application/vnd.rar"}}static{this._MAX_CACHE_SIZE=50*1024*1024}static{this._MAX_FILE_SIZE_TO_CACHE=1024*1024}static{this.BinaryExtensions=new Set([".png",".jpg",".jpeg",".gif",".ico",".webp",".bmp",".tiff",".tif",".woff",".woff2",".ttf",".otf",".eot",".mp3",".wav",".ogg",".m4a",".mp4",".webm",".ogv",".avi",".mov",".zip",".tar",".gz",".7z",".rar",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx"])}static get MAX_CACHE_SIZE(){return se.number("MAX_CACHE_SIZE")??this._MAX_CACHE_SIZE}static get MAX_FILE_SIZE_TO_CACHE(){return se.number("MAX_FILE_SIZE_TO_CACHE")??this._MAX_FILE_SIZE_TO_CACHE}};import Pe from"node:path";import ae from"node:fs";import{Arguments as ce}from"@papit/arguments";import{Terminal as Oe}from"@papit/terminal";async function me(e,t,o){return new Promise((i,r)=>{let s=y.BinaryExtensions.has(Pe.extname(e))?ae.createReadStream(e,{signal:o}):ae.createReadStream(e,{signal:o,encoding:"utf-8"});s.pipe(t),s.on("error",a=>{ce.error&&Oe.error("streaming error",e),ce.verbose&&console.trace(a),r(new x(a.message))}),s.on("close",i)})}function z(e,t,o,i){if(!G.existsSync(e.absolute))throw new x(`${e.relative} not found`);let r=De.extname(e.absolute),n=G.statSync(e.absolute);if(!t.isCacheable(n.size,r))return me(e.absolute,o,i),"streamed";let s=y.MimeTypes[r]??"text/plain",a=G.readFileSync(e.absolute),m={mimeType:s,buffer:a,mtime:n.mtimeMs};return $e.has("no-cache")&&t.add(e,a,s,m.mtime),m}function pe(e,t,o){let r=A.relative(e,t).split(A.sep);for(;r.length>0;){let n=A.join(A.sep+r.join(A.sep));o[n]||(o[n]=[]),o[n].push(t),r.shift()}}async function le(e,t,o,i,r,n){let s=A.normalize(e);if(t.map[s]){let m=t.map[s];if(m)return{mimeType:"application/json",buffer:Buffer.from(JSON.stringify(t.data[m]))}}let a=[...o[s]];for(;a.length>0;){let m=a.pop();try{return z({absolute:A.normalize(m),relative:s},i,r,n)}catch{}}throw new x(`asset "${s}" not found`)}import{Arguments as fe}from"@papit/arguments";function ue(){let e=["asset","assets","public"];if(fe.has("asset")){let t=fe.get("asset");e.push(...t)}return e}var We=new Set(["node_modules",".git",".temp","lib","dist","src","explorer-icons"]);async function K(e,t,o,i){let r=de(e,(n,s,a)=>{if(We.has(n))return!1;if(!a){if(Z.dirname(s)===e)return!1;let m=s.split(Z.sep);if(!i.some(p=>m.includes(p)))return!1}return!0});for(let n of r)ie(n)?ne(e,n,t):pe(e,n,o)}function de(e,t,o=0){if(!X.existsSync(e)||o>10)return[];let i=[],r=X.readdirSync(e);for(let n of r){let s=Z.join(e,n),m=X.statSync(s).isDirectory();t&&!t(n,s,m)||(m?i.push(...de(s,t,o+1)):i.push(s))}return i}import gt from"node:http";import Le from"node:fs";import v from"node:path";import ht from"chokidar";import{Information as k}from"@papit/information";import{Arguments as f}from"@papit/arguments";import{Terminal as d}from"@papit/terminal";import Se from"node:path";import Q from"node:fs";import $ from"node:path";import he from"node:fs";import{Document as Ze}from"@papit/html";import{Arguments as Ke}from"@papit/arguments";import{Terminal as Ve}from"@papit/terminal";import{Document as Je}from"@papit/html";import Ge from"node:path";import V from"node:fs";import{Arguments as ge}from"@papit/arguments";import{Terminal as Xe}from"@papit/terminal";function D(e,t){let o=new Je,i=`${e}-template`,r=Ge.join(t,"asset","templates",e,"index.html"),n=ge.string(i);if(n&&V.existsSync(n)&&(r=n),!V.existsSync(r))return ge.error&&Xe.error(`could not find ${e} template html file`),o.innerHTML='<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>@papit/server</title><meta name="description" content="Development server" /><meta name="color-scheme" content="light dark" /></head><body>Llama Trauma Baby Mama</body></html>',o;let s=V.readFileSync(r,{encoding:"utf-8"});return o.innerHTML=s,o}function ye(e,t,o,i){let r=D("explorer",i);r.title=e.packageJSON.name;let n=Ke.string("explorer-spritesheet")??$.join(i,"asset/icons/explorer-spritesheet.svg"),s=he.readFileSync(n,{encoding:"utf-8"}),a=new Ze;a.innerHTML=s,a.documentElement||(Ve.error("something went wrong loading explorer icon spritesheet"),process.exit(1)),a.documentElement.setAttribute("style","display:none"),r.body?.appendChild(a.documentElement);let m=r.querySelector("[data-location]"),p=$.relative(e.location,o.absolute);p?m.innerHTML=p:m.parentElement?.removeChild(m);let c=r.querySelector("ul[data-folders]"),u=r.querySelector("ul[data-files]");return o.relative!==""&&(c.innerHTML='<li class="hidden"><a href=".."><svg><use href="#folder" /></svg><span class="name">..</span></a></li>'),t.sort((l,b)=>l.localeCompare(b)).forEach(l=>{let b=$.join(o.absolute,l),j=he.statSync(b),w=r.createElement("li");w.innerHTML=`<a href="${l}"><svg><use href="" /></svg><span class="name">${l}</span></a>`;let g=w.querySelector("a"),_=g.querySelector("use");if(!l.startsWith(".env")&&!l.startsWith(".git")&&l.startsWith(".")&&w.classList.add("hidden"),j.isFile()){_?.setAttribute("href","#"+Qe(b,r)),u.appendChild(w);return}j.isDirectory()&&(_?.setAttribute("href","#"+Ye(b,r)),g.setAttribute("href",l+"/"),c.appendChild(w))}),r}function Qe(e,t){let o=$.basename(e),i=o.split(".");o.startsWith(".")&&i.shift();let r=i.at(0)??o,n;if(o.startsWith(".git")||/\.git/.test(e))n="git";else if(o==="package.json")n="package";else if(o.startsWith("tsconfig"))n="tsconfig";else if(r.startsWith("eslint"))n="eslint";else if(/translation/.test(e)){if(t.querySelector("symbol#"+r))return r;n="language"}else/\.vscode/.test(e)&&(n="vscode");if(t.querySelector("symbol#"+n))return n;let s=i.slice(i.length-2).join("_");if(t.querySelector("symbol#"+s))return s;let a=i.pop()??o;return t.querySelector("symbol#"+a)?a:"file"}function Ye(e,t){return"folder"}import qe from"node:fs";import{Document as et,Element as tt}from"@papit/html";import{Terminal as be}from"@papit/terminal";function xe(e,t,o,i){let r=D("live",i);r.body||(be.error("live document template is missing body"),process.exit(1)),r.head||(be.error("live document template is missing head"),process.exit(1));let n=new et,s=qe.readFileSync(t.absolute,{encoding:"utf-8"});if(n.innerHTML=s,n.head&&[...n.head.childNodes].forEach(c=>ot(c,r.head)),n.body&&[...n.body.childNodes].forEach(c=>r.body?.appendChild(c)),n.body?.classList)for(let c of n.body?.classList)r.body.classList.add(c);if(n.body?.attributes)for(let c in n.body?.attributes){if(c==="class"||n.body.hasAttribute(c))continue;let u=n.body.getAttribute(c);u===!0?n.body.toggleAttribute(c):n.body.setAttribute(c,u)}let a=r.head.querySelector("script"),m=r.head.querySelector('script[type="importmap"]');m||(m=r.createElement("script"),m.setAttribute("type","importmap"));let p=JSON.parse(m.textContent||"{}");return p.imports||(p.imports={}),p.imports={...p.imports,...o.imports},m.textContent=JSON.stringify(p),a?a!==m&&r.head.insertBefore(m,a):r.head.appendChild(m),r}function ot(e,t){if(e instanceof tt){let o=`${e.tagName}${e.className?"."+e.className:""}${e.id?"#"+e.id:""}${Array.from(e.attributes).map(([r,n])=>`[${r}${typeof n=="string"?`="${n}"`:""}]`).join("")}`,i=t.querySelector(o);if(i){t.replaceChild(e,i);return}}t.appendChild(e)}import{fileURLToPath as rt}from"node:url";import h from"node:path";import H from"node:fs";import{Information as R,PackageGraph as nt}from"@papit/information";import{Arguments as it}from"@papit/arguments";function ve(e){process.platform==="win32"&&e.url&&/^\/[A-Za-z]:/.test(e.url)&&(e.url=e.url.slice(1).replace(/\//g,"\\"));let o=(()=>{if(e.url&&H.existsSync(e.url)&&H.statSync(e.url).isFile())return{absolute:e.url,relative:h.relative(e.url,R.package.location)};let i=[it.string("folder"),e.url].filter(n=>n!==void 0),r=[R.local,R.package.location,R.root.location];for(let n of r){let s=h.join(n,...i);if(H.existsSync(s))return{absolute:s,relative:h.relative(n,s)||h.relative(R.package.location,R.local)||h.sep}}return{absolute:h.join(R.package.location,e.url??h.sep),relative:e.url??h.sep}})();return o.absolute.endsWith(h.sep)&&(o.absolute=o.absolute.slice(0,o.absolute.length-1)),{absolute:h.normalize(o.absolute),relative:h.normalize(o.relative)}}function we(e){let o=rt(e);for(let i=0;i<5;i++)if(o=h.dirname(o),!!H.existsSync(h.join(o,"package.json")))return o;return null}function st(e){let t=e;for(;t!=="/"&&!H.existsSync(h.join(t,"package.json"));)t=h.dirname(t);return t}function T(e){let t=st(e.absolute);if(!t)throw new B(`could not find package at 1: ${t}`);let o=nt.search(t);if(!o)throw new B(`could not find package at 2: ${t}`);return o}async function Te(e,t,o,i,r){let n=T(e),s=e.absolute.endsWith(".html")?e:{absolute:Se.join(e.absolute,"index.html"),relative:Se.join(e.relative,"index.html")},a,m=null;if(Q.existsSync(s.absolute))m=Q.statSync(s.absolute).mtimeMs,a=xe(n,s,o,i);else{let p=Q.readdirSync(e.absolute);a=ye(n,p,e,i)}return r.add(e,Buffer.from(a.innerHTML,"utf8"),y.MimeTypes[".html"],m),a}import at from"node:fs";import{jsBundle as ct}from"@papit/bundle-js";import{Arguments as mt}from"@papit/arguments";async function Ee(e,t){let o=T(e),i;if(await ct(mt.instance,o.location,{entryPointArray:[{input:e.absolute,output:void 0}],tsconfig:o?.tsconfig,externals:o?.externals,packageJSON:o?.packageJSON,esoptions:{write:!1}},r=>{r.type==="build"&&(i=r.result.outputFiles?.at(0)?.text)}),!i)throw new x("file not found: "+e.relative);return t.add(e,Buffer.from(i,"utf8"),y.MimeTypes[".js"],at.statSync(e.absolute)?.mtimeMs??null),i}import Y from"node:fs";import{Arguments as q}from"@papit/arguments";import{Terminal as I}from"@papit/terminal";var N=class{constructor(t){this.map=new Map;this._size=0;this.name="cache";this._maxSize=y.MAX_FILE_SIZE_TO_CACHE;t&&(this.name=t)}get size(){return this._size}get maxSize(){return this._maxSize}set maxSize(t){this._maxSize=t*1024*1024}get(t){let o=this.map.get(t.absolute);return!o||!Y.existsSync(t.absolute)?null:o.mtime===null||Y.statSync(t.absolute).mtimeMs===o.mtime?o:(this.delete(t),null)}delete(t,o=!1){let i=this.map.get(t.absolute);i&&(q.verbose&&!o&&I.write(I.yellow(t.relative),"removed from cache:"+I.blue(this.name)),this._size-=i.buffer.length,this.map.delete(t.absolute))}clear(){this.map.clear(),this._size=0}add(t,o,i,r){q.has("no-cache")||(this.delete(t,!0),this._size+=o.length,q.verbose&&I.write(I.yellow(t.relative),"added to cache:"+I.blue(this.name)),this.map.set(t.absolute,{mimeType:i??y.MimeTypes[t.absolute]??"text/plain",buffer:o,mtime:r===void 0?Y.statSync(t.absolute).mtimeMs:r}))}isCacheable(t,o){return!(t>this.maxSize||[".mp4",".webm",".ogv",".avi",".mov"].includes(o))}};import{createHash as pt}from"node:crypto";import ke from"node:path";import{Arguments as ee}from"@papit/arguments";import{Terminal as U}from"@papit/terminal";import{Information as W}from"@papit/information";var L=new Map;function Ce(e,t,o){let i=e.headers["sec-websocket-key"],n=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${pt("sha1").update(i+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64")}`];t.write(n.join(`\r
3
+ `)+`\r
4
+ \r
5
+ `),ee.info&&U.write(U.blue("client connected")),t.on("end",()=>L.delete(t)),t.on("close",()=>L.delete(t)),t.on("error",s=>{s.code==="ECONNRESET"&&L.delete(t)}),t.on("data",s=>{try{let a=lt(s);switch(a.opcode){case 1:let m=a.payload.toString("utf8");try{let c=JSON.parse(m);if(c.type==="register"){let u=T({relative:c.location,absolute:ke.join(W.root.location,c.location)});u.name===W.root.name&&(u=W.package),L.set(t,u)}}catch{}break;case 8:t.end();break;case 9:let p=Ae({type:"pong"});t.write(p);break;default:console.log("Unknown opcode:",a.opcode)}}catch(a){console.error("Error parsing WebSocket frame:",a)}})}function te(e){try{if(L.size===0){ee.verbose&&U.write("No clients connected to send update!");return}let t=Ae({action:"update",filename:"/"+ke.relative(W.root.location,e.location)});L.forEach((o,i)=>{if(!(o.name!==e.name&&!e?.descendants.some(r=>r.name===o.name))){if(!i||!i.writable){ee.verbose&&U.error(U.blue("socket"),"[error] could not find client"),L.delete(i);return}i.write(t)}})}catch(t){console.log("[socket error]",t)}}function Ae(e){let t=Buffer.from(JSON.stringify(e),"utf8"),o=t.length,i=2;o>125&&o<=65535?i+=2:o>65535&&(i+=8);let r=Buffer.alloc(i+o);r[0]=129;let n=2;return o<=125?r[1]=o:o<=65535?(r[1]=126,r.writeUInt16BE(o,n),n+=2):(r[1]=127,r.writeBigUInt64BE(BigInt(o),n),n+=8),t.copy(r,n),r}function lt(e){let t=e[0],o=e[1],i=(t&128)!==0,r=t&15,n=(o&128)!==0,s=o&127,a=2;if(s===126?(s=e.readUInt16BE(a),a+=2):s===127&&(s=Number(e.readBigUInt64BE(a)),a+=8),!n)throw new Error("Expected masked frame from client");let m=e.slice(a,a+4);a+=4;let p=e.slice(a,a+s),c=Buffer.alloc(s);for(let u=0;u<s;u++)c[u]=p[u]^m[u%4];return{opcode:r,payload:c}}import ft from"node:net";import{Terminal as ut}from"@papit/terminal";function dt(e,t="0.0.0.0"){return new Promise(o=>{let i=ft.createServer().once("error",()=>o(!1)).once("listening",()=>{i.close(()=>o(!0))}).listen(e,t)})}async function Re(e,t=20){for(let o=0;o<t;o++){let i=e+o;if(await dt(i))return i}ut.error(`No free ports found in range [${e}, ${e+t}]`),process.exit(1)}import{build as yt}from"@papit/build";var E=f.number("port")||3e3,F=null;function je(e,t,o,i,r){return E=f.number("port")||3e3,new Promise(async n=>{E=await Re(E),F=gt.createServer();let s=new N("file");s.maxSize=f.number("cache-file")??50;let a=new N("html");a.maxSize=f.number("cache-html")??50;let m=new N("bundle");m.maxSize=f.number("cache-bundle")??150,f.has("live")&&xt(),k.packageName!=="@papit/server"&&!f.has("serve")&&(f.info&&d.write(d.blue("listening to file changes"),k.package.name),f.set("no-bundle",!0),f.set("live",!0),f.set("location",k.package.location),f.set("mode","dev"),f.set("buildMode","ancestors")),F.listen(E,()=>{if(f.set("port",E),f.silent||d.write("server:",d.blue(E),d.yellow("- running")),f.has("open")){let p=v.join(`http://localhost:${E}`,v.relative(k.root.location,k.package.location)),c=v.join(p,f.string("open")??f.string("folder")??"");switch(process.platform){case"win32":d.execute(`start "${c}"`,p);break;case"darwin":d.execute(`open "${c}"`,p);break;case"linux":d.execute(`xdg-open "${c}"`,p);break}}n()}),F.on("request",async(p,c)=>{try{if(p.method!=="GET")throw c.setHeader("Allow","GET"),new O;if(p.url?.startsWith("/.well-known"))return c.end("ok");p.url?.endsWith("/favicon.ico")&&(p.url="/favicon.svg");try{let g=await le(p.url,t,o,s,c);if(g==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",g.mimeType),c.end(g.buffer);return}catch{}let u=p.url?.split("@")?.at(1);if(u){let g=r.get("@"+u);if(g){let _=z({absolute:v.normalize(g),relative:v.normalize(v.relative(k.root.location,g))},s,c);if(_==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",_.mimeType),c.end(_.buffer);return}}let l=ve(p),b=Le.statSync(l.absolute);if(b.isDirectory()){let g=v.join(l.absolute,"index.html");Le.existsSync(g)&&(l.absolute=g,l.relative=v.join(l.relative,"index.html"))}let j=a.get(l)??m.get(l)??s.get(l);if(j)return f.info&&d.write(d.yellow(l.relative),"found in cache"),c.statusCode=200,c.setHeader("Content-Type",j.mimeType),c.setHeader("X-Cache","HIT"),c.end(j.buffer);if(c.setHeader("X-Cache","MISS"),b.isDirectory()||v.extname(l.absolute)===".html"){let g=await Te(l,o,i,e,a);c.statusCode=200,f.has("prod")||c.setHeader("Cache-Control","no-store"),c.end(g.outerHTML);return}if(/\.tsx?/.test(l.absolute)&&(p.headers.referer?.endsWith(".js")||p.headers["sec-fetch-dest"]==="script")){let g=await Ee(l,m);c.statusCode=200,c.setHeader("Content-Type","text/javascript"),c.end(g);return}let w=z(l,s,c);if(w==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",w.mimeType),c.end(w.buffer)}catch(u){bt(u,c)}}),F.on("error",p=>{f.error&&d.error(p.name,p.message,p.stack??"")}),F.on("upgrade",Ce)})}function _e(){F?.close(),f.silent||d.write("server:",d.blue(String(E)),d.yellow("- shutdown"))}function bt(e,t){f.error&&console.trace("[SERVER]",e),e instanceof C?t.statusCode=e.status:t.statusCode=500,typeof e=="string"?t.write(e):e&&typeof e=="object"&&"message"in e?t.write(e.message):t.write("something went wrong"),t.end()}function xt(){let e=ht.watch(k.root.location,{ignored:r=>r.includes("/node_modules/")||r.includes("/.temp/")||r.includes("/.vscode/")||r.includes("/.github/")||r.includes("/.git/")||r.includes("/lib/")||/\/tests?\//.test(r),persistent:!0,followSymlinks:!1}),t=!1;e.on("ready",()=>{t=!0});let o=!1,i=async r=>{o=!0;try{await yt(f.instance,r,(n,s)=>{s==="success"?(f.info&&d.write(d.blue("rebuilt"),r.name),te(r)):s==="skipped"?f.info&&d.write(d.blue("skipped"),r.name):f.info&&d.error(r.name)})}catch(n){f.error&&d.error(n)}finally{o=!1}};e.on("all",(r,n,s)=>{if(!t||o)return;let a={absolute:n,relative:v.relative(k.root.location,n)},m=T(a);a.relative.includes(m.sourceFolder+"/")?i(m):te(m),f.debug&&console.log("SERVER LIVE RELOAD",{url:a,package:{name:m.name,location:m.location,src:m.sourceFolder},includes:a.relative.includes(m.sourceFolder+"/")})})}import Ie from"node:fs";import P from"node:path";import{Information as Ne}from"@papit/information";import{pathToFileURL as vt}from"node:url";function Me(e,t,o){Fe(e.name,e.location,e.packageJSON,t);for(let i in e.packageJSON.dependencies){if(i.startsWith(Ne.scope)||["chokidar","esbuild","@microsoft/api-extractor","typescript","playwright"].includes(i))continue;let r=P.join(Ne.root.location,"node_modules",i),n=P.join(r,"package.json");if(!Ie.existsSync(n))continue;let s=JSON.parse(Ie.readFileSync(n,{encoding:"utf-8"}));Fe(i,r,s,t,!0)}}function Fe(e,t,o,i,r=!1){let n=(s,a)=>{i.imports[s]||(i.imports[s]=vt(a).pathname)};if(o.exports)if(typeof o.exports=="string")n(e,P.resolve(t,o.exports));else for(let s in o.exports){let a=o.name;s!=="."&&s!=="default"&&(a+="/"+s.replace(/^\.?\/?/,""));let m=typeof o.exports[s]=="string"?o.exports[s]:o.exports[s]?.import;m&&n(a,P.resolve(t,m))}o.main&&n(e,P.resolve(t,o.main))}async function ze(){let e=we(import.meta.url);e==null&&(Be.error("script location of @papit/server is missing"),process.exit(1)),S.package.packageJSON||(Be.error("location is not a package, missing package.json"),process.exit(1));let o={data:{},map:{}},i={},r=ue();await K(e,o,i,r);let n={imports:{}},s=new Map,a=null;S.root.location===S.package.location?a=oe.join(S.root.location,"node_modules"):a=oe.join(S.package.location,J.string("import-map")??".temp/dependencies");let m=!1;a&&!re.existsSync(a)&&(m=!0,re.mkdirSync(a,{recursive:!0})),S.package.location!==S.root.location&&J.set("ancestors",!0);let p=S.getBatches();for(let u of p)for(let l of u){if(l.packageJSON.papit.type==="theme"){let b=l.entrypoints.entries.theme?.import?.output??l.entrypoints.entries.bundle?.import?.output;b&&s.set(l.name,b);continue}a&&Me(l,n,a),!(!J.has("include-node")&&l.packageJSON.papit.type==="node")&&await K(l.location,o,i,r)}let c=()=>{a&&m&&!J.has("import-map")&&re.rmSync(oe.join(S.package.location,".temp"),{force:!0,recursive:!0}),console.log(),_e(),process.exit(0)};process.on("SIGINT",c),process.on("SIGTERM",c),process.on("SIGHUP",c),await je(e,o,i,n,s)}(async function(){ze()})();
@@ -0,0 +1,35 @@
1
+ import { Duplex } from 'node:stream';
2
+ import http from 'node:http';
3
+ import { PackageNode } from '@papit/information';
4
+
5
+ declare function close_2(): void;
6
+ export { close_2 as close }
7
+
8
+ export declare function error(filename: string, errors: any[]): void;
9
+
10
+ export declare let server: null | http.Server;
11
+
12
+ export declare function setup(): Promise<void>;
13
+
14
+ export declare function start(serverPackageLocation: string, translations: Translations, assets: Record<string, string[]>, importmap: {
15
+ imports: Record<string, string>;
16
+ }, themes: Map<string, string>): Promise<void>;
17
+
18
+ declare type Translation = {
19
+ meta: {
20
+ region: string;
21
+ language: string;
22
+ };
23
+ [key: string]: unknown;
24
+ };
25
+
26
+ declare type Translations = {
27
+ data: Record<string, Translation>;
28
+ map: Record<string, string>;
29
+ };
30
+
31
+ export declare function update(node: PackageNode): void;
32
+
33
+ export declare function upgrade(this: http.Server, req: http.IncomingMessage, socket: Duplex, head: Buffer): void;
34
+
35
+ export { }
package/lib/bundle.js ADDED
@@ -0,0 +1,4 @@
1
+ import re from"node:path";import ne from"node:fs";import{Arguments as G}from"@papit/arguments";import{Terminal as Be}from"@papit/terminal";import{Information as T}from"@papit/information";import K from"node:path";import Z from"node:fs";import ze from"node:fs";import B from"node:path";import{deepMergeTwo as He}from"@papit/deep-merge";function ie(e,o,t){let i=JSON.parse(ze.readFileSync(o,{encoding:"utf-8"})),r=i?.meta?.language??B.basename(o,".json");t.data[r]||(t.data[r]={meta:i.meta}),t.data[r]=He(t.data[r],i,["meta"]);let s=B.relative(e,o).split(B.sep);for(;s.length>0;){let a="/"+s.join("/");t.map[a]=r,s.shift()}}function se(e){if(!e.endsWith(".json"))return!1;let o=B.basename(B.dirname(e));return/^(transl|locale|i18)/i.test(o)}import L from"node:path";var R=class extends Error{constructor(o,t){super(o,t),this.name="http-error"}},z=class extends R{constructor(o,t){super(o??"internal server error",t),this.name="Internal Server Error",this.status=500}},x=class extends R{constructor(o,t){super(o??"not found",t),this.name="Not Found",this.status=404}},D=class extends R{constructor(o,t){super(o??"method not allowed",t),this.name="Method not allowed",this.status=405}};import X from"node:fs";import Oe from"node:path";import{Arguments as De}from"@papit/arguments";import{Arguments as ae}from"@papit/arguments";var y=class{static{this.MimeTypes={".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".mjs":"text/javascript",".ts":"text/typescript",".tsx":"text/typescript",".jsx":"text/javascript",".json":"application/json",".xml":"application/xml",".txt":"text/plain",".md":"text/markdown",".markdown":"text/markdown",".csv":"text/csv",".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".ico":"image/x-icon",".bmp":"image/bmp",".tiff":"image/tiff",".tif":"image/tiff",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".m4a":"audio/mp4",".mp4":"video/mp4",".webm":"video/webm",".ogv":"video/ogg",".avi":"video/x-msvideo",".mov":"video/quicktime",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".7z":"application/x-7z-compressed",".rar":"application/vnd.rar"}}static{this._MAX_CACHE_SIZE=50*1024*1024}static{this._MAX_FILE_SIZE_TO_CACHE=1024*1024}static{this.BinaryExtensions=new Set([".png",".jpg",".jpeg",".gif",".ico",".webp",".bmp",".tiff",".tif",".woff",".woff2",".ttf",".otf",".eot",".mp3",".wav",".ogg",".m4a",".mp4",".webm",".ogv",".avi",".mov",".zip",".tar",".gz",".7z",".rar",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx"])}static get MAX_CACHE_SIZE(){return ae.number("MAX_CACHE_SIZE")??this._MAX_CACHE_SIZE}static get MAX_FILE_SIZE_TO_CACHE(){return ae.number("MAX_FILE_SIZE_TO_CACHE")??this._MAX_FILE_SIZE_TO_CACHE}};import Ue from"node:path";import ce from"node:fs";import{Arguments as me}from"@papit/arguments";import{Terminal as Pe}from"@papit/terminal";async function pe(e,o,t){return new Promise((i,r)=>{let s=y.BinaryExtensions.has(Ue.extname(e))?ce.createReadStream(e,{signal:t}):ce.createReadStream(e,{signal:t,encoding:"utf-8"});s.pipe(o),s.on("error",a=>{me.error&&Pe.error("streaming error",e),me.verbose&&console.trace(a),r(new x(a.message))}),s.on("close",i)})}function H(e,o,t,i){if(!X.existsSync(e.absolute))throw new x(`${e.relative} not found`);let r=Oe.extname(e.absolute),n=X.statSync(e.absolute);if(!o.isCacheable(n.size,r))return pe(e.absolute,t,i),"streamed";let s=y.MimeTypes[r]??"text/plain",a=X.readFileSync(e.absolute),m={mimeType:s,buffer:a,mtime:n.mtimeMs};return De.has("no-cache")&&o.add(e,a,s,m.mtime),m}function le(e,o,t){let r=L.relative(e,o).split(L.sep);for(;r.length>0;){let n=L.join(L.sep+r.join(L.sep));t[n]||(t[n]=[]),t[n].push(o),r.shift()}}async function fe(e,o,t,i,r,n){let s=L.normalize(e);if(o.map[s]){let m=o.map[s];if(m)return{mimeType:"application/json",buffer:Buffer.from(JSON.stringify(o.data[m]))}}let a=[...t[s]];for(;a.length>0;){let m=a.pop();try{return H({absolute:L.normalize(m),relative:s},i,r,n)}catch{}}throw new x(`asset "${s}" not found`)}import{Arguments as ue}from"@papit/arguments";function de(){let e=["asset","assets","public"];if(ue.has("asset")){let o=ue.get("asset");e.push(...o)}return e}var $e=new Set(["node_modules",".git",".temp","lib","dist","src","explorer-icons"]);async function V(e,o,t,i){let r=ge(e,(n,s,a)=>{if($e.has(n))return!1;if(!a){if(K.dirname(s)===e)return!1;let m=s.split(K.sep);if(!i.some(p=>m.includes(p)))return!1}return!0});for(let n of r)se(n)?ie(e,n,o):le(e,n,t)}function ge(e,o,t=0){if(!Z.existsSync(e)||t>10)return[];let i=[],r=Z.readdirSync(e);for(let n of r){let s=K.join(e,n),m=Z.statSync(s).isDirectory();o&&!o(n,s,m)||(m?i.push(...ge(s,o,t+1)):i.push(s))}return i}import gt from"node:http";import Le from"node:fs";import w from"node:path";import ht from"chokidar";import{Information as A}from"@papit/information";import{Arguments as f}from"@papit/arguments";import{Terminal as d}from"@papit/terminal";import Te from"node:path";import Y from"node:fs";import W from"node:path";import ye from"node:fs";import{Document as Xe}from"@papit/html";import{Arguments as Ze}from"@papit/arguments";import{Terminal as Ke}from"@papit/terminal";import{Document as We}from"@papit/html";import Je from"node:path";import Q from"node:fs";import{Arguments as he}from"@papit/arguments";import{Terminal as Ge}from"@papit/terminal";function $(e,o){let t=new We,i=`${e}-template`,r=Je.join(o,"asset","templates",e,"index.html"),n=he.string(i);if(n&&Q.existsSync(n)&&(r=n),!Q.existsSync(r))return he.error&&Ge.error(`could not find ${e} template html file`),t.innerHTML='<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>@papit/server</title><meta name="description" content="Development server" /><meta name="color-scheme" content="light dark" /></head><body>Llama Trauma Baby Mama</body></html>',t;let s=Q.readFileSync(r,{encoding:"utf-8"});return t.innerHTML=s,t}function be(e,o,t,i){let r=$("explorer",i);r.title=e.packageJSON.name;let n=Ze.string("explorer-spritesheet")??W.join(i,"asset/icons/explorer-spritesheet.svg"),s=ye.readFileSync(n,{encoding:"utf-8"}),a=new Xe;a.innerHTML=s,a.documentElement||(Ke.error("something went wrong loading explorer icon spritesheet"),process.exit(1)),a.documentElement.setAttribute("style","display:none"),r.body?.appendChild(a.documentElement);let m=r.querySelector("[data-location]"),p=W.relative(e.location,t.absolute);p?m.innerHTML=p:m.parentElement?.removeChild(m);let c=r.querySelector("ul[data-folders]"),u=r.querySelector("ul[data-files]");return t.relative!==""&&(c.innerHTML='<li class="hidden"><a href=".."><svg><use href="#folder" /></svg><span class="name">..</span></a></li>'),o.sort((l,b)=>l.localeCompare(b)).forEach(l=>{let b=W.join(t.absolute,l),_=ye.statSync(b),S=r.createElement("li");S.innerHTML=`<a href="${l}"><svg><use href="" /></svg><span class="name">${l}</span></a>`;let g=S.querySelector("a"),I=g.querySelector("use");if(!l.startsWith(".env")&&!l.startsWith(".git")&&l.startsWith(".")&&S.classList.add("hidden"),_.isFile()){I?.setAttribute("href","#"+Ve(b,r)),u.appendChild(S);return}_.isDirectory()&&(I?.setAttribute("href","#"+Qe(b,r)),g.setAttribute("href",l+"/"),c.appendChild(S))}),r}function Ve(e,o){let t=W.basename(e),i=t.split(".");t.startsWith(".")&&i.shift();let r=i.at(0)??t,n;if(t.startsWith(".git")||/\.git/.test(e))n="git";else if(t==="package.json")n="package";else if(t.startsWith("tsconfig"))n="tsconfig";else if(r.startsWith("eslint"))n="eslint";else if(/translation/.test(e)){if(o.querySelector("symbol#"+r))return r;n="language"}else/\.vscode/.test(e)&&(n="vscode");if(o.querySelector("symbol#"+n))return n;let s=i.slice(i.length-2).join("_");if(o.querySelector("symbol#"+s))return s;let a=i.pop()??t;return o.querySelector("symbol#"+a)?a:"file"}function Qe(e,o){return"folder"}import Ye from"node:fs";import{Document as qe,Element as et}from"@papit/html";import{Terminal as xe}from"@papit/terminal";function ve(e,o,t,i){let r=$("live",i);r.body||(xe.error("live document template is missing body"),process.exit(1)),r.head||(xe.error("live document template is missing head"),process.exit(1));let n=new qe,s=Ye.readFileSync(o.absolute,{encoding:"utf-8"});if(n.innerHTML=s,n.head&&[...n.head.childNodes].forEach(c=>tt(c,r.head)),n.body&&[...n.body.childNodes].forEach(c=>r.body?.appendChild(c)),n.body?.classList)for(let c of n.body?.classList)r.body.classList.add(c);if(n.body?.attributes)for(let c in n.body?.attributes){if(c==="class"||n.body.hasAttribute(c))continue;let u=n.body.getAttribute(c);u===!0?n.body.toggleAttribute(c):n.body.setAttribute(c,u)}let a=r.head.querySelector("script"),m=r.head.querySelector('script[type="importmap"]');m||(m=r.createElement("script"),m.setAttribute("type","importmap"));let p=JSON.parse(m.textContent||"{}");return p.imports||(p.imports={}),p.imports={...p.imports,...t.imports},m.textContent=JSON.stringify(p),a?a!==m&&r.head.insertBefore(m,a):r.head.appendChild(m),r}function tt(e,o){if(e instanceof et){let t=`${e.tagName}${e.className?"."+e.className:""}${e.id?"#"+e.id:""}${Array.from(e.attributes).map(([r,n])=>`[${r}${typeof n=="string"?`="${n}"`:""}]`).join("")}`,i=o.querySelector(t);if(i){o.replaceChild(e,i);return}}o.appendChild(e)}import{fileURLToPath as ot}from"node:url";import h from"node:path";import U from"node:fs";import{Information as j,PackageGraph as rt}from"@papit/information";import{Arguments as nt}from"@papit/arguments";function we(e){process.platform==="win32"&&e.url&&/^\/[A-Za-z]:/.test(e.url)&&(e.url=e.url.slice(1).replace(/\//g,"\\"));let t=(()=>{if(e.url&&U.existsSync(e.url)&&U.statSync(e.url).isFile())return{absolute:e.url,relative:h.relative(e.url,j.package.location)};let i=[nt.string("folder"),e.url].filter(n=>n!==void 0),r=[j.local,j.package.location,j.root.location];for(let n of r){let s=h.join(n,...i);if(U.existsSync(s))return{absolute:s,relative:h.relative(n,s)||h.relative(j.package.location,j.local)||h.sep}}return{absolute:h.join(j.package.location,e.url??h.sep),relative:e.url??h.sep}})();return t.absolute.endsWith(h.sep)&&(t.absolute=t.absolute.slice(0,t.absolute.length-1)),{absolute:h.normalize(t.absolute),relative:h.normalize(t.relative)}}function Se(e){let t=ot(e);for(let i=0;i<5;i++)if(t=h.dirname(t),!!U.existsSync(h.join(t,"package.json")))return t;return null}function it(e){let o=e;for(;o!=="/"&&!U.existsSync(h.join(o,"package.json"));)o=h.dirname(o);return o}function E(e){let o=it(e.absolute);if(!o)throw new z(`could not find package at 1: ${o}`);let t=rt.search(o);if(!t)throw new z(`could not find package at 2: ${o}`);return t}async function Ee(e,o,t,i,r){let n=E(e),s=e.absolute.endsWith(".html")?e:{absolute:Te.join(e.absolute,"index.html"),relative:Te.join(e.relative,"index.html")},a,m=null;if(Y.existsSync(s.absolute))m=Y.statSync(s.absolute).mtimeMs,a=ve(n,s,t,i);else{let p=Y.readdirSync(e.absolute);a=be(n,p,e,i)}return r.add(e,Buffer.from(a.innerHTML,"utf8"),y.MimeTypes[".html"],m),a}import st from"node:fs";import{jsBundle as at}from"@papit/bundle-js";import{Arguments as ct}from"@papit/arguments";async function ke(e,o){let t=E(e),i;if(await at(ct.instance,t.location,{entryPointArray:[{input:e.absolute,output:void 0}],tsconfig:t?.tsconfig,externals:t?.externals,packageJSON:t?.packageJSON,esoptions:{write:!1}},r=>{r.type==="build"&&(i=r.result.outputFiles?.at(0)?.text)}),!i)throw new x("file not found: "+e.relative);return o.add(e,Buffer.from(i,"utf8"),y.MimeTypes[".js"],st.statSync(e.absolute)?.mtimeMs??null),i}import q from"node:fs";import{Arguments as ee}from"@papit/arguments";import{Terminal as N}from"@papit/terminal";var F=class{constructor(o){this.map=new Map;this._size=0;this.name="cache";this._maxSize=y.MAX_FILE_SIZE_TO_CACHE;o&&(this.name=o)}get size(){return this._size}get maxSize(){return this._maxSize}set maxSize(o){this._maxSize=o*1024*1024}get(o){let t=this.map.get(o.absolute);return!t||!q.existsSync(o.absolute)?null:t.mtime===null||q.statSync(o.absolute).mtimeMs===t.mtime?t:(this.delete(o),null)}delete(o,t=!1){let i=this.map.get(o.absolute);i&&(ee.verbose&&!t&&N.write(N.yellow(o.relative),"removed from cache:"+N.blue(this.name)),this._size-=i.buffer.length,this.map.delete(o.absolute))}clear(){this.map.clear(),this._size=0}add(o,t,i,r){ee.has("no-cache")||(this.delete(o,!0),this._size+=t.length,ee.verbose&&N.write(N.yellow(o.relative),"added to cache:"+N.blue(this.name)),this.map.set(o.absolute,{mimeType:i??y.MimeTypes[o.absolute]??"text/plain",buffer:t,mtime:r===void 0?q.statSync(o.absolute).mtimeMs:r}))}isCacheable(o,t){return!(o>this.maxSize||[".mp4",".webm",".ogv",".avi",".mov"].includes(t))}};import{createHash as mt}from"node:crypto";import Ce from"node:path";import{Arguments as P}from"@papit/arguments";import{Terminal as k}from"@papit/terminal";import{Information as J}from"@papit/information";var v=new Map;function Ae(e,o,t){let i=e.headers["sec-websocket-key"],n=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${mt("sha1").update(i+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64")}`];o.write(n.join(`\r
2
+ `)+`\r
3
+ \r
4
+ `),P.info&&k.write(k.blue("client connected")),o.on("end",()=>v.delete(o)),o.on("close",()=>v.delete(o)),o.on("error",s=>{s.code==="ECONNRESET"&&v.delete(o)}),o.on("data",s=>{try{let a=lt(s);switch(a.opcode){case 1:let m=a.payload.toString("utf8");try{let c=JSON.parse(m);if(c.type==="register"){let u=E({relative:c.location,absolute:Ce.join(J.root.location,c.location)});u.name===J.root.name&&(u=J.package),v.set(o,u)}}catch{}break;case 8:o.end();break;case 9:let p=oe({type:"pong"});o.write(p);break;default:console.log("Unknown opcode:",a.opcode)}}catch(a){console.error("Error parsing WebSocket frame:",a)}})}function te(e){try{if(v.size===0){P.verbose&&k.write("No clients connected to send update!");return}let o=oe({action:"update",filename:"/"+Ce.relative(J.root.location,e.location)});v.forEach((t,i)=>{if(!(t.name!==e.name&&!e?.descendants.some(r=>r.name===t.name))){if(!i||!i.writable){P.verbose&&k.error(k.blue("socket"),"[error] could not find client"),v.delete(i);return}i.write(o)}})}catch(o){console.log("[socket error]",o)}}function rr(e,o){v.size===0&&P.verbose&&k.write("No clients connected to send error!");let t=oe({action:"error",filename:e,error:o});pt(t)}function pt(e){v.forEach((o,t)=>{if(!t||!t.writable){P.verbose&&k.error(k.blue("socket"),"[error] could not find client"),v.delete(t);return}t.write(e)})}function oe(e){let o=Buffer.from(JSON.stringify(e),"utf8"),t=o.length,i=2;t>125&&t<=65535?i+=2:t>65535&&(i+=8);let r=Buffer.alloc(i+t);r[0]=129;let n=2;return t<=125?r[1]=t:t<=65535?(r[1]=126,r.writeUInt16BE(t,n),n+=2):(r[1]=127,r.writeBigUInt64BE(BigInt(t),n),n+=8),o.copy(r,n),r}function lt(e){let o=e[0],t=e[1],i=(o&128)!==0,r=o&15,n=(t&128)!==0,s=t&127,a=2;if(s===126?(s=e.readUInt16BE(a),a+=2):s===127&&(s=Number(e.readBigUInt64BE(a)),a+=8),!n)throw new Error("Expected masked frame from client");let m=e.slice(a,a+4);a+=4;let p=e.slice(a,a+s),c=Buffer.alloc(s);for(let u=0;u<s;u++)c[u]=p[u]^m[u%4];return{opcode:r,payload:c}}import ft from"node:net";import{Terminal as ut}from"@papit/terminal";function dt(e,o="0.0.0.0"){return new Promise(t=>{let i=ft.createServer().once("error",()=>t(!1)).once("listening",()=>{i.close(()=>t(!0))}).listen(e,o)})}async function Re(e,o=20){for(let t=0;t<o;t++){let i=e+t;if(await dt(i))return i}ut.error(`No free ports found in range [${e}, ${e+o}]`),process.exit(1)}import{build as yt}from"@papit/build";var C=f.number("port")||3e3,M=null;function je(e,o,t,i,r){return C=f.number("port")||3e3,new Promise(async n=>{C=await Re(C),M=gt.createServer();let s=new F("file");s.maxSize=f.number("cache-file")??50;let a=new F("html");a.maxSize=f.number("cache-html")??50;let m=new F("bundle");m.maxSize=f.number("cache-bundle")??150,f.has("live")&&xt(),A.packageName!=="@papit/server"&&!f.has("serve")&&(f.info&&d.write(d.blue("listening to file changes"),A.package.name),f.set("no-bundle",!0),f.set("live",!0),f.set("location",A.package.location),f.set("mode","dev"),f.set("buildMode","ancestors")),M.listen(C,()=>{if(f.set("port",C),f.silent||d.write("server:",d.blue(C),d.yellow("- running")),f.has("open")){let p=w.join(`http://localhost:${C}`,w.relative(A.root.location,A.package.location)),c=w.join(p,f.string("open")??f.string("folder")??"");switch(process.platform){case"win32":d.execute(`start "${c}"`,p);break;case"darwin":d.execute(`open "${c}"`,p);break;case"linux":d.execute(`xdg-open "${c}"`,p);break}}n()}),M.on("request",async(p,c)=>{try{if(p.method!=="GET")throw c.setHeader("Allow","GET"),new D;if(p.url?.startsWith("/.well-known"))return c.end("ok");p.url?.endsWith("/favicon.ico")&&(p.url="/favicon.svg");try{let g=await fe(p.url,o,t,s,c);if(g==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",g.mimeType),c.end(g.buffer);return}catch{}let u=p.url?.split("@")?.at(1);if(u){let g=r.get("@"+u);if(g){let I=H({absolute:w.normalize(g),relative:w.normalize(w.relative(A.root.location,g))},s,c);if(I==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",I.mimeType),c.end(I.buffer);return}}let l=we(p),b=Le.statSync(l.absolute);if(b.isDirectory()){let g=w.join(l.absolute,"index.html");Le.existsSync(g)&&(l.absolute=g,l.relative=w.join(l.relative,"index.html"))}let _=a.get(l)??m.get(l)??s.get(l);if(_)return f.info&&d.write(d.yellow(l.relative),"found in cache"),c.statusCode=200,c.setHeader("Content-Type",_.mimeType),c.setHeader("X-Cache","HIT"),c.end(_.buffer);if(c.setHeader("X-Cache","MISS"),b.isDirectory()||w.extname(l.absolute)===".html"){let g=await Ee(l,t,i,e,a);c.statusCode=200,f.has("prod")||c.setHeader("Cache-Control","no-store"),c.end(g.outerHTML);return}if(/\.tsx?/.test(l.absolute)&&(p.headers.referer?.endsWith(".js")||p.headers["sec-fetch-dest"]==="script")){let g=await ke(l,m);c.statusCode=200,c.setHeader("Content-Type","text/javascript"),c.end(g);return}let S=H(l,s,c);if(S==="streamed")return;c.statusCode=200,c.setHeader("Content-Type",S.mimeType),c.end(S.buffer)}catch(u){bt(u,c)}}),M.on("error",p=>{f.error&&d.error(p.name,p.message,p.stack??"")}),M.on("upgrade",Ae)})}function _e(){M?.close(),f.silent||d.write("server:",d.blue(String(C)),d.yellow("- shutdown"))}function bt(e,o){f.error&&console.trace("[SERVER]",e),e instanceof R?o.statusCode=e.status:o.statusCode=500,typeof e=="string"?o.write(e):e&&typeof e=="object"&&"message"in e?o.write(e.message):o.write("something went wrong"),o.end()}function xt(){let e=ht.watch(A.root.location,{ignored:r=>r.includes("/node_modules/")||r.includes("/.temp/")||r.includes("/.vscode/")||r.includes("/.github/")||r.includes("/.git/")||r.includes("/lib/")||/\/tests?\//.test(r),persistent:!0,followSymlinks:!1}),o=!1;e.on("ready",()=>{o=!0});let t=!1,i=async r=>{t=!0;try{await yt(f.instance,r,(n,s)=>{s==="success"?(f.info&&d.write(d.blue("rebuilt"),r.name),te(r)):s==="skipped"?f.info&&d.write(d.blue("skipped"),r.name):f.info&&d.error(r.name)})}catch(n){f.error&&d.error(n)}finally{t=!1}};e.on("all",(r,n,s)=>{if(!o||t)return;let a={absolute:n,relative:w.relative(A.root.location,n)},m=E(a);a.relative.includes(m.sourceFolder+"/")?i(m):te(m),f.debug&&console.log("SERVER LIVE RELOAD",{url:a,package:{name:m.name,location:m.location,src:m.sourceFolder},includes:a.relative.includes(m.sourceFolder+"/")})})}import Ie from"node:fs";import O from"node:path";import{Information as Ne}from"@papit/information";import{pathToFileURL as vt}from"node:url";function Me(e,o,t){Fe(e.name,e.location,e.packageJSON,o);for(let i in e.packageJSON.dependencies){if(i.startsWith(Ne.scope)||["chokidar","esbuild","@microsoft/api-extractor","typescript","playwright"].includes(i))continue;let r=O.join(Ne.root.location,"node_modules",i),n=O.join(r,"package.json");if(!Ie.existsSync(n))continue;let s=JSON.parse(Ie.readFileSync(n,{encoding:"utf-8"}));Fe(i,r,s,o,!0)}}function Fe(e,o,t,i,r=!1){let n=(s,a)=>{i.imports[s]||(i.imports[s]=vt(a).pathname)};if(t.exports)if(typeof t.exports=="string")n(e,O.resolve(o,t.exports));else for(let s in t.exports){let a=t.name;s!=="."&&s!=="default"&&(a+="/"+s.replace(/^\.?\/?/,""));let m=typeof t.exports[s]=="string"?t.exports[s]:t.exports[s]?.import;m&&n(a,O.resolve(o,m))}t.main&&n(e,O.resolve(o,t.main))}async function Xr(){let e=Se(import.meta.url);e==null&&(Be.error("script location of @papit/server is missing"),process.exit(1)),T.package.packageJSON||(Be.error("location is not a package, missing package.json"),process.exit(1));let t={data:{},map:{}},i={},r=de();await V(e,t,i,r);let n={imports:{}},s=new Map,a=null;T.root.location===T.package.location?a=re.join(T.root.location,"node_modules"):a=re.join(T.package.location,G.string("import-map")??".temp/dependencies");let m=!1;a&&!ne.existsSync(a)&&(m=!0,ne.mkdirSync(a,{recursive:!0})),T.package.location!==T.root.location&&G.set("ancestors",!0);let p=T.getBatches();for(let u of p)for(let l of u){if(l.packageJSON.papit.type==="theme"){let b=l.entrypoints.entries.theme?.import?.output??l.entrypoints.entries.bundle?.import?.output;b&&s.set(l.name,b);continue}a&&Me(l,n,a),!(!G.has("include-node")&&l.packageJSON.papit.type==="node")&&await V(l.location,t,i,r)}let c=()=>{a&&m&&!G.has("import-map")&&ne.rmSync(re.join(T.package.location,".temp"),{force:!0,recursive:!0}),console.log(),_e(),process.exit(0)};process.on("SIGINT",c),process.on("SIGTERM",c),process.on("SIGHUP",c),await je(e,t,i,n,s)}export{_e as close,rr as error,M as server,Xr as setup,je as start,te as update,Ae as upgrade};
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@papit/server",
3
+ "description": "a simple but powerful dev server that can locate locale assets and package and even dependency assets",
4
+ "keywords": [
5
+ "papit",
6
+ "node",
7
+ "typescript",
8
+ "dev-server"
9
+ ],
10
+ "version": "1.0.0",
11
+ "scripts": {
12
+ "build": "npx @papit/build -- --error --ancestors",
13
+ "watch": "tsc -w",
14
+ "start": "npx @papit/build -- --no-install --info --live --execute ./lib/bundle.js",
15
+ "test": "node --test tests/**/*.test.js",
16
+ "preversion": "papit-version",
17
+ "postversion": "papit-version",
18
+ "component": "npm create @papit -- --component",
19
+ "generate-explorer-icons": "npx @papit/svg-spritesheet --input ./explorer-icons --output ./asset/icons/explorer-spritesheet.svg"
20
+ },
21
+ "bin": {
22
+ "papit-server": "./lib/bin.js"
23
+ },
24
+ "main": "./lib/bundle.js",
25
+ "types": "./lib/bundle.d.ts",
26
+ "type": "module",
27
+ "files": [
28
+ "asset/",
29
+ "lib/"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "import": "./lib/bundle.js",
34
+ "types": "./lib/bundle.d.ts"
35
+ }
36
+ },
37
+ "author": "henry",
38
+ "private": false,
39
+ "publishConfig": {
40
+ "access": "public",
41
+ "registry": "https://registry.npmjs.org/"
42
+ },
43
+ "license": "LicenseRef-Papit-1.0",
44
+ "homepage": "https://github.com/onkelhoy/papit/tree/main/packages/network/dev-server",
45
+ "bugs": {
46
+ "url": "https://github.com/onkelhoy/papit/issues"
47
+ },
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://github.com/onkelhoy/papit.git",
51
+ "directory": "packages/network/dev-server"
52
+ },
53
+ "sideEffects": true,
54
+ "engines": {
55
+ "node": ">=18"
56
+ },
57
+ "dependencies": {
58
+ "@papit/arguments": "0.0.1",
59
+ "@papit/build": "0.0.1",
60
+ "@papit/bundle-js": "0.0.2",
61
+ "@papit/deep-merge": "0.0.1",
62
+ "@papit/html": "0.0.1",
63
+ "@papit/information": "0.0.1",
64
+ "@papit/terminal": "0.0.1",
65
+ "chokidar": "^5.0.0",
66
+ "esbuild": "0.27.2"
67
+ },
68
+ "devDependencies": {
69
+ "@types/node": "22.10.2",
70
+ "typescript": "5.9.3"
71
+ },
72
+ "browserslist": [
73
+ "defaults",
74
+ "not IE 11",
75
+ "not dead"
76
+ ],
77
+ "papit": {
78
+ "publish": true,
79
+ "priority": 5,
80
+ "type": "node",
81
+ "main": "server",
82
+ "components": {
83
+ "socket": {
84
+ "className": "Socket"
85
+ },
86
+ "request": {
87
+ "className": "Request"
88
+ },
89
+ "server": {
90
+ "className": "Server"
91
+ },
92
+ "translation": {
93
+ "className": "Translation"
94
+ },
95
+ "util": {
96
+ "className": "Util"
97
+ }
98
+ }
99
+ }
100
+ }