Added signal handling to smtp, nailed many memory leaks on SearchTree, WorkerThread...
[fmail.git] / docs / fmail-diagram.svg
blob7b16695b1852d6a581ef685a955ffe4fc1ea1c59
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!-- Created with Inkscape (http://www.inkscape.org/) -->
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://web.resource.org/cc/"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="1200"
12 height="1052.3622"
13 id="svg2"
14 sodipodi:version="0.32"
15 inkscape:version="0.45"
16 version="1.0"
17 sodipodi:docbase="/home/clsdaniel/Development/fmail/docs"
18 sodipodi:docname="fmail-diagram.svg"
19 inkscape:output_extension="org.inkscape.output.svg.inkscape"
20 sodipodi:modified="true">
21 <defs
22 id="defs4" />
23 <sodipodi:namedview
24 id="base"
25 pagecolor="#ffffff"
26 bordercolor="#666666"
27 borderopacity="1.0"
28 inkscape:pageopacity="0.0"
29 inkscape:pageshadow="2"
30 inkscape:zoom="0.5"
31 inkscape:cx="407.01327"
32 inkscape:cy="464.77893"
33 inkscape:document-units="px"
34 inkscape:current-layer="layer1"
35 width="1200px"
36 height="1052.3622px"
37 inkscape:window-width="1024"
38 inkscape:window-height="693"
39 inkscape:window-x="0"
40 inkscape:window-y="25" />
41 <metadata
42 id="metadata7">
43 <rdf:RDF>
44 <cc:Work
45 rdf:about="">
46 <dc:format>image/svg+xml</dc:format>
47 <dc:type
48 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
49 </cc:Work>
50 </rdf:RDF>
51 </metadata>
53 inkscape:label="Capa 1"
54 inkscape:groupmode="layer"
55 id="layer1">
57 id="g4504"
58 transform="matrix(1,0,0,0.7408079,-250,250.52784)">
59 <rect
60 y="63.021301"
61 x="409.29059"
62 height="186.68176"
63 width="577.41876"
64 id="rect3403"
65 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:69.98862457;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
66 <rect
67 y="78.370728"
68 x="431.74805"
69 height="155.98296"
70 width="532.50391"
71 id="rect3405"
72 style="fill:#006aa8;fill-opacity:1;stroke:#006aa8;stroke-width:69.71053314;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
73 </g>
75 id="g3391"
76 transform="translate(2,-51.705467)">
78 transform="matrix(1.0629662,0,0,0.4652786,22.859016,680.76504)"
79 id="g3135">
80 <rect
81 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:85.65721893;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
82 id="rect2160"
83 width="189.76065"
84 height="89.760658"
85 x="145.58163"
86 y="336.18729" />
87 <rect
88 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:85.3168869;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
89 id="rect3133"
90 width="175"
91 height="75"
92 x="152.96196"
93 y="343.56763" />
94 </g>
95 <flowRoot
96 transform="translate(8.2314834,288.47605)"
97 style="font-size:22px;text-align:center;text-anchor:middle"
98 id="flowRoot3139"
99 xml:space="preserve"><flowRegion
100 id="flowRegion3141"><rect
101 style="font-size:22px;text-align:center;text-anchor:middle"
102 y="534.36218"
103 x="166"
104 height="86"
105 width="206"
106 id="rect3143" /></flowRegion><flowPara
107 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle"
108 id="flowPara3145">BaseServer</flowPara><flowPara
109 id="flowPara3259"
110 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle">SMTP Port</flowPara></flowRoot> </g>
112 id="g3328"
113 transform="translate(-190,493.29421)">
115 transform="matrix(1.0629662,0,0,0.4561418,216.39706,27.542841)"
116 id="g3147">
117 <rect
118 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:86.510849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
119 id="rect3149"
120 width="189.76065"
121 height="89.760658"
122 x="145.58163"
123 y="336.18729" />
124 <rect
125 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:86.16712189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
126 id="rect3151"
127 width="175"
128 height="75"
129 x="152.96196"
130 y="343.56763" />
131 </g>
132 <flowRoot
133 transform="translate(204.30859,-350.48179)"
134 style="font-size:22px"
135 id="flowRoot3153"
136 xml:space="preserve"><flowRegion
137 id="flowRegion3155"><rect
138 style="font-size:22px"
139 y="534.36218"
140 x="166"
141 height="60"
142 width="268"
143 id="rect3157" /></flowRegion><flowPara
144 style="font-size:28px;font-weight:bold"
145 id="flowPara3159">LoadHandler</flowPara></flowRoot> </g>
147 id="g3381"
148 transform="translate(2,-55.999972)">
150 transform="matrix(1.1362177,0,0,0.4561418,6.95429,465.54284)"
151 id="g3161">
152 <rect
153 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:83.67572784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
154 id="rect3163"
155 width="189.76065"
156 height="89.760658"
157 x="145.58163"
158 y="336.18729" />
159 <rect
160 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:83.34326935;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
161 id="rect3165"
162 width="175"
163 height="75"
164 x="152.96196"
165 y="343.56763" />
166 </g>
167 <flowRoot
168 transform="translate(-25.05904,70.018208)"
169 style="font-size:22px;text-align:center;text-anchor:middle"
170 id="flowRoot3167"
171 xml:space="preserve"><flowRegion
172 id="flowRegion3169"><rect
173 style="font-size:22px;text-align:center;text-anchor:middle"
174 y="534.36218"
175 x="166"
176 height="82"
177 width="276"
178 id="rect3171" /></flowRegion><flowPara
179 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle"
180 id="flowPara3173">ProtocolHandler</flowPara><flowPara
181 id="flowPara3337"
182 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle">SMTP</flowPara></flowRoot> </g>
184 id="g2350"
185 transform="translate(-2,8)">
187 transform="matrix(1.1533166,0,0,3.9183299e-2,326.22501,379.54071)"
188 id="g3491">
189 <rect
190 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:283.37109375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
191 id="rect3493"
192 width="189.76065"
193 height="89.760658"
194 x="145.58163"
195 y="336.18729" />
196 <rect
197 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:282.24517822;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
198 id="rect3495"
199 width="175"
200 height="75"
201 x="152.96196"
202 y="343.56763" />
203 </g>
204 <flowRoot
205 transform="translate(321.23347,-157.3733)"
206 style="font-size:22px"
207 id="flowRoot3181"
208 xml:space="preserve"><flowRegion
209 id="flowRegion3183"><rect
210 style="font-size:22px"
211 y="534.36218"
212 x="166"
213 height="60"
214 width="268"
215 id="rect3185" /></flowRegion><flowPara
216 style="font-size:28px;font-weight:bold"
217 id="flowPara3187">Authentication</flowPara></flowRoot> </g>
219 id="g2318"
220 transform="translate(-2,8)">
222 transform="matrix(1.1533166,0,0,3.9183299e-2,21.89092,381.16128)"
223 id="g3189">
224 <rect
225 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:283.37109375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
226 id="rect3191"
227 width="189.76065"
228 height="89.760658"
229 x="145.58163"
230 y="336.18729" />
231 <rect
232 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:282.24517822;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
233 id="rect3193"
234 width="175"
235 height="75"
236 x="152.96196"
237 y="343.56763" />
238 </g>
239 <flowRoot
240 transform="translate(70.424768,-155.75273)"
241 style="font-size:22px"
242 id="flowRoot3195"
243 xml:space="preserve"><flowRegion
244 id="flowRegion3197"><rect
245 style="font-size:22px"
246 y="534.36218"
247 x="166"
248 height="58"
249 width="298"
250 id="rect3199" /></flowRegion><flowPara
251 style="font-size:28px;font-weight:bold"
252 id="flowPara3201">Mailbox</flowPara></flowRoot> </g>
254 id="g3245"
255 transform="matrix(3.1722603,0,0,0.4525429,-311.78217,799.27922)">
256 <rect
257 y="336.18729"
258 x="145.58163"
259 height="89.760658"
260 width="189.76065"
261 id="rect3247"
262 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:50.27659988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
263 <rect
264 y="343.56763"
265 x="152.96196"
266 height="75"
267 width="175"
268 id="rect3249"
269 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:50.07685089;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
270 </g>
271 <flowRoot
272 xml:space="preserve"
273 id="flowRoot3251"
274 style="font-size:22px"
275 transform="translate(206.26209,417.05992)"><flowRegion
276 id="flowRegion3253"><rect
277 id="rect3255"
278 width="268"
279 height="60"
280 x="166"
281 y="534.36218"
282 style="font-size:22px" /></flowRegion><flowPara
283 id="flowPara3257"
284 style="font-size:28px;font-weight:bold">FancyMail</flowPara></flowRoot> <g
285 id="g3318"
286 transform="translate(-44,-48.000007)">
288 transform="matrix(1.0629662,0,0,0.4652786,404.39706,677.05958)"
289 id="g3261">
290 <rect
291 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:85.65721893;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
292 id="rect3263"
293 width="189.76065"
294 height="89.760658"
295 x="145.58163"
296 y="336.18729" />
297 <rect
298 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:85.3168869;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
299 id="rect3265"
300 width="175"
301 height="75"
302 x="152.96196"
303 y="343.56763" />
304 </g>
305 <flowRoot
306 transform="translate(389.76953,284.77059)"
307 style="font-size:22px;text-align:center;text-anchor:middle"
308 id="flowRoot3267"
309 xml:space="preserve"><flowRegion
310 id="flowRegion3269"><rect
311 style="font-size:22px;text-align:center;text-anchor:middle"
312 y="534.36218"
313 x="166"
314 height="86"
315 width="206"
316 id="rect3271" /></flowRegion><flowPara
317 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle"
318 id="flowPara3273">BaseServer</flowPara><flowPara
319 id="flowPara3275"
320 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle">POP3 Port</flowPara></flowRoot> </g>
322 id="g3309"
323 transform="translate(60,420)">
325 id="g3295"
326 transform="matrix(8.3195642e-2,0,0,0.1487077,366.57244,328.2842)">
327 <rect
328 y="336.18729"
329 x="145.58163"
330 height="89.760658"
331 width="189.76065"
332 id="rect3297"
333 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:541.58074951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
334 <rect
335 y="343.56763"
336 x="152.96196"
337 height="75"
338 width="175"
339 id="rect3299"
340 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:539.42889404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
341 </g>
342 <flowRoot
343 xml:space="preserve"
344 id="flowRoot3301"
345 style="font-size:22px"
346 transform="translate(194.4372,-167.13971)"><flowRegion
347 id="flowRegion3303"><rect
348 id="rect3305"
349 width="268"
350 height="60"
351 x="166"
352 y="534.36218"
353 style="font-size:22px" /></flowRegion><flowPara
354 id="flowPara3307"
355 style="font-size:28px;font-weight:bold">IPC</flowPara></flowRoot> </g>
357 id="g3339"
358 transform="translate(147.82858,493.29421)">
360 transform="matrix(1.0629662,0,0,0.4561418,216.39706,27.542841)"
361 id="g3341">
362 <rect
363 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:86.510849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
364 id="rect3343"
365 width="189.76065"
366 height="89.760658"
367 x="145.58163"
368 y="336.18729" />
369 <rect
370 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:86.16712189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
371 id="rect3345"
372 width="175"
373 height="75"
374 x="152.96196"
375 y="343.56763" />
376 </g>
377 <flowRoot
378 transform="translate(204.30859,-350.48179)"
379 style="font-size:22px"
380 id="flowRoot3347"
381 xml:space="preserve"><flowRegion
382 id="flowRegion3349"><rect
383 style="font-size:22px"
384 y="534.36218"
385 x="166"
386 height="60"
387 width="268"
388 id="rect3351" /></flowRegion><flowPara
389 style="font-size:28px;font-weight:bold"
390 id="flowPara3353">LoadHandler</flowPara></flowRoot> </g>
392 id="g3371"
393 transform="translate(2,-63.998442)">
395 transform="matrix(1.1362177,0,0,0.4561418,344.78287,473.54131)"
396 id="g3355">
397 <rect
398 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:83.67572784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
399 id="rect3357"
400 width="189.76065"
401 height="89.760658"
402 x="145.58163"
403 y="336.18729" />
404 <rect
405 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:83.34326935;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
406 id="rect3359"
407 width="175"
408 height="75"
409 x="152.96196"
410 y="343.56763" />
411 </g>
412 <flowRoot
413 transform="translate(312.76954,78.016681)"
414 style="font-size:22px;text-align:center;text-anchor:middle"
415 id="flowRoot3361"
416 xml:space="preserve"><flowRegion
417 id="flowRegion3363"><rect
418 style="font-size:22px;text-align:center;text-anchor:middle"
419 y="534.36218"
420 x="166"
421 height="82"
422 width="276"
423 id="rect3365" /></flowRegion><flowPara
424 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle"
425 id="flowPara3367">ProtocolHandler</flowPara><flowPara
426 id="flowPara3369"
427 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle">POP3</flowPara></flowRoot> </g>
428 <flowRoot
429 xml:space="preserve"
430 id="flowRoot4508"
431 style="font-size:22px;text-align:center;text-anchor:middle"
432 transform="translate(101.60153,-231.72941)"><flowRegion
433 id="flowRegion4510"><rect
434 id="rect4512"
435 width="362"
436 height="46"
437 x="166"
438 y="534.36218"
439 style="font-size:22px;text-align:center;text-anchor:middle" /></flowRegion><flowPara
440 id="flowPara4514"
441 style="font-size:28px;font-weight:bold;text-align:center;text-anchor:middle">Auxiliary Servers</flowPara></flowRoot> <g
442 id="g4516"
443 transform="translate(229.42217,505.41029)">
445 id="g4518"
446 transform="matrix(8.3195642e-2,0,0,0.1487077,366.57244,328.2842)">
447 <rect
448 y="336.18729"
449 x="145.58163"
450 height="89.760658"
451 width="189.76065"
452 id="rect4520"
453 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:541.58074951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
454 <rect
455 y="343.56763"
456 x="152.96196"
457 height="75"
458 width="175"
459 id="rect4522"
460 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:539.42889404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
461 </g>
462 <flowRoot
463 xml:space="preserve"
464 id="flowRoot4524"
465 style="font-size:22px"
466 transform="translate(194.4372,-167.13971)"><flowRegion
467 id="flowRegion4526"><rect
468 id="rect4528"
469 width="268"
470 height="60"
471 x="166"
472 y="534.36218"
473 style="font-size:22px" /></flowRegion><flowPara
474 id="flowPara4530"
475 style="font-size:28px;font-weight:bold">IPC</flowPara></flowRoot> </g>
477 id="g4532"
478 transform="translate(-106.11588,505.41029)">
480 id="g4534"
481 transform="matrix(8.3195642e-2,0,0,0.1487077,366.57244,328.2842)">
482 <rect
483 y="336.18729"
484 x="145.58163"
485 height="89.760658"
486 width="189.76065"
487 id="rect4536"
488 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:541.58074951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
489 <rect
490 y="343.56763"
491 x="152.96196"
492 height="75"
493 width="175"
494 id="rect4538"
495 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:539.42889404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
496 </g>
497 <flowRoot
498 xml:space="preserve"
499 id="flowRoot4540"
500 style="font-size:22px"
501 transform="translate(194.4372,-167.13971)"><flowRegion
502 id="flowRegion4542"><rect
503 id="rect4544"
504 width="268"
505 height="60"
506 x="166"
507 y="534.36218"
508 style="font-size:22px" /></flowRegion><flowPara
509 id="flowPara4546"
510 style="font-size:28px;font-weight:bold">IPC</flowPara></flowRoot> </g>
512 id="g2279"
513 transform="translate(-96.577827,113.41029)">
515 id="g2281"
516 transform="matrix(8.3195642e-2,0,0,0.1487077,366.57244,328.2842)">
517 <rect
518 y="336.18729"
519 x="145.58163"
520 height="89.760658"
521 width="189.76065"
522 id="rect2283"
523 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:541.58074951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
524 <rect
525 y="343.56763"
526 x="152.96196"
527 height="75"
528 width="175"
529 id="rect2285"
530 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:539.42889404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
531 </g>
532 <flowRoot
533 xml:space="preserve"
534 id="flowRoot2287"
535 style="font-size:22px"
536 transform="translate(194.4372,-167.13971)"><flowRegion
537 id="flowRegion2289"><rect
538 id="rect2291"
539 width="268"
540 height="60"
541 x="166"
542 y="534.36218"
543 style="font-size:22px" /></flowRegion><flowPara
544 id="flowPara2293"
545 style="font-size:28px;font-weight:bold">IPC</flowPara></flowRoot> </g>
547 id="g2295"
548 transform="translate(221.42217,115.41029)">
550 id="g2297"
551 transform="matrix(8.3195642e-2,0,0,0.1487077,366.57244,328.2842)">
552 <rect
553 y="336.18729"
554 x="145.58163"
555 height="89.760658"
556 width="189.76065"
557 id="rect2299"
558 style="fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:541.58074951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
559 <rect
560 y="343.56763"
561 x="152.96196"
562 height="75"
563 width="175"
564 id="rect2301"
565 style="fill:#006ad5;fill-opacity:1;stroke:#006ad5;stroke-width:539.42889404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
566 </g>
567 <flowRoot
568 xml:space="preserve"
569 id="flowRoot2303"
570 style="font-size:22px"
571 transform="translate(194.4372,-167.13971)"><flowRegion
572 id="flowRegion2305"><rect
573 id="rect2307"
574 width="268"
575 height="60"
576 x="166"
577 y="534.36218"
578 style="font-size:22px" /></flowRegion><flowPara
579 id="flowPara2309"
580 style="font-size:28px;font-weight:bold">IPC</flowPara></flowRoot> </g>
581 </g>
582 </svg>