dishui 0.0.47 → 0.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +1 -2
  2. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  3. package/dist/components/pro/CodeEditor/themes.js +0 -25
  4. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  5. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  6. package/dist/components/pro/Flow/Flow.js +500 -483
  7. package/dist/components/pro/Flow/Flow.js.map +1 -1
  8. package/dist/components/pro/Flow/FlowCanvas.js +526 -524
  9. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  10. package/dist/components/pro/Flow/canvas/GridRenderer.d.ts +3 -0
  11. package/dist/components/pro/Flow/canvas/GridRenderer.js +28 -23
  12. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  13. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +18 -17
  14. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  15. package/dist/components/pro/Flow/canvas/PixiApp.d.ts +2 -0
  16. package/dist/components/pro/Flow/canvas/PixiApp.js +14 -11
  17. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  18. package/dist/components/pro/Flow/constants.js +7 -7
  19. package/dist/components/pro/Flow/constants.js.map +1 -1
  20. package/dist/components/pro/Flow/context/FlowAIContext.d.ts +15 -0
  21. package/dist/components/pro/Flow/context/FlowAIContext.js +32 -0
  22. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -0
  23. package/dist/components/pro/Flow/context/FlowUIContext.d.ts +4 -1
  24. package/dist/components/pro/Flow/context/FlowUIContext.js +58 -55
  25. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  26. package/dist/components/pro/Flow/edges/EdgeRenderer.js +22 -21
  27. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  28. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +32 -32
  29. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  30. package/dist/components/pro/Flow/hooks/usePixiApp.d.ts +6 -1
  31. package/dist/components/pro/Flow/hooks/usePixiApp.js +49 -30
  32. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  33. package/dist/components/pro/Flow/index.d.ts +2 -0
  34. package/dist/components/pro/Flow/lines/FreehandTool.js +21 -20
  35. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  36. package/dist/components/pro/Flow/lines/GeometricLineTool.js +22 -18
  37. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  38. package/dist/components/pro/Flow/lines/LineRenderer.js +19 -18
  39. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  40. package/dist/components/pro/Flow/nodes/MediaContent.js +143 -124
  41. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  42. package/dist/components/pro/Flow/nodes/MediaOverlay.js +22 -17
  43. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  44. package/dist/components/pro/Flow/nodes/NodeRenderer.js +77 -76
  45. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  46. package/dist/components/pro/Flow/nodes/aiClient.d.ts +22 -0
  47. package/dist/components/pro/Flow/nodes/aiClient.js +107 -54
  48. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  49. package/dist/components/pro/Flow/nodes/svgIcons.js +6 -6
  50. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  51. package/dist/components/pro/Flow/panels/AIPanel.d.ts +2 -0
  52. package/dist/components/pro/Flow/panels/AIPanel.js +498 -0
  53. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -0
  54. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +51 -39
  55. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  56. package/dist/components/pro/Flow/panels/FlowToolbar.js +91 -85
  57. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  58. package/dist/components/pro/Flow/panels/InspectorPanel.js +372 -332
  59. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  60. package/dist/components/pro/Flow/panels/OutlinePanel.js +28 -27
  61. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  62. package/dist/components/pro/Flow/panels/ShapePalette.js +107 -104
  63. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  64. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +1 -0
  65. package/dist/components/pro/Flow/panels/toolbarIcons.js +25 -20
  66. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  67. package/dist/components/pro/Flow/types.d.ts +13 -0
  68. package/dist/components/pro/Flow/types.js.map +1 -1
  69. package/dist/components/pro/Flow/utils/themeColor.d.ts +87 -0
  70. package/dist/components/pro/Flow/utils/themeColor.js +212 -0
  71. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -0
  72. package/dist/contexts/AppContext.d.ts +1 -1
  73. package/dist/contexts/AppContext.js +28 -29
  74. package/dist/contexts/AppContext.js.map +1 -1
  75. package/dist/dishui.css +1 -1
  76. package/dist/favicon.svg +10 -0
  77. package/dist/flow.js +56 -51
  78. package/dist/styles/themeStyles.js +6 -11
  79. package/dist/styles/themeStyles.js.map +1 -1
  80. package/dist/utils/themes.js +3 -23
  81. package/dist/utils/themes.js.map +1 -1
  82. package/package.json +17 -18
@@ -1 +1 @@
1
- {"version":3,"file":"aiClient.js","names":[],"sources":["../../../../../src/components/pro/Flow/nodes/aiClient.ts"],"sourcesContent":["import type { FlowAIConfig } from '../types';\n\n/**\n * Minimal streaming chat client for the Flow AI media node. Supports\n * OpenAI-compatible `/chat/completions` and Anthropic `/messages` endpoints.\n *\n * Yields incremental text deltas. Callers accumulate them to render a live,\n * streaming response. This intentionally mirrors the RichTextEditor AIRewrite\n * streaming logic but is scoped to the Flow package (no tiptap dependency).\n */\nexport interface AIChatMessage {\n role: 'user' | 'assistant';\n content: string;\n}\n\nasync function* streamOpenAI(\n config: FlowAIConfig,\n messages: AIChatMessage[],\n signal: AbortSignal,\n): AsyncGenerator<string> {\n const body = JSON.stringify({\n model: config.model,\n messages: [\n ...(config.systemPrompt ? [{ role: 'system', content: config.systemPrompt }] : []),\n ...messages,\n ],\n stream: true,\n });\n\n const response = await fetch(config.gateway, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n ...config.headers,\n },\n body,\n signal,\n });\n\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No response body');\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === 'data: [DONE]' || !trimmed.startsWith('data: ')) continue;\n try {\n const data = JSON.parse(trimmed.slice(6));\n const content = data.choices?.[0]?.delta?.content;\n if (content) yield content;\n } catch { /* skip malformed chunk */ }\n }\n }\n}\n\nasync function* streamAnthropic(\n config: FlowAIConfig,\n messages: AIChatMessage[],\n signal: AbortSignal,\n): AsyncGenerator<string> {\n const body = JSON.stringify({\n model: config.model,\n max_tokens: 4096,\n ...(config.systemPrompt ? { system: config.systemPrompt } : {}),\n messages,\n stream: true,\n });\n\n const response = await fetch(config.gateway, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { 'x-api-key': config.apiKey } : {}),\n 'anthropic-version': '2023-06-01',\n 'anthropic-dangerous-direct-browser-access': 'true',\n ...config.headers,\n },\n body,\n signal,\n });\n\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No response body');\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed.startsWith('data: ')) continue;\n try {\n const data = JSON.parse(trimmed.slice(6));\n if (data.type === 'content_block_delta' && data.delta?.text) yield data.delta.text;\n } catch { /* skip malformed chunk */ }\n }\n }\n}\n\nexport function streamAIChat(\n config: FlowAIConfig,\n messages: AIChatMessage[],\n signal: AbortSignal,\n): AsyncIterable<string> {\n if (config.protocol === 'anthropic') return streamAnthropic(config, messages, signal);\n return streamOpenAI(config, messages, signal);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"aiClient.js","names":[],"sources":["../../../../../src/components/pro/Flow/nodes/aiClient.ts"],"sourcesContent":["import type { FlowAIConfig } from '../types';\n\n/**\n * Minimal streaming chat client for the Flow AI media node. Supports\n * OpenAI-compatible `/chat/completions` and Anthropic `/messages` endpoints.\n *\n * Yields incremental text deltas. Callers accumulate them to render a live,\n * streaming response. This intentionally mirrors the RichTextEditor AIRewrite\n * streaming logic but is scoped to the Flow package (no tiptap dependency).\n */\nexport interface AIChatMessage {\n role: 'user' | 'assistant';\n content: string;\n}\n\n/**\n * Resolve the full request URL from a possibly-partial gateway.\n *\n * Users often paste a base URL (e.g. `https://api.moonshot.cn/v1`) instead of\n * the full endpoint, which then 404s. We append the protocol's default path\n * when the gateway doesn't already point at a completions/messages endpoint.\n */\nfunction resolveEndpoint(config: FlowAIConfig): string {\n const raw = (config.gateway || '').trim().replace(/\\/+$/, '');\n if (!raw) return raw;\n const path = config.protocol === 'anthropic' ? '/messages' : '/chat/completions';\n // Already a full endpoint.\n if (/\\/(chat\\/completions|messages|responses|completions)$/i.test(raw)) return raw;\n // Bare `/v1` (or version segment) base URL → append the default path.\n if (/\\/v\\d+$/i.test(raw)) return raw + path;\n // Host root with no path → assume `/v1` + default path.\n try {\n const u = new URL(raw);\n if (u.pathname === '' || u.pathname === '/') return raw + '/v1' + path;\n } catch { /* not a parseable URL; fall through */ }\n // Some other path was given; append the default endpoint segment.\n return raw + path;\n}\n\nasync function* streamOpenAI(\n config: FlowAIConfig,\n messages: ReadonlyArray<{ role: string; content: unknown }>,\n signal?: AbortSignal,\n): AsyncGenerator<string> {\n const body = JSON.stringify({\n model: config.model,\n messages: [\n ...(config.systemPrompt ? [{ role: 'system', content: config.systemPrompt }] : []),\n ...messages,\n ],\n stream: true,\n });\n\n const response = await fetch(resolveEndpoint(config), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n ...config.headers,\n },\n body,\n signal,\n });\n\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No response body');\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === 'data: [DONE]' || !trimmed.startsWith('data: ')) continue;\n try {\n const data = JSON.parse(trimmed.slice(6));\n const content = data.choices?.[0]?.delta?.content;\n if (content) yield content;\n } catch { /* skip malformed chunk */ }\n }\n }\n}\n\nasync function* streamAnthropic(\n config: FlowAIConfig,\n messages: ReadonlyArray<{ role: string; content: unknown }>,\n signal?: AbortSignal,\n): AsyncGenerator<string> {\n const body = JSON.stringify({\n model: config.model,\n max_tokens: 8192,\n ...(config.systemPrompt ? { system: config.systemPrompt } : {}),\n messages,\n stream: true,\n });\n\n const response = await fetch(resolveEndpoint(config), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { 'x-api-key': config.apiKey } : {}),\n 'anthropic-version': '2023-06-01',\n 'anthropic-dangerous-direct-browser-access': 'true',\n ...config.headers,\n },\n body,\n signal,\n });\n\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No response body');\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed.startsWith('data: ')) continue;\n try {\n const data = JSON.parse(trimmed.slice(6));\n if (data.type === 'content_block_delta' && data.delta?.text) yield data.delta.text;\n } catch { /* skip malformed chunk */ }\n }\n }\n}\n\nexport function streamAIChat(\n config: FlowAIConfig,\n messages: AIChatMessage[],\n signal: AbortSignal,\n): AsyncIterable<string> {\n if (config.protocol === 'anthropic') return streamAnthropic(config, messages, signal);\n return streamOpenAI(config, messages, signal);\n}\n\n/**\n * Non-streaming completion used by the AI flow generator. Accepts an optional\n * image (data URL) for \"reconstruct this diagram\" requests. Returns the full\n * assistant text.\n */\nexport async function completeAIChat(\n config: FlowAIConfig,\n userText: string,\n options?: { imageDataUrl?: string; systemPrompt?: string; signal?: AbortSignal },\n): Promise<string> {\n const system = options?.systemPrompt ?? config.systemPrompt;\n const image = options?.imageDataUrl;\n\n if (config.protocol === 'anthropic') {\n const content: any[] = [{ type: 'text', text: userText }];\n if (image) {\n const m = /^data:(.+?);base64,(.*)$/.exec(image);\n if (m) {\n content.unshift({\n type: 'image',\n source: { type: 'base64', media_type: m[1], data: m[2] },\n });\n }\n }\n const response = await fetch(resolveEndpoint(config), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { 'x-api-key': config.apiKey } : {}),\n 'anthropic-version': '2023-06-01',\n 'anthropic-dangerous-direct-browser-access': 'true',\n ...config.headers,\n },\n body: JSON.stringify({\n model: config.model,\n max_tokens: 4096,\n ...(system ? { system } : {}),\n messages: [{ role: 'user', content }],\n }),\n signal: options?.signal,\n });\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const json = await response.json();\n return json.content?.map((c: any) => c.text ?? '').join('') ?? '';\n }\n\n // OpenAI-compatible (supports multimodal `image_url` content parts).\n const userContent: any = image\n ? [\n { type: 'text', text: userText },\n { type: 'image_url', image_url: { url: image } },\n ]\n : userText;\n const response = await fetch(resolveEndpoint(config), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n ...config.headers,\n },\n body: JSON.stringify({\n model: config.model,\n messages: [\n ...(system ? [{ role: 'system', content: system }] : []),\n { role: 'user', content: userContent },\n ],\n }),\n signal: options?.signal,\n });\n if (!response.ok) throw new Error(`AI API error: ${response.status} ${response.statusText}`);\n const json = await response.json();\n return json.choices?.[0]?.message?.content ?? '';\n}\n\n/**\n * Streaming variant of `completeAIChat`: same multimodal request shape\n * (optional image + system prompt override), but the reply is consumed as SSE\n * deltas. `onDelta` fires with the accumulated text after every chunk so\n * callers can render the response live. Returns the full assistant text.\n */\nexport async function completeAIChatStream(\n config: FlowAIConfig,\n userText: string,\n options?: {\n imageDataUrl?: string;\n systemPrompt?: string;\n signal?: AbortSignal;\n onDelta?: (accumulated: string) => void;\n },\n): Promise<string> {\n const system = options?.systemPrompt ?? config.systemPrompt;\n const image = options?.imageDataUrl;\n\n let content: unknown = userText;\n if (config.protocol === 'anthropic') {\n const parts: any[] = [{ type: 'text', text: userText }];\n if (image) {\n const m = /^data:(.+?);base64,(.*)$/.exec(image);\n if (m) {\n parts.unshift({\n type: 'image',\n source: { type: 'base64', media_type: m[1], data: m[2] },\n });\n }\n }\n content = parts;\n } else if (image) {\n content = [\n { type: 'text', text: userText },\n { type: 'image_url', image_url: { url: image } },\n ];\n }\n\n const effective = system ? { ...config, systemPrompt: system } : config;\n const messages = [{ role: 'user', content }];\n const stream = effective.protocol === 'anthropic'\n ? streamAnthropic(effective, messages, options?.signal)\n : streamOpenAI(effective, messages, options?.signal);\n\n let acc = '';\n for await (const delta of stream) {\n acc += delta;\n options?.onDelta?.(acc);\n }\n return acc;\n}\n"],"mappings":"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"}
@@ -38,9 +38,9 @@ var m = [
38
38
  label: "Python",
39
39
  category: "lang",
40
40
  viewBox: "0 0 128 128",
41
- filled: !0,
42
- brandColor: "#FFD845",
43
- body: '<path d="M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z"/>'
41
+ brand: !0,
42
+ brandColor: "#3776AB",
43
+ body: '<path fill="#3776AB" d="M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545z"/><path fill="#FFDC51" d="M78.67 66H49.511C41.394 66 35 72.868 35 81.019v27.798c0 7.912 6.632 13.856 14.555 15.176 5.014.835 10.195 1.215 15.187 1.191 4.99-.023 9.612-.448 13.805-1.191C90.902 121.812 93 117.242 93 108.817V98H64v-4h40.224c8.484 0 15.914-5.108 18.237-14.811 2.681-11.12 2.8-17.919 0-29.53C120.386 41.017 115.431 35 106.946 35H97v12.048C97 56.685 88.572 66 80.67 66zm1.838 39.11c3.026 0 5.478 2.479 5.478 5.545 0 3.079-2.451 5.581-5.478 5.581-3.015 0-5.479-2.502-5.479-5.581 0-3.066 2.465-5.545 5.479-5.545z"/>'
44
44
  },
45
45
  {
46
46
  id: "fastapi",
@@ -57,7 +57,7 @@ var m = [
57
57
  category: "lang",
58
58
  viewBox: "0 0 128 128",
59
59
  filled: !0,
60
- brandColor: "#000000",
60
+ brandColor: "theme:base-content",
61
61
  body: '<path d="M44.44 100.63c-4.23-3.33-8.74-6.52-11.83-11.01-6.49-7.92-11.49-17.1-14.9-26.74-2.07-6.27-2.77-12.99-5.44-19.02-2.78-4.38.48-9.16 5.27-10.55 2.13-.41 5.89-2.43 1.36-.98-4.06 2.98-4.45-2.71-.29-3.07 2.84-.38 3.89-2.7 2.92-4.8-3.05-1.99 7.4-4.18 2.14-7.15-5.48-5.91 7.66-7.05 4.42-.33-.77 5.16 9.18-.95 6.87 5.01 2.35 2.86 8.8.65 8.63 4.67 3.42.24 4.6 3.11 7.8 3.33 3.33 1.5 9.36 2.69 10.49 6.44-3.3 2.61-10.95-5.4-11.31 1.84 1 10.69.74 21.7 4.65 31.88 1.85 6.16 6.33 11.01 10.38 15.81 3.88 4.7 9.12 8.01 14.48 10.8 4.69 2.21 9.75 3.68 14.87 4.6 2.07-1.59 5.74-7.48 8.97-5 .16 2.8-6.42 5.84-.31 5.54 3.59-1.08 6.08 2.77 9.04-.71 2.72 3.23 11.32-2.06 9.38 4.53-2.62 1.69-6.44.67-9.07 3-4.33-2.16-7.77 1.93-12.56 1.42-5.32.95-10.73 1.34-16.13 1.34-8.85-.7-17.89-.99-26.3-4.07-4.74-1.38-9.37-4.08-13.53-6.78zm7.47 3.24c4.63 2 9.16 4.11 14.23 4.75 8.05 1.12 16.37 2.84 24.45 1.27-3.66-1.65-7.44.64-11.08-1.18-4.37.94-9.06-.24-13.5-.82-5.05-2.25-10.5-3.8-15.23-6.72-5.91-2.16 3.06 2.77 4.65 3.17 3.69 2.1-4.06-1.08-5.16-1.95-3.09-1.74-3.49-1.37-.31.39.64.37 1.28.77 1.95 1.09zm-8.81-6.23c4.49 1.66-.02-3.16-2.07-2.88-.91-1.58-3.48-2.58-1.67-3.43-3.26 1.13-3.42-4.3-4.95-3.53-3.45-1.09-1.34-4.95-5.45-7.32-.37-2.5-4.08-4.66-5.26-8.43-.52-1.93-4.19-7.46-1.94-2.31 1.92 4.96 5.29 9.21 8.1 13.45 2.18 4.04 4.76 8.26 8.72 10.78 1.34 1.3 2.63 3.27 4.52 3.67zM30.17 83.45c.16-.68.82 1.46 0 0zm18.3 16.18c1-.44-1.43-.56 0 0zm2.44.89c-.25-1.23-1.11.69 0 0zm3.05 1.27c1.45-1.38-2.24-.87 0 0zm5.22 2.91c.89-1.3-2.82-.49 0 0zm-10.03-6.99c2.25-1.46-2.91-.02 0 0zm2.29 1.14c-.07-.77-.82.34 0 0zm11.43 7.13c1.84 1.16 10.73 2.54 5.16.48-.93.2-10.33-2.66-5.16-.48zM44.72 91.85c-.18-.77-2.85-.85 0 0zm5.32 3.1c1.39-.96-2.87-.74 0 0zm4.48 2.75c1.98-.75-3.23-.75 0 0zm-11.97-8.21c2.16 1.65 8.7.21 3.3-.99-2.45-1.31-7.99-2.2-4.22.79l.92.2zm15 9.16c.9-1.53-3.77-.88 0 0zm-4.56-3.63c5.27 1.49-4.43-3.34-1.3-.55l.7.32.6.23zm9.14 5.28c4.99.05-4.51-.68 0 0zm-21.5-13.7c-.19-.93-1.23.08 0 0zm29.94 18.44c.14-1.68-1.62 1.25 0 0zM49.15 91.82c-.3-.88-1.56-.04 0 0zm-8.04-5.8c2.86-.17-3.93-1.26 0 0zm-9.54-6.16c-.36-1.38-3.12-2.47 0 0zM56.6 95.74c-.52-.6-.25.13 0 0zm15.58 9.56c-.05-.91-.85.35 0 0zM55.22 94.32c.28-1.18-2.44-.36 0 0zm-11.6-7.36c2.13-.23-3.42-1.44 0 0zm19.63 12.2c3.32-1.32-3.24-.64 0 0zm-10.21-6.93c3.83.49-4.56-2.61-.84-.28l.84.28zm13.31 8.19c3.58-2.14 2.4 5.01 6.07.6 3.62-2.64-3.13 3.27 1.33.47 3.23-2.16 7.99 1.02 11 2.06 2.16-.11 4.27 1.87 6.49.67 4.27-1.15-8.36-1.71-5.05-3.75-3.91 1.14-6.8-1.36-8.72-3.86-4.39-1.01-9.46-3.25-11.65-7.14-.89-1.46 1.29.21-.77-2.18-2.64-2.35-3.96-5.02-5.73-7.88-2.12-1.13-2.37-4.46-2.58-.11.02-2.74-2.56-4.59-3.19-3.82-.01-2.64 2.76-1.32.82-3.27-.42-2.74-1.79-5.59-2.2-8.68-.64-1.49-.09-4.68-2.19-1.31-.76 3.57-.25-4.38.94-1.76 1.56-2.67-.56-2.36-.65-1.99 1.02-2.26.64-5.46-.27-4.24.54-2.39.86-8.8-.81-7.66 1.01-2.5 1.92-11.44-2.47-8.03-1.78.03-4.85.64-6.31 1.37 4.56 2.51-.46.91-2.32.51-.24 2.33-2.08 1.32-4.38 1.34 3.67.45-1.79 3.75-3.89 2.47-2.74 1.31 2.36 4.57.05 5.58.28 1.52-4.19-.55-3.84 2.96-2.65-1.12-.36 4.16.96 2.38 4.51 1.22 3.18 4.01 3.29 6.65-.74 1.54-3.63-3.62-.64-3.38-2.36-3.83-2.61-1.38-4.56.39-.45.13 4.99 2.53 1.57 3.72 3.01.47 3.1 3.1 3.71 4.76 1.81 1.88 1.44-2.08 3.6.18-1.37-2.02-7.25-5.68-2.52-4.51-.03-2-.03-.86-3.67.6-3.63 1.44-2.61-1.51 6.42 1.73 3.11.9-.39 1.12-2.6 2.73.21 2.34 2.3.85 3.97-2.46 1.86.59 2.01 4.42 2.72 3.7 5.86.76 2.76 1.83 1.74 2.76 1.58.73 2.68 1.14.71 1.18-.57 3.34.72 2.56 2.69 3.6 4.07 2.3 1.04-3.29-7.04.66-2.43 4.16 3.75 1.56 5.32-2.17 4.72 2.36-.19 3.12 3.19 6.07 3.07 2.69 1.28 4.52 6.2-.12 4.15-1.61-1.45-7.31-3.24-2.65-.48 4.3 1.99 7.71 3.18 11.86 5.68 2.96 2.12 4.25 4.54 5.37 5.02-2.49 1.19-7.51-.95-3.78-1.61-2.33-.42-4.94-1.6-2.71 1.3 1.89 1.58 6.71 1.42 7.58 1.59-.73 1.61-1.99 1.74.03 1.86-2.25 1.22.72 1.41.93 2.1zm-4.6-13c-1.37-1.43-1.72-4.11-.24-1.78.75.3 2.43 4.38.24 1.78zm14.99 9.52c.85-.06.02.65 0 0zmM59.59 83.91c-.06-2.17.49 1.67 0 0zM58.1 81.9c-1.73-3.32 2.17.95 0 0zM40.04 69.44c1.01-.27.5 1.73 0 0zm14.37 7.79c.62-2.33.73 1.96 0 0zm-10.15-7.06c-.71-1.29 1.5 1.21 0 0zm8.71 2.79c-1.63-3.65 1.16-2 .36.6l-.36-.6zM37.95 62.95c-.73-1.2-1.93-4.72-1.55-5.79.35 1.75 3.72 7.53 1.65 2.39-2.28-4.3 2.73 1.4 3.25 2.47.24 1.07-1.41-.29-.29 2.21-2.04-2.85-1.2 1.58-3.06-1.28zm-4.64-3.2c.19-2.79 1.06 1.91 0 0zm2.08.72c1-2.11 1.69 2.93 0 0zm-5.02-3.89c-1.73-1.72-2.98-3.3.08-1.07 1.18.05-2.62-3.6.28-1.16 3.06.56 1.51 5.01-.36 2.23zm2.64-.07c1-.99.53.98 0 0zm1.62.52c-1.52-2.85 1.85 1.2 0 0zm-3.22-3.08c-5.02-4.47 6.31 2.34.82.83l-.82-.83zm14.39 8.36c-2.18-1.3-.58-9.18.16-3.79 2.11-.68-.12 2.78 1.46 2.75-.24 2.18-.95 2.97-1.62 1.04zm5.33 3.15c.21-2.38.45 1.62 0 0zm-.93-.92c.24-1.01.03 1.2 0 0zM32.39 52.48c-3.23-4.45 9.38 4.51 2.07 1.13-.77-.21-1.69-.28-2.07-1.13zm10.26 5.43c-.31-3.75.68.62 0 0zm7.78 5c.6-2.14.05 1.41 0 0zM32.89 50.78c1.92-.41 7.95 3.37 2.41 1.08-.62-.69-1.93-.38-2.41-1.08zm16.47 8.21c.2-3.84 1.15-2.29.01.55l-.01-.55zm-15.05-9.55c.78-1.15-2.08-5.18.41-1.45 1.08.85 3.11 1.43 1.31 1.79 2.84 2.5-.68.68-1.72-.34zm14.24 8.35c.54-4.37.47 2.56 0 0zM32.68 45.41c.6-.26.32.79 0 0zm3.71 2.21c.96-2.01 1.77 2.23 0 0zm10.47 5.82c0-.77.2 1.12 0 0zm-.6-1.34c-1.45-3.59 1.35 1.9 0 0zm-.89-2.35c-.25-1.48.83 1.86 0 0zm1.45-2.36c-1-1.76 1.26-7.75 1.51-4.03-1.05 2.89-.3 4.51.43.63 1.36-3.06-.29 6.02-1.94 3.4zm1.49-8.91c.44-.53.1.65 0 0zM45.82 87.6c-.59-.52.07.33 0 0zm5.13 2.6c2.86.74 2.84-.44.26-.79-1.39-1.29-5.77-2.66-1.85-.16.27.65 1.09.63 1.59.95zm-10.14-6.74c1.57 1.18 5.93 3.32 2.24.45 1.24-1.44-2.38-2.21-1.18-3.18-3.06-1.87-2.41-1.7-.27-1.64-3.67-1.64.53-1.52.33-2.36-1.42-.28-7.03-2.5-3.73.18-3.36-1.71-.8.64-1.82.39-3.44-.94 3.06 2.62-.54 1.73 1.97 1.56 5.3 4 .83 1.65-.57.85 3.21 2.14 4.14 2.78zm5.37 3.09c6.53 2.1-3.2-2.58 0 0zm27.5 16.65c.08-1.3-.9 1.11 0 0zm2.82 1.19c1.51-1.46.06 2.33 2.5-.36.03-1.92-.07-3.06-2.8-.72-.75.42-1.09 2.19.3 1.08zM31.65 76.22c-.47-1.82-3.25-1.81 0 0zm3.01 1.98c-1.12-1.86-4-1.68 0 0zm17.17 10.35c1.68 1.49 7.7 1.09 2.03.18-.83-1.24-5.32-.94-2.03-.18zm23.6 14.57c2.57-2.16-2.5.97 0 0zm5.36 3.69c.02-.69-1.11.3 0 0zm.01-.97c2.86-3.03-2.77.18 0 0zM24.22 70.01c-2.43-3.47-1.51-5.03-3.86-7.87-.45-2.17-4.03-7.09-1.85-1.88 1.99 3.05 2.58 7.77 5.71 9.75zm55.68 34.87c5.26-3.4-2.15-1.48 0 0zm4.01 1.57c2.64-2.26-1.66-.47 0 0zM30.75 72.38c.76-1.12-1.94-.14 0 0zm52.33 32.99c2.55-1.64-.59-1.39-.46.15l.46-.15zM48.5 83.58c-.09-1.11-1.35.09 0 0zm2.14 1.23c-.69-1.38-1.05.21 0 0zm36.53 21.67c3.27-2.36-1.98-.45-.68.45l.68-.45zm-1.26-.6c2.67-2.23-2.8.99 0 0zm6.39 4.25c1.79-1.19-2.17-.38 0 0zM32.39 71.57c2.39.54 9.56 5.89 5.33.37-2.17-.64-.87-5.94-3.08-5 1.48 2.48 1.22 3.53-1.9 1.97-3.91-1.91-2.2.94-1.43 1.73-1.04.25 1.39.91 1.08.93zm-10.9-8.61c.43-1.77-3.95-9.75-2.07-4 .68 1.21.61 3.49 2.07 4zM41.5 75.3c-1.23-1.03-.06-.15 0 0zm3.03.71c0-1.88-3.35-.77 0 0zm26.3 16.57c-.5-1.28-1.98-.02 0 0zm1.26.93c-.18-.72-.72.14 0 0zm10.43 6.56c1-.74-1.25-.09 0 0zM26.93 64.35c2.87-1.11-3.07-.79 0 0zm41.59 26.2c-.04-1.86-1.83.46 0 0zM25.8 61.71c1.84-.62-1.71-.41 0 0zm5.34 2.59c-.03-.61-.56.23 0 0zm65.22 39.99c2.37-.48 7.77 1.21 8.64-.63-2.88-.07-9.95-2.03-10.28.46l.63.1 1.01.07zM32.84 64.73c.05-1.88-1.46-.07 0 0zm-14.05-9.75c-.64-3.58-2.43-.54 0 0zm3.35.84c.04-1.15-3.07-1.03 0 0zm1.91.94c-.55-.44-.43.57 0 0zm12.06 7.73c.57-.52-1.35-.38 0 0zm-13.33-9.85c-.33-2.71-3.88-.4 0 0zm-6.87-4.46c-.1-1.25-.67.47 0 0zm1.02-.77c-.17-1.48-.88.19 0 0zm5.65 3.37c2.39-.94-4.35-1.94-.49-.18l.49.18zm75.59 46.69c1.53-1.4-1.94-.43 0 0zm9.13 4.74c.61-1.81-1.54.23 0 0zM23.15 49.82c.26-1.75-1.89.35 0 0zm-8.03-5.38c-.43-2.47-.37-6.82 3.76-5.35-5.51 1.1 3.82 6.85 2.64 2.31 2.32.11 4.53-1.37 3.32.88 4.57-.5 7.73-4.46 12.14-3.91 3.44-.46 7.19-.8 10.89-2.18 3.04-.22 5.97-3.5 4.31-5.44-4.15-.35-8.5.17-13.08 1.08-5.08 1.06-9.7 3.06-14.83 3.93-5 .67 1 1.85-.43 2.11-2.61.9 3.11 1.52-.34 2.47-2.13-.41-4.35-1.14-3.44-3.38-4.79.62-9 2.61-5.21 7.48h.27zm11.54-5.88c1.12-4.14 6.01 3.4 1.84.55-.5-.38-1.32-.68-1.84-.55zm.22-2.01c1.62-1.2.86.68 0 0zm2.06.04c.15-1.9 4.71 1.01.75.68l-.75-.68zm2.81-1.14c1.03-1.2.3 1.07 0 0zm.72-.48c1.71-2.06 9.69-1.31 3.85-.2-1.56-1.18-2.76.7-3.85.2zm10.42-1.6c-.26-5.62 5.18 1.99 0 0zm2.96-.02c1.08-2.83 4.2-1.14.5-.57.08.3-.11 1.46-.5.57zM21.99 48.37c3.23-1.98-3.43-1.72 0 0zm2.39.66c1.13-1.2-2.46-.49 0 0zm-7.04-4.99c1.85-1.42-2.18-.54 0 0zm95.35 59.65c.05-1.65-1.41.74 0 0zM103 97.08c.28-1.9-1.24.16 0 0zm12.36 7.25c2.58.01 7.82-.8 2.2-.8-.88.13-5.13.11-2.2.8zM26.48 47.87c2.09-.14 3.27-2.3-.41-2.18-5.69-.59 5.02 1.95-.73 1.22-.77.51 1.09 1.1 1.14.96zm1.84.93c-.22-1.34-.65.71 0 0zm2.18-5.82c.9-1.12-1.26-.3 0 0zm-6.95-11.6c3.73-1.27 8.82-2.69 10.58.62-1.79-2.15-.72-4.28.97-1.12 2.39 3.19 3.59-1.45 2.03-2.52 1.77 2.2 3.79 3.24 1.19.14 2.83-3.4-5.66.45-7.59.41-.92.41-9.58 2.2-7.18 2.47zm2.19-4.18c2.13-1.6 7.35.96 4-1.59-.33-.3-7.35 1.93-4 1.59zm7.75.32c2.49.06-1.07-3.34 1.89-1.8-.49-1.59-3.45-1.89-4.9-2.52-.82 1.45 1.66 4.34 3.01 4.32zm-6.39-7.04c.86-1.16-1.51.6 0 0zm3.16.76c4.01-.53-1.02-1.72-.81-.04l.81.04zm-5.91-4.62c-2.82-3.69 5.31.62 2.44-3.24-2.41-1.92-4.73 2.16-2.44 3.24zm36.21 19.5c1.29-2.29-5.34-3.09-.87-.81.42.14.32.97.87.81z"/>'
62
62
  },
63
63
  {
@@ -120,7 +120,7 @@ var m = [
120
120
  category: "lang",
121
121
  viewBox: "0 0 128 128",
122
122
  filled: !0,
123
- brandColor: "#000000",
123
+ brandColor: "theme:base-content",
124
124
  body: '<path d="m63.991 128 51.702-29.855-19.817-11.461-20.26 11.704a1.151 1.151 0 0 1-1.125-.009 1.145 1.145 0 0 1-.568-.975V69.608c0-.819.424-1.56 1.133-1.968L99.13 53.737a1.119 1.119 0 0 1 1.124.009c.352.195.572.564.576.966V78.11l19.83 11.454V29.855L63.99 62.566Zm0 0"/><path d="m52.397 98.401-20.27-11.718-19.832 11.46L63.991 128V62.566L7.34 29.854V89.56l19.825-11.45V54.714c.009-.401.225-.77.572-.966a1.13 1.13 0 0 1 1.13-.009L52.953 67.64a2.275 2.275 0 0 1 1.133 1.97v27.8a1.156 1.156 0 0 1-.565.98 1.131 1.131 0 0 1-1.124.012"/><path d="M68.959 0v22.9L89.22 34.597c.348.203.555.576.555.984 0 .403-.212.772-.555.975L65.137 50.468a2.302 2.302 0 0 1-2.27 0L38.791 36.556a1.122 1.122 0 0 1-.56-.975 1.127 1.127 0 0 1 .56-.984L59.048 22.9V0L7.339 29.855l56.652 32.711 56.665-32.71Zm0 0"/>'
125
125
  },
126
126
  {
@@ -326,7 +326,7 @@ var m = [
326
326
  category: "lang",
327
327
  viewBox: "0 0 128 128",
328
328
  filled: !0,
329
- brandColor: "#000000",
329
+ brandColor: "#CE422B",
330
330
  body: '<path d="M62.96.242c-.232.135-1.203 1.528-2.16 3.097-2.4 3.94-2.426 3.942-5.65.55-2.098-2.208-2.605-2.612-3.28-2.607-.44.002-.995.152-1.235.332-.24.18-.916 1.612-1.504 3.183-1.346 3.6-1.41 3.715-2.156 3.86-.46.086-1.343-.407-3.463-1.929-1.565-1.125-3.1-2.045-3.411-2.045-1.291 0-1.655.706-2.27 4.4-.78 4.697-.754 4.681-4.988 2.758-1.71-.776-3.33-1.41-3.603-1.41-.274 0-.792.293-1.15.652-.652.652-.653.655-.475 4.246l.178 3.595-.68.364c-.602.322-1.017.283-3.684-.348-3.48-.822-4.216-.8-4.92.15l-.516.693.692 2.964c.38 1.63.745 3.2.814 3.487.067.287-.05.746-.26 1.02-.348.448-.717.49-3.94.44-5.452-.086-5.761.382-3.51 5.3.718 1.56 1.305 2.98 1.305 3.15 0 .898-.717 1.224-3.794 1.727-1.722.28-3.218.51-3.326.51-.107 0-.43.235-.717.522-.937.936-.671 1.816 1.453 4.814 2.646 3.735 2.642 3.75-1.73 5.421-4.971 1.902-5.072 2.37-1.287 5.96 3.525 3.344 3.53 3.295-.461 5.804C.208 62.8.162 62.846.085 63.876c-.093 1.253-.071 1.275 3.538 3.48 3.57 2.18 3.57 2.246.067 5.56C-.078 76.48.038 77 5.013 78.877c4.347 1.64 4.353 1.66 1.702 5.394-1.502 2.117-1.981 3-1.981 3.653 0 1.223.637 1.535 4.44 2.174 3.206.54 3.92.857 3.92 1.741 0 .182-.588 1.612-1.307 3.177-2.236 4.87-1.981 5.275 3.31 5.275 4.93 0 4.799-.15 3.737 4.294-.8 3.35-.813 3.992-.088 4.715.554.556 1.6.494 4.87-.289 2.499-.596 2.937-.637 3.516-.328l.66.354-.177 3.594c-.178 3.593-.177 3.595.475 4.248.358.36.884.652 1.165.652.282 0 1.903-.63 3.604-1.404 4.22-1.916 4.194-1.932 4.973 2.75.617 3.711.977 4.4 2.294 4.4.327 0 1.83-.88 3.34-1.958 2.654-1.893 3.342-2.19 4.049-1.74.182.115.89 1.67 1.572 3.455 1.003 2.625 1.37 3.31 1.929 3.576 1.062.51 1.72.1 4.218-2.62 3.016-3.286 3.14-3.27 5.602.72 2.72 4.406 3.424 4.396 6.212-.089 2.402-3.864 2.374-3.862 5.621-.47 2.157 2.25 2.616 2.61 3.343 2.61.464 0 1.019-.175 1.23-.388.214-.213.92-1.786 1.568-3.496.649-1.71 1.321-3.2 1.495-3.31.687-.436 1.398-.13 4.048 1.752 1.56 1.108 3.028 1.96 3.377 1.96 1.296 0 1.764-.92 2.302-4.535.46-3.082.554-3.378 1.16-3.685.596-.302.954-.2 3.75 1.07 1.701.77 3.323 1.402 3.604 1.402.282 0 .816-.302 1.184-.672l.672-.67-.184-3.448c-.177-3.29-.16-3.468.364-3.943.54-.488.596-.486 3.615.204 3.656.835 4.338.857 5.025.17.671-.67.664-.818-.254-4.69-1.03-4.346-1.168-4.19 3.78-4.19 3.374 0 3.75-.049 4.18-.523.718-.793.547-1.702-.896-4.779-.729-1.55-1.32-2.96-1.315-3.135.024-.914.743-1.227 4.065-1.767 2.033-.329 3.553-.71 3.829-.96.923-.833.584-1.918-1.523-4.873-2.642-3.703-2.63-3.738 1.599-5.297 5.064-1.866 5.209-2.488 1.419-6.09-3.51-3.335-3.512-3.317.333-5.677 4.648-2.853 4.655-3.496.082-6.335-3.933-2.44-3.93-2.406-.405-5.753 3.78-3.593 3.678-4.063-1.295-5.965-4.388-1.679-4.402-1.72-1.735-5.38 1.588-2.18 1.982-2.903 1.982-3.65 0-1.306-.586-1.598-4.436-2.22-3.216-.52-3.924-.835-3.924-1.75 0-.174.588-1.574 1.307-3.113 1.406-3.013 1.604-4.22.808-4.94-.428-.387-1-.443-4.067-.392-3.208.054-3.618.008-4.063-.439-.486-.488-.48-.557.278-3.725.931-3.88.935-3.975.17-4.694-.777-.73-1.262-.718-4.826.121-2.597.612-3.027.653-3.617.337l-.67-.36.185-3.582.186-3.58-.67-.67c-.369-.37-.891-.67-1.163-.67-.27 0-1.884.64-3.583 1.421-2.838 1.306-3.143 1.393-3.757 1.072-.612-.32-.714-.637-1.237-3.829-.603-3.693-.977-4.412-2.288-4.412-.311 0-1.853.925-3.426 2.055-2.584 1.856-2.93 2.032-3.574 1.807-.533-.186-.843-.59-1.221-1.599-.28-.742-.817-2.172-1.194-3.177-.762-2.028-1.187-2.482-2.328-2.482-.637 0-1.213.458-3.28 2.604-3.25 3.375-3.261 3.374-5.65-.545C66.073 1.78 65.075.382 64.81.24c-.597-.32-1.3-.32-1.85.002m2.96 11.798c2.83 2.014 1.326 6.75-2.144 6.75-3.368 0-5.064-4.057-2.66-6.36 1.358-1.3 3.304-1.459 4.805-.39m-3.558 12.507c1.855.705 2.616.282 6.852-3.8l3.182-3.07 1.347.18c4.225.56 12.627 4.25 17.455 7.666 4.436 3.14 10.332 9.534 12.845 13.93l.537.942-2.38 5.364c-1.31 2.95-2.382 5.673-2.382 6.053 0 .878.576 2.267 1.13 2.726.234.195 2.457 1.265 4.939 2.378l4.51 2.025.178 1.148c.23 1.495.26 5.167.052 6.21l-.163.816h-2.575c-2.987 0-2.756-.267-2.918 3.396-.118 2.656-.76 4.124-2.22 5.075-2.377 1.551-6.304 1.27-7.97-.57-.255-.284-.752-1.705-1.105-3.16-1.03-4.254-2.413-6.64-5.193-8.965-.878-.733-1.595-1.418-1.595-1.522 0-.102.965-.915 2.145-1.803 4.298-3.24 6.77-7.012 7.04-10.747.519-7.126-5.158-13.767-13.602-15.92-2.002-.51-2.857-.526-27.624-.526-14.057 0-25.56-.092-25.56-.204 0-.263 3.125-3.295 4.965-4.816 5.054-4.178 11.618-7.465 18.417-9.22l2.35-.61 3.34 3.387c1.839 1.863 3.64 3.5 4.003 3.637M20.3 46.34c1.539 1.008 2.17 3.54 1.26 5.062-1.405 2.356-4.966 2.455-6.373.178-2.046-3.309 1.895-7.349 5.113-5.24m90.672.13c4.026 2.454.906 8.493-3.404 6.586-2.877-1.273-2.97-5.206-.155-6.64 1.174-.6 2.523-.579 3.56.053M32.163 61.5v15.02h-13.28l-.526-2.285c-1.036-4.5-1.472-9.156-1.211-12.969l.182-2.679 4.565-2.047c2.864-1.283 4.706-2.262 4.943-2.625 1.038-1.584.94-2.715-.518-5.933l-.68-1.502h6.523V61.5M70.39 47.132c2.843.74 4.345 2.245 4.349 4.355.002 1.55-.765 2.52-2.67 3.38-1.348.61-1.562.625-10.063.708l-8.686.084v-8.92h7.782c6.078 0 8.112.086 9.288.393m-2.934 21.554c1.41.392 3.076 1.616 3.93 2.888.898 1.337 1.423 3.076 2.667 8.836 1.05 4.87 1.727 6.46 3.62 8.532 2.345 2.566 1.8 2.466 13.514 2.466 5.61 0 10.198.09 10.198.2 0 .197-3.863 4.764-4.03 4.764-.048 0-2.066-.422-4.484-.939-6.829-1.458-7.075-1.287-8.642 6.032l-1.008 4.702-.91.448c-1.518.75-6.453 2.292-9.01 2.82-4.228.87-8.828 1.162-12.871.821-6.893-.585-16.02-3.259-16.377-4.8-.075-.327-.535-2.443-1.018-4.704-.485-2.26-1.074-4.404-1.31-4.764-1.13-1.724-2.318-1.83-7.547-.674-1.98.44-3.708.796-3.84.796-.248 0-3.923-4.249-3.923-4.535 0-.09 8.728-.194 19.396-.23l19.395-.066.07-6.89c.05-4.865-.018-6.997-.23-7.25-.234-.284-1.485-.358-6.011-.358H53.32v-8.36l6.597.001c3.626.002 7.02.12 7.539.264M37.57 100.02c3.084 1.88 1.605 6.804-2.043 6.8-3.74 0-5.127-4.88-1.94-6.826 1.055-.643 2.908-.63 3.983.026m56.48.206c1.512 1.108 2.015 3.413 1.079 4.95-2.46 4.034-8.612.827-6.557-3.419 1.01-2.085 3.695-2.837 5.478-1.53"/>'
331
331
  },
332
332
  {