-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 5f7e808
Showing
51 changed files
with
13,294 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Write glob rules for ignored files. | ||
|
||
# Check syntax on https://deepcode.freshdesk.com/support/solutions/articles/60000531055-how-can-i-ignore-files-or-directories- | ||
|
||
# Check examples on https://github.com/github/gitignore | ||
|
||
# Hidden directories | ||
|
||
.\*/ | ||
|
||
# Node | ||
|
||
logs | ||
pids | ||
lib-cov | ||
coverage | ||
bower_components | ||
build/Release | ||
node_modules/ | ||
jspm_packages/ | ||
web_modules/ | ||
out | ||
dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
{ | ||
"env": { | ||
"browser": true, | ||
"node": true, | ||
"commonjs": true, | ||
"shared-node-browser": true, | ||
"es2024": true | ||
}, | ||
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], | ||
"parser": "@typescript-eslint/parser", | ||
"parserOptions": { | ||
"ecmaVersion": "latest" | ||
}, | ||
"plugins": ["@typescript-eslint"], | ||
"rules": { | ||
"linebreak-style": ["warn", "unix"], | ||
"quotes": [ | ||
"warn", | ||
"double", | ||
{ | ||
"avoidEscape": true | ||
} | ||
], | ||
"semi": ["error", "always"], | ||
"no-unused-vars": ["off"], | ||
"@typescript-eslint/no-unused-vars": ["warn"], | ||
"prefer-const": ["warn"] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
# SQLite files | ||
punto.sqlite | ||
|
||
docs/ | ||
dist/ | ||
|
||
# Vscode | ||
.vscode/ | ||
|
||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
lerna-debug.log* | ||
.pnpm-debug.log* | ||
|
||
# Diagnostic reports (https://nodejs.org/api/report.html) | ||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | ||
|
||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
*.lcov | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (https://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
jspm_packages/ | ||
|
||
# Snowpack dependency directory (https://snowpack.dev/) | ||
web_modules/ | ||
|
||
# TypeScript cache | ||
*.tsbuildinfo | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Optional stylelint cache | ||
.stylelintcache | ||
|
||
# Microbundle cache | ||
.rpt2_cache/ | ||
.rts2_cache_cjs/ | ||
.rts2_cache_es/ | ||
.rts2_cache_umd/ | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variable files | ||
.env | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
.env.local | ||
|
||
# parcel-bundler cache (https://parceljs.org/) | ||
.cache | ||
.parcel-cache | ||
|
||
# Next.js build output | ||
.next | ||
out | ||
|
||
# Nuxt.js build / generate output | ||
.nuxt | ||
XXXdist | ||
|
||
# Gatsby files | ||
.cache/ | ||
# Comment in the public line in if your project uses Gatsby and not Next.js | ||
# https://nextjs.org/blog/next-9-1#public-directory-support | ||
# public | ||
|
||
# vuepress build output | ||
.vuepress/dist | ||
|
||
# vuepress v2.x temp and cache directory | ||
.temp | ||
.cache | ||
|
||
# Docusaurus cache and generated files | ||
.docusaurus | ||
|
||
# Serverless directories | ||
.serverless/ | ||
|
||
# FuseBox cache | ||
.fusebox/ | ||
|
||
# DynamoDB Local files | ||
.dynamodb/ | ||
|
||
# TernJS port file | ||
.tern-port | ||
|
||
# Stores VSCode versions used for testing VSCode extensions | ||
.vscode-test | ||
|
||
# yarn v2 | ||
.yarn/cache | ||
.yarn/unplugged | ||
.yarn/build-state.yml | ||
.yarn/install-state.gz | ||
.pnp.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"tabWidth": 4, | ||
"useTabs": false, | ||
"semi": true, | ||
"trailingComma": "all", | ||
"endOfLine": "lf", | ||
"singleQuote": false, | ||
"bracketSpacing": false | ||
} |
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# Repository pour le projet du Punto réalisé à l'IUT de Vannes | ||
|
||
### Le code source est le même que celui qui a été rendu (le commit initial) | ||
|
||
### Le fichier [Projet 1 \_ Punto.pdf](./Projet%201%20_%20Punto.pdf) contient le sujet du projet | ||
|
||
- Ce sujet à été modifié après le rendu, pour ajouter la base de donnée Neo4j. | ||
|
||
### Le fichier [Punto_règles.pdf](./Punto_règles.pdf) contient les règles du jeu de Punto | ||
|
||
--- | ||
|
||
# PuntoDB : Le Jeu de Punto avec Gestion de Base de Données | ||
|
||
### Auteurs | ||
|
||
- Naexy | ||
|
||
### Introduction | ||
|
||
PuntoDB est un jeu de Punto implémenté avec une interface de terminal, permettant la liaison avec quatres bases de données différentes : MySQL, SQLite, MongoDB et Neo4j. Le programme offre une expérience interactive en ligne de commande, avec des options pour jouer, gérer les bases de données et générer des parties. | ||
|
||
### Prérequis | ||
|
||
- Assurez-vous d'avoir installé MySQL, SQLite, MongoDB et Neo4j sur votre machine. | ||
- Node.js doit être installé pour exécuter le programme. | ||
|
||
### Installation des Dépendances | ||
|
||
Pour installer les dépendances nécessaires, exécutez : | ||
|
||
```sh | ||
pnpm install | ||
``` | ||
|
||
### Construction du Projet | ||
|
||
Pour construire le projet (si nécessaire, une version construite est déjà incluse dans le dossier `dist`) : | ||
|
||
```sh | ||
pnpm run build | ||
``` | ||
|
||
### Exécution des Tests | ||
|
||
Pour exécuter les tests : | ||
|
||
```sh | ||
pnpm run test | ||
``` | ||
|
||
### Lancement du Programme | ||
|
||
Pour démarrer le programme principal : | ||
|
||
```sh | ||
pnpm run start | ||
``` | ||
|
||
### Nettoyage des Fichiers de Build | ||
|
||
Pour nettoyer les fichiers de build (si un nouveau build a été effectué) : | ||
|
||
```sh | ||
pnpm run clean | ||
``` | ||
|
||
- Cette commande utilise la commande `del` de Windows pour supprimer `tsconfig.tsbuildinfo`. | ||
|
||
### Documentation | ||
|
||
Pour générer la documentation du projet (si nécessaire, une version générée est déjà incluse dans le dossier `docs`) : | ||
|
||
```sh | ||
pnpm run docs | ||
``` | ||
|
||
### Utilisation du Programme | ||
|
||
Au lancement, le programme offre plusieurs options : | ||
|
||
- Tapez `game` pour lancer une partie. | ||
- Tapez `db` pour accéder aux commandes de base de données. | ||
|
||
#### Mode Base de Données | ||
|
||
Dans ce mode, vous pouvez : | ||
|
||
- Activer ou désactiver les bases de données pour la sauvegarde des parties. | ||
- Vider les bases de données actives. | ||
|
||
#### Mode Jeu | ||
|
||
- Jouez une partie de Punto ou générez plusieurs parties (`g100` pour 100 parties, par exemple). | ||
- Les résultats des parties seront automatiquement sauvegardés dans les bases de données activées. | ||
|
||
#### Commandes Globales | ||
|
||
Des commandes comme `exit`, `n`, `quit`, etc., sont disponibles à tout moment pour naviguer ou quitter le programme. | ||
Voici la liste complète des commandes de "refus" : | ||
|
||
- `bye` | ||
- `exit` | ||
- `false` | ||
- `n` | ||
- `no` | ||
- `q` | ||
- `quit` | ||
- `refuse` | ||
- `stop` |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
## PuntoDB : Le Jeu de Punto avec Gestion de Base de Données | ||
|
||
### Démonstration avec Captures d'Écran | ||
|
||
#### Lancement du Programme | ||
Commencez par lancer le programme principal : | ||
- Écran de démarrage : ![Écran de démarrage](./assets_demo/start_program.png) | ||
|
||
#### Sélection d'une Base de Données | ||
Après le démarrage, choisissez une base de données pour enregistrer les parties : | ||
- Menu de sélection de la base de données : ![Menu de sélection de la base de données](./assets_demo/choose_db.png) | ||
- Sélection de SQLite comme exemple : ![Sélection de SQLite](./assets_demo/choose_sqlite.png) | ||
|
||
#### Quitter le Mode Base de Données | ||
Quitter la gestion des bases de données pour commencer une partie : | ||
- Retour au menu principal : ![Retour au menu principal](./assets_demo/quit_db.png) | ||
|
||
#### Démarrage d'une Partie | ||
Lancer une partie de Punto : | ||
- Écran de lancement d'une partie : ![Lancement d'une partie](./assets_demo/start_game.png) | ||
|
||
#### Jouer une Partie | ||
Démonstration d'une partie avec deux joueurs, `NJ` et `GK`, avec `NJ` comme premier joueur : | ||
- Début de la partie : ![Début de la partie](./assets_demo/play_game.png) | ||
- Jouer quelques coups : ![Jouer quelques coups](./assets_demo/play_game_1.png) | ||
- Coup automatique : ![Coup automatique](./assets_demo/play_game_2.png) | ||
- Autres coups joués : ![Autres coups joués](./assets_demo/play_game_3.png) | ||
|
||
#### Quitter la Partie | ||
Un joueur quitte la partie : | ||
- Écran de sortie de la partie : ![Quitter la partie](./assets_demo/quit_game.png) | ||
|
||
#### Vérification de la Sauvegarde | ||
Confirmation de l'enregistrement de la partie dans la base de données : | ||
- Vérification dans la base de données (Utilisateurs) : ![Utilisateurs](./assets_demo/check_db_users.png) | ||
- Vérification dans la base de données (Jeu - Punto) : ![Jeu - Punto](./assets_demo/check_db_game_punto.png) | ||
- Vérification dans la base de données (Jeu - Cartes) : ![Jeu - Cartes](./assets_demo/check_db_game_cards.png) | ||
- Vérification dans la base de données (Jeu - Joueurs) : ![Jeu - Joueurs](./assets_demo/check_db_game_players.png) | ||
|
||
#### Vider la Base de Données et Générer des Parties | ||
- Vidage de la base de données : ![Vider la base de données](./assets_demo/empty_db.png) | ||
- Génération de 10 parties : ![Génération de 10 parties](./assets_demo/generate_games.png) | ||
|
||
#### Vérification Finale | ||
Confirmation des parties générées dans la base de données : | ||
- Vérification dans la base de données après génération : ![Vérification après génération](./assets_demo/check_db_game_punto2.png) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<mxfile host="Electron" modified="2023-11-25T14:54:06.578Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.3.5 Chrome/94.0.4606.51 Electron/15.0.0 Safari/537.36" etag="tWzh_lDiu7B5rh6NLNJr" version="15.3.5" type="device"><diagram id="dnEdV3VdRCcQOalIXEIC" name="Page-1">7ZtLc6M4EIB/jY+TAgTGHGM7M5uqmZrUJvO8bMkg29oAcgk5Nvn1K0CYR4vsZKeCXQsnS42QRH/drUbCE7SIjh843m0/sYCEE8sIjhO0nFiWaRmO/MkkaSGZetNCsOE0UI0qwT19JkpoKOmeBiRpNBSMhYLumkKfxTHxRUOGOWeHZrM1C5uj7vCGAMG9j0Mo/UYDsVVSc+pVF/4gdLNVQ88st7gQ4bKxepJkiwN2qInQzQQtOGOiKEXHBQkz5ZV6Ke5733H1NDFOYvErN9x/n3200c9n9vXrp/Xiy80dffzznV308oTDvXrgu30smJqxSEs1JAcahTiWtfkW+9s9Jx/wTl6ypWDHaCwIv3mSE8m0bUhZIjAXiqaFpECNQ7ggx84HME9qkfZEWEQET2UTdYODlCaVKdmqeqhxcZRsW0Nil7aElS1sTl1X6pIFpbFXaM8B2vsra38tZZ9Xf0tzvA2AJuXzi0yLIpJDLU1ZxCHdxLIcknV2JdMRlQZ4rcQRDYLs5jknCX3Gq7wjo9R7/kjOfOIss572giWF0s0cAmePZMFCxqUkZjm+NQ3DluiX2HSbTycws8kLQV4zDS7rrWiV06nhmrjLEVAFyJ0CQlavhExAyMc8SAqXWshipskBA7OawNxze5QFeO1CnBKuiH1JCB+J1YlZDkTm9YoMwSDoDDoItgghzTLVbxCEOVnhVLdjanGC1koFdZHQNHulNh396uXId26/smBykftV8LDnceFZ8T5ayRVrwNBafmXq/Kpfal0pxjwdo2FXNDTPHQ0tmGUUvnY7elqHp3lnZwbzjuMISwtLw8rtFRXcePILRVzniDiNNyOuyrfOvfNkweQwHV1Lz0qzdvXrWy5gpYojLx2vc29oWDPA60Djh3RHxmjYVH25weHAXV7T6BMZjIYrlu3t5rwm7qD3C1tb8hrvmvbqXR5gVapwDIe6Vy9NathrOCznUwOWCCz2yRgNtcCQJt/oNTeE6UZ+atImdAkH8KcT9xcOM7QryeytlAfX/oEdwLuvWUzO/RoE15IYRwNK014FS+NbvcJCcLsc0CFxcJ19YyVrq5D5jw9bGjdp1cOQmcUqeUu9mrA998kd4VTOmvD7HfYzM0DLmbwo790Q0XGxE7wc4T0NywmQIxXfZfmdcWUYjhL8yGziqqwtj8pE8kpaq5yGLmWx1GzWmyk7Q6Wg1ltWrbrLa2m91u6w0CgJwDdorZAstZ4r6qVMTeEplPZvMRNaYc3OdB9RlTJOQizoU3O+OuNTI9xlblcZuWN0LCFlF8ogirsqEwYdoWk7trU6UsbT7kjaK05rzVRY6J5wyy3L9LtrXqC912gvC8UMKsc8MfgNX7X+f75qNnzV9rzf81b7sry1POS/cG+dele207Rn9786rG1clUcMPfssan8ZexE+q/kQx5riSCb181Dk1mYUZ2aysEpfkRn5JM5t9lJzo5dfMmynBQO5Z06E4LmYORgawDUcD9Do9XsABI++hkMDtV/ANZ9n9EsDbuUOhwZYZoxz04B7ScOhAXxDsxPbLw24OQUWeE7WRD6gTBWHgqm9vJe52Rss77Ja/buqSNuq/6ihm38A</diagram></mxfile> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<mxfile host="Electron" modified="2023-12-02T17:48:06.687Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.3.5 Chrome/94.0.4606.51 Electron/15.0.0 Safari/537.36" etag="XVVOVyYITvF-rNyqt1QA" version="15.3.5" type="device"><diagram id="dnEdV3VdRCcQOalIXEIC" name="Page-1">7Zzdc6M2EMD/Gl46cx2EwB+P8VeattdJJ7n27qmDQbE1h8Ej5NjcX18Bwgat7NjnGDvGM3lACwhpfytpdyXHwP3Z6p658+nnyCeBYZn+ysADw7KQbVlG+mf6SS7pFIIJo758aCN4oj+IFJpSuqA+iSsP8igKOJ1XhV4UhsTjFZnLWLSsPvYSBdWvzt0JAYInzw2g9F/q86mUolZ3c+M3QidTXvSvnd+YucXDsifx1PWjZUmEhwbusyji+dVs1SdBqrxCL/l7oy131w1jJOT7vPCP93s7HA6/JA9Loa0R+vzQ7X1CsppXN1jIHn+JCZMt5kmhhnhJZ4EbilJv6nrTBSP37lzcsoVgHtGQEzZ8FQ1JtW0KWcxdxiVNCwsBbG3xZcI4WZVEsvX3JJoRzhLxiLyLbalJaUp2S5aXJTCmlE3LTKTMlbYwWVe9UZe4kBo7RHsW0N5/6Qt3QhYuZmONIkVfeapEPhNfGiBx6QZ0EorrgLykd1J9UGF/d1I8o76fvtxjJKY/3HFWkVmoPeuR0zOcQVrTgkdxrnOUMWDRd9KPgogJSRhl9F5oECgiiGa3qewNDFV5YYiro6FlnYwWBrRCd0ZyXEJZNJzccG1wOefG1QG4Hhchjy5ybnIU5em0h6xa56Zuk+amzqHAzjc3eW3mvHrk/q+Xu7DTN//oPVqjT9gBtJY0fE7mVzs9HUtMN8B0i//JkEHPqe8y/yJnp7bjVGcnjbkjW6e8k2nvSj2nnZbyASYn7VgtKi7BGkeprd9w7TkzdWtdSwCt1Y2UllQbkmrXScoGpJIbKS2p7plJQfdsHrgJ8Z8XLLwh0yJD+4ZAJ4MGI6AMGuvdRtkWZJphhlCdyGDMn4+zh9so24JMs4bVi8xpA2ZeroqPHrieBhiqz5vX84JjTF7eBpiOlyb6qtWd12wyADwk9O/SzS5RGgeR9/15SsMqrnJaAaW5B/FKuRhHC+aRR8KoaDVhT3PXS8ctHnTETfHuhPAtN8mK8q8Sbnr9Lb3+1ZGlwap0a5CUCuvqClkotPVVNjcrlGpKi5uqslJSLqmVbTVH0e0RDQqtQBuS5pKrw3g7Js5Vs+PBIg9L/MpGIzS/kn05GvsqZIwELqevpNJcndHJLzym421j3S1lE80yFbuVhpC/tTFdUFHbrFaEsVKRNBq1omwMrLt9xLCAYe4vB0xbHgkza7mIievwhB5WEnoax61WVxvBUBY1hkYLmxdGA4arhtVyZ3PR34BnnTbHJIjCSZxOYXBL7WpJOQopjfdcqzOGWoDU099/Uk6yrc7HLFwFdC5hSwHmqDVxCNaoEp1OlzAQWcSEPVxtnrp1KLS39xVq3kKDoUi2sXBDdrG7no4mEyqVeCOmI6ZZYWoNH4tDciVgYj3gi/ha8zPHAtM4b/W6BDBtDfCcNd6vRNBF9F9cHx39rwvfjFIq4JDYf6t3Uw7qd65HHy6ob1VN2O4qxrlvUI+7SkWqlW8J6oUxuknpMTnotzbYUZMHLXNnu8Dz1bPO4iJvwbtmGDTHHpqTYVAPW2PNYetaY9p1F5pIw+4oNDSbCPXSsAANRl6I6KKYYNOvjgyn3xw8loLn3MdJLZgcvWQfQrv2/2Tm/722I47wItr7ehHWRXkRbcWI1aPp+zoRSJ2sTuREgO/Yu50I9fnCqTitEwET481ZtlBXT+h8yxbMXjSHBlZWqbVTcTYaMPlddSLklsWErxXQAEzqNKXDVO9vU6DnfVnORLHir1f5dergOg4g7Drc+OGcjK6jWLf9c15GC71R0Tt5GR3rDF4DhuFVc7bTbfV33udep3CTj5p01HGm2YKqlwb0qMHhhvzQsLgYJ40BpZ4JOqHfIIqb/1uRz3mb//6Bh/8D</diagram></mxfile> |
Oops, something went wrong.