diff --git a/Taskfile.yaml b/Taskfile.yaml
index 0d8ed7a5838eee2464762f031dce50834174e289..03bc9599a1dea2039ce1f35dcfe6b1a1b50f57d4 100644
--- a/Taskfile.yaml
+++ b/Taskfile.yaml
@@ -64,6 +64,7 @@ tasks:
       - w08-asynchronism/08-asynchronism.html
       - w08-high-availability/08-high-availability.html
       - w09-cloud/09-cloud.html
+      - w10-hexa/10-hexa.html
       - w12-rendu/12-criteres-notation.html
     cmds:
       - for: sources
diff --git a/images/hexa.png b/images/hexa.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffb0ba40131fd4fa96da4d12da71eb9a8c5f43f4
Binary files /dev/null and b/images/hexa.png differ
diff --git a/index.html b/index.html
index 2404b46a4579972f216b5ce76adb05e90d20a49a..6c90b1e9025fe43409e3925671d62a8c3b86dbb8 100644
--- a/index.html
+++ b/index.html
@@ -311,7 +311,7 @@
           <div class="card h-100">
             <img
                     class="card-img-top"
-                    src="images/placeholder.png"
+                    src="images/hexa.png"
                     alt="Clean Archi, et Archi Hexagonale"
             />
             <div class="card-body">
@@ -321,6 +321,12 @@
               </h5>
               <p class="card-text">Salade, Tomates, Oignons 🥙</p>
             </div>
+            <div class="card-footer">
+              <div class="btn-group" role="group">
+                <a href="w10-hexa/10-hexa.html" class="btn btn-primary">Cours</a>
+                <a href="w10-hexa/10-hexa.pdf" class="btn btn-secondary"><i class="bi bi-file-earmark-pdf-fill"></i></a>
+              </div>
+            </div>
           </div>
         </div>
         <div class="col">
diff --git a/w10-hexa/10-hexa.html b/w10-hexa/10-hexa.html
new file mode 100644
index 0000000000000000000000000000000000000000..83d558c110527ab730404c1a90481bbead1e6504
--- /dev/null
+++ b/w10-hexa/10-hexa.html
@@ -0,0 +1,340 @@
+<!doctype html>
+<html lang="fr">
+
+<head>
+    <meta charset="utf-8">
+
+    <title>ALOM - Clean Archi et Archi Hexagonale</title>
+
+    <meta name="description" content="ALOM - Clean Archi et Archi Hexagonale">
+    <meta name="author" content="Julien WITTOUCK <julien@codeka.io>">
+
+    <meta name="apple-mobile-web-app-capable" content="yes"/>
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
+
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
+
+    <link rel="stylesheet" href="../reveal/dist/reveal.css">
+    <link rel="stylesheet" href="../reveal/dist/theme/white.css" id="theme">
+
+    <link rel="stylesheet" href="../css/miage-lille.css"/>
+
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
+          integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
+</head>
+
+<body>
+
+<div class="reveal">
+
+    <div class="slides">
+        <section>
+            <h1>ALOM</h1>
+            <h2>🥙 Clean Archi et Archi Hexagonale</h2>
+            <em>Salade, Tomates, Architecture Oignons</em>
+        </section>
+
+        <section>
+            <h3><i class="fab fa-uber"></i> UBER</h3>
+            <img src="images/Microservice-Architecture-Of-UBER.png" style="width: 50%"/>
+        </section>
+
+        <section>
+            <h2>Problématiques : </h2>
+            <p>Comment organiser le code ?</p>
+            <p>Comment être capable de changer de type de BDD ?</p>
+            <p>Minimiser le <i>Blast-Radius 💣💥</i> d'un changement</p>
+            <p>Séparer les responsabilités</p>
+        </section>
+
+        <section>
+            <h2>L'architecture logicielle</h2>
+            <ul>
+                <li>
+                    Donner forme à la construction d'un système
+                    <ul>
+                        <li>Division en composants</li>
+                        <li>Arrangement des composants</li>
+                        <li>Communication des composants</li>
+                    </ul>
+                </li>
+                <li>
+                    Le but :
+                    <ul>
+                        <li>Faciliter le développement</li>
+                        <li>Faciliter le déploiement</li>
+                        <li>Faciliter les opérations</li>
+                        <li>Faciliter la maintenance</li>
+                    </ul>
+                </li>
+            </ul>
+        </section>
+
+        <section>
+            <h2>Les concepts des architectures logicielles</h2>
+            <ul>
+                <li>
+                    Separation of concerns
+                    <ul>
+                        <li>La BDD ne doit pas dépendre des IHM</li>
+                        <li>Les règles métier ne doivent pas dépendre de la BDD</li>
+                        <li>Les règles métier ne doivent pas dépendre des IHM</li>
+                    </ul>
+                </li>
+            </ul>
+        </section>
+
+        <section>
+            <h3>👮 S.O.L.I.D principles</h3>
+            <ul>
+                <li>S : Single Responsability</li>
+                <span class="fragment">Une classe doit avoir une seule responsabilité</span>
+                <li>O : Open/Closed</li>
+                <span class="fragment">Ouvert à l'extension, mais fermé à la modification</span>
+                <li>L : Liskov Substitution</li>
+                <span class="fragment">Pouvoir utiliser un sous-type</span>
+                <li>I : Interface Segregation</li>
+                <span class="fragment">Présenter plusieurs interfaces spécifiques</span>
+                <li>D : Dependency Inversion</li>
+                <span class="fragment">Dépendre d'abstractions, et non d'implémentations</span>
+            </ul>
+        </section>
+
+        <section>
+            <h3>Domain-Driven Design (DDD)</h3>
+            <img src="./images/DDD.jpg" class="img-right visible" width="15%">
+            <p>Les archis modernes prennent souvent racine dans les concepts de DDD.</p>
+            <ul>
+                <li>Domaine Métier : Le cœur de l'application est la logique métier.</li>
+                <li>Ubiquitous Language : Un langage commun entre les développeurs et les experts métier.</li>
+                <li>Entities et Value Objects : Des objets qui représentent les concepts fondamentaux du métier.</li>
+            </ul>
+        </section>
+
+        <section>
+            <h3>L'architecture n-tier (années 90)</h3>
+            <p>Séparatation physique entre les programmes et les BDD, entre les clients et les serveurs</p>
+            <img src="images/n-tier.png"/>
+        </section>
+        <section>
+            <h3>L'architecture n-tier avec Spring</h3>
+            <p>La vision "classique"</p>
+            <img src="images/n-tier-spring.png"/>
+        </section>
+
+        <section>
+            <h3>L'architecture Hexagonale (ports et adapters)</h3>
+            <p>Conceptualisé par Alistair Cockburn en 2005</p>
+            <img src="./images/hexagon.png"/>
+        </section>
+
+        <section>
+            <h3>La Onion Architecture</h3>
+            <p>Conceptualisé par Jeffrey Palermo en 2008</p>
+            <img src="./images/onion.png"/>
+        </section>
+
+        <section>
+            <h3>La Clean Architecture</h3>
+            <p>Conceptualisé par Robert C. Martin en 2012</p>
+            <img src="./images/CleanArchitecture.jpg"/>
+        </section>
+
+        <section>
+            <h3>Les éléments communs (et importants)</h3>
+            <ul>
+                <li>Séparer la logique métier des détails techniques</li>
+                <li>Indépendance d'un framework</li>
+                <li>Testabilité</li>
+                <li>Indépendance de la partie UI</li>
+                <li>Indépendance de la partie BDD</li>
+            </ul>
+        </section>
+
+        <section data-markdown>
+            <textarea data-template>
+                ## Les moyens de mise en place
+                ### Packages Java
+                ![](images/diagrams-packages.png)
+                ---
+                ## Les moyens de mise en place
+                ### Packages Java
+                ![](images/diagrams-packages-highlights.png)
+                ---
+                ### En vision hexagonale
+                ![](images/diagrams-hexa-packages.png)
+                ---
+                ### Séparation des classes
+                ![](images/diagrams-hexa-packages-dtos.png)
+                ---
+                ### Séparation en modules
+                ![](images/diagrams-hexa-modules.png)
+                ---
+                ### Séparation en modules - parent
+                ```xml
+                <project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.example</groupId>
+    <artifactId>hexagonal-architecture-sample</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>domain</module>
+        <module>web</module>
+        <module>data-jpa</module>
+    </modules>
+
+</project>
+                ```
+                ---
+                ### Séparation en modules - domain
+                ```xml
+                <project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.example</groupId>
+        <artifactId>hexagonal-architecture-sample</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>domain</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
+                ```
+                ---
+                ### Séparation en modules - web
+                ```xml
+                <project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.example</groupId>
+        <artifactId>hexagonal-architecture-sample</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>web</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>domain</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+    </dependencies>
+</project>
+                ```
+                ---
+                ### Séparation en modules - data-jpa
+                ```xml
+                <project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.example</groupId>
+        <artifactId>hexagonal-architecture-sample</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>data-jpa</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>domain</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+    </dependencies>
+</project>
+                ```
+                ---
+                ## Ce qu'il faut retenir
+                * Organisation du code et séparation des responsabilités
+                * SOLID !
+                * Le domaine métier est "pur", sans framework
+                  * annotations customs
+                  * tolérance pour certaines librairies (commons-lang, lombok, etc.)
+                * Pas de "meilleure" façon, toujours adapter au contexte
+
+                ---
+                ## Vocabulaires
+                ![](images/diagrams-vocabulary.png)
+                ---
+                ## Vocabulaires
+                * Controlleurs - DTO (Data Transfer Object) - VO (Value Object)
+                * Use Cases - Services - Domain Objects
+                * Repositories - Entities
+                * Ports = interfaces
+                * Adapters = implémentations
+
+                ### Hexa / Clean
+                * Ports / Adapters
+                * API / SPI : Application Programming Interface, Service Provider Interface
+                * In / Out
+
+            </textarea>
+        </section>
+
+
+        <section>
+            <h2>TP</h2>
+            <img src="../images/leonidas.png"/>
+            <p>
+                <a href="../w12-rendu/12-criteres-notation.html">Critères de notation <i class="em em-cloud"></i></a>
+            </p>
+        </section>
+
+    </div>
+
+</div>
+
+<script src="../reveal/dist/reveal.js"></script>
+<script src="../reveal/plugin/markdown/markdown.js"></script>
+<link rel="stylesheet" href="../reveal/plugin/highlight/zenburn.css">
+<script src="../reveal/plugin/highlight/highlight.js"></script>
+<script>
+    // More info about initialization & config:
+    // - https://revealjs.com/initialization/
+    // - https://revealjs.com/config/
+    Reveal.initialize({
+        hash: true,
+
+        // Learn about plugins: https://revealjs.com/plugins/
+        plugins: [RevealMarkdown, RevealHighlight],
+        markdown: {
+            smartypants: true
+        }
+    });
+</script>
+
+<aside class="miage_aside_logo"></aside>
+
+</body>
+</html>
diff --git a/w10-hexa/images/.$diagrams.drawio.bkp b/w10-hexa/images/.$diagrams.drawio.bkp
new file mode 100644
index 0000000000000000000000000000000000000000..298f50e7de7ab1119aab200c1000a0aaf5786c88
--- /dev/null
+++ b/w10-hexa/images/.$diagrams.drawio.bkp
@@ -0,0 +1,421 @@
+<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="24.7.17" pages="4">
+  <diagram name="n-tier" id="c5Fhrs3pAfpylfDjKvyY">
+    <mxGraphModel dx="539" dy="837" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-2" value="@Controller" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="600" y="80" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-3" value="@Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="600" y="140" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-4" value="@Repository" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="600" y="200" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="29rr4kCg7Ml6QkJ_xFnF-5" target="29rr4kCg7Ml6QkJ_xFnF-6">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-5" value="User interface" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="400" y="80" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="29rr4kCg7Ml6QkJ_xFnF-6" target="29rr4kCg7Ml6QkJ_xFnF-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-6" value="Backend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="400" y="140" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-7" value="Database" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="400" y="200" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-8" value="1st tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="280" y="80" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-9" value="2nd tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="280" y="140" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-10" value="3d tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="280" y="200" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-13" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.cone;direction=north;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
+          <mxGeometry x="520" y="100" width="80" height="120" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="7pg7vUrIsKb24wAKwi6E" name="packages">
+    <mxGraphModel dx="1976" dy="1171" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-1" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-2" value="service" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="160" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-3" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="360" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-4" target="OYEMWmDmDcUV23dBQ6uk-5">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-4" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-5" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-6" target="OYEMWmDmDcUV23dBQ6uk-5">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-6" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-9" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-10" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-6" target="OYEMWmDmDcUV23dBQ6uk-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="220" as="sourcePoint" />
+            <mxPoint x="170" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-10" target="OYEMWmDmDcUV23dBQ6uk-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="340" as="sourcePoint" />
+            <mxPoint x="170" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-13" value="pokemons" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="320" y="40" width="240" height="500" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-17" target="OYEMWmDmDcUV23dBQ6uk-18">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-17" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-18" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-20" target="OYEMWmDmDcUV23dBQ6uk-18">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-20" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-21" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-22" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-20" target="OYEMWmDmDcUV23dBQ6uk-21">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="220" as="sourcePoint" />
+            <mxPoint x="450" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-22" target="OYEMWmDmDcUV23dBQ6uk-21">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="340" as="sourcePoint" />
+            <mxPoint x="450" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-25" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-26" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="160" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-27" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="440" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-29" target="OYEMWmDmDcUV23dBQ6uk-30">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-29" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-30" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-32" target="OYEMWmDmDcUV23dBQ6uk-30">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-32" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-33" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="360" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-34" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-32" target="OYEMWmDmDcUV23dBQ6uk-33">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="220" as="sourcePoint" />
+            <mxPoint x="730" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-34" target="OYEMWmDmDcUV23dBQ6uk-33">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="340" as="sourcePoint" />
+            <mxPoint x="730" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram name="packages-highlights" id="FimorQUkRpZz5n_3ckBc">
+    <mxGraphModel dx="2075" dy="1230" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-0" />
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-1" parent="k0NfVkmA0NVjakYlGoJw-0" />
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-2" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-3" value="service" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="160" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-4" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="360" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-6" target="k0NfVkmA0NVjakYlGoJw-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-6" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-7" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-9" target="k0NfVkmA0NVjakYlGoJw-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-9" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-10" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-11" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-9" target="k0NfVkmA0NVjakYlGoJw-10">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="220" as="sourcePoint" />
+            <mxPoint x="170" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-11" target="k0NfVkmA0NVjakYlGoJw-10">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="340" as="sourcePoint" />
+            <mxPoint x="170" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-14" value="pokemons" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="320" y="40" width="240" height="500" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-16" target="k0NfVkmA0NVjakYlGoJw-17">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-16" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-17" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-19" target="k0NfVkmA0NVjakYlGoJw-17">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-19" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-20" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-21" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-19" target="k0NfVkmA0NVjakYlGoJw-20">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="220" as="sourcePoint" />
+            <mxPoint x="450" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-21" target="k0NfVkmA0NVjakYlGoJw-20">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="340" as="sourcePoint" />
+            <mxPoint x="450" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-24" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-25" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="160" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-26" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="440" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-28" target="k0NfVkmA0NVjakYlGoJw-29">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-28" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-29" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-31" target="k0NfVkmA0NVjakYlGoJw-29">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-31" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-32" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="360" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-33" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-31" target="k0NfVkmA0NVjakYlGoJw-32">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="220" as="sourcePoint" />
+            <mxPoint x="730" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-33" target="k0NfVkmA0NVjakYlGoJw-32">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="340" as="sourcePoint" />
+            <mxPoint x="730" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="NRJLp39u4D51DtysMQp5" name="hexa-packages">
+    <mxGraphModel dx="1729" dy="1025" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-13" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=110;" vertex="1" parent="1">
+          <mxGeometry x="240" y="40" width="400" height="360" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-1" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="80" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-2" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="320" y="80" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-3" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="250" width="240" height="90" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-5" target="EpVNv-dTxgGB9FQMOEVZ-6">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-5" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="120" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-6" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="360" y="120" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-8" target="EpVNv-dTxgGB9FQMOEVZ-6">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-8" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-9" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-10" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-8" target="EpVNv-dTxgGB9FQMOEVZ-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="140" as="sourcePoint" />
+            <mxPoint x="450" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-10" target="EpVNv-dTxgGB9FQMOEVZ-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="380" as="sourcePoint" />
+            <mxPoint x="170" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-14" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=110;" vertex="1" parent="1">
+          <mxGeometry x="240" y="480" width="400" height="360" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-15" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="520" width="240" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-16" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="320" y="520" width="240" height="320" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-17" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="690" width="240" height="220" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-19" target="EpVNv-dTxgGB9FQMOEVZ-20">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-19" target="ypqpasVO_qo0887bOKWy-1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-19" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="560" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-20" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="360" y="560" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-22" target="EpVNv-dTxgGB9FQMOEVZ-20">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-22" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="640" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-23" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="360" y="720" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="KsEOFNJlquhdU8HGQCLY-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-24" target="KsEOFNJlquhdU8HGQCLY-1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-24" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="720" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-22" target="EpVNv-dTxgGB9FQMOEVZ-23">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="580" as="sourcePoint" />
+            <mxPoint x="450" y="620" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-24" target="EpVNv-dTxgGB9FQMOEVZ-23">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="820" as="sourcePoint" />
+            <mxPoint x="170" y="780" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="KsEOFNJlquhdU8HGQCLY-1" target="ypqpasVO_qo0887bOKWy-3">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="KsEOFNJlquhdU8HGQCLY-1" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepoJPAImpl&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="800" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-1" value="PokemonDTO" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="80" y="620" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-3" value="PokemonEntity" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="640" y="860" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-5" value="Pokemon" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="360" y="780" width="160" height="40" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>
diff --git a/w10-hexa/images/CleanArchitecture.jpg b/w10-hexa/images/CleanArchitecture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3cd44fb58d87e5fd2fe1f0a75533f132bb163c61
Binary files /dev/null and b/w10-hexa/images/CleanArchitecture.jpg differ
diff --git a/w10-hexa/images/DDD.jpg b/w10-hexa/images/DDD.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..31d54debf5e721888c8c8aa56a1ab4435bcb5424
Binary files /dev/null and b/w10-hexa/images/DDD.jpg differ
diff --git a/w10-hexa/images/Microservice-Architecture-Of-UBER.png b/w10-hexa/images/Microservice-Architecture-Of-UBER.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2bbb7e3e59aafb758e8d7fe49efe6c2d8b473f1
Binary files /dev/null and b/w10-hexa/images/Microservice-Architecture-Of-UBER.png differ
diff --git a/w10-hexa/images/diagrams-hexa-modules.png b/w10-hexa/images/diagrams-hexa-modules.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b175851aaa51387063865cb1b11b2db0a90d06e
Binary files /dev/null and b/w10-hexa/images/diagrams-hexa-modules.png differ
diff --git a/w10-hexa/images/diagrams-hexa-packages-dtos.png b/w10-hexa/images/diagrams-hexa-packages-dtos.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ef42b4c71b0626241b647d784eec6b657606f85
Binary files /dev/null and b/w10-hexa/images/diagrams-hexa-packages-dtos.png differ
diff --git a/w10-hexa/images/diagrams-hexa-packages.png b/w10-hexa/images/diagrams-hexa-packages.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc8d98ad1a363ae8db2718b9f71276fa5c46f9f8
Binary files /dev/null and b/w10-hexa/images/diagrams-hexa-packages.png differ
diff --git a/w10-hexa/images/diagrams-packages-highlights.png b/w10-hexa/images/diagrams-packages-highlights.png
new file mode 100644
index 0000000000000000000000000000000000000000..60f7a1908790637087798078712afa9e31cc7ae3
Binary files /dev/null and b/w10-hexa/images/diagrams-packages-highlights.png differ
diff --git a/w10-hexa/images/diagrams-packages.png b/w10-hexa/images/diagrams-packages.png
new file mode 100644
index 0000000000000000000000000000000000000000..14e19b95e0f484027af21570621d166268f678af
Binary files /dev/null and b/w10-hexa/images/diagrams-packages.png differ
diff --git a/w10-hexa/images/diagrams-vocabulary.png b/w10-hexa/images/diagrams-vocabulary.png
new file mode 100644
index 0000000000000000000000000000000000000000..270640a957b65a00b0ce17692d127f6008e05e01
Binary files /dev/null and b/w10-hexa/images/diagrams-vocabulary.png differ
diff --git a/w10-hexa/images/diagrams.drawio b/w10-hexa/images/diagrams.drawio
new file mode 100644
index 0000000000000000000000000000000000000000..920f4390aa10496817f850451b0c520b0cc8242f
--- /dev/null
+++ b/w10-hexa/images/diagrams.drawio
@@ -0,0 +1,556 @@
+<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="24.7.17" pages="6">
+  <diagram name="n-tier" id="c5Fhrs3pAfpylfDjKvyY">
+    <mxGraphModel dx="539" dy="837" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-2" value="@Controller" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="600" y="80" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-3" value="@Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="600" y="140" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-4" value="@Repository" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="600" y="200" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="29rr4kCg7Ml6QkJ_xFnF-5" target="29rr4kCg7Ml6QkJ_xFnF-6">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-5" value="User interface" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="400" y="80" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="29rr4kCg7Ml6QkJ_xFnF-6" target="29rr4kCg7Ml6QkJ_xFnF-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-6" value="Backend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="400" y="140" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-7" value="Database" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="400" y="200" width="120" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-8" value="1st tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
+          <mxGeometry x="280" y="80" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-9" value="2nd tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+          <mxGeometry x="280" y="140" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-10" value="3d tier" style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+          <mxGeometry x="280" y="200" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="29rr4kCg7Ml6QkJ_xFnF-13" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.cone;direction=north;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
+          <mxGeometry x="520" y="100" width="80" height="120" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="7pg7vUrIsKb24wAKwi6E" name="packages">
+    <mxGraphModel dx="1976" dy="1171" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-1" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-2" value="service" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="160" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-3" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="40" y="360" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-4" target="OYEMWmDmDcUV23dBQ6uk-5">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-4" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-5" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-6" target="OYEMWmDmDcUV23dBQ6uk-5">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-6" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-9" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-10" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="80" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-6" target="OYEMWmDmDcUV23dBQ6uk-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="220" as="sourcePoint" />
+            <mxPoint x="170" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-10" target="OYEMWmDmDcUV23dBQ6uk-9">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="340" as="sourcePoint" />
+            <mxPoint x="170" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-13" value="pokemons" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="320" y="40" width="240" height="500" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-17" target="OYEMWmDmDcUV23dBQ6uk-18">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-17" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-18" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-20" target="OYEMWmDmDcUV23dBQ6uk-18">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-20" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-21" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-22" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="360" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-20" target="OYEMWmDmDcUV23dBQ6uk-21">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="220" as="sourcePoint" />
+            <mxPoint x="450" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-22" target="OYEMWmDmDcUV23dBQ6uk-21">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="340" as="sourcePoint" />
+            <mxPoint x="450" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-25" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-26" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="160" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-27" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="1">
+          <mxGeometry x="600" y="440" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-29" target="OYEMWmDmDcUV23dBQ6uk-30">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-29" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-30" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-32" target="OYEMWmDmDcUV23dBQ6uk-30">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-32" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-33" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="360" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-34" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="1">
+          <mxGeometry x="640" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-32" target="OYEMWmDmDcUV23dBQ6uk-33">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="220" as="sourcePoint" />
+            <mxPoint x="730" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="OYEMWmDmDcUV23dBQ6uk-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="1" source="OYEMWmDmDcUV23dBQ6uk-34" target="OYEMWmDmDcUV23dBQ6uk-33">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="340" as="sourcePoint" />
+            <mxPoint x="730" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram name="packages-highlights" id="FimorQUkRpZz5n_3ckBc">
+    <mxGraphModel dx="2075" dy="1230" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-0" />
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-1" parent="k0NfVkmA0NVjakYlGoJw-0" />
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-2" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-3" value="service" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="160" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-4" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="40" y="360" width="240" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-6" target="k0NfVkmA0NVjakYlGoJw-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-6" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-7" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-9" target="k0NfVkmA0NVjakYlGoJw-7">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-9" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-10" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-11" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="80" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-9" target="k0NfVkmA0NVjakYlGoJw-10">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="220" as="sourcePoint" />
+            <mxPoint x="170" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-11" target="k0NfVkmA0NVjakYlGoJw-10">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="340" as="sourcePoint" />
+            <mxPoint x="170" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-14" value="pokemons" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="320" y="40" width="240" height="500" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-16" target="k0NfVkmA0NVjakYlGoJw-17">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-16" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-17" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-19" target="k0NfVkmA0NVjakYlGoJw-17">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-19" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-20" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="400" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-21" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="360" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-19" target="k0NfVkmA0NVjakYlGoJw-20">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="220" as="sourcePoint" />
+            <mxPoint x="450" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-21" target="k0NfVkmA0NVjakYlGoJw-20">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="340" as="sourcePoint" />
+            <mxPoint x="450" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-24" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="40" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-25" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="160" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-26" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="600" y="440" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-28" target="k0NfVkmA0NVjakYlGoJw-29">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-28" value="PokemonController" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="80" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-29" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-31" target="k0NfVkmA0NVjakYlGoJw-29">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-31" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-32" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="360" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-33" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" vertex="1" parent="k0NfVkmA0NVjakYlGoJw-1">
+          <mxGeometry x="640" y="480" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-31" target="k0NfVkmA0NVjakYlGoJw-32">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="220" as="sourcePoint" />
+            <mxPoint x="730" y="260" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="k0NfVkmA0NVjakYlGoJw-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" edge="1" parent="k0NfVkmA0NVjakYlGoJw-1" source="k0NfVkmA0NVjakYlGoJw-33" target="k0NfVkmA0NVjakYlGoJw-32">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="730" y="340" as="sourcePoint" />
+            <mxPoint x="730" y="300" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="NRJLp39u4D51DtysMQp5" name="hexa-packages">
+    <mxGraphModel dx="447" dy="694" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-13" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=110;" parent="1" vertex="1">
+          <mxGeometry x="240" y="40" width="400" height="360" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-1" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="40" y="80" width="240" height="100" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-2" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="320" y="80" width="240" height="260" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-3" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="600" y="250" width="240" height="90" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-5" target="EpVNv-dTxgGB9FQMOEVZ-6" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-5" value="PokemonController" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="80" y="120" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-6" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="360" y="120" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-8" target="EpVNv-dTxgGB9FQMOEVZ-6" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-8" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="360" y="200" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-9" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="360" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-10" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="640" y="280" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-8" target="EpVNv-dTxgGB9FQMOEVZ-9" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="140" as="sourcePoint" />
+            <mxPoint x="450" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-10" target="EpVNv-dTxgGB9FQMOEVZ-9" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="380" as="sourcePoint" />
+            <mxPoint x="170" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-14" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=110;" parent="1" vertex="1">
+          <mxGeometry x="240" y="480" width="400" height="360" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-15" value="web" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="40" y="520" width="240" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-16" value="domain" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="320" y="520" width="240" height="320" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-17" value="data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;verticalAlign=bottom;align=left;" parent="1" vertex="1">
+          <mxGeometry x="600" y="690" width="240" height="220" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-19" target="EpVNv-dTxgGB9FQMOEVZ-20" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-19" target="ypqpasVO_qo0887bOKWy-1" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-19" value="PokemonController" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="80" y="560" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-20" value="«interface»&lt;br&gt;&lt;b&gt;PokemonService&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="360" y="560" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-22" target="EpVNv-dTxgGB9FQMOEVZ-20" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-22" value="PokemonServiceImpl" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="360" y="640" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-23" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepository&lt;/b&gt;" style="html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="360" y="720" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="KsEOFNJlquhdU8HGQCLY-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-24" target="KsEOFNJlquhdU8HGQCLY-1" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-24" value="PokemonRepositoryImpl" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="640" y="720" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-22" target="EpVNv-dTxgGB9FQMOEVZ-23" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="450" y="580" as="sourcePoint" />
+            <mxPoint x="450" y="620" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="EpVNv-dTxgGB9FQMOEVZ-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=block;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;" parent="1" source="EpVNv-dTxgGB9FQMOEVZ-24" target="EpVNv-dTxgGB9FQMOEVZ-23" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="820" as="sourcePoint" />
+            <mxPoint x="170" y="780" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="KsEOFNJlquhdU8HGQCLY-1" target="ypqpasVO_qo0887bOKWy-3" edge="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="KsEOFNJlquhdU8HGQCLY-1" value="«interface»&lt;br&gt;&lt;b&gt;PokemonRepoJPAImpl&lt;/b&gt;" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
+          <mxGeometry x="640" y="800" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-1" value="PokemonDTO" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+          <mxGeometry x="80" y="620" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-3" value="PokemonEntity" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+          <mxGeometry x="640" y="860" width="160" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="ypqpasVO_qo0887bOKWy-5" value="Pokemon" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+          <mxGeometry x="360" y="780" width="160" height="40" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="MEdb4AUAbgb11SuPAlvX" name="hexa-modules">
+    <mxGraphModel dx="782" dy="1214" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="d-9lFKzfhhLQQYkVDo1D-1" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=60;" vertex="1" parent="1">
+          <mxGeometry x="120" y="240" width="240" height="200" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-1" target="v59GMtOM7vevkp0YK9PX-2">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-1" value="web" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="80" y="80" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-2" value="domain" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="200" y="80" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-3" target="v59GMtOM7vevkp0YK9PX-2">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-3" value="data" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="320" y="80" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-6" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-7" target="v59GMtOM7vevkp0YK9PX-8">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-7" value="web" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="90" y="260" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-8" value="domain" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="200" y="320" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-9" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-10" target="v59GMtOM7vevkp0YK9PX-8">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-10" value="data jpa" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="310" y="320" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-12" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-11" target="v59GMtOM7vevkp0YK9PX-8">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-11" value="data mongo" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="380" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-14" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-13" target="v59GMtOM7vevkp0YK9PX-8">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-13" value="kafka" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="100" y="380" width="80" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-16" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="v59GMtOM7vevkp0YK9PX-15" target="v59GMtOM7vevkp0YK9PX-8">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="v59GMtOM7vevkp0YK9PX-15" value="kafka" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="260" width="80" height="40" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="u8svijj-Xorm958uWhtm" name="vocabulary">
+    <mxGraphModel dx="1502" dy="1012" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-1" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=40;" vertex="1" parent="1">
+          <mxGeometry x="80" y="40" width="240" height="210" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-5" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-2" target="BkyBxnSlllpmX_6EBPTR-4">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-2" value="API" style="rounded=0;whiteSpace=wrap;html=1;rotation=-70;" vertex="1" parent="1">
+          <mxGeometry x="66.19" y="79.67" width="103.29" height="35.3" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-3" value="SPI" style="rounded=0;whiteSpace=wrap;html=1;rotation=70;direction=west;flipH=1;flipV=1;" vertex="1" parent="1">
+          <mxGeometry x="230" y="79.67" width="103.29" height="35.3" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-6" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-4" target="BkyBxnSlllpmX_6EBPTR-3">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-4" value="Domain" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="160" y="114.97000000000003" width="80" height="70" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-13" value="" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;size=40;" vertex="1" parent="1">
+          <mxGeometry x="80.26" y="320" width="240" height="210" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-14" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-15" target="BkyBxnSlllpmX_6EBPTR-18">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-15" value="Port" style="rounded=0;whiteSpace=wrap;html=1;rotation=-70;" vertex="1" parent="1">
+          <mxGeometry x="66.45" y="359.67" width="103.29" height="35.3" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-16" value="Port" style="rounded=0;whiteSpace=wrap;html=1;rotation=70;direction=west;flipH=1;flipV=1;" vertex="1" parent="1">
+          <mxGeometry x="230.26" y="359.67" width="103.29" height="35.3" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-17" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-18" target="BkyBxnSlllpmX_6EBPTR-16">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-18" value="Domain" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="160.26" y="394.97" width="80" height="70" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-20" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=0;dashed=1;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-19" target="BkyBxnSlllpmX_6EBPTR-16">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-19" value="Adapter" style="rounded=0;whiteSpace=wrap;html=1;rotation=0;" vertex="1" parent="1">
+          <mxGeometry x="360" y="320" width="103.29" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-21" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=0;dashed=1;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-22" target="BkyBxnSlllpmX_6EBPTR-3">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="268.7436401189607" y="84.0667186770745" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-22" value="Infrastructure" style="rounded=0;whiteSpace=wrap;html=1;rotation=0;" vertex="1" parent="1">
+          <mxGeometry x="360" y="40" width="103.29" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-23" value="Application" style="rounded=0;whiteSpace=wrap;html=1;rotation=0;" vertex="1" parent="1">
+          <mxGeometry x="-60" y="39.67" width="103.29" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-24" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-23" target="BkyBxnSlllpmX_6EBPTR-2">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="144" y="113" as="sourcePoint" />
+            <mxPoint x="170" y="132" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-25" value="Use Cases" style="rounded=0;whiteSpace=wrap;html=1;rotation=0;" vertex="1" parent="1">
+          <mxGeometry x="-60" y="319.67" width="103.29" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="BkyBxnSlllpmX_6EBPTR-26" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" edge="1" parent="1" source="BkyBxnSlllpmX_6EBPTR-25" target="BkyBxnSlllpmX_6EBPTR-15">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="53" y="85" as="sourcePoint" />
+            <mxPoint x="111" y="102" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>
diff --git a/w10-hexa/images/hexagon.png b/w10-hexa/images/hexagon.png
new file mode 100644
index 0000000000000000000000000000000000000000..b04a44a7a8388ed315a0ce09278393c0c5db5e7e
Binary files /dev/null and b/w10-hexa/images/hexagon.png differ
diff --git a/w10-hexa/images/n-tier-spring.png b/w10-hexa/images/n-tier-spring.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd121acc2c7086fac3a2525bfcc65d99ec5752f7
Binary files /dev/null and b/w10-hexa/images/n-tier-spring.png differ
diff --git a/w10-hexa/images/n-tier.png b/w10-hexa/images/n-tier.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ea528e0fe3a7138c7e5361085f97299afb6883e
Binary files /dev/null and b/w10-hexa/images/n-tier.png differ
diff --git a/w10-hexa/images/onion.png b/w10-hexa/images/onion.png
new file mode 100644
index 0000000000000000000000000000000000000000..1bfccc1eb49f68ec2928e05ebfb999feac4381e0
Binary files /dev/null and b/w10-hexa/images/onion.png differ
diff --git a/w10-hexa/images/package-by-layer-access.svg b/w10-hexa/images/package-by-layer-access.svg
new file mode 100644
index 0000000000000000000000000000000000000000..68035b2fc7c2c0fa058616ab2431e29e6275d54c
--- /dev/null
+++ b/w10-hexa/images/package-by-layer-access.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="556px" height="283px" viewBox="-0.5 -0.5 556 283" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2020-04-06T09:31:46.774Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.9.3 Chrome/80.0.3987.158 Electron/8.2.0 Safari/537.36&quot; etag=&quot;NhT2Ko_UiLjGesFHZO84&quot; version=&quot;12.9.3&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;zfgmmOZhkC7bbb6hCqzr&quot; name=&quot;Page-1&quot;&gt;7Vtde6I4FP41XtqHgCBeqq3tbGd3uqu73c4dQoppg3FD/GB+/SYSKl9l6DwdSEf0Qs9JSE7O+57kJEDPmAaHa+psVr8TD+KernmHnnHZ03UAbJP/CE0UayxbixU+RZ6sdFLM0TcolUm1LfJgmKnICMEMbbJKl6zX0GUZnUMp2WerPRKc7XXj+LCgmLsOLmrvkcdWsdbWhyf9DUT+KukZWKO4JHCSynIk4crxyD6lMq56xpQSwuJ/wWEKsXBe4pf4utkrpS+GUbhmdS5g+Mm4sf+JcPTnPOpbG/Cwo/3EuJ2Dt3LEvDnEEPd5bDWLElfwAWzEX+FDSHvG5JGs2VyWAy6HG8dFa39BNkKhcQ1zlonXBlJ+8RYYxIo7EvL+yJqrMHzkJZMVC7BsUnQxcwKEBX2mZEsR71nX/oDckRPsLCFOXe5y04+G7SBliGP4OVeBCcsmDkZ+qrek8liql4QxEoi+EcZTggk9Dt94NMVXDJNR8gxTJdbxI61N6eMP1xehkuiJvuEhpZLQXUMSQEYjXiUpNaz4EhlHxlAG1v7ESpDoVmlGGhJiR0aC/9L2iSz8j+TLW7hjFbjjMdLxRinemEA53oAib1yM+BA76ihNHX2g1aSOZv4s6ujFKcchHW1Uok1+pVKANmZxwuHjpwRjgVFHHnXIY+htkuev/STsa/fm/af+ZGETuLx/tvtWgSHQ41sEKa7Jmv9MKNmuPSiaEfgTylbEJ2sODYlZwpVPkLFIbnCcLSMVDLiBeAcFWgn74quOXHvVySGnjSsttL6h2+Ban/X/u32Yf3qeeb/RRT/ZPjnUh6yinnSkGGUlZBRih6FddqP07u4fNuJ+7kwa/ZsWHkRjF2YiXh5k47EUSUkh2JIdsyK42c3ipn0E3D77gy9Py/Fl/3aqPc2/2ovgbpbUUwS2hEUdbt+LN0st3ECHW71409vCrcrqVGp6R4m3dXmC9WqGmkVxv0IMznlOKkr31Nm8IbVMex8Uc8ZsCig5lMv+wFh8c3mkrPoeCWF+NzEqSQjNkoRQf4fji/JI+1XyQb3mRDdQaqLTzz0frAubrRRsRquwDT8QbiOlcBuce1pRFzZgKIWb2eFWE7fWlrcqs1P54N8hpF0yWJ4MWiU3s5pNBs8+HTFqxplap4qg3XzkA+Gm2LEiOPuEpAQ4tc4Vq6xOrWtXhw0HplvZSlc2A7S+sjV9gH8hnhXMBJtmfSfajtIdpIgPWdwRfVsIwgNimZ65LDoGF9pQiqd+hRClhHyvPx7Pg5oTsVr7eTBqmh5iLCl69DlsoCF+cEQy/ACGgvxo7dygyurcPuZy/OWsp3kwUG4D88s83mAqn9BWmV28AdTFinJ3fpo5VGsgVqyaewhdqVApPjc8Z8R9nkO6Qy6cHp8h/iAh45IAudKmlxdDhOBjJwyTTOWnxJWZf8SuyTWo8ug8nywsznsCzAM10BqcACvPylNAjT2PwjDssMphpbcdVHZpTF2Jl7uis4Yqn1e0H1aj16KqQ6uIVuuBBYqvTMqMvYOrCJfZYHBVHYOX7K+6JUsxqPQCVMf8vgMqB1TZK5zvBBQXT2+kH8tS7/UbV/8D&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 0 151 L 40 151 L 40 165 L 175 165 L 175 281 L 0 281 L 0 165 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 165 L 40 165" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 148px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">entities</div></div></div></foreignObject><text x="2" y="148" fill="#333333" font-family="Courier New" font-size="12px" font-weight="bold">entities</text></switch></g><path d="M 380 151 L 420 151 L 420 165 L 555 165 L 555 281 L 380 281 L 380 165 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 380 165 L 420 165" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 148px; margin-left: 382px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">dtos</div></div></div></foreignObject><text x="382" y="148" fill="#333333" font-family="Courier New" font-size="12px" font-weight="bold">dtos</text></switch></g><path d="M 380 16 L 420 16 L 420 30 L 555 30 L 555 121 L 380 121 L 380 30 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 380 30 L 420 30" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 13px; margin-left: 382px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">clients</div></div></div></foreignObject><text x="382" y="13" fill="#333333" font-family="Courier New" font-size="12px" font-weight="bold">clients</text></switch></g><path d="M 0 16 L 40 16 L 40 30 L 175 30 L 175 121 L 0 121 L 0 30 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 30 L 40 30" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 13px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">dao</div></div></div></foreignObject><text x="2" y="13" fill="#333333" font-family="Courier New" font-size="12px" font-weight="bold">dao</text></switch></g><path d="M 190 16 L 230 16 L 230 30 L 365 30 L 365 121 L 190 121 L 190 30 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 190 30 L 230 30" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 13px; margin-left: 192px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">controller</div></div></div></foreignObject><text x="192" y="13" fill="#333333" font-family="Courier New" font-size="12px" font-weight="bold">controller</text></switch></g><path d="M 200 76 L 171.37 76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 166.12 76 L 173.12 72.5 L 171.37 76 L 173.12 79.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 270.47 86 L 168.66 230.79" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 165.64 235.09 L 166.81 227.35 L 168.66 230.79 L 172.53 231.37 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 284.53 86 L 386.34 230.79" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 389.36 235.09 L 382.47 231.37 L 386.34 230.79 L 388.19 227.35 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 322.5 66 L 383.78 52.38" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 388.91 51.24 L 382.83 56.18 L 383.78 52.38 L 381.32 49.34 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 283.58 86 L 386.69 255.56" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 389.42 260.04 L 382.79 255.88 L 386.69 255.56 L 388.77 252.25 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="200" y="66" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 76px; margin-left: 202px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ProductController</div></div></div></foreignObject><text x="202" y="79" fill="#1A1A1A" font-family="Courier New" font-size="11px">ProductController</text></switch></g><path d="M 200 51 L 171.37 51" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 166.12 51 L 173.12 47.5 L 171.37 51 L 173.12 54.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 269.17 61 L 169.08 181.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 165.72 185.14 L 167.51 177.52 L 169.08 181.11 L 172.89 182 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 270.68 61 L 168.59 210.74" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 165.63 215.08 L 166.68 207.32 L 168.59 210.74 L 172.46 211.26 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 285.83 61 L 385.92 181.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 389.28 185.14 L 382.11 182 L 385.92 181.11 L 387.49 177.52 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 284.53 61 L 386.34 205.79" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 389.36 210.09 L 382.47 206.37 L 386.34 205.79 L 388.19 202.35 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="200" y="41" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 51px; margin-left: 202px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UserController</div></div></div></foreignObject><text x="202" y="54" fill="#1A1A1A" font-family="Courier New" font-size="11px">UserController</text></switch></g><path d="M 232.5 91 L 171.22 77.38" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 166.09 76.24 L 173.68 74.34 L 171.22 77.38 L 172.17 81.18 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 269.17 111 L 169.08 231.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 165.72 235.14 L 167.51 227.52 L 169.08 231.11 L 172.89 232 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 285.83 111 L 385.92 231.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 389.28 235.14 L 382.11 232 L 385.92 231.11 L 387.49 227.52 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="200" y="91" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 101px; margin-left: 202px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ExportController</div></div></div></foreignObject><text x="202" y="104" fill="#1A1A1A" font-family="Courier New" font-size="11px">ExportController</text></switch></g><path d="M 38.68 62.4 L 38.68 170.83" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 38.68 176.08 L 35.18 169.08 L 38.68 170.83 L 42.18 169.08 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 45.03 63.6 L 44.29 192.43" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 44.26 197.68 L 40.8 190.66 L 44.29 192.43 L 47.8 190.7 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="10" y="41" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 51px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UserDAO</div></div></div></foreignObject><text x="12" y="54" fill="#1A1A1A" font-family="Courier New" font-size="11px">UserDAO</text></switch></g><path d="M 87.5 86 L 87.5 219.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 87.5 224.88 L 84 217.88 L 87.5 219.63 L 91 217.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="10" y="66" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 76px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ProductDAO</div></div></div></foreignObject><text x="12" y="79" fill="#1A1A1A" font-family="Courier New" font-size="11px">ProductDAO</text></switch></g><path d="M 467.5 61 L 467.5 244.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 467.5 249.88 L 464 242.88 L 467.5 244.63 L 471 242.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="390" y="41" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 51px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">StockServiceClient</div></div></div></foreignObject><text x="392" y="54" fill="#1A1A1A" font-family="Courier New" font-size="11px">StockServiceClient</text></switch></g><rect x="390" y="176" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 186px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UserDTO</div></div></div></foreignObject><text x="392" y="189" fill="#1A1A1A" font-family="Courier New" font-size="11px">UserDTO</text></switch></g><rect x="390" y="201" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 211px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">AddressDTO</div></div></div></foreignObject><text x="392" y="214" fill="#1A1A1A" font-family="Courier New" font-size="11px">AddressDTO</text></switch></g><rect x="10" y="176" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 186px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UserEntity</div></div></div></foreignObject><text x="12" y="189" fill="#1A1A1A" font-family="Courier New" font-size="11px">UserEntity</text></switch></g><rect x="10" y="201" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 211px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">AddressEntity</div></div></div></foreignObject><text x="12" y="214" fill="#1A1A1A" font-family="Courier New" font-size="11px">AddressEntity</text></switch></g><rect x="10" y="226" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 236px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ProductEntity</div></div></div></foreignObject><text x="12" y="239" fill="#1A1A1A" font-family="Courier New" font-size="11px">ProductEntity</text></switch></g><rect x="390" y="226" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 236px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ProductDTO</div></div></div></foreignObject><text x="392" y="239" fill="#1A1A1A" font-family="Courier New" font-size="11px">ProductDTO</text></switch></g><rect x="390" y="251" width="155" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 153px; height: 1px; padding-top: 261px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 11px; font-family: Courier New; color: #1A1A1A; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">StockDTO</div></div></div></foreignObject><text x="392" y="264" fill="#1A1A1A" font-family="Courier New" font-size="11px">StockDTO</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file