Skip to content

Commit

Permalink
Merge pull request #35 from CMTA/dev
Browse files Browse the repository at this point in the history
Release 1.0.3
  • Loading branch information
rya-sge authored Nov 22, 2023
2 parents 73896e0 + cd352c2 commit ddaaaae
Show file tree
Hide file tree
Showing 122 changed files with 7,988 additions and 591 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Foundry CI

on:
push:
branches: [dev, master, main]
pull_request:
branches: [dev, master, main]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Run Forge install
run: forge install

- name: Run Forge build
run: forge build --sizes

- name: Run Forge tests
run: forge test -vvv
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ cache/
nethereum-gen.settings
#hardhat
artifacts/
cache_hardhat/
cache_hardhat/
#drawio
*.bkp
*.dtmp
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@

Please follow [https://changelog.md/](https://changelog.md/) conventions.

## v1.0.2 - 10120609
## v1.0.3 - 20231122

- Upgrade the library CMTAT to the version [v2.3.1](https://github.com/CMTA/CMTAT/releases/tag/v2.3.1)
- Use custom errors instead of revert message (gas optimization)
- Add the rule `SanctionList`
- Upgrade OpenZeppelin to the version [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0)

## v1.0.2 - 20230609

- Upgrade the library CMTAT to the vesion [v2.3.0](https://github.com/CMTA/CMTAT/releases/tag/v2.3.0)
- Set the number of runs for the optimizer to 200 for Hardhat and Foundry, see [https://docs.soliditylang.org/en/v0.8.17/using-the-compiler.html#optimizer-options](https://docs.soliditylang.org/en/v0.8.17/using-the-compiler.html#optimizer-options)
Expand Down
54 changes: 38 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
> To use the ruleEngine and the different rules, we recommend the latest audited version, from the [Releases](https://github.com/CMTA/CMTAT/releases) page. Currently, it is the version [v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2)
# RuleEngine

This repository includes the RuleEngine contract for the [CMTAT](https://github.com/CMTA/CMTAT) token.
- The CMTAT version used is the version [v2.3.0](https://github.com/CMTA/CMTAT/releases/tag/v2.3.0)
- The OpenZeppelin version used is the version [4.8.1](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v4.8.1)
- The CMTAT version used is the version [v2.3.1](https://github.com/CMTA/CMTAT/releases/tag/v2.3.1)
- The OpenZeppelin version used is the version [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0)

The CMTAT contracts and the OpenZeppelin library are included as a submodule of the present repository.

Expand All @@ -12,28 +14,37 @@ The contracts have been audited by [ABDKConsulting](https://www.abdk.consulting/

#### First Audit - March 2022

Fixed version : [v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2)

The first audit was performed by ABDK on the version [1.0.1](https://github.com/CMTA/RuleEngine/releases/tag/1.0.1).

The release 1.1 contains the different fixes and improvements related to this audit.
The release [v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2) contains the different fixes and improvements related to this audit.

The temporary report is available in [Taurus. Audit 3.3.CollectedIssues.ods](doc/audits/Taurus.Audit3.3.CollectedIssues.ods)

The final report is available in [ABDK_CMTA_CMTATRuleEngine_v_1_0.pdf](https://github.com/CMTA/CMTAT/blob/master/doc/audits/ABDK_CMTA_CMTATRuleEngine_v_1_0/ABDK_CMTA_CMTATRuleEngine_v_1_0.pdf).

### Tools

You will find the report performed with [Slither](https://github.com/crytic/slither) in [slither-report.md](doc/audits/tools/slither-report.md)
You will find the report performed with [Slither](https://github.com/crytic/slither) in

| Version | File |
| ------- | ------------------------------------------------------------ |
| v1.0.2 | [v1.0.2-slither-report.md](./doc/audits/tools/v1.0.2-slither-report.md) |
| v1.0.3 | [v1.0.3-slither-report.md](./doc/audits/tools/v1.0.3-slither-report.md) |

## Documentation

Here a summary of the main documentation

| Document | Link/Files |
| ----------------------------------- | ---------------------------------------------------- |
| Solidity API Documentation (docgen) | [doc/solidityAPI](./doc/solidityAPI) |
| Technical documentation | [doc/technical.md](./doc/technical.md) |
| Toolchain | [doc/TOOLCHAIN.md](./doc/TOOLCHAIN.md) |
| Functionalities | [doc/functionalities.pdf](./doc/functionalities.pdf) |
| Surya report | [doc/surya](./doc/surya) |
| Test | [doc/test/test.pdf](./doc/test/test.pdf) |
| Document | Link/Files |
| ----------------------------------- | ------------------------------------------------------ |
| Solidity API Documentation (docgen) | [doc/solidityAPI](./doc/solidityAPI) |
| Technical documentation | [doc/technical](./doc/technical) |
| Toolchain | [doc/TOOLCHAIN.md](./doc/TOOLCHAIN.md) |
| Functionalities | [doc/functionalities.pdf](./doc/functionalities.pdf) |
| Surya report | [doc/surya](./doc/surya) |
| Test (v1.0.2) | [doc/test/v1.0.2/test.pdf](./doc/test/v1.0.2/test.pdf) |



Expand Down Expand Up @@ -66,7 +77,9 @@ forge update
See also the command's [documentation](https://book.getfoundry.sh/reference/forge/forge-update).



## Compilation

The official documentation is available in the Foundry [website](https://book.getfoundry.sh/reference/forge/build-commands)
```
forge build --contracts src/RuleEngine.sol
Expand Down Expand Up @@ -101,11 +114,20 @@ forge coverage
forge coverage --report lcov
```

See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU)
- Generate `index.html`

```bash
forge coverage --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage
```

See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU) & [Foundry forge coverage](https://www.rareskills.io/post/foundry-forge-coverage)

## Deployment
The official documentation is available in the Foundry [website](https://book.getfoundry.sh/reference/forge/deploy-commands)
### Script

> This documentation has been written for the version v1.0.2
To run the script for deployment, you need to create a .env file. The value for CMTAT.ADDRESS is require only to use the script **RuleEngine.s.sol**
Warning : put your private key in a .env file is not the best secure way.

Expand All @@ -130,6 +152,9 @@ forge script script/RuleEngineScript.s.sol:RuleEngineScript --rpc-url=$RPC_URL
```

### Local

> This documentation has been written for the version v1.0.2
With Foundry, you [can create a local testnet](https://book.getfoundry.sh/reference/anvil/) node for deploying and testing smart contracts, based on the [Anvil](https://anvil.works/) framework.

On Linux, using the default RPC URL, and Anvil's test private key, run:
Expand All @@ -143,6 +168,3 @@ forge create CMTAT_BASE --rpc-url=$RPC_URL --private-key=$PRIVATE_KEY --construc
```

See also the command's [documentation](https://book.getfoundry.sh/reference/forge/deploy-command).



2 changes: 1 addition & 1 deletion doc/accessControl/.$access-control.drawio.bkp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2022-11-14T12:56:39.340Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="33x45HAofQQoKoDw1dwn" version="20.3.0" type="device" pages="2"><diagram id="O96H6G2-MBiRhnGMjF2G" name="RuleEngine">3Zlbc6IwFMc/jY/tcBHQRyu02xnb7uh2un3qpBA1s0CYEKv2028i4ZbY9bIq7D5BDsmB/M8vyUnomMNodUdAMn/AAQw7hhasOqbbMQzdtDR24ZZ1Zun3e5lhRlAgKpWGCfqEwijazRYogGmtIsU4pCipG30cx9CnNRsgBC/r1aY4rL81ATOoGCY+CFXrCwroPLP28m5x+zeIZvP8zbomnkQgrywM6RwEeFkxmV7HHBKMaXYXrYYw5OLlumTtbr94WnwYgTHdp8GVNp1MwPsQPyUGWnrJ2AXOlfDyAcKF6LDr3Q6eRz/eBu7D/ePb+Gnkic+n61wT5pfJzwo3yzmicJIAnz9ZMgKYbU6jkJV0djvFMRUh1W1WFi+DhMLVl73QC20YVBBHkJI1qyIa5GoKnGxRXJaxKdCZV+OStwOCh1nhuZSM3QjVDlDQUBT8hXgrSTOCF3EAuSOtEd1sq6ab4ajCFRpVhbPPpZup6KZyFgcDPoRZyQ9BmiK/LlNdU7hC9Ce/v7ZE6VXU4/fuqlLNXYvCdqFhoMwJkszsM/GC+HD3yKKAzCDdxY8atkpcrC1hyW0EhoCij/rnbouVeMN3jFhHCip0pz6cCr+5i6ybolV1cpEcyePS0CRHmQ6Kow06RbePp6mr0DR+Hnlv3uPd/aPXvlmsK8m1bTT2t01jsqwnG46WImAK6XgRsrW3bVOZYUqsNT6X2Yp4fggBaad8Xa1t8jmKfCAIuHit086y2qZdT9GOwAh/wFbK57QOvb4in7pOHJaFxOyzKmkIL75Wn5WJyKZ0gUxErI07MxFre+wuk4mYXQkNOWHfNxMx+3VHRYpzoUwk332cDikZjWMS3WOxbABDu0kM7VNhaDeNobqzPxOG+v8IodMkhI68mdKPhNCRtne6vI6eG0L1cOQCEJbz4j+PYa/RuVBOduXN594YSmmfLp8ynBvDk581nRbDGoQlk+fHcN8zqm6TGBq9HSvp3pmhdG6gnAmfG0P1kCoCMf//oMDIgjsC7zCsMwhCNIs5oCzQkDAD34whH4QD8SBCQcB93BCYok/wvvHHmUl4nza9tG46lnvI7k78WBHOOkVCVOXtD6Puy72gdq07vf7fEbLe2gBPpyk8MIKsWP6JyaqX/7NM7zc=</diagram><diagram id="AD0m7nGBSN-_X6hBBRl8" name="RuleWhitelist">3Zlbc6IwFMc/jY/dARHQR1vtZcbu7qzudPvUSUmEbIE4IVbtp99Ewi2h3lbUXV8kh+RA/vnl5CS0rJtoeUfBLHgkEIWttgGXLWvQavOfYfA/YVmlll6vmxp8imFqMgvDGH8gaZTt/DmGKKlUZISEDM+qRo/EMfJYxQYoJYtqtSkJq0+dAR9phrEHQt36hCELUmvXNgr7PcJ+kD3ZzDocgayyNCQBgGRRMlnDlnVDCWHpVbS8QaEQL9MlbXf7yd38xSiK2S4NFqF955jj7ow56HfkxBC99a6kl3cQzmWHB8Pb/s/R5KU/eHz4+vLj22goX5+tMk24Xy4/L1wvAszQeAY8cWfBCeC2gEUhL5n8ckpiJofU7PCyfBiiDC0/7YWZa8OhQiRCjK54Fdngqm3YaRsJlCPlXRSjk8MTlEcmGwcgifBz34Vo/ELqtoeGbU3DNyxaKapRMuf1hSPjPMqZmVRSOcvQpctVKkvnNKWcpSmnsxbDvpjGvOSFIEmwVxWqqipaYvZLXH+xZelZ1hPXg2Wp2mAlC/VSI6jFBUVo/ppkTj20fXYxQH3EthGkD1xpXOyaYclsFIWA4ffq69aNlXzCd4J5R3IuTLeKRe43c5F2U7YqBxjFUR7pMkeG4ijVQXO0Rifv9uE0dTSanu4fJsPRw3hyeXGs3a2K5dbMxV5dGFNFPdpktDX5AIR9CClKEpRMyCRAT0KmECfscoLbhljWPmksczT5KIrIO8oVvKUkukwNMyQ729eH2kDUmKbuBiQvFchlFpx3WGzrJnhjYnY3A3rxeLrmDnhap1S0pymqLzH7pS8xf61S/iKKz+V7RQazLp0ghZGL6tYUxq4fu9OkMJYSudpqrr9rCmP1qo7y3OhEKUyG+PGQUtE4JEM+FMszYOicE0PnWBg658ZQPxZoCEPzf4TQPSeErroLMw+E0FX2haa6jjYNoX6ucgIIi7j4z2PYPWsstBUM1X3rzhgqibSpHk80jeHRD6mOi2EFwoLJ5jHc9XCrc04M1WMWbSXdOTO0FEfq2t40hvrpVgRi8fFCg5EP7gi8orDKIAixHwtA+UAjyg1iM4Y9EPbljQhDKHxc890g/gCva3+CmZno07qX9nXLHuyzu5NfZaSzVp4QlXnbMOs+3QsaX0y32/s7Qla1Dch0mqA9R5AXi884afXiY5g1/AM=</diagram></mxfile>
<mxfile host="Electron" modified="2023-11-22T14:06:37.261Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.6.2 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" etag="_l5qiawqTrViGRQXn185" version="20.6.2" type="device" pages="3"><diagram id="O96H6G2-MBiRhnGMjF2G" name="RuleEngine">3ZhbT9swFMc/TR5BuTSXPpY2MKQCUzu08YRM4jaWkjhyXNry6WcT52I7W8ugI5vUh5xj+zj+n1/jYxvONNtdEVAkNziGqWGb8c5wZoZtWyPbNvjPjPeVxw2CyrEmKBadWscSvUDhNIV3g2JYSh0pxilFheyMcJ7DiEo+QAjeyt1WOJVnLcAaao5lBFLd+x3FNKm8gWu2/i8QrZN6ZssULRmoOwtHmYAYbzsuJzScKcGYVk/ZbgpTLl6tSzXu8hetzYsRmNNjBpyZq+USPE3xXWGjbVgsZsA/E1GeQboRC56Fl5P7+bfHyezm+vZxcTcPxevTfa0Ji8vkZ8bFNkEULgsQ8ZYtI4D5EpqlzLLY4wrnVKTU8pitv3I9PyQU7jousYQriDNIyZ51Ea21mgInT5jbNjcNOkk3L/U4IHhYN5FbydiDUO0NCo40BRf38/AxvL26vg2Hp99IEdDXBbTGfQKapxLQ1QQsIV1sUvavV4UjeJPHkAczPwc+RxavVz27Rz3vVOJ5mnhRCgEZpnwjc2jy+Zp8II65eIPTznWHpl2gaUdghp/hIOXzB4feWJNP3yfyeMJLGGZFKShLFMk6yaIyccj+BzfO3dp86LbNdpK1F9bRapd4QyJ4eCukgKwhPfzFh7FUeum56+TG7UlN7SMwBRQ9ywVbX77EDF8xYitr0HBGChpqqVCtW4zqFlhqoLEcyPKVQJUwWqBXfJpl/zlRdd3zcUipaMAdoh3CmPUgxvHnli9u7N+J5ekx9AaFofdRGHqfjaF+pjgRhtZ/AKE/KAh95XTQnKXeCqHvKxCq++ipIbQ/A8L2u/ivYRgMCkNPLXbVw+fRGCpln+X+ZQydYWMoQdgy+eEY1jd3hzAcDQpDOziwkx5dGSr3Btpt1Kkx1C+pMpDzm08NRqb8HDzBVGYQpGidc0BZ5iFhDn7yQhFIJ6IhQ3HMY1wQWKIX8PQajzNT8DW9rtK9MNzZUeeN3/+V1DNfc/crZjW616t9Z0Hz3PKD8fsI2fcOwKtVCd+YQWa2d8BV9/Ym3Ql/Ag==</diagram><diagram id="AD0m7nGBSN-_X6hBBRl8" name="RuleWhitelist">3ZjZctowFIafhstkvOCFSxLIMkPaTqGT5iqjWAKrtS1GFgHy9JViGVuSG8hi4jY38fklHVm/Pqyl556nm0sKlvENgSjpORbc9NxRz+F/gcP/CWVbKF4YFsKCYlhIdiVM8ROSoiXVFYYoVyoyQhKGl6oYkSxDEVM0QClZq9XmJFF7XYIFMoRpBBJTvcWQxYUaelalXyG8iMuebUuWpKCsLIU8BpCsa5I77rnnlBBWPKWbc5QI80pfinYXfyndvRhFGTukwTrxLn17Gi6Zj36lfgbR78GJzPIIkpUc8Gh8Mfwxmd0PRzfXX+6/f52M5euzbekJz8vt58HZOsYMTZcgEiVrTgDXYpYmPLL545xkTE6p3eex+cpl/4gytKlJcgiXiKSI0S2vIktPHMsr2kigfGnvupqdHTxxfWbKeQCSiMUud2Uaf5C+vcLDvuHh7dX1bDy5ns66558TWop9gWmfPWiyz2rLPs+wD0A4hJCiPEf5jMxidCtsSnDODCspWfEsIr11XDulfa7VgJ/T4J/fln2+YR9FKXlEOwcvKEm76WGJZF9FstFT75ieBi8g2VUgZaln7Tez8Qfempnhy4B2Hs/APgBP95iODgxHzSUmg0Ox++FRlIA8x5Hqk2oqN4duf4rg1CvDu3rZaKNEWxkd7HZOVjRC+9dQBugCsf2LBYLKrs2cu9rcNH05So2iBDD8qO71muZL9vCNYD6yHRqu9uVy9D1GMW7Zqr430xMN1ER2oCUqjDESPeOzG/bbiSoR/zikdDTQBrMaYTy6k+3Ec8WXCLbvxLJ9DP1OYeh/FIb+Z2NoHkdawtD+DyAMOgVh4GgQ2m+EMAg0CPV1tG0Inc+AsPou/msYhp3C0Pc0DPVz68EYahtp2zsyhm63MVQgrJj8cAzLS799GPY7haF+zWKspAfvDF0tkb62t42hebuVgkxcmhowcucn4AElKoMgwYtMAMpnHlEuiJMXjkAylAUphlDkOOOnQfwEHp7zCWaWYkzPo/TOet7ooPPGyz8l/cy3uzaWvfbqN7NNZ0Hr1A7CwfsI2TY2IPN5jl45gzysro+L6tUlvDv+Aw==</diagram><diagram name="RuleSanctionList" id="msufnQv3a8wW5Y6DPkme">1ZfbctowEIafxpdkfMAcLjmlYUqgUyfTpDcZYQusGduisgg4T98Vlm1kuQGaMm25wftLXrH/fraE4Yzi/SeGNuE9DXBk2GawN5yxYcOna8OXULJccXu9XFgzEuSSVQkeecNSNKW6JQFOlYmc0oiTjSr6NEmwzxUNMUZ36rQVjdRVN2iNNcHzUaSr30jAw1ztuWal32GyDouVLVOOxKiYLIU0RAHdHUnOxHBGjFKeX8X7EY6EeYUv3TtuLUfD5Lv3Ay/S1udNMJi38mS3l9xSlsBwwv9satncVxRtpV/jye3gcfbwMhjfT+cvXxeziayeZ4WlkBe6B8FwFxKOvQ3yxcgOAAIt5HEEkQWXK5pwSYTVhlguhhnH+1p3TpRmlX4DqJjGmLMM7pNZWrbp5okkpB3Zsl3V8RLI8LjbRW+RpGxd5q6chAtp5gXGOpqx3mA+epgu5rOp9/Cf+Gr3TMXWrm6r1W+y1byWrW3N1hRzDyU+JzSZkZQvGPLBz7q1jG6TAIvM5j9kb0el1jEbsLUb/O1cy96eZq8OaRIMxGsZIj9CaUp81TzVabCHZU8iuHGL8Pl4bLxXokxGzS3AgfauP6cB8Pvplvn49OPKEVvj9/K1mxt61DC3oV+FxnCEOHlVa2hqolzhCyVQXcmL01YfR7v+9srLlHcdbwX1RH01kdWtJcp90BIdmCrL/n3MLH3b+SBndV7wnvAnOVNcP1cIQlRBJ4JMY1UhtQL3F6xem037TDadv8lmfavQkDqbTaeWqA75tdnUd+4YJeKQqREKHZ+hJZyXFTBRRNaJoBa6jxkIYuMgcCAdyIGYBIHIMWQ4JW9oecgnQNqImg5VukPDHV+yE8nTs0xmlG+G0xDa725R5o3V7fU/RkjWeANdrWDrvqyDEFbH7Xx69afFmfwE</diagram></mxfile>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion doc/accessControl/access-control.drawio
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2023-05-19T13:59:37.339Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.6.2 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" etag="V24dRZzOR94HyYubrwK5" version="20.6.2" type="device" pages="2"><diagram id="O96H6G2-MBiRhnGMjF2G" name="RuleEngine">3ZjbcpswEIafhstkOBiwLx2bpJlxko7dTJurjAKy0QwgRsixydNXCuIgidZOEze0V2ZX0gr9+xmtZDizdH9FQB7f4Agmhm1Ge8OZG7Ztu2OX/XBPWXks05tUng1BkfC1jhV6gXVH4d2iCBZSR4pxQlEuO0OcZTCkkg8QgndytzVO5FlzsIGaYxWCRPd+RxGNK+/YNVv/F4g2cT2zZYqWFNSdhaOIQYR3HZcTGM6MYEyrp3Q/gwlXr9alGnf5i9bmxQjM6DEDzsz1agWeZvgut9EuyJdz4J+JKM8g2YoFz4PL6f3i2+N0fnN9+7i8WwTi9WlZa8LiMvmZcbGLEYWrHIS8ZccQYL6YpgmzLPa4xhkVKbU8ZuuvXM8PCYX7jkss4QriFFJSsi41UkJNwZMnzF2bmwaduJuXehwQPGyayK1k7EGo9gYFR5qCy/tF8BjcXl3fBsPTb6QI6OsCWpM+Ac1TCehqAhaQLrcJ+9erwhG8zSLIg5mfA58ji9ernt2jnncq8TxNvDCBgAxTvpE5NPl8TT4QRVy8wWnnukPTbqxpR2CKn+Eg5fMHh95Ek0/fJ7JoyksYZoUJKAoUyjrJojJxSPmDG+dubT502+Z7ySqFdbTaBd6SEB7eCikgG0gPf/FhJJVeeu46uXF7UlP7CEwARc9ywdaXLzHDV4zYyho0nJGChloqVOsWo7oFlhpoIgeyfCVQJYwW6BWfZtl/TlRd93wcUioacI9ohzBmPYhx/LnlixvlO7E8PYbeoDD0PgpD77Mx1M8UJ8LQ+g8g9AcFoa+cDpqz1Fsh9H0FQnUfPTWE9mdA2H4X/zUMx4PC0FOLXfXweTSGStlnuX8ZQ2fYGEoQtkx+OIb1zd0hDEeDwtAeH9hJj64MlXsD7Tbq1Bjql1QpyPjNpwYjU34BnmAiMwgStMk4oCzzkDAHP3mhECRT0ZCiKOIxLggs0At4eo3Hmcn5ml5X6V4Y7vyo88bv/0rqma+5+xWzGt3r1b6zoHlu+ePJ+wgpewfg9bqAb8wgM9s74Kp7e5XuBD8B</diagram><diagram id="AD0m7nGBSN-_X6hBBRl8" name="RuleWhitelist">3Zhbc6IwGIZ/DZftcBDQS1vtYcbu7qzudHvVSUmU7AJxQqzSX79JCUISttqDlt0r+d4kX8ibR3KwvPN0c0nBMr4hECWWa8ON5Y0s13UDt89/hFKUSuj5pbCgGJaSUwtT/ISkaEt1hSHKlYqMkIThpSpGJMtQxBQNUErWarU5SdRel2CBDGEagcRUbzFkcan2fbvWrxBexFXPji1LUlBVlkIeA0jWDckbW945JYSVT+nmHCXCvMqXst3FX0q3L0ZRxvZpsE78y8CZ9pcsQL/SIIPo9+BEZnkEyUoOeDS+GP6YzO6Ho5vrL/ffv07G8vVZUXnC83L7eXC2jjFD0yWIRMmaE8C1mKUJjxz+OCcZk1Pq9HhsvnLVP6IMbRqSHMIlIilitOBVZOmJa0uAJFCBtHddz84Wnrg5M9U8AEnEYpu7No0/SN9e4WHP8PD26no2nlxPZ93zz+3bin2haZ8zaLPPPpR9vmEfgHAIIUV5jvIZmcXoVtiU4JwZVlKy4llEevu4dkr7PLsFP7fFv+BQ9gWGfRSl5BFtHbygJO2mhxWSPRXJVk/9Y3oavoBkV4GUpb6928zWP/jBzOy/DGjn8QydPfD0junowHDUXGIyOBS7Hx5FCchzHKk+qaZyc2jxUwSnfhXeNctGGyUqZLS32zlZ0QjtXkMZoAvEdi8WCCq7NnPuGnPT9uWoNIoSwPCjutdrmy/ZwzeC+ci2aHjal8vV9xjluGWr5t5MTzRQEzmhlqg0xkj0jM922G8nqkL845DS0UAbzBqE8ehOthPPNV8iKN6J5eExDDqFYfBRGAafjaF5HDkQhs5/AGHYKQhDV4PQeSOEYahBqK+jh4bQ/QwI6+/iv4Zhv1MYBr6GoX5u3RtDbSPt+EfG0Os2hgqENZMfjmF16bcLw16nMNSvWYyVdO+doacl0tf2Q2No3m6lIBOXpgaM3PkJeECJyiBI8CITgPKZR5QL4uSFI5AMZUGKIRQ5zvhpED+Bh+d8gpmlGNPzKP0zyx/tdd54+a+kn/m218ayV6t5M9t2FrRPnbA/eB8hRWsDMp/n6JUzyMP6+risXl/Ce+M/</diagram></mxfile>
<mxfile host="Electron" modified="2023-11-22T14:15:17.863Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.6.2 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" etag="IAOJcTwx7-sYH6vO0wR1" version="20.6.2" type="device" pages="3"><diagram id="O96H6G2-MBiRhnGMjF2G" name="RuleEngine">3ZhbT9swFMc/TR5BuTSXPpY2MKQCUzu08YRM4jaWkjhyXNry6WcT52I7W8ugI5vUh5xj+zj+n1/jYxvONNtdEVAkNziGqWGb8c5wZoZtWyPbNvjPjPeVxw2CyrEmKBadWscSvUDhNIV3g2JYSh0pxilFheyMcJ7DiEo+QAjeyt1WOJVnLcAaao5lBFLd+x3FNKm8gWu2/i8QrZN6ZssULRmoOwtHmYAYbzsuJzScKcGYVk/ZbgpTLl6tSzXu8hetzYsRmNNjBpyZq+USPE3xXWGjbVgsZsA/E1GeQboRC56Fl5P7+bfHyezm+vZxcTcPxevTfa0Ji8vkZ8bFNkEULgsQ8ZYtI4D5EpqlzLLY4wrnVKTU8pitv3I9PyQU7jousYQriDNIyZ51Ea21mgInT5jbNjcNOkk3L/U4IHhYN5FbydiDUO0NCo40BRf38/AxvL26vg2Hp99IEdDXBbTGfQKapxLQ1QQsIV1sUvavV4UjeJPHkAczPwc+RxavVz27Rz3vVOJ5mnhRCgEZpnwjc2jy+Zp8II65eIPTznWHpl2gaUdghp/hIOXzB4feWJNP3yfyeMJLGGZFKShLFMk6yaIyccj+BzfO3dp86LbNdpK1F9bRapd4QyJ4eCukgKwhPfzFh7FUeum56+TG7UlN7SMwBRQ9ywVbX77EDF8xYitr0HBGChpqqVCtW4zqFlhqoLEcyPKVQJUwWqBXfJpl/zlRdd3zcUipaMAdoh3CmPUgxvHnli9u7N+J5ekx9AaFofdRGHqfjaF+pjgRhtZ/AKE/KAh95XTQnKXeCqHvKxCq++ipIbQ/A8L2u/ivYRgMCkNPLXbVw+fRGCpln+X+ZQydYWMoQdgy+eEY1jd3hzAcDQpDOziwkx5dGSr3Btpt1Kkx1C+pMpDzm08NRqb8HDzBVGYQpGidc0BZ5iFhDn7yQhFIJ6IhQ3HMY1wQWKIX8PQajzNT8DW9rtK9MNzZUeeN3/+V1DNfc/crZjW616t9Z0Hz3PKD8fsI2fcOwKtVCd+YQWa2d8BV9/Ym3Ql/Ag==</diagram><diagram id="AD0m7nGBSN-_X6hBBRl8" name="RuleWhitelist">3ZjZctowFIafhstkvOCFSxLIMkPaTqGT5iqjWAKrtS1GFgHy9JViGVuSG8hi4jY38fklHVm/Pqyl556nm0sKlvENgSjpORbc9NxRz+F/gcP/CWVbKF4YFsKCYlhIdiVM8ROSoiXVFYYoVyoyQhKGl6oYkSxDEVM0QClZq9XmJFF7XYIFMoRpBBJTvcWQxYUaelalXyG8iMuebUuWpKCsLIU8BpCsa5I77rnnlBBWPKWbc5QI80pfinYXfyndvRhFGTukwTrxLn17Gi6Zj36lfgbR78GJzPIIkpUc8Gh8Mfwxmd0PRzfXX+6/f52M5euzbekJz8vt58HZOsYMTZcgEiVrTgDXYpYmPLL545xkTE6p3eex+cpl/4gytKlJcgiXiKSI0S2vIktPHMsr2kigfGnvupqdHTxxfWbKeQCSiMUud2Uaf5C+vcLDvuHh7dX1bDy5ns66558TWop9gWmfPWiyz2rLPs+wD0A4hJCiPEf5jMxidCtsSnDODCspWfEsIr11XDulfa7VgJ/T4J/fln2+YR9FKXlEOwcvKEm76WGJZF9FstFT75ieBi8g2VUgZaln7Tez8Qfempnhy4B2Hs/APgBP95iODgxHzSUmg0Ox++FRlIA8x5Hqk2oqN4duf4rg1CvDu3rZaKNEWxkd7HZOVjRC+9dQBugCsf2LBYLKrs2cu9rcNH05So2iBDD8qO71muZL9vCNYD6yHRqu9uVy9D1GMW7Zqr430xMN1ER2oCUqjDESPeOzG/bbiSoR/zikdDTQBrMaYTy6k+3Ec8WXCLbvxLJ9DP1OYeh/FIb+Z2NoHkdawtD+DyAMOgVh4GgQ2m+EMAg0CPV1tG0Inc+AsPou/msYhp3C0Pc0DPVz68EYahtp2zsyhm63MVQgrJj8cAzLS799GPY7haF+zWKspAfvDF0tkb62t42hebuVgkxcmhowcucn4AElKoMgwYtMAMpnHlEuiJMXjkAylAUphlDkOOOnQfwEHp7zCWaWYkzPo/TOet7ooPPGyz8l/cy3uzaWvfbqN7NNZ0Hr1A7CwfsI2TY2IPN5jl45gzysro+L6tUlvDv+Aw==</diagram><diagram name="RuleSanctionList" id="msufnQv3a8wW5Y6DPkme">1VfbctowEP0aP5LxBQd45JYmUwKdOpkmfckIW9iasS1XFgHn67vCso0sNwlNmbZPaI+kI/bsQSsMZ5rsPzGURbc0wLFhm8HecGaGbdvmwIQPgRQl4tqjEggZCUrIagCPvGAJyn3hlgQ4VxZySmNOMhX0aZpinysYYozu1GUbGqunZijEGuD5KNbRbyTgUYkOXbPBrzEJo+pky5QzCaoWSyCPUEB3R5AzN5wpo5SXo2Q/xbEQr9JlcM2t9XSSfvd+4FXe+5wF42WvJLs6ZUudAsMp/7PUdkn9jOKt1Gs2vxrfL+6exrPbm+XT19ViLrPnRSUp8EL1IJjsIsKxlyFfzOzAQIBFPIkhsmC4oSmXjrD6EMvDMON436rOG6lZtd5gVEwTzFkB+yRLzzbdkkia9FKWbNdUvDZkdFztqrZIuiysuRslYSDFPEFYRxPWGy+ndzer5eLGu/tPdLWHpiLrQJfVGnXJap5L1r4ma465h1KfE5ouSM5XDPmgZ1taRrdpgAWz+Q/Je6m61jE7bGt36Ht5LnmHmry6SdNgLK5liPwY5TnxVfFUpUEeVjyI4MKtwsfjudleiQoZdZcAB9pd/54CwPenW+bjt3+uHLEQv8bX7y7oUcHcjnpVGMMx4uRZzaGriPKEL5RAdrVfnL76c7Tbt1eZptx13AraRCOVyBq0iEodNKKDp+q0f99mlt52Puiztl/wnvAHuVKMHxsLQtSYTgSF5lXFqY1xf+HVc3vTfqc3nb/pzXar0Cz1bm86LaK2yc/tTb1zJygVj0zNoVDxBVrDe1kxJopJmArXQvUxA0A0DgIP0rGcSEgQCI4Jwzl5QesDnzBSJnI6ZOlODHd2SieSr2dJZtQ3w9smtF9tUeaFNRiOPuaQonMD3WygdZ9WQQib53a5vPnT4sx/Ag==</diagram></mxfile>
Loading

0 comments on commit ddaaaae

Please sign in to comment.