Merge branch 'master' into feature/update-azure-icons-v18

pull/980/head
Ebby Peter 2 months ago committed by GitHub
commit 1d351cf553
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -10,7 +10,7 @@ RUN apk update && apk add --no-cache \
RUN go install github.com/mingrammer/round@latest
# install fonts
RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \
RUN curl -O https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \
&& mkdir -p /usr/share/fonts/NotoSansCJKjp \
&& unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/NotoSansCJKjp/ \
&& rm NotoSansCJKjp-hinted.zip \

@ -25,7 +25,7 @@
"extensions": [
"ms-python.python",
"ms-python.debugpy",
"mhutchie.git-graph",
"mhutchie.git-graph",
"mutantdino.resourcemonitor",
"tehpeng.diagramspreviewer"
]
@ -35,4 +35,4 @@
"workspaceFolder": "/usr/src/diagrams"
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
}

@ -67,6 +67,21 @@ find . -type f -name "*.svg" -exec bash -c 'rm "$0"' {} \;
If you get any errors with autogen, it will probably be a '+' in filename
### Add new provider
To add a new provider to Diagrams, please follow the steps below in addition to the image intructions above:
- in `autogen.sh` add in the `providers` variable the new provider code
- in `config.py`:
- in the `providers` variable, add the new provider code
- in the `FILE_PREFIXES` variable, add a new entry with your new provider code. And eventually a file prefix
- Optionnaly, update the `UPPER_WORDS` variable to a new entry with your new provider code.
- in the `ALIASES` variable, add a new entry with your new provider code. See below on how to add new aliases.
- in `scripts/resource.py`:
- add a function `cleaner_XXX` (replace XXX by your provider name). For the implementation look at the existing functions
- in the `cleaners` variable, add an entry with your new provider code and the function defined above
- in `sidebars.json`, update the `Nodes` array to add the reference of the new provider
- in the `diagrams` folder, add a new file `__init__.py` for the new provider. For the content look at the existing providers
### Update Aliases
Some node classes have alias. For example, `aws.compute.ECS` class is an alias

@ -82,6 +82,8 @@ To contribute to diagram, check out [contribution guidelines](CONTRIBUTING.md).
[Airflow Diagrams](https://github.com/feluelle/airflow-diagrams) is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams.
[KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) is a tool to generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files, Helm charts, and actual cluster state. [KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) supports all Kubernetes built-in resources, any custom resources, and label-based resource clustering.
## Other languages
- If you are familiar with Go, you can use [go-diagrams](https://github.com/blushft/go-diagrams) as well.

@ -20,6 +20,7 @@ providers=(
"generic"
"openstack"
"outscale"
"gis"
)
if ! [ -x "$(command -v round)" ]; then

@ -29,6 +29,7 @@ PROVIDERS = (
"generic",
"openstack",
"outscale",
"gis"
)
#########################
@ -59,6 +60,7 @@ FILE_PREFIXES = {
"outscale": (),
"generic": (),
"openstack": (),
"gis": (),
}
#########################
@ -87,8 +89,9 @@ UPPER_WORDS = {
"generic": ("vpn", "ios", "xen", "sql", "lxc"),
"outscale": ("osc",),
"openstack": ("rpm", "loci", "nfv", "ec2api"),
"pve": ("pve"),
"ibm": ("ibm"),
"pve": ("pve",),
"ibm": ("ibm",),
"gis": ("gis","ban","ign","ogc","qgis","wfs","wms"),
}
TITLE_WORDS = {
@ -143,6 +146,7 @@ ALIASES = {
"Mssql": "MSSQL",
"Mysql": "MySQL",
"Postgresql": "PostgreSQL",
"Qdrant": "Qdrant",
},
"gitops": {
"Argocd": "ArgoCD",
@ -411,6 +415,7 @@ ALIASES = {
}
},
"digitalocean": {},
"gis": {},
"oci": {
"compute": {
"VM": "VirtualMachine",

@ -528,7 +528,7 @@ class Edge:
for o in other:
if isinstance(o, Edge):
o.forward = forward if forward else o.forward
o.reverse = forward if forward else o.reverse
o.reverse = reverse if reverse else o.reverse
self._attrs = o.attrs.copy()
result.append(o)
else:

@ -96,6 +96,10 @@ class ElasticContainerServiceService(_Compute):
_icon = "elastic-container-service-service.png"
class ElasticContainerServiceTask(_Compute):
_icon = "elastic-container-service-task.png"
class ElasticContainerService(_Compute):
_icon = "elastic-container-service.png"

@ -20,6 +20,10 @@ class Cloud9(_Devtools):
_icon = "cloud9.png"
class Cloudshell(_Devtools):
_icon = "cloudshell.png"
class Codeartifact(_Devtools):
_icon = "codeartifact.png"

@ -32,10 +32,30 @@ class EventbridgeDefaultEventBusResource(_Integration):
_icon = "eventbridge-default-event-bus-resource.png"
class EventbridgeEvent(_Integration):
_icon = "eventbridge-event.png"
class EventbridgePipes(_Integration):
_icon = "eventbridge-pipes.png"
class EventbridgeRule(_Integration):
_icon = "eventbridge-rule.png"
class EventbridgeSaasPartnerEventBusResource(_Integration):
_icon = "eventbridge-saas-partner-event-bus-resource.png"
class EventbridgeScheduler(_Integration):
_icon = "eventbridge-scheduler.png"
class EventbridgeSchema(_Integration):
_icon = "eventbridge-schema.png"
class Eventbridge(_Integration):
_icon = "eventbridge.png"

@ -236,6 +236,10 @@ class TrustedAdvisor(_Management):
_icon = "trusted-advisor.png"
class UserNotifications(_Management):
_icon = "user-notifications.png"
class WellArchitectedTool(_Management):
_icon = "well-architected-tool.png"

@ -16,6 +16,10 @@ class AugmentedAi(_ML):
_icon = "augmented-ai.png"
class Bedrock(_ML):
_icon = "bedrock.png"
class Comprehend(_ML):
_icon = "comprehend.png"
@ -72,6 +76,10 @@ class Polly(_ML):
_icon = "polly.png"
class Q(_ML):
_icon = "q.png"
class RekognitionImage(_ML):
_icon = "rekognition-image.png"

@ -12,8 +12,8 @@ class AzureOpenAI(_Ml):
_icon = "azure-open-ai.png"
class AzureSpeedToText(_Ml):
_icon = "azure-speed-to-text.png"
class AzureSpeechService(_Ml):
_icon = "azure-speech-service.png"
class BatchAI(_Ml):

@ -0,0 +1,38 @@
import argparse
import sys
def run() -> int:
"""
Run diagrams code files in a diagrams environment.
Args:
paths: A list of paths to Python files containing diagrams code.
Returns:
The exit code.
"""
parser = argparse.ArgumentParser(
description="Run diagrams code files in a diagrams environment.",
)
parser.add_argument(
"paths",
metavar="path",
type=str,
nargs="+",
help="a Python file containing diagrams code",
)
args = parser.parse_args()
for path in args.paths:
with open(path, encoding='utf-8') as f:
exec(f.read())
return 0
def main():
sys.exit(run())
if __name__ == "__main__":
main()

@ -0,0 +1,12 @@
"""
GIS provides a set of services for Geographic Information Systems provider.
"""
from diagrams import Node
class _GIS(Node):
_provider = "gis"
_icon_dir = "resources/gis"
fontcolor = "#2d3436"

@ -0,0 +1,35 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Cli(_GIS):
_type = "cli"
_icon_dir = "resources/gis/cli"
class Gdal(_Cli):
_icon = "gdal.png"
class Imposm(_Cli):
_icon = "imposm.png"
class Lastools(_Cli):
_icon = "lastools.png"
class Mapnik(_Cli):
_icon = "mapnik.png"
class Mdal(_Cli):
_icon = "mdal.png"
class Pdal(_Cli):
_icon = "pdal.png"
# Aliases

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Cplusplus(_GIS):
_type = "cplusplus"
_icon_dir = "resources/gis/cplusplus"
class Mapnik(_Cplusplus):
_icon = "mapnik.png"
# Aliases

@ -0,0 +1,31 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Data(_GIS):
_type = "data"
_icon_dir = "resources/gis/data"
class BAN(_Data):
_icon = "ban.png"
class Here(_Data):
_icon = "here.png"
class IGN(_Data):
_icon = "ign.png"
class Openstreetmap(_Data):
_icon = "openstreetmap.png"
class Overturemaps(_Data):
_icon = "overturemaps.png"
# Aliases

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Database(_GIS):
_type = "database"
_icon_dir = "resources/gis/database"
class Postgis(_Database):
_icon = "postgis.png"
# Aliases

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Desktop(_GIS):
_type = "desktop"
_icon_dir = "resources/gis/desktop"
class Maptunik(_Desktop):
_icon = "maptunik.png"
class QGIS(_Desktop):
_icon = "qgis.png"
# Aliases

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Format(_GIS):
_type = "format"
_icon_dir = "resources/gis/format"
class Geopackage(_Format):
_icon = "geopackage.png"
class Geoparquet(_Format):
_icon = "geoparquet.png"
# Aliases

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Geocoding(_GIS):
_type = "geocoding"
_icon_dir = "resources/gis/geocoding"
class Addok(_Geocoding):
_icon = "addok.png"
class Gisgraphy(_Geocoding):
_icon = "gisgraphy.png"
class Nominatim(_Geocoding):
_icon = "nominatim.png"
class Pelias(_Geocoding):
_icon = "pelias.png"
# Aliases

@ -0,0 +1,11 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Georchestra(_GIS):
_type = "georchestra"
_icon_dir = "resources/gis/georchestra"
# Aliases

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Java(_GIS):
_type = "java"
_icon_dir = "resources/gis/java"
class Geotools(_Java):
_icon = "geotools.png"
# Aliases

@ -0,0 +1,43 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Javascript(_GIS):
_type = "javascript"
_icon_dir = "resources/gis/javascript"
class Cesium(_Javascript):
_icon = "cesium.png"
class Geostyler(_Javascript):
_icon = "geostyler.png"
class Keplerjs(_Javascript):
_icon = "keplerjs.png"
class Leaflet(_Javascript):
_icon = "leaflet.png"
class Maplibre(_Javascript):
_icon = "maplibre.png"
class OlExt(_Javascript):
_icon = "ol-ext.png"
class Openlayers(_Javascript):
_icon = "openlayers.png"
class Turfjs(_Javascript):
_icon = "turfjs.png"
# Aliases

@ -0,0 +1,23 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Mobile(_GIS):
_type = "mobile"
_icon_dir = "resources/gis/mobile"
class Mergin(_Mobile):
_icon = "mergin.png"
class Qfield(_Mobile):
_icon = "qfield.png"
class Smash(_Mobile):
_icon = "smash.png"
# Aliases

@ -0,0 +1,23 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _OGC(_GIS):
_type = "ogc"
_icon_dir = "resources/gis/ogc"
class OGC(_OGC):
_icon = "ogc.png"
class WFS(_OGC):
_icon = "wfs.png"
class WMS(_OGC):
_icon = "wms.png"
# Aliases

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Organization(_GIS):
_type = "organization"
_icon_dir = "resources/gis/organization"
class Osgeo(_Organization):
_icon = "osgeo.png"
# Aliases

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Python(_GIS):
_type = "python"
_icon_dir = "resources/gis/python"
class Geopandas(_Python):
_icon = "geopandas.png"
class Pysal(_Python):
_icon = "pysal.png"
# Aliases

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Routing(_GIS):
_type = "routing"
_icon_dir = "resources/gis/routing"
class Graphhopper(_Routing):
_icon = "graphhopper.png"
class Osrm(_Routing):
_icon = "osrm.png"
class Pgrouting(_Routing):
_icon = "pgrouting.png"
class Valhalla(_Routing):
_icon = "valhalla.png"
# Aliases

@ -0,0 +1,99 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Server(_GIS):
_type = "server"
_icon_dir = "resources/gis/server"
class Actinia(_Server):
_icon = "actinia.png"
class Baremaps(_Server):
_icon = "baremaps.png"
class Deegree(_Server):
_icon = "deegree.png"
class G3WSuite(_Server):
_icon = "g3w-suite.png"
class Geohealthcheck(_Server):
_icon = "geohealthcheck.png"
class Geomapfish(_Server):
_icon = "geomapfish.png"
class Geomesa(_Server):
_icon = "geomesa.png"
class Geonetwork(_Server):
_icon = "geonetwork.png"
class Geonode(_Server):
_icon = "geonode.png"
class Georchestra(_Server):
_icon = "georchestra.png"
class Geoserver(_Server):
_icon = "geoserver.png"
class Geowebcache(_Server):
_icon = "geowebcache.png"
class Kepler(_Server):
_icon = "kepler.png"
class Mapproxy(_Server):
_icon = "mapproxy.png"
class Mapserver(_Server):
_icon = "mapserver.png"
class Mapstore(_Server):
_icon = "mapstore.png"
class Mviewer(_Server):
_icon = "mviewer.png"
class Pg_Tileserv(_Server):
_icon = "pg_tileserv.png"
class Pycsw(_Server):
_icon = "pycsw.png"
class Pygeoapi(_Server):
_icon = "pygeoapi.png"
class QGISServer(_Server):
_icon = "qgis-server.png"
class Zooproject(_Server):
_icon = "zooproject.png"
# Aliases

@ -0,0 +1,11 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _GIS
class _Toolkit(_GIS):
_type = "toolkit"
_icon_dir = "resources/gis/toolkit"
# Aliases

@ -36,6 +36,10 @@ class Druid(_Database):
_icon = "druid.png"
class Duckdb(_Database):
_icon = "duckdb.png"
class Hbase(_Database):
_icon = "hbase.png"
@ -76,6 +80,10 @@ class Postgresql(_Database):
_icon = "postgresql.png"
class Qdrant(_Database):
_icon = "qdrant.png"
class Scylla(_Database):
_icon = "scylla.png"
@ -93,3 +101,4 @@ MongoDB = Mongodb
MSSQL = Mssql
MySQL = Mysql
PostgreSQL = Postgresql
Qdrant = Qdrant

@ -20,6 +20,10 @@ class Awx(_Iac):
_icon = "awx.png"
class Pulumi(_Iac):
_icon = "pulumi.png"
class Puppet(_Iac):
_icon = "puppet.png"

@ -24,6 +24,18 @@ class Caddy(_Network):
_icon = "caddy.png"
class CiscoRouter(_Network):
_icon = "cisco-router.png"
class CiscoSwitchL2(_Network):
_icon = "cisco-switch-l2.png"
class CiscoSwitchL3(_Network):
_icon = "cisco-switch-l3.png"
class Consul(_Network):
_icon = "consul.png"

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Saas
class _Automation(_Saas):
_type = "automation"
_icon_dir = "resources/saas/automation"
class N8N(_Automation):
_icon = "n8n.png"
# Aliases

@ -20,4 +20,8 @@ class Fastly(_Cdn):
_icon = "fastly.png"
class Imperva(_Cdn):
_icon = "imperva.png"
# Aliases

@ -1,5 +1,5 @@
# use latest python alpine image.
FROM python:3.13.1-alpine3.20
FROM python:3.13.3-alpine3.20
# install system dependencies.
RUN apk update && apk add --no-cache \

@ -211,9 +211,9 @@ with Diagram("Advanced Web Service with On-Premises", show=False):
ingress >> grpcsvc >> aggregator
```
![advanced web service with on-premise diagram](/img/advanced_web_service_with_on-premise.png)
![advanced web service with on-premises diagram](/img/advanced_web_service_with_on-premises.png)
## Advanced Web Service with On-Premise (with colors and labels)
## Advanced Web Service with On-Premises (with colors and labels)
```python
from diagrams import Cluster, Diagram, Edge
@ -226,7 +226,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False):
ingress = Nginx("ingress")
metrics = Prometheus("metric")
@ -254,7 +254,7 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
ingress >> Edge(color="darkgreen") << grpcsvc >> Edge(color="darkorange") >> aggregator
```
![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png)
![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png)
## RabbitMQ Consumers with Custom Nodes

@ -7,7 +7,7 @@ title: Installation
**diagrams** uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use it.
> macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`.
> macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz` or use [Winget](https://learn.microsoft.com/windows/package-manager/) via `winget install Graphviz.Graphviz -i`.
After installing Graphviz (or if you already have it), install **diagrams**:
@ -20,6 +20,9 @@ $ pipenv install diagrams
# using poetry
$ poetry add diagrams
# using uv
$ uv tool install diagrams
```
## Quick Start
@ -47,6 +50,14 @@ This generates the diagram below:
It will be saved as `web_service.png` in your working directory.
### CLI
With the `diagrams` CLI you can process one or more diagram files at once.
```shell
$ diagrams diagram1.py diagram2.py
```
## Next
See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details.

@ -65,5 +65,131 @@ with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False)
>> Edge(color="darkorange") \
>> aggregator
```
![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png)
![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png)
## Less Edges
As you can see on the previous graph the edges can quickly become noisy. Below are two examples to solve this problem.
One approach is to get creative with the Node class to create blank placeholders, together with named nodes within Clusters, and then only pointing to single named elements within those Clusters.
Compare the output below to the example output above .
```python
from diagrams import Cluster, Diagram, Node
from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
with Diagram("\nAdvanced Web Service with On-Premise Less edges", show=False) as diag:
ingress = Nginx("ingress")
with Cluster("Service Cluster"):
serv1 = Server("grpc1")
serv2 = Server("grpc2")
serv3 = Server("grpc3")
with Cluster(""):
blankHA = Node("", shape="plaintext", width="0", height="0")
metrics = Prometheus("metric")
metrics << Grafana("monitoring")
aggregator = Fluentd("logging")
blankHA >> aggregator >> Kafka("stream") >> Spark("analytics")
with Cluster("Database HA"):
db = PostgreSQL("users")
db - PostgreSQL("replica") << metrics
blankHA >> db
with Cluster("Sessions HA"):
sess = Redis("session")
sess - Redis("replica") << metrics
blankHA >> sess
ingress >> serv2 >> blankHA
diag
```
![advanced web service with on-premise less edges](/img/advanced_web_service_with_on-premise_less_edges.png)
## Merged Edges
Yet another option is to set the graph_attr dictionary key "concentrate" to "true".
Note the following restrictions:
1. the Edge must end at the same headport
2. This only works when the "splines" graph_attr key is set to the value "spline". It has no effect when the value was set to "ortho", which is the default for the diagrams library.
3. this will only work with the "dot" layout engine, which is the default for the diagrams library.
For more information see:
https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate
https://www.graphviz.org/pdf/dotguide.pdf Section 3.3 Concentrators
```python
from diagrams import Cluster, Diagram, Edge, Node
from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
graph_attr = {
"concentrate": "true",
"splines": "spline",
}
edge_attr = {
"minlen":"3",
}
with Diagram("\n\nAdvanced Web Service with On-Premise Merged edges", show=False,
graph_attr=graph_attr,
edge_attr=edge_attr) as diag:
ingress = Nginx("ingress")
metrics = Prometheus("metric")
metrics << Edge(minlen="0") << Grafana("monitoring")
with Cluster("Service Cluster"):
grpsrv = [
Server("grpc1"),
Server("grpc2"),
Server("grpc3")]
blank = Node("", shape="plaintext", height="0.0", width="0.0")
with Cluster("Sessions HA"):
sess = Redis("session")
sess - Redis("replica") << metrics
with Cluster("Database HA"):
db = PostgreSQL("users")
db - PostgreSQL("replica") << metrics
aggregator = Fluentd("logging")
aggregator >> Kafka("stream") >> Spark("analytics")
ingress >> [grpsrv[0], grpsrv[1], grpsrv[2],]
[grpsrv[0], grpsrv[1], grpsrv[2],] - Edge(headport="w", minlen="1") - blank
blank >> Edge(headport="w", minlen="2") >> [sess, db, aggregator]
diag
```
![advanced web service with on-premise merged edges](/img/advanced_web_service_with_on-premise_merged_edges.png)

@ -203,6 +203,9 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/compute/elastic-container-service-service.png" alt="ElasticContainerServiceService" style="float: left; padding-right: 5px;" >
**diagrams.aws.compute.ElasticContainerServiceService**
<img width="30" src="/img/resources/aws/compute/elastic-container-service-task.png" alt="ElasticContainerServiceTask" style="float: left; padding-right: 5px;" >
**diagrams.aws.compute.ElasticContainerServiceTask**
<img width="30" src="/img/resources/aws/compute/elastic-container-service.png" alt="ElasticContainerService" style="float: left; padding-right: 5px;" >
**diagrams.aws.compute.ElasticContainerService**, **ECS** (alias)
@ -395,6 +398,9 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Cloud9**
<img width="30" src="/img/resources/aws/devtools/cloudshell.png" alt="Cloudshell" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Cloudshell**
<img width="30" src="/img/resources/aws/devtools/codeartifact.png" alt="Codeartifact" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Codeartifact**
@ -584,9 +590,24 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/integration/eventbridge-default-event-bus-resource.png" alt="EventbridgeDefaultEventBusResource" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeDefaultEventBusResource**
<img width="30" src="/img/resources/aws/integration/eventbridge-event.png" alt="EventbridgeEvent" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeEvent**
<img width="30" src="/img/resources/aws/integration/eventbridge-pipes.png" alt="EventbridgePipes" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgePipes**
<img width="30" src="/img/resources/aws/integration/eventbridge-rule.png" alt="EventbridgeRule" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeRule**
<img width="30" src="/img/resources/aws/integration/eventbridge-saas-partner-event-bus-resource.png" alt="EventbridgeSaasPartnerEventBusResource" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeSaasPartnerEventBusResource**
<img width="30" src="/img/resources/aws/integration/eventbridge-scheduler.png" alt="EventbridgeScheduler" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeScheduler**
<img width="30" src="/img/resources/aws/integration/eventbridge-schema.png" alt="EventbridgeSchema" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.EventbridgeSchema**
<img width="30" src="/img/resources/aws/integration/eventbridge.png" alt="Eventbridge" style="float: left; padding-right: 5px;" >
**diagrams.aws.integration.Eventbridge**
@ -980,6 +1001,9 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/management/trusted-advisor.png" alt="TrustedAdvisor" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.TrustedAdvisor**
<img width="30" src="/img/resources/aws/management/user-notifications.png" alt="UserNotifications" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.UserNotifications**
<img width="30" src="/img/resources/aws/management/well-architected-tool.png" alt="WellArchitectedTool" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.WellArchitectedTool**
@ -1073,6 +1097,9 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/ml/augmented-ai.png" alt="AugmentedAi" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.AugmentedAi**
<img width="30" src="/img/resources/aws/ml/bedrock.png" alt="Bedrock" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.Bedrock**
<img width="30" src="/img/resources/aws/ml/comprehend.png" alt="Comprehend" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.Comprehend**
@ -1115,6 +1142,9 @@ Node classes list of the aws provider.
<img width="30" src="/img/resources/aws/ml/polly.png" alt="Polly" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.Polly**
<img width="30" src="/img/resources/aws/ml/q.png" alt="Q" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.Q**
<img width="30" src="/img/resources/aws/ml/rekognition-image.png" alt="RekognitionImage" style="float: left; padding-right: 5px;" >
**diagrams.aws.ml.RekognitionImage**

@ -1571,8 +1571,8 @@ Node classes list of azure provider.
<img width="30" src="/img/resources/azure/ml/azure-open-ai.png" alt="AzureOpenAI" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.AzureOpenAI**
<img width="30" src="/img/resources/azure/ml/azure-speed-to-text.png" alt="AzureSpeedToText" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.AzureSpeedToText**
<img width="30" src="/img/resources/azure/ml/azure-speech-service.png" alt="AzureSpeechService" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.AzureSpeechService**
<img width="30" src="/img/resources/azure/ml/batch-ai.png" alt="BatchAI" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.BatchAI**

@ -0,0 +1,243 @@
---
id: gis
title: GIS
---
Node classes list of the gis provider.
## gis.cli
<img width="30" src="/img/resources/gis/cli/gdal.png" alt="Gdal" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Gdal**
<img width="30" src="/img/resources/gis/cli/imposm.png" alt="Imposm" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Imposm**
<img width="30" src="/img/resources/gis/cli/lastools.png" alt="Lastools" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Lastools**
<img width="30" src="/img/resources/gis/cli/mapnik.png" alt="Mapnik" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Mapnik**
<img width="30" src="/img/resources/gis/cli/mdal.png" alt="Mdal" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Mdal**
<img width="30" src="/img/resources/gis/cli/pdal.png" alt="Pdal" style="float: left; padding-right: 5px;" >
**diagrams.gis.cli.Pdal**
## gis.data
<img width="30" src="/img/resources/gis/data/ban.png" alt="BAN" style="float: left; padding-right: 5px;" >
**diagrams.gis.data.BAN**
<img width="30" src="/img/resources/gis/data/here.png" alt="Here" style="float: left; padding-right: 5px;" >
**diagrams.gis.data.Here**
<img width="30" src="/img/resources/gis/data/ign.png" alt="IGN" style="float: left; padding-right: 5px;" >
**diagrams.gis.data.IGN**
<img width="30" src="/img/resources/gis/data/openstreetmap.png" alt="Openstreetmap" style="float: left; padding-right: 5px;" >
**diagrams.gis.data.Openstreetmap**
<img width="30" src="/img/resources/gis/data/overturemaps.png" alt="Overturemaps" style="float: left; padding-right: 5px;" >
**diagrams.gis.data.Overturemaps**
## gis.database
<img width="30" src="/img/resources/gis/database/postgis.png" alt="Postgis" style="float: left; padding-right: 5px;" >
**diagrams.gis.database.Postgis**
## gis.desktop
<img width="30" src="/img/resources/gis/desktop/maptunik.png" alt="Maptunik" style="float: left; padding-right: 5px;" >
**diagrams.gis.desktop.Maptunik**
<img width="30" src="/img/resources/gis/desktop/qgis.png" alt="QGIS" style="float: left; padding-right: 5px;" >
**diagrams.gis.desktop.QGIS**
## gis.format
<img width="30" src="/img/resources/gis/format/geopackage.png" alt="Geopackage" style="float: left; padding-right: 5px;" >
**diagrams.gis.format.Geopackage**
<img width="30" src="/img/resources/gis/format/geoparquet.png" alt="Geoparquet" style="float: left; padding-right: 5px;" >
**diagrams.gis.format.Geoparquet**
## gis.geocoding
<img width="30" src="/img/resources/gis/geocoding/addok.png" alt="Addok" style="float: left; padding-right: 5px;" >
**diagrams.gis.geocoding.Addok**
<img width="30" src="/img/resources/gis/geocoding/gisgraphy.png" alt="Gisgraphy" style="float: left; padding-right: 5px;" >
**diagrams.gis.geocoding.Gisgraphy**
<img width="30" src="/img/resources/gis/geocoding/nominatim.png" alt="Nominatim" style="float: left; padding-right: 5px;" >
**diagrams.gis.geocoding.Nominatim**
<img width="30" src="/img/resources/gis/geocoding/pelias.png" alt="Pelias" style="float: left; padding-right: 5px;" >
**diagrams.gis.geocoding.Pelias**
## gis.georchestra
## gis.java
<img width="30" src="/img/resources/gis/java/geotools.png" alt="Geotools" style="float: left; padding-right: 5px;" >
**diagrams.gis.java.Geotools**
## gis.javascript
<img width="30" src="/img/resources/gis/javascript/cesium.png" alt="Cesium" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Cesium**
<img width="30" src="/img/resources/gis/javascript/geostyler.png" alt="Geostyler" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Geostyler**
<img width="30" src="/img/resources/gis/javascript/keplerjs.png" alt="Keplerjs" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Keplerjs**
<img width="30" src="/img/resources/gis/javascript/leaflet.png" alt="Leaflet" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Leaflet**
<img width="30" src="/img/resources/gis/javascript/maplibre.png" alt="Maplibre" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Maplibre**
<img width="30" src="/img/resources/gis/javascript/ol-ext.png" alt="OlExt" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.OlExt**
<img width="30" src="/img/resources/gis/javascript/openlayers.png" alt="Openlayers" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Openlayers**
<img width="30" src="/img/resources/gis/javascript/turfjs.png" alt="Turfjs" style="float: left; padding-right: 5px;" >
**diagrams.gis.javascript.Turfjs**
## gis.mobile
<img width="30" src="/img/resources/gis/mobile/mergin.png" alt="Mergin" style="float: left; padding-right: 5px;" >
**diagrams.gis.mobile.Mergin**
<img width="30" src="/img/resources/gis/mobile/qfield.png" alt="Qfield" style="float: left; padding-right: 5px;" >
**diagrams.gis.mobile.Qfield**
<img width="30" src="/img/resources/gis/mobile/smash.png" alt="Smash" style="float: left; padding-right: 5px;" >
**diagrams.gis.mobile.Smash**
## gis.ogc
<img width="30" src="/img/resources/gis/ogc/ogc.png" alt="OGC" style="float: left; padding-right: 5px;" >
**diagrams.gis.ogc.OGC**
<img width="30" src="/img/resources/gis/ogc/wfs.png" alt="WFS" style="float: left; padding-right: 5px;" >
**diagrams.gis.ogc.WFS**
<img width="30" src="/img/resources/gis/ogc/wms.png" alt="WMS" style="float: left; padding-right: 5px;" >
**diagrams.gis.ogc.WMS**
## gis.organization
<img width="30" src="/img/resources/gis/organization/osgeo.png" alt="Osgeo" style="float: left; padding-right: 5px;" >
**diagrams.gis.organization.Osgeo**
## gis.python
<img width="30" src="/img/resources/gis/python/geopandas.png" alt="Geopandas" style="float: left; padding-right: 5px;" >
**diagrams.gis.python.Geopandas**
<img width="30" src="/img/resources/gis/python/pysal.png" alt="Pysal" style="float: left; padding-right: 5px;" >
**diagrams.gis.python.Pysal**
## gis.routing
<img width="30" src="/img/resources/gis/routing/graphhopper.png" alt="Graphhopper" style="float: left; padding-right: 5px;" >
**diagrams.gis.routing.Graphhopper**
<img width="30" src="/img/resources/gis/routing/osrm.png" alt="Osrm" style="float: left; padding-right: 5px;" >
**diagrams.gis.routing.Osrm**
<img width="30" src="/img/resources/gis/routing/pgrouting.png" alt="Pgrouting" style="float: left; padding-right: 5px;" >
**diagrams.gis.routing.Pgrouting**
<img width="30" src="/img/resources/gis/routing/valhalla.png" alt="Valhalla" style="float: left; padding-right: 5px;" >
**diagrams.gis.routing.Valhalla**
## gis.server
<img width="30" src="/img/resources/gis/server/actinia.png" alt="Actinia" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Actinia**
<img width="30" src="/img/resources/gis/server/baremaps.png" alt="Baremaps" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Baremaps**
<img width="30" src="/img/resources/gis/server/deegree.png" alt="Deegree" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Deegree**
<img width="30" src="/img/resources/gis/server/g3w-suite.png" alt="G3WSuite" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.G3WSuite**
<img width="30" src="/img/resources/gis/server/geohealthcheck.png" alt="Geohealthcheck" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geohealthcheck**
<img width="30" src="/img/resources/gis/server/geomapfish.png" alt="Geomapfish" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geomapfish**
<img width="30" src="/img/resources/gis/server/geomesa.png" alt="Geomesa" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geomesa**
<img width="30" src="/img/resources/gis/server/geonetwork.png" alt="Geonetwork" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geonetwork**
<img width="30" src="/img/resources/gis/server/geonode.png" alt="Geonode" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geonode**
<img width="30" src="/img/resources/gis/server/georchestra.png" alt="Georchestra" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Georchestra**
<img width="30" src="/img/resources/gis/server/geoserver.png" alt="Geoserver" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geoserver**
<img width="30" src="/img/resources/gis/server/geowebcache.png" alt="Geowebcache" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Geowebcache**
<img width="30" src="/img/resources/gis/server/kepler.png" alt="Kepler" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Kepler**
<img width="30" src="/img/resources/gis/server/mapproxy.png" alt="Mapproxy" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Mapproxy**
<img width="30" src="/img/resources/gis/server/mapserver.png" alt="Mapserver" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Mapserver**
<img width="30" src="/img/resources/gis/server/mapstore.png" alt="Mapstore" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Mapstore**
<img width="30" src="/img/resources/gis/server/mviewer.png" alt="Mviewer" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Mviewer**
<img width="30" src="/img/resources/gis/server/pg_tileserv.png" alt="Pg_Tileserv" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Pg_Tileserv**
<img width="30" src="/img/resources/gis/server/pycsw.png" alt="Pycsw" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Pycsw**
<img width="30" src="/img/resources/gis/server/pygeoapi.png" alt="Pygeoapi" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Pygeoapi**
<img width="30" src="/img/resources/gis/server/qgis-server.png" alt="QGISServer" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.QGISServer**
<img width="30" src="/img/resources/gis/server/zooproject.png" alt="Zooproject" style="float: left; padding-right: 5px;" >
**diagrams.gis.server.Zooproject**

@ -203,6 +203,9 @@ Node classes list of the onprem provider.
<img width="30" src="/img/resources/onprem/database/druid.png" alt="Druid" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Druid**
<img width="30" src="/img/resources/onprem/database/duckdb.png" alt="Duckdb" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Duckdb**
<img width="30" src="/img/resources/onprem/database/hbase.png" alt="Hbase" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Hbase**, **HBase** (alias)
@ -233,6 +236,9 @@ Node classes list of the onprem provider.
<img width="30" src="/img/resources/onprem/database/postgresql.png" alt="Postgresql" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Postgresql**, **PostgreSQL** (alias)
<img width="30" src="/img/resources/onprem/database/qdrant.png" alt="Qdrant" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Qdrant**, **Qdrant** (alias)
<img width="30" src="/img/resources/onprem/database/scylla.png" alt="Scylla" style="float: left; padding-right: 5px;" >
**diagrams.onprem.database.Scylla**
@ -281,6 +287,9 @@ Node classes list of the onprem provider.
<img width="30" src="/img/resources/onprem/iac/awx.png" alt="Awx" style="float: left; padding-right: 5px;" >
**diagrams.onprem.iac.Awx**
<img width="30" src="/img/resources/onprem/iac/pulumi.png" alt="Pulumi" style="float: left; padding-right: 5px;" >
**diagrams.onprem.iac.Pulumi**
<img width="30" src="/img/resources/onprem/iac/puppet.png" alt="Puppet" style="float: left; padding-right: 5px;" >
**diagrams.onprem.iac.Puppet**
@ -401,6 +410,15 @@ Node classes list of the onprem provider.
<img width="30" src="/img/resources/onprem/network/caddy.png" alt="Caddy" style="float: left; padding-right: 5px;" >
**diagrams.onprem.network.Caddy**
<img width="30" src="/img/resources/onprem/network/cisco-router.png" alt="CiscoRouter" style="float: left; padding-right: 5px;" >
**diagrams.onprem.network.CiscoRouter**
<img width="30" src="/img/resources/onprem/network/cisco-switch-l2.png" alt="CiscoSwitchL2" style="float: left; padding-right: 5px;" >
**diagrams.onprem.network.CiscoSwitchL2**
<img width="30" src="/img/resources/onprem/network/cisco-switch-l3.png" alt="CiscoSwitchL3" style="float: left; padding-right: 5px;" >
**diagrams.onprem.network.CiscoSwitchL3**
<img width="30" src="/img/resources/onprem/network/consul.png" alt="Consul" style="float: left; padding-right: 5px;" >
**diagrams.onprem.network.Consul**

@ -35,6 +35,12 @@ Node classes list of the saas provider.
<img width="30" src="/img/resources/saas/analytics/stitch.png" alt="Stitch" style="float: left; padding-right: 5px;" >
**diagrams.saas.analytics.Stitch**
## saas.automation
<img width="30" src="/img/resources/saas/automation/n8n.png" alt="N8N" style="float: left; padding-right: 5px;" >
**diagrams.saas.automation.N8N**
## saas.cdn
@ -47,6 +53,9 @@ Node classes list of the saas provider.
<img width="30" src="/img/resources/saas/cdn/fastly.png" alt="Fastly" style="float: left; padding-right: 5px;" >
**diagrams.saas.cdn.Fastly**
<img width="30" src="/img/resources/saas/cdn/imperva.png" alt="Imperva" style="float: left; padding-right: 5px;" >
**diagrams.saas.cdn.Imperva**
## saas.chat

82
poetry.lock generated

@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
[[package]]
name = "astroid"
@ -6,6 +6,7 @@ version = "3.3.8"
description = "An abstract syntax tree for Python with inference support."
optional = false
python-versions = ">=3.9.0"
groups = ["dev"]
files = [
{file = "astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c"},
{file = "astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b"},
@ -20,6 +21,7 @@ version = "24.10.0"
description = "The uncompromising code formatter."
optional = false
python-versions = ">=3.9"
groups = ["dev"]
files = [
{file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"},
{file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"},
@ -66,6 +68,7 @@ version = "3.4.0"
description = "Validate configuration and produce human readable error messages."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
{file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
@ -77,6 +80,7 @@ version = "8.1.7"
description = "Composable command line interface toolkit"
optional = false
python-versions = ">=3.7"
groups = ["dev"]
files = [
{file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
{file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
@ -91,6 +95,8 @@ version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
groups = ["dev"]
markers = "sys_platform == \"win32\" or platform_system == \"Windows\""
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
@ -102,6 +108,7 @@ version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
{file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
@ -117,6 +124,7 @@ version = "0.3.9"
description = "Distribution utilities"
optional = false
python-versions = "*"
groups = ["dev"]
files = [
{file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"},
{file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"},
@ -128,6 +136,8 @@ version = "1.2.2"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
groups = ["dev"]
markers = "python_version < \"3.11\""
files = [
{file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
{file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
@ -142,6 +152,7 @@ version = "3.16.1"
description = "A platform independent file lock."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"},
{file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"},
@ -150,7 +161,7 @@ files = [
[package.extras]
docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"]
testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"]
typing = ["typing-extensions (>=4.12.2)"]
typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""]
[[package]]
name = "graphviz"
@ -158,6 +169,7 @@ version = "0.20.3"
description = "Simple Python interface for Graphviz"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
{file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"},
{file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"},
@ -174,6 +186,7 @@ version = "2.6.2"
description = "File identification library for Python"
optional = false
python-versions = ">=3.9"
groups = ["dev"]
files = [
{file = "identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3"},
{file = "identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd"},
@ -188,6 +201,7 @@ version = "2.0.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.7"
groups = ["dev"]
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
@ -199,6 +213,7 @@ version = "5.13.2"
description = "A Python utility / library to sort Python imports."
optional = false
python-versions = ">=3.8.0"
groups = ["dev"]
files = [
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
@ -213,6 +228,7 @@ version = "3.1.4"
description = "A very fast and expressive template engine."
optional = false
python-versions = ">=3.7"
groups = ["main"]
files = [
{file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
{file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
@ -230,6 +246,7 @@ version = "3.0.2"
description = "Safely add untrusted strings to HTML/XML markup."
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"},
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"},
@ -300,6 +317,7 @@ version = "0.7.0"
description = "McCabe checker, plugin for flake8"
optional = false
python-versions = ">=3.6"
groups = ["dev"]
files = [
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
@ -311,6 +329,7 @@ version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
optional = false
python-versions = ">=3.5"
groups = ["dev"]
files = [
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
@ -322,6 +341,7 @@ version = "1.9.1"
description = "Node.js virtual environment builder"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
groups = ["dev"]
files = [
{file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
{file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
@ -333,6 +353,7 @@ version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
@ -344,6 +365,7 @@ version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
@ -355,6 +377,7 @@ version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
{file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
@ -371,6 +394,7 @@ version = "1.5.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
{file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
@ -386,6 +410,7 @@ version = "4.0.1"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
optional = false
python-versions = ">=3.9"
groups = ["dev"]
files = [
{file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"},
{file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"},
@ -398,12 +423,28 @@ nodeenv = ">=0.11.1"
pyyaml = ">=5.1"
virtualenv = ">=20.10.0"
[[package]]
name = "pygments"
version = "2.19.1"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
{file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
]
[package.extras]
windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
name = "pylint"
version = "3.3.3"
description = "python code static checker"
optional = false
python-versions = ">=3.9.0"
groups = ["dev"]
files = [
{file = "pylint-3.3.3-py3-none-any.whl", hash = "sha256:26e271a2bc8bce0fc23833805a9076dd9b4d5194e2a02164942cb3cdc37b4183"},
{file = "pylint-3.3.3.tar.gz", hash = "sha256:07c607523b17e6d16e2ae0d7ef59602e332caa762af64203c24b41c27139f36a"},
@ -415,7 +456,7 @@ colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = [
{version = ">=0.2", markers = "python_version < \"3.11\""},
{version = ">=0.3.7", markers = "python_version >= \"3.12\""},
{version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""},
{version = ">=0.3.6", markers = "python_version == \"3.11\""},
]
isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
@ -430,25 +471,27 @@ testutils = ["gitpython (>3)"]
[[package]]
name = "pytest"
version = "8.3.4"
version = "8.4.0"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.8"
python-versions = ">=3.9"
groups = ["dev"]
files = [
{file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"},
{file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"},
{file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"},
{file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"},
]
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""}
iniconfig = ">=1"
packaging = ">=20"
pluggy = ">=1.5,<2"
pygments = ">=2.7.2"
tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras]
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytoolconfig"
@ -456,6 +499,7 @@ version = "1.3.1"
description = "Python tool configuration"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "pytoolconfig-1.3.1-py3-none-any.whl", hash = "sha256:5d8cea8ae1996938ec3eaf44567bbc5ef1bc900742190c439a44a704d6e1b62b"},
{file = "pytoolconfig-1.3.1.tar.gz", hash = "sha256:51e6bd1a6f108238ae6aab6a65e5eed5e75d456be1c2bf29b04e5c1e7d7adbae"},
@ -478,6 +522,7 @@ version = "6.0.2"
description = "YAML parser and emitter for Python"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
{file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
@ -540,6 +585,7 @@ version = "1.13.0"
description = "a python refactoring library..."
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "rope-1.13.0-py3-none-any.whl", hash = "sha256:b435a0c0971244fdcd8741676a9fae697ae614c20cc36003678a7782f25c0d6c"},
{file = "rope-1.13.0.tar.gz", hash = "sha256:51437d2decc8806cd5e9dd1fd9c1306a6d9075ecaf78d191af85fc1dfface880"},
@ -559,6 +605,8 @@ version = "2.1.0"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
markers = "python_version < \"3.11\""
files = [
{file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"},
{file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"},
@ -570,6 +618,7 @@ version = "0.13.2"
description = "Style preserving TOML library"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"},
{file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"},
@ -581,6 +630,8 @@ version = "4.12.2"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
markers = "python_version < \"3.11\""
files = [
{file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
{file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
@ -592,6 +643,7 @@ version = "20.27.1"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"},
{file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"},
@ -604,9 +656,9 @@ platformdirs = ">=3.9.1,<5"
[package.extras]
docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""]
[metadata]
lock-version = "2.0"
lock-version = "2.1"
python-versions = "^3.9"
content-hash = "64d8272592088d0e7a3aee3d7318d26acd2de67d7875b5bd00f10a593aec84dc"
content-hash = "f774f01a9f7a5b2068566d1adf607e388e055eeb6c59245e4ac820660337a9dc"

@ -1,6 +1,6 @@
[tool.poetry]
name = "diagrams"
version = "0.24.1"
version = "0.24.4"
description = "Diagram as Code"
license = "MIT"
authors = ["mingrammer <mingrammer@gmail.com>"]
@ -17,14 +17,14 @@ python = "^3.9"
graphviz = ">=0.13.2,<0.21.0"
jinja2 = ">=2.10,<4.0"
typed-ast = {version="^1.5.5", markers="python_version<'3.8'"}
pre-commit = "^4.0.1"
[tool.poetry.dev-dependencies]
pytest = "^8.3"
pytest = "^8.4"
pylint = "^3.3"
rope = "^1.13"
isort = "^5.13"
black = "^24.4"
pre-commit = "^4.0.1"
[tool.black]
line-length=120

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="63.944012"
height="63.944012"
viewBox="0 0 16.91852 16.91852"
version="1.1"
id="svg1161"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1163"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
units="px"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.8934905"
inkscape:cx="-47.693263"
inkscape:cy="-98.669757"
inkscape:window-width="2400"
inkscape:window-height="1271"
inkscape:window-x="2391"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1158">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5-2"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8-2">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2-2"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
</defs>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.9825511,-4.9825504)">
<g
id="g5250"
transform="translate(-0.20368658,-0.10736832)">
<rect
style="fill:#2dd9cb;fill-opacity:1;stroke:none;stroke-width:0.168649;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect371620"
width="4.23177"
height="14.389493"
x="5.1819592"
y="7.5520296" />
<rect
style="fill:#2a2661;fill-opacity:1;stroke:none;stroke-width:0.144688;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect371620-1"
width="4.23177"
height="10.591175"
x="9.4137173"
y="11.350343" />
<rect
style="fill:#2dd9cb;fill-opacity:1;stroke:none;stroke-width:0.097886;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect371620-2"
width="4.23177"
height="4.847527"
x="13.645481"
y="17.093992" />
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.182146;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect371620-9"
width="4.23177"
height="16.784679"
x="17.877266"
y="5.1568346" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

@ -0,0 +1,335 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="63.944012"
height="63.944012"
viewBox="0 0 16.91852 16.91852"
version="1.1"
id="svg1161"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1163"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
units="px"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.8934905"
inkscape:cx="54.259726"
inkscape:cy="-71.021489"
inkscape:window-width="2400"
inkscape:window-height="1271"
inkscape:window-x="2391"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1158">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
</defs>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.9825511,-4.9825504)">
<g
id="g4398"
transform="translate(-14.400962,-1.7821191)">
<rect
style="fill:#2a2661;fill-opacity:1;stroke:none;stroke-width:0.450299;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect291252-4-7"
width="16.91852"
height="16.91852"
x="19.383512"
y="6.7646694" />
<rect
style="fill:#2dd9cb;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-3"
width="3.1572123"
height="3.1572123"
x="24.706367"
y="8.9828644" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-7"
width="3.1572123"
height="3.1572123"
x="31.020798"
y="8.9828644" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-4"
width="3.1572123"
height="3.1572123"
x="21.549156"
y="12.140085" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-37-2"
width="3.1572123"
height="3.1572123"
x="27.863579"
y="12.140085" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-3-6"
width="3.1572123"
height="3.1572123"
x="24.706367"
y="15.2973" />
<rect
style="fill:#2dd9cb;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-7-7"
width="3.1572123"
height="3.1572123"
x="31.020798"
y="15.2973" />
<rect
style="fill:#2dd9cb;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-4-6"
width="3.1572123"
height="3.1572123"
x="21.549156"
y="18.454504" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.13188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect305737-37-2-9"
width="3.1572123"
height="3.1572123"
x="27.863579"
y="18.454504" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,465 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="63.944012"
height="63.944012"
viewBox="0 0 16.91852 16.91852"
version="1.1"
id="svg1161"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="geoserver_icon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1163"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
units="px"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.8934905"
inkscape:cx="-52.531709"
inkscape:cy="-15.724952"
inkscape:window-width="2400"
inkscape:window-height="1271"
inkscape:window-x="2391"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1158">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6-6"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5-2"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8-2">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2-2"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-9-3-0-8-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-8-8-7-8-4"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-3-6-6-0-1">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-6-3-6-6-4"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-5-8-4-9-0">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-3-2-8-7-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-1-7-4-1-7">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-3-3-5-2-7"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-4-2-8-2-5">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-8-0-2-2-9"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353862-4">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353864-0"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353858-9">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353860-8"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353854-7">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353856-1"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath353850-8">
<rect
style="fill:none;fill-opacity:1;stroke:#e2c015;stroke-width:0.49;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:markers stroke fill"
id="rect353852-0"
width="37.187374"
height="37.187374"
x="180.56668"
y="183.06766" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath371594-3">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.989769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect371596-5"
width="37.187374"
height="37.187374"
x="217.75404"
y="145.88028" />
</clipPath>
</defs>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.9825511,-4.9825504)">
<rect
style="fill:#85127e;fill-opacity:1;stroke:none;stroke-width:0.456273;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect291252-7-5"
width="17.143002"
height="17.143002"
x="5.006495"
y="4.9115372" />
<circle
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.50376;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="path296424-3"
cx="9.3531199"
cy="9.3413706"
r="3.0508161" />
<circle
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.50376;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="path296424-7-3"
cx="17.765553"
cy="17.766909"
r="3.0508161" />
<circle
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.50376;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="path296424-7-6-3"
cx="17.807709"
cy="9.2519331"
r="3.0508161" />
<circle
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.50376;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="path296424-2-4"
cx="9.3393154"
cy="17.729809"
r="3.0508161" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save