openvibers/openvibe.shared glyphs.js

glyphs.js

main 94.6 KB · 663 lines · javascript

1/**
2 * openvibe-shared/glyphs.js — the OpenVibe glyphs: one registry for every icon the network draws (plan L32; the owner,
3 * 2026-10-31: "our own custom icon system… replace Font Awesome… with our own… through openvibe.design").
4 *
5 * One hand for all of them, the mark's: a 24-unit grid, 2-unit round strokes, nothing filled but a dot. The kit's icons
6 * (kit.js) are the first of them; the drawings below fill in what the network asked Font Awesome for most, and FA
7 * maps every Font Awesome name in use to the glyph that stands for it, so a page can drop Font Awesome as soon as its
8 * names are covered. Brand logos (GitHub, YouTube, Discord…) are not ours to redraw and stay as they are.
9 *
10 * const glyphs = require('openvibe-shared/glyphs');
11 * glyphs.NAMES every glyph's name
12 * glyphs.path(name) its drawing (the inside of a 24-unit SVG), or ''
13 * glyphs.svg(name, { size, title, style }) a standalone SVG, or ''
14 * glyphs.fromFa('fa-tower-broadcast') → 'live' the glyph for a Font Awesome name (with or without fa-), or null
15 * glyphs.markup('live', { title, cls }) <i data-ov-icon="live">, OpenVibe's own markup (4.231.0)
16 * glyphs.fromFaClasses('fa-solid fa-eye me-2') { icon: 'eye', cls: ['ovg-fill', 'me-2'], … } (scripts/fa-to-ov.js)
17 * glyphs.FA { 'tower-broadcast': 'live', … }
18 * glyphs.META[name] { by, tags } who drew it and what it is for (openvibe.design/icons)
19 *
20 * In a page, ov-glyphs.js (built from this file by scripts/build-glyphs.js) swaps <i class="fa-… fa-x"> for the glyph,
21 * in place, and leaves a name it does not know to Font Awesome.
22 */
23(function (root, factory) {
24 const api = factory(typeof module === 'object' && module.exports ? require('./kit') : root.OpenVibeKit);
25 if (typeof module === 'object' && module.exports) { module.exports = api; return; }
26 root.OpenVibeGlyphs = api;
27})(typeof globalThis !== 'undefined' ? globalThis : this, function (kit) {
28 'use strict';
29 // ── The drawings that join the kit's: 24-unit grid, strokes only (round caps and joins), a dot is a 0.01 line ──
30 const DRAWN = {
31 scissors: '<circle cx="6" cy="7" r="2.6"/><circle cx="6" cy="17" r="2.6"/><path d="M8.2 8.6 20 18M8.2 15.4 20 6"/>',
32 tree: '<path d="M12.1 3.6L7 10.6h2.8L5.6 16.6h13l-4.2-6h2.8ZM12.1 16.6v3.7"/>',
33 pin: '<path d="M12 20.7s-6.2-5.4-6.2-10.5a6.2 6.2 0 0 1 12.4 0C18.2 15.2 12 20.7 12 20.7Z"/><circle cx="12" cy="10" r="2.3"/>',
34 volume: '<path d="M3.5 9.5h3.7L11.8 5.8v12.6l-4.7-3.7H3.5Z"/><path d="M15.5 9.5a3.7 3.7 0 0 1 0 5.2M18.1 6.9a7.3 7.3 0 0 1 0 10.5"/>',
35 mute: '<path d="M3.9 9.4h3.6L12.2 5.8v12.4l-4.6-3.6H3.9Z"/><path d="M16.3 9.9l4.1 4.1M20.5 9.9l-4.1 4.1"/>',
36 tent: '<path d="M3.5 18.4h17M12 4.9L4.8 18.4M12 4.9l7.2 13.4M12 12.5L9.3 18.4M12 12.5l2.7 5.8"/>',
37 food: '<path d="M8.2 4v6.5M6.3 4v4.2a1.9 1.9 0 0 0 3.7 0V4M8.2 10.5v10.2M17.5 20.8V4c-1.9 1.1-3 3.3-3 6.5v2.8H17.5"/>',
38 train: '<rect x="6.4" y="3.8" width="11.2" height="12.1" rx="2.8"/><path d="M6.4 10.3h11.2M9.2 13.1h0M14.8 13.1h0M8.7 20.5l1.9-3.3M15.3 20.5l-1.9-3.3"/>',
39 water: '<path d="M3.5 10.2c2.1 0 2.1-1.8 4.3-1.8s2.1 1.8 4.2 1.8s2.1-1.8 4.3-1.8s2.1 1.8 4.2 1.8M3.5 15.6c2.1 0 2.1-1.8 4.3-1.8s2.1 1.8 4.2 1.8s2.1-1.8 4.3-1.8s2.1 1.8 4.2 1.8"/>',
40 dish: '<path d="M3.8 9.2A10.9 10.9 0 0 0 14.8 20.2Z"/><path d="M9 15l5.2-5.2M14.8 3.4a5.8 5.8 0 0 1 5.8 5.8M14.8 7.5a1.8 1.8 0 0 1 1.8 1.8"/>',
41 history: '<path d="M3.8 12.1a8.3 8.3 0 1 0 2.5-5.9L3.8 8.5M3.8 4.2v4.2h4.2"/><path d="M12 7.9v4.3l3.1 1.9"/>',
42 film: '<rect x="3.5" y="4.4" width="17" height="15.1" rx="1.9"/><path d="M7.7 4.4v15.1M16.3 4.4v15.1M3.5 9.2h4.3M3.5 14.8h4.3M16.3 9.2H20.5M16.3 14.8H20.5"/>',
43 circle: '<circle cx="12" cy="12" r="8.5"/>',
44 sliders: '<path d="M3.5 6.8h10M18.7 6.8H20.3M3.5 17.2h3.6M12.4 17.2H20.3"/><circle cx="16.2" cy="6.8" r="2.4"/><circle cx="9.8" cy="17.2" r="2.4"/>',
45 leaf: '<path d="M3.8 20.1c0-9.5 5.6-15.2 16.7-16.7c-1 11.1-6.7 16.7-16.7 16.7ZM3.8 20.1l8.9-8.9"/>',
46 clipboard: '<rect x="5.7" y="5" width="12.6" height="15.5" rx="1.9"/><path d="M9.1 5V3.5h5.8V5M9.1 10.8h5.8M9.1 14.7h3.9"/>',
47 gauge: '<path d="M3.6 16.9a8.4 8.4 0 1 1 16.7 0"/><path d="M11.9 13.2l4.1-5.7"/><circle cx="11.9" cy="13.2" r="1.4"/>',
48 save: '<path d="M4.7 3.5h11.5l3.2 3.2v13.6H4.7Z"/><path d="M7.8 3.5v5.2h7.3V3.5M7.8 20.2v-6.3h8.4v6.3"/>',
49 plug: '<path d="M9.2 4v4.6M14.8 4v4.6M6.9 8.7h10.2v2.8a5.1 5.1 0 0 1-10.2 0ZM12 16.6V20.7"/>',
50 // 4.101.0: a jigsaw piece (a browser extension, an add-on, a plug-in), knobs out on top and right, notches in.
51 puzzle: '<path d="M3.8 7h4.2a2.6 2.6 0 1 1 4.8 0h4.2v4.2a2.6 2.6 0 1 1 0 4.8v4.2h-4.2a2.6 2.6 0 1 0-4.8 0H3.8v-4.2a2.6 2.6 0 1 0 0-4.8Z"/>',
52 compress: '<path d="M8.8 3.5v5.3H3.5M15.2 3.5v5.3h5.3M8.8 20.5v-5.3H3.5M15.2 20.5v-5.3h5.3"/>',
53 expand: '<path d="M3.5 8.8V3.5h5.3M20.5 8.8V3.5h-5.3M3.5 15.2v5.3h5.3M20.5 15.2v5.3h-5.3"/>',
54 care: '<path d="M12 10.6s-3.8-2.3-3.8-5a2.1 2.1 0 0 1 3.8-1.3a2.1 2.1 0 0 1 3.8 1.3c0 2.7-3.8 5-3.8 5Z"/><path d="M3.5 13.5v6.5M3.5 15h3.3l3.4 2.8h7.7a1.8 1.8 0 0 0 0-3.6h-4.1"/>',
55 city: '<path d="M3.5 19.7h17M5.4 19.7V8.3h4.7v11.3M10.1 19.7V3.6h5.7v16.1M15.8 19.7v-7.6h3.3v7.6M7.8 11.2h0M7.8 14.5h0M12.9 6.9h0M12.9 10.2h0M12.9 13.5h0"/>',
56 wrench: '<path d="M14.6 3.6a5.2 5.2 0 0 0-4.6 7.3L3.7 17.3V20.3h3.1l6.4-6.4a5.2 5.2 0 0 0 7.3-4.6l-3.2 1.2l-2.5-2.5l1.2-3.2Z"/>',
57 music: '<path d="M8.6 17.7V5.6l11.1-2.1v12.2"/><circle cx="6" cy="17.7" r="2.6"/><circle cx="17.2" cy="15.7" r="2.6"/>',
58 'eye-off': '<path d="M10.6 6.1c0.5-0.1 0.9-0.1 1.4-0.1c5.2 0 8.5 6 8.5 6s-0.6 1.1-1.7 2.4M6.9 7.6C4.7 9.2 3.5 12 3.5 12s3.3 6 8.5 6c1.6 0 3-0.5 4.2-1.2"/><path d="M10 10a2.8 2.8 0 0 0 4 4M4.5 4.5l15 15"/>',
59 plane: '<path d="M20 4L3.5 10.8l6.6 3.1l3.1 6.6Z"/><path d="M10.1 13.9l9.9-9.9"/>',
60 fire: '<path d="M12 20.5a6.8 6.8 0 0 0 6.8-6.8c0-4.3-2.9-6.8-4.2-10.1c-2 2.3-2.6 4.5-2.6 4.5S10.7 5.8 9.5 3.8C7 6.6 5.2 10 5.2 13.7a6.8 6.8 0 0 0 6.8 6.8Z"/>',
61 nodes: '<circle cx="12" cy="5.4" r="2.1"/><circle cx="5.8" cy="17.9" r="2.1"/><circle cx="18.2" cy="17.9" r="2.1"/><path d="M11 7.4L6.8 15.9M13 7.4l4.3 8.6M7.9 17.9h8.3"/>',
62 // Two towers, the cable between them and the deck (2026-11-11 review: the old one read as a bank).
63 bridge: '<path d="M3.5 16h17M7 19.5V5M17 19.5V5"/><path d="M3.5 10c1.8 0 2.8-2.3 3.5-5c2.4 5.2 7.6 5.2 10 0c.7 2.7 1.7 5 3.5 5"/><path d="M12 10.9V16"/>',
64 'check-circle': '<circle cx="12" cy="12" r="8.5"/><path d="m8 12.4 2.8 2.8L16 9.6"/>',
65 'x-circle': '<circle cx="12" cy="12" r="8.5"/><path d="m9 9 6 6M15 9l-6 6"/>',
66 'alert-circle': '<circle cx="12" cy="12" r="8.5"/><path d="M12 7.5v5.5M12 16.5h.01"/>',
67 news: '<path d="M3.5 3.5h13.8v14.9a2.1 2.1 0 0 0 2.1 2.1H5.6a2.1 2.1 0 0 1-2.1-2.1Z"/><path d="M17.3 7.7h3.2v10.6a2.1 2.1 0 0 1-2.1 2.1M7.2 7.7h6.4M7.2 11.5h6.4M7.2 15.2h3.7"/>',
68 camera: '<path d="M3.5 8h3.4l1.8-2.8h6.6L17.1 8h3.4v11.5h-17Z"/><circle cx="12" cy="13.3" r="3.4"/>',
69 crown: '<path d="M3.5 8.3L7.8 12L11.9 5.5l4.2 6.5l4.2-3.7L18.4 18.1H5.4Z"/>',
70 wallet: '<path d="M3.5 6.8A2.7 2.7 0 0 1 6.2 4.2H18.4v4.2M3.5 6.8V18a2.1 2.1 0 0 0 2.1 2.1h14.9V8.4H6.2A2.7 2.7 0 0 1 3.5 6.8Z"/><path d="M16.2 14.2h0"/>',
71 chip: '<rect x="7.3" y="7.3" width="9.4" height="9.4" rx="1.4"/><path d="M10.1 3.5v3.8M13.9 3.5v3.8M10.1 16.7v3.8M13.9 16.7v3.8M3.5 10.1h3.8M3.5 13.9h3.8M16.7 10.1h3.8M16.7 13.9h3.8"/>',
72 id: '<rect x="3.7" y="5.5" width="16.7" height="13" rx="1.9"/><circle cx="9.2" cy="11" r="1.9"/><path d="M6.4 15.6c0.5-1.4 1.6-2.2 2.8-2.2s2.4 0.8 2.8 2.2M14.8 10.1h2.8M14.8 13.4h2.8"/>',
73 brain: '<path d="M9.2 4.2a2.8 2.8 0 0 0-2.8 2.8a2.8 2.8 0 0 0-1.9 4.8a2.8 2.8 0 0 0 1.9 4.8a2.8 2.8 0 0 0 5.8 1.1V5.8A1.9 1.9 0 0 0 9.2 4.2ZM14.9 4.2a2.8 2.8 0 0 1 2.8 2.8a2.8 2.8 0 0 1 1.9 4.8a2.8 2.8 0 0 1-1.9 4.8a2.8 2.8 0 0 1-5.8 1.1"/>',
74 snow: '<path d="M12 3.5v17M4.6 7.8l14.7 8.5M4.6 16.3l14.7-8.5M9.6 4.9L12 7.3l2.4-2.4M9.6 19.1L12 16.7l2.4 2.4"/>',
75 mountain: '<path d="M3.6 17.5L9.3 6l3.7 6.3L15.5 9.1L20.3 17.5Z"/>',
76 'mic-off': '<rect x="9.2" y="3.6" width="5.7" height="10.4" rx="2.8"/><path d="M5.5 11.1a6.6 6.6 0 0 0 11 5M18.7 11.1c0 0.8-0.1 1.5-0.4 2.2M12.1 17.7v2.8M4.5 4.5l15.1 15.1"/>',
77 database: '<ellipse cx="12" cy="6.4" rx="6.6" ry="2.8"/><path d="M5.4 6.4v11.3c0 1.6 2.9 2.8 6.6 2.8s6.6-1.2 6.6-2.8V6.4M5.4 12c0 1.6 2.9 2.8 6.6 2.8s6.6-1.2 6.6-2.8"/>',
78 layers: '<path d="M12 5.4l8.3 4.6l-8.3 4.6l-8.3-4.6Z"/><path d="M3.8 14l8.3 4.6l8.3-4.6"/>',
79 hash: '<path d="M5 9h15M4 15h15M10 3.5 8 20.5M16 3.5l-2 17"/>',
80 text: '<path d="M5.2 20.3L10.9 3.6h2.1l5.7 16.7M7.4 14h9.2"/>',
81 enter: '<path d="M13.8 3.6h4.1a2.1 2.1 0 0 1 2.1 2.1v12.5a2.1 2.1 0 0 1-2.1 2.1h-4.1M9.5 7.9l4.1 4.1l-4.1 4.1M13.8 12H3.2"/>',
82 language: '<path d="M4.6 5.4h8.4M8.8 3.6v1.9M6.4 5.4c0.5 2.8 2.3 5.6 5.6 7M11.1 5.4c-0.6 3.2-2.6 6.3-6 7.9M12 20.3l3.7-8.4l3.7 8.4M13.3 17.5h4.8"/>',
83 idea: '<path d="M9.1 17.6h5.8M10.1 20.5h3.9M8.7 14.3A5.8 5.8 0 1 1 15.2 14.3c-0.7 0.6-1.4 1.5-1.4 2.3h-3.9c0-0.9-0.7-1.7-1.4-2.3Z"/>',
84 dollar: '<path d="M15.7 8C15 6.6 13.7 5.6 12 5.6C9.6 5.6 8.3 6.9 8.3 8.5s1.6 2.5 3.7 2.8s3.7 1.3 3.7 3.1s-1.5 3-3.7 3c-1.8 0-3.2-0.9-3.7-2.4M12 3.7v16.7"/>',
85 target: '<circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1.5"/>',
86 'arrow-right': '<path d="M3.2 12h16.7M13.7 5.7l6.3 6.3l-6.3 6.3"/>', 'arrow-left': '<path d="M20.8 12H4M10.3 5.7l-6.3 6.3l6.3 6.3"/>',
87 'arrow-up': '<path d="M12 20.8V4M5.7 10.3l6.3-6.3l6.3 6.3"/>', 'arrow-down': '<path d="M12 3.2v16.7M5.7 13.7l6.3 6.3l6.3-6.3"/>',
88 shirt: '<path d="M8.2 3.8L3.7 6.6l1.8 3.8l1.8-0.9v11.2h9.3V9.4l1.8 0.9l1.8-3.8l-4.7-2.7c-0.5 1.4-1.8 2.3-3.8 2.3S8.8 5.1 8.2 3.8Z"/>',
89 route: '<circle cx="6" cy="18" r="2.4"/><circle cx="18" cy="6" r="2.4"/><path d="M8.4 18H16a3 3 0 0 0 0-6H8a3 3 0 0 1 0-6h7.6"/>',
90 reply: '<path d="M9.2 5.8L4 11l5.1 5.1M4 11h10.3a6.2 6.2 0 0 1 6.2 6.2v1"/>',
91 smile: '<circle cx="12" cy="12" r="8.5"/><path d="M8.5 14a4 4 0 0 0 7 0M9 9.5h.01M15 9.5h.01"/>',
92 archive: '<rect x="3.5" y="4.8" width="17" height="4.7" rx="0.9"/><path d="M5.4 9.5v9.4a0.9 0.9 0 0 0 0.9 0.9h11.3a0.9 0.9 0 0 0 0.9-0.9V9.5M10.1 13.3h3.8"/>',
93 'user-check': '<circle cx="9.2" cy="8.1" r="2.8"/><path d="M4 19c0-2.9 2.4-4.9 5.4-4.9s5.4 1.9 5.4 4.9M15.4 10.8l1.8 1.8l3.6-3.6"/>',
94 ticket: '<path d="M3.6 7.4h16.7v2.8a1.9 1.9 0 0 0 0 3.7v2.8H3.6v-2.8a1.9 1.9 0 0 0 0-3.7Z"/><path d="M13.8 7.4v9.3"/>',
95 tack: '<path d="M9.3 4h5.6l-0.9 4.6l2.8 2.8H7.4l2.8-2.8ZM12 11.4v9.3"/>',
96 store: '<path d="M3.7 8.8L5.3 3.7h13.4L20.3 8.8M3.7 8.8h16.5v1.6a2.8 2.8 0 0 1-5.4 0a2.8 2.8 0 0 1-5.6 0A2.8 2.8 0 0 1 3.7 10.4ZM4.8 12.9v7.2h14.5v-7.2M9.9 20.1v-4.1h4.1v4.1"/>',
97 keyboard: '<rect x="3.5" y="6.6" width="17" height="10.7" rx="1.8"/><path d="M6.6 10.2h0M9.3 10.2h0M12 10.2h0M14.7 10.2h0M17.4 10.2h0M8.4 13.8h7.2"/>',
98 gavel: '<path d="M13.7 4.1l5.1 5.1M10.5 7.4l5.1 5.1M12.1 5.8l-5.6 5.6l5 5l5.6-5.6M3.5 19.5l5.9-5.9M13.7 19.5h6.5"/>',
99 drop: '<path d="M12 3.5s5.9 6.4 5.9 10.8a5.9 5.9 0 0 1-11.8 0c0-4.4 5.9-10.8 5.9-10.8Z"/>',
100 wifi: '<path d="M3.7 9.4a12.4 12.4 0 0 1 16.7 0M6.4 12.5a8.4 8.4 0 0 1 11.5 0M9.1 15.6a4.4 4.4 0 0 1 6.2 0M12.1 18.6h0"/>',
101 branch: '<circle cx="6.7" cy="5.6" r="1.9"/><circle cx="6.7" cy="18.6" r="1.9"/><circle cx="17.9" cy="7.5" r="1.9"/><path d="M6.7 7.5v9.3M17.9 9.3c0 5.1-6 3.7-10.2 7.9"/>',
102 // 2026-11-12: the tools, machines and creative shapes the icon audit found missing (plan L32 I1/I2).
103 binoculars: '<rect x="4.4" y="7.4" width="6" height="12.8" rx="3"/><rect x="13.6" y="7.4" width="6" height="12.8" rx="3"/><path d="M10.4 10.2h3.2M10.4 15.8h3.2"/><path d="M6.9 7.4V5.7a1.6 1.6 0 0 1 3.2 0v1.7M13.9 7.4V5.7a1.6 1.6 0 0 1 3.2 0v1.7"/>',
104 telescope: '<path d="M3.1 11.4l14.4-7.2l2.5 5l-14.4 7.2Z"/><path d="M9.1 14.9l-1.6 4.7M9.1 14.9l5.5 4.7M8.2 17.3h6.4"/>',
105 microscope: '<path d="M3.4 19.9h17.2M6.2 19.9v-3.4h5.8v3.4M9.2 16.5h8.6M14.1 16.5V7.4M14.1 7.4a4 4 0 0 1 4-4h1.2M19.3 3.4v4.8M9.9 9.9h3.6"/>',
106 gpu: '<rect x="3.5" y="5.5" width="14.4" height="10" rx="1.6"/><circle cx="8.2" cy="10.5" r="2.8"/><path d="M8.2 8.3v4.4M6 10.5h4.4"/><path d="M17.9 8h2.6v5h-2.6M3.5 15.5v2.5"/>',
107 cpu: '<rect x="7" y="7" width="10" height="10" rx="1.6"/><rect x="10.4" y="10.4" width="3.2" height="3.2" rx="0.6"/><path d="M9.5 3.5v3.5M14.5 3.5v3.5M9.5 17v3.5M14.5 17v3.5M3.5 9.5h3.5M3.5 14.5h3.5M17 9.5h3.5M17 14.5h3.5"/>',
108 memory: '<rect x="3.5" y="5.5" width="17" height="7.5" rx="1.2"/><path d="M3.5 15v3.5M6.6 15v3.5M9.7 15v3.5M12.8 15v3.5M15.9 15v3.5M19 15v3.5"/><path d="M6.7 8h4.8M6.7 10.8h3M13.4 8h3.9M13.4 10.8h2.4"/>',
109 joystick: '<path d="M4.3 19.6h15.4l-2.6-7.3H6.9Z"/><path d="M12 12.3V7.6"/><circle cx="12" cy="5.4" r="2.1"/><circle cx="8.3" cy="16.6" r="1.1"/><circle cx="15.7" cy="16.6" r="1.1"/>',
110 wand: '<path d="M3.7 20.3L13.9 10.1M12.1 8.3l3.6 3.6"/><path d="M17.9 3.7l0.9 2.3l2.3 0.9l-2.3 0.9l-0.9 2.3l-0.9-2.3l-2.3-0.9l2.3-0.9Z"/>',
111 'layers-plus': '<path d="M3.8 9.8l8.2-4.8l8.2 4.8M3.8 14l8.2 4.8l4.8-2.8"/><path d="M18.6 14.4v5M16.1 16.9h5"/>',
112 // 4.63.0: the Font Awesome names the network still used most (openvibe.design/icons' "Still Font Awesome", 10-31).
113 restroom: '<circle cx="7.1" cy="5.3" r="1.7"/><circle cx="16.4" cy="5.3" r="1.7"/><path d="M11.7 3.6v16.7M5.6 20.3v-5.1H4.7V10.6A1.4 1.4 0 0 1 6.1 9.2h1.9a1.4 1.4 0 0 1 1.4 1.4v4.6H8.5V20.3M15.5 20.3v-3.7h-2.4l1.9-6.1a0.9 0.9 0 0 1 0.9-0.9h0.9a0.9 0.9 0 0 1 0.9 0.9l1.9 6.1H17.3v3.7"/>',
114 shelter: '<path d="M3.7 10.5L12 4l8.3 6.5M5.9 9.2v10.4M18.1 9.2v10.4"/><circle cx="12" cy="11" r="1.6"/><path d="M9.8 19.6v-3.9a2.2 2.2 0 0 1 4.3 0V19.6"/>',
115 'hot-tub': '<circle cx="8.6" cy="5.8" r="1.7"/><path d="M3.8 11.9h16.6v3.3a4.2 4.2 0 0 1-4.2 4.2h-8.4A4.2 4.2 0 0 1 3.8 15.2ZM6.8 11.9v-1.4A2.4 2.4 0 0 1 8.9 8.2H9.4M13.7 9.5c0.8-0.9-0.8-1.9 0-2.8M17.3 9.5c0.8-0.9-0.8-1.9 0-2.8"/>',
116 umbrella: '<path d="M3.8 12.5a8.4 8.4 0 0 1 16.6 0ZM12.1 12.5v6a1.9 1.9 0 0 1-3.7 0M12.1 4.1v0"/>',
117 parking: '<rect x="3.7" y="3.7" width="16.7" height="16.7" rx="3"/><path d="M9.6 17V7.2h3.4a3 3 0 0 1 0 5.9H9.6"/>',
118 skull: '<path d="M12 3.7a6.5 6.5 0 0 0-6.5 6.5c0 2.2 1 3.6 2.4 4.6v2.8h8.4v-2.8c1.3-1 2.4-2.6 2.4-4.6a6.5 6.5 0 0 0-6.5-6.5Z"/><circle cx="9.6" cy="10.7" r="1.3"/><circle cx="14.4" cy="10.7" r="1.3"/><path d="M10.6 17.7v2.8M13.4 17.7v2.8"/>',
119 group: '<path d="M3.5 7.3V3.5h3.8M16.7 3.5h3.8v3.8M20.5 16.7v3.8h-3.8M7.3 20.5H3.5v-3.8"/><rect x="7.3" y="7.3" width="5.7" height="4.7" rx="0.9"/><rect x="11.1" y="12" width="5.7" height="4.7" rx="0.9"/>',
120 medical: '<rect x="3.5" y="7.1" width="17" height="12.3" rx="1.9"/><path d="M9.2 7.1V5.2a0.9 0.9 0 0 1 0.9-0.9h3.8a0.9 0.9 0 0 1 0.9 0.9v1.9M12 10.4v5.7M9.2 13.3h5.7"/>',
121 shapes: '<circle cx="7.5" cy="7.7" r="3.4"/><path d="M16.4 3.7l3.9 6.9h-7.9ZM13.9 14.1h5.9v5.9h-5.9ZM3.6 20l3.4-5.9l3.4 5.9Z"/>',
122 headphones: '<path d="M4.4 13.9v-2.8a7.5 7.5 0 0 1 14.9 0v2.8"/><rect x="3.5" y="13" width="4.2" height="6" rx="1.4"/><rect x="16.1" y="13" width="4.2" height="6" rx="1.4"/>',
123 drive: '<rect x="3.5" y="12.3" width="17" height="6.6" rx="1.9"/><path d="M3.9 12.3L6.8 4.7h10.4l2.8 7.6M16.7 15.6h0M13.8 15.6h0"/>',
124 'check-double': '<path d="M3.6 11.7l3.6 3.6L14.6 7.7M11.1 15.2l0.9 0.9L20.4 7.7"/>',
125 tv: '<rect x="3.5" y="7.8" width="17" height="11.6" rx="1.8"/><path d="M8.4 4.3l3.6 3.6l3.6-3.6"/>',
126 toolbox: '<rect x="3.5" y="8.1" width="17" height="11.3" rx="1.9"/><path d="M9.2 8.1V5.8A1.4 1.4 0 0 1 10.6 4.3h2.8A1.4 1.4 0 0 1 14.8 5.8V8.1M3.5 12.8h17M8.2 11.4v2.8M15.8 11.4v2.8"/>',
127 table: '<rect x="3.5" y="4.3" width="17" height="15.1" rx="1.9"/><path d="M3.5 9.5h17M3.5 14.7h17M9.2 9.5V19.4M14.8 9.5V19.4"/>',
128 scale: '<path d="M12 4.3V19.5M8.5 19.5h6.9M5.5 7.4h13M12 4.3h0M3.7 13.4L5.9 7.8L8.1 13.4M15.9 13.4L18.1 7.8l2.2 5.6M3.7 13.4a2.2 2.2 0 0 0 4.3 0M15.9 13.4a2.2 2.2 0 0 0 4.3 0"/>',
129 road: '<path d="M8.2 3.5L4.4 20.5M15.8 3.5l3.8 17M12 4.4v2.4M12 10.6v2.8M12 17.2V19.6"/>',
130 money: '<rect x="3.5" y="6.6" width="17" height="10.7" rx="1.8"/><circle cx="12" cy="12" r="2.2"/><path d="M6.6 9.8v0M17.4 14.2v0"/>',
131 'heart-pulse': '<path d="M19 12.3c-1.7 3.6-7 6.7-7 6.7s-5.3-3.1-7-6.7M4.3 9.7A4.3 4.3 0 0 1 12 7.4a4.3 4.3 0 0 1 7.7 2.2"/><path d="M3.5 11.9h4l1.3-2.2l2.2 4.5l1.8-3.1h7.6"/>',
132 heading: '<path d="M5.6 3.5v17M18.4 3.5v17M5.6 12h12.7M3.5 3.5h4.2M16.2 3.5h4.2M3.5 20.5h4.2M16.2 20.5h4.2"/>',
133 fist: '<path d="M6.4 10.1V6.4a1.6 1.6 0 0 1 3.2 0V9.1M9.5 8.5v-3.2a1.6 1.6 0 0 1 3.2 0v3.2M12.6 8.5v-2.1a1.6 1.6 0 0 1 3.2 0V9.1M15.7 9.1V8a1.6 1.6 0 0 1 3.2 0v5.2a7.3 7.3 0 0 1-7.3 7.3H11.1a5.7 5.7 0 0 1-5.7-5.7V12.3A2.1 2.1 0 0 1 7.4 11.2h2.1a1.6 1.6 0 0 1 0 3.2H8"/>',
134 'fast-forward': '<path d="M4 6.4v11.2L11.6 12ZM13.1 6.4v11.2L20.7 12Z"/>',
135 rewind: '<path d="M20 6.4v11.2L12.4 12ZM10.9 6.4v11.2L3.3 12Z"/>',
136 'file-code': '<path d="M13.9 3.5H7.4a1.9 1.9 0 0 0-1.9 1.9v13a1.9 1.9 0 0 0 1.9 1.9h9.3a1.9 1.9 0 0 0 1.9-1.9V8.2Z"/><path d="M13.9 3.5v4.6h4.6M10.1 12.4L8.3 14.3l1.9 1.9M13.9 12.4l1.9 1.9l-1.9 1.9"/>',
137 dice: '<rect x="3.7" y="3.6" width="16.7" height="16.7" rx="3"/><path d="M8.6 8.6h0M15.5 8.6h0M12.1 12h0M8.6 15.4h0M15.5 15.4h0" stroke-width="2.6"/>',
138 contrast: '<circle cx="11.7" cy="12" r="8.4"/><path d="M11.7 3.6v16.7M11.7 7.9h6.5M11.7 12h8.4M11.7 16.2h6.5"/>',
139 briefcase: '<rect x="3.5" y="7.2" width="17" height="12.3" rx="1.9"/><path d="M9.2 7.2V5.7A1.4 1.4 0 0 1 10.6 4.3h2.8A1.4 1.4 0 0 1 14.8 5.7V7.2M3.5 12.3h7.1M13.4 12.3H20.5M10.6 11.4h2.8v2.4h-2.8Z"/>',
140 timeline: '<path d="M3.5 12h0.9M8.2 12h1.9M13.9 12h1.9M19.6 12h0.9"/><circle cx="6.3" cy="12" r="1.9"/><circle cx="12" cy="12" r="1.9"/><circle cx="17.7" cy="12" r="1.9"/><path d="M6.3 10.1V5.9M12 13.9v4.3M17.7 10.1V5.9"/>',
141 seedling: '<path d="M12 20.8v-9.8M12 11C12 6.7 9.3 4 4.4 4c0 4.3 2.7 7 7.6 7ZM12 13.7c0-4.3 2.7-7 7.6-7c0 4.3-2.7 7-7.6 7Z"/>',
142 rocket: '<path d="M11.8 15.7L8.4 12.3C9.9 6.9 13.8 3.9 20.2 3.9C20.2 10.3 17.3 14.2 11.8 15.7ZM8.4 12.3L4.9 11.8L7.4 8.3h3.9M11.8 15.7l0.5 3.4l3.4-2.5v-3.9M6.4 17.7c-1.5 0-3 1.5-3 3c1.5 0 3-1.5 3-3Z"/><circle cx="15.3" cy="8.8" r="1.5"/>',
143 'list-ordered': '<path d="M9.7 6.8h10.8M9.7 12.8h10.8M9.7 18.8h10.8M3.8 5.4L4.7 5v4.4M3.8 9.3h2M3.8 13.7a1 1 0 0 1 2 0.3c0 1.1-2 1.7-2 2.7h2.2"/>',
144 lifebuoy: '<circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="12" r="3.8"/><path d="M6 6l3.4 3.4M14.6 14.7l3.4 3.4M18 6l-3.4 3.4M9.4 14.7l-3.4 3.4"/>',
145 infinity: '<path d="M12 12c-1.8-2.4-3.3-3.6-4.9-3.6a3.6 3.6 0 0 0 0 7.2c1.6 0 3.1-1.2 4.9-3.6Zm0 0c1.8 2.4 3.3 3.6 4.9 3.6a3.6 3.6 0 0 0 0-7.2c-1.6 0-3.1 1.2-4.9 3.6Z"/>',
146 inbox: '<path d="M3.5 12.7L5.9 4.8h12.1l2.4 7.9V17.8a0.9 0.9 0 0 1-0.9 0.9H4.4a0.9 0.9 0 0 1-0.9-0.9ZM3.5 12.7h4.6l1.4 2.4h4.6l1.4-2.4h4.6"/>',
147 door: '<path d="M13.7 4.7L6.3 3.2v16.7l7.5-1.4ZM13.7 5.1h3.3a0.9 0.9 0 0 1 0.9 0.9v14M3.5 20h16.7M11 11.6h0"/>',
148 card: '<rect x="3.7" y="5.8" width="16.7" height="12.3" rx="1.8"/><path d="M3.7 10.3h16.7M6.7 14.6h3.5"/>',
149 storm: '<path d="M7.8 16a3.8 3.8 0 1 1 0.8-7.4A4.5 4.5 0 0 1 17.4 10.5a3.1 3.1 0 0 1-0.4 6.2"/><path d="M12.9 12.2l-2.1 3.3h2.5L11.3 18.9"/>',
150 // 4.68.0 (plan L49): the rest of the names Live still asked Font Awesome for (the owner, 2026-11-01: "why Font
151 // Awesome? … OpenVibe Design's icon system for all our icons").
152 'trend-up': '<path d="M3.2 16.8L8.8 11.3l3.8 3.8l7.4-7.4"/><path d="M14.4 7.4h5.6v5.6"/>',
153 'trend-down': '<path d="M3.2 7.2l5.6 5.6l3.8-3.8l7.4 7.4"/><path d="M14.4 16.6h5.6v-5.6"/>',
154 'chevrons-left': '<path d="M10.9 19.3l-7.3-7.3l7.3-7.3M20.4 19.3l-7.3-7.3l7.3-7.3"/>',
155 'chevrons-right': '<path d="M3.6 19.3l7.3-7.3l-7.3-7.3M13.1 19.3l7.3-7.3l-7.3-7.3"/>',
156 sort: '<path d="M3.5 5.8h9.2M3.5 12h6.2M3.5 18.2h3M17.5 4.8v14.4M14.3 16.2l3 3l3-3"/>',
157 'sort-asc': '<path d="M3.4 5.4h3M3.4 11.6h6.3M3.4 17.9h9.3M17.5 4.3v14.6M14.3 16l3 3l3-3"/>',
158 share: '<path d="M12 15.2V3.3M7.4 8.1L12 3.3L16.6 8.1M4.9 12.9v6.1a1 1 0 0 0 1 1h12.2a1 1 0 0 0 1-1v-6.1"/>',
159 'arrows-h': '<path d="M3.8 12h16.5M7.6 8.1l-3.9 3.9l3.9 3.9M16.4 8.1l3.9 3.9l-3.9 3.9"/>',
160 move: '<path d="M11.9 3.6v16.7M3.6 11.9h16.7M9 6.5l2.9-2.9l2.9 2.9M9 17.3l2.9 2.9l2.9-2.9M6.5 9l-2.9 2.9l2.9 2.9M17.3 9l2.9 2.9l-2.9 2.9"/>',
161 // A viewfinder with its centre (2026-11-11 review: four tiny arrows crowded at 16 px).
162 focus: '<circle cx="12" cy="12" r="2.8"/><path d="M3.5 9V5.9A2.4 2.4 0 0 1 5.9 3.5H9M15 3.5h3.1A2.4 2.4 0 0 1 20.5 5.9V9M20.5 15v3.1a2.4 2.4 0 0 1-2.4 2.4H15M9 20.5H5.9A2.4 2.4 0 0 1 3.5 18.1V15"/>',
163 at: '<circle cx="12" cy="12" r="3.4"/><path d="M15.4 12v1.3a2.5 2.5 0 0 0 4.9 0V12a8.3 8.3 0 1 0-3.2 6.5"/>',
164 box: '<path d="M3.6 7.9L11.9 3.9l8.4 3.9v8.4L11.9 20.1l-8.4-3.9Z"/><path d="M3.6 7.9L11.9 11.8l8.4-3.9M11.9 11.8v8.4M7.8 5.9l8.4 3.9"/>',
165 bug: '<rect x="7.2" y="6.2" width="9.6" height="13.3" rx="4.8"/><path d="M9.3 6.5a2.7 2.7 0 0 1 5.3 0M12 10.9v8.5M7.2 12H3.5M20.5 12h-3.7M7.6 8.3L4.6 5.6M16.4 8.3L19.4 5.6M7.6 16.3L4.6 18.9M16.4 16.3L19.4 18.9"/>',
166 megaphone: '<path d="M3.6 9.5v4a1 1 0 0 0 1 1H7.1l9 4.5v-15L7.1 8.5H4.5a1 1 0 0 0-1 1Z"/><path d="M7.1 14.5l1.3 5h2.4L10.1 15.1M19.1 9a3.2 3.2 0 0 1 0 5"/>',
167 burst: '<path d="M11.9 3.7L13.6 7.8L17.8 6.2L16.2 10.4L20.3 12.1L16.2 13.8L17.8 18L13.6 16.4L11.9 20.4L10.2 16.4L6 18L7.6 13.8L3.6 12.1L7.6 10.4L6 6.2L10.2 7.8Z"/>',
168 'camera-flip': '<path d="M3.5 8h3.4l1.8-2.8h6.6L17.1 8h3.4v11.5h-17Z"/><path d="M15 12.6a3.1 3.1 0 0 0-5.6-1.2M9 14.4a3.1 3.1 0 0 0 5.6 1.2M9.3 9.5v2h2M14.7 17.5v-2h-2"/>',
169 'camera-off': '<path d="M3.7 7.9h3.3l1.7-2.7h6.4L16.9 7.9h3.3v11.2h-16.5Z"/><circle cx="11.9" cy="13" r="3.3"/><path d="M3.7 3.5l16.5 16.5"/>',
170 car: '<path d="M3.5 15.8v-4.5L6.2 5.8h11.6l2.7 5.5V15.8Z"/><path d="M3.5 11.3h17M6.5 15.8v2.5M17.5 15.8v2.5M7.2 13.8h0M16.8 13.8h0"/>',
171 child: '<circle cx="12" cy="5.8" r="2.1"/><path d="M7.9 10.5L12 9.2l4.1 1.4M12 9.2v5.6M9.2 20.4l2.8-5.6l2.8 5.6"/>',
172 donate: '<circle cx="11.9" cy="8.4" r="5.2"/><path d="M11.9 6v4.3M3.7 15.6h16.5V20H3.7ZM8.3 17.7h7.2"/>',
173 record: '<circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="12" r="3"/>',
174 'plus-circle': '<circle cx="12" cy="12" r="8.5"/><path d="M12 8v8M8 12h8"/>',
175 'minus-circle': '<circle cx="12" cy="12" r="8.5"/><path d="M8 12h8"/>',
176 clapper: '<path d="M4 10.4h16.3v8.6a1 1 0 0 1-1 1h-14.4a1 1 0 0 1-1-1Z"/><path d="M4 10.4L3.4 7.2l15.7-2.9l0.7 3.3ZM8.5 6.3l2.2 3.2M13.3 5.4l2.2 3.2"/>',
177 'clipboard-check': '<rect x="5.7" y="4.9" width="12.6" height="15.5" rx="1.9"/><path d="M9.1 4.9V3.5h5.8V4.9M9.1 13.2l1.9 1.9l3.9-3.9"/>',
178 cc: '<rect x="3.5" y="5.4" width="17" height="13.2" rx="2.4"/><path d="M10.7 10.2a2.3 2.3 0 1 0 0 3.6M16.8 10.2a2.3 2.3 0 1 0 0 3.6"/>',
179 'cloud-off': '<path d="M7.5 17.6h9.5a3.8 3.8 0 0 0 0.5-7.5A5.7 5.7 0 0 0 6.4 9.6A4.1 4.1 0 0 0 7.5 17.6Z"/><path d="M4 3.9l16.1 16.1"/>',
180 commit: '<circle cx="12" cy="12" r="3.4"/><path d="M3.5 12h5.1M15.4 12H20.5"/>',
181 'chat-off': '<path d="M4.2 5.1h15.7v10.9H8l-4 4Z"/><path d="M3.7 3.7l16.7 16.7"/>',
182 compass: '<circle cx="12" cy="12" r="8.5"/><path d="m15.6 8.4-2.1 5.1-5.1 2.1 2.1-5.1Z"/>',
183 cookie: '<path d="M20.6 12.3a8.4 8.4 0 1 1-8.9-8.9a3 3 0 0 0 3.9 3.5a3 3 0 0 0 4.9 5.3Z"/><path d="M8.8 9.4h0M12.2 13.8h0M8.3 15.3h0M15.7 15.3h0"/>',
184 couch: '<path d="M5.4 10.1V7.2a1.9 1.9 0 0 1 1.9-1.9h9.4a1.9 1.9 0 0 1 1.9 1.9v2.8"/><path d="M3.5 11.9a1.9 1.9 0 0 1 3.8 0v1.4h9.4V11.9a1.9 1.9 0 0 1 3.8 0v4.7H3.5ZM5.4 16.7v1.9M18.6 16.7v1.9"/>',
185 cubes: '<path d="M12 3.2L8.1 5.2v4.4l3.9 2l3.9-2V5.2ZM7.6 11.6L3.6 13.6v4.4l3.9 2l3.9-2V13.6ZM16.4 11.6l-3.9 2v4.4l3.9 2l3.9-2V13.6Z"/>',
186 ear: '<path d="M6.2 9.5a5.7 5.7 0 1 1 10.8 2.4c-0.9 1.9-3.1 3-3.1 5.2a3.4 3.4 0 0 1-6.5 1.6"/><path d="M9.7 9.9a2.4 2.4 0 1 1 3.8 1.5"/>',
187 eraser: '<path d="M14.3 4.4l5.5 5.5l-9 9H6.6l-2.6-2.6a1.5 1.5 0 0 1 0-2.1Z"/><path d="M9.3 9.4l5.5 5.5M10.8 18.9H20.3"/>',
188 laugh: '<circle cx="12" cy="12" r="8.5"/><path d="M8 13.5h8a4 4 0 0 1-8 0ZM7.5 8.6l2.2 1.2-2.2 1.2M16.5 8.6l-2.2 1.2 2.2 1.2"/>',
189 fish: '<path d="M9 12c1.8-3.2 4.3-4.8 7.1-4.8c2.6 0 4.2 2 4.9 4.8c-0.7 2.8-2.3 4.8-4.9 4.8c-2.8 0-5.3-1.6-7.1-4.8Z"/><path d="M9 12L4.2 8.6M9 12l-4.8 3.4M17.3 10.6h0.01"/>',
190 finish: '<path d="M5.2 20.7V4"/><rect x="5.2" y="4.6" width="13.9" height="8.6" rx="1"/><path d="M5.2 8.8h13.9M9.6 4.6v8.6M14.3 4.6v8.6"/>',
191 flask: '<path d="M9.5 3.2h4.9M10 3.2V9.2L4.9 17.7a1.5 1.5 0 0 0 1.3 2.3h11.6a1.5 1.5 0 0 0 1.3-2.3L14 9.2V3.2"/><path d="M7.3 14.6h9.5"/>',
192 'folder-tree': '<path d="M4.1 3.3v13.2a1 1 0 0 0 1 1H9.7M4.1 8.3H9.7"/><path d="M10.2 5.3h3.1l1 1.5h5.6V10.9h-9.7ZM10.2 14.5h3.1l1 1.5h5.6V20.1h-9.7Z"/>',
193 skip: '<path d="M4.8 3.5l10.8 8.4l-10.8 8.4Z"/><path d="M19.7 3.5v16.7"/>',
194 gem: '<path d="M6.8 4.9h10.3L20.2 9.5l-8.3 10.3L3.6 9.5Z"/><path d="M3.6 9.5h16.7M9.6 4.9L8.1 9.5l3.8 10.3M14.2 4.9L15.7 9.5l-3.8 10.3"/>',
195 ghost: '<path d="M4.7 20V10.6a7.3 7.3 0 0 1 14.7 0v9.4l-2.4-1.9l-2.5 1.9l-2.4-1.9L9.6 20l-2.5-1.9Z"/><path d="M9.4 10.1h0M14.6 10.1h0"/>',
196 grip: '<path d="M8.3 4.5h0M15.8 4.5h0M8.3 12h0M15.8 12h0M8.3 19.5h0M15.8 19.5h0" stroke-width="3.8"/>',
197 hammer: '<path d="M13.1 3.7L19.3 9.9l-2.7 2.7l-6.2-6.2Z"/><path d="M13.6 9.4L5 18.1a1.3 1.3 0 0 0 1.9 1.9l8.6-8.6"/>',
198 handshake: '<path d="M3.6 9.9v5.3M20.3 9.9v5.3"/><path d="M3.6 10.8h2.2l3.5-2.7l2.9 1.3L14.5 8.2l3.5 2.7h2.2"/><path d="M5.7 10.8l5.6 5.6a1.4 1.4 0 0 0 2-2M18 10.8l-4.7 4.5M17.5 12.8l-4-4l-2.3 2.1a1.3 1.3 0 0 1-1.9-1.9l1.9-2"/>',
199 wizard: '<path d="M3.6 20h16.7M6.3 20L9.9 9.1L15.7 3.3L14.1 10.1L17.8 20"/><path d="M8.4 15.4h7.3"/>',
200 'heart-broken': '<path d="M11.9 20.3s-8.1-5.1-8.1-11.6a4.6 4.6 0 0 1 8.1-3A4.6 4.6 0 0 1 20 9.2c0 6.5-8.1 11.6-8.1 11.6Z"/><path d="M11.9 5.8L10 9.8l3.5 2.3l-1.6 3.9"/>',
201 hourglass: '<path d="M6 3.5h12M6 20.5h12M7.5 3.5c0 4.5 4.5 5.5 4.5 8.5s-4.5 4-4.5 8.5M16.5 3.5c0 4.5-4.5 5.5-4.5 8.5s4.5 4 4.5 8.5"/>',
202 lungs: '<path d="M12 3.5v8M12 9.4l-3 2.1M12 9.4l3 2.1M8.4 6.5C5.6 6.5 3.5 10.4 3.5 15.2c0 2.8 1.1 4.8 3.2 4.8s2.7-2.1 2.7-4.8V8.3M15.6 6.5C18.4 6.5 20.5 10.4 20.5 15.2c0 2.8-1.1 4.8-3.2 4.8s-2.7-2.1-2.7-4.8V8.3"/>',
203 'link-off': '<path d="M10 13.8a4 4 0 0 0 5.6 0l2.9-2.9a4 4 0 0 0-5.6-5.6l-1 1M13.8 10a4 4 0 0 0-5.6 0l-2.9 2.9a4 4 0 0 0 5.6 5.6l1-1"/><path d="M3.6 3.6l16.7 16.7"/>',
204 mask: '<path d="M3.5 7c3 1.3 5.8 1.8 8.5 1.8S17.5 8.3 20.5 7c0 6-2.5 10-5 10-1.4 0-2-1.5-3.5-1.5S9.9 17 8.5 17c-2.5 0-5-4-5-10Z"/><path d="M7.5 11.5h2M14.5 11.5h2"/>',
205 mug: '<path d="M4.8 9.1h11v7a4 4 0 0 1-4 4h-3a4 4 0 0 1-4-4Z"/><path d="M15.8 10.5H17.3a2.5 2.5 0 0 1 0 5h-1.5M8.3 3.5c-0.8 1 0.8 2 0 3M11.8 3.5c-0.8 1 0.8 2 0 3"/>',
206 paw: '<path d="M7.8 18.5c0-3 1.9-5.3 4.2-5.3s4.2 2.3 4.2 5.3c0 1.4-1.1 2.1-2.1 2.1c-0.8 0-1.4-0.5-2.1-0.5s-1.3 0.5-2.1 0.5c-1.1 0-2.1-0.7-2.1-2.1Z"/><circle cx="5.4" cy="10.6" r="1.9"/><circle cx="9.2" cy="5.7" r="1.9"/><circle cx="14.8" cy="5.7" r="1.9"/><circle cx="18.6" cy="10.6" r="1.9"/>',
207 walk: '<circle cx="12.3" cy="5.1" r="1.7"/><path d="M8.8 20.3l2.4-5.5l1.9 2.2V20.3M11 14.8l0.9-5.2l-2.7 1.4l-1.4 2.7M11.9 9.6l1.8 2.7l2.7 0.9"/>',
208 'phone-off': '<path d="M5.6 4.1h3.7l1.9 4.7l-2.4 1.4a10.3 10.3 0 0 0 4.7 4.7L15.1 12.5l4.7 1.9v3.7a1.9 1.9 0 0 1-1.9 1.9A15.1 15.1 0 0 1 3.8 5.9a1.9 1.9 0 0 1 1.9-1.9"/><path d="M4.3 3.6l16.1 16.1"/>',
209 piggy: '<path d="M3.5 11.4c0-3.2 3.3-5.7 7.7-5.7c1.3 0 2.4 0.2 3.4 0.6L17.4 4.7v3.3c0.8 0.7 1.4 1.6 1.6 2.5h1.4v3.4H18.8c-0.5 1-1.3 1.7-2.3 2.3V19.1h-2.9v-1.9c-0.8 0.2-1.7 0.3-2.5 0.3c-0.8 0-1.6-0.1-2.3-0.3v1.9h-2.9v-2.9C4.4 15.1 3.5 13.4 3.5 11.4Z"/><path d="M14.9 10.1h0M8.7 8.1h2.9"/>',
210 airplane: '<path d="M12 3.2c0.9 0 1.4 0.9 1.4 2.4V9.8l7 4.2V15.4l-7-2.4V17.2l1.9 1.4V20L12 19.1l-3.3 0.9v-1.4l1.9-1.4v-4.2L3.6 15.4v-1.4L10.6 9.8V5.6C10.6 4.2 11.1 3.2 12 3.2Z"/>',
211 print: '<path d="M7.1 8.9V3.5h9.9V8.9"/><rect x="3.6" y="8.9" width="16.7" height="7.9" rx="2"/><path d="M7.1 13.8h9.9v6.4H7.1ZM16.4 11.9h0"/>',
212 quote: '<path d="M9.8 6.2C5.8 7.2 3.6 10 3.6 13.9v3.3h5.6v-5.6h-5.6M20.3 6.2c-3.9 1.1-6.1 3.9-6.1 7.8v3.3h5.6v-5.6h-5.6"/>',
213 radio: '<rect x="3.5" y="8.3" width="16.8" height="11.3" rx="1.9"/><path d="M7.3 8.3L16.7 3.9"/><circle cx="15.3" cy="14" r="2.4"/><path d="M6.8 12.4h3.8M6.8 15.4h3.8"/>',
214 ranking: '<path d="M3.5 19.9h17M4.5 19.9V13.8h4.7M9.2 19.9V10h5.7v9.9M14.9 19.9V15.7h4.7v4.3"/><path d="M12 3.4l0.9 1.7l1.9 0.3l-1.4 1.3l0.3 1.9L12 7.7l-1.7 0.9l0.3-1.9L9.3 5.4l1.9-0.3Z"/>',
215 recycle: '<path d="M7.8 18.2H5.7a1.2 1.2 0 0 1-1-1.8l2.3-3.9M10 5.5l0.9-1.5a1.2 1.2 0 0 1 2.1 0l2.3 3.9M17.7 12.4l1.6 2.7a1.2 1.2 0 0 1-1 1.8h-4.5"/><path d="M11.1 16.5l1.8 1.8l-1.8 1.8M4.5 10.4l2.4-0.7l0.7 2.5M17.2 6.1l-0.7 2.5l-2.5-0.7"/>',
216 rss: '<path d="M4 3.5a16.5 16.5 0 0 1 16.5 16.5M4 10.4A9.6 9.6 0 0 1 13.6 20.1"/><path d="M4.6 19.4h0" stroke-width="3.9"/>',
217 scroll: '<path d="M8.3 3.8h10.1a1.9 1.9 0 0 1 1.9 1.9v1.5H17M8.3 3.8a1.9 1.9 0 0 0-1.9 1.9v11.7a2.9 2.9 0 0 1-2.9 2.9h10.7a2.9 2.9 0 0 0 2.9-2.9v-11.7a1.9 1.9 0 0 0-1.9-1.9M10.2 9.2h3.9M10.2 13h3.9"/>',
218 signature: '<path d="M3.9 14c2.4 0 3.3-8.4 5.6-8.4c1.4 0 0.9 5.6 2.4 5.6c0.9 0 1.4-2.4 2.4-2.4s0.8 1.9 1.9 1.9c0.8 0 1.4-0.6 1.9-1.1M3.9 17.8h16.7"/>',
219 square: '<rect x="3.5" y="3.5" width="17" height="17" rx="2.7"/>',
220 sword: '<path d="M20.3 3.7v3.7L10.4 17.3L6.7 13.6L16.7 3.7Z"/><path d="M5.2 12L12 18.8M8.3 15.7L3.6 20.4"/>',
221 columns: '<rect x="3.5" y="4.5" width="17" height="15" rx="2"/><path d="M12 4.5v15M3.5 9h17"/>',
222 'thumbs-up': '<path d="M7.3 10.4v9.6H4.8a1 1 0 0 1-1-1v-7.6a1 1 0 0 1 1-1Z"/><path d="M7.3 10.4L10.9 3.3a2.2 2.2 0 0 1 2.5 2.6L12.7 9.4H18.5a2 2 0 0 1 2 2.4l-1.3 6.6a2 2 0 0 1-2 1.6H7.3"/>',
223 undo: '<path d="M9.2 14.2L4 8.9l5.2-5.2"/><path d="M4 8.9h11a5.8 5.8 0 0 1 0 11.5H11.3"/>',
224 'user-circle': '<circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="10" r="3"/><path d="M6.6 18.3a6.5 6.5 0 0 1 10.8 0"/>',
225 'user-lock': '<circle cx="9.8" cy="7.3" r="3.3"/><path d="M3.5 18.8c0-3.4 2.8-5.7 6.2-5.7c1.2 0 2.2 0.3 3.1 0.7"/><rect x="14.6" y="14.5" width="5.7" height="4.8" rx="1"/><path d="M16 14.5v-1.2a1.5 1.5 0 0 1 2.9 0v1.2"/>',
226 'user-minus': '<circle cx="10.1" cy="8" r="3.3"/><path d="M4 19.3c0-3.3 2.7-5.7 6.1-5.7c1.1 0 2.2 0.3 3 0.7"/><path d="M15.1 17h5.7"/>',
227 'user-pen': '<circle cx="9.8" cy="8" r="3.3"/><path d="M3.8 19.1c0-3.3 2.7-5.6 6-5.6c1.1 0 2.1 0.3 3 0.7"/><path d="M19.1 12.1l1.4 1.4l-4.7 4.7l-1.9 0.5l0.5-1.9Z"/>',
228 'user-tag': '<circle cx="10" cy="7.6" r="3.3"/><path d="M3.8 18.9c0-3.3 2.8-5.6 6.1-5.6c1.1 0 2.2 0.3 3.1 0.7"/><path d="M14.2 14.2h3.7l2.4 2.4l-2.4 2.4h-3.7Z"/><path d="M16.1 16.5h0"/>',
229 'user-off': '<circle cx="12" cy="8.2" r="3.5"/><path d="M5.1 20c0-3.6 3-5.9 6.9-5.9s6.9 2.3 6.9 5.9"/><path d="M3.7 3.7l16.7 16.7"/>',
230 weight: '<circle cx="12" cy="5.2" r="2"/><path d="M7.1 8.7h9.9l3 11.3H4.1Z"/>',
231 wind: '<path d="M3.5 9.9h10.4a2.8 2.8 0 1 0-2.8-2.8M3.5 13.7h14.2a2.8 2.8 0 1 1-2.8 2.8M3.5 17.5h6.6"/>',
232 window: '<rect x="3.5" y="4.5" width="17" height="15" rx="2"/><path d="M3.5 9h17"/>',
233 'window-restore': '<rect x="3.5" y="8.5" width="12" height="11" rx="2"/><path d="M8.5 8.5v-2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-3"/>',
234 'align-left': '<path d="M4 5.9h16.6M4 10h10.4M4 14.3h16.6M4 18.5h10.4"/>',
235 slash: '<path d="M3.6 3.6l16.7 16.7"/>',
236 // 4.69.0: an open book for fa-book-open (the closed one read as an empty square at 14 px).
237 'book-open': '<path d="M12 6.3C10 4.8 7 4.3 3.5 4.9v13.2c3.5-0.6 6.5-0.1 8.5 1.4c2-1.5 5-2 8.5-1.4V4.9C17 4.3 14 4.8 12 6.3Z"/><path d="M12 6.3v13.2"/>',
238 // A spinner is never drawn as one (the owner, 2026-10-31: nothing spins): three dots that take turns (ov-glyphs.js).
239 busy: '<path d="M4.7 12h0M12.1 12h0M19.4 12h0" stroke-width="4.2"/>',
240 };
241 // ── Small sizes (4.69.0, plan L49; the owner, 2026-11-01: "really tiny icons… a solid colour rather than the border
242 // lines… so all our icons look nice across sizes"). A solid drawing for the glyphs most often shown small: filled
243 // shapes, holes cut with fill-rule evenodd, a line that must stay a line as class "ln". ov-glyphs.js draws both and
244 // shows the solid one when the icon is 18 px or smaller (pure CSS, see scripts/build-glyphs.js); a glyph without
245 // one draws its lines heavier there instead.
246 const SOLID = Object.freeze({
247 handshake: '<path d="M2.3 9.2h2.7v6.8H2.3ZM19 9.2h2.7v6.8H19Z"/><path class="ln" d="M5.6 10.8h0.3l3.4-2.6l2.9 1.3L14.6 8.1l3.4 2.6h0.4M5.9 10.8l5.4 5.4a1.4 1.4 0 0 0 2-2M18 10.8l-4.7 4.5M17.4 12.8l-3.9-3.9l-2.3 2.1a1.3 1.3 0 0 1-1.9-1.9l1.9-2"/>',
248 focus: '<circle cx="12" cy="12" r="3.6"/><path class="ln" d="M3.8 9V6.1A2.3 2.3 0 0 1 6.1 3.8H9M15 3.8h2.9A2.3 2.3 0 0 1 20.2 6.1V9M20.2 15v2.9a2.3 2.3 0 0 1-2.3 2.3H15M9 20.2H6.1A2.3 2.3 0 0 1 3.8 17.9V15"/>',
249 // 4.182.0, the last five shapes: a car, a door, a podium, a rocket and a camera that flips. After these, every
250 // glyph without a solid drawing is one made of lines, which thickens when small instead.
251 car: '<path fill-rule="evenodd" d="M5.6 5.2h12.7l2.7 5.5H3ZM2.6 12.2h18.7v4.5H2.6ZM5.9 14.4a1.1 1.1 0 1 0 2.3 0a1.1 1.1 0 1 0-2.3 0ZM15.8 14.4a1.1 1.1 0 1 0 2.3 0a1.1 1.1 0 1 0-2.3 0ZM5 17.5h2.7v1.8H5ZM16.3 17.5h2.7v1.8h-2.7Z"/>',
252 door: '<path fill-rule="evenodd" d="M14.3 4.5L6.2 3v17.1l8.2-1.5ZM10.2 11.5a1 1 0 1 0 2 0a1 1 0 1 0-2 0Z"/><path class="ln" d="M15.5 5.3h1.4a0.9 0.9 0 0 1 0.9 0.9v13.3M15.5 19.5H20M4 19.5h2.1"/>',
253 ranking: '<path d="M3.5 13.7h4.9V9.9h7.1v5.7h4.9v5.4H3.5ZM12 2.2l1 2l2.2 0.3l-1.6 1.6l0.4 2.2L12 7.5l-2 1l0.4-2.2l-1.6-1.6l2.2-0.3Z"/>',
254 rocket: '<path fill-rule="evenodd" d="M11.9 16.6L7.4 12.2C9.1 6.1 13.6 2.9 21.1 2.9c0 7.5-3.2 12-9.2 13.7ZM13.6 8.7a1.7 1.7 0 1 0 3.5 0a1.7 1.7 0 1 0-3.5 0Z"/><path d="M3.7 12.2L6.8 7.5h3.5L6.6 12.6ZM11.4 17.4L11.9 20.3l4.6-3.3v-3.5ZM6.3 17.7c-2 0-3.9 2-3.9 3.9c2 0 3.9-2 3.9-3.9Z"/>',
255 'camera-flip': '<path fill-rule="evenodd" d="M2.5 7.8a1.9 1.9 0 0 1 1.9-1.9h2.6L8.8 3.3h6.3l1.8 2.6h2.6A1.9 1.9 0 0 1 21.5 7.8v10.7a1.9 1.9 0 0 1-1.9 1.9H4.4A1.9 1.9 0 0 1 2.5 18.5ZM7.7 11.7A4.5 4.5 0 0 1 16.3 11.7L13.9 12.6A2 2 0 0 0 10.1 12.6ZM16.3 14.8A4.5 4.5 0 0 1 7.7 14.8L10.1 14A2 2 0 0 0 13.9 14Z"/>',
256 // 4.182.0, sixth batch: things with one outline (an aeroplane, a burst, a fish, a shoe, a sword, a mask, a
257 // piggy bank), a couch, a coin over a box, two folders on a tree, a chequered flag, and two people.
258 airplane: '<path d="M11.8 2.6c1.3 0 2 1.2 2 3V9.5l7.2 4.2v2.5L13.8 13.7v3.5l2 1.5v2.5L11.8 19.7l-3.7 1.2v-2.5l2-1.5v-3.5l-7.2 2.5v-2.5L9.8 9.5V5.3c0-1.8 0.7-3 2-3Z"/>',
259 burst: '<path d="M12.1 2.6l2 4.6l4.7-1.9l-1.9 4.7l4.6 2l-4.6 2l1.9 4.7l-4.7-1.9l-2 4.6l-2-4.6l-4.7 1.9l1.9-4.7L2.7 12l4.6-2l-1.9-4.7l4.7 1.9Z"/>',
260 fish: '<path fill-rule="evenodd" d="M8.7 12c1.9-3.5 4.6-5.3 7.6-5.3c2.8 0 4.6 2.2 5.4 5.3c-0.8 3.1-2.6 5.3-5.4 5.3c-3 0-5.7-1.8-7.6-5.3ZM16.2 10.6a1.2 1.2 0 1 0 2.4 0a1.2 1.2 0 1 0-2.4 0Z"/><path class="ln" d="M8.7 12L4.4 8.9M8.7 12l-4.3 3.1"/>',
261 shoe: '<path d="M3.7 14.5V9.1l3.6-0.5l2.6-3.5l3.5 1.6l-0.8 2.3l3.1 1.7l3.6 0.8a1.9 1.9 0 0 1 1.3 1.8v1.4Z"/><path class="ln" d="M4.2 17h16"/>',
262 sword: '<path d="M21.2 2.8v4.7l-10.8 10.8l-4.7-4.7L16.5 2.8Z"/><path class="ln" d="M5.2 11.9L12.1 18.8M8.4 15.6L3.7 20.3"/>',
263 donate: '<path fill-rule="evenodd" d="M12 2.2a5.9 5.9 0 1 0 0 11.8a5.9 5.9 0 0 0 0-11.8Zm-0.8 3.4h1.7v5.1h-1.7ZM2.9 15h18.2v6H2.9ZM7.8 17.1v1.6h8.5V17.1Z"/>',
264 mask: '<path fill-rule="evenodd" d="M2.7 6.1c3.3 1.4 6.4 2.1 9.4 2.1s6.1-0.6 9.4-2.1c0 7.1-2.9 11.7-5.8 11.7c-1.5 0-2.2-1.5-3.6-1.5s-2.1 1.5-3.6 1.5c-2.9 0-5.8-4.6-5.8-11.7ZM6.8 11.6a1.6 1.1 0 1 0 3.3 0a1.6 1.1 0 1 0-3.3 0ZM14 11.6a1.6 1.1 0 1 0 3.3 0a1.6 1.1 0 1 0-3.3 0Z"/>',
265 couch: '<path d="M7.1 4.2h9.7A2.5 2.5 0 0 1 19.4 6.7v1.9a3.1 3.1 0 0 0-3.1 3.1v0.1H7.7v-0.1A3.1 3.1 0 0 0 4.6 8.7V6.7A2.5 2.5 0 0 1 7.1 4.2ZM2.7 11.6a2.5 2.5 0 0 1 5.1 0v1.9h8.6V11.6a2.5 2.5 0 0 1 5.1 0v5.5H2.7Z"/><path class="ln" d="M5.2 17.1v1.9M18.8 17.1v1.9"/>',
266 child: '<circle cx="12" cy="5.2" r="2.6"/><path class="ln" d="M7.7 10L12 8.6l4.3 1.4M12 8.6v5.8M9.1 20.1l2.9-5.8l2.9 5.8"/>',
267 walk: '<circle cx="12.4" cy="4.6" r="2.2"/><path class="ln" d="M8.7 19.8l2.4-5.5l1.9 2.2V19.8M11.1 14.3l0.9-5.2l-2.8 1.5l-1.4 2.8M12 9.1l1.8 2.8l2.8 0.9"/>',
268 finish: '<path d="M6.5 4.2h3.9v4.6H6.5ZM14.8 4.2h4a0.9 0.9 0 0 1 0.9 0.9v3.7h-4.9ZM10.5 8.6h4.5v4.6H10.5Z"/><path class="ln" d="M6 20.3V4.1"/>',
269 piggy: '<path fill-rule="evenodd" d="M2.6 11.4c0-3.6 3.7-6.5 8.7-6.5c1.4 0 2.7 0.2 3.9 0.7L18.3 3.8v3.7c0.9 0.8 1.5 1.7 1.7 2.8h1.5v3.8H20c-0.5 1.1-1.4 2-2.6 2.6V20.1h-3.3v-2.2c-0.9 0.2-1.8 0.3-2.8 0.3c-0.9 0-1.7-0.1-2.6-0.3v2.2h-3.3v-3.3C3.7 15.5 2.6 13.6 2.6 11.4ZM14.5 9.8a1.1 1.1 0 1 0 2.2 0a1.1 1.1 0 1 0-2.2 0ZM8.3 6.8v1.5h3.7V6.8Z"/>',
270 'folder-tree': '<path d="M9.6 5h4l1 1.5h6.4v5.3H9.6ZM9.6 14.3h4l1 1.5h6.4v5.3H9.6Z"/><path class="ln" d="M4.1 3.6v13.2a1 1 0 0 0 1 1H9.6M4.1 8.8H9.6"/>',
271 // 4.182.0, fifth batch: a laughing face, a cookie, a radio, a toolbox, a task, two windows, captions, an
272 // eraser, a seedling and a hammer.
273 laugh: '<path fill-rule="evenodd" d="M13 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM7.9 8.1l3.5 1.7l-3.5 1.7l-0.7-1.4l0.7-0.4l-0.7-0.4ZM18 8.1l-3.5 1.7l3.5 1.7l0.7-1.4l-0.7-0.4l0.7-0.4ZM8.5 13.5h8.9a4.4 4.4 0 0 1-8.9 0Z"/>',
274 cookie: '<path fill-rule="evenodd" d="M21.6 12.4a9.4 9.4 0 1 1-10-10a3.4 3.4 0 0 0 4.4 3.9a3.4 3.4 0 0 0 5.5 5.9ZM7 9.1a1.3 1.3 0 1 0 2.7 0a1.3 1.3 0 1 0-2.7 0ZM10.9 14a1.3 1.3 0 1 0 2.7 0a1.3 1.3 0 1 0-2.7 0ZM6.5 15.7a1.3 1.3 0 1 0 2.7 0a1.3 1.3 0 1 0-2.7 0ZM14.8 15.7a1.3 1.3 0 1 0 2.7 0a1.3 1.3 0 1 0-2.7 0Z"/>',
275 radio: '<path fill-rule="evenodd" d="M5.2 7.8h13.6a2.5 2.5 0 0 1 2.5 2.5v7.8a2.5 2.5 0 0 1-2.5 2.5H5.2A2.5 2.5 0 0 1 2.6 18.1v-7.8A2.5 2.5 0 0 1 5.2 7.8ZM12.9 14.2a2.5 2.5 0 1 0 5.1 0a2.5 2.5 0 1 0-5.1 0ZM6.1 11.6v2h4.7v-2ZM6.1 15v2h4.7v-2Z"/><path class="ln" d="M7.1 7.8L16.9 4"/>',
276 toolbox: '<path d="M2.7 10.1a2.5 2.5 0 0 1 2.5-2.5h13.6a2.5 2.5 0 0 1 2.5 2.5v2.2H2.7ZM2.7 13.7h4.7v1.5h1.6v-1.5h6.2v1.5h1.6v-1.5h4.7V17.8a2.5 2.5 0 0 1-2.5 2.5H5.2A2.5 2.5 0 0 1 2.7 17.8Z"/><path class="ln" d="M9.1 7.5V5.7A1.5 1.5 0 0 1 10.5 4.2h2.9A1.5 1.5 0 0 1 14.9 5.7v1.9"/>',
277 task: '<path fill-rule="evenodd" d="M6.6 2.7h10.9a3.9 3.9 0 0 1 3.9 3.9v10.9a3.9 3.9 0 0 1-3.9 3.9H6.6A3.9 3.9 0 0 1 2.7 17.4V6.6A3.9 3.9 0 0 1 6.6 2.7ZM6.5 12.1l4.6 4.6l6.6-7.9l-1.8-1.5l-5 6l-2.6-2.6Z"/>',
278 'window-restore': '<path d="M2.7 10.4a2.7 2.7 0 0 1 2.7-2.7h8.2a2.7 2.7 0 0 1 2.7 2.7v7.2a2.7 2.7 0 0 1-2.7 2.7h-8.2a2.7 2.7 0 0 1-2.7-2.7ZM7.9 6.4V6.3a2.7 2.7 0 0 1 2.7-2.7h8.2a2.7 2.7 0 0 1 2.7 2.7v7.2a2.7 2.7 0 0 1-2.7 2.7h-1.1v-5.8a4 4 0 0 0-4-4Z"/>',
279 cc: '<path fill-rule="evenodd" d="M5.6 4.6h12.7a3 3 0 0 1 3 3v8.8a3 3 0 0 1-3 3h-12.7a3 3 0 0 1-3-3v-8.8a3 3 0 0 1 3-3ZM10.8 9.5A3.2 3.2 0 1 0 10.8 14.5L9.6 13A1.3 1.3 0 1 1 9.6 11ZM17.4 9.5A3.2 3.2 0 1 0 17.4 14.5L16.2 13A1.3 1.3 0 1 1 16.2 11Z"/>',
280 eraser: '<path d="M14 3.9l6.1 6.1-5.2 5.2-6.1-6.1ZM7.4 10l6.2 6.2-3.2 3.2H6.1l-2.9-2.9a1.6 1.6 0 0 1 0-2.3Z"/><path class="ln" d="M13 19.4h7"/>',
281 seedling: '<path d="M12.4 10.8C12.4 6.1 9.5 2.9 4 2.9c0 4.9 3 7.8 8.4 7.8ZM11.6 13.4c0-4.7 3-7.8 8.4-7.8c0 4.9-3 7.8-8.4 7.8Z"/><path class="ln" d="M12 20.4V12.5"/>',
282 hammer: '<path d="M13.1 2.5l7.5 7.5l-3.7 3.7l-7.5-7.5ZM12.9 8.9L3.7 18.1a2.1 2.1 0 0 0 2.9 2.9l9.2-9.2Z"/>',
283 // 4.182.0, the "-off" family: the shape is cut along the slash (a band a little wider than the line), so the
284 // slash stays a line across it, as eye-off and mic-off already do.
285 'chat-off': '<path d="M8.1 4.6H19a1.6 1.6 0 0 1 1.6 1.6v9.5a1.6 1.6 0 0 1-0.4 1ZM3.4 7.3L12.9 16.8H8.3l-4.9 4.6Z"/><path class="ln" d="M4 4.2l16 16"/>',
286 'user-off': '<path d="M9.1 4.7A4.2 4.2 0 1 1 15 10.6ZM4.2 20.8c0-4.3 2.8-6.9 6.3-7.2L17.5 20.8Z"/><path class="ln" d="M4 3.5l16.2 16.2"/>',
287 'camera-off': '<path d="M8.5 4.6L9 3.8h6.1l1.7 2.5h2.5A1.8 1.8 0 0 1 21.2 8.1v9.1ZM3.8 7.3L16.7 20.2H4.8A1.8 1.8 0 0 1 3 18.4V8.1Z"/><path class="ln" d="M4 3.8l16.2 16.2"/>',
288 'cloud-off': '<path d="M10.1 5.7A6 6 0 0 1 17.9 9.8a4.1 4.1 0 0 1 2.8 6.5ZM6.6 9.1L15.5 18H7.9A4.4 4.4 0 0 1 6.4 9.2Z"/><path class="ln" d="M5.1 4.2l15 15"/>',
289 // 4.182.0, third batch: a die, a lifebuoy, cubes, a paw, a weight, and a person with a pen or a tag.
290 dice: '<path fill-rule="evenodd" d="M6.2 2.7h11.5a3.6 3.6 0 0 1 3.6 3.6v11.5a3.6 3.6 0 0 1-3.6 3.6H6.2a3.6 3.6 0 0 1-3.6-3.6V6.2a3.6 3.6 0 0 1 3.6-3.6ZM6.2 8.2a2 2 0 1 0 3.9 0a2 2 0 1 0-3.9 0ZM13.8 8.2a2 2 0 1 0 3.9 0a2 2 0 1 0-3.9 0ZM10 12a2 2 0 1 0 3.9 0a2 2 0 1 0-3.9 0ZM6.2 15.8a2 2 0 1 0 3.9 0a2 2 0 1 0-3.9 0ZM13.8 15.8a2 2 0 1 0 3.9 0a2 2 0 1 0-3.9 0Z"/>',
291 lifebuoy: '<path fill-rule="evenodd" d="M13.1 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7Zm0 5.3a4.1 4.1 0 1 1 0 8.2a4.1 4.1 0 0 1 0-8.2ZM15.5 16.2L18.4 19.1L20.2 17.3L17.2 14.3ZM10.8 16.2L7.9 19.1L6 17.3L9 14.3ZM15.5 7.8L18.4 4.9L20.2 6.7L17.2 9.7ZM10.8 7.8L7.9 4.9L6 6.7L9 9.7Z"/>',
292 cubes: '<path d="M12 2.3L7.8 4.4v4.8l4.2 2.1l4.2-2.1V4.4ZM6.8 12.1L2.7 14.2v4.8l4.2 2.1l4.2-2.1v-4.8ZM17.2 12.1l-4.2 2.1v4.8l4.2 2.1l4.2-2.1v-4.8Z"/>',
293 paw: '<path d="M6.9 18.5c0-3.5 2.2-6.3 5.1-6.3s5.1 2.8 5.1 6.3c0 1.8-1.3 2.9-2.9 2.9c-0.9 0-1.5-0.6-2.2-0.6s-1.3 0.6-2.2 0.6c-1.6 0-2.9-1.1-2.9-2.9Z"/><circle cx="5.1" cy="10.2" r="2.6"/><circle cx="9.1" cy="5.1" r="2.6"/><circle cx="14.9" cy="5.1" r="2.6"/><circle cx="18.9" cy="10.2" r="2.6"/>',
294 weight: '<circle cx="12" cy="4.8" r="2.6"/><path d="M6.5 8.7h10.9l3.3 12.3H3.2Z"/>',
295 'user-pen': '<circle cx="9.8" cy="7.6" r="4"/><path d="M2.9 19.9c0-4 3.1-6.7 6.9-6.7c1.2 0 2.2 0.3 3.1 0.8v5.9Z"/><path d="M19.5 11.4l2.1 2.1l-5.2 5.2l-2.8 0.7l0.7-2.8Z"/>',
296 'user-tag': '<circle cx="10" cy="7.4" r="4"/><path d="M2.9 19.9c0-4 3.2-6.8 7-6.8c1.2 0 2.3 0.3 3.2 0.8v6Z"/><path fill-rule="evenodd" d="M14 13.7h4.5l3.1 3.1l-3.1 3.1h-4.5ZM15.2 16.8a1.1 1.1 0 1 0 2.2 0a1.1 1.1 0 1 0-2.2 0Z"/>',
297 // 4.182.0, second batch: marks in a disc, the media keys, and a few things (flame, mug, clapper, a person with
298 // a badge). A mark inside a filled shape is cut out of it; a thin part that must stay a line is class "ln".
299 'plus-circle': '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7Zm-1.2 4.2h2.5v3.8H18v2.5h-3.8V17.1h-2.5v-3.8H7.9v-2.5h3.8Z"/>',
300 'minus-circle': '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM7.9 10.9v2.5h10.2v-2.5Z"/>',
301 contrast: '<path fill-rule="evenodd" d="M12.4 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7Zm0 2.1a7.2 7.2 0 0 1 0 14.4Z"/>',
302 rewind: '<path d="M21 5.5v13.1L12 12ZM11.3 5.5v13.1L2.2 12Z"/>',
303 'fast-forward': '<path d="M3 5.5v13.1L12 12ZM12.7 5.5v13.1L21.8 12Z"/>',
304 skip: '<path d="M3.3 2.6v18.9L15.8 12Z"/><rect x="17.8" y="2.7" width="3.2" height="18.7" rx="1.5"/>',
305 flame: '<path fill-rule="evenodd" d="M12 20.9c3.8 0 6.4-2.6 6.4-6.1c0-4.3-4.4-7.7-5.9-12.6h-1C10 7.2 5.6 10.5 5.6 14.9c0 3.5 2.6 6.1 6.4 6.1Zm0-3.3c1.2 0 1.9-0.8 1.9-1.9c0-1.2-1-2.1-1.9-3.5c-1 1.4-1.9 2.3-1.9 3.5c0 1.1 0.8 1.9 1.9 1.9Z"/>',
306 'heart-broken': '<path fill-rule="evenodd" d="M12 21.6s-9.3-5.7-9.3-13a5.3 5.3 0 0 1 9.3-3.6a5.3 5.3 0 0 1 9.3 3.6c0 7.4-9.3 13-9.3 13ZM10.9 5.9l2.7 0.6l-1.4 2.7l3.6 2.5l-2.6 5.9l-2.5-1.1l1.5-3.7l-3.7-2.5Z"/>',
307 clapper: '<path fill-rule="evenodd" d="M2.6 5.9L19.9 2.7l0.9 4.3L3.2 8.7ZM7 5.1L9.2 8.1l2.6-0.2L9.6 4.6ZM12.6 4l2.2 3.6l2.6-0.3L15.2 3.6Z"/><path d="M3.1 9.9h18.2v9a1.6 1.6 0 0 1-1.6 1.6h-15a1.6 1.6 0 0 1-1.6-1.6Z"/>',
308 mug: '<path d="M3.8 8.9h12.2v7.6a4.6 4.6 0 0 1-4.6 4.6h-3a4.6 4.6 0 0 1-4.6-4.6Z"/><path class="ln" d="M16 11H16.9a2.5 2.5 0 0 1 0 5h-0.9M7.9 3.7c-0.8 1 0.8 2 0 3M11.4 3.7c-0.8 1 0.8 2 0 3"/>',
309 'user-minus': '<circle cx="9.6" cy="7.6" r="3.9"/><path d="M2.8 19.7c0-3.9 3.1-6.6 6.8-6.6c1.2 0 2.2 0.3 3.1 0.8v5.9Z"/><path class="ln" d="M15.1 16.7h5.2"/>',
310 'user-lock': '<circle cx="9.9" cy="7.2" r="4.2"/><path d="M2.7 20c0-4.2 3.2-7 7.2-7c1.2 0 2.3 0.3 3.2 0.8v6.2Z"/><rect x="14.5" y="14.5" width="6.9" height="5.7" rx="1.3"/><path class="ln" d="M16.4 14.5v-1a1.5 1.5 0 0 1 3 0v1"/>',
311 'clipboard-check': '<path fill-rule="evenodd" d="M7.5 4.2h9a2 2 0 0 1 2 2v13.1a2 2 0 0 1-2 2H7.5a2 2 0 0 1-2-2V6.3a2 2 0 0 1 2-2ZM8 13.1L11 16.1l5-5l-1.6-1.6l-3.4 3.4l-1.5-1.5Z"/><rect x="8.7" y="2.5" width="6.6" height="3.7" rx="1.2"/>',
312 'file-code': '<path fill-rule="evenodd" d="M5.8 2.4h7.6v5.2h5V21.2H5.8ZM9.8 11l1.5 1.4l-1.6 1.7l1.6 1.7l-1.5 1.4l-2.9-3.1ZM14.4 11l-1.5 1.4l1.6 1.7l-1.6 1.7l1.5 1.4l2.9-3.1Z"/><path d="M15 2.7l3.1 3.3h-3.1Z"/>',
313 // 4.182.0: thirteen more shapes that are shown small (frames, cards and the person in a circle). A frame's
314 // inner line becomes a gap between two filled panels, so the shape still reads at 14 px.
315 grid: '<rect x="2.7" y="2.7" width="8" height="8" rx="2.2"/><rect x="13.3" y="2.7" width="8" height="8" rx="2.2"/><rect x="2.7" y="13.3" width="8" height="8" rx="2.2"/><rect x="13.3" y="13.3" width="8" height="8" rx="2.2"/>',
316 square: '<rect x="2.7" y="2.7" width="18.7" height="18.7" rx="3.3"/>',
317 more: '<circle cx="4.8" cy="12" r="2.2"/><circle cx="12" cy="12" r="2.2"/><circle cx="19.2" cy="12" r="2.2"/>',
318 record: '<path fill-rule="evenodd" d="M13.2 2.7a9.3 9.3 0 1 0 0 18.5a9.3 9.3 0 0 0 0-18.5Zm0 3.3a6 6 0 1 1 0 11.9a6 6 0 0 1 0-11.9Z"/><circle cx="13.2" cy="12" r="3.7"/>',
319 window: '<path d="M2.6 6.2a2.7 2.7 0 0 1 2.7-2.7h13.4a2.7 2.7 0 0 1 2.7 2.7v1.5H2.6ZM2.6 9.8h18.7v7.7a2.7 2.7 0 0 1-2.7 2.7h-13.4a2.7 2.7 0 0 1-2.7-2.7Z"/>',
320 sidebar: '<path d="M2.6 6.3a2.7 2.7 0 0 1 2.7-2.7h2.8v16.6H5.3a2.7 2.7 0 0 1-2.7-2.7ZM10.1 3.7h8.5a2.7 2.7 0 0 1 2.7 2.7v11.3a2.7 2.7 0 0 1-2.7 2.7h-8.5Z"/>',
321 columns: '<path d="M2.6 6.3a2.7 2.7 0 0 1 2.7-2.7h13.4a2.7 2.7 0 0 1 2.7 2.7v1.5H2.6ZM2.6 9.9h8.3v10.4H5.3a2.7 2.7 0 0 1-2.7-2.7ZM13 9.9h8.3v7.7a2.7 2.7 0 0 1-2.7 2.7H13Z"/>',
322 table: '<path d="M2.7 6.2a2.5 2.5 0 0 1 2.5-2.5h13.6a2.5 2.5 0 0 1 2.5 2.5v2.3H2.7ZM2.7 10.5h5.3v9.9H5.2a2.5 2.5 0 0 1-2.5-2.5ZM9.8 10.5h4.5v9.9H9.8ZM16.1 10.5h5.3V17.9a2.5 2.5 0 0 1-2.5 2.5h-2.7Z"/>',
323 card: '<path fill-rule="evenodd" d="M2.6 7.4a2.4 2.4 0 0 1 2.4-2.4h13.9a2.4 2.4 0 0 1 2.4 2.4v9.3a2.4 2.4 0 0 1-2.4 2.4h-13.9a2.4 2.4 0 0 1-2.4-2.4ZM2.6 9.5v1.7h18.7V9.5ZM5.9 14.2v1.5h4.8v-1.5Z"/>',
324 briefcase: '<path d="M2.7 9.1a2.5 2.5 0 0 1 2.5-2.5h13.6a2.5 2.5 0 0 1 2.5 2.5v2.8H2.7ZM2.7 13.1h7.2v1.5h4.3v-1.5h7.2V17.9a2.5 2.5 0 0 1-2.5 2.5H5.2a2.5 2.5 0 0 1-2.5-2.5Z"/><path class="ln" d="M9.1 6.6V5.7A1.5 1.5 0 0 1 10.5 4.2h2.9A1.5 1.5 0 0 1 14.9 5.7v0.9"/>',
325 inbox: '<path fill-rule="evenodd" d="M2.7 12.4L5.2 3.7h13.6l2.5 8.8V17.9a1.6 1.6 0 0 1-1.6 1.6H4.2A1.6 1.6 0 0 1 2.7 17.9ZM6.4 5.6L4.6 11.5h3.8l1.5 2.4h4.3l1.5-2.4h3.8L17.6 5.6Z"/>',
326 'user-circle': '<path fill-rule="evenodd" d="M13 2.9a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7Zm0 3.8a3.3 3.3 0 1 1 0 6.5a3.3 3.3 0 0 1 0-6.5ZM7.2 17.9a6.7 6.7 0 0 1 11.5 0a8.1 8.1 0 0 1-11.5 0Z"/>',
327 compass: '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM17.4 7.7L14.9 14.1L8.5 16.5L11 10.1Z"/>',
328 print: '<path d="M6.2 2.6h11.5v4.4H6.2ZM2.6 11a2.7 2.7 0 0 1 2.7-2.7h13.4a2.7 2.7 0 0 1 2.7 2.7v4.1a2.7 2.7 0 0 1-2.7 2.7h-0.3v-4.5H5.6v4.5h-0.3A2.7 2.7 0 0 1 2.6 15.1ZM7.1 14.7h9.9v6.7H7.1Z"/>',
329 // 4.73.0: the most-used shapes on the sites (Live's sweep, 2026-11-01) get their solid drawing too.
330 copy: '<rect x="7.5" y="7.5" width="13.8" height="13.8" rx="2.5"/><path class="ln" d="M16.4 7.5V5.9a2.1 2.1 0 0 0-2.1-2.1H5.9a2.1 2.1 0 0 0-2.1 2.1v8.5a2.1 2.1 0 0 0 2.1 2.1h1.7"/>',
331 scissors: '<path fill-rule="evenodd" d="M6.2 3.8a3.2 3.2 0 1 1 0 6.5a3.2 3.2 0 0 1 0-6.5Zm0 2a1.2 1.2 0 1 0 0 2.4a1.2 1.2 0 0 0 0-2.4ZM6.2 13.7a3.2 3.2 0 1 1 0 6.5a3.2 3.2 0 0 1 0-6.5Zm0 2a1.2 1.2 0 1 0 0 2.4a1.2 1.2 0 0 0 0-2.4Z"/><path class="ln" d="M8.7 8.8L20.4 18.1M8.7 15.2L20.4 5.9"/>',
332 volume: '<path d="M2.5 8.9h4l5.4-4.2v14.6l-5.4-4.2H2.5Z"/><path class="ln" d="M15.2 9.3a3.8 3.8 0 0 1 0 5.5M17.7 6.5a7.5 7.5 0 0 1 0 11"/>',
333 mute: '<path d="M2.9 8.8h4l5.5-4.2v14.8l-5.5-4.2H2.9Z"/><path class="ln" d="M15.5 9.6l4.7 4.7M20.3 9.6l-4.7 4.7"/>',
334 robot: '<path fill-rule="evenodd" d="M8.5 8.7h6.9a3.1 3.1 0 0 1 3.1 3.1v4.3A3.1 3.1 0 0 1 15.5 19.3H8.5A3.1 3.1 0 0 1 5.4 16.2v-4.3A3.1 3.1 0 0 1 8.5 8.7Zm0.9 3.8a1.2 1.2 0 1 0 0 2.4a1.2 1.2 0 0 0 0-2.4Zm5.2 0a1.2 1.2 0 1 0 0 2.4a1.2 1.2 0 0 0 0-2.4ZM9.7 16v1.3h4.5v-1.3Z"/><path class="ln" d="M12 5.3v3.5M3.9 13.1v2.8M20.2 13.1v2.8"/>',
335 film: '<path fill-rule="evenodd" d="M4.8 3.6h14.4a2.3 2.3 0 0 1 2.3 2.3v12.3a2.3 2.3 0 0 1-2.3 2.3H4.8A2.3 2.3 0 0 1 2.5 18.2V5.8A2.3 2.3 0 0 1 4.8 3.6Zm3.8 2v12.9h6.8V5.5ZM4.4 6v2h2.1V6Zm0 5v1.8h2.1v-1.8Zm0 4.9v2h2.1v-2Zm13.1-10v2h2.1V6Zm0 5v1.8h2.1v-1.8Zm0 4.9v2h2.1v-2Z"/>',
336 clipboard: '<path fill-rule="evenodd" d="M7.5 4.2h9a2 2 0 0 1 2 2v13.1a2 2 0 0 1-2 2H7.5a2 2 0 0 1-2-2V6.3a2 2 0 0 1 2-2ZM9.1 9.9v1.6h5.8v-1.6Zm0 3.9v1.6h3.9v-1.6Z"/><rect x="8.7" y="2.5" width="6.6" height="3.7" rx="1.2"/>',
337 computer: '<rect x="2.6" y="3.4" width="18.8" height="12.8" rx="2.2"/><path class="ln" d="M8 20h8M12 16.2v3.8"/>',
338 sliders: '<path class="ln" d="M4 7h8.8M19.2 7H20M4 17h2.8M13.2 17H20"/><circle cx="16" cy="7" r="3.2"/><circle cx="10" cy="17" r="3.2"/>',
339 pencil: '<path d="M15.6 3.1a2.2 2.2 0 0 1 3.2 3.2L6.9 18.1l-4.5 1.2l1.2-4.5Z"/><path class="ln" d="M11.8 19.7H20.1"/>',
340 save: '<path fill-rule="evenodd" d="M4.4 2.7h12.4l3.5 3.5V20.8a0.7 0.7 0 0 1-0.7 0.7H4.4a0.7 0.7 0 0 1-0.7-0.7V3.4a0.7 0.7 0 0 1 0.7-0.7Zm3.4 1.4v4.9h7.4V4.1ZM7.2 13.6v6.4h9.6v-6.4Z"/>',
341 plug: '<path d="M6.5 8h10.9v3.3a5.4 5.4 0 0 1-10.9 0Z"/><path class="ln" d="M9.2 4.2v3.8M14.6 4.2v3.8M11.9 16.8v3.5"/>',
342 puzzle: '<path d="M2.8 5.4h5a2.9 2.9 0 1 1 5.8 0h5v5a2.9 2.9 0 1 1 0 5.8v5h-5a2.9 2.9 0 1 0-5.8 0H2.8v-5a2.9 2.9 0 1 0 0-5.8Z"/>',
343 chart: '<path class="ln" d="M4 3.5v16.2h16.2"/><path d="M7 14.9L11 10.3l3 2.5l5.2-6.2V17.7H7Z"/>',
344 gear: '<path fill-rule="evenodd" d="M18.2 14.6a1.4 1.4 0 0 0 0.3 1.7l0.1 0.1a1.7 1.7 0 1 1-2.7 2.7l-0.1-0.1a1.4 1.4 0 0 0-1.7-0.3a1.4 1.4 0 0 0-0.9 1.4V19.6a1.7 1.7 0 1 1-3.8 0v-0.1a1.4 1.4 0 0 0-1-1.4a1.4 1.4 0 0 0-1.7 0.3l-0.1 0.1a1.7 1.7 0 1 1-2.7-2.7l0.1-0.1a1.4 1.4 0 0 0 0.3-1.7a1.4 1.4 0 0 0-1.4-0.9H4.6a1.7 1.7 0 1 1 0-3.8h0.1a1.4 1.4 0 0 0 1.4-1a1.4 1.4 0 0 0-0.3-1.7l-0.1-0.1a1.7 1.7 0 1 1 2.7-2.7l0.1 0.1a1.4 1.4 0 0 0 1.7 0.3H9.6a1.4 1.4 0 0 0 0.9-1.4V4.6a1.7 1.7 0 1 1 3.8 0v0.1a1.4 1.4 0 0 0 0.9 1.4a1.4 1.4 0 0 0 1.7-0.3l0.1-0.1a1.7 1.7 0 1 1 2.7 2.7l-0.1 0.1a1.4 1.4 0 0 0-0.3 1.7V9.6a1.4 1.4 0 0 0 1.4 0.9H19.6a1.7 1.7 0 1 1 0 3.8h-0.1a1.4 1.4 0 0 0-1.4 0.9ZM12.1 9.3a2.8 2.8 0 1 0 0 6.5a2.8 2.8 0 0 0 0-6.5Z"/>',
345 search: '<path fill-rule="evenodd" d="M10.6 3a7.7 7.7 0 1 1 0 15.4a7.7 7.7 0 0 1 0-15.4Zm0 3.2a4.5 4.5 0 1 0 0 9.2a4.5 4.5 0 0 0 0-9.2Z"/><path class="ln" d="M16.3 16.4l3.8 3.8"/>',
346 game: '<path fill-rule="evenodd" d="M7.6 6.3h8.8a5.8 5.8 0 0 1 0 11.5H7.6a5.8 5.8 0 0 1 0-11.5Zm-1.4 3.7v1.6H4.7v1.8h1.6v1.6H7.9v-1.6h1.6v-1.8H7.9v-1.6Zm9.2 1a1.2 1.2 0 1 0 0 2.3a1.2 1.2 0 0 0 0-2.3Zm2.5 1.6a1.2 1.2 0 1 0 0 2.3a1.2 1.2 0 0 0 0-2.3Z"/>',
347 idea: '<path d="M8.3 14.9A6.5 6.5 0 1 1 15.7 14.9c-0.7 0.6-1.3 1.3-1.4 2.2H9.7c-0.1-0.9-0.7-1.6-1.4-2.2Z"/><path class="ln" d="M9.6 20.5h4.8"/>',
348 wrench: '<path d="M14.9 2.5a6 6 0 0 0-5.5 8.3L2.7 17.5V21.3H6.5l6.7-6.7a6 6 0 0 0 8.3-5.5l-3.5 1.3l-2.9-2.9l1.3-3.5Z"/>',
349 target: '<path fill-rule="evenodd" d="M12 2.6a9.4 9.4 0 1 1 0 18.8a9.4 9.4 0 0 1 0-18.8Zm0 3a6.4 6.4 0 1 0 0 12.9a6.4 6.4 0 0 0 0-12.9Zm0 2.7a3.7 3.7 0 1 1 0 7.4a3.7 3.7 0 0 1 0-7.4Z"/>',
350 nodes: '<circle cx="12" cy="5.2" r="3"/><circle cx="5.6" cy="18" r="3"/><circle cx="18.4" cy="18" r="3"/><path class="ln" d="M10.9 7.6L6.8 15.5M13.1 7.6l4.1 7.9M8.4 18h7.1"/>',
351 'book-open': '<path d="M10.9 5.8C8.8 4.4 6 3.8 2.5 4.5v14c3.5-0.6 6.3 0 8.4 1.5ZM13.1 5.8c2.1-1.5 5-2 8.4-1.4v14c-3.5-0.6-6.3 0-8.4 1.5Z"/>',
352 book: '<path d="M4.3 5.2A2.4 2.4 0 0 1 6.8 2.7h12.2v14.6H6.8a2.4 2.4 0 0 0-2.4 2.4Z"/><path class="ln" d="M7.2 20.2h11.2"/>',
353 fire: '<path fill-rule="evenodd" d="M12.1 19.8a6.8 6.8 0 0 0 6.8-6.8c0-4.3-2.9-6.8-4.2-10.3c-2.1 2.3-2.6 4.6-2.6 4.6S10.8 5.1 9.6 3C7.1 5.9 5.2 9.2 5.2 12.9A6.8 6.8 0 0 0 12.1 21.4Zm0-2.8a2.8 2.8 0 0 0 2.8-2.8c0-1.6-1.2-2.7-1.7-4c-0.9 1-1.1 1.8-1.1 1.8s-0.5-0.9-1-1.6c-1 1.2-1.7 2.5-1.7 3.9a2.8 2.8 0 0 0 2.7 2.7Z"/>',
354 info: '<path fill-rule="evenodd" d="M12.9 2.6a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM11.7 10.5h2.5V16.9h-2.5ZM12.9 6.4a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3Z"/>',
355 'alert-circle': '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM11.7 6.9h2.5v7.1h-2.5ZM12.9 15.3a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3Z"/>',
356 alert: '<path fill-rule="evenodd" d="M10.5 4.1a1.7 1.7 0 0 1 3 0l7.7 13.3a1.7 1.7 0 0 1-1.5 2.6H4.3a1.7 1.7 0 0 1-1.5-2.6ZM11 8.8h2v5.2h-2ZM12 15.2a1.2 1.2 0 1 1 0 2.4a1.2 1.2 0 0 1 0-2.4Z"/>',
357 heart: '<path d="M12 21.6s-9.3-5.7-9.3-13a5.3 5.3 0 0 1 9.3-3.6a5.3 5.3 0 0 1 9.3 3.6c0 7.4-9.3 13-9.3 13Z"/>',
358 star: '<path d="M12 2.8l2.9 6l6.6 0.8l-4.9 4.5l1.3 6.6L12 17.4l-5.9 3.2l1.3-6.6l-4.9-4.5l6.6-0.8Z"/>',
359 bell: '<path d="M5.2 15.4V9.6a6.8 6.8 0 0 1 13.7 0v5.7l1.9 2.6H3.3ZM9.7 19.3h4.6a2.3 2.3 0 0 1-4.6 0Z"/>',
360 user: '<circle cx="12" cy="6.7" r="4.5"/><path d="M3.5 21c0-4.7 3.8-7.8 8.5-7.8s8.5 3.2 8.5 7.8Z"/>',
361 members: '<circle cx="9.1" cy="7.1" r="3.5"/><path d="M2.6 19.6c0-3.7 2.9-6.3 6.4-6.3s6.4 2.6 6.4 6.3Z"/><circle cx="16.5" cy="6.6" r="2.8"/><path d="M16.7 12.4c2.8 0.4 4.7 2.7 4.7 6.2V19.6h-4.3c0-2.8-1-5.1-2.7-6.5Z"/>',
362 chat: '<path d="M2.7 4.7A1.8 1.8 0 0 1 4.5 3h15.2a1.8 1.8 0 0 1 1.8 1.8v10.9a1.8 1.8 0 0 1-1.8 1.8H8.3L2.7 21.8Z"/>',
363 eye: '<path fill-rule="evenodd" d="M12 5.3C6.4 5.3 2.6 12 2.6 12s3.9 6.7 9.4 6.7S21.5 12 21.5 12S17.6 5.3 12 5.3Zm0 3.3a3.3 3.3 0 1 1 0 6.7a3.3 3.3 0 0 1 0-6.7Z"/><circle cx="12" cy="12" r="1.6"/>',
364 clock: '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM11.9 6.6h2.3v5l3.3 2l-1.1 2l-4.3-2.7Z"/>',
365 pin: '<path fill-rule="evenodd" d="M12 2.8a7.1 7.1 0 0 0-7.1 7.1c0 5.5 7.1 11.8 7.1 11.8s7.1-6.3 7.1-11.8A7.1 7.1 0 0 0 12 2.8Zm0 4.5a2.5 2.5 0 1 1 0 5.1a2.5 2.5 0 0 1 0-5.1Z"/>',
366 home: '<path d="M2.7 10.4L12 2.3l9.3 8.1v9.5a1.1 1.1 0 0 1-1.1 1.1h-5.6v-6.9h-5.4v6.9H3.8a1.1 1.1 0 0 1-1.1-1.1Z"/>',
367 camera: '<path fill-rule="evenodd" d="M2.5 7.8a1.9 1.9 0 0 1 1.9-1.9h2.6L8.8 3.3h6.3l1.8 2.6h2.6A1.9 1.9 0 0 1 21.5 7.8v10.7a1.9 1.9 0 0 1-1.9 1.9H4.4A1.9 1.9 0 0 1 2.5 18.5Zm9.5 2a3.6 3.6 0 1 0 0 7.2a3.6 3.6 0 0 0 0-7.2Z"/>',
368 video: '<path d="M3 7.7a2 2 0 0 1 2-2H14.4a2 2 0 0 1 2 2v8.7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2ZM17.5 10.1l4.2-2.6v8.9l-4.2-2.6Z"/>',
369 mic: '<path d="M8.9 5.8a3.1 3.1 0 0 1 6.2 0V10.8a3.1 3.1 0 0 1-6.2 0Z"/><path class="ln" d="M5.9 10.8a6.1 6.1 0 0 0 12.3 0M12 16.9V20.2"/>',
370 lock: '<path d="M4.6 11.1a1.6 1.6 0 0 1 1.6-1.6h11.5a1.6 1.6 0 0 1 1.6 1.6v8.4a1.6 1.6 0 0 1-1.6 1.6H6.2A1.6 1.6 0 0 1 4.6 19.6Z"/><path class="ln" d="M7.9 9.4V6.8a4.1 4.1 0 0 1 8 0V9.4"/>',
371 shield: '<path d="M12 2.6 4.6 5.8V12c0 4.6 3.1 8 7.4 9.5 4.3-1.5 7.4-4.9 7.4-9.5V5.8Z"/>',
372 crown: '<path d="M2.6 7.3L7.4 11.5L12 4.1L16.6 11.5l4.8-4.2l-2 11.7H4.6Z"/>',
373 trophy: '<path d="M7.3 3h9.6V8.6a4.7 4.7 0 0 1-9.6 0Z"/><path class="ln" d="M7.3 5.6H5a3.1 3.1 0 0 0 3.1 4.1M16.7 5.6h2.3a3.1 3.1 0 0 1-3.1 4.1M12 13.7V16.9M8 20.4h8.1"/>',
374 tag: '<path fill-rule="evenodd" d="M2.9 3.4A1.5 1.5 0 0 1 4.4 2.9h7.2l10 10l-8.7 8.7L2.9 10.6Zm5 2.5a1.9 1.9 0 1 0 0 3.7a1.9 1.9 0 0 0 0-3.7Z"/>',
375 zap: '<path d="M13.9 2.5L5.2 13.3h6.1l-1.2 8.1l8.7-10.8h-6.1Z"/>',
376 play: '<path d="M5.1 3.5v17a0.9 0.9 0 0 0 1.3 0.8l12.8-8.5a0.9 0.9 0 0 0 0-1.6L6.5 2.7a0.9 0.9 0 0 0-1.3 0.8Z"/>',
377 pause: '<rect x="4.8" y="2.6" width="5.1" height="18.8" rx="1.5"/><rect x="14.2" y="2.6" width="5.1" height="18.8" rx="1.5"/>',
378 spark: '<path d="M10.7 2.6l2 5.6l5.6 2l-5.6 2L10.7 17.8l-2-5.6l-5.6-2l5.6-2ZM17.6 14.7l0.9 2.5l2.5 0.9l-2.5 0.9l-0.9 2.5l-0.9-2.5l-2.5-0.9l2.5-0.9Z"/>',
379 flag: '<path class="ln" d="M7.2 20.5V4.3"/><path d="M7.8 4.1h10.9l-2 4.1l2 4.1H7.8Z"/>',
380 folder: '<path d="M2.7 6.4a2.1 2.1 0 0 1 2.1-2.1h4.4l2.1 2.1h8.1a2.1 2.1 0 0 1 2.1 2.1v8.7a2.1 2.1 0 0 1-2.1 2.1H4.8a2.1 2.1 0 0 1-2.1-2.1Z"/>',
381 file: '<path d="M5.8 2.4h7.6v5.2h5V21.2H5.8ZM15 2.7l3.1 3.3h-3.1Z"/>',
382 image: '<path fill-rule="evenodd" d="M2.8 6.1a2.7 2.7 0 0 1 2.7-2.7h13.3A2.7 2.7 0 0 1 21.5 6.1v12.3a2.7 2.7 0 0 1-2.7 2.7H5.4A2.7 2.7 0 0 1 2.8 18.4Zm6.2 2.2a2 2 0 1 0 0 3.9a2 2 0 0 0 0-3.9Zm7.5 3.5l-8.3 7.8h10.7a1.5 1.5 0 0 0 1.5-1.5v-3.1Z"/>',
383 cloud: '<path d="M7.9 18.2h9.6a4.2 4.2 0 0 0 0.6-8.3A6.1 6.1 0 0 0 6.5 9.2A4.5 4.5 0 0 0 7.9 18.2Z"/>',
384 moon: '<path d="M21.7 14.6A9.7 9.7 0 1 1 9.4 2.3a8 8 0 0 0 12.3 12.3Z"/>',
385 drop: '<path d="M12 2.2s7 7.4 7 12.6a7 7 0 0 1-13.9 0C5 9.6 12 2.2 12 2.2Z"/>',
386 'check-circle': '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM17.3 8.9l1.6 1.6l-7 7l-4.1-4.1l1.6-1.6l2.6 2.6Z"/>',
387 'x-circle': '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM10.1 7.9L12.9 10.7l2.9-2.9l1.4 1.4l-2.9 2.9l2.9 2.9l-1.4 1.4l-2.9-2.9l-2.9 2.9l-1.4-1.4l2.9-2.9l-2.9-2.9Z"/>',
388 smile: '<path fill-rule="evenodd" d="M12.9 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM9.9 8.6a1.4 1.4 0 1 1 0 2.8a1.4 1.4 0 0 1 0-2.8ZM16 8.6a1.4 1.4 0 1 1 0 2.8a1.4 1.4 0 0 1 0-2.8ZM8.8 13.5h8.3a4.1 4.1 0 0 1-8.3 0Z"/>',
389 calendar: '<path fill-rule="evenodd" d="M4.1 8.1a2 2 0 0 1 2-2h11.8a2 2 0 0 1 2 2V19.5a2 2 0 0 1-2 2H6.1a2 2 0 0 1-2-2Zm2.2 3.9V19.3h11.4v-7.3Z"/><path class="ln" d="M9 3.9v3.5M15 3.9v3.5"/>',
390 'thumbs-up': '<path d="M6.5 10.1v10.3H3.6a1.1 1.1 0 0 1-1.1-1.1v-8a1.1 1.1 0 0 1 1.1-1.1ZM7.9 10.1l3.6-7.3a2.4 2.4 0 0 1 2.7 2.8l-0.6 3.5h5.6a2.2 2.2 0 0 1 2.2 2.6l-1.4 7a2.2 2.2 0 0 1-2.2 1.7H7.9Z"/>',
391 megaphone: '<path d="M2.7 9.1a1.1 1.1 0 0 1 1.1-1.1h2.7l9.7-4.8v16.1l-9.7-4.8H3.8A1.1 1.1 0 0 1 2.7 13.2Z"/><path class="ln" d="M6.6 14.5l1.2 5M18.8 8.5a3.4 3.4 0 0 1 0 5.4"/>',
392 gem: '<path d="M6.4 3.9h11.2l3.8 5.3l-9.4 11.6L2.6 9.2Z"/>',
393 ghost: '<path fill-rule="evenodd" d="M3.4 21.3V9.9a8.7 8.7 0 0 1 17.2 0v11.5l-2.9-2.1l-2.9 2.1l-2.9-2.1l-2.9 2.1l-2.9-2.1ZM8.8 7.8a1.6 1.6 0 1 0 0 3.1a1.6 1.6 0 0 0 0-3.1Zm6.2 0a1.6 1.6 0 1 0 0 3.1a1.6 1.6 0 0 0 0-3.1Z"/>',
394 trash: '<path d="M5.8 7.6h12.4l-1 12a2 2 0 0 1-2 1.8H8.8a2 2 0 0 1-2-1.8Z"/><path class="ln" d="M3.8 6.6h16.4M9 6.6V4h6v2.6"/>',
395 coin: '<path fill-rule="evenodd" d="M13 2.6a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM12 5.8h2.1v1.2c1.1 0.2 2.1 0.8 2.6 1.7l-1.7 1c-0.3-0.6-1-1-1.8-1c-0.9 0-1.5 0.4-1.5 1s0.5 0.8 1.8 1.1c1.8 0.4 3.5 1 3.5 3.1c0 1.4-1 2.5-2.8 2.8V18h-2.1v-1.3c-1.2-0.2-2.3-0.9-2.8-2l1.7-1c0.4 0.7 1.1 1.1 2.1 1.1c1 0 1.6-0.4 1.6-1s-0.6-0.8-2-1.1c-1.7-0.4-3.4-1-3.4-3c0-1.3 1-2.4 2.7-2.7Z"/>',
396 live: '<circle cx="12" cy="12" r="2.5"/><path class="ln" d="M8.5 8.5a4.9 4.9 0 0 0 0 6.9M15.5 8.5a4.9 4.9 0 0 1 0 6.9M6.2 6.2a8.2 8.2 0 0 0 0 11.5M17.8 6.2a8.2 8.2 0 0 1 0 11.5"/>',
397 gift: '<path d="M3.1 8.6h17.7v3.3H3.1ZM4.4 12.9h6.6v8.2H5.4a1 1 0 0 1-1-1ZM13 12.9h6.6v7.2a1 1 0 0 1-1 1H13Z"/><path class="ln" d="M12 8.6c-1.5-3.1-5.1-4.1-5.1-1.5S12 8.6 12 8.6s5.1-1 5.1-3.6s-3.6-1.5-5.1 3.6"/>',
398 music: '<path d="M7.6 5.4l13.3-2.5v3.5l-13.3 2.5Z"/><path class="ln" d="M8.8 17.9V6.5M19.7 15.6V4.2"/><circle cx="5.5" cy="17.9" r="3.2"/><circle cx="16.7" cy="15.6" r="3.2"/>',
399 // 4.80.0: the next most-used shapes (Shared's usage sweep, 2026-11-01), drawn the same way; an "off" glyph
400 // keeps its slash as a line, with the shape cut back from it.
401 globe: '<path d="M2.6 11.1A9.5 9.5 0 0 1 12 2.6a4.5 9.5 0 0 0-4.5 8.5ZM21.4 11.1A9.5 9.5 0 0 0 12 2.6a4.5 9.5 0 0 1 4.5 8.5ZM2.6 12.9A9.5 9.5 0 0 0 12 21.5a4.5 9.5 0 0 1-4.5-8.5ZM21.4 12.9A9.5 9.5 0 0 1 12 21.5a4.5 9.5 0 0 0 4.5-8.5ZM12 2.6a2.7 9.5 0 0 0-2.7 8.5h5.3A2.7 9.5 0 0 0 12 2.6ZM12 21.5a2.7 9.5 0 0 1-2.7-8.5h5.3A2.7 9.5 0 0 1 12 21.5Z"/>',
402 circle: '<circle cx="12" cy="12" r="9.5"/>',
403 plane: '<path d="M21.2 2.9L2.4 10.7l6.9 3.2ZM21.2 2.9l-11 12l3.2 6.9Z"/>',
404 mail: '<path d="M2.5 7.3v-0.4A2.3 2.3 0 0 1 4.8 4.6h14.4A2.3 2.3 0 0 1 21.5 6.9v0.4l-8.7 5.6a1.6 1.6 0 0 1-1.7 0ZM2.5 9.4v7.6A2.3 2.3 0 0 0 4.8 19.4h14.4a2.3 2.3 0 0 0 2.3-2.3V9.4l-8 5.2a2.7 2.7 0 0 1-3 0Z"/>',
405 'eye-off': '<path d="M9 5.8A10 10 0 0 1 21.4 12a10 10 0 0 1-2.5 3.8L15.3 12.2a3.3 3.3 0 0 0-3.5-3.5ZM15 18.2A10 10 0 0 1 2.6 12a10 10 0 0 1 2.5-3.8L8.7 11.8a3.3 3.3 0 0 0 3.5 3.5Z"/><path class="ln" d="M4.6 4.6l14.8 14.8"/>',
406 key: '<path fill-rule="evenodd" d="M8.3 10.1a5.4 5.4 0 1 1 0 10.9a5.4 5.4 0 0 1 0-10.9Zm0 3.6a1.9 1.9 0 1 0 0 3.8a1.9 1.9 0 0 0 0-3.8Z"/><path class="ln" d="M11.7 12.2l8.7-8.7M16.7 7.2l3.1 3.1M14.4 9.5l2.1 2.1"/>',
407 gauge: '<path fill-rule="evenodd" d="M3.7 18A9.4 9.4 0 1 1 19.4 19.6ZM15 8.6l-2.2 5.6l-2.1 0.3l-0.4-2.1Z"/>',
408 server: '<path fill-rule="evenodd" d="M5.2 2.6h13.4a2.7 2.7 0 0 1 2.7 2.7v3.4a2.7 2.7 0 0 1-2.7 2.7H5.2A2.7 2.7 0 0 1 2.5 8.6V5.3A2.7 2.7 0 0 1 5.2 2.6Zm2.2 2.9a1.5 1.5 0 1 0 0 2.9a1.5 1.5 0 0 0 0-2.9ZM5.2 12.7h13.4a2.7 2.7 0 0 1 2.7 2.7v3.4a2.7 2.7 0 0 1-2.7 2.7H5.2A2.7 2.7 0 0 1 2.5 18.7v-3.4A2.7 2.7 0 0 1 5.2 12.7Zm2.2 2.9a1.5 1.5 0 1 0 0 2.9a1.5 1.5 0 0 0 0-2.9Z"/>',
409 'user-check': '<circle cx="8.9" cy="7.5" r="3.2"/><path d="M2.9 19.3c0-3.4 2.7-5.9 5.9-5.9s5.9 2.4 5.9 5.9Z"/><path class="ln" d="M14.8 10.6l1.9 1.9l3.8-3.8"/>',
410 'mic-off': '<path d="M9 5.4A3.1 3.1 0 0 1 15.2 5.8V10.7a3.1 3.1 0 0 1-0.1 0.8Z"/><path class="ln" d="M5.4 10.7a6.6 6.6 0 0 0 11 5M18.7 10.7c0 0.8-0.1 1.5-0.4 2.2M12.1 17.3v2.8M4.5 4.1l15.1 15.1"/>',
411 palette: '<path fill-rule="evenodd" d="M12.1 2.7a9.4 9.4 0 1 0 0 18.8c1.3 0 2-0.9 2-1.9c0-1.2-1-1.5-1-2.5s0.8-1.6 2-1.6H17.3a4.4 4.4 0 0 0 4.4-4.4C21.7 6.7 17.4 2.7 12.1 2.7ZM7.8 9.7a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3Zm2.5-3.7a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3Zm4.6 0a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3Z"/>',
412 dish: '<path d="M2.7 9.7A11.7 11.7 0 0 0 14.4 21.4Z"/><path class="ln" d="M8.8 15.3l4.9-4.9M14.2 4a5.8 5.8 0 0 1 5.8 5.8M14.2 8.1a1.8 1.8 0 0 1 1.8 1.8"/>',
413 layers: '<path d="M12 4.3l8.6 5l-8.6 5l-8.6-5Z"/><path class="ln" d="M3.9 13.9l8.1 4.5l8.1-4.5"/>',
414 phone: '<path d="M5.1 2.4h4.9l2.4 6l-2.7 1.6a10.7 10.7 0 0 0 4.2 4.2l1.6-2.7l6 2.4v4.9a2.3 2.3 0 0 1-2.3 2.3A17.3 17.3 0 0 1 2.8 4.6a2.3 2.3 0 0 1 2.3-2.3Z"/>',
415 money: '<path fill-rule="evenodd" d="M4.8 5.7h14.4a2.1 2.1 0 0 1 2.1 2.1v8.4a2.1 2.1 0 0 1-2.1 2.1H4.8a2.1 2.1 0 0 1-2.1-2.1V7.8a2.1 2.1 0 0 1 2.1-2.1ZM12 8.9a3.1 3.1 0 1 0 0 6.3a3.1 3.1 0 0 0 0-6.3ZM6.3 8.7a1 1 0 1 0 0 2.1a1 1 0 0 0 0-2.1Zm11.4 4.6a1 1 0 1 0 0 2.1a1 1 0 0 0 0-2.1Z"/><circle cx="12" cy="12" r="1.4"/>',
416 care: '<path d="M12 11s-4.3-2.6-4.3-5.6a2.3 2.3 0 0 1 4.3-1.5a2.3 2.3 0 0 1 4.3 1.5c0 3-4.3 5.6-4.3 5.6Z"/><path class="ln" d="M3.8 13.8v6M3.8 15.2h3.1l3.3 2.7h7.5a1.7 1.7 0 0 0 0-3.4h-3.9"/>',
417 news: '<path fill-rule="evenodd" d="M2.8 2.6h14.2v15.2a2.2 2.2 0 0 0 2.2 2.2H5.1A2.2 2.2 0 0 1 2.8 18.9ZM6.6 6.6h6.8v1.7H6.6Zm0 3.7h6.8v1.7H6.6Zm0 3.7h4v1.7H6.6Z"/><path class="ln" d="M17.1 7.7H19.8V17.9a2.1 2.1 0 0 1-2.1 2.1"/>',
418 hand: '<path d="M9 14.3V4.9a1.4 1.4 0 0 1 2.8 0v5.2a0.5 0.5 0 0 0 1.1 0V3.8a1.4 1.4 0 0 1 2.8 0v6.4a0.5 0.5 0 0 0 1.1 0V5.7a1.4 1.4 0 0 1 2.8 0v7.7c0 4.5-2.8 7.7-7.3 7.7c-2.9 0-4.7-1.5-6.3-4l-1.8-2.9a1.7 1.7 0 0 1 2.8-2Z"/>',
419 tack: '<path d="M8.5 3h7.2a0.8 0.8 0 0 1 0.8 1l-0.8 4l2.8 2.8a0.7 0.7 0 0 1-0.6 1.4H6.1a0.7 0.7 0 0 1-0.6-1.4l2.8-2.8l-0.8-4a0.8 0.8 0 0 1 0.8-1Z"/><path class="ln" d="M12 12.2V20.5"/>',
420 help: '<path fill-rule="evenodd" d="M13 2.7a9.4 9.4 0 1 0 0 18.7a9.4 9.4 0 0 0 0-18.7ZM9.3 9.4A3.7 3.7 0 1 1 13.9 12.8v1.6h-2.1V10.9h1a1.6 1.6 0 1 0-1.6-1.6ZM13 15.8a1.3 1.3 0 1 1 0 2.6a1.3 1.3 0 0 1 0-2.6Z"/>',
421 invite: '<circle cx="8.8" cy="7.7" r="3.2"/><path d="M2.9 19.2c0-3.4 2.7-5.8 5.8-5.8s5.8 2.4 5.8 5.8Z"/><path class="ln" d="M17.6 7.8v5.3M15 10.5h5.3"/>',
422 ticket: '<path fill-rule="evenodd" d="M2.6 6.4h18.8v3.4a2.2 2.2 0 0 0 0 4.4v3.4H2.6v-3.4a2.2 2.2 0 0 0 0-4.4ZM13.3 8.4v1.8h1.4V8.4Zm0 2.7v1.8h1.4v-1.8Zm0 2.7v1.8h1.4v-1.8Z"/>',
423 cart: '<path d="M6.3 7h15l-2.5 8.3H8.1Z"/><circle cx="9.5" cy="19.4" r="1.6"/><circle cx="17" cy="19.4" r="1.6"/><path class="ln" d="M3.8 4.8H5.8l2.3 10.5"/>',
424 box: '<path d="M12 2.7l9.4 4.5l-9.4 4.5l-9.4-4.5ZM2.6 8.9l8.6 4.1v8.2l-8.6-4.3ZM21.4 8.9l-8.6 4.1v8.2l8.6-4.3Z"/>',
425 store: '<path d="M4.4 3h15l2 6.2v1.4a3.2 3.2 0 0 1-6.3 0a3.2 3.2 0 0 1-6.3 0a3.2 3.2 0 0 1-6.3 0V9.2ZM4 14.9h15.9v5.6a1.1 1.1 0 0 1-1.1 1.1H14.1v-5.1h-4.4v5.1H5.1a1.1 1.1 0 0 1-1.1-1.1Z"/>',
426 map: '<path d="M2.6 6.1 8.3 4.2v14l-5.7 1.9ZM9.7 4.2l4.6 1.6v14l-4.6-1.6ZM15.7 5.8l5.7-1.9v14l-5.7 1.9Z"/>',
427 sun: '<circle cx="12" cy="12" r="3.8"/><path class="ln" d="M12 3.9v1.3M12 18.7v1.3M6.3 6.2l0.9 0.9M16.8 16.8L17.8 17.8M4 12h1.3M18.7 12h1.3M6.3 17.8l0.9-0.9M16.8 7.2L17.8 6.2"/>',
428 leaf: '<path fill-rule="evenodd" d="M5.4 18.6c0-8.9 5.2-14.2 15.7-15.7c-1 10.4-6.3 15.7-15.7 15.7Zm3.1-2L16.8 7.1l-9.5 8.5Z"/><path class="ln" d="M3.7 20.3L6 18"/>',
429 headphones: '<path class="ln" d="M4 14.5V12a8 8 0 0 1 16 0v2.5"/><rect x="2.6" y="13.4" width="5.4" height="7.6" rx="1.8"/><rect x="16" y="13.4" width="5.4" height="7.6" rx="1.8"/>',
430 tv: '<rect x="2.7" y="7.4" width="18.6" height="13.3" rx="2.3"/><path class="ln" d="M8.2 3.8l3.8 3.4l3.8-3.4"/>',
431 bug: '<path fill-rule="evenodd" d="M12 7a4.8 4.8 0 0 1 4.8 4.8v3.4a4.8 4.8 0 0 1-9.6 0v-3.4A4.8 4.8 0 0 1 12 8Zm-0.7 4.4v7.4h1.4v-7.4Z"/><path d="M9.4 5.8a2.6 2.6 0 0 1 5.2 0Z"/><path class="ln" d="M7.2 12.5H3.8M20.2 12.5h-3.4M7.6 9.4L5 7M16.4 9.4L19 7M7.6 16.6L5 19M16.4 16.6L19 19"/>',
432 terminal: '<path fill-rule="evenodd" d="M5 3.6h14a2.4 2.4 0 0 1 2.4 2.4v12a2.4 2.4 0 0 1-2.4 2.4H5A2.4 2.4 0 0 1 2.6 18V6A2.4 2.4 0 0 1 5 3.6Zm1.4 6 1.3-1.3 3.6 3.7-3.6 3.7-1.3-1.3 2.4-2.4Zm6.4 4.6h4.4v1.7h-4.4Z"/>',
433 database: '<ellipse cx="12" cy="5.7" rx="7.9" ry="3.2"/><path d="M4.1 7.5a7.9 3.2 0 0 0 15.9 0v4.3a7.9 3.2 0 0 1-15.9 0ZM4.1 13.4a7.9 3.2 0 0 0 15.9 0v4.7a7.9 3.2 0 0 1-15.9 0Z"/>',
434 // 4.98.0: the most-used places and things without one (Design's usage count, 2026-11-02): tree, tent, train,
435 // mountain, city, id, wallet, chip, restroom, brain.
436 tree: '<path d="M12 2.5L5.9 10.7h3L4.4 16.9h15.1l-4.5-6.2h3Z"/><path class="ln" d="M12 16.2v4"/>',
437 tent: '<path fill-rule="evenodd" d="M12 4.2L19.3 17.4H4.7ZM12 11.6L9.5 17.4h5.1Z"/><path class="ln" d="M3.9 17.7h16.2"/>',
438 train: '<path fill-rule="evenodd" d="M9.1 2.7h5.8a2.9 2.9 0 0 1 2.9 2.9v6.8a2.9 2.9 0 0 1-2.9 2.9H9.1a2.9 2.9 0 0 1-2.9-2.9V5.6a2.9 2.9 0 0 1 2.9-2.9Zm-1.2 2.5v4.1h8.2V5.2ZM9.1 11.4a1.1 1.1 0 1 0 0 2.1A1.1 1.1 0 0 0 9.1 11.4Zm5.8 0a1.1 1.1 0 1 0 0 2.1a1.1 1.1 0 0 0 0-2.1Z"/><path class="ln" d="M8.6 20.2l1.9-3.4M15.4 20.2l-1.9-3.4"/>',
439 mountain: '<path d="M2.8 18.1L9.2 5.3l4.1 7.1L16.1 8.9L21.5 18.1Z"/>',
440 city: '<path fill-rule="evenodd" d="M5.4 7.7h4.6v10.9H5.4Zm1.9 2.2v1.4h1.2v-1.4Zm0 2.9v1.4h1.2v-1.4Z"/><path fill-rule="evenodd" d="M10.7 3.4h5.1v15.2h-5.1Zm1.7 2.4v1.4h1.4V5.8Zm0 2.9v1.4h1.4V8.7Zm0 2.9v1.4h1.4v-1.4Z"/><path d="M16.5 11.3h2.2v7.4h-2.2Z"/><path class="ln" d="M3.9 18.6h16.1"/>',
441 id: '<path fill-rule="evenodd" d="M4.8 4.6h14.4a2.3 2.3 0 0 1 2.3 2.3v10.3a2.3 2.3 0 0 1-2.3 2.3H4.8A2.3 2.3 0 0 1 2.5 17.2V6.9A2.3 2.3 0 0 1 4.8 4.6Zm4.1 4.2a2.2 2.2 0 1 0 0 4.3a2.2 2.2 0 0 0 0-4.3Zm-3.2 7.7h6.4c-0.6-1.7-1.8-2.7-3.2-2.7s-2.6 0.9-3.2 2.7Zm8.8-7.2v1.5h4V9.4Zm0 3.6v1.5h4v-1.5Z"/>',
442 wallet: '<path fill-rule="evenodd" d="M5.7 2.8H19v4.6h1.6a0.9 0.9 0 0 1 0.9 0.9v12.4H5.1a2.5 2.5 0 0 1-2.5-2.5V5.9a3.1 3.1 0 0 1 3.1-3.1Zm0 2.1a1 1 0 0 0 0 2.1h11.2V4.9ZM16.7 12.9a1.4 1.4 0 1 0 0 2.8a1.4 1.4 0 0 0 0-2.8Z"/>',
443 chip: '<path fill-rule="evenodd" d="M8.6 7.2h6.8a1.4 1.4 0 0 1 1.4 1.4v6.8a1.4 1.4 0 0 1-1.4 1.4H8.6a1.4 1.4 0 0 1-1.4-1.4V8.6a1.4 1.4 0 0 1 1.4-1.4Zm1.7 3.1v3.4h3.4v-3.4Z"/><path class="ln" d="M10.2 4v3.2M13.8 4v3.2M10.2 16.8V20M13.8 16.8V20M4 10.2h3.2M4 13.8h3.2M16.8 10.2H20M16.8 13.8H20"/>',
444 restroom: '<circle cx="7.2" cy="5.1" r="1.8"/><circle cx="16.2" cy="5.1" r="1.8"/><path d="M6 9h1.8a1.5 1.5 0 0 1 1.5 1.5v4.7H8.6v5H5.5v-5H4.7v-4.7A1.5 1.5 0 0 1 6 9Z"/><path d="M15.7 9.4h1.1a0.9 0.9 0 0 1 0.9 0.7l1.9 6.3H17.4v3.6h-2.3v-3.6h-2.1l1.9-6.3a0.9 0.9 0 0 1 0.9-0.7Z"/><path class="ln" d="M11.6 3.7v16.3"/>',
445 brain: '<path d="M8.9 3.8a3.2 3.2 0 0 0-3.2 3.1a3.1 3.1 0 0 0-2.2 5.3a3.1 3.1 0 0 0 2.2 5.2a3.2 3.2 0 0 0 5.7 1.3V5.6A2.3 2.3 0 0 0 8.9 3.8Z"/><path d="M15.1 3.8a3.2 3.2 0 0 1 3.2 3.1a3.1 3.1 0 0 1 2.2 5.3a3.1 3.1 0 0 1-2.2 5.2a3.2 3.2 0 0 1-5.7 1.3V5.6A2.3 2.3 0 0 1 15.1 3.8Z"/>',
446 // 4.103.0: the next eight by use (Design's usage count, 2026-11-02): retry, water, food, history, compress,
447 // bridge, text and steps. Arrows keep their arcs as lines with filled heads; a list keeps its rows as lines.
448 retry: '<path class="ln" d="M4 12a8 8 0 0 1 13.4-5.9M20 12a8 8 0 0 1-13.4 5.9"/><path d="M21.3 2.8v7h-7ZM2.7 21.2v-7h7Z"/>',
449 water: '<path d="M2.7 7.9c2.4 0 2.4-2 4.7-2s2.4 2 4.6 2s2.4-2 4.7-2s2.4 2 4.6 2v3.2c-2.3 0-2.3-2-4.6-2s-2.4 2-4.7 2s-2.3-2-4.6-2s-2.4 2-4.7 2ZM2.7 14.8c2.4 0 2.4-2 4.7-2s2.4 2 4.6 2s2.4-2 4.7-2s2.4 2 4.6 2v3.2c-2.3 0-2.3-2-4.6-2s-2.4 2-4.7 2s-2.3-2-4.6-2s-2.4 2-4.7 2Z"/>',
450 food: '<path d="M4.7 3.3h1.5v4.7h0.6V3.3h1.4v4.7h0.6V3.3h1.5v4.9A2.9 2.9 0 0 1 8.6 10.8V21.7H6.5V10.8a2.9 2.9 0 0 1-1.8-2.7ZM18.9 21.7h-2.3v-7.4h-3V10.6c0-3.9 1.7-6.6 5.2-7.7Z"/>',
451 history: '<path d="M5.8 5.8A9.1 9.1 0 1 1 3.2 12.2h3a6.1 6.1 0 1 0 1.8-4.3ZM2.5 2.7v7.2h7.2ZM11.2 8.1h2.2v3.7l2.7 1.6l-1.1 1.8l-3.8-2.3Z"/>',
452 compress: '<path d="M9.7 9.7H2.7L9.7 2.7ZM14.3 9.7h7l-7-7ZM9.7 14.3H2.7l7 7ZM14.3 14.3h7l-7 7Z"/>',
453 bridge: '<path d="M5.7 4.6h2.6v15.4H5.7ZM15.7 4.6h2.6v15.4h-2.6ZM3.4 14.6h17.2v2.8H3.4Z"/><path class="ln" d="M4 10c1.6 0 2.5-2.3 3-5c2.4 5.2 7.6 5.2 10 0c.5 2.7 1.4 5 3 5M12 10.9V15"/>',
454 text: '<path fill-rule="evenodd" d="M10.2 2.4h3.7l6.8 18.7h-3.4l-1.6-4.7H8.3l-1.6 4.7H3.3ZM9.3 13.6h5.4L12 5.7Z"/>',
455 steps: '<path fill-rule="evenodd" d="M2.8 4h4.9v4.9H2.8Zm1 2.5l0.8-0.9l0.9 0.9l1.4-1.4l0.9 0.9l-2.3 2.3ZM2.8 9.4h4.9v4.9H2.8Zm1 2.5l0.8-0.9l0.9 0.9l1.4-1.4l0.9 0.9l-2.3 2.3ZM2.8 15h4.9v4.9H2.8Zm1 2.5l0.8-0.9l0.9 0.9l1.4-1.4l0.9 0.9l-2.3 2.3Z"/><path class="ln" d="M10.6 6.4H20.3M10.6 11.9H20.3M10.6 17.4H20.3"/>',
456 // 4.104.0: the next eight by use with a shape to fill (Design's usage count): download, upload, expand, shirt,
457 // shapes, shelter, archive and keyboard. An arrow is filled whole; its tray stays a line.
458 download: '<path d="M10.6 2.3h2.5v7h4.7L11.9 15.4l-5.9-5.9h4.7Z"/><path class="ln" d="M4.5 19.7h14.9"/>',
459 upload: '<path d="M10.6 21.7h2.5v-7h4.7L11.9 8.6l-5.9 5.9h4.7Z"/><path class="ln" d="M4.5 4.3h14.9"/>',
460 expand: '<path d="M2.7 2.7h7L2.7 9.7ZM21.3 2.7h-7l7 7ZM2.7 21.3h7l-7-7ZM21.3 21.3h-7l7-7Z"/>',
461 shirt: '<path d="M8 2.7L2.5 5.9l2.5 4.9l1.5-0.8v11.2h11V10.1l1.5 0.8L21.5 5.9l-5.5-3.2c-0.6 1.5-1.9 2.5-4 2.5S8.6 4.2 8 2.7Z"/>',
462 shapes: '<circle cx="7.3" cy="7.6" r="4.3"/><path d="M16.5 2.7l5 8.6h-9.8ZM13.4 13.7h7.4v7.4h-7.4ZM2.5 21.1L6.8 13.7l4.3 7.4Z"/>',
463 shelter: '<path fill-rule="evenodd" d="M12 2.7L2.5 10.2l1.1 1.5l1-0.8v10h14.8V10.9l1 0.8l1.1-1.5ZM9.5 20.9v-4.8a2.5 2.5 0 0 1 4.9 0v4.8ZM12 9.1a1.7 1.7 0 1 1 0 3.4a1.7 1.7 0 0 1 0-3.4Z"/>',
464 archive: '<rect x="2.6" y="3.4" width="18.8" height="5.4" rx="1.2"/><path fill-rule="evenodd" d="M4.4 10h15.2v9.2a1.6 1.6 0 0 1-1.6 1.6H6a1.6 1.6 0 0 1-1.6-1.6ZM9.6 12.4v1.8h4.8v-1.8Z"/>',
465 keyboard: '<path fill-rule="evenodd" d="M4.8 5.7h14.4A2.3 2.3 0 0 1 21.5 8v8a2.3 2.3 0 0 1-2.3 2.3H4.8A2.3 2.3 0 0 1 2.5 16V8a2.3 2.3 0 0 1 2.3-2.3ZM5.3 9.1h1.9v1.9H5.3ZM8.2 9.1h1.9v1.9H8.2ZM11 9.1h1.9v1.9h-1.9ZM13.9 9.1h1.9v1.9h-1.9ZM16.8 9.1h1.9v1.9h-1.9ZM7.8 13.3h8.4v1.7H7.8Z"/>',
466 umbrella: '<path d="M2.6 12.7a9.4 9.4 0 0 1 18.8 0Z"/><path class="ln" d="M12 12.7v5.6a1.9 1.9 0 0 1-3.8 0"/>',
467 parking: '<path fill-rule="evenodd" d="M6.2 2.6h11.6a3.6 3.6 0 0 1 3.6 3.6v11.6a3.6 3.6 0 0 1-3.6 3.6H6.2a3.6 3.6 0 0 1-3.6-3.6V6.2a3.6 3.6 0 0 1 3.6-3.6ZM8.4 18V6H13a4 4 0 0 1 0 8h-2.4v4ZM10.6 8.2v3.6H13a1.8 1.8 0 0 0 0-3.6Z"/>',
468 medical: '<path fill-rule="evenodd" d="M5.3 6.3h13.5a2.7 2.7 0 0 1 2.7 2.7v8.7a2.7 2.7 0 0 1-2.7 2.7H5.3a2.7 2.7 0 0 1-2.7-2.7V9a2.7 2.7 0 0 1 2.7-2.7ZM10.9 10h2.3v2.2h2.2v2.3h-2.2V16.7h-2.3v-2.2H8.7v-2.3h2.2Z"/><path class="ln" d="M9.2 6.3V5.3a0.9 0.9 0 0 1 0.9-0.9h3.8a0.9 0.9 0 0 1 0.9 0.9v1"/>',
469 drive: '<path fill-rule="evenodd" d="M5.3 11.4h13.5a2.7 2.7 0 0 1 2.7 2.7v3a2.7 2.7 0 0 1-2.7 2.7H5.3a2.7 2.7 0 0 1-2.7-2.7v-3a2.7 2.7 0 0 1 2.7-2.7ZM16.8 14.4a1.1 1.1 0 1 1 0 2.3a1.1 1.1 0 0 1 0-2.3ZM13.7 14.4a1.1 1.1 0 1 1 0 2.3a1.1 1.1 0 0 1 0-2.3Z"/><path class="ln" d="M4.1 11.9L6.8 4.7h10.4l2.8 7.2"/>',
470 skull: '<path fill-rule="evenodd" d="M12 2.6a7.9 7.9 0 0 0-7.9 7.9c0 2.4 1.1 4.2 2.5 5.4V19.5a2 2 0 0 0 2 2h6.8a2 2 0 0 0 2-2v-3.6c1.4-1.2 2.5-3 2.5-5.4A7.9 7.9 0 0 0 12 2.6ZM9.2 9.4a1.7 1.7 0 1 1 0 3.4a1.7 1.7 0 0 1 0-3.4ZM14.8 9.4a1.7 1.7 0 1 1 0 3.4a1.7 1.7 0 0 1 0-3.4ZM12 13.3l1 1.8h-2ZM10.1 18.1h0.9v2.4h-0.9ZM13 18.1h0.9v2.4H13Z"/>',
471 'hot-tub': '<circle cx="8.2" cy="5.4" r="2.4"/><path d="M2.6 10.9h18.8v4.2a5.1 5.1 0 0 1-5.1 5.1h-8.5a5.1 5.1 0 0 1-5.1-5.1Z"/><path class="ln" d="M6.3 10.9v-0.6A2.4 2.4 0 0 1 8.7 8H9.2M13.5 9.4c0.8-0.9-0.8-1.9 0-2.8M17.3 9.4c0.8-0.9-0.8-1.9 0-2.8"/>',
472 group: '<rect x="6.9" y="6.8" width="6.4" height="4.8" rx="1.1"/><rect x="10.8" y="12.5" width="6.4" height="4.6" rx="1.1"/><path class="ln" d="M4 7.6V4h3.6M16.5 4h3.6v3.6M20 16.4v3.6h-3.6M7.6 20H4v-3.6"/>',
473 gavel: '<path d="M11.3 5.5L5.5 11.3l6.1 6.1l5.8-5.8Z"/><path class="ln" d="M13.7 4.2l5 5M3.8 19.1l5.7-5.7M13.7 19.1h6.3"/>',
474 binoculars: '<rect x="2.9" y="5.4" width="6.8" height="16" rx="3.4"/><rect x="14.3" y="5.4" width="6.8" height="16" rx="3.4"/><rect x="9.3" y="10.7" width="5.4" height="2.8" rx="1"/><path class="ln" d="M5.8 5.4V5.2a1.3 1.3 0 0 1 2.6 0v0.2M17.6 5.4V5.2a1.3 1.3 0 0 1 2.6 0v0.2"/>',
475 telescope: '<path d="M2.2 12.2l15.6-7.8l3 6l-15.6 7.8Z"/><path class="ln" d="M9.1 14.9l-1.6 4.7M9.1 14.9l5.5 4.7M8.2 17.3h6.4"/>',
476 microscope: '<path d="M2.8 18.2h18.4v2.6H2.8Z"/><path d="M6.2 14.8h5.8v3.4H6.2Z"/><path d="M9.2 14.8h8.6v2.6H9.2Z"/><path d="M12.6 7.4a5 5 0 0 1 5-5h1.2v4.8h-1.2a1.8 1.8 0 0 0-1.8 1.8v6.4h-3.2Z"/><path class="ln" d="M19.3 3.4v4.8M9.9 9.9h3.6"/>',
477 gpu: '<rect x="4" y="5.5" width="14.4" height="10" rx="1.6"/><circle cx="8.7" cy="10.5" r="2.8"/><rect x="18.4" y="8" width="2.6" height="5" rx="0.8"/><path class="ln" d="M8.7 8.3v4.4M6.5 10.5h4.4M4 15.5v2.5"/>',
478 cpu: '<path fill-rule="evenodd" d="M7 5.8h10A1.2 1.2 0 0 1 18.2 7v10a1.2 1.2 0 0 1-1.2 1.2H7A1.2 1.2 0 0 1 5.8 17V7A1.2 1.2 0 0 1 7 5.8Zm3.4 4.6a0.6 0.6 0 0 0-0.6 0.6v3.2a0.6 0.6 0 0 0 0.6 0.6h3.2a0.6 0.6 0 0 0 0.6-0.6V11a0.6 0.6 0 0 0-0.6-0.6Z"/><path class="ln" d="M9.5 3.7v3.3M14.5 3.7v3.3M9.5 17v3.3M14.5 17v3.3M3.7 9.5h3.3M3.7 14.5h3.3M17 9.5h3.3M17 14.5h3.3"/>',
479 memory: '<rect x="3.5" y="5" width="17" height="7.5" rx="1.2"/><path class="ln" d="M3.5 14.5v3.5M6.6 14.5v3.5M9.7 14.5v3.5M12.8 14.5v3.5M15.9 14.5v3.5M19 14.5v3.5M6.7 7.5h4.8M6.7 10.3h3M13.4 7.5h3.9M13.4 10.3h2.4"/>',
480 joystick: '<path d="M3.8 21.2h16.4l-2.8-8.2H6.6Z"/><circle cx="12" cy="5.6" r="2.8"/><circle cx="8.3" cy="17.2" r="1.1"/><circle cx="15.7" cy="17.2" r="1.1"/><path class="ln" d="M12 13V8.4"/>',
481 wand: '<path class="ln" d="M3.7 20.3L13.9 10.1M12.1 8.3l3.6 3.6"/><path d="M17.9 3.7l0.9 2.3l2.3 0.9l-2.3 0.9l-0.9 2.3l-0.9-2.3l-2.3-0.9l2.3-0.9Z"/>',
482 'layers-plus': '<path d="M12 4.1l8.2 4.8l-8.2 4.8l-8.2-4.8Z"/><path class="ln" d="M3.8 14l8.2 4.8l4.8-2.8"/><path d="M17.6 13.9h1.6v2.2h2.2v1.6h-2.2v2.2h-1.6v-2.2h-2.2v-1.6h2.2Z"/>',
483 });
484 const BY = { kit: 'the OpenVibe Kit', opus: 'drawn by Opus for the glyph set (2026-10-31)' };
485 const ALL = { ...(kit && kit.PATHS ? kit.PATHS : {}), ...DRAWN };
486 const NAMES = Object.freeze(Object.keys(ALL).sort());
487
488 // ── Font Awesome's names, as the network uses them, mapped to the glyph that stands for each ──
489 const FA = Object.freeze({
490 // 4.231.0: the names sites used that drew nothing once Font Awesome's stylesheet was gone (the maps app, yt).
491 'arrow-rotate-left': 'undo', 'chart-pie': 'chart', 'book-skull': 'book', crosshairs: 'target', 'location-crosshairs': 'target',
492 satellite: 'image', 'globe-americas': 'globe', 'street-view': 'walk', 'magnifying-glass-location': 'search', 'apple-whole': 'food',
493 backpack: 'briefcase', 'shield-heart': 'shield', openstreetmap: 'map',
494 'wand-magic-sparkles': 'wand', 'wand-magic': 'wand', 'wand-sparkles': 'wand', sparkles: 'spark', 'star-of-life': 'spark', eye: 'eye', 'eye-slash': 'eye-off',
495 binoculars: 'binoculars', telescope: 'telescope', microscope: 'microscope', joystick: 'joystick', gpu: 'gpu', cpu: 'cpu', memory: 'memory', ram: 'memory',
496 'tower-broadcast': 'live', 'broadcast-tower': 'live', 'satellite-dish': 'dish', 'tower-cell': 'live', 'signal': 'wifi', wifi: 'wifi',
497 xmark: 'close', times: 'close', 'circle-xmark': 'x-circle', 'xmark-circle': 'x-circle', video: 'video', 'video-slash': 'video', camera: 'camera',
498 robot: 'robot', scissors: 'scissors', cut: 'scissors', copy: 'copy', paste: 'clipboard', clipboard: 'clipboard', 'clipboard-list': 'clipboard',
499 bolt: 'zap', 'bolt-lightning': 'zap', check: 'check', 'check-circle': 'check-circle', 'circle-check': 'check-circle',
500 comments: 'chat', comment: 'chat', 'comment-dots': 'chat', message: 'chat', play: 'play', 'circle-play': 'play', pause: 'pause', stop: 'stop',
501 tree: 'tree', spinner: 'busy', 'circle-notch': 'busy', 'map-pin': 'pin', 'location-dot': 'pin', 'location-pin': 'pin', map: 'map', route: 'route',
502 globe: 'globe', 'earth-americas': 'globe', 'earth-europe': 'globe', language: 'language', code: 'code', terminal: 'terminal', 'code-branch': 'branch', 'code-fork': 'branch',
503 coins: 'coin', coin: 'coin', 'hand-holding-dollar': 'coin', 'dollar-sign': 'dollar', wallet: 'wallet', clock: 'clock', 'clock-rotate-left': 'history', 'rotate-left': 'retry',
504 rotate: 'retry', 'rotate-right': 'retry', 'arrows-rotate': 'retry', 'arrow-rotate-right': 'retry', 'shield-halved': 'shield', shield: 'shield', 'user-shield': 'shield',
505 plus: 'plus', minus: 'minus', lock: 'lock', unlock: 'lock', key: 'key', 'arrow-right': 'arrow-right', 'arrow-left': 'arrow-left', 'arrow-up': 'arrow-up', 'arrow-down': 'arrow-down',
506 'chevron-right': 'chevron', 'chevron-left': 'back', 'chevron-down': 'down', 'chevron-up': 'up', 'angle-right': 'chevron', 'angle-down': 'down',
507 star: 'star', 'volume-high': 'volume', 'volume-low': 'volume', 'volume-xmark': 'mute', 'volume-off': 'mute', 'triangle-exclamation': 'alert',
508 'circle-exclamation': 'alert-circle', 'circle-info': 'info', 'circle-question': 'help', question: 'help', link: 'link', image: 'image', images: 'image',
509 'file-image': 'image', 'photo-film': 'film', film: 'film', user: 'user', 'user-secret': 'user', 'user-astronaut': 'user', 'user-plus': 'invite',
510 'user-check': 'user-check', users: 'members', 'people-group': 'members', 'user-group': 'members', server: 'server', database: 'database',
511 'magnifying-glass': 'search', search: 'search', campground: 'tent', utensils: 'food', train: 'train', heart: 'heart', 'hand-holding-heart': 'care', water: 'water',
512 'person-swimming': 'water', house: 'home', 'house-chimney': 'home', download: 'download', upload: 'upload', 'cloud-arrow-up': 'upload', circle: 'circle',
513 sliders: 'sliders', 'sliders-h': 'sliders', leaf: 'leaf', gamepad: 'game', microphone: 'mic', 'microphone-slash': 'mic-off',
514 'arrow-up-right-from-square': 'open', 'up-right-from-square': 'open', 'external-link': 'open', palette: 'palette', bell: 'bell', 'gauge-high': 'gauge', gauge: 'gauge',
515 'floppy-disk': 'save', trash: 'trash', 'trash-can': 'trash', 'chart-line': 'chart', plug: 'plug', compress: 'compress', expand: 'expand',
516 'up-right-and-down-left-from-center': 'expand', pen: 'pencil', 'pen-nib': 'pencil', pencil: 'pencil', 'pen-to-square': 'pencil', city: 'city', ban: 'ban',
517 'screwdriver-wrench': 'wrench', wrench: 'wrench', music: 'music', gear: 'gear', gears: 'gear', 'paper-plane': 'plane', fire: 'fire',
518 'circle-nodes': 'nodes', 'network-wired': 'nodes', 'diagram-project': 'nodes', sitemap: 'nodes', bridge: 'bridge', envelope: 'mail', sun: 'sun', moon: 'moon',
519 'list-check': 'steps', list: 'list', 'list-ul': 'list', bars: 'menu', display: 'computer', desktop: 'computer', laptop: 'computer', 'wave-square': 'wave',
520 newspaper: 'news', 'file-lines': 'file', file: 'file', 'file-pdf': 'file', 'file-audio': 'file', folder: 'folder', book: 'book', 'book-open': 'book-open', crown: 'crown',
521 microchip: 'chip', 'id-card': 'id', brain: 'brain', cloud: 'cloud', 'cloud-sun': 'cloud', 'cloud-rain': 'cloud', 'cloud-showers-heavy': 'cloud', snowflake: 'snow',
522 mountain: 'mountain', 'mountain-sun': 'mountain', 'layer-group': 'layers', hashtag: 'hash', font: 'text', 'text-height': 'text',
523 'right-from-bracket': 'leave', 'right-to-bracket': 'enter', 'arrow-right-from-bracket': 'leave', 'arrow-right-to-bracket': 'enter',
524 gift: 'gift', lightbulb: 'idea', 'cart-shopping': 'cart', cart: 'cart', bullseye: 'target', trophy: 'trophy', tag: 'tag', tags: 'tag', shirt: 'shirt', reply: 'reply',
525 'face-smile': 'smile', 'box-archive': 'archive', ticket: 'ticket', thumbtack: 'tack', store: 'store', keyboard: 'keyboard', gavel: 'gavel', droplet: 'drop',
526 'calendar-check': 'calendar', 'cloud-arrow-down': 'download', 'magnifying-glass-chart': 'chart', 'magnifying-glass-dollar': 'search', 'plug-circle-plus': 'plug', 'power-off': 'stop', receipt: 'ticket', 'shoe-prints': 'walk', broadcast: 'live', clip: 'scissors',
527 flag: 'flag', calendar: 'calendar', 'calendar-days': 'calendar', phone: 'phone', 'mobile-screen': 'phone', 'hand': 'hand', 'hand-pointer': 'hand', grid: 'grid',
528 'table-cells': 'grid', 'chart-simple': 'chart', 'chart-bar': 'chart', 'filter': 'filter', 'ellipsis': 'more', 'ellipsis-vertical': 'more', 'share-nodes': 'nodes',
529 // 4.63.0
530 restroom: 'restroom', 'person-shelter': 'shelter', 'hot-tub-person': 'hot-tub', 'hot-tub': 'hot-tub', umbrella: 'umbrella', 'umbrella-beach': 'umbrella',
531 'square-parking': 'parking', parking: 'parking', 'skull-crossbones': 'skull', skull: 'skull', 'object-group': 'group', 'kit-medical': 'medical',
532 'briefcase-medical': 'medical', 'suitcase-medical': 'medical', 'info-circle': 'info', icons: 'shapes', shapes: 'shapes', headphones: 'headphones',
533 'headphones-simple': 'headphones', headset: 'headphones', 'hard-drive': 'drive', hdd: 'drive', 'check-double': 'check-double', tv: 'tv',
534 television: 'tv', toolbox: 'toolbox', table: 'table', 'table-list': 'table', 'scale-balanced': 'scale', 'balance-scale': 'scale',
535 road: 'road', 'people-arrows': 'members', 'money-bill': 'money', 'money-bill-1': 'money', 'money-bill-wave': 'money', 'money-bill-transfer': 'money',
536 'money-check': 'money', 'heart-pulse': 'heart-pulse', heartbeat: 'heart-pulse', heading: 'heading', 'hand-fist': 'fist', 'fist-raised': 'fist',
537 forward: 'fast-forward', 'forward-fast': 'fast-forward', backward: 'rewind', 'backward-fast': 'rewind', 'file-code': 'file-code', dice: 'dice',
538 'dice-five': 'dice', 'dice-six': 'dice', 'circle-half-stroke': 'contrast', adjust: 'contrast', briefcase: 'briefcase', suitcase: 'briefcase',
539 timeline: 'timeline', seedling: 'seedling', rocket: 'rocket', 'right-left': 'swap', 'arrow-right-arrow-left': 'swap', 'exchange-alt': 'swap',
540 'person-hiking': 'mountain', hiking: 'mountain', 'microphone-lines': 'mic', 'list-ol': 'list-ordered', 'life-ring': 'lifebuoy', infinity: 'infinity',
541 inbox: 'inbox', 'folder-open': 'folder', 'faucet-drip': 'drop', faucet: 'drop', 'face-grin-stars': 'smile', 'door-open': 'door',
542 'door-closed': 'door', 'credit-card': 'card', 'cloud-bolt': 'storm',
543 // 4.68.0
544 'arrow-trend-up': 'trend-up', 'arrow-trend-down': 'trend-down', 'angles-left': 'chevrons-left', 'angles-right': 'chevrons-right',
545 'arrow-down-wide-short': 'sort', 'arrow-down-short-wide': 'sort-asc', 'arrow-up-from-bracket': 'share', 'arrows-left-right': 'arrows-h',
546 'left-right': 'arrows-h', 'arrows-up-down-left-right': 'move', 'arrows-to-dot': 'focus', at: 'at', 'box-open': 'box', box: 'box', bug: 'bug',
547 bullhorn: 'megaphone', burst: 'burst', 'camera-rotate': 'camera-flip', 'camera-slash': 'camera-off', car: 'car', child: 'child',
548 'circle-dollar-to-slot': 'donate', 'circle-dot': 'record', 'circle-plus': 'plus-circle', 'plus-circle': 'plus-circle',
549 'circle-minus': 'minus-circle', 'minus-circle': 'minus-circle', clapperboard: 'clapper', 'clipboard-check': 'clipboard-check',
550 'closed-captioning': 'cc', 'cloud-slash': 'cloud-off', 'code-commit': 'commit', 'comment-slash': 'chat-off', compass: 'compass',
551 'cookie-bite': 'cookie', cookie: 'cookie', couch: 'couch', cubes: 'cubes', cube: 'box', 'ear-listen': 'ear', eraser: 'eraser',
552 'face-laugh': 'laugh', 'face-grin-squint': 'laugh', 'face-grin-squint-tears': 'laugh', 'face-grin': 'laugh', fish: 'fish',
553 'flag-checkered': 'finish', flask: 'flask', 'flask-vial': 'flask', 'folder-tree': 'folder-tree', 'forward-step': 'skip',
554 'step-forward': 'skip', gem: 'gem', ghost: 'ghost', 'grip-vertical': 'grip', grip: 'grip', hammer: 'hammer', handshake: 'handshake',
555 'handshake-angle': 'handshake', 'hat-wizard': 'wizard', 'heart-crack': 'heart-broken', 'hourglass-half': 'hourglass',
556 'hourglass-start': 'hourglass', 'hourglass-end': 'hourglass', hourglass: 'hourglass', lungs: 'lungs', 'link-slash': 'link-off', mask: 'mask',
557 'mug-hot': 'mug', 'mug-saucer': 'mug', paw: 'paw', 'person-walking': 'walk', 'phone-slash': 'phone-off', 'piggy-bank': 'piggy',
558 plane: 'airplane', 'plane-departure': 'airplane', print: 'print', 'quote-left': 'quote', 'quote-right': 'quote', radio: 'radio',
559 'ranking-star': 'ranking', recycle: 'recycle', rss: 'rss', scroll: 'scroll', signature: 'signature', square: 'square', sword: 'sword',
560 'table-columns': 'columns', 'thumbs-up': 'thumbs-up', undo: 'undo', 'rotate-back': 'undo', 'user-circle': 'user-circle',
561 'circle-user': 'user-circle', 'user-lock': 'user-lock', 'user-minus': 'user-minus', 'user-pen': 'user-pen', 'user-edit': 'user-pen',
562 'user-tag': 'user-tag', 'user-slash': 'user-off', 'weight-hanging': 'weight', wind: 'wind', 'window-maximize': 'window',
563 'window-restore': 'window-restore', 'align-left': 'align-left', slash: 'slash', 'address-card': 'id', 'basket-shopping': 'cart',
564 'cart-plus': 'cart', 'calendar-day': 'calendar', 'chart-area': 'chart', 'chart-column': 'chart', 'camera-retro': 'camera',
565 'camera-cctv': 'camera', 'caret-down': 'down', clone: 'copy', 'cloud-moon': 'cloud', smog: 'cloud', 'file-pen': 'pencil',
566 'gauge-simple-high': 'gauge', 'gauge-simple-low': 'gauge', 'gauge-simple': 'gauge', 'hand-point-right': 'hand', 'house-signal': 'home',
567 icicles: 'snow', 'map-location-dot': 'map', 'map-marker-alt': 'pin', 'mobile-screen-button': 'phone', 'plug-circle-bolt': 'plug',
568 'plug-circle-check': 'plug', 'puzzle-piece': 'puzzle', puzzle: 'puzzle', 'puzzle-piece-simple': 'puzzle', 'plug-circle-xmark': 'plug', save: 'save', th: 'grid', 'down-left-and-up-right-to-center': 'compress',
569 paintbrush: 'palette', 'paint-brush': 'palette',
570 });
571
572 // Each glyph's words, for openvibe.design/icons and the suggest API: the Font Awesome names it stands for, plus
573 // the synonyms a person would type for it. Every glyph has some (a name with no alias still gets its own).
574 const KEYWORDS = {
575 binoculars: 'look see view search find observe spy distance bird',
576 telescope: 'look far stars space astronomy observe lens',
577 microscope: 'science lab biology research tiny zoom',
578 gpu: 'graphics card render video hardware compute gaming',
579 cpu: 'processor chip computer hardware core',
580 memory: 'ram stick computer hardware storage',
581 joystick: 'game controller gamepad play arcade',
582 wand: 'magic sparkle spell create wizard',
583 'layers-plus': 'add stack new level create',
584 broadcast: 'live stream radio signal',
585 clip: 'cut attach scissors',
586 };
587 const META = Object.freeze(Object.fromEntries(NAMES.map((n) => {
588 const aliases = Object.entries(FA).filter(([, g]) => g === n).map(([fa]) => fa.replace(/-/g, ' '));
589 const words = [n.replace(/-/g, ' '), ...(KEYWORDS[n] || '').split(' ').filter(Boolean)];
590 return [n, { by: DRAWN[n] ? BY.opus : BY.kit, tags: [...new Set([...words, ...aliases])].slice(0, 24) }];
591 })));
592
593 const path = (name) => (Object.prototype.hasOwnProperty.call(ALL, name) ? ALL[name] : '');
594 const esc = (s) => String(s).replace(/[&<>"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c]));
595 function svg(name, { size = 24, title = '', style = 'regular' } = {}) {
596 const d = path(name);
597 if (!d) return '';
598 const weights = { thin: 1, light: 1.5, regular: 2, bold: 2.5, duotone: 2 };
599 if (!['thin', 'light', 'regular', 'bold', 'solid', 'duotone'].includes(style)) throw new TypeError('glyphs.svg: unsupported style');
600 // A part of a solid drawing that must stay a line (class "ln") carries its own stroke here: this svg stands
601 // alone, with no stylesheet to give it one (ov-glyphs.js does it in CSS, the sprite inline, the same way).
602 // Without it the line was filled as a shape, or not drawn at all.
603 const solidPath = solid(name).replace(/class="ln"/g, 'class="ln" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"');
604 const drawing = style === 'solid' && solidPath ? solidPath : d;
605 const extra = style === 'solid' && solidPath ? ' stroke="none"' : ` stroke-width="${weights[style]}"`;
606 const layered = style === 'duotone' && solidPath ? `<g fill="currentColor" stroke="none" opacity=".2">${solidPath}</g>${d}` : drawing;
607 const label = title ? ` role="img" aria-label="${esc(title)}"><title>${esc(title)}</title>` : ' aria-hidden="true">';
608 return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="${Number(size) || 24}" height="${Number(size) || 24}" fill="${style === 'solid' && solidPath ? 'currentColor' : 'none'}" stroke="currentColor"${extra} stroke-linecap="round" stroke-linejoin="round"${label}${layered}</svg>`;
609 }
610 const fromFa = (fa) => { const n = String(fa || '').replace(/^fa-/, ''); return Object.prototype.hasOwnProperty.call(FA, n) && path(FA[n]) ? FA[n] : null; };
611
612 const solid = (name) => (Object.prototype.hasOwnProperty.call(SOLID, name) ? SOLID[name] : '');
613 /** The inside of the <svg> ov-glyphs.js draws for a glyph: the line drawing, and its solid one when it has one. */
614 const inner = (name) => { const d = path(name); const so = solid(name); return d ? d + (so ? `<g class="ovg-s">${so}</g>` : '') : ''; };
615
616 // ── OpenVibe's own markup (4.231.0): <i data-ov-icon="name">, drawn in the page by ov-glyphs.js ──
617 function markup(name, { title = '', cls = '' } = {}) {
618 if (name !== 'busy' && !path(name)) return '';
619 return `<i data-ov-icon="${esc(name)}"${cls ? ` class="${esc(cls)}"` : ''}${title ? ` title="${esc(title)}"` : ' aria-hidden="true"'}></i>`;
620 }
621 // Font Awesome's classes that say how, in OpenVibe's: '' drops one (the glyphs' default does it), null means a person
622 // has to decide (an animation, a stack, a list: scripts/fa-to-ov.js reports it and leaves the element alone).
623 const FA_HOW = Object.freeze({
624 'fa-solid': 'ovg-fill', fas: 'ovg-fill', 'fa-regular': '', far: '', 'fa-classic': '', 'fa-thin': 'ovg-thin', 'fa-light': 'ovg-light',
625 'fa-fw': 'ovg-fw', 'fa-2xs': 'ovg-xs', 'fa-xs': 'ovg-xs', 'fa-sm': 'ovg-sm', 'fa-1x': '', 'fa-lg': 'ovg-lg', 'fa-xl': 'ovg-xl', 'fa-2xl': 'ovg-2x',
626 'fa-2x': 'ovg-2x', 'fa-3x': 'ovg-3x', 'fa-rotate-90': 'ovg-rotate-90', 'fa-rotate-180': 'ovg-rotate-180', 'fa-rotate-270': 'ovg-rotate-270',
627 'fa-flip-horizontal': 'ovg-flip-h', 'fa-flip-vertical': 'ovg-flip-v', fa: '',
628 });
629 const SPINNERS = new Set(['spinner', 'circle-notch', 'rotate', 'arrows-rotate', 'sync', 'sync-alt', 'rotate-right', 'arrow-rotate-right', 'gear', 'cog', 'circle-dot']);
630 /**
631 * A class list in OpenVibe's terms: { icon, brand, cls, manual, unknown }. ICON is the glyph its Font Awesome name
632 * maps to (a spinning spinner is busy), BRAND a logo's Font Awesome name (the caller maps it with brands.fromFa),
633 * CLS the classes to keep (the page's own, and ovg-* for Font Awesome's sizes, widths and turns), MANUAL the
634 * classes a person has to decide, UNKNOWN a name the glyphs do not have. Classes without fa- give icon null.
635 */
636 function fromFaClasses(list) {
637 const out = { icon: null, brand: null, cls: [], manual: [], unknown: null };
638 const words = String(list || '').split(/\s+/).filter(Boolean);
639 const brand = words.includes('fa-brands') || words.includes('fab');
640 const spin = words.some((w) => /^fa-(spin|spin-pulse|pulse)$/.test(w));
641 for (const w of words) {
642 if (w === 'fa-brands' || w === 'fab') continue;
643 if (Object.prototype.hasOwnProperty.call(FA_HOW, w)) { if (FA_HOW[w]) out.cls.push(FA_HOW[w]); continue; }
644 if (/^fa-(spin|spin-pulse|pulse)$/.test(w)) continue;
645 if (/^fa-(beat|beat-fade|bounce|fade|flip|shake|stack|stack-1x|stack-2x|layers|layers-text|layers-counter|ul|li|border|pull-left|pull-right|inverse|rotate-by|flip-both|sharp|duotone|sharp-duotone|[4-9]x|10x|swap-opacity|width-auto)$/.test(w)) { out.manual.push(w); continue; }
646 if (/^fa-[a-z0-9-]+$/.test(w)) {
647 const n = w.slice(3);
648 if (brand) { out.brand = out.brand || n; continue; }
649 if (spin && SPINNERS.has(n)) { out.icon = 'busy'; continue; }
650 const g = fromFa(n);
651 if (g && !out.icon) out.icon = g; else if (!g) out.unknown = out.unknown || w;
652 continue;
653 }
654 out.cls.push(w);
655 }
656 if (spin && out.icon && out.icon !== 'busy') out.manual.push('fa-spin');
657 out.cls = [...new Set(out.cls)];
658 return out;
659 }
660
661 return { NAMES, META, FA, SOLID, DRAWN: Object.freeze(Object.keys(DRAWN)), path, solid, inner, svg, fromFa, markup, fromFaClasses, FA_HOW };
662});
663