The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .gitignore
├── LICENSE
├── Main.java
├── README.md
├── i18n
    └── zh-CN
    │   ├── ReadMe-zh-CN.md
    │   ├── java-developer-roadmap-zh-CN.png
    │   └── java-developer-roadmap-zh-CN.xml
├── java-developer-roadmap.png
└── java-developer-roadmap.xml


/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | java-developer-roadmap.iml
3 | 


--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2019 Sakib Sami
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/Main.java:
--------------------------------------------------------------------------------
1 | class Main {
2 |     public static void main(String[] args) {
3 |         System.out.println("Welcome to Java Developer Roadmap");
4 |     }
5 | }
6 | 


--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
  1 | # Java Developer Roadmap
  2 | 
  3 | > Roadmap to becoming a [Java](https://g.co/kgs/bzeRda) developer in 2025:
  4 | 
  5 | Below you can find a chart demonstrating the paths that you can take and the libraries that you would want to learn to
  6 | become a Java developer. I made this chart as a tip for everyone who asks me, "What should I learn next as a Java
  7 | developer?"
  8 | 
  9 | [中文版](./i18n/zh-CN/ReadMe-zh-CN.md)
 10 | 
 11 | ## Disclaimer
 12 | 
 13 | > The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are
 14 | > confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some
 15 | > understanding of why one tool would be better suited for some cases than the other and remember hip and trendy does
 16 | > not
 17 | > always mean best suited for the job
 18 | 
 19 | ## Give a Star! :star:
 20 | 
 21 | If you like or are using this project to learn or start your solution, please give it a star. Thanks!
 22 | 
 23 | ## Roadmap
 24 | 
 25 | ![Roadmap](java-developer-roadmap.png)
 26 | 
 27 | ## Resources
 28 | 
 29 | 1. Prerequisites
 30 | 
 31 |     - [Java](https://www.java.com/en/download/)
 32 |     - [Gradle](https://gradle.org/)
 33 |       or [Maven](https://maven.apache.org/)
 34 |     - [SQL](https://www.w3schools.com/sql/default.asp)
 35 | 
 36 | 2. General Development Skills
 37 | 
 38 |     - Learn GIT, create a few repositories on GitHub, share your code with other people
 39 |     - Know HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS)
 40 |     - Don't be afraid of using Google, [Power Searching with Google](http://www.powersearchingwithGoogle.com/)
 41 |     - Read a few books about algorithms and data structures
 42 |     - Learn about implementation of a basic Authentication
 43 |     - Solid principles, etc
 44 | 
 45 | 3. CLI Tools
 46 |     1. [args4j](http://args4j.kohsuke.org/)
 47 |     2. [JCommander](http://jcommander.org/)
 48 |     3. [airline](https://github.com/airlift/airline)
 49 | 
 50 | 4. Web Frameworks + Routers
 51 | 
 52 |     1. [Spring](https://spring.io/)
 53 |     2. [Play Framework](https://www.playframework.com/)
 54 |     3. [Spark](http://sparkjava.com/)
 55 |     4. [dropwizard](https://www.dropwizard.io/en/stable/)
 56 |     5. [nanohttpd](https://github.com/NanoHttpd/nanohttpd)
 57 |     6. [Vertx](https://vertx.io/)
 58 | 
 59 | 5. Databases
 60 | 
 61 |     1. Relational
 62 |         1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017)
 63 |         2. [PostgreSQL](https://www.postgresql.org/)
 64 |         3. [MariaDB](https://mariadb.org/)
 65 |         4. [MySQL](https://www.mysql.com/)
 66 |         5. [Oracle](https://www.oracle.com/database/)
 67 |     2. Cloud Databases
 68 |         - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db)
 69 |         - [DynamoDB](https://aws.amazon.com/dynamodb/)
 70 |     3. Search Engines
 71 |         - [ElasticSearch](https://www.elastic.co/)
 72 |         - [Opensearch](https://opensearch.org/)
 73 |         - [Algolia](https://www.algolia.com/)
 74 |     4. NoSQL
 75 |         - [MongoDB](https://www.monJavadb.com/)
 76 |         - [Redis](https://redis.io/)
 77 |         - [Apache Cassandra](http://cassandra.apache.org/)
 78 |         - [Clickhouse](https://clickhouse.com/)
 79 |         - [InfluxDB](https://www.influxdata.com/)
 80 |         - [CouchDB](http://couchdb.apache.org/)
 81 | 
 82 | 6. ORMs
 83 | 
 84 |     1. [Hibernate](https://hibernate.org/)
 85 |     2. [Ebean](https://ebean.io/)
 86 | 
 87 | 7. Caching
 88 | 
 89 |     1. [Caffeine](https://github.com/ben-manes/caffeine)
 90 |     2. [EHCache](http://www.ehcache.org/)
 91 |     3. [Cache2k](https://cache2k.org/)
 92 |     4. Distributed Cache
 93 |         1. [Java-Redis](https://github.com/xetorthio/jedis)
 94 |         2. [Java-Memcached](https://redislabs.com/lp/memcached-java/)
 95 |         3. [Infinispan](http://infinispan.org/)
 96 | 
 97 | 8. Logging
 98 | 
 99 |     1. Log Frameworks
100 |         - [Zap](https://github.com/uber-Java/zap)
101 |         - [TinyLog](http://www.tinylog.org/)
102 |         - [log4j](https://logging.apache.org/log4j)
103 |     2. Log Management System
104 |         - [ELK Stack](https://www.elastic.co/what-is/elk-stack)
105 |         - [Sentry.io](http://sentry.io)
106 |         - [Loggly.com](https://loggly.com)
107 |         - [Tracer](https://github.com/zalando/tracer)
108 | 
109 | 9. Real-Time Communication
110 |     1. [Socket.IO](https://socket.io/)
111 |     2. [atmosphere](https://github.com/Atmosphere/atmosphere)
112 |     3. [webbit](https://github.com/webbit/webbit)
113 | 
114 | 10. API Clients
115 | 
116 |     1. REST
117 |         - [okhttp](https://square.github.io/okhttp/)
118 |         - [retrofit](https://square.github.io/retrofit/)
119 |     2. [GraphQL](https://graphql.org/)
120 | 
121 | 11. Good to Know
122 | 
123 |     - [Beanvalidation](https://beanvalidation.org/)
124 |     - [bouncycastle](https://www.bouncycastle.org/java.html)
125 |     - [gson](https://github.com/google/gson)
126 |     - [Apache Shiro](https://shiro.apache.org/)
127 |     - [JJWT](https://github.com/jwtk/jjwt)
128 |     - [RxJava](https://github.com/ReactiveX/RxJava)
129 |     - [Quarkus](https://quarkus.io/)
130 | 
131 | 12. Testing
132 | 
133 |     1. Unit, Behavior, Integration, Load Testing
134 |         - [JUnit](http://junit.org/)
135 |         - [JMeter](https://jmeter.apache.org/)
136 |         - [CitrusFramework](https://citrusframework.org/)
137 |         - [Gatling](https://gatling.io/)
138 |         - [Tsung](http://tsung.erlang-projects.org/)
139 |         - [Mockito](https://site.mockito.org/)
140 |         - [Assertj](https://joel-costigliola.github.io/assertj)
141 | 
142 |     2. E2E Testing
143 |         - [Selenium](https://github.com/tebeka/selenium)
144 |         - [Wiremock](https://wiremock.org/)
145 |         - [Testcontainers](https://testcontainers.com/)
146 | 
147 | 13. Task Scheduling
148 | 
149 |     - [Aurora](https://aurora.apache.org/)
150 |     - [elasticjob](https://github.com/elasticjob/elastic-job-lite)
151 |     - [Sundial](https://github.com/knowm/Sundial)
152 |     - [cron-utils](https://github.com/jmrozanec/cron-utils)
153 | 
154 | 14. MicroServices
155 | 
156 |     1. Message-Broker
157 |         - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html)
158 |         - [Apache Kafka](https://www.npmjs.com/package/kafka-node)
159 |         - [ActiveMQ](https://github.com/apache/activemq)
160 |         - [Apache Pulsar](https://pulsar.apache.org/)
161 |     2. Message-Bus
162 |         - [mbassador](https://github.com/bennidi/mbassador)
163 |         - [rmq](https://github.com/xetorthio/rmq)
164 |     3. Frameworks
165 |         - [Apollo](https://spotify.github.io/apollo/)
166 |         - [lagom-framework](https://www.lightbend.com/lagom-framework)
167 |         - [micronaut](https://micronaut.io/)
168 |         - [eureka](https://github.com/Netflix/eureka)
169 |         - [helidon](https://helidon.io/#/)
170 |         - [armeria](https://github.com/line/armeria)
171 |     4. RPC
172 |         - [Protocol Buffers](https://github.com/protocolbuffers/protobuf)
173 |         - [gRPC-Java](https://github.com/grpc/grpc-java)
174 |         - [thrift](https://thrift.apache.org/)
175 | 
176 | 15. [Java-Patterns](https://github.com/iluwatar/java-design-patterns)
177 | 
178 | ## Wrap Up
179 | 
180 | If you think the roadmap can be improved, please do open a PR with any updates and submit any issues. Also, I will
181 | continue to improve this, so you might want to star this repository to revisit.
182 | 
183 | Idea from : [Golang Developer Roadmap](https://github.com/Alikhll/golang-developer-roadmap)
184 | 
185 | ## Contribution
186 | 
187 | The roadmap is built using [Draw.io](https://www.draw.io/). Project file can be found at `java-developer-roadmap.xml`
188 | file. To modify it, open draw.io, click **Open Existing Diagram** and choose `xml` file with project. It will open the
189 | roadmap for you. Update it, upload and update the images in readme and create a PR (export as png with 400% zoom and
190 | minify that with [Compressor.io](https://compressor.io/compress)).
191 | 
192 | - Open a pull request with improvements
193 | - Discuss ideas in issues
194 | - Spread the word
195 | 
196 | ## License
197 | 
198 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
199 | 


--------------------------------------------------------------------------------
/i18n/zh-CN/ReadMe-zh-CN.md:
--------------------------------------------------------------------------------
  1 | # Java 开发者路线图
  2 | 
  3 | > 在 2021 年成为一名 Java 开发者的路线图:
  4 | 
  5 | 下面有一个路线图,如果你想要成为一名 Java 语言的开发者的话,你可以沿着这张图里面的路径去学习,里面记录了一些你可能也想学习的库。当你问:”我想成为一名 Java 语言开发者,接下来我要学些什么?“,我做的这个路线图就是一个很好的建议。
  6 | 
  7 | ## 免责声明
  8 | 
  9 | > 本路线图的目的是让你看到学习 Java 语言的一个全景图。在你对接下来要学习什么感到困惑的时候,这个路线图会给你一些指导,而不是鼓励你去选择当下流行的东西。你需要逐渐了解为什么一个工具可能会比另一个工具更适合某些场景。但请记住,流行的东西并不意味着一定适合你的工作。
 10 | 
 11 | ## 给我一个 Star! :star:
 12 | 
 13 | 如果您喜欢或者正在使用这个项目来学习或者开始你的计划,请给我一个 Star,谢谢!
 14 | 
 15 | ## Roadmap
 16 | 
 17 | ![Roadmap](java-developer-roadmap-zh-CN.png)
 18 | 
 19 | ## 资源
 20 | 
 21 | 1. 先决条件
 22 | 
 23 |    - [Java](https://www.java.com/en/download/)
 24 |    - [Gradle](https://gradle.org/)
 25 |    或 [Maven](https://maven.apache.org/)
 26 |    - [SQL](https://www.w3schools.com/sql/default.asp)
 27 | 
 28 | 2. 通用开发技能
 29 | 
 30 |    - 学习 GIT,在 GitHub 上建立一些仓库,与其它人分享你的代码
 31 |    - 了解 HTTP(S) 协议,request 方法(GET, POST, PUT, PATCH, DELETE, OPTIONS)
 32 |    - 不要害怕使用Google,[Google 搜索的力量](http://www.powersearchingwithgoogle.com/)
 33 |    - 看一些和数据结构以及算法有关的书籍
 34 |    - 学习关于认证的基础实现
 35 |    - 面向对象原则等等
 36 | 
 37 | 3. 命令行工具
 38 |    1. [args4j](http://args4j.kohsuke.org/)
 39 |    2. [JCommander](http://jcommander.org/)
 40 |    3. [airline](https://github.com/airlift/airline)
 41 | 
 42 | 4. 网页框架 + 路由
 43 | 
 44 |    1. [Spring](https://spring.io/)
 45 |    2. [Play Framework](https://www.playframework.com/)
 46 |    3. [Spark](http://sparkjava.com/)
 47 |    4. [Jersey](https://jersey.github.io/)
 48 |    5. [nanohttpd](https://github.com/NanoHttpd/nanohttpd)
 49 | 
 50 | 5. 数据库
 51 | 
 52 |    1. 关系型数据库
 53 |       1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017)
 54 |       2. [PostgreSQL](https://www.postgresql.org/)
 55 |       3. [MariaDB](https://mariadb.org/)
 56 |       4. [MySQL](https://www.mysql.com/)
 57 |       5. [Oracle](https://www.oracle.com/database/)
 58 |    2. 云数据库
 59 |       - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db)
 60 |       - [DynamoDB](https://aws.amazon.com/dynamodb/)
 61 |    3. 搜索引擎
 62 |       - [ElasticSearch](https://www.elastic.co/)
 63 |       - [Solr](http://lucene.apache.org/solr/)
 64 |       - [Sphinx](http://sphinxsearch.com/)
 65 |    4. NoSQL
 66 |       - [MongoDB](https://www.monJavadb.com/)
 67 |       - [Redis](https://redis.io/)
 68 |       - [Apache Cassandra](http://cassandra.apache.org/)
 69 |       - [LiteDB](https://github.com/mbdavid/LiteDB)
 70 |       - [RavenDB](https://github.com/ravendb/ravendb)
 71 |       - [CouchDB](http://couchdb.apache.org/)
 72 | 
 73 | 6. 对象关系映射框架(ORMs)
 74 | 
 75 |    1. [Hibernate](https://hibernate.org/)
 76 |    2. [Ebean](https://ebean.io/)
 77 |    3. [BelleORM](https://github.com/codersgarage/BelleORM)
 78 | 
 79 | 7. 高速缓存
 80 | 
 81 |    1. [Caffeine](https://github.com/ben-manes/caffeine)
 82 |    2. [EHCache](http://www.ehcache.org/)
 83 |    3. [Cache2k](https://cache2k.org/)
 84 |    4. 分布式缓存
 85 |       1. [Java-Redis](https://github.com/xetorthio/jedis)
 86 |       2. [Java-Memcached](https://redislabs.com/lp/memcached-java/)
 87 |       3. [Infinispan](http://infinispan.org/)
 88 | 
 89 | 8. 日志
 90 | 
 91 |    1. 日志框架
 92 |       - [Zap](https://github.com/uber-Java/zap)
 93 |       - [TinyLog](http://www.tinylog.org/)
 94 |       - [log4j](https://logging.apache.org/log4j)
 95 |    2. 日志管理系统
 96 |       - [ELK Stack](https://www.elastic.co/what-is/elk-stack)
 97 |       - [Sentry.io](http://sentry.io)
 98 |       - [Loggly.com](https://loggly.com)
 99 |       - [Tracer](https://github.com/zalando/tracer)
100 | 
101 | 9. 实时通信
102 |    1. [Socket.IO](https://socket.io/)
103 |    2. [atmosphere](https://github.com/Atmosphere/atmosphere)
104 |    3. [webbit](https://github.com/webbit/webbit)
105 | 
106 | 10. API 客户端
107 | 
108 |     1. REST
109 |        - [okhttp](https://square.github.io/okhttp/)
110 |        - [retrofit](https://square.github.io/retrofit/)
111 |     2. [GraphQL](https://graphql.org/)
112 | 
113 | 11. 最好知道
114 | 
115 |     - [Beanvalidation](https://beanvalidation.org/)
116 |     - [bouncycastle](https://www.bouncycastle.org/java.html)
117 |     - [gson](https://github.com/google/gson)
118 |     - [Apache Shiro](https://shiro.apache.org/)
119 |     - [JJWT](https://github.com/jwtk/jjwt)
120 |     - [RxJava](https://github.com/ReactiveX/RxJava)
121 | 
122 | 12. 测试
123 | 
124 |     1. 单元、行为、集成和载入测试
125 |        1. [JUnit](http://junit.org/)
126 |        2. [CitrusFramework](https://citrusframework.org/)
127 |        3. [Gatling](https://gatling.io/)
128 |        4. [Tsung](http://tsung.erlang-projects.org/)
129 |        5. [Mockito](https://site.mockito.org/)
130 |        6. [Truth](https://github.com/google/truth)
131 |        7. [Assertj](https://joel-costigliola.github.io/assertj)
132 |        8. [cucumber-jvm](https://github.com/cucumber/cucumber-jvm)
133 |        9. [cukes](https://github.com/ctco/cukes)
134 |        10. [hoverfly-java](https://github.com/SpectoLabs/hoverfly-java)
135 |        11. [rest-assured](https://github.com/rest-assured/rest-assured)
136 |        12. [jbehave](https://jbehave.org/)
137 |        13. [Mockserver](https://www.mock-server.com)
138 | 
139 |     2. 端对端测试
140 |        - [Selenium](https://github.com/tebeka/selenium)
141 | 
142 | 13. 任务调度
143 | 
144 |     - [Aurora](https://aurora.apache.org/)
145 |     - [elasticjob](https://github.com/elasticjob/elastic-job-lite)
146 |     - [Sundial](https://github.com/knowm/Sundial)
147 |     - [cron-utils](https://github.com/jmrozanec/cron-utils)
148 | 
149 | 14. 微服务
150 | 
151 |     1. 消息代理
152 |        - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html)
153 |        - [Apache Kafka](https://www.npmjs.com/package/kafka-node)
154 |        - [ActiveMQ](https://github.com/apache/activemq)
155 |        - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
156 |     2. 消息总线
157 |        - [mbassador](https://github.com/bennidi/mbassador)
158 |        - [rmq](https://github.com/xetorthio/rmq)
159 |     3. 框架
160 |          - [Apollo](https://spotify.github.io/apollo/)
161 |          - [lagom-framework](https://www.lightbend.com/lagom-framework)
162 |          - [micronaut](https://micronaut.io/)
163 |          - [eureka](https://github.com/Netflix/eureka)
164 |          - [helidon](https://helidon.io/#/)
165 |          - [armeria](https://github.com/line/armeria)
166 |     4. RPC
167 |          - [Protocol Buffers](https://github.com/protocolbuffers/protobuf)
168 |          - [gRPC-Java](https://github.com/grpc/grpc-java)
169 |          - [thrift](https://thrift.apache.org/)
170 | 
171 | 15. [Java-模式](https://github.com/iluwatar/java-design-patterns)
172 | 
173 | ## 最后
174 | 
175 | 如果您认为该路线图有待改进,请务必提交PR或者发Issue。当然,我也会持续地改进它,所以你可以给这个仓库点个 Star 以便于再次访问。
176 | 
177 | 想法来源于 : [Golang Developer Roadmap](https://github.com/Alikhll/golang-developer-roadmap)
178 | 
179 | ## 贡献
180 | 
181 | 这个路线图是用 [Draw.io](https://www.draw.io/) 做的。项目文件为该仓库下的 `java-developer-roadmap-zh-CN.xml` 文件。 您如果想要修改它,您可以进入 [Draw.io](https://www.draw.io/) 点击打开已有图表并且选择这个 `xml` 文件。它会为您打开这个路线图。改进它,并且上传,以及更新该 ReadMe 中的对应图片,然后提交 PR(以 400% 的缩放导出 PNG 以及使用 [Compressor.io](https://compressor.io/compress) 来压缩它)。
182 | 
183 | - 用 PR 提交改进
184 | - 在 Issue 中交流想法
185 | - 传播这个图表
186 | 
187 | ## License
188 | 
189 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)


--------------------------------------------------------------------------------
/i18n/zh-CN/java-developer-roadmap-zh-CN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/s4kibs4mi/java-developer-roadmap/54ad6905b192c70616d087b11ce1e56f7a1d93ac/i18n/zh-CN/java-developer-roadmap-zh-CN.png


--------------------------------------------------------------------------------
/i18n/zh-CN/java-developer-roadmap-zh-CN.xml:
--------------------------------------------------------------------------------
1 | <mxfile modified="2021-04-27T07:00:39.880Z" host="app.diagrams.net" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36" etag="dQWiqqrKaIqiZOyRFdfR" version="14.6.6" type="device"><diagram id="MeNSXRW36sjKSdI7cYYw" name="Page-1">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</diagram></mxfile>


--------------------------------------------------------------------------------
/java-developer-roadmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/s4kibs4mi/java-developer-roadmap/54ad6905b192c70616d087b11ce1e56f7a1d93ac/java-developer-roadmap.png


--------------------------------------------------------------------------------
/java-developer-roadmap.xml:
--------------------------------------------------------------------------------
   1 | <mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" version="24.8.6">
   2 |   <diagram id="MeNSXRW36sjKSdI7cYYw" name="Page-1">
   3 |     <mxGraphModel dx="1341" dy="682" 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">
   4 |       <root>
   5 |         <mxCell id="0" />
   6 |         <mxCell id="1" parent="0" />
   7 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-1" value="Java Developer in 2025" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=16;fontStyle=0" parent="1" vertex="1">
   8 |           <mxGeometry x="278.5" width="280" height="30" as="geometry" />
   9 |         </mxCell>
  10 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-2" value="Legends" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=12;" parent="1" vertex="1">
  11 |           <mxGeometry x="684" y="8" width="51" height="20" as="geometry" />
  12 |         </mxCell>
  13 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-3" value="Personal must know" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
  14 |           <mxGeometry x="685" y="40" width="120" height="20" as="geometry" />
  15 |         </mxCell>
  16 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-4" value="Good to know" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
  17 |           <mxGeometry x="685" y="70" width="120" height="20" as="geometry" />
  18 |         </mxCell>
  19 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-5" value="Possibilities" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#CCCCCC;" parent="1" vertex="1">
  20 |           <mxGeometry x="685" y="100" width="120" height="20" as="geometry" />
  21 |         </mxCell>
  22 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-6" value="Learn the Prerequisites" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=10;fontStyle=0" parent="1" vertex="1">
  23 |           <mxGeometry x="255" y="85" width="280" height="15" as="geometry" />
  24 |         </mxCell>
  25 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-7" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-6" target="NU75y0YXBvxGrzugc1HJ-9" edge="1">
  26 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
  27 |             <mxPoint x="275" y="180" as="sourcePoint" />
  28 |             <mxPoint x="365" y="160" as="targetPoint" />
  29 |             <Array as="points">
  30 |               <mxPoint x="395" y="110" />
  31 |               <mxPoint x="419" y="140" />
  32 |             </Array>
  33 |           </mxGeometry>
  34 |         </mxCell>
  35 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-8" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-1" target="NU75y0YXBvxGrzugc1HJ-6" edge="1">
  36 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
  37 |             <mxPoint x="419" y="70" as="sourcePoint" />
  38 |             <mxPoint x="315" y="180" as="targetPoint" />
  39 |             <Array as="points">
  40 |               <mxPoint x="395" y="50" />
  41 |             </Array>
  42 |           </mxGeometry>
  43 |         </mxCell>
  44 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-9" value="Java" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
  45 |           <mxGeometry x="353.5" y="160" width="130" height="20" as="geometry" />
  46 |         </mxCell>
  47 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-10" value="Gradle/Maven, Library" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
  48 |           <mxGeometry x="353.5" y="185" width="130" height="20" as="geometry" />
  49 |         </mxCell>
  50 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-11" value="&lt;span&gt;Learn Java dependency management tool&lt;/span&gt;&lt;br&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  51 |           <mxGeometry x="545" y="155" width="260" height="15" as="geometry" />
  52 |         </mxCell>
  53 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-12" value="semantic versioning" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  54 |           <mxGeometry x="544" y="167" width="260" height="15" as="geometry" />
  55 |         </mxCell>
  56 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-13" value="Version, scripts, repository and other Properties" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  57 |           <mxGeometry x="545" y="180" width="260" height="15" as="geometry" />
  58 |         </mxCell>
  59 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-14" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=1;exitY=0.25;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-10" target="NU75y0YXBvxGrzugc1HJ-11" edge="1">
  60 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
  61 |             <mxPoint x="363.5" y="175" as="sourcePoint" />
  62 |             <mxPoint x="295" y="132.5" as="targetPoint" />
  63 |             <Array as="points">
  64 |               <mxPoint x="505" y="163" />
  65 |             </Array>
  66 |           </mxGeometry>
  67 |         </mxCell>
  68 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-15" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-10" target="NU75y0YXBvxGrzugc1HJ-12" edge="1">
  69 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
  70 |             <mxPoint x="493.5" y="175" as="sourcePoint" />
  71 |             <mxPoint x="555" y="157.5" as="targetPoint" />
  72 |             <Array as="points">
  73 |               <mxPoint x="515" y="175" />
  74 |             </Array>
  75 |           </mxGeometry>
  76 |         </mxCell>
  77 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-16" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=1;exitY=0.75;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-10" target="NU75y0YXBvxGrzugc1HJ-13" edge="1">
  78 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
  79 |             <mxPoint x="503.5" y="185" as="sourcePoint" />
  80 |             <mxPoint x="565" y="167.5" as="targetPoint" />
  81 |             <Array as="points">
  82 |               <mxPoint x="525" y="188" />
  83 |             </Array>
  84 |           </mxGeometry>
  85 |         </mxCell>
  86 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-17" value="Array &amp;amp; ArrayList" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  87 |           <mxGeometry x="2.5" y="139.5" width="260" height="15" as="geometry" />
  88 |         </mxCell>
  89 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-18" value="Pointers, Class, Methods" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  90 |           <mxGeometry x="5" y="153" width="260" height="15" as="geometry" />
  91 |         </mxCell>
  92 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-19" value="Interface" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  93 |           <mxGeometry x="5" y="165" width="260" height="15" as="geometry" />
  94 |         </mxCell>
  95 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-20" value="Thread, Routine" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
  96 |           <mxGeometry x="5" y="177" width="260" height="15" as="geometry" />
  97 |         </mxCell>
  98 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-21" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.25;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-17" edge="1">
  99 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 100 |             <mxPoint x="354" y="165" as="sourcePoint" />
 101 |             <mxPoint x="295" y="107.5" as="targetPoint" />
 102 |             <Array as="points">
 103 |               <mxPoint x="315" y="140" />
 104 |             </Array>
 105 |           </mxGeometry>
 106 |         </mxCell>
 107 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-22" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.25;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-18" edge="1">
 108 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 109 |             <mxPoint x="354" y="165" as="sourcePoint" />
 110 |             <mxPoint x="275" y="157.5" as="targetPoint" />
 111 |             <Array as="points">
 112 |               <mxPoint x="305" y="150" />
 113 |             </Array>
 114 |           </mxGeometry>
 115 |         </mxCell>
 116 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-23" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.5;endFill=0;dashed=1;exitX=0;exitY=0.5;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-19" edge="1">
 117 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 118 |             <mxPoint x="354" y="170" as="sourcePoint" />
 119 |             <mxPoint x="275" y="170.5" as="targetPoint" />
 120 |             <Array as="points">
 121 |               <mxPoint x="305" y="160" />
 122 |             </Array>
 123 |           </mxGeometry>
 124 |         </mxCell>
 125 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-24" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.75;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-20" edge="1">
 126 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 127 |             <mxPoint x="354" y="175" as="sourcePoint" />
 128 |             <mxPoint x="285" y="180.5" as="targetPoint" />
 129 |             <Array as="points">
 130 |               <mxPoint x="305" y="170" />
 131 |             </Array>
 132 |           </mxGeometry>
 133 |         </mxCell>
 134 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-25" value="GIT" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
 135 |           <mxGeometry x="32" y="304" width="260" height="15" as="geometry" />
 136 |         </mxCell>
 137 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-26" value="HTTP/HTTPS" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
 138 |           <mxGeometry x="32" y="319" width="260" height="15" as="geometry" />
 139 |         </mxCell>
 140 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-27" value="Data Structures and Algorithms" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
 141 |           <mxGeometry x="31" y="334" width="260" height="15" as="geometry" />
 142 |         </mxCell>
 143 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-28" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.25;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-261" target="NU75y0YXBvxGrzugc1HJ-25" edge="1">
 144 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 145 |             <mxPoint x="360.5" y="219" as="sourcePoint" />
 146 |             <mxPoint x="272" y="241.5" as="targetPoint" />
 147 |             <Array as="points">
 148 |               <mxPoint x="352" y="304" />
 149 |             </Array>
 150 |           </mxGeometry>
 151 |         </mxCell>
 152 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-29" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.25;endFill=0;dashed=1;entryX=1;entryY=0.5;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-261" target="NU75y0YXBvxGrzugc1HJ-26" edge="1">
 153 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 154 |             <mxPoint x="395.5" y="354" as="sourcePoint" />
 155 |             <mxPoint x="302" y="334" as="targetPoint" />
 156 |             <Array as="points">
 157 |               <mxPoint x="352" y="319" />
 158 |             </Array>
 159 |           </mxGeometry>
 160 |         </mxCell>
 161 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-30" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.5;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-261" edge="1">
 162 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 163 |             <mxPoint x="395.5" y="366.5" as="sourcePoint" />
 164 |             <mxPoint x="292" y="342" as="targetPoint" />
 165 |             <Array as="points">
 166 |               <mxPoint x="342" y="324" />
 167 |             </Array>
 168 |           </mxGeometry>
 169 |         </mxCell>
 170 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-31" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.631;exitY=1.033;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-33" target="NU75y0YXBvxGrzugc1HJ-34" edge="1">
 171 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 172 |             <mxPoint x="664" y="870.5" as="sourcePoint" />
 173 |             <mxPoint x="694" y="923.5" as="targetPoint" />
 174 |             <Array as="points">
 175 |               <mxPoint x="677" y="883" />
 176 |               <mxPoint x="720" y="883" />
 177 |               <mxPoint x="704" y="913.5" />
 178 |             </Array>
 179 |           </mxGeometry>
 180 |         </mxCell>
 181 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-32" value="Caching" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 182 |           <mxGeometry x="654" y="751.1666666666665" width="110" height="20" as="geometry" />
 183 |         </mxCell>
 184 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-33" value="Distributed Cache" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 185 |           <mxGeometry x="632.5" y="832.5" width="70" height="25" as="geometry" />
 186 |         </mxCell>
 187 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-34" value="&lt;pre&gt;&lt;span&gt;Java-Memcached&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 188 |           <mxGeometry x="655.5" y="898.1666666666665" width="100" height="15" as="geometry" />
 189 |         </mxCell>
 190 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-35" value="&lt;pre&gt;&lt;span&gt;Java-Redis&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 191 |           <mxGeometry x="540.5" y="898.1666666666665" width="100" height="15" as="geometry" />
 192 |         </mxCell>
 193 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-36" value="Web Frameworks + Routers" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 194 |           <mxGeometry x="506" y="495" width="100" height="30" as="geometry" />
 195 |         </mxCell>
 196 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-37" value="Databases" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 197 |           <mxGeometry x="177.5" y="582.5" width="70" height="20" as="geometry" />
 198 |         </mxCell>
 199 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-38" value="Relational" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 200 |           <mxGeometry x="113" y="482" width="110" height="20" as="geometry" />
 201 |         </mxCell>
 202 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-39" value="SQL Server" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 203 |           <mxGeometry x="18" y="412" width="65" height="15" as="geometry" />
 204 |         </mxCell>
 205 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-40" value="MySql" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 206 |           <mxGeometry x="93" y="412" width="65" height="15" as="geometry" />
 207 |         </mxCell>
 208 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-41" value="MariaDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
 209 |           <mxGeometry x="168" y="412" width="65" height="15" as="geometry" />
 210 |         </mxCell>
 211 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-42" value="PostgreSQL&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 212 |           <mxGeometry x="243" y="412" width="65" height="15" as="geometry" />
 213 |         </mxCell>
 214 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-43" value="Cloud Databases" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 215 |           <mxGeometry x="171.5" y="529" width="110" height="20" as="geometry" />
 216 |         </mxCell>
 217 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-44" value="Azure CosmosDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 218 |           <mxGeometry x="313.5" y="464.5" width="90" height="15" as="geometry" />
 219 |         </mxCell>
 220 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-45" value="Amazon DynamoDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 221 |           <mxGeometry x="313.5" y="489.5" width="90" height="35" as="geometry" />
 222 |         </mxCell>
 223 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-46" value="Testing" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 224 |           <mxGeometry x="325.5" y="1345" width="70" height="20" as="geometry" />
 225 |         </mxCell>
 226 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-47" value="API Clients&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 227 |           <mxGeometry x="553.5" y="1119.8333333333333" width="70" height="20" as="geometry" />
 228 |         </mxCell>
 229 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-48" value="Task Scheduling" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 230 |           <mxGeometry x="535.5" y="1542" width="130" height="20" as="geometry" />
 231 |         </mxCell>
 232 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-49" value="Log Frameworks&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 233 |           <mxGeometry x="248.5" y="921" width="130" height="20" as="geometry" />
 234 |         </mxCell>
 235 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-50" value="NoSQL" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 236 |           <mxGeometry x="35" y="622.5" width="80" height="20" as="geometry" />
 237 |         </mxCell>
 238 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-51" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-249" edge="1">
 239 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 240 |             <mxPoint x="481.2108403120819" y="615.3433612483277" as="sourcePoint" />
 241 |             <mxPoint x="445" y="1820" as="targetPoint" />
 242 |             <Array as="points">
 243 |               <mxPoint x="455" y="560" />
 244 |               <mxPoint x="435" y="670" />
 245 |               <mxPoint x="495" y="930" />
 246 |               <mxPoint x="425" y="1250" />
 247 |               <mxPoint x="495" y="1580" />
 248 |             </Array>
 249 |           </mxGeometry>
 250 |         </mxCell>
 251 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-52" value="" style="curved=1;endArrow=none;html=1;dashed=1;fontFamily=Verdana;fontSize=14;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
 252 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 253 |             <mxPoint x="445" y="1820" as="sourcePoint" />
 254 |             <mxPoint x="515" y="1900" as="targetPoint" />
 255 |             <Array as="points">
 256 |               <mxPoint x="425" y="1890" />
 257 |             </Array>
 258 |           </mxGeometry>
 259 |         </mxCell>
 260 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-53" value="Keep Learning :)" style="text;html=1;strokeColor=#000000;fillColor=#FFFFCC;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=1;comic=0;fontFamily=Verdana;fontSize=14;labelBorderColor=none;glass=0;arcSize=50;perimeterSpacing=1;" parent="1" vertex="1">
 261 |           <mxGeometry x="435.5" y="1900" width="147" height="28" as="geometry" />
 262 |         </mxCell>
 263 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-54" value="MongoDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 264 |           <mxGeometry x="146" y="710" width="100" height="15" as="geometry" />
 265 |         </mxCell>
 266 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-55" value="Redis" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 267 |           <mxGeometry x="146" y="730" width="100" height="15" as="geometry" />
 268 |         </mxCell>
 269 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-56" value="Clickhouse" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 270 |           <mxGeometry x="146" y="750" width="100" height="15" as="geometry" />
 271 |         </mxCell>
 272 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-57" value="Apache Cassandra" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#ffff66;" parent="1" vertex="1">
 273 |           <mxGeometry x="146" y="770" width="100" height="15" as="geometry" />
 274 |         </mxCell>
 275 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-58" value="InfluxDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 276 |           <mxGeometry x="146" y="790" width="100" height="15" as="geometry" />
 277 |         </mxCell>
 278 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-59" value="&lt;pre&gt;&lt;span&gt;okhttp&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 279 |           <mxGeometry x="539" y="1166.5" width="82" height="15" as="geometry" />
 280 |         </mxCell>
 281 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-60" value="&lt;pre&gt;log4j&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 282 |           <mxGeometry x="207.5" y="1005.5" width="65" height="15" as="geometry" />
 283 |         </mxCell>
 284 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-61" value="&lt;pre&gt;&lt;span&gt;Zap&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
 285 |           <mxGeometry x="287" y="1005.5" width="65" height="15" as="geometry" />
 286 |         </mxCell>
 287 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-62" value="Unit Testing" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 288 |           <mxGeometry x="318" y="1213" width="85" height="20" as="geometry" />
 289 |         </mxCell>
 290 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-63" value="&lt;pre&gt;&lt;span&gt;JUnit&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 291 |           <mxGeometry x="70.5" y="1204.5" width="65" height="15" as="geometry" />
 292 |         </mxCell>
 293 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-64" value="&lt;pre&gt;&lt;span&gt;Citrus Framework&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 294 |           <mxGeometry x="50" y="1228" width="86" height="15" as="geometry" />
 295 |         </mxCell>
 296 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-66" value="Integration Testing" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 297 |           <mxGeometry x="130" y="1350" width="120" height="20" as="geometry" />
 298 |         </mxCell>
 299 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-67" value="wiremock" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 300 |           <mxGeometry x="31" y="1390" width="103" height="20" as="geometry" />
 301 |         </mxCell>
 302 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-68" value="E2E Testing" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 303 |           <mxGeometry x="310.5" y="1459" width="85" height="20" as="geometry" />
 304 |         </mxCell>
 305 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-70" value="&lt;pre&gt;&lt;span&gt;cron-utils&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 306 |           <mxGeometry x="704.5" y="1527" width="80" height="15" as="geometry" />
 307 |         </mxCell>
 308 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-71" value="&lt;pre&gt;&lt;span&gt;Aurora&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 309 |           <mxGeometry x="704.5" y="1547" width="80" height="15" as="geometry" />
 310 |         </mxCell>
 311 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-72" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=0.5;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-36" target="NU75y0YXBvxGrzugc1HJ-224" edge="1">
 312 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 313 |             <mxPoint x="351.33333333333326" y="624.8333333333334" as="sourcePoint" />
 314 |             <mxPoint x="328" y="724.8333333333333" as="targetPoint" />
 315 |             <Array as="points">
 316 |               <mxPoint x="485" y="530" />
 317 |             </Array>
 318 |           </mxGeometry>
 319 |         </mxCell>
 320 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-73" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 321 |           <mxGeometry x="430" y="663" width="23" height="23" as="geometry" />
 322 |         </mxCell>
 323 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-74" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 324 |           <mxGeometry x="444" y="783.5" width="23" height="23" as="geometry" />
 325 |         </mxCell>
 326 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-75" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 327 |           <mxGeometry x="466" y="877.5" width="23" height="23" as="geometry" />
 328 |         </mxCell>
 329 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-76" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 330 |           <mxGeometry x="434" y="1167" width="23" height="23" as="geometry" />
 331 |         </mxCell>
 332 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-77" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 333 |           <mxGeometry x="434" y="1295" width="23" height="23" as="geometry" />
 334 |         </mxCell>
 335 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-78" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 336 |           <mxGeometry x="458.5" y="1546" width="23" height="23" as="geometry" />
 337 |         </mxCell>
 338 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-79" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-73" edge="1">
 339 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 340 |             <mxPoint x="365.33333333333326" y="587" as="sourcePoint" />
 341 |             <mxPoint x="248" y="593" as="targetPoint" />
 342 |             <Array as="points">
 343 |               <mxPoint x="405" y="619" />
 344 |               <mxPoint x="335" y="619" />
 345 |               <mxPoint x="285" y="619" />
 346 |             </Array>
 347 |           </mxGeometry>
 348 |         </mxCell>
 349 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-80" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=0.25;endFill=0;entryX=0.5;entryY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-37" target="NU75y0YXBvxGrzugc1HJ-38" edge="1">
 350 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 351 |             <mxPoint x="-134.16666666666674" y="625.8333333333333" as="sourcePoint" />
 352 |             <mxPoint x="59.5" y="567.5" as="targetPoint" />
 353 |             <Array as="points">
 354 |               <mxPoint x="125" y="570" />
 355 |             </Array>
 356 |           </mxGeometry>
 357 |         </mxCell>
 358 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-81" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.75;exitY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryX=0.432;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-37" target="NU75y0YXBvxGrzugc1HJ-43" edge="1">
 359 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 360 |             <mxPoint x="-21.666666666666742" y="681" as="sourcePoint" />
 361 |             <mxPoint x="215" y="540" as="targetPoint" />
 362 |             <Array as="points">
 363 |               <mxPoint x="230" y="570" />
 364 |               <mxPoint x="213" y="560" />
 365 |             </Array>
 366 |           </mxGeometry>
 367 |         </mxCell>
 368 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-82" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;entryX=0.5;entryY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.15;exitY=1.075;exitDx=0;exitDy=0;entryDx=0;entryDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-37" target="NU75y0YXBvxGrzugc1HJ-50" edge="1">
 369 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 370 |             <mxPoint x="-37.5" y="592.5" as="sourcePoint" />
 371 |             <mxPoint x="-42.5" y="697.5" as="targetPoint" />
 372 |             <Array as="points">
 373 |               <mxPoint x="155" y="623" />
 374 |               <mxPoint x="115" y="580" />
 375 |               <mxPoint x="85" y="598" />
 376 |             </Array>
 377 |           </mxGeometry>
 378 |         </mxCell>
 379 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-83" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=1;endFill=0;dashed=1;exitX=0.25;exitY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-38" target="NU75y0YXBvxGrzugc1HJ-39" edge="1">
 380 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 381 |             <mxPoint x="108" y="462" as="sourcePoint" />
 382 |             <mxPoint x="42.83333333333326" y="454.83333333333326" as="targetPoint" />
 383 |             <Array as="points">
 384 |               <mxPoint x="138" y="462" />
 385 |               <mxPoint x="50" y="452" />
 386 |             </Array>
 387 |           </mxGeometry>
 388 |         </mxCell>
 389 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-84" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=1;endFill=0;dashed=1;exitX=0.4;exitY=0.05;exitPerimeter=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-38" target="NU75y0YXBvxGrzugc1HJ-40" edge="1">
 390 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 391 |             <mxPoint x="150.33333333333326" y="492.33333333333326" as="sourcePoint" />
 392 |             <mxPoint x="60.33333333333326" y="437" as="targetPoint" />
 393 |             <Array as="points">
 394 |               <mxPoint x="158" y="462" />
 395 |               <mxPoint x="126" y="452" />
 396 |             </Array>
 397 |           </mxGeometry>
 398 |         </mxCell>
 399 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-85" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=1;endFill=0;dashed=1;exitX=0.6;exitY=0.083;exitPerimeter=0;endSize=6;startSize=6;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-38" target="NU75y0YXBvxGrzugc1HJ-41" edge="1">
 400 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 401 |             <mxPoint x="178.33333333333326" y="492.33333333333326" as="sourcePoint" />
 402 |             <mxPoint x="135.66666666666674" y="437" as="targetPoint" />
 403 |             <Array as="points">
 404 |               <mxPoint x="179" y="462" />
 405 |               <mxPoint x="200" y="452" />
 406 |             </Array>
 407 |           </mxGeometry>
 408 |         </mxCell>
 409 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-86" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=1;endFill=0;dashed=1;exitX=0.75;exitY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-38" target="NU75y0YXBvxGrzugc1HJ-42" edge="1">
 410 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 411 |             <mxPoint x="218" y="472" as="sourcePoint" />
 412 |             <mxPoint x="210.33333333333326" y="437" as="targetPoint" />
 413 |             <Array as="points">
 414 |               <mxPoint x="210" y="452" />
 415 |               <mxPoint x="268" y="452" />
 416 |             </Array>
 417 |           </mxGeometry>
 418 |         </mxCell>
 419 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-87" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=0.75;exitY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-43" target="NU75y0YXBvxGrzugc1HJ-44" edge="1">
 420 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 421 |             <mxPoint x="198.66666666666674" y="504.33333333333326" as="sourcePoint" />
 422 |             <mxPoint x="278.66666666666674" y="449" as="targetPoint" />
 423 |             <Array as="points">
 424 |               <mxPoint x="213.5" y="484.5" />
 425 |             </Array>
 426 |           </mxGeometry>
 427 |         </mxCell>
 428 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-88" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=1;exitY=0.25;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-43" target="NU75y0YXBvxGrzugc1HJ-45" edge="1">
 429 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 430 |             <mxPoint x="171.16666666666674" y="474.83333333333326" as="sourcePoint" />
 431 |             <mxPoint x="251.16666666666674" y="419.5" as="targetPoint" />
 432 |             <Array as="points">
 433 |               <mxPoint x="283.5" y="506.5" />
 434 |             </Array>
 435 |           </mxGeometry>
 436 |         </mxCell>
 437 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-89" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;entryX=1;entryY=0;endFill=0;exitX=0;exitY=0.5;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-32" target="NU75y0YXBvxGrzugc1HJ-74" edge="1">
 438 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 439 |             <mxPoint x="335" y="750" as="sourcePoint" />
 440 |             <mxPoint x="377.33333333333326" y="747.8333333333333" as="targetPoint" />
 441 |             <Array as="points">
 442 |               <mxPoint x="595" y="750" />
 443 |               <mxPoint x="545" y="740" />
 444 |               <mxPoint x="505" y="740" />
 445 |             </Array>
 446 |           </mxGeometry>
 447 |         </mxCell>
 448 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-90" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-32" target="NU75y0YXBvxGrzugc1HJ-33" edge="1">
 449 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 450 |             <mxPoint x="676.5" y="896" as="sourcePoint" />
 451 |             <mxPoint x="614" y="903.5" as="targetPoint" />
 452 |             <Array as="points">
 453 |               <mxPoint x="709" y="803.5" />
 454 |             </Array>
 455 |           </mxGeometry>
 456 |         </mxCell>
 457 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-91" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;entryX=0.375;entryY=0.994;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.437;exitY=0.011;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-35" target="NU75y0YXBvxGrzugc1HJ-33" edge="1">
 458 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 459 |             <mxPoint x="802.3333333333333" y="1066" as="sourcePoint" />
 460 |             <mxPoint x="713" y="931.2142857142858" as="targetPoint" />
 461 |             <Array as="points">
 462 |               <mxPoint x="630" y="893" />
 463 |               <mxPoint x="620" y="863" />
 464 |             </Array>
 465 |           </mxGeometry>
 466 |         </mxCell>
 467 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-92" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=0.5;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-47" target="NU75y0YXBvxGrzugc1HJ-76" edge="1">
 468 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 469 |             <mxPoint x="267.83333333333326" y="1090.1666666666667" as="sourcePoint" />
 470 |             <mxPoint x="421.83333333333326" y="1053.5" as="targetPoint" />
 471 |             <Array as="points">
 472 |               <mxPoint x="515" y="1130" />
 473 |               <mxPoint x="495" y="1190" />
 474 |             </Array>
 475 |           </mxGeometry>
 476 |         </mxCell>
 477 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-93" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=1;exitY=0.5;entryX=0;entryY=0.25;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-59" target="NU75y0YXBvxGrzugc1HJ-134" edge="1">
 478 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 479 |             <mxPoint x="533" y="987.1666666666667" as="sourcePoint" />
 480 |             <mxPoint x="540.3333333333335" y="927.1666666666667" as="targetPoint" />
 481 |             <Array as="points">
 482 |               <mxPoint x="620.5" y="1172" />
 483 |               <mxPoint x="660.5" y="1172" />
 484 |             </Array>
 485 |           </mxGeometry>
 486 |         </mxCell>
 487 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-94" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=0.927;exitY=1.142;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-50" target="NU75y0YXBvxGrzugc1HJ-54" edge="1">
 488 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 489 |             <mxPoint x="106" y="684.5" as="sourcePoint" />
 490 |             <mxPoint x="436.33333333333326" y="792.1666666666667" as="targetPoint" />
 491 |             <Array as="points">
 492 |               <mxPoint x="106" y="736.5" />
 493 |             </Array>
 494 |           </mxGeometry>
 495 |         </mxCell>
 496 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-95" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=0.635;exitY=1.017;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-50" target="NU75y0YXBvxGrzugc1HJ-56" edge="1">
 497 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 498 |             <mxPoint x="86" y="684.5" as="sourcePoint" />
 499 |             <mxPoint x="156.33333333333326" y="746.8333333333333" as="targetPoint" />
 500 |             <Array as="points">
 501 |               <mxPoint x="76" y="764.5" />
 502 |             </Array>
 503 |           </mxGeometry>
 504 |         </mxCell>
 505 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-96" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-58" edge="1">
 506 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 507 |             <mxPoint x="65" y="643" as="sourcePoint" />
 508 |             <mxPoint x="156.33333333333326" y="766.8333333333333" as="targetPoint" />
 509 |             <Array as="points">
 510 |               <mxPoint x="56" y="804.5" />
 511 |             </Array>
 512 |           </mxGeometry>
 513 |         </mxCell>
 514 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-97" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=0.5;exitY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-50" target="NU75y0YXBvxGrzugc1HJ-57" edge="1">
 515 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 516 |             <mxPoint x="76" y="684.5" as="sourcePoint" />
 517 |             <mxPoint x="156.33333333333326" y="826.8333333333333" as="targetPoint" />
 518 |             <Array as="points">
 519 |               <mxPoint x="66" y="784.5" />
 520 |             </Array>
 521 |           </mxGeometry>
 522 |         </mxCell>
 523 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-98" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;exitX=0.75;exitY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-50" target="NU75y0YXBvxGrzugc1HJ-55" edge="1">
 524 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 525 |             <mxPoint x="96" y="684.5" as="sourcePoint" />
 526 |             <mxPoint x="156.33333333333326" y="786.8333333333333" as="targetPoint" />
 527 |             <Array as="points">
 528 |               <mxPoint x="86" y="744.5" />
 529 |             </Array>
 530 |           </mxGeometry>
 531 |         </mxCell>
 532 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-99" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=1;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-75" target="NU75y0YXBvxGrzugc1HJ-49" edge="1">
 533 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 534 |             <mxPoint x="520.8333333333333" y="916.1666666666667" as="sourcePoint" />
 535 |             <mxPoint x="674.8333333333333" y="879.5" as="targetPoint" />
 536 |             <Array as="points">
 537 |               <mxPoint x="445" y="910" />
 538 |             </Array>
 539 |           </mxGeometry>
 540 |         </mxCell>
 541 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-100" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=0;endFill=0;dashed=1;exitX=0.25;exitY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-49" target="NU75y0YXBvxGrzugc1HJ-60" edge="1">
 542 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 543 |             <mxPoint x="78.16666666666674" y="1042.6666666666667" as="sourcePoint" />
 544 |             <mxPoint x="250.83333333333326" y="1142.6666666666667" as="targetPoint" />
 545 |             <Array as="points">
 546 |               <mxPoint x="275" y="970" />
 547 |               <mxPoint x="255" y="988" />
 548 |             </Array>
 549 |           </mxGeometry>
 550 |         </mxCell>
 551 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-101" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=0;endFill=0;dashed=1;exitX=0.578;exitY=1.136;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-49" target="NU75y0YXBvxGrzugc1HJ-61" edge="1">
 552 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 553 |             <mxPoint x="259.5" y="982.5" as="sourcePoint" />
 554 |             <mxPoint x="219.5" y="1042.5" as="targetPoint" />
 555 |             <Array as="points">
 556 |               <mxPoint x="305" y="970" />
 557 |               <mxPoint x="319" y="991" />
 558 |             </Array>
 559 |           </mxGeometry>
 560 |         </mxCell>
 561 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-102" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-77" target="NU75y0YXBvxGrzugc1HJ-46" edge="1">
 562 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 563 |             <mxPoint x="434.014348102899" y="1356.925717405145" as="sourcePoint" />
 564 |             <mxPoint x="311.66666666666674" y="1103.3333333333333" as="targetPoint" />
 565 |             <Array as="points">
 566 |               <mxPoint x="425" y="1355" />
 567 |             </Array>
 568 |           </mxGeometry>
 569 |         </mxCell>
 570 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-103" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-62" target="NU75y0YXBvxGrzugc1HJ-46" edge="1">
 571 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 572 |             <mxPoint x="446.5" y="1201.1666666666667" as="sourcePoint" />
 573 |             <mxPoint x="543.1666666666667" y="1247.8333333333333" as="targetPoint" />
 574 |             <Array as="points">
 575 |               <mxPoint x="325.5" y="1270" />
 576 |               <mxPoint x="385.5" y="1300" />
 577 |             </Array>
 578 |           </mxGeometry>
 579 |         </mxCell>
 580 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-104" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-46" target="NU75y0YXBvxGrzugc1HJ-68" edge="1">
 581 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 582 |             <mxPoint x="269.5" y="1213.6666666666667" as="sourcePoint" />
 583 |             <mxPoint x="337.5" y="1477" as="targetPoint" />
 584 |             <Array as="points">
 585 |               <mxPoint x="375" y="1401" />
 586 |               <mxPoint x="333" y="1420" />
 587 |             </Array>
 588 |           </mxGeometry>
 589 |         </mxCell>
 590 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-105" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.25;exitY=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-46" target="NU75y0YXBvxGrzugc1HJ-66" edge="1">
 591 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 592 |             <mxPoint x="279.5" y="1223.6666666666667" as="sourcePoint" />
 593 |             <mxPoint x="245.5" y="1433" as="targetPoint" />
 594 |             <Array as="points">
 595 |               <mxPoint x="335" y="1421" />
 596 |               <mxPoint x="275" y="1401" />
 597 |             </Array>
 598 |           </mxGeometry>
 599 |         </mxCell>
 600 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-106" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-66" target="NU75y0YXBvxGrzugc1HJ-67" edge="1">
 601 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 602 |             <mxPoint x="175.5" y="1444" as="sourcePoint" />
 603 |             <mxPoint x="655" y="1502.5" as="targetPoint" />
 604 |             <Array as="points">
 605 |               <mxPoint x="185.5" y="1490" />
 606 |             </Array>
 607 |           </mxGeometry>
 608 |         </mxCell>
 609 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-107" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-63" edge="1">
 610 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 611 |             <mxPoint x="165" y="1260" as="sourcePoint" />
 612 |             <mxPoint x="133" y="1190.5" as="targetPoint" />
 613 |             <Array as="points">
 614 |               <mxPoint x="165" y="1221" />
 615 |             </Array>
 616 |           </mxGeometry>
 617 |         </mxCell>
 618 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-110" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-48" target="NU75y0YXBvxGrzugc1HJ-162" edge="1">
 619 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 620 |             <mxPoint x="505" y="1590" as="sourcePoint" />
 621 |             <mxPoint x="445" y="1500" as="targetPoint" />
 622 |             <Array as="points">
 623 |               <mxPoint x="495" y="1570" />
 624 |               <mxPoint x="515" y="1630" />
 625 |             </Array>
 626 |           </mxGeometry>
 627 |         </mxCell>
 628 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-111" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.25;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-70" edge="1">
 629 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 630 |             <mxPoint x="639.1666666666667" y="1655" as="sourcePoint" />
 631 |             <mxPoint x="665" y="1544" as="targetPoint" />
 632 |             <Array as="points">
 633 |               <mxPoint x="685" y="1531" />
 634 |             </Array>
 635 |           </mxGeometry>
 636 |         </mxCell>
 637 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-112" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-71" target="NU75y0YXBvxGrzugc1HJ-48" edge="1">
 638 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 639 |             <mxPoint x="622" y="1598.3333333333333" as="sourcePoint" />
 640 |             <mxPoint x="685" y="1560" as="targetPoint" />
 641 |             <Array as="points" />
 642 |           </mxGeometry>
 643 |         </mxCell>
 644 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-113" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/logotypes/32/github-128.png;rounded=1;glass=0;comic=0;strokeColor=#000000;fillColor=#FFFFFF;fontFamily=Verdana;fontSize=14;align=center;" parent="1" vertex="1">
 645 |           <mxGeometry x="25" y="10" width="20" height="20" as="geometry" />
 646 |         </mxCell>
 647 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-114" value="s4kibs4mi/java-developer-roadmap" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
 648 |           <mxGeometry x="47.5" y="12.5" width="260" height="15" as="geometry" />
 649 |         </mxCell>
 650 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-115" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.5;entryX=1;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-261" edge="1">
 651 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 652 |             <mxPoint x="405.66666666666674" y="354.33333333333337" as="sourcePoint" />
 653 |             <mxPoint x="292.19047619047615" y="356.5238095238095" as="targetPoint" />
 654 |             <Array as="points">
 655 |               <mxPoint x="342" y="334" />
 656 |             </Array>
 657 |           </mxGeometry>
 658 |         </mxCell>
 659 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-116" value="Good to Know Libraries" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 660 |           <mxGeometry x="563.5" y="1279" width="130" height="20" as="geometry" />
 661 |         </mxCell>
 662 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-117" value="&lt;pre&gt;&lt;span&gt;beanvalidation&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#fad7ac;strokeColor=#000000;arcSize=0;" parent="1" vertex="1">
 663 |           <mxGeometry x="705" y="1323" width="86" height="15" as="geometry" />
 664 |         </mxCell>
 665 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-118" value="&lt;pre&gt;&lt;span&gt;bouncycastle&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#fad7ac;strokeColor=#000000;" parent="1" vertex="1">
 666 |           <mxGeometry x="704.5" y="1342.5" width="71" height="15" as="geometry" />
 667 |         </mxCell>
 668 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-119" value="&lt;pre&gt;&lt;span&gt;gson&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#fad7ac;strokeColor=#000000;" parent="1" vertex="1">
 669 |           <mxGeometry x="704.5" y="1363.5" width="69" height="15" as="geometry" />
 670 |         </mxCell>
 671 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-120" value="&lt;pre&gt;&lt;span&gt;shiro&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 672 |           <mxGeometry x="704.5" y="1385.5" width="69" height="15" as="geometry" />
 673 |         </mxCell>
 674 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-121" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 675 |           <mxGeometry x="452.5" y="1431" width="23" height="23" as="geometry" />
 676 |         </mxCell>
 677 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-122" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0;exitY=0.75;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryX=0.848;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-116" target="NU75y0YXBvxGrzugc1HJ-121" edge="1">
 678 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 679 |             <mxPoint x="285" y="1270.5" as="sourcePoint" />
 680 |             <mxPoint x="465" y="1365" as="targetPoint" />
 681 |             <Array as="points">
 682 |               <mxPoint x="515" y="1310" />
 683 |               <mxPoint x="525" y="1420" />
 684 |             </Array>
 685 |           </mxGeometry>
 686 |         </mxCell>
 687 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-123" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;entryX=0.867;entryY=1.016;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-116" edge="1">
 688 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 689 |             <mxPoint x="705" y="1330" as="sourcePoint" />
 690 |             <mxPoint x="750.7931034482758" y="1283.7241379310346" as="targetPoint" />
 691 |             <Array as="points">
 692 |               <mxPoint x="675" y="1330" />
 693 |             </Array>
 694 |           </mxGeometry>
 695 |         </mxCell>
 696 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-124" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;entryX=0.75;entryY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-118" target="NU75y0YXBvxGrzugc1HJ-116" edge="1">
 697 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 698 |             <mxPoint x="585.5" y="1316.5" as="sourcePoint" />
 699 |             <mxPoint x="680.5" y="1290" as="targetPoint" />
 700 |             <Array as="points">
 701 |               <mxPoint x="675" y="1350" />
 702 |               <mxPoint x="665" y="1320" />
 703 |             </Array>
 704 |           </mxGeometry>
 705 |         </mxCell>
 706 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-125" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;entryX=0.658;entryY=1.016;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-119" target="NU75y0YXBvxGrzugc1HJ-116" edge="1">
 707 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 708 |             <mxPoint x="585.5" y="1336.5" as="sourcePoint" />
 709 |             <mxPoint x="703" y="1279.5" as="targetPoint" />
 710 |             <Array as="points">
 711 |               <mxPoint x="640" y="1360" />
 712 |             </Array>
 713 |           </mxGeometry>
 714 |         </mxCell>
 715 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-126" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;entryX=0.5;entryY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-120" target="NU75y0YXBvxGrzugc1HJ-116" edge="1">
 716 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 717 |             <mxPoint x="595.5" y="1346.5" as="sourcePoint" />
 718 |             <mxPoint x="724" y="1299.5" as="targetPoint" />
 719 |             <Array as="points">
 720 |               <mxPoint x="665" y="1390" />
 721 |               <mxPoint x="625" y="1340" />
 722 |             </Array>
 723 |           </mxGeometry>
 724 |         </mxCell>
 725 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-127" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 726 |           <mxGeometry x="445.5" y="1745.5" width="23" height="23" as="geometry" />
 727 |         </mxCell>
 728 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-128" value="Java Patterns" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 729 |           <mxGeometry x="493.5" y="1717" width="70" height="29" as="geometry" />
 730 |         </mxCell>
 731 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-129" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=1;entryX=1;entryY=1;endArrow=none;endFill=0;jettySize=auto;orthogonalLoop=1;strokeColor=#000000;fillColor=#FFFFFF;fontFamily=Verdana;fontSize=8;" parent="1" edge="1">
 732 |           <mxGeometry relative="1" as="geometry">
 733 |             <mxPoint x="485" y="971" as="sourcePoint" />
 734 |             <mxPoint x="485" y="971" as="targetPoint" />
 735 |           </mxGeometry>
 736 |         </mxCell>
 737 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-130" value="&lt;pre&gt;&lt;span&gt;Caffeine&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 738 |           <mxGeometry x="528.5" y="839.5" width="80" height="16" as="geometry" />
 739 |         </mxCell>
 740 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-131" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;entryX=0.354;entryY=1.05;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-116" edge="1">
 741 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 742 |             <mxPoint x="705" y="1413" as="sourcePoint" />
 743 |             <mxPoint x="729.5" y="1290.5" as="targetPoint" />
 744 |             <Array as="points">
 745 |               <mxPoint x="665" y="1410" />
 746 |               <mxPoint x="635" y="1390" />
 747 |               <mxPoint x="605" y="1330" />
 748 |             </Array>
 749 |           </mxGeometry>
 750 |         </mxCell>
 751 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-132" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0.25;exitY=1;entryX=0.5;entryY=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-32" target="NU75y0YXBvxGrzugc1HJ-130" edge="1">
 752 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 753 |             <mxPoint x="739" y="818.5" as="sourcePoint" />
 754 |             <mxPoint x="624" y="836" as="targetPoint" />
 755 |             <Array as="points">
 756 |               <mxPoint x="682" y="803.5" />
 757 |               <mxPoint x="600" y="823" />
 758 |             </Array>
 759 |           </mxGeometry>
 760 |         </mxCell>
 761 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-133" value="Creational&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
 762 |           <mxGeometry x="675" y="1676" width="110" height="15" as="geometry" />
 763 |         </mxCell>
 764 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-134" value="REST" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 765 |           <mxGeometry x="673" y="1166.3333333333333" width="70" height="20" as="geometry" />
 766 |         </mxCell>
 767 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-135" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=1;exitY=0.75;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-47" edge="1">
 768 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 769 |             <mxPoint x="883" y="1143" as="sourcePoint" />
 770 |             <mxPoint x="718" y="1166" as="targetPoint" />
 771 |             <Array as="points">
 772 |               <mxPoint x="658" y="1150" />
 773 |               <mxPoint x="718" y="1136" />
 774 |             </Array>
 775 |           </mxGeometry>
 776 |         </mxCell>
 777 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-136" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=1;exitY=0.25;entryX=0.5;entryY=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-47" target="NU75y0YXBvxGrzugc1HJ-149" edge="1">
 778 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 779 |             <mxPoint x="830.5" y="1153" as="sourcePoint" />
 780 |             <mxPoint x="753" y="1200" as="targetPoint" />
 781 |             <Array as="points">
 782 |               <mxPoint x="704.5" y="1129.5" />
 783 |             </Array>
 784 |           </mxGeometry>
 785 |         </mxCell>
 786 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-137" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-133" edge="1">
 787 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 788 |             <mxPoint x="412.8333333333335" y="1682.8333333333335" as="sourcePoint" />
 789 |             <mxPoint x="563.5" y="1738.5" as="targetPoint" />
 790 |             <Array as="points">
 791 |               <mxPoint x="657.5" y="1684.5" />
 792 |               <mxPoint x="631.5" y="1728.5" />
 793 |             </Array>
 794 |           </mxGeometry>
 795 |         </mxCell>
 796 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-138" value="&lt;pre&gt;&lt;span&gt;RxJava&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 797 |           <mxGeometry x="704.5" y="1407.5" width="69" height="15" as="geometry" />
 798 |         </mxCell>
 799 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-139" value="Exception handling" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
 800 |           <mxGeometry x="5" y="190" width="258" height="15" as="geometry" />
 801 |         </mxCell>
 802 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-140" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
 803 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 804 |             <mxPoint x="355" y="180" as="sourcePoint" />
 805 |             <mxPoint x="265" y="200" as="targetPoint" />
 806 |             <Array as="points">
 807 |               <mxPoint x="325" y="180" />
 808 |               <mxPoint x="295" y="190" />
 809 |             </Array>
 810 |           </mxGeometry>
 811 |         </mxCell>
 812 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-141" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;endFill=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-37" target="NU75y0YXBvxGrzugc1HJ-142" edge="1">
 813 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 814 |             <mxPoint x="-17.5" y="605" as="sourcePoint" />
 815 |             <mxPoint x="99.5" y="667.5" as="targetPoint" />
 816 |             <Array as="points">
 817 |               <mxPoint x="235" y="630" />
 818 |               <mxPoint x="205" y="650" />
 819 |             </Array>
 820 |           </mxGeometry>
 821 |         </mxCell>
 822 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-142" value="Search Engines" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 823 |           <mxGeometry x="162.5" y="664" width="110" height="20" as="geometry" />
 824 |         </mxCell>
 825 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-143" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-144" edge="1">
 826 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 827 |             <mxPoint x="271" y="680" as="sourcePoint" />
 828 |             <mxPoint x="365.5" y="664" as="targetPoint" />
 829 |             <Array as="points">
 830 |               <mxPoint x="285.5" y="670.5" />
 831 |               <mxPoint x="335.5" y="663" />
 832 |             </Array>
 833 |           </mxGeometry>
 834 |         </mxCell>
 835 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-144" value="ElasticSearch" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 836 |           <mxGeometry x="295.5" y="663" width="90" height="15" as="geometry" />
 837 |         </mxCell>
 838 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-145" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;entryX=0.1;entryY=0.167;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-146" edge="1">
 839 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 840 |             <mxPoint x="271" y="680" as="sourcePoint" />
 841 |             <mxPoint x="355.5" y="698.5" as="targetPoint" />
 842 |             <Array as="points" />
 843 |           </mxGeometry>
 844 |         </mxCell>
 845 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-146" value="Opensearch" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 846 |           <mxGeometry x="295.5" y="690" width="90" height="15" as="geometry" />
 847 |         </mxCell>
 848 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-147" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-148" edge="1">
 849 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 850 |             <mxPoint x="270" y="690" as="sourcePoint" />
 851 |             <mxPoint x="335.5" y="737.5" as="targetPoint" />
 852 |             <Array as="points">
 853 |               <mxPoint x="283" y="729" />
 854 |             </Array>
 855 |           </mxGeometry>
 856 |         </mxCell>
 857 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-148" value="Algolia" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
 858 |           <mxGeometry x="295.5" y="717.5" width="90" height="15" as="geometry" />
 859 |         </mxCell>
 860 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-149" value="GraphQL" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 861 |           <mxGeometry x="669" y="1086.8333333333333" width="70" height="20" as="geometry" />
 862 |         </mxCell>
 863 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-150" value="MicroServices" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
 864 |           <mxGeometry x="288.5" y="1662.5" width="74" height="20" as="geometry" />
 865 |         </mxCell>
 866 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-151" value="Message-Broker" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
 867 |           <mxGeometry x="230" y="1602" width="105" height="20" as="geometry" />
 868 |         </mxCell>
 869 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-152" value="RabbitMQ" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
 870 |           <mxGeometry x="56" y="1576.5" width="87" height="15" as="geometry" />
 871 |         </mxCell>
 872 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-153" value="Apache Kafka" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 873 |           <mxGeometry x="57" y="1604.5" width="87" height="15" as="geometry" />
 874 |         </mxCell>
 875 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-154" value="ActiveMQ&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
 876 |           <mxGeometry x="56" y="1631.5" width="88" height="15" as="geometry" />
 877 |         </mxCell>
 878 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-155" value="Message-Bus" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
 879 |           <mxGeometry x="40" y="1704.5" width="120" height="20" as="geometry" />
 880 |         </mxCell>
 881 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-156" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-78" target="NU75y0YXBvxGrzugc1HJ-150" edge="1">
 882 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 883 |             <mxPoint x="331.5" y="1632" as="sourcePoint" />
 884 |             <mxPoint x="193.66666666666674" y="1530.3333333333333" as="targetPoint" />
 885 |             <Array as="points">
 886 |               <mxPoint x="425" y="1570" />
 887 |               <mxPoint x="405" y="1650" />
 888 |             </Array>
 889 |           </mxGeometry>
 890 |         </mxCell>
 891 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-157" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.635;exitY=0.979;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-151" target="NU75y0YXBvxGrzugc1HJ-150" edge="1">
 892 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 893 |             <mxPoint x="162.5" y="1703" as="sourcePoint" />
 894 |             <mxPoint x="365.66666666666674" y="1693.3333333333333" as="targetPoint" />
 895 |             <Array as="points">
 896 |               <mxPoint x="284" y="1641" />
 897 |               <mxPoint x="325" y="1651" />
 898 |             </Array>
 899 |           </mxGeometry>
 900 |         </mxCell>
 901 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-158" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=1;entryY=0.5;endFill=0;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-150" target="NU75y0YXBvxGrzugc1HJ-155" edge="1">
 902 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 903 |             <mxPoint x="102" y="1669.1666666666667" as="sourcePoint" />
 904 |             <mxPoint x="198.66666666666674" y="1715.8333333333333" as="targetPoint" />
 905 |             <Array as="points">
 906 |               <mxPoint x="295" y="1731" />
 907 |               <mxPoint x="195" y="1691" />
 908 |             </Array>
 909 |           </mxGeometry>
 910 |         </mxCell>
 911 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-159" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.75;endFill=0;dashed=1;exitX=0.124;exitY=-0.021;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-151" target="NU75y0YXBvxGrzugc1HJ-152" edge="1">
 912 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 913 |             <mxPoint x="365" y="1672" as="sourcePoint" />
 914 |             <mxPoint x="404.83333333333326" y="1790.833333333333" as="targetPoint" />
 915 |             <Array as="points">
 916 |               <mxPoint x="205" y="1588" />
 917 |               <mxPoint x="175" y="1591" />
 918 |             </Array>
 919 |           </mxGeometry>
 920 |         </mxCell>
 921 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-160" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.75;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-153" edge="1">
 922 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 923 |             <mxPoint x="225" y="1608" as="sourcePoint" />
 924 |             <mxPoint x="429.83333333333326" y="1779.833333333333" as="targetPoint" />
 925 |             <Array as="points">
 926 |               <mxPoint x="181.5" y="1608" />
 927 |             </Array>
 928 |           </mxGeometry>
 929 |         </mxCell>
 930 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-161" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.75;endFill=0;dashed=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-151" target="NU75y0YXBvxGrzugc1HJ-154" edge="1">
 931 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 932 |             <mxPoint x="335" y="1725.5" as="sourcePoint" />
 933 |             <mxPoint x="480" y="1709.6666666666667" as="targetPoint" />
 934 |             <Array as="points">
 935 |               <mxPoint x="171" y="1643" />
 936 |             </Array>
 937 |           </mxGeometry>
 938 |         </mxCell>
 939 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-162" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
 940 |           <mxGeometry x="458" y="1655.5" width="23" height="23" as="geometry" />
 941 |         </mxCell>
 942 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-163" value="Mocking" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFF66;fontFamily=Verdana;fontSize=10;" parent="1" vertex="1">
 943 |           <mxGeometry x="213.5" y="1129.5" width="68" height="20" as="geometry" />
 944 |         </mxCell>
 945 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-164" value="" style="endArrow=none;dashed=1;html=1;fontFamily=Verdana;fontSize=10;elbow=vertical;exitX=0.012;exitY=0.067;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;curved=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-62" target="NU75y0YXBvxGrzugc1HJ-163" edge="1">
 946 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 947 |             <mxPoint x="542.5" y="1231.1666666666667" as="sourcePoint" />
 948 |             <mxPoint x="582.5" y="1254" as="targetPoint" />
 949 |             <Array as="points">
 950 |               <mxPoint x="325" y="1181" />
 951 |               <mxPoint x="281" y="1161" />
 952 |             </Array>
 953 |           </mxGeometry>
 954 |         </mxCell>
 955 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-165" value="" style="endArrow=none;dashed=1;html=1;fontFamily=Verdana;fontSize=10;entryX=1;entryY=0.75;entryDx=0;entryDy=0;curved=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-62" target="NU75y0YXBvxGrzugc1HJ-167" edge="1">
 956 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 957 |             <mxPoint x="325.5" y="1214" as="sourcePoint" />
 958 |             <mxPoint x="612.5" y="1201" as="targetPoint" />
 959 |             <Array as="points">
 960 |               <mxPoint x="296" y="1228" />
 961 |             </Array>
 962 |           </mxGeometry>
 963 |         </mxCell>
 964 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-166" style="edgeStyle=none;rounded=0;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;jettySize=auto;orthogonalLoop=1;fontFamily=Verdana;fontSize=10;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
 965 |           <mxGeometry relative="1" as="geometry">
 966 |             <mxPoint x="483" y="1127.6666666666667" as="sourcePoint" />
 967 |             <mxPoint x="483" y="1127.6666666666667" as="targetPoint" />
 968 |           </mxGeometry>
 969 |         </mxCell>
 970 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-167" value="Frameworks&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFF66;fontFamily=Verdana;fontSize=10;" parent="1" vertex="1">
 971 |           <mxGeometry x="213.5" y="1209" width="77" height="19" as="geometry" />
 972 |         </mxCell>
 973 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-168" value="&lt;pre&gt;&lt;span&gt;Mockito&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
 974 |           <mxGeometry x="71.5" y="1133" width="65" height="15" as="geometry" />
 975 |         </mxCell>
 976 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-169" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-163" target="NU75y0YXBvxGrzugc1HJ-168" edge="1">
 977 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 978 |             <mxPoint x="636.3275862068967" y="1171.344827586207" as="sourcePoint" />
 979 |             <mxPoint x="133.5" y="1140" as="targetPoint" />
 980 |             <Array as="points" />
 981 |           </mxGeometry>
 982 |         </mxCell>
 983 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-171" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.325;entryY=0.098;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-155" target="NU75y0YXBvxGrzugc1HJ-172" edge="1">
 984 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
 985 |             <mxPoint x="414.5" y="1818.5" as="sourcePoint" />
 986 |             <mxPoint x="508.5" y="1797.5" as="targetPoint" />
 987 |             <Array as="points">
 988 |               <mxPoint x="85" y="1741" />
 989 |               <mxPoint x="68" y="1751" />
 990 |             </Array>
 991 |           </mxGeometry>
 992 |         </mxCell>
 993 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-172" value="&lt;pre&gt;&lt;span&gt;mbassador&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
 994 |           <mxGeometry x="34.5" y="1764.5" width="103" height="20" as="geometry" />
 995 |         </mxCell>
 996 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-179" value="Assertion" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFF66;fontFamily=Verdana;fontSize=10;" parent="1" vertex="1">
 997 |           <mxGeometry x="230" y="1269" width="68" height="20" as="geometry" />
 998 |         </mxCell>
 999 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-180" value="" style="endArrow=none;dashed=1;html=1;fontFamily=Verdana;fontSize=10;elbow=vertical;entryX=1;entryY=0.5;entryDx=0;entryDy=0;curved=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-62" target="NU75y0YXBvxGrzugc1HJ-179" edge="1">
1000 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1001 |             <mxPoint x="345.5" y="1246" as="sourcePoint" />
1002 |             <mxPoint x="585" y="1309.5" as="targetPoint" />
1003 |             <Array as="points">
1004 |               <mxPoint x="305.5" y="1240" />
1005 |               <mxPoint x="315.5" y="1270" />
1006 |             </Array>
1007 |           </mxGeometry>
1008 |         </mxCell>
1009 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-181" value="Structrul" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1010 |           <mxGeometry x="675" y="1701.5" width="110" height="15" as="geometry" />
1011 |         </mxCell>
1012 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-182" value="Behavioral" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1013 |           <mxGeometry x="675" y="1725.5" width="110" height="15" as="geometry" />
1014 |         </mxCell>
1015 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-183" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=1.006;exitY=0.94;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-128" target="NU75y0YXBvxGrzugc1HJ-181" edge="1">
1016 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1017 |             <mxPoint x="621.166666666667" y="1746.166666666667" as="sourcePoint" />
1018 |             <mxPoint x="702" y="1772.5" as="targetPoint" />
1019 |             <Array as="points">
1020 |               <mxPoint x="661.5" y="1731.5" />
1021 |             </Array>
1022 |           </mxGeometry>
1023 |         </mxCell>
1024 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-184" value="synchronization" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
1025 |           <mxGeometry x="675.5" y="1749.5" width="110" height="15" as="geometry" />
1026 |         </mxCell>
1027 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-185" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0.971;exitY=1.086;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-128" target="NU75y0YXBvxGrzugc1HJ-182" edge="1">
1028 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1029 |             <mxPoint x="598.8333333333335" y="1755.8333333333335" as="sourcePoint" />
1030 |             <mxPoint x="678.8333333333335" y="1760" as="targetPoint" />
1031 |             <Array as="points">
1032 |               <mxPoint x="637.5" y="1748.5" />
1033 |             </Array>
1034 |           </mxGeometry>
1035 |         </mxCell>
1036 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-186" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0.826;exitY=1.086;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-128" target="NU75y0YXBvxGrzugc1HJ-184" edge="1">
1037 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1038 |             <mxPoint x="551.3333333333335" y="1768.666666666667" as="sourcePoint" />
1039 |             <mxPoint x="675.5" y="1761.5" as="targetPoint" />
1040 |             <Array as="points">
1041 |               <mxPoint x="621.5" y="1772.5" />
1042 |               <mxPoint x="647.5" y="1748.5" />
1043 |             </Array>
1044 |           </mxGeometry>
1045 |         </mxCell>
1046 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-187" value="Concurrency" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
1047 |           <mxGeometry x="675" y="1775.5" width="111" height="15" as="geometry" />
1048 |         </mxCell>
1049 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-188" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=0.681;exitY=1.011;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-128" edge="1">
1050 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1051 |             <mxPoint x="558.8333333333335" y="1802.166666666667" as="sourcePoint" />
1052 |             <mxPoint x="675.5" y="1783.5" as="targetPoint" />
1053 |             <Array as="points">
1054 |               <mxPoint x="621.5" y="1792.5" />
1055 |               <mxPoint x="657.5" y="1772.5" />
1056 |             </Array>
1057 |           </mxGeometry>
1058 |         </mxCell>
1059 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-189" value="Apache Pulsar" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
1060 |           <mxGeometry x="56" y="1656.5" width="88" height="15" as="geometry" />
1061 |         </mxCell>
1062 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-190" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.25;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-151" target="NU75y0YXBvxGrzugc1HJ-189" edge="1">
1063 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1064 |             <mxPoint x="225" y="1621" as="sourcePoint" />
1065 |             <mxPoint x="414.5" y="1743" as="targetPoint" />
1066 |             <Array as="points">
1067 |               <mxPoint x="215" y="1661" />
1068 |             </Array>
1069 |           </mxGeometry>
1070 |         </mxCell>
1071 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-191" value="Log Management System&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
1072 |           <mxGeometry x="98" y="864" width="153" height="20" as="geometry" />
1073 |         </mxCell>
1074 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-192" value="" style="endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;curved=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-49" target="NU75y0YXBvxGrzugc1HJ-191" edge="1">
1075 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1076 |             <mxPoint x="215" y="960" as="sourcePoint" />
1077 |             <mxPoint x="257.5" y="935" as="targetPoint" />
1078 |             <Array as="points">
1079 |               <mxPoint x="225" y="931" />
1080 |             </Array>
1081 |           </mxGeometry>
1082 |         </mxCell>
1083 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-193" value="ELK Stack" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1084 |           <mxGeometry x="40.5" y="921" width="90" height="14" as="geometry" />
1085 |         </mxCell>
1086 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-199" value="CouchDB" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
1087 |           <mxGeometry x="146" y="810" width="100" height="15" as="geometry" />
1088 |         </mxCell>
1089 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-200" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-199" edge="1">
1090 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1091 |             <mxPoint x="56" y="645" as="sourcePoint" />
1092 |             <mxPoint x="156.33333333333326" y="786.8333333333333" as="targetPoint" />
1093 |             <Array as="points">
1094 |               <mxPoint x="45" y="825" />
1095 |             </Array>
1096 |           </mxGeometry>
1097 |         </mxCell>
1098 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-201" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
1099 |           <mxGeometry x="461" y="998" width="23" height="23" as="geometry" />
1100 |         </mxCell>
1101 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-202" value="" style="endArrow=none;html=1;strokeColor=#6C8EBF;curved=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-203" target="NU75y0YXBvxGrzugc1HJ-201" edge="1">
1102 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1103 |             <mxPoint x="545" y="1030" as="sourcePoint" />
1104 |             <mxPoint x="450.2758620689656" y="1034.0344827586207" as="targetPoint" />
1105 |             <Array as="points" />
1106 |           </mxGeometry>
1107 |         </mxCell>
1108 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-203" value="&lt;font style=&quot;font-size: 10px&quot;&gt;Real-Time Communication&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFF66;fontFamily=Verdana;" parent="1" vertex="1">
1109 |           <mxGeometry x="537.5" y="999" width="86" height="34" as="geometry" />
1110 |         </mxCell>
1111 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-204" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#6C8EBF;fontFamily=Verdana;curved=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-205" edge="1">
1112 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1113 |             <mxPoint x="622.5" y="985" as="sourcePoint" />
1114 |             <mxPoint x="624" y="1016" as="targetPoint" />
1115 |             <Array as="points">
1116 |               <mxPoint x="663" y="1002" />
1117 |             </Array>
1118 |           </mxGeometry>
1119 |         </mxCell>
1120 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-205" value="&lt;pre&gt;&lt;span&gt;webbit&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1121 |           <mxGeometry x="682.5" y="990.5" width="100" height="15" as="geometry" />
1122 |         </mxCell>
1123 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-206" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1124 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1125 |             <mxPoint x="425" y="240" as="sourcePoint" />
1126 |             <mxPoint x="482" y="349" as="targetPoint" />
1127 |             <Array as="points">
1128 |               <mxPoint x="425" y="290" />
1129 |               <mxPoint x="480" y="320" />
1130 |             </Array>
1131 |           </mxGeometry>
1132 |         </mxCell>
1133 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-207" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=0;exitY=0.25;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;" parent="1" edge="1">
1134 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1135 |             <mxPoint x="354" y="165" as="sourcePoint" />
1136 |             <mxPoint x="263" y="130" as="targetPoint" />
1137 |             <Array as="points">
1138 |               <mxPoint x="311" y="130" />
1139 |             </Array>
1140 |           </mxGeometry>
1141 |         </mxCell>
1142 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-208" value="Variables, Constants, Types, Function, Packages, etc" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1143 |           <mxGeometry y="122.5" width="260" height="15" as="geometry" />
1144 |         </mxCell>
1145 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-209" value="&lt;pre&gt;&lt;span&gt;Spring&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFFF66;" parent="1" vertex="1">
1146 |           <mxGeometry x="637" y="389.5" width="96" height="20" as="geometry" />
1147 |         </mxCell>
1148 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-210" value="" style="endArrow=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.669;entryY=-0.033;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;entryPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-209" target="NU75y0YXBvxGrzugc1HJ-36" edge="1">
1149 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1150 |             <mxPoint x="465.5" y="544.5" as="sourcePoint" />
1151 |             <mxPoint x="515.5" y="494.5" as="targetPoint" />
1152 |             <Array as="points">
1153 |               <mxPoint x="588" y="459.5" />
1154 |             </Array>
1155 |           </mxGeometry>
1156 |         </mxCell>
1157 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-211" value="&lt;pre&gt;&lt;span&gt;Play Framework&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1158 |           <mxGeometry x="690" y="434.5" width="96" height="20" as="geometry" />
1159 |         </mxCell>
1160 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-212" value="" style="endArrow=none;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.944;entryY=0.033;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;entryPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-211" target="NU75y0YXBvxGrzugc1HJ-36" edge="1">
1161 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1162 |             <mxPoint x="405.1379310344828" y="419.25862068965523" as="sourcePoint" />
1163 |             <mxPoint x="481" y="539.2586206896551" as="targetPoint" />
1164 |             <Array as="points">
1165 |               <mxPoint x="665" y="470" />
1166 |               <mxPoint x="625" y="470" />
1167 |             </Array>
1168 |           </mxGeometry>
1169 |         </mxCell>
1170 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-213" value="&lt;pre&gt;&lt;span&gt;Spark&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1171 |           <mxGeometry x="710.5" y="479.5" width="99" height="20" as="geometry" />
1172 |         </mxCell>
1173 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-214" value="" style="endArrow=none;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;" parent="1" source="NU75y0YXBvxGrzugc1HJ-213" target="NU75y0YXBvxGrzugc1HJ-36" edge="1">
1174 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1175 |             <mxPoint x="384.7068965517242" y="458.6034482758621" as="sourcePoint" />
1176 |             <mxPoint x="500.5689655172414" y="539.2931034482758" as="targetPoint" />
1177 |             <Array as="points">
1178 |               <mxPoint x="685" y="490" />
1179 |               <mxPoint x="648" y="499.5" />
1180 |               <mxPoint x="625" y="512" />
1181 |             </Array>
1182 |           </mxGeometry>
1183 |         </mxCell>
1184 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-215" value="&lt;pre&gt;dropwizard&lt;br&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1185 |           <mxGeometry x="690.5" y="525" width="99" height="20" as="geometry" />
1186 |         </mxCell>
1187 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-216" value="" style="endArrow=none;html=1;curved=1;strokeColor=#6C8EBF;dashed=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-215" target="NU75y0YXBvxGrzugc1HJ-36" edge="1">
1188 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1189 |             <mxPoint x="695" y="535" as="sourcePoint" />
1190 |             <mxPoint x="588" y="527.5" as="targetPoint" />
1191 |             <Array as="points">
1192 |               <mxPoint x="665" y="540" />
1193 |               <mxPoint x="638" y="534.5" />
1194 |               <mxPoint x="615" y="520" />
1195 |             </Array>
1196 |           </mxGeometry>
1197 |         </mxCell>
1198 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-217" value="&lt;pre&gt;&lt;span&gt;nanohttpd&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1199 |           <mxGeometry x="637" y="562.5" width="99" height="20" as="geometry" />
1200 |         </mxCell>
1201 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-218" value="" style="endArrow=none;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-217" target="NU75y0YXBvxGrzugc1HJ-36" edge="1">
1202 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1203 |             <mxPoint x="407.5689655172414" y="572.1896551724137" as="sourcePoint" />
1204 |             <mxPoint x="510.5" y="524.5" as="targetPoint" />
1205 |             <Array as="points">
1206 |               <mxPoint x="608" y="559.5" />
1207 |               <mxPoint x="625" y="540" />
1208 |             </Array>
1209 |           </mxGeometry>
1210 |         </mxCell>
1211 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-219" value="&lt;pre&gt;&lt;span&gt;TinyLog&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1212 |           <mxGeometry x="362" y="1005.5" width="65" height="15" as="geometry" />
1213 |         </mxCell>
1214 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-220" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=0.5;entryY=0;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;exitX=0.794;exitY=1.008;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-49" target="NU75y0YXBvxGrzugc1HJ-219" edge="1">
1215 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1216 |             <mxPoint x="324.5" y="973.5" as="sourcePoint" />
1217 |             <mxPoint x="335.18965517241395" y="1043.1551724137933" as="targetPoint" />
1218 |             <Array as="points">
1219 |               <mxPoint x="345" y="970" />
1220 |               <mxPoint x="385" y="980" />
1221 |               <mxPoint x="394.5" y="990.5" />
1222 |             </Array>
1223 |           </mxGeometry>
1224 |         </mxCell>
1225 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-221" value="&lt;pre&gt;&lt;span&gt;retrofit&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1226 |           <mxGeometry x="538.5" y="1191" width="82" height="15" as="geometry" />
1227 |         </mxCell>
1228 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-222" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;exitX=1;exitY=0.5;entryX=0.107;entryY=0.933;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-221" target="NU75y0YXBvxGrzugc1HJ-134" edge="1">
1229 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1230 |             <mxPoint x="630.5" y="1179.7241379310346" as="sourcePoint" />
1231 |             <mxPoint x="682.9137931034484" y="1181.103448275862" as="targetPoint" />
1232 |             <Array as="points">
1233 |               <mxPoint x="630.5" y="1185" />
1234 |               <mxPoint x="660.5" y="1195" />
1235 |             </Array>
1236 |           </mxGeometry>
1237 |         </mxCell>
1238 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-223" value="&lt;pre&gt;&lt;span&gt;Assertj&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1239 |           <mxGeometry x="60.5" y="1254" width="65" height="15" as="geometry" />
1240 |         </mxCell>
1241 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-224" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
1242 |           <mxGeometry x="443" y="502" width="23" height="23" as="geometry" />
1243 |         </mxCell>
1244 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-225" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-224" edge="1">
1245 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1246 |             <mxPoint x="469" y="410" as="sourcePoint" />
1247 |             <mxPoint x="445" y="1820" as="targetPoint" />
1248 |             <Array as="points" />
1249 |           </mxGeometry>
1250 |         </mxCell>
1251 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-228" style="edgeStyle=none;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;dashed=1;jettySize=auto;orthogonalLoop=1;strokeColor=#6C8EBF;fontSize=9;" parent="1" source="NU75y0YXBvxGrzugc1HJ-151" target="NU75y0YXBvxGrzugc1HJ-151" edge="1">
1252 |           <mxGeometry relative="1" as="geometry" />
1253 |         </mxCell>
1254 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-229" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-128" target="NU75y0YXBvxGrzugc1HJ-127" edge="1">
1255 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1256 |             <mxPoint x="559.1034482758623" y="1653.2586206896553" as="sourcePoint" />
1257 |             <mxPoint x="472.2068965517242" y="1728.4310344827586" as="targetPoint" />
1258 |             <Array as="points">
1259 |               <mxPoint x="485" y="1770" />
1260 |             </Array>
1261 |           </mxGeometry>
1262 |         </mxCell>
1263 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-232" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-64" edge="1">
1264 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1265 |             <mxPoint x="163.5" y="1256" as="sourcePoint" />
1266 |             <mxPoint x="134.16666666666652" y="1226.952380952381" as="targetPoint" />
1267 |             <Array as="points">
1268 |               <mxPoint x="155" y="1235" />
1269 |             </Array>
1270 |           </mxGeometry>
1271 |         </mxCell>
1272 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-233" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontStyle=1" parent="1" target="NU75y0YXBvxGrzugc1HJ-223" edge="1">
1273 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1274 |             <mxPoint x="165" y="1260" as="sourcePoint" />
1275 |             <mxPoint x="147.66666666666652" y="1263.952380952381" as="targetPoint" />
1276 |             <Array as="points">
1277 |               <mxPoint x="155" y="1281" />
1278 |             </Array>
1279 |           </mxGeometry>
1280 |         </mxCell>
1281 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-234" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;strokeWidth=1;dashed=1;" parent="1" edge="1">
1282 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1283 |             <mxPoint x="186" y="1261" as="sourcePoint" />
1284 |             <mxPoint x="165" y="1259.5" as="targetPoint" />
1285 |             <Array as="points" />
1286 |           </mxGeometry>
1287 |         </mxCell>
1288 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-235" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=-0.023;entryY=0.433;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-167" edge="1">
1289 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1290 |             <mxPoint x="185" y="1261" as="sourcePoint" />
1291 |             <mxPoint x="171.6111111111111" y="1212.4444444444443" as="targetPoint" />
1292 |             <Array as="points">
1293 |               <mxPoint x="201" y="1221.5" />
1294 |             </Array>
1295 |           </mxGeometry>
1296 |         </mxCell>
1297 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-236" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-179" edge="1">
1298 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1299 |             <mxPoint x="185" y="1261" as="sourcePoint" />
1300 |             <mxPoint x="221.72222222222217" y="1227.2222222222222" as="targetPoint" />
1301 |             <Array as="points">
1302 |               <mxPoint x="205" y="1279" />
1303 |             </Array>
1304 |           </mxGeometry>
1305 |         </mxCell>
1306 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-237" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1307 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1308 |             <mxPoint x="355" y="220" as="sourcePoint" />
1309 |             <mxPoint x="275" y="240" as="targetPoint" />
1310 |             <Array as="points">
1311 |               <mxPoint x="335" y="220" />
1312 |               <mxPoint x="305" y="230" />
1313 |             </Array>
1314 |           </mxGeometry>
1315 |         </mxCell>
1316 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-238" value="SQL fundamentals" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
1317 |           <mxGeometry x="353" y="210" width="130" height="20" as="geometry" />
1318 |         </mxCell>
1319 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-239" value="Basic Sql Syntax" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1320 |           <mxGeometry x="13.5" y="234" width="258" height="15" as="geometry" />
1321 |         </mxCell>
1322 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-240" value="Scrum, Kanban or other project strategies" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1323 |           <mxGeometry x="31" y="348" width="260" height="15" as="geometry" />
1324 |         </mxCell>
1325 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-241" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#6C8EBF;fontFamily=Verdana;curved=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-242" edge="1">
1326 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1327 |             <mxPoint x="625.5" y="959.5" as="sourcePoint" />
1328 |             <mxPoint x="627" y="1000" as="targetPoint" />
1329 |             <Array as="points">
1330 |               <mxPoint x="666" y="976.5" />
1331 |             </Array>
1332 |           </mxGeometry>
1333 |         </mxCell>
1334 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-242" value="&lt;pre&gt;&lt;span&gt;atmosphere&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1335 |           <mxGeometry x="685.5" y="965" width="100" height="15" as="geometry" />
1336 |         </mxCell>
1337 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-243" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1338 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1339 |             <mxPoint x="355" y="1480" as="sourcePoint" />
1340 |             <mxPoint x="325" y="1540" as="targetPoint" />
1341 |             <Array as="points">
1342 |               <mxPoint x="345.5" y="1512" />
1343 |             </Array>
1344 |           </mxGeometry>
1345 |         </mxCell>
1346 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-244" value="Selenium" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1347 |           <mxGeometry x="255" y="1539.5" width="80" height="15" as="geometry" />
1348 |         </mxCell>
1349 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-245" value="Messaging" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
1350 |           <mxGeometry x="669" y="1803" width="111" height="15" as="geometry" />
1351 |         </mxCell>
1352 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-246" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1353 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1354 |             <mxPoint x="545" y="1750" as="sourcePoint" />
1355 |             <mxPoint x="669.5" y="1811" as="targetPoint" />
1356 |             <Array as="points">
1357 |               <mxPoint x="615.5" y="1820" />
1358 |               <mxPoint x="651.5" y="1800" />
1359 |             </Array>
1360 |           </mxGeometry>
1361 |         </mxCell>
1362 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-247" value="Stability" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;strokeColor=#000000;" parent="1" vertex="1">
1363 |           <mxGeometry x="669" y="1834.5" width="111" height="15" as="geometry" />
1364 |         </mxCell>
1365 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-248" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1366 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1367 |             <mxPoint x="545" y="1750" as="sourcePoint" />
1368 |             <mxPoint x="669.5" y="1842.5" as="targetPoint" />
1369 |             <Array as="points">
1370 |               <mxPoint x="615.5" y="1851.5" />
1371 |               <mxPoint x="651.5" y="1831.5" />
1372 |             </Array>
1373 |           </mxGeometry>
1374 |         </mxCell>
1375 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-249" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
1376 |           <mxGeometry x="435.5" y="582.5" width="23" height="23" as="geometry" />
1377 |         </mxCell>
1378 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-250" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-224" target="NU75y0YXBvxGrzugc1HJ-249" edge="1">
1379 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1380 |             <mxPoint x="455" y="525" as="sourcePoint" />
1381 |             <mxPoint x="445" y="1820" as="targetPoint" />
1382 |             <Array as="points" />
1383 |           </mxGeometry>
1384 |         </mxCell>
1385 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-251" value="&lt;pre&gt;&lt;span&gt;Ebean&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1386 |           <mxGeometry x="675.5" y="677.5" width="96" height="20" as="geometry" />
1387 |         </mxCell>
1388 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-252" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;entryX=1;entryY=0.5;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;entryDx=0;entryDy=0;" parent="1" edge="1">
1389 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1390 |             <mxPoint x="495" y="625.1666666666667" as="sourcePoint" />
1391 |             <mxPoint x="454" y="605.5" as="targetPoint" />
1392 |             <Array as="points">
1393 |               <mxPoint x="473" y="621.5" />
1394 |             </Array>
1395 |           </mxGeometry>
1396 |         </mxCell>
1397 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-253" value="" style="endArrow=none;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;" parent="1" edge="1">
1398 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1399 |             <mxPoint x="689.5" y="621" as="sourcePoint" />
1400 |             <mxPoint x="584.5" y="629" as="targetPoint" />
1401 |             <Array as="points">
1402 |               <mxPoint x="663.5" y="616" />
1403 |               <mxPoint x="626.5" y="625.5" />
1404 |               <mxPoint x="603.5" y="638" />
1405 |             </Array>
1406 |           </mxGeometry>
1407 |         </mxCell>
1408 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-254" value="&lt;pre&gt;&lt;span&gt;Hibernate&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFFF66;" parent="1" vertex="1">
1409 |           <mxGeometry x="682" y="612.5" width="96" height="20" as="geometry" />
1410 |         </mxCell>
1411 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-255" value="ORMs" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
1412 |           <mxGeometry x="495" y="617.5" width="100" height="30" as="geometry" />
1413 |         </mxCell>
1414 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-256" value="" style="endArrow=none;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.95;entryY=1.05;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;entryPerimeter=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-255" edge="1">
1415 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1416 |             <mxPoint x="695.5" y="673" as="sourcePoint" />
1417 |             <mxPoint x="590.5" y="681" as="targetPoint" />
1418 |             <Array as="points">
1419 |               <mxPoint x="669.5" y="668" />
1420 |               <mxPoint x="632.5" y="677.5" />
1421 |             </Array>
1422 |           </mxGeometry>
1423 |         </mxCell>
1424 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-257" value="&lt;span&gt;Basic Authentication, OAuth, JWT, etc&amp;nbsp;&lt;/span&gt;&lt;br&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1425 |           <mxGeometry x="625" y="290.5" width="260" height="15" as="geometry" />
1426 |         </mxCell>
1427 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-258" value="SOLID, YAGNI, KISS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1428 |           <mxGeometry x="624" y="302.5" width="260" height="15" as="geometry" />
1429 |         </mxCell>
1430 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-259" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=1;exitY=0.25;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-257" edge="1">
1431 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1432 |             <mxPoint x="564" y="325.5" as="sourcePoint" />
1433 |             <mxPoint x="375" y="268" as="targetPoint" />
1434 |             <Array as="points">
1435 |               <mxPoint x="585" y="298.5" />
1436 |             </Array>
1437 |           </mxGeometry>
1438 |         </mxCell>
1439 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-260" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="NU75y0YXBvxGrzugc1HJ-258" edge="1">
1440 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1441 |             <mxPoint x="564" y="330.5" as="sourcePoint" />
1442 |             <mxPoint x="635" y="293" as="targetPoint" />
1443 |             <Array as="points">
1444 |               <mxPoint x="595" y="310.5" />
1445 |             </Array>
1446 |           </mxGeometry>
1447 |         </mxCell>
1448 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-261" value="General Development Skills" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
1449 |           <mxGeometry x="395.5" y="321" width="170" height="20" as="geometry" />
1450 |         </mxCell>
1451 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-262" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.628;exitY=1.025;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
1452 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1453 |             <mxPoint x="245" y="1748" as="sourcePoint" />
1454 |             <mxPoint x="185" y="1805" as="targetPoint" />
1455 |             <Array as="points">
1456 |               <mxPoint x="215.5" y="1801.5" />
1457 |             </Array>
1458 |           </mxGeometry>
1459 |         </mxCell>
1460 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-263" value="&lt;pre&gt;&lt;span&gt;Apollo&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1461 |           <mxGeometry x="135" y="1806" width="69" height="15" as="geometry" />
1462 |         </mxCell>
1463 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-264" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="1" edge="1">
1464 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1465 |             <mxPoint x="244.5" y="1757" as="sourcePoint" />
1466 |             <mxPoint x="202" y="1832" as="targetPoint" />
1467 |             <Array as="points">
1468 |               <mxPoint x="252.5" y="1822" />
1469 |             </Array>
1470 |           </mxGeometry>
1471 |         </mxCell>
1472 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-265" value="&lt;pre&gt;&lt;span&gt;micronaut&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1473 |           <mxGeometry x="169" y="1829" width="65" height="15" as="geometry" />
1474 |         </mxCell>
1475 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-266" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1476 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1477 |             <mxPoint x="354" y="160" as="sourcePoint" />
1478 |             <mxPoint x="263" y="116" as="targetPoint" />
1479 |             <Array as="points">
1480 |               <mxPoint x="311" y="116" />
1481 |             </Array>
1482 |           </mxGeometry>
1483 |         </mxCell>
1484 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-267" value="Java CLI" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" parent="1" vertex="1">
1485 |           <mxGeometry y="108.5" width="260" height="15" as="geometry" />
1486 |         </mxCell>
1487 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-268" value="Frameworks&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFCC99;" parent="1" vertex="1">
1488 |           <mxGeometry x="218" y="1732" width="74" height="20" as="geometry" />
1489 |         </mxCell>
1490 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-269" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-268" edge="1">
1491 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1492 |             <mxPoint x="328" y="1683" as="sourcePoint" />
1493 |             <mxPoint x="307" y="1730" as="targetPoint" />
1494 |             <Array as="points">
1495 |               <mxPoint x="330.5" y="1720.5" />
1496 |             </Array>
1497 |           </mxGeometry>
1498 |         </mxCell>
1499 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-270" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" edge="1">
1500 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1501 |             <mxPoint x="331" y="1683" as="sourcePoint" />
1502 |             <mxPoint x="360" y="1750" as="targetPoint" />
1503 |             <Array as="points">
1504 |               <mxPoint x="345.5" y="1730.5" />
1505 |             </Array>
1506 |           </mxGeometry>
1507 |         </mxCell>
1508 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-271" value="RPC" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
1509 |           <mxGeometry x="327" y="1752" width="68" height="20" as="geometry" />
1510 |         </mxCell>
1511 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-272" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.628;exitY=1.025;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
1512 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1513 |             <mxPoint x="350.5" y="1774.5" as="sourcePoint" />
1514 |             <mxPoint x="290.5" y="1831.5" as="targetPoint" />
1515 |             <Array as="points">
1516 |               <mxPoint x="321" y="1828" />
1517 |             </Array>
1518 |           </mxGeometry>
1519 |         </mxCell>
1520 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-273" value="Protocol Buffers" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1521 |           <mxGeometry x="245" y="1828" width="80" height="15" as="geometry" />
1522 |         </mxCell>
1523 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-274" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1524 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1525 |             <mxPoint x="357" y="1774.5" as="sourcePoint" />
1526 |             <mxPoint x="332" y="1850" as="targetPoint" />
1527 |             <Array as="points">
1528 |               <mxPoint x="365" y="1839.5" />
1529 |             </Array>
1530 |           </mxGeometry>
1531 |         </mxCell>
1532 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-275" value="&lt;pre&gt;&lt;span&gt;gRPC-Java&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1533 |           <mxGeometry x="266" y="1852" width="80" height="15" as="geometry" />
1534 |         </mxCell>
1535 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-276" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">
1536 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1537 |             <mxPoint x="367" y="1775.5" as="sourcePoint" />
1538 |             <mxPoint x="395" y="1851" as="targetPoint" />
1539 |             <Array as="points">
1540 |               <mxPoint x="375" y="1840.5" />
1541 |             </Array>
1542 |           </mxGeometry>
1543 |         </mxCell>
1544 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-277" value="&lt;pre&gt;&lt;span&gt;thrift&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFFF66;" parent="1" vertex="1">
1545 |           <mxGeometry x="355" y="1850" width="75" height="15" as="geometry" />
1546 |         </mxCell>
1547 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-278" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-279" target="NU75y0YXBvxGrzugc1HJ-281" edge="1">
1548 |           <mxGeometry relative="1" as="geometry" />
1549 |         </mxCell>
1550 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-279" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;comic=0;strokeColor=#314354;fillColor=#647687;fontFamily=Verdana;fontSize=14;align=center;fontColor=#ffffff;" parent="1" vertex="1">
1551 |           <mxGeometry x="458" y="391.5" width="23" height="23" as="geometry" />
1552 |         </mxCell>
1553 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-280" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=10;exitX=0.5;exitY=1;entryX=0.5;entryY=0;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="NU75y0YXBvxGrzugc1HJ-261" target="NU75y0YXBvxGrzugc1HJ-279" edge="1">
1554 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1555 |             <mxPoint x="481" y="341" as="sourcePoint" />
1556 |             <mxPoint x="459.8333333333335" y="469.8333333333335" as="targetPoint" />
1557 |             <Array as="points" />
1558 |           </mxGeometry>
1559 |         </mxCell>
1560 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-281" value="CLI" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=10;fillColor=#FFFF66;" parent="1" vertex="1">
1561 |           <mxGeometry x="509" y="389.5" width="100" height="30" as="geometry" />
1562 |         </mxCell>
1563 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-282" value="&lt;pre&gt;&lt;span&gt;JCommander&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFFF66;" parent="1" vertex="1">
1564 |           <mxGeometry x="764" y="319.5" width="96" height="20" as="geometry" />
1565 |         </mxCell>
1566 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-283" value="&lt;pre&gt;&lt;span&gt;airline&lt;/span&gt;&lt;/pre&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=9;fillColor=#FFCC99;" parent="1" vertex="1">
1567 |           <mxGeometry x="764" y="353" width="96" height="20" as="geometry" />
1568 |         </mxCell>
1569 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-284" value="" style="endArrow=none;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;" parent="1" source="NU75y0YXBvxGrzugc1HJ-282" target="NU75y0YXBvxGrzugc1HJ-281" edge="1">
1570 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1571 |             <mxPoint x="702.5" y="304" as="sourcePoint" />
1572 |             <mxPoint x="592.5" y="388" as="targetPoint" />
1573 |             <Array as="points">
1574 |               <mxPoint x="607.5" y="353.5" />
1575 |             </Array>
1576 |           </mxGeometry>
1577 |         </mxCell>
1578 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-285" value="" style="endArrow=none;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;strokeColor=#6C8EBF;dashed=1;" parent="1" source="NU75y0YXBvxGrzugc1HJ-283" target="NU75y0YXBvxGrzugc1HJ-281" edge="1">
1579 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1580 |             <mxPoint x="774" y="326" as="sourcePoint" />
1581 |             <mxPoint x="569" y="400" as="targetPoint" />
1582 |             <Array as="points">
1583 |               <mxPoint x="617.5" y="363.5" />
1584 |             </Array>
1585 |           </mxGeometry>
1586 |         </mxCell>
1587 |         <mxCell id="YNktaQSbBbT8UCnTPr-B-8" value="Sentry.io&lt;br&gt;" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#FFCC99;" parent="1" vertex="1">
1588 |           <mxGeometry x="40" y="941" width="90" height="15" as="geometry" />
1589 |         </mxCell>
1590 |         <mxCell id="YNktaQSbBbT8UCnTPr-B-15" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.75;endFill=0;dashed=1;exitX=0.927;exitY=1.142;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;exitPerimeter=0;entryDx=0;entryDy=0;" parent="1" target="NU75y0YXBvxGrzugc1HJ-193" edge="1">
1591 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1592 |             <mxPoint x="163.16000000000008" y="885.42" as="sourcePoint" />
1593 |             <mxPoint x="200" y="957.58" as="targetPoint" />
1594 |             <Array as="points">
1595 |               <mxPoint x="160" y="932" />
1596 |             </Array>
1597 |           </mxGeometry>
1598 |         </mxCell>
1599 |         <mxCell id="NU75y0YXBvxGrzugc1HJ-194" value="loggly.com" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#CCCCCC;" parent="1" vertex="1">
1600 |           <mxGeometry x="40" y="965" width="90" height="15" as="geometry" />
1601 |         </mxCell>
1602 |         <mxCell id="YNktaQSbBbT8UCnTPr-B-21" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.5;endFill=0;dashed=1;exitX=0.5;exitY=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-191" target="YNktaQSbBbT8UCnTPr-B-8" edge="1">
1603 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1604 |             <mxPoint x="173.16000000000008" y="895.4200000000001" as="sourcePoint" />
1605 |             <mxPoint x="140.5" y="941.5" as="targetPoint" />
1606 |             <Array as="points">
1607 |               <mxPoint x="170" y="942" />
1608 |             </Array>
1609 |           </mxGeometry>
1610 |         </mxCell>
1611 |         <mxCell id="YNktaQSbBbT8UCnTPr-B-22" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;entryX=1;entryY=0.5;endFill=0;dashed=1;exitX=0.559;exitY=1.07;fillColor=#dae8fc;strokeColor=#6c8ebf;exitDx=0;exitDy=0;entryDx=0;entryDy=0;exitPerimeter=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-191" target="NU75y0YXBvxGrzugc1HJ-194" edge="1">
1612 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1613 |             <mxPoint x="184.5" y="894" as="sourcePoint" />
1614 |             <mxPoint x="140" y="958.5" as="targetPoint" />
1615 |             <Array as="points">
1616 |               <mxPoint x="180" y="952" />
1617 |             </Array>
1618 |           </mxGeometry>
1619 |         </mxCell>
1620 |         <mxCell id="xKLFKNOzfZAxjwdvtdzZ-1" value="Testcontainers" style="rounded=1;whiteSpace=wrap;html=1;comic=0;fontFamily=Verdana;fontSize=8;fillColor=#ffff66;" parent="1" vertex="1">
1621 |           <mxGeometry x="224" y="1512" width="80" height="15" as="geometry" />
1622 |         </mxCell>
1623 |         <mxCell id="xKLFKNOzfZAxjwdvtdzZ-2" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="NU75y0YXBvxGrzugc1HJ-68" target="xKLFKNOzfZAxjwdvtdzZ-1" edge="1">
1624 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1625 |             <mxPoint x="365" y="1490" as="sourcePoint" />
1626 |             <mxPoint x="335" y="1550" as="targetPoint" />
1627 |             <Array as="points">
1628 |               <mxPoint x="355.5" y="1522" />
1629 |             </Array>
1630 |           </mxGeometry>
1631 |         </mxCell>
1632 |         <mxCell id="eeL6GW4EWC3StHe4rQ_N-1" value="Virtual threads" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;comic=0;fontFamily=Verdana;fontSize=8;" vertex="1" parent="1">
1633 |           <mxGeometry x="4.5" y="205" width="258" height="15" as="geometry" />
1634 |         </mxCell>
1635 |         <mxCell id="eeL6GW4EWC3StHe4rQ_N-3" value="" style="curved=1;endArrow=none;html=1;fontFamily=Verdana;fontSize=8;endFill=0;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="eeL6GW4EWC3StHe4rQ_N-1">
1636 |           <mxGeometry width="50" height="50" relative="1" as="geometry">
1637 |             <mxPoint x="350" y="181" as="sourcePoint" />
1638 |             <mxPoint x="280" y="205" as="targetPoint" />
1639 |             <Array as="points">
1640 |               <mxPoint x="340" y="185" />
1641 |               <mxPoint x="310" y="195" />
1642 |             </Array>
1643 |           </mxGeometry>
1644 |         </mxCell>
1645 |       </root>
1646 |     </mxGraphModel>
1647 |   </diagram>
1648 | </mxfile>
1649 | 


--------------------------------------------------------------------------------