From cd129ef3d45cddc7258fb5a26a63d97e76681a08 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 16 May 2025 04:17:25 +0000 Subject: [PATCH 001/165] first commit Signed-off-by: Teo Koon Peng --- biome.json | 30 + diagram-editor/.gitignore | 13 + diagram-editor/README.md | 29 + diagram-editor/package.json | 32 + diagram-editor/pnpm-lock.yaml | 1463 +++++++++++++++++++ diagram-editor/rsbuild.config.ts | 11 + diagram-editor/scripts/generate-types.mjs | 10 + diagram-editor/src/app.css | 10 + diagram-editor/src/app.tsx | 28 + diagram-editor/src/diagram-editor.tsx | 60 + diagram-editor/src/env.d.ts | 1 + diagram-editor/src/index.tsx | 13 + diagram-editor/src/nodes/index.ts | 12 + diagram-editor/src/nodes/start-node.tsx | 23 + diagram-editor/src/nodes/terminate-node.tsx | 23 + diagram-editor/src/types/diagram.d.ts | 208 +++ diagram-editor/tsconfig.json | 23 + 17 files changed, 1989 insertions(+) create mode 100644 biome.json create mode 100644 diagram-editor/.gitignore create mode 100644 diagram-editor/README.md create mode 100644 diagram-editor/package.json create mode 100644 diagram-editor/pnpm-lock.yaml create mode 100644 diagram-editor/rsbuild.config.ts create mode 100644 diagram-editor/scripts/generate-types.mjs create mode 100644 diagram-editor/src/app.css create mode 100644 diagram-editor/src/app.tsx create mode 100644 diagram-editor/src/diagram-editor.tsx create mode 100644 diagram-editor/src/env.d.ts create mode 100644 diagram-editor/src/index.tsx create mode 100644 diagram-editor/src/nodes/index.ts create mode 100644 diagram-editor/src/nodes/start-node.tsx create mode 100644 diagram-editor/src/nodes/terminate-node.tsx create mode 100644 diagram-editor/src/types/diagram.d.ts create mode 100644 diagram-editor/tsconfig.json diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..78a8d9f7 --- /dev/null +++ b/biome.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "organizeImports": { + "enabled": true + }, + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "formatter": { + "indentStyle": "space" + }, + "javascript": { + "formatter": { + "quoteStyle": "single" + } + }, + "css": { + "parser": { + "cssModules": true + } + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + } +} diff --git a/diagram-editor/.gitignore b/diagram-editor/.gitignore new file mode 100644 index 00000000..38d7344c --- /dev/null +++ b/diagram-editor/.gitignore @@ -0,0 +1,13 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea diff --git a/diagram-editor/README.md b/diagram-editor/README.md new file mode 100644 index 00000000..5fc0306f --- /dev/null +++ b/diagram-editor/README.md @@ -0,0 +1,29 @@ +# Rsbuild project + +## Setup + +Install the dependencies: + +```bash +pnpm install +``` + +## Get started + +Start the dev server: + +```bash +pnpm dev +``` + +Build the app for production: + +```bash +pnpm build +``` + +Preview the production build locally: + +```bash +pnpm preview +``` diff --git a/diagram-editor/package.json b/diagram-editor/package.json new file mode 100644 index 00000000..ca7b5167 --- /dev/null +++ b/diagram-editor/package.json @@ -0,0 +1,32 @@ +{ + "name": "diagram-editor", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "build": "rsbuild build", + "generate-types": "node scripts/generate-types.mjs", + "check": "biome check --write", + "dev": "rsbuild dev --open", + "format": "biome format --write", + "preview": "rsbuild preview" + }, + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@fontsource/roboto": "^5.2.5", + "@mui/material": "^7.1.0", + "@xyflow/react": "^12.6.1", + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "@rsbuild/core": "^1.3.15", + "@rsbuild/plugin-react": "^1.3.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.3", + "json-schema-to-typescript": "15.0.4", + "typescript": "^5.8.3" + } +} diff --git a/diagram-editor/pnpm-lock.yaml b/diagram-editor/pnpm-lock.yaml new file mode 100644 index 00000000..f6ef8e13 --- /dev/null +++ b/diagram-editor/pnpm-lock.yaml @@ -0,0 +1,1463 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@emotion/react': + specifier: ^11.14.0 + version: 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/styled': + specifier: ^11.14.0 + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@fontsource/roboto': + specifier: ^5.2.5 + version: 5.2.5 + '@mui/material': + specifier: ^7.1.0 + version: 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@xyflow/react': + specifier: ^12.6.1 + version: 12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + devDependencies: + '@biomejs/biome': + specifier: ^1.9.4 + version: 1.9.4 + '@rsbuild/core': + specifier: ^1.3.15 + version: 1.3.20 + '@rsbuild/plugin-react': + specifier: ^1.3.0 + version: 1.3.1(@rsbuild/core@1.3.20) + '@types/react': + specifier: ^19.1.2 + version: 19.1.4 + '@types/react-dom': + specifier: ^19.1.3 + version: 19.1.5(@types/react@19.1.4) + json-schema-to-typescript: + specifier: 15.0.4 + version: 15.0.4 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + +packages: + + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@biomejs/biome@1.9.4': + resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.9.4': + resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.9.4': + resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.9.4': + resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.9.4': + resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.9.4': + resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.9.4': + resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.9.4': + resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.9.4': + resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.3.1': + resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.0': + resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@fontsource/roboto@5.2.5': + resolution: {integrity: sha512-70r2UZ0raqLn5W+sPeKhqlf8wGvUXFWlofaDlcbt/S3d06+17gXKr3VNqDODB0I1ASme3dGT5OJj9NABt7OTZQ==} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@module-federation/error-codes@0.13.1': + resolution: {integrity: sha512-azgGDBnFRfqlivHOl96ZjlFUFlukESz2Rnnz/pINiSqoBBNjUE0fcAZP4X6jgrVITuEg90YkruZa7pW9I3m7Uw==} + + '@module-federation/runtime-core@0.13.1': + resolution: {integrity: sha512-TfyKfkSAentKeuvSsAItk8s5tqQSMfIRTPN2e1aoaq/kFhE+7blps719csyWSX5Lg5Es7WXKMsXHy40UgtBtuw==} + + '@module-federation/runtime-tools@0.13.1': + resolution: {integrity: sha512-GEF1pxqLc80osIMZmE8j9UKZSaTm2hX2lql8tgIH/O9yK4wnF06k6LL5Ah+wJt+oJv6Dj55ri/MoxMP4SXoPNA==} + + '@module-federation/runtime@0.13.1': + resolution: {integrity: sha512-ZHnYvBquDm49LiHfv6fgagMo/cVJneijNJzfPh6S0CJrPS2Tay1bnTXzy8VA5sdIrESagYPaskKMGIj7YfnPug==} + + '@module-federation/sdk@0.13.1': + resolution: {integrity: sha512-bmf2FGQ0ymZuxYnw9bIUfhV3y6zDhaqgydEjbl4msObKMLGXZqhse2pTIIxBFpIxR1oONKX/y2FAolDCTlWKiw==} + + '@module-federation/webpack-bundler-runtime@0.13.1': + resolution: {integrity: sha512-QSuSIGa09S8mthbB1L6xERqrz+AzPlHR6D7RwAzssAc+IHf40U6NiTLPzUqp9mmKDhC5Tm0EISU0ZHNeJpnpBQ==} + + '@mui/core-downloads-tracker@7.1.0': + resolution: {integrity: sha512-E0OqhZv548Qdc0PwWhLVA2zmjJZSTvaL4ZhoswmI8NJEC1tpW2js6LLP827jrW9MEiXYdz3QS6+hask83w74yQ==} + + '@mui/material@7.1.0': + resolution: {integrity: sha512-ahUJdrhEv+mCp4XHW+tHIEYzZMSRLg8z4AjUOsj44QpD1ZaMxQoVOG2xiHvLFdcsIPbgSRx1bg1eQSheHBgvtg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material-pigment-css': ^7.1.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@mui/material-pigment-css': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@7.1.0': + resolution: {integrity: sha512-4Kck4jxhqF6YxNwJdSae1WgDfXVg0lIH6JVJ7gtuFfuKcQCgomJxPvUEOySTFRPz1IZzwz5OAcToskRdffElDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@7.1.0': + resolution: {integrity: sha512-m0mJ0c6iRC+f9hMeRe0W7zZX1wme3oUX0+XTVHjPG7DJz6OdQ6K/ggEOq7ZdwilcpdsDUwwMfOmvO71qDkYd2w==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/system@7.1.0': + resolution: {integrity: sha512-iedAWgRJMCxeMHvkEhsDlbvkK+qKf9me6ofsf7twk/jfT4P1ImVf7Rwb5VubEA0sikrVL+1SkoZM41M4+LNAVA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.4.2': + resolution: {integrity: sha512-edRc5JcLPsrlNFYyTPxds+d5oUovuUxnnDtpJUbP6WMeV4+6eaX/mqai1ZIWT62lCOe0nlrON0s9HDiv5en5bA==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@7.1.0': + resolution: {integrity: sha512-/OM3S8kSHHmWNOP+NH9xEtpYSG10upXeQ0wLZnfDgmgadTAk5F4MQfFLyZ5FCRJENB3eRzltMmaNl6UtDnPovw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@rsbuild/core@1.3.20': + resolution: {integrity: sha512-5VxOddgGHaq5x4ONdKOZvLYLj8dhVfCAz+cERNLXrKLzBISouY1A9TJcbZBK4xoH/0DJrDtDzapNA+dI9Jr07Q==} + engines: {node: '>=16.10.0'} + hasBin: true + + '@rsbuild/plugin-react@1.3.1': + resolution: {integrity: sha512-1PfE0CZDwiSIUFaMFOEprwsHK6oo29zU6DdtFH2D49uLcpUdOUvU1u2p00RCVO1CIgnAjRajLS7dnPdQUwFOuQ==} + peerDependencies: + '@rsbuild/core': 1.x + + '@rspack/binding-darwin-arm64@1.3.10': + resolution: {integrity: sha512-0k/j8OeMSVm5u5Nzckp9Ie7S7hprnvNegebnGr+L6VCyD7sMqm4m+4rLHs99ZklYdH0dZtY2+LrzrtjUZCqfew==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.3.10': + resolution: {integrity: sha512-jOyqYW/18cgxw60wK5oqJvM194pbD4H99xaif89McNtLkH3npFvBkXBHVWWuOHGoXNX0LhRpHcI89p9b9THQZQ==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.3.10': + resolution: {integrity: sha512-zhF5ZNaT/7pxrm8xD3dWG1b4x+FO3LbVeZZG448CjpSo5T57kPD+SaGUU1GcPpn6mexf795x0SVS49aH7/e3Dg==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.3.10': + resolution: {integrity: sha512-o3x7IrOSCHK6lcRvdZgsSuOG1CHRQR00xiyLW7kkWmNm7t417LC9xdFWKIK62C5fKXGC5YcTbUkDMnQujespkg==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.3.10': + resolution: {integrity: sha512-FMSi28VZhXMr15picOHFynULhqZ/FODPxRIS6uNrvPRYcbNuiO1v+VHV6X88mhOMmJ/aVF6OwjUO/o2l1FVa9Q==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.3.10': + resolution: {integrity: sha512-e0xbY9SlbRGIFz41v1yc0HfREvmgMnLV1bLmTSPK8wI2suIEJ7iYYqsocHOAOk86qLZcxVrTnL6EjUcNaRTWlg==} + cpu: [x64] + os: [linux] + + '@rspack/binding-win32-arm64-msvc@1.3.10': + resolution: {integrity: sha512-YHJPvEujWeWjU6EUF6sDpaec9rsOtKVvy16YCtGaxRpDQXqfuxibnp6Ge0ZTTrY+joRiWehRA9OUI+3McqI+QA==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.3.10': + resolution: {integrity: sha512-2iwSBzVBC89ZSk56MYwgirh3bda2WKmL9I3qPajiTEivChXpX7jp83jAtGE6CPqPYcccYz6nrURTHNUZhqXxVw==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.3.10': + resolution: {integrity: sha512-ehWJ9Y5Zezj/+uJpiWbt29RZaRIM00f91PWuabM6/sKmHJhdCEE21u5iI3B8DeW/EjJsH8zkI69YYAxJWwGn9A==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.3.10': + resolution: {integrity: sha512-9TjO+Ig5U4VqdYWpBsv01n4d2KsgFfdXGIE7zdHXDDbry0avL0J4109ESqSeP9uC+Bi7ZCF53iaxJRvZDflNVQ==} + + '@rspack/core@1.3.10': + resolution: {integrity: sha512-YomvSRGuMUQgCE2rNMdff2q1Z0YpZw/z6m5+PVTMSs9l/q69YKUzpbpSD8YyB5i1DddrRxC2RE34DkrBuwlREQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/lite-tapable@1.0.1': + resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} + engines: {node: '>=16.0.0'} + + '@rspack/plugin-react-refresh@1.4.3': + resolution: {integrity: sha512-wZx4vWgy5oMEvgyNGd/oUKcdnKaccYWHCRkOqTdAPJC3WcytxhTX+Kady8ERurSBiLyQpoMiU3Iyd+F1Y2Arbw==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + webpack-hot-middleware: 2.x + peerDependenciesMeta: + webpack-hot-middleware: + optional: true + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@19.1.5': + resolution: {integrity: sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@19.1.4': + resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} + + '@xyflow/react@12.6.1': + resolution: {integrity: sha512-DQs1LOaxSIdsoxsfZSLBoID93eQvfBXDraBwalpKaVcWTueWfjnW9mQ7jviwC3zPLwyx/ioPh+C45/Ez7+CHUQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@xyflow/system@0.0.58': + resolution: {integrity: sha512-f4l+/AAdWejcFrkaCbKWRWyL64G7gMR0xrwRlbG6oF4KIOMcygGFxOXdOV8QCMcQ9u++QIDpsogpUhexX4vi1Q==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + + classcat@5.0.5: + resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-to-typescript@15.0.4: + resolution: {integrity: sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ==} + engines: {node: '>=16.0.0'} + hasBin: true + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@19.1.0: + resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + zustand@4.5.6: + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@apidevtools/json-schema-ref-parser@11.9.3': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@biomejs/biome@1.9.4': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.9.4 + '@biomejs/cli-darwin-x64': 1.9.4 + '@biomejs/cli-linux-arm64': 1.9.4 + '@biomejs/cli-linux-arm64-musl': 1.9.4 + '@biomejs/cli-linux-x64': 1.9.4 + '@biomejs/cli-linux-x64-musl': 1.9.4 + '@biomejs/cli-win32-arm64': 1.9.4 + '@biomejs/cli-win32-x64': 1.9.4 + + '@biomejs/cli-darwin-arm64@1.9.4': + optional: true + + '@biomejs/cli-darwin-x64@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64@1.9.4': + optional: true + + '@biomejs/cli-linux-x64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-x64@1.9.4': + optional: true + + '@biomejs/cli-win32-arm64@1.9.4': + optional: true + + '@biomejs/cli-win32-x64@1.9.4': + optional: true + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.27.1 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.3.1': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.3.1 + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/utils': 1.4.2 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)': + dependencies: + react: 19.1.0 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@fontsource/roboto@5.2.5': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsdevtools/ono@7.1.3': {} + + '@module-federation/error-codes@0.13.1': {} + + '@module-federation/runtime-core@0.13.1': + dependencies: + '@module-federation/error-codes': 0.13.1 + '@module-federation/sdk': 0.13.1 + + '@module-federation/runtime-tools@0.13.1': + dependencies: + '@module-federation/runtime': 0.13.1 + '@module-federation/webpack-bundler-runtime': 0.13.1 + + '@module-federation/runtime@0.13.1': + dependencies: + '@module-federation/error-codes': 0.13.1 + '@module-federation/runtime-core': 0.13.1 + '@module-federation/sdk': 0.13.1 + + '@module-federation/sdk@0.13.1': {} + + '@module-federation/webpack-bundler-runtime@0.13.1': + dependencies: + '@module-federation/runtime': 0.13.1 + '@module-federation/sdk': 0.13.1 + + '@mui/core-downloads-tracker@7.1.0': {} + + '@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@mui/core-downloads-tracker': 7.1.0 + '@mui/system': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@mui/types': 7.4.2(@types/react@19.1.4) + '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@19.1.4) + clsx: 2.1.1 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-is: 19.1.0 + react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@types/react': 19.1.4 + + '@mui/private-theming@7.1.0(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + prop-types: 15.8.1 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + + '@mui/styled-engine@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 19.1.0 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + + '@mui/system@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@mui/private-theming': 7.1.0(@types/react@19.1.4)(react@19.1.0) + '@mui/styled-engine': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(react@19.1.0) + '@mui/types': 7.4.2(@types/react@19.1.4) + '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + clsx: 2.1.1 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 19.1.0 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@types/react': 19.1.4 + + '@mui/types@7.4.2(@types/react@19.1.4)': + dependencies: + '@babel/runtime': 7.27.1 + optionalDependencies: + '@types/react': 19.1.4 + + '@mui/utils@7.1.0(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@mui/types': 7.4.2(@types/react@19.1.4) + '@types/prop-types': 15.7.14 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.1.0 + react-is: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + + '@popperjs/core@2.11.8': {} + + '@rsbuild/core@1.3.20': + dependencies: + '@rspack/core': 1.3.10(@swc/helpers@0.5.17) + '@rspack/lite-tapable': 1.0.1 + '@swc/helpers': 0.5.17 + core-js: 3.42.0 + jiti: 2.4.2 + + '@rsbuild/plugin-react@1.3.1(@rsbuild/core@1.3.20)': + dependencies: + '@rsbuild/core': 1.3.20 + '@rspack/plugin-react-refresh': 1.4.3(react-refresh@0.17.0) + react-refresh: 0.17.0 + transitivePeerDependencies: + - webpack-hot-middleware + + '@rspack/binding-darwin-arm64@1.3.10': + optional: true + + '@rspack/binding-darwin-x64@1.3.10': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.3.10': + optional: true + + '@rspack/binding-linux-arm64-musl@1.3.10': + optional: true + + '@rspack/binding-linux-x64-gnu@1.3.10': + optional: true + + '@rspack/binding-linux-x64-musl@1.3.10': + optional: true + + '@rspack/binding-win32-arm64-msvc@1.3.10': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.3.10': + optional: true + + '@rspack/binding-win32-x64-msvc@1.3.10': + optional: true + + '@rspack/binding@1.3.10': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.3.10 + '@rspack/binding-darwin-x64': 1.3.10 + '@rspack/binding-linux-arm64-gnu': 1.3.10 + '@rspack/binding-linux-arm64-musl': 1.3.10 + '@rspack/binding-linux-x64-gnu': 1.3.10 + '@rspack/binding-linux-x64-musl': 1.3.10 + '@rspack/binding-win32-arm64-msvc': 1.3.10 + '@rspack/binding-win32-ia32-msvc': 1.3.10 + '@rspack/binding-win32-x64-msvc': 1.3.10 + + '@rspack/core@1.3.10(@swc/helpers@0.5.17)': + dependencies: + '@module-federation/runtime-tools': 0.13.1 + '@rspack/binding': 1.3.10 + '@rspack/lite-tapable': 1.0.1 + caniuse-lite: 1.0.30001718 + optionalDependencies: + '@swc/helpers': 0.5.17 + + '@rspack/lite-tapable@1.0.1': {} + + '@rspack/plugin-react-refresh@1.4.3(react-refresh@0.17.0)': + dependencies: + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + react-refresh: 0.17.0 + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@types/d3-color@3.1.3': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.16': {} + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@19.1.5(@types/react@19.1.4)': + dependencies: + '@types/react': 19.1.4 + + '@types/react-transition-group@4.4.12(@types/react@19.1.4)': + dependencies: + '@types/react': 19.1.4 + + '@types/react@19.1.4': + dependencies: + csstype: 3.1.3 + + '@xyflow/react@12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@xyflow/system': 0.0.58 + classcat: 5.0.5 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + zustand: 4.5.6(@types/react@19.1.4)(react@19.1.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@xyflow/system@0.0.58': + dependencies: + '@types/d3-drag': 3.0.7 + '@types/d3-selection': 3.0.11 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + + argparse@2.0.1: {} + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.27.1 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001718: {} + + classcat@5.0.5: {} + + clsx@2.1.1: {} + + convert-source-map@1.9.0: {} + + core-js@3.42.0: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + csstype@3.1.3: {} + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-ease@3.0.1: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-selection@3.0.0: {} + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.27.1 + csstype: 3.1.3 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + escape-string-regexp@4.0.0: {} + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + find-root@1.1.0: {} + + function-bind@1.1.2: {} + + globals@11.12.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + html-entities@2.6.0: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-to-typescript@15.0.4: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.9.3 + '@types/json-schema': 7.0.15 + '@types/lodash': 4.17.16 + is-glob: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + minimist: 1.2.8 + prettier: 3.5.3 + tinyglobby: 0.2.13 + + lines-and-columns@1.2.4: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + object-assign@4.1.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + prettier@3.5.3: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-is@16.13.1: {} + + react-is@19.1.0: {} + + react-refresh@0.17.0: {} + + react-transition-group@4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/runtime': 7.27.1 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + react@19.1.0: {} + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + scheduler@0.26.0: {} + + source-map@0.5.7: {} + + stackframe@1.3.4: {} + + stylis@4.2.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tslib@2.8.1: {} + + typescript@5.8.3: {} + + use-sync-external-store@1.5.0(react@19.1.0): + dependencies: + react: 19.1.0 + + yaml@1.10.2: {} + + zustand@4.5.6(@types/react@19.1.4)(react@19.1.0): + dependencies: + use-sync-external-store: 1.5.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.4 + react: 19.1.0 diff --git a/diagram-editor/rsbuild.config.ts b/diagram-editor/rsbuild.config.ts new file mode 100644 index 00000000..8a371c4b --- /dev/null +++ b/diagram-editor/rsbuild.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from '@rsbuild/core'; +import { pluginReact } from '@rsbuild/plugin-react'; + +export default defineConfig({ + html: { + meta: { + viewport: 'width=device-width, initial-scale=1.0', + }, + }, + plugins: [pluginReact()], +}); diff --git a/diagram-editor/scripts/generate-types.mjs b/diagram-editor/scripts/generate-types.mjs new file mode 100644 index 00000000..adc5cc44 --- /dev/null +++ b/diagram-editor/scripts/generate-types.mjs @@ -0,0 +1,10 @@ +import crypto from 'node:crypto'; +import fs from 'node:fs'; +import { compile } from 'json-schema-to-typescript'; + +const schema = fs.readFileSync('../diagram.schema.json'); +const hash = crypto.createHash('sha1').update(schema).digest('hex'); +const output = await compile(JSON.parse(schema)); +const fd = fs.openSync('src/types/diagram.d.ts', 'w'); +fs.writeSync(fd, `// Generated from diagram.schema.json (sha1:${hash})\n`); +fs.writeSync(fd, output); diff --git a/diagram-editor/src/app.css b/diagram-editor/src/app.css new file mode 100644 index 00000000..76ab6ca0 --- /dev/null +++ b/diagram-editor/src/app.css @@ -0,0 +1,10 @@ +/* reactflow overrides */ +.react-flow.dark { + --xy-background-color: #121212; +} +.react-flow__pane.draggable { + cursor: default; +} +.react-flow__pane.dragging { + cursor: default; +} diff --git a/diagram-editor/src/app.tsx b/diagram-editor/src/app.tsx new file mode 100644 index 00000000..42cd9bc7 --- /dev/null +++ b/diagram-editor/src/app.tsx @@ -0,0 +1,28 @@ +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; +import '@xyflow/react/dist/style.css'; +import { CssBaseline, ThemeProvider, createTheme } from '@mui/material'; + +import './app.css'; +import DiagramEditor from './diagram-editor'; + +const theme = createTheme({ + palette: { + mode: 'dark', + }, +}); + +const App = () => { + return ( + + +
+ +
+
+ ); +}; + +export default App; diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx new file mode 100644 index 00000000..7736fe09 --- /dev/null +++ b/diagram-editor/src/diagram-editor.tsx @@ -0,0 +1,60 @@ +import { + type Edge, + type OnConnect, + type OnEdgesChange, + type OnNodesChange, + ReactFlow, + StepEdge, + addEdge, + applyEdgeChanges, + applyNodeChanges, +} from '@xyflow/react'; +import React from 'react'; + +import { type DiagramEditorNode, NODE_TYPES } from './nodes'; + +const DiagramEditor = () => { + const [nodes, setNodes] = React.useState(() => [ + { + id: 'builtin:start', + type: 'start', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + { + id: 'builtin:terminate', + type: 'terminate', + position: { x: 0, y: 400 }, + selectable: false, + data: {}, + }, + ]); + const [edges, setEdges] = React.useState([]); + + return ( + >( + (changes) => setNodes((prev) => applyNodeChanges(changes, prev)), + [], + )} + onEdgesChange={React.useCallback( + (changes) => setEdges((prev) => applyEdgeChanges(changes, prev)), + [], + )} + onConnect={React.useCallback( + (params) => setEdges((prev) => addEdge(params, prev)), + [], + )} + colorMode="dark" + /> + ); +}; + +export default DiagramEditor; diff --git a/diagram-editor/src/env.d.ts b/diagram-editor/src/env.d.ts new file mode 100644 index 00000000..b0ac762b --- /dev/null +++ b/diagram-editor/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/diagram-editor/src/index.tsx b/diagram-editor/src/index.tsx new file mode 100644 index 00000000..eacf2b2f --- /dev/null +++ b/diagram-editor/src/index.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './app'; + +const rootEl = document.getElementById('root'); +if (rootEl) { + const root = ReactDOM.createRoot(rootEl); + root.render( + + + , + ); +} diff --git a/diagram-editor/src/nodes/index.ts b/diagram-editor/src/nodes/index.ts new file mode 100644 index 00000000..f345ad85 --- /dev/null +++ b/diagram-editor/src/nodes/index.ts @@ -0,0 +1,12 @@ +import { StartNode } from './start-node'; +import { TerminateNode } from './terminate-node'; + +import type { Node } from '@xyflow/react'; +import type { DiagramOperation } from '../types/diagram'; + +export type DiagramEditorNode = Node>; + +export const NODE_TYPES = { + start: StartNode, + terminate: TerminateNode, +}; diff --git a/diagram-editor/src/nodes/start-node.tsx b/diagram-editor/src/nodes/start-node.tsx new file mode 100644 index 00000000..f85fb0c3 --- /dev/null +++ b/diagram-editor/src/nodes/start-node.tsx @@ -0,0 +1,23 @@ +import { Button, Paper } from '@mui/material'; +import type { NodeProps } from '@xyflow/react'; +import { Handle, Position } from '@xyflow/react'; + +import type { DiagramEditorNode } from '.'; + +export function StartNode({ + isConnectable, + sourcePosition = Position.Bottom, +}: NodeProps) { + return ( + + + + + ); +} diff --git a/diagram-editor/src/nodes/terminate-node.tsx b/diagram-editor/src/nodes/terminate-node.tsx new file mode 100644 index 00000000..22492302 --- /dev/null +++ b/diagram-editor/src/nodes/terminate-node.tsx @@ -0,0 +1,23 @@ +import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '.'; + +import { Handle, Position } from '@xyflow/react'; +import { Button, Paper } from '@mui/material'; + +export function TerminateNode({ + isConnectable, + targetPosition = Position.Top, +}: NodeProps) { + return ( + + + + + ); +} diff --git a/diagram-editor/src/types/diagram.d.ts b/diagram-editor/src/types/diagram.d.ts new file mode 100644 index 00000000..ae78aa9b --- /dev/null +++ b/diagram-editor/src/types/diagram.d.ts @@ -0,0 +1,208 @@ +// Generated from diagram.schema.json (sha1:0b04bf3463933dc7f2b89ba3bf4378156e20b93e) +/* eslint-disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type NextOperation = + | string + | { + builtin: BuiltinTarget; + [k: string]: unknown; + } + | NamespacedOperation; +export type BuiltinTarget = "terminate" | "dispose" | "cancel"; +export type DiagramOperation = + | { + builder: string; + config?: { + [k: string]: unknown; + }; + next: NextOperation; + type: "node"; + [k: string]: unknown; + } + | ( + | { + builder: string; + } + | { + template: string; + } + ) + | { + next: NextOperation[]; + type: "fork_clone"; + [k: string]: unknown; + } + | { + next: NextOperation[]; + type: "unzip"; + [k: string]: unknown; + } + | { + err: NextOperation; + ok: NextOperation; + type: "fork_result"; + [k: string]: unknown; + } + | { + keyed?: { + [k: string]: NextOperation; + }; + remaining?: NextOperation | null; + sequential?: NextOperation[]; + type: "split"; + [k: string]: unknown; + } + | { + /** + * Map of buffer keys and buffers. + */ + buffers: BufferSelection; + next: NextOperation; + type: "join"; + [k: string]: unknown; + } + | { + /** + * Map of buffer keys and buffers. + */ + buffers: BufferSelection; + next: NextOperation; + type: "serialized_join"; + [k: string]: unknown; + } + | { + cel: string; + next: NextOperation; + /** + * Specify what happens if an error occurs during the transformation. If you specify a target for on_error, then an error message will be sent to that target. You can set this to `{ "builtin": "dispose" }` to simply ignore errors. + * + * If left unspecified, a failure will be treated like an implicit operation failure and behave according to `on_implicit_error`. + */ + on_error?: NextOperation | null; + type: "transform"; + [k: string]: unknown; + } + | { + /** + * If true, messages will be serialized before sending into the buffer. + */ + serialize?: boolean | null; + settings?: BufferSettings; + type: "buffer"; + [k: string]: unknown; + } + | { + /** + * Map of buffer keys and buffers. + */ + buffers: BufferSelection; + next: NextOperation; + type: "buffer_access"; + [k: string]: unknown; + } + | { + /** + * Map of buffer keys and buffers. + */ + buffers: BufferSelection; + next: NextOperation; + /** + * The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation. + */ + target_node?: NextOperation | null; + type: "listen"; + [k: string]: unknown; + }; +export type BufferSelection = + | NextOperation + | { + [k: string]: NextOperation; + } + | NextOperation[]; +/** + * Describe how data within a buffer gets retained. Most mechanisms that pull data from a buffer will remove the oldest item in the buffer, so this policy is for dealing with situations where items are being stored faster than they are being pulled. + * + * The default value is KeepLast(1). + */ +export type RetentionPolicy = + | { + keep_last: number; + } + | { + keep_first: number; + } + | "keep_all"; +/** + * This defines how sections remap their inner operations (inputs and buffers) to expose them to operations that are siblings to the section. + */ +export type InputRemapping = + | string[] + | { + [k: string]: NextOperation; + }; + +export interface Diagram { + /** + * To simplify diagram definitions, the diagram workflow builder will sometimes insert implicit operations into the workflow, such as implicit serializing and deserializing. These implicit operations may be fallible. + * + * This field indicates how a failed implicit operation should be handled. If left unspecified, an implicit error will cause the entire workflow to be cancelled. + */ + on_implicit_error?: NextOperation | null; + /** + * Operations that define the workflow + */ + ops: { + [k: string]: DiagramOperation; + }; + /** + * Indicates where the workflow should start running. + */ + start: NextOperation; + templates?: { + [k: string]: SectionTemplate; + }; + /** + * Version of the diagram, should always be `0.1.0`. + */ + version: string; + [k: string]: unknown; +} +/** + * Refer to an operation inside of a namespace, e.g. { "": "" + */ +export interface NamespacedOperation { + [k: string]: string; +} +/** + * Settings to describe the behavior of a buffer. + */ +export interface BufferSettings { + retention: RetentionPolicy; + [k: string]: unknown; +} +export interface SectionTemplate { + /** + * These are the buffers that the section is exposing for you to read, write, join, or listen to. + */ + buffers?: InputRemapping; + /** + * These are the inputs that the section is exposing for its sibling operations to send outputs into. + */ + inputs?: InputRemapping; + /** + * Operations that define the behavior of the section. + */ + ops: { + [k: string]: DiagramOperation; + }; + /** + * These are the outputs that the section is exposing so you can connect them into siblings of the section. + */ + outputs?: string[]; + [k: string]: unknown; +} diff --git a/diagram-editor/tsconfig.json b/diagram-editor/tsconfig.json new file mode 100644 index 00000000..e53d1e57 --- /dev/null +++ b/diagram-editor/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "lib": ["DOM", "ES2020"], + "jsx": "react-jsx", + "target": "ES2020", + "noEmit": true, + "skipLibCheck": true, + "useDefineForClassFields": true, + + /* modules */ + "module": "ESNext", + "isolatedModules": true, + "resolveJsonModule": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + + /* type checking */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "include": ["src"] +} From 1f02db547acf283c2d2e38a04b91ec784907c42c Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 16 May 2025 09:47:19 +0000 Subject: [PATCH 002/165] fix section schema Signed-off-by: Teo Koon Peng --- diagram.schema.json | 6 +-- src/diagram/section_schema.rs | 81 ++++++++++++++++++++++++++++++++++- 2 files changed, 82 insertions(+), 5 deletions(-) diff --git a/diagram.schema.json b/diagram.schema.json index c7e44ffd..0dbfa57a 100644 --- a/diagram.schema.json +++ b/diagram.schema.json @@ -145,8 +145,7 @@ "builder": { "type": "string" } - }, - "additionalProperties": false + } }, { "type": "object", @@ -157,8 +156,7 @@ "template": { "type": "string" } - }, - "additionalProperties": false + } } ], "required": [ diff --git a/src/diagram/section_schema.rs b/src/diagram/section_schema.rs index 798bac5e..8f23126f 100644 --- a/src/diagram/section_schema.rs +++ b/src/diagram/section_schema.rs @@ -17,7 +17,7 @@ use std::{collections::HashMap, sync::Arc}; -use schemars::JsonSchema; +use schemars::{schema::Schema, JsonSchema}; use serde::{Deserialize, Serialize}; use crate::{ @@ -39,10 +39,89 @@ pub enum SectionProvider { Template(OperationName), } +/// schemars generates schemas with `additionalProperties: false` for enums. +/// When the enum is flatten, that `additionalProperties: false` is inherited by the parent +/// struct, which leads to schemas that can never be valid. +/// +/// Example: +/// +/// ```json +/// { +/// "description": "Connect the request to a registered section.\n\n``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"section_op\", \"ops\": { \"section_op\": { \"type\": \"section\", \"builder\": \"my_section_builder\", \"connect\": { \"my_section_output\": { \"builtin\": \"terminate\" } } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```\n\nCustom sections can also be created via templates ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"templates\": { \"my_template\": { \"inputs\": [\"section_input\"], \"outputs\": [\"section_output\"], \"buffers\": [], \"ops\": { \"section_input\": { \"type\": \"node\", \"builder\": \"my_node\", \"next\": \"section_output\" } } } }, \"start\": \"section_op\", \"ops\": { \"section_op\": { \"type\": \"section\", \"template\": \"my_template\", \"connect\": { \"section_output\": { \"builtin\": \"terminate\" } } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", +/// "type": "object", +/// "oneOf": [ +/// { +/// "type": "object", +/// "required": [ +/// "builder" +/// ], +/// "properties": { +/// "builder": { +/// "type": "string" +/// } +/// }, +/// "additionalProperties": false +/// }, +/// { +/// "type": "object", +/// "required": [ +/// "template" +/// ], +/// "properties": { +/// "template": { +/// "type": "string" +/// } +/// }, +/// "additionalProperties": false +/// } +/// ], +/// "required": [ +/// "type" +/// ], +/// "properties": { +/// "config": { +/// "default": null +/// }, +/// "connect": { +/// "default": {}, +/// "type": "object", +/// "additionalProperties": { +/// "$ref": "#/definitions/NextOperation" +/// } +/// }, +/// "type": { +/// "type": "string", +/// "enum": [ +/// "section" +/// ] +/// } +/// } +/// }, +/// ``` +/// +/// Here the section schema needs to have a `builder` or `template` with no additional properties. +/// Which includes other properties like `type`, `config` etc, but `type` is also required which +/// breaks the schema. +fn fix_additional_properties(generator: &mut schemars::SchemaGenerator) -> Schema { + let mut schema = generator.root_schema_for::().schema; + schema.metadata.as_mut().unwrap().title = None; + let one_ofs = schema.subschemas.as_mut().unwrap().one_of.as_mut().unwrap(); + for subschema in one_ofs { + match subschema { + Schema::Object(schema) => schema.object.as_mut().unwrap().additional_properties = None, + _ => { + panic!("expected object schema") + } + } + } + Schema::Object(schema) +} + #[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "snake_case")] pub struct SectionSchema { #[serde(flatten)] + #[schemars(schema_with = "fix_additional_properties")] pub(super) provider: SectionProvider, #[serde(default)] pub(super) config: serde_json::Value, From e273f867d78afe60aa28e63788d8137efea21203 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 16 May 2025 09:47:44 +0000 Subject: [PATCH 003/165] update schemas Signed-off-by: Teo Koon Peng --- diagram-editor/package.json | 6 +- diagram-editor/pnpm-lock.yaml | 879 ++++++++++++++++++ diagram-editor/pnpm-workspace.yaml | 2 + diagram-editor/scripts/generate-types.mjs | 2 + diagram-editor/src/types/diagram.d.ts | 30 +- .../src/utils/load-diagram-json.test.ts | 8 + diagram-editor/src/utils/load-diagram-json.ts | 23 + .../src/utils/test-data/multiply3.json | 13 + 8 files changed, 948 insertions(+), 15 deletions(-) create mode 100644 diagram-editor/pnpm-workspace.yaml create mode 100644 diagram-editor/src/utils/load-diagram-json.test.ts create mode 100644 diagram-editor/src/utils/load-diagram-json.ts create mode 100644 diagram-editor/src/utils/test-data/multiply3.json diff --git a/diagram-editor/package.json b/diagram-editor/package.json index ca7b5167..4b79b31a 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -6,6 +6,7 @@ "scripts": { "build": "rsbuild build", "generate-types": "node scripts/generate-types.mjs", + "test": "vitest", "check": "biome check --write", "dev": "rsbuild dev --open", "format": "biome format --write", @@ -17,6 +18,8 @@ "@fontsource/roboto": "^5.2.5", "@mui/material": "^7.1.0", "@xyflow/react": "^12.6.1", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", "react": "^19.1.0", "react-dom": "^19.1.0" }, @@ -27,6 +30,7 @@ "@types/react": "^19.1.2", "@types/react-dom": "^19.1.3", "json-schema-to-typescript": "15.0.4", - "typescript": "^5.8.3" + "typescript": "^5.8.3", + "vitest": "^3.1.3" } } diff --git a/diagram-editor/pnpm-lock.yaml b/diagram-editor/pnpm-lock.yaml index f6ef8e13..67029345 100644 --- a/diagram-editor/pnpm-lock.yaml +++ b/diagram-editor/pnpm-lock.yaml @@ -23,6 +23,12 @@ importers: '@xyflow/react': specifier: ^12.6.1 version: 12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + ajv: + specifier: ^8.17.1 + version: 8.17.1 + ajv-formats: + specifier: ^3.0.1 + version: 3.0.1(ajv@8.17.1) react: specifier: ^19.1.0 version: 19.1.0 @@ -51,6 +57,9 @@ importers: typescript: specifier: ^5.8.3 version: 5.8.3 + vitest: + specifier: ^3.1.3 + version: 3.1.3(jiti@2.4.2) packages: @@ -206,6 +215,156 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@fontsource/roboto@5.2.5': resolution: {integrity: sha512-70r2UZ0raqLn5W+sPeKhqlf8wGvUXFWlofaDlcbt/S3d06+17gXKr3VNqDODB0I1ASme3dGT5OJj9NABt7OTZQ==} @@ -331,6 +490,106 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + '@rsbuild/core@1.3.20': resolution: {integrity: sha512-5VxOddgGHaq5x4ONdKOZvLYLj8dhVfCAz+cERNLXrKLzBISouY1A9TJcbZBK4xoH/0DJrDtDzapNA+dI9Jr07Q==} engines: {node: '>=16.10.0'} @@ -432,6 +691,9 @@ packages: '@types/d3-zoom@3.0.8': resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -457,6 +719,35 @@ packages: '@types/react@19.1.4': resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} + '@vitest/expect@3.1.3': + resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} + + '@vitest/mocker@3.1.3': + resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.1.3': + resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} + + '@vitest/runner@3.1.3': + resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} + + '@vitest/snapshot@3.1.3': + resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} + + '@vitest/spy@3.1.3': + resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} + + '@vitest/utils@3.1.3': + resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} + '@xyflow/react@12.6.1': resolution: {integrity: sha512-DQs1LOaxSIdsoxsfZSLBoID93eQvfBXDraBwalpKaVcWTueWfjnW9mQ7jviwC3zPLwyx/ioPh+C45/Ez7+CHUQ==} peerDependencies: @@ -466,13 +757,32 @@ packages: '@xyflow/system@0.0.58': resolution: {integrity: sha512-f4l+/AAdWejcFrkaCbKWRWyL64G7gMR0xrwRlbG6oF4KIOMcygGFxOXdOV8QCMcQ9u++QIDpsogpUhexX4vi1Q==} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -480,6 +790,14 @@ packages: caniuse-lite@1.0.30001718: resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + classcat@5.0.5: resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} @@ -547,6 +865,10 @@ packages: supports-color: optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -556,10 +878,31 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -571,6 +914,11 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -631,6 +979,9 @@ packages: engines: {node: '>=16.0.0'} hasBin: true + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -641,12 +992,23 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -666,6 +1028,13 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -673,6 +1042,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -706,6 +1079,10 @@ packages: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -715,16 +1092,34 @@ packages: engines: {node: '>= 0.4'} hasBin: true + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} @@ -732,10 +1127,28 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -749,6 +1162,84 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + vite-node@3.1.3: + resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.1.3: + resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.3 + '@vitest/ui': 3.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -948,6 +1439,81 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + '@fontsource/roboto@5.2.5': {} '@jridgewell/gen-mapping@0.3.8': @@ -1075,6 +1641,66 @@ snapshots: '@popperjs/core@2.11.8': {} + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + '@rsbuild/core@1.3.20': dependencies: '@rspack/core': 1.3.10(@swc/helpers@0.5.17) @@ -1172,6 +1798,8 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.11 + '@types/estree@1.0.7': {} + '@types/json-schema@7.0.15': {} '@types/lodash@4.17.16': {} @@ -1192,6 +1820,46 @@ snapshots: dependencies: csstype: 3.1.3 + '@vitest/expect@3.1.3': + dependencies: + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.1.3(vite@6.3.5(jiti@2.4.2))': + dependencies: + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(jiti@2.4.2) + + '@vitest/pretty-format@3.1.3': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.3': + dependencies: + '@vitest/utils': 3.1.3 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.3': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + '@xyflow/react@12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@xyflow/system': 0.0.58 @@ -1213,18 +1881,43 @@ snapshots: d3-selection: 3.0.0 d3-zoom: 3.0.0 + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + argparse@2.0.1: {} + assertion-error@2.0.1: {} + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.27.1 cosmiconfig: 7.1.0 resolve: 1.22.10 + cac@6.7.14: {} + callsites@3.1.0: {} caniuse-lite@1.0.30001718: {} + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + check-error@2.1.1: {} + classcat@5.0.5: {} clsx@2.1.1: {} @@ -1283,6 +1976,8 @@ snapshots: dependencies: ms: 2.1.3 + deep-eql@5.0.2: {} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.27.1 @@ -1296,14 +1991,57 @@ snapshots: dependencies: stackframe: 1.3.4 + es-module-lexer@1.7.0: {} + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + escape-string-regexp@4.0.0: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + expect-type@1.2.1: {} + + fast-deep-equal@3.1.3: {} + + fast-uri@3.0.6: {} + fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 find-root@1.1.0: {} + fsevents@2.3.3: + optional: true + function-bind@1.1.2: {} globals@11.12.0: {} @@ -1359,6 +2097,8 @@ snapshots: prettier: 3.5.3 tinyglobby: 0.2.13 + json-schema-traverse@1.0.0: {} + lines-and-columns@1.2.4: {} lodash@4.17.21: {} @@ -1367,10 +2107,18 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@3.1.3: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + minimist@1.2.8: {} ms@2.1.3: {} + nanoid@3.3.11: {} + object-assign@4.1.1: {} parent-module@1.0.1: @@ -1388,10 +2136,20 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + + pathval@2.0.0: {} + picocolors@1.1.1: {} picomatch@4.0.2: {} + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier@3.5.3: {} prop-types@15.8.1: @@ -1422,6 +2180,8 @@ snapshots: react@19.1.0: {} + require-from-string@2.0.2: {} + resolve-from@4.0.0: {} resolve@1.22.10: @@ -1430,21 +2190,65 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + scheduler@0.26.0: {} + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + source-map@0.5.7: {} + stackback@0.0.2: {} + stackframe@1.3.4: {} + std-env@3.9.0: {} + stylis@4.2.0: {} supports-preserve-symlinks-flag@1.0.0: {} + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + tslib@2.8.1: {} typescript@5.8.3: {} @@ -1453,6 +2257,81 @@ snapshots: dependencies: react: 19.1.0 + vite-node@3.1.3(jiti@2.4.2): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(jiti@2.4.2) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.3.5(jiti@2.4.2): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + fsevents: 2.3.3 + jiti: 2.4.2 + + vitest@3.1.3(jiti@2.4.2): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.3.5(jiti@2.4.2)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.1 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.5(jiti@2.4.2) + vite-node: 3.1.3(jiti@2.4.2) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + yaml@1.10.2: {} zustand@4.5.6(@types/react@19.1.4)(react@19.1.0): diff --git a/diagram-editor/pnpm-workspace.yaml b/diagram-editor/pnpm-workspace.yaml new file mode 100644 index 00000000..efc037aa --- /dev/null +++ b/diagram-editor/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +onlyBuiltDependencies: + - esbuild diff --git a/diagram-editor/scripts/generate-types.mjs b/diagram-editor/scripts/generate-types.mjs index adc5cc44..544ee34e 100644 --- a/diagram-editor/scripts/generate-types.mjs +++ b/diagram-editor/scripts/generate-types.mjs @@ -1,5 +1,6 @@ import crypto from 'node:crypto'; import fs from 'node:fs'; +import { execSync } from 'node:child_process'; import { compile } from 'json-schema-to-typescript'; const schema = fs.readFileSync('../diagram.schema.json'); @@ -8,3 +9,4 @@ const output = await compile(JSON.parse(schema)); const fd = fs.openSync('src/types/diagram.d.ts', 'w'); fs.writeSync(fd, `// Generated from diagram.schema.json (sha1:${hash})\n`); fs.writeSync(fd, output); +execSync('biome format --write ./src/types/diagram.d.ts'); diff --git a/diagram-editor/src/types/diagram.d.ts b/diagram-editor/src/types/diagram.d.ts index ae78aa9b..c4c62ffe 100644 --- a/diagram-editor/src/types/diagram.d.ts +++ b/diagram-editor/src/types/diagram.d.ts @@ -1,4 +1,4 @@ -// Generated from diagram.schema.json (sha1:0b04bf3463933dc7f2b89ba3bf4378156e20b93e) +// Generated from diagram.schema.json (sha1:2cf3721b21df6a669d11eb32eeed8fcc67549ba7) /* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. @@ -13,7 +13,7 @@ export type NextOperation = [k: string]: unknown; } | NamespacedOperation; -export type BuiltinTarget = "terminate" | "dispose" | "cancel"; +export type BuiltinTarget = 'terminate' | 'dispose' | 'cancel'; export type DiagramOperation = | { builder: string; @@ -21,31 +21,33 @@ export type DiagramOperation = [k: string]: unknown; }; next: NextOperation; - type: "node"; + type: 'node'; [k: string]: unknown; } | ( | { builder: string; + [k: string]: unknown; } | { template: string; + [k: string]: unknown; } ) | { next: NextOperation[]; - type: "fork_clone"; + type: 'fork_clone'; [k: string]: unknown; } | { next: NextOperation[]; - type: "unzip"; + type: 'unzip'; [k: string]: unknown; } | { err: NextOperation; ok: NextOperation; - type: "fork_result"; + type: 'fork_result'; [k: string]: unknown; } | { @@ -54,7 +56,7 @@ export type DiagramOperation = }; remaining?: NextOperation | null; sequential?: NextOperation[]; - type: "split"; + type: 'split'; [k: string]: unknown; } | { @@ -63,7 +65,7 @@ export type DiagramOperation = */ buffers: BufferSelection; next: NextOperation; - type: "join"; + type: 'join'; [k: string]: unknown; } | { @@ -72,7 +74,7 @@ export type DiagramOperation = */ buffers: BufferSelection; next: NextOperation; - type: "serialized_join"; + type: 'serialized_join'; [k: string]: unknown; } | { @@ -84,7 +86,7 @@ export type DiagramOperation = * If left unspecified, a failure will be treated like an implicit operation failure and behave according to `on_implicit_error`. */ on_error?: NextOperation | null; - type: "transform"; + type: 'transform'; [k: string]: unknown; } | { @@ -93,7 +95,7 @@ export type DiagramOperation = */ serialize?: boolean | null; settings?: BufferSettings; - type: "buffer"; + type: 'buffer'; [k: string]: unknown; } | { @@ -102,7 +104,7 @@ export type DiagramOperation = */ buffers: BufferSelection; next: NextOperation; - type: "buffer_access"; + type: 'buffer_access'; [k: string]: unknown; } | { @@ -115,7 +117,7 @@ export type DiagramOperation = * The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation. */ target_node?: NextOperation | null; - type: "listen"; + type: 'listen'; [k: string]: unknown; }; export type BufferSelection = @@ -136,7 +138,7 @@ export type RetentionPolicy = | { keep_first: number; } - | "keep_all"; + | 'keep_all'; /** * This defines how sections remap their inner operations (inputs and buffers) to expose them to operations that are siblings to the section. */ diff --git a/diagram-editor/src/utils/load-diagram-json.test.ts b/diagram-editor/src/utils/load-diagram-json.test.ts new file mode 100644 index 00000000..7d8af964 --- /dev/null +++ b/diagram-editor/src/utils/load-diagram-json.test.ts @@ -0,0 +1,8 @@ +import { test, expect } from 'vitest'; +import { loadDiagramJson } from './load-diagram-json'; +import testDiagram from './test-data/multiply3.json'; + +test('load diagram json', () => { + const nodes = loadDiagramJson(JSON.stringify(testDiagram)); + expect(nodes.length).toBe(1); +}); diff --git a/diagram-editor/src/utils/load-diagram-json.ts b/diagram-editor/src/utils/load-diagram-json.ts new file mode 100644 index 00000000..323b95ec --- /dev/null +++ b/diagram-editor/src/utils/load-diagram-json.ts @@ -0,0 +1,23 @@ +import Ajv from 'ajv'; +import addFormats from 'ajv-formats'; +import diagramSchema from '../../../diagram.schema.json'; +import type { DiagramEditorNode } from '../nodes'; +import type { Diagram } from '../types/diagram'; + +const ajv = new Ajv(); +addFormats(ajv); +ajv.addFormat('uint', /^[0-9]+$/); +const validate = ajv.compile(diagramSchema); + +export function loadDiagramJson(jsonStr: string): DiagramEditorNode[] { + const diagram = JSON.parse(jsonStr); + const valid = validate(diagram); + if (!valid) { + throw validate.errors; + } + + // for (const [opId, op] of Object.entries(diagram.ops)) { + // switch (op.type) + // } + return []; +} diff --git a/diagram-editor/src/utils/test-data/multiply3.json b/diagram-editor/src/utils/test-data/multiply3.json new file mode 100644 index 00000000..7f986a49 --- /dev/null +++ b/diagram-editor/src/utils/test-data/multiply3.json @@ -0,0 +1,13 @@ +{ + "$schema": "../../../../diagram.schema.json", + "version": "0.1.0", + "start": "mul3", + "ops": { + "mul3": { + "type": "node", + "builder": "mul", + "config": 3, + "next": { "builtin": "terminate" } + } + } +} From 35ae56eec6b82b540ffbb3e04f06fdce6b9d1077 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 20 May 2025 03:57:51 +0000 Subject: [PATCH 004/165] load diagram json into reactflow nodes Signed-off-by: Teo Koon Peng --- diagram-editor/jest.config.js | 11 + diagram-editor/package.json | 9 +- diagram-editor/pnpm-lock.yaml | 3612 +++++++++++++---- diagram-editor/rsbuild.config.ts | 7 + diagram-editor/scripts/generate-types.mjs | 32 +- diagram-editor/src/diagram.schema.json | 623 +++ diagram-editor/src/types/diagram.d.ts | 13 +- .../src/utils/load-diagram-json.test.ts | 3 +- diagram-editor/src/utils/load-diagram-json.ts | 14 +- diagram-editor/tsconfig.json | 1 + 10 files changed, 3570 insertions(+), 755 deletions(-) create mode 100644 diagram-editor/jest.config.js create mode 100644 diagram-editor/src/diagram.schema.json diff --git a/diagram-editor/jest.config.js b/diagram-editor/jest.config.js new file mode 100644 index 00000000..9d30ccf8 --- /dev/null +++ b/diagram-editor/jest.config.js @@ -0,0 +1,11 @@ +import { createDefaultPreset } from 'ts-jest'; + +const tsJestTransformCfg = createDefaultPreset().transform; + +/** @type {import("jest").Config} **/ +export default { + testEnvironment: 'node', + transform: { + ...tsJestTransformCfg, + }, +}; diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 4b79b31a..6ebfdf5f 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "rsbuild build", "generate-types": "node scripts/generate-types.mjs", - "test": "vitest", + "test": "jest --watch", "check": "biome check --write", "dev": "rsbuild dev --open", "format": "biome format --write", @@ -27,10 +27,13 @@ "@biomejs/biome": "^1.9.4", "@rsbuild/core": "^1.3.15", "@rsbuild/plugin-react": "^1.3.0", + "@types/jest": "^29.5.14", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.3", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "json-schema-to-typescript": "15.0.4", - "typescript": "^5.8.3", - "vitest": "^3.1.3" + "ts-jest": "^29.3.4", + "typescript": "^5.8.3" } } diff --git a/diagram-editor/pnpm-lock.yaml b/diagram-editor/pnpm-lock.yaml index 67029345..22791992 100644 --- a/diagram-editor/pnpm-lock.yaml +++ b/diagram-editor/pnpm-lock.yaml @@ -45,24 +45,37 @@ importers: '@rsbuild/plugin-react': specifier: ^1.3.0 version: 1.3.1(@rsbuild/core@1.3.20) + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 '@types/react': specifier: ^19.1.2 version: 19.1.4 '@types/react-dom': specifier: ^19.1.3 version: 19.1.5(@types/react@19.1.4) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 json-schema-to-typescript: specifier: 15.0.4 version: 15.0.4 + ts-jest: + specifier: ^29.3.4 + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)))(typescript@5.8.3) typescript: specifier: ^5.8.3 version: 5.8.3 - vitest: - specifier: ^3.1.3 - version: 3.1.3(jiti@2.4.2) packages: + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@apidevtools/json-schema-ref-parser@11.9.3': resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} engines: {node: '>= 16'} @@ -71,14 +84,36 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -87,11 +122,110 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.27.2': resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} @@ -108,6 +242,9 @@ packages: resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@biomejs/biome@1.9.4': resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} engines: {node: '>=14.21.3'} @@ -161,6 +298,10 @@ packages: cpu: [x64] os: [win32] + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -215,158 +356,82 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] + '@fontsource/roboto@5.2.5': + resolution: {integrity: sha512-70r2UZ0raqLn5W+sPeKhqlf8wGvUXFWlofaDlcbt/S3d06+17gXKr3VNqDODB0I1ASme3dGT5OJj9NABt7OTZQ==} - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@fontsource/roboto@5.2.5': - resolution: {integrity: sha512-70r2UZ0raqLn5W+sPeKhqlf8wGvUXFWlofaDlcbt/S3d06+17gXKr3VNqDODB0I1ASme3dGT5OJj9NABt7OTZQ==} + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} @@ -386,6 +451,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -490,106 +558,6 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rollup/rollup-android-arm-eabi@4.40.2': - resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.40.2': - resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.40.2': - resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.40.2': - resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.40.2': - resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.40.2': - resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': - resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.40.2': - resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.40.2': - resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.40.2': - resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': - resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': - resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.40.2': - resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.40.2': - resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.40.2': - resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.40.2': - resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.40.2': - resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.40.2': - resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.40.2': - resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} - cpu: [x64] - os: [win32] - '@rsbuild/core@1.3.20': resolution: {integrity: sha512-5VxOddgGHaq5x4ONdKOZvLYLj8dhVfCAz+cERNLXrKLzBISouY1A9TJcbZBK4xoH/0DJrDtDzapNA+dI9Jr07Q==} engines: {node: '>=16.10.0'} @@ -670,9 +638,46 @@ packages: webpack-hot-middleware: optional: true + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/d3-color@3.1.3': resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} @@ -691,8 +696,23 @@ packages: '@types/d3-zoom@3.0.8': resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -700,6 +720,9 @@ packages: '@types/lodash@4.17.16': resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + '@types/node@22.15.19': + resolution: {integrity: sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -719,34 +742,17 @@ packages: '@types/react@19.1.4': resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} - '@vitest/expect@3.1.3': - resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} - - '@vitest/mocker@3.1.3': - resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@3.1.3': - resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} - - '@vitest/runner@3.1.3': - resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@vitest/snapshot@3.1.3': - resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@vitest/spy@3.1.3': - resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@vitest/utils@3.1.3': - resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} '@xyflow/react@12.6.1': resolution: {integrity: sha512-DQs1LOaxSIdsoxsfZSLBoID93eQvfBXDraBwalpKaVcWTueWfjnW9mQ7jviwC3zPLwyx/ioPh+C45/Ez7+CHUQ==} @@ -757,6 +763,26 @@ packages: '@xyflow/system@0.0.58': resolution: {integrity: sha512-f4l+/AAdWejcFrkaCbKWRWyL64G7gMR0xrwRlbG6oF4KIOMcygGFxOXdOV8QCMcQ9u++QIDpsogpUhexX4vi1Q==} + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -768,46 +794,170 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001718: resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} classcat@5.0.5: resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + core-js@3.42.0: resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} @@ -815,6 +965,28 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -856,6 +1028,10 @@ packages: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -865,44 +1041,144 @@ packages: supports-color: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.155: + resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} - engines: {node: '>=18'} - hasBin: true + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} - engines: {node: '>=12.0.0'} + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -911,9 +1187,27 @@ packages: picomatch: optional: true + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -922,10 +1216,57 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -933,13 +1274,52 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -951,10 +1331,199 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -962,10 +1531,23 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -982,9 +1564,29 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -992,11 +1594,48 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -1004,15 +1643,53 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1021,6 +1698,21 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1028,32 +1720,54 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + picomatch@4.0.2: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + react-dom@19.1.0: resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} peerDependencies: @@ -1062,6 +1776,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.1.0: resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} @@ -1079,171 +1796,332 @@ packages: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} hasBin: true - rollup@4.40.2: - resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - stackframe@1.3.4: + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + ts-jest@29.3.4: + resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + use-sync-external-store@1.5.0: resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - vite-node@3.1.3: - resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} - vitest@3.1.3: - resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.1.3 - '@vitest/ui': 3.1.3 - happy-dom: '*' - jsdom: '*' + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/debug': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: + bufferutil: optional: true - jsdom: + utf-8-validate: optional: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + zustand@4.5.6: resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} engines: {node: '>=12.7.0'} @@ -1261,6 +2139,11 @@ packages: snapshots: + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@apidevtools/json-schema-ref-parser@11.9.3': dependencies: '@jsdevtools/ono': 7.1.3 @@ -1273,6 +2156,28 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.27.1': dependencies: '@babel/parser': 7.27.2 @@ -1281,6 +2186,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.27.1 @@ -1288,14 +2201,117 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.27.1': {} '@babel/template@7.27.2': @@ -1321,6 +2337,8 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} + '@biomejs/biome@1.9.4': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.4 @@ -1356,6 +2374,11 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -1439,82 +2462,179 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.25.4': - optional: true - - '@esbuild/android-arm64@0.25.4': - optional: true - - '@esbuild/android-arm@0.25.4': - optional: true - - '@esbuild/android-x64@0.25.4': - optional: true - - '@esbuild/darwin-arm64@0.25.4': - optional: true - - '@esbuild/darwin-x64@0.25.4': - optional: true - - '@esbuild/freebsd-arm64@0.25.4': - optional: true - - '@esbuild/freebsd-x64@0.25.4': - optional: true - - '@esbuild/linux-arm64@0.25.4': - optional: true - - '@esbuild/linux-arm@0.25.4': - optional: true - - '@esbuild/linux-ia32@0.25.4': - optional: true - - '@esbuild/linux-loong64@0.25.4': - optional: true + '@fontsource/roboto@5.2.5': {} - '@esbuild/linux-mips64el@0.25.4': - optional: true + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 - '@esbuild/linux-ppc64@0.25.4': - optional: true + '@istanbuljs/schema@0.1.3': {} - '@esbuild/linux-riscv64@0.25.4': - optional: true + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node - '@esbuild/linux-s390x@0.25.4': - optional: true + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + jest-mock: 29.7.0 - '@esbuild/linux-x64@0.25.4': - optional: true + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 - '@esbuild/netbsd-arm64@0.25.4': - optional: true + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color - '@esbuild/netbsd-x64@0.25.4': - optional: true + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.15.19 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color - '@esbuild/openbsd-arm64@0.25.4': - optional: true + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.15.19 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color - '@esbuild/openbsd-x64@0.25.4': - optional: true + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 - '@esbuild/sunos-x64@0.25.4': - optional: true + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 - '@esbuild/win32-arm64@0.25.4': - optional: true + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 - '@esbuild/win32-ia32@0.25.4': - optional: true + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 - '@esbuild/win32-x64@0.25.4': - optional: true + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color - '@fontsource/roboto@5.2.5': {} + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.19 + '@types/yargs': 17.0.33 + chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -1533,6 +2653,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + optional: true + '@jsdevtools/ono@7.1.3': {} '@module-federation/error-codes@0.13.1': {} @@ -1641,66 +2767,6 @@ snapshots: '@popperjs/core@2.11.8': {} - '@rollup/rollup-android-arm-eabi@4.40.2': - optional: true - - '@rollup/rollup-android-arm64@4.40.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.40.2': - optional: true - - '@rollup/rollup-darwin-x64@4.40.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.40.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.40.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.40.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.40.2': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.40.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.40.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.40.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.40.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.40.2': - optional: true - '@rsbuild/core@1.3.20': dependencies: '@rspack/core': 1.3.10(@swc/helpers@0.5.17) @@ -1773,10 +2839,55 @@ snapshots: html-entities: 2.6.0 react-refresh: 0.17.0 + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + '@swc/helpers@0.5.17': dependencies: tslib: 2.8.1 + '@tootallnate/once@2.0.0': {} + + '@tsconfig/node10@1.0.11': + optional: true + + '@tsconfig/node12@1.0.11': + optional: true + + '@tsconfig/node14@1.0.3': + optional: true + + '@tsconfig/node16@1.0.4': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + '@types/d3-color@3.1.3': {} '@types/d3-drag@3.0.7': @@ -1798,12 +2909,39 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.11 - '@types/estree@1.0.7': {} + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.15.19 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 22.15.19 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 '@types/json-schema@7.0.15': {} '@types/lodash@4.17.16': {} + '@types/node@22.15.19': + dependencies: + undici-types: 6.21.0 + '@types/parse-json@4.0.2': {} '@types/prop-types@15.7.14': {} @@ -1820,45 +2958,15 @@ snapshots: dependencies: csstype: 3.1.3 - '@vitest/expect@3.1.3': - dependencies: - '@vitest/spy': 3.1.3 - '@vitest/utils': 3.1.3 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/mocker@3.1.3(vite@6.3.5(jiti@2.4.2))': - dependencies: - '@vitest/spy': 3.1.3 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 6.3.5(jiti@2.4.2) - - '@vitest/pretty-format@3.1.3': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/runner@3.1.3': - dependencies: - '@vitest/utils': 3.1.3 - pathe: 2.0.3 + '@types/stack-utils@2.0.3': {} - '@vitest/snapshot@3.1.3': - dependencies: - '@vitest/pretty-format': 3.1.3 - magic-string: 0.30.17 - pathe: 2.0.3 + '@types/tough-cookie@4.0.5': {} - '@vitest/spy@3.1.3': - dependencies: - tinyspy: 3.0.2 + '@types/yargs-parser@21.0.3': {} - '@vitest/utils@3.1.3': + '@types/yargs@17.0.33': dependencies: - '@vitest/pretty-format': 3.1.3 - loupe: 3.1.3 - tinyrainbow: 2.0.0 + '@types/yargs-parser': 21.0.3 '@xyflow/react@12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: @@ -1881,6 +2989,25 @@ snapshots: d3-selection: 3.0.0 d3-zoom: 3.0.0 + abab@2.0.6: {} + + acorn-globals@7.0.1: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -1892,9 +3019,65 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: + optional: true + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} - assertion-error@2.0.1: {} + async@3.2.6: {} + + asynckit@0.4.0: {} + + babel-jest@29.7.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 babel-plugin-macros@3.1.0: dependencies: @@ -1902,28 +3085,117 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.10 - cac@6.7.14: {} + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + + babel-preset-jest@29.6.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.155 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 callsites@3.1.0: {} + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + caniuse-lite@1.0.30001718: {} - chai@5.2.0: + chalk@4.1.2: dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 + ansi-styles: 4.3.0 + supports-color: 7.2.0 - check-error@2.1.1: {} + char-regex@1.0.2: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} classcat@5.0.5: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clsx@2.1.1: {} + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} + core-js@3.42.0: {} cosmiconfig@7.1.0: @@ -1934,6 +3206,38 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + create-jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: + optional: true + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + csstype@3.1.3: {} d3-color@3.1.0: {} @@ -1972,17 +3276,60 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + debug@4.4.1: dependencies: ms: 2.1.3 - deep-eql@5.0.2: {} + decimal.js@10.5.0: {} + + dedent@1.6.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: + optional: true dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.27.1 csstype: 3.1.3 + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.155: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + entities@6.0.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -1991,101 +3338,658 @@ snapshots: dependencies: stackframe: 1.3.4 - es-module-lexer@1.7.0: {} + es-define-property@1.0.1: {} - esbuild@0.25.4: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} - estree-walker@3.0.3: + escodegen@2.1.0: dependencies: - '@types/estree': 1.0.7 + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 - expect-type@1.2.1: {} + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 fast-deep-equal@3.1.3: {} + fast-json-stable-stringify@2.1.0: {} + fast-uri@3.0.6: {} + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + find-root@1.1.0: {} + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + fsevents@2.3.3: optional: true function-bind@1.1.2: {} - globals@11.12.0: {} + gensync@1.0.0-beta.2: {} - hasown@2.0.2: + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 - hoist-non-react-statics@3.3.2: + get-package-type@0.1.0: {} + + get-proto@1.0.1: dependencies: - react-is: 16.13.1 + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 - html-entities@2.6.0: {} + get-stream@6.0.1: {} - import-fresh@3.3.1: + glob@7.2.3: dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 - is-arrayish@0.2.1: {} + globals@11.12.0: {} - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 + gopd@1.2.0: {} - is-extglob@2.1.1: {} + graceful-fs@4.2.11: {} - is-glob@4.0.3: + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: dependencies: - is-extglob: 2.1.1 + has-symbols: 1.1.0 - jiti@2.4.2: {} + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 - js-tokens@4.0.0: {} + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 - js-yaml@4.1.0: + html-encoding-sniffer@3.0.0: dependencies: - argparse: 2.0.1 + whatwg-encoding: 2.0.0 - jsesc@3.1.0: {} + html-entities@2.6.0: {} - json-parse-even-better-errors@2.3.1: {} + html-escaper@2.0.2: {} - json-schema-to-typescript@15.0.4: + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0(babel-plugin-macros@3.1.0): + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.6.0(babel-plugin-macros@3.1.0) + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.19 + ts-node: 10.9.2(@types/node@22.15.19)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 22.15.19 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.15.19 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/types': 7.27.1 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.19 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.15.19 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.14.1 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.5.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.3.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.18.2 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-to-typescript@15.0.4: dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 '@types/json-schema': 7.0.15 @@ -2099,28 +4003,107 @@ snapshots: json-schema-traverse@1.0.0: {} + json5@2.2.3: {} + + kleur@3.0.3: {} + + leven@3.1.0: {} + lines-and-columns@1.2.4: {} + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.memoize@4.1.2: {} + lodash@4.17.21: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 - magic-string@0.30.17: + make-dir@4.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + semver: 7.7.2 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + math-intrinsics@1.1.0: {} + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 minimist@1.2.8: {} ms@2.1.3: {} - nanoid@3.3.11: {} + natural-compare@1.4.0: {} + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nwsapi@2.2.20: {} object-assign@4.1.1: {} + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -2132,32 +4115,61 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - path-parse@1.0.7: {} + parse5@7.3.0: + dependencies: + entities: 6.0.0 - path-type@4.0.0: {} + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} - pathe@2.0.3: {} + path-parse@1.0.7: {} - pathval@2.0.0: {} + path-type@4.0.0: {} picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.2: {} - postcss@8.5.3: + pirates@4.0.7: {} + + pkg-dir@4.2.0: dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 + find-up: 4.1.0 prettier@3.5.3: {} + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + querystringify@2.2.0: {} + react-dom@19.1.0(react@19.1.0): dependencies: react: 19.1.0 @@ -2165,6 +4177,8 @@ snapshots: react-is@16.13.1: {} + react-is@18.3.1: {} + react-is@19.1.0: {} react-refresh@0.17.0: {} @@ -2180,160 +4194,276 @@ snapshots: react@19.1.0: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + + resolve.exports@2.0.3: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rollup@4.40.2: + safer-buffer@2.1.2: {} + + saxes@6.0.0: dependencies: - '@types/estree': 1.0.7 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.2 - '@rollup/rollup-android-arm64': 4.40.2 - '@rollup/rollup-darwin-arm64': 4.40.2 - '@rollup/rollup-darwin-x64': 4.40.2 - '@rollup/rollup-freebsd-arm64': 4.40.2 - '@rollup/rollup-freebsd-x64': 4.40.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 - '@rollup/rollup-linux-arm-musleabihf': 4.40.2 - '@rollup/rollup-linux-arm64-gnu': 4.40.2 - '@rollup/rollup-linux-arm64-musl': 4.40.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-musl': 4.40.2 - '@rollup/rollup-linux-s390x-gnu': 4.40.2 - '@rollup/rollup-linux-x64-gnu': 4.40.2 - '@rollup/rollup-linux-x64-musl': 4.40.2 - '@rollup/rollup-win32-arm64-msvc': 4.40.2 - '@rollup/rollup-win32-ia32-msvc': 4.40.2 - '@rollup/rollup-win32-x64-msvc': 4.40.2 - fsevents: 2.3.3 + xmlchars: 2.2.0 scheduler@0.26.0: {} - siginfo@2.0.0: {} + semver@6.3.1: {} + + semver@7.7.2: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} - source-map-js@1.2.1: {} + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 source-map@0.5.7: {} - stackback@0.0.2: {} + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 stackframe@1.3.4: {} - std-env@3.9.0: {} + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} stylis@4.2.0: {} + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} - tinybench@2.9.0: {} + symbol-tree@3.2.4: {} - tinyexec@0.3.2: {} + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@1.0.2: {} + tmpl@1.0.5: {} - tinyrainbow@2.0.0: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 - tinyspy@3.0.2: {} + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + + ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.15.19 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true tslib@2.8.1: {} + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-fest@4.41.0: {} + typescript@5.8.3: {} + undici-types@6.21.0: {} + + universalify@0.2.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + use-sync-external-store@1.5.0(react@19.1.0): dependencies: react: 19.1.0 - vite-node@3.1.3(jiti@2.4.2): + v8-compile-cache-lib@3.0.1: + optional: true + + v8-to-istanbul@9.3.0: dependencies: - cac: 6.7.14 - debug: 4.4.1 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 6.3.5(jiti@2.4.2) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 - vite@6.3.5(jiti@2.4.2): + w3c-xmlserializer@4.0.0: dependencies: - esbuild: 0.25.4 - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.40.2 - tinyglobby: 0.2.13 - optionalDependencies: - fsevents: 2.3.3 - jiti: 2.4.2 + xml-name-validator: 4.0.0 - vitest@3.1.3(jiti@2.4.2): + walker@1.0.8: dependencies: - '@vitest/expect': 3.1.3 - '@vitest/mocker': 3.1.3(vite@6.3.5(jiti@2.4.2)) - '@vitest/pretty-format': 3.1.3 - '@vitest/runner': 3.1.3 - '@vitest/snapshot': 3.1.3 - '@vitest/spy': 3.1.3 - '@vitest/utils': 3.1.3 - chai: 5.2.0 - debug: 4.4.1 - expect-type: 1.2.1 - magic-string: 0.30.17 - pathe: 2.0.3 - std-env: 3.9.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.13 - tinypool: 1.0.2 - tinyrainbow: 2.0.0 - vite: 6.3.5(jiti@2.4.2) - vite-node: 3.1.3(jiti@2.4.2) - why-is-node-running: 2.3.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + makeerror: 1.0.12 + + webidl-conversions@7.0.0: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 - why-is-node-running@2.3.0: + wrap-ansi@7.0.0: dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.2: {} + + xml-name-validator@4.0.0: {} + + xmlchars@2.2.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} yaml@1.10.2: {} + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: + optional: true + + yocto-queue@0.1.0: {} + zustand@4.5.6(@types/react@19.1.4)(react@19.1.0): dependencies: use-sync-external-store: 1.5.0(react@19.1.0) diff --git a/diagram-editor/rsbuild.config.ts b/diagram-editor/rsbuild.config.ts index 8a371c4b..14ed37bf 100644 --- a/diagram-editor/rsbuild.config.ts +++ b/diagram-editor/rsbuild.config.ts @@ -8,4 +8,11 @@ export default defineConfig({ }, }, plugins: [pluginReact()], + environments: { + test: { + output: { + target: 'node', + }, + }, + }, }); diff --git a/diagram-editor/scripts/generate-types.mjs b/diagram-editor/scripts/generate-types.mjs index 544ee34e..99504e7b 100644 --- a/diagram-editor/scripts/generate-types.mjs +++ b/diagram-editor/scripts/generate-types.mjs @@ -3,9 +3,35 @@ import fs from 'node:fs'; import { execSync } from 'node:child_process'; import { compile } from 'json-schema-to-typescript'; -const schema = fs.readFileSync('../diagram.schema.json'); -const hash = crypto.createHash('sha1').update(schema).digest('hex'); -const output = await compile(JSON.parse(schema)); +const schemaRaw = fs.readFileSync('../diagram.schema.json'); +const hash = crypto.createHash('sha1').update(schemaRaw).digest('hex'); +const schema = JSON.parse(schemaRaw); + +// normalize the schema to workaround https://github.com/bcherny/json-schema-to-typescript/issues/637. +const toCheck = Object.values(schema.definitions); +while (toCheck.length) { + const def = toCheck.pop(); + toCheck.push(...(def.allOf || [])); + toCheck.push(...(def.anyOf || [])); + toCheck.push(...(def.oneOf || [])); + + if ('oneOf' in def && 'properties' in def) { + // move properties defined in the same schema level as oneOf into an allOf + const directProps = { properties: def.properties }; + if ('required' in def) { + directProps.required = def.required; + } + def.allOf = [{ oneOf: def.oneOf }, directProps]; + // biome-ignore lint/performance/noDelete: + delete def.properties; + // biome-ignore lint/performance/noDelete: + delete def.required; + // biome-ignore lint/performance/noDelete: + delete def.oneOf; + } +} + +const output = await compile(schema); const fd = fs.openSync('src/types/diagram.d.ts', 'w'); fs.writeSync(fd, `// Generated from diagram.schema.json (sha1:${hash})\n`); fs.writeSync(fd, output); diff --git a/diagram-editor/src/diagram.schema.json b/diagram-editor/src/diagram.schema.json new file mode 100644 index 00000000..0dbfa57a --- /dev/null +++ b/diagram-editor/src/diagram.schema.json @@ -0,0 +1,623 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Diagram", + "type": "object", + "required": [ + "ops", + "start", + "version" + ], + "properties": { + "on_implicit_error": { + "description": "To simplify diagram definitions, the diagram workflow builder will sometimes insert implicit operations into the workflow, such as implicit serializing and deserializing. These implicit operations may be fallible.\n\nThis field indicates how a failed implicit operation should be handled. If left unspecified, an implicit error will cause the entire workflow to be cancelled.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/NextOperation" + }, + { + "type": "null" + } + ] + }, + "ops": { + "description": "Operations that define the workflow", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/DiagramOperation" + } + }, + "start": { + "description": "Indicates where the workflow should start running.", + "allOf": [ + { + "$ref": "#/definitions/NextOperation" + } + ] + }, + "templates": { + "default": {}, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SectionTemplate" + } + }, + "version": { + "description": "Version of the diagram, should always be `0.1.0`.", + "type": "string" + } + }, + "definitions": { + "BufferSelection": { + "anyOf": [ + { + "$ref": "#/definitions/NextOperation" + }, + { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/NextOperation" + } + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/NextOperation" + } + } + ] + }, + "BufferSettings": { + "description": "Settings to describe the behavior of a buffer.", + "type": "object", + "required": [ + "retention" + ], + "properties": { + "retention": { + "$ref": "#/definitions/RetentionPolicy" + } + } + }, + "BuiltinTarget": { + "oneOf": [ + { + "description": "Use the output to terminate the current scope. The value passed into this operation will be the return value of the scope.", + "type": "string", + "enum": [ + "terminate" + ] + }, + { + "description": "Dispose of the output.", + "type": "string", + "enum": [ + "dispose" + ] + }, + { + "description": "When triggered, cancel the current scope. If this is an inner scope of a workflow then the parent scope will see a disposal happen. If this is the root scope of a workflow then the whole workflow will cancel.", + "type": "string", + "enum": [ + "cancel" + ] + } + ] + }, + "DiagramOperation": { + "oneOf": [ + { + "description": "Create an operation that that takes an input message and produces an output message.\n\nThe behavior is determined by the choice of node `builder` and optioanlly the `config` that you provide. Each type of node builder has its own schema for the config.\n\nThe output message will be sent to the operation specified by `next`.\n\nTODO(@mxgrey): [Support stream outputs](https://github.com/open-rmf/bevy_impulse/issues/43)\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"cutting_board\", \"ops\": { \"cutting_board\": { \"type\": \"node\", \"builder\": \"chop\", \"config\": \"diced\", \"next\": \"bowl\" }, \"bowl\": { \"type\": \"node\", \"builder\": \"stir\", \"next\": \"oven\" }, \"oven\": { \"type\": \"node\", \"builder\": \"bake\", \"config\": { \"temperature\": 200, \"duration\": 120 }, \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(())", + "type": "object", + "required": [ + "builder", + "next", + "type" + ], + "properties": { + "builder": { + "type": "string" + }, + "config": { + "default": null + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "type": { + "type": "string", + "enum": [ + "node" + ] + } + } + }, + { + "description": "Connect the request to a registered section.\n\n``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"section_op\", \"ops\": { \"section_op\": { \"type\": \"section\", \"builder\": \"my_section_builder\", \"connect\": { \"my_section_output\": { \"builtin\": \"terminate\" } } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```\n\nCustom sections can also be created via templates ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"templates\": { \"my_template\": { \"inputs\": [\"section_input\"], \"outputs\": [\"section_output\"], \"buffers\": [], \"ops\": { \"section_input\": { \"type\": \"node\", \"builder\": \"my_node\", \"next\": \"section_output\" } } } }, \"start\": \"section_op\", \"ops\": { \"section_op\": { \"type\": \"section\", \"template\": \"my_template\", \"connect\": { \"section_output\": { \"builtin\": \"terminate\" } } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "builder" + ], + "properties": { + "builder": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "template" + ], + "properties": { + "template": { + "type": "string" + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "config": { + "default": null + }, + "connect": { + "default": {}, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/NextOperation" + } + }, + "type": { + "type": "string", + "enum": [ + "section" + ] + } + } + }, + { + "description": "If the request is cloneable, clone it into multiple responses that can each be sent to a different operation. The `next` property is an array.\n\nThis creates multiple simultaneous branches of execution within the workflow. Usually when you have multiple branches you will either * race - connect all branches to `terminate` and the first branch to finish \"wins\" the race and gets to the be output * join - connect each branch into a buffer and then use the `join` operation to reunite them * collect - TODO(@mxgrey): [add the collect operation](https://github.com/open-rmf/bevy_impulse/issues/59)\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"begin_race\", \"ops\": { \"begin_race\": { \"type\": \"fork_clone\", \"next\": [ \"ferrari\", \"mustang\" ] }, \"ferrari\": { \"type\": \"node\", \"builder\": \"drive\", \"config\": \"ferrari\", \"next\": { \"builtin\": \"terminate\" } }, \"mustang\": { \"type\": \"node\", \"builder\": \"drive\", \"config\": \"mustang\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(())", + "type": "object", + "required": [ + "next", + "type" + ], + "properties": { + "next": { + "type": "array", + "items": { + "$ref": "#/definitions/NextOperation" + } + }, + "type": { + "type": "string", + "enum": [ + "fork_clone" + ] + } + } + }, + { + "description": "If the input message is a tuple of (T1, T2, T3, ...), unzip it into multiple output messages of T1, T2, T3, ...\n\nEach output message may have a different type and can be sent to a different operation. This creates multiple simultaneous branches of execution within the workflow. See [`DiagramOperation::ForkClone`] for more information on parallel branches.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"name_phone_address\", \"ops\": { \"name_phone_address\": { \"type\": \"unzip\", \"next\": [ \"process_name\", \"process_phone_number\", \"process_address\" ] }, \"process_name\": { \"type\": \"node\", \"builder\": \"process_name\", \"next\": \"name_processed\" }, \"process_phone_number\": { \"type\": \"node\", \"builder\": \"process_phone_number\", \"next\": \"phone_number_processed\" }, \"process_address\": { \"type\": \"node\", \"builder\": \"process_address\", \"next\": \"address_processed\" }, \"name_processed\": { \"type\": \"buffer\" }, \"phone_number_processed\": { \"type\": \"buffer\" }, \"address_processed\": { \"type\": \"buffer\" }, \"finished\": { \"type\": \"join\", \"buffers\": [ \"name_processed\", \"phone_number_processed\", \"address_processed\" ], \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "next", + "type" + ], + "properties": { + "next": { + "type": "array", + "items": { + "$ref": "#/definitions/NextOperation" + } + }, + "type": { + "type": "string", + "enum": [ + "unzip" + ] + } + } + }, + { + "description": "If the request is a [`Result`], send the output message down an `ok` branch or down an `err` branch depending on whether the result has an [`Ok`] or [`Err`] value. The `ok` branch will receive a `T` while the `err` branch will receive an `E`.\n\nOnly one branch will be activated by each input message that enters the operation.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"fork_result\", \"ops\": { \"fork_result\": { \"type\": \"fork_result\", \"ok\": { \"builtin\": \"terminate\" }, \"err\": { \"builtin\": \"dispose\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "err", + "ok", + "type" + ], + "properties": { + "err": { + "$ref": "#/definitions/NextOperation" + }, + "ok": { + "$ref": "#/definitions/NextOperation" + }, + "type": { + "type": "string", + "enum": [ + "fork_result" + ] + } + } + }, + { + "description": "If the input message is a list-like or map-like object, split it into multiple output messages.\n\nNote that the type of output message from the split depends on how the input message implements the [`Splittable`][1] trait. In many cases this will be a tuple of `(key, value)`.\n\nThere are three ways to specify where the split output messages should go, and all can be used at the same time: * `sequential` - For array-like collections, send the \"first\" element of the collection to the first operation listed in the `sequential` array. The \"second\" element of the collection goes to the second operation listed in the `sequential` array. And so on for all elements in the collection. If one of the elements in the collection is mentioned in the `keyed` set, then the sequence will pass over it as if the element does not exist at all. * `keyed` - For map-like collections, send the split element associated with the specified key to its associated output. * `remaining` - Any elements that are were not captured by `sequential` or by `keyed` will be sent to this.\n\n[1]: crate::Splittable\n\n# Examples\n\nSuppose I am an animal rescuer sorting through a new collection of animals that need recuing. My home has space for three exotic animals plus any number of dogs and cats.\n\nI have a custom `SpeciesCollection` data structure that implements [`Splittable`][1] by allowing you to key on the type of animal.\n\nIn the workflow below, we send all cats and dogs to `home`, and we also send the first three non-dog and non-cat species to `home`. All remaining animals go to the zoo.\n\n``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"select_animals\", \"ops\": { \"select_animals\": { \"type\": \"split\", \"sequential\": [ \"home\", \"home\", \"home\" ], \"keyed\": { \"cat\": \"home\", \"dog\": \"home\" }, \"remaining\": \"zoo\" } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```\n\nIf we input `[\"frog\", \"cat\", \"bear\", \"beaver\", \"dog\", \"rabbit\", \"dog\", \"monkey\"]` then `frog`, `bear`, and `beaver` will be sent to `home` since those are the first three animals that are not `dog` or `cat`, and we will also send one `cat` and two `dog` home. `rabbit` and `monkey` will be sent to the zoo.", + "type": "object", + "required": [ + "type" + ], + "properties": { + "keyed": { + "default": {}, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/NextOperation" + } + }, + "remaining": { + "anyOf": [ + { + "$ref": "#/definitions/NextOperation" + }, + { + "type": "null" + } + ] + }, + "sequential": { + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/NextOperation" + } + }, + "type": { + "type": "string", + "enum": [ + "split" + ] + } + } + }, + { + "description": "Wait for exactly one item to be available in each buffer listed in `buffers`, then join each of those items into a single output message that gets sent to `next`.\n\nIf the `next` operation is not a `node` type (e.g. `fork_clone`) then you must specify a `target_node` so that the diagram knows what data structure to join the values into.\n\nThe output message type must be registered as joinable at compile time. If you want to join into a dynamic data structure then you should use [`DiagramOperation::SerializedJoin`] instead.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"begin_measuring\", \"ops\": { \"begin_measuring\": { \"type\": \"fork_clone\", \"next\": [\"localize\", \"imu\"] }, \"localize\": { \"type\": \"node\", \"builder\": \"localize\", \"next\": \"estimated_position\" }, \"imu\": { \"type\": \"node\", \"builder\": \"imu\", \"config\": \"velocity\", \"next\": \"estimated_velocity\" }, \"estimated_position\": { \"type\": \"buffer\" }, \"estimated_velocity\": { \"type\": \"buffer\" }, \"gather_state\": { \"type\": \"join\", \"buffers\": { \"position\": \"estimate_position\", \"velocity\": \"estimate_velocity\" }, \"next\": \"report_state\" }, \"report_state\": { \"type\": \"node\", \"builder\": \"publish_state\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "buffers", + "next", + "type" + ], + "properties": { + "buffers": { + "description": "Map of buffer keys and buffers.", + "allOf": [ + { + "$ref": "#/definitions/BufferSelection" + } + ] + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "type": { + "type": "string", + "enum": [ + "join" + ] + } + } + }, + { + "description": "Same as [`DiagramOperation::Join`] but all input messages must be serializable, and the output message will always be [`serde_json::Value`].\n\nIf you use an array for `buffers` then the output message will be a [`serde_json::Value::Array`]. If you use a map for `buffers` then the output message will be a [`serde_json::Value::Object`].\n\nUnlike [`DiagramOperation::Join`], the `target_node` property does not exist for this schema.", + "type": "object", + "required": [ + "buffers", + "next", + "type" + ], + "properties": { + "buffers": { + "description": "Map of buffer keys and buffers.", + "allOf": [ + { + "$ref": "#/definitions/BufferSelection" + } + ] + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "type": { + "type": "string", + "enum": [ + "serialized_join" + ] + } + } + }, + { + "description": "If the request is serializable, transform it by running it through a [CEL](https://cel.dev/) program. The context includes a \"request\" variable which contains the input message.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"transform\", \"ops\": { \"transform\": { \"type\": \"transform\", \"cel\": \"request.name\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```\n\nNote that due to how `serde_json` performs serialization, positive integers are always serialized as unsigned. In CEL, You can't do an operation between unsigned and signed so it is recommended to always perform explicit casts.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"transform\", \"ops\": { \"transform\": { \"type\": \"transform\", \"cel\": \"int(request.score) * 3\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "cel", + "next", + "type" + ], + "properties": { + "cel": { + "type": "string" + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "on_error": { + "description": "Specify what happens if an error occurs during the transformation. If you specify a target for on_error, then an error message will be sent to that target. You can set this to `{ \"builtin\": \"dispose\" }` to simply ignore errors.\n\nIf left unspecified, a failure will be treated like an implicit operation failure and behave according to `on_implicit_error`.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/NextOperation" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "transform" + ] + } + } + }, + { + "description": "Create a [`Buffer`][1] which can be used to store and pull data within a scope.\n\nBy default the [`BufferSettings`][2] will keep the single last message pushed to the buffer. You can change that with the optional `settings` property.\n\nUse the `\"serialize\": true` option to serialize the messages into [`JsonMessage`] before they are inserted into the buffer. This allows any serializable message type to be pushed into the buffer. If left unspecified, the buffer will store the specific data type that gets pushed into it. If the buffer inputs are not being serialized, then all incoming messages being pushed into the buffer must have the same type.\n\n[1]: crate::Buffer [2]: crate::BufferSettings\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"fork_clone\", \"ops\": { \"fork_clone\": { \"type\": \"fork_clone\", \"next\": [\"num_output\", \"string_output\", \"all_num_buffer\", \"serialized_num_buffer\"] }, \"num_output\": { \"type\": \"node\", \"builder\": \"num_output\", \"next\": \"buffer_access\" }, \"string_output\": { \"type\": \"node\", \"builder\": \"string_output\", \"next\": \"string_buffer\" }, \"string_buffer\": { \"type\": \"buffer\", \"settings\": { \"retention\": { \"keep_last\": 10 } } }, \"all_num_buffer\": { \"type\": \"buffer\", \"settings\": { \"retention\": \"keep_all\" } }, \"serialized_num_buffer\": { \"type\": \"buffer\", \"serialize\": true }, \"buffer_access\": { \"type\": \"buffer_access\", \"buffers\": [\"string_buffer\"], \"target_node\": \"with_buffer_access\", \"next\": \"with_buffer_access\" }, \"with_buffer_access\": { \"type\": \"node\", \"builder\": \"with_buffer_access\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "type" + ], + "properties": { + "serialize": { + "description": "If true, messages will be serialized before sending into the buffer.", + "type": [ + "boolean", + "null" + ] + }, + "settings": { + "default": { + "retention": { + "keep_last": 1 + } + }, + "allOf": [ + { + "$ref": "#/definitions/BufferSettings" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "buffer" + ] + } + } + }, + { + "description": "Zip a message together with access to one or more buffers.\n\nThe receiving node must have an input type of `(Message, Keys)` where `Keys` implements the [`Accessor`][1] trait.\n\n[1]: crate::Accessor\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"fork_clone\", \"ops\": { \"fork_clone\": { \"type\": \"fork_clone\", \"next\": [\"num_output\", \"string_output\"] }, \"num_output\": { \"type\": \"node\", \"builder\": \"num_output\", \"next\": \"buffer_access\" }, \"string_output\": { \"type\": \"node\", \"builder\": \"string_output\", \"next\": \"string_buffer\" }, \"string_buffer\": { \"type\": \"buffer\" }, \"buffer_access\": { \"type\": \"buffer_access\", \"buffers\": [\"string_buffer\"], \"target_node\": \"with_buffer_access\", \"next\": \"with_buffer_access\" }, \"with_buffer_access\": { \"type\": \"node\", \"builder\": \"with_buffer_access\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(()) ```", + "type": "object", + "required": [ + "buffers", + "next", + "type" + ], + "properties": { + "buffers": { + "description": "Map of buffer keys and buffers.", + "allOf": [ + { + "$ref": "#/definitions/BufferSelection" + } + ] + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "type": { + "type": "string", + "enum": [ + "buffer_access" + ] + } + } + }, + { + "description": "Listen on a buffer.\n\n# Examples ``` # bevy_impulse::Diagram::from_json_str(r#\" { \"version\": \"0.1.0\", \"start\": \"num_output\", \"ops\": { \"buffer\": { \"type\": \"buffer\" }, \"num_output\": { \"type\": \"node\", \"builder\": \"num_output\", \"next\": \"buffer\" }, \"listen\": { \"type\": \"listen\", \"buffers\": [\"buffer\"], \"target_node\": \"listen_buffer\", \"next\": \"listen_buffer\" }, \"listen_buffer\": { \"type\": \"node\", \"builder\": \"listen_buffer\", \"next\": { \"builtin\": \"terminate\" } } } } # \"#)?; # Ok::<_, serde_json::Error>(())", + "type": "object", + "required": [ + "buffers", + "next", + "type" + ], + "properties": { + "buffers": { + "description": "Map of buffer keys and buffers.", + "allOf": [ + { + "$ref": "#/definitions/BufferSelection" + } + ] + }, + "next": { + "$ref": "#/definitions/NextOperation" + }, + "target_node": { + "description": "The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation.", + "anyOf": [ + { + "$ref": "#/definitions/NextOperation" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "listen" + ] + } + } + } + ] + }, + "InputRemapping": { + "description": "This defines how sections remap their inner operations (inputs and buffers) to expose them to operations that are siblings to the section.", + "anyOf": [ + { + "description": "Do a simple 1:1 forwarding of the names listed in the array", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "Rename an operation inside the section to expose it externally. The key of the map is what siblings of the section can connect to, and the value of the entry is the identifier of the input inside the section that is being exposed.\n\nThis allows a section to expose inputs and buffers that are provided by inner sections.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/NextOperation" + } + } + ] + }, + "NamespacedOperation": { + "title": "NamespacedOperation", + "description": "Refer to an operation inside of a namespace, e.g. { \"\": \"\"", + "type": "object", + "maxProperties": 1, + "minProperties": 1, + "additionalProperties": { + "type": "string" + } + }, + "NextOperation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "required": [ + "builtin" + ], + "properties": { + "builtin": { + "$ref": "#/definitions/BuiltinTarget" + } + } + }, + { + "description": "Refer to an \"inner\" operation of one of the sibling operations in a diagram. This can be used to target section inputs.", + "allOf": [ + { + "$ref": "#/definitions/NamespacedOperation" + } + ] + } + ] + }, + "RetentionPolicy": { + "description": "Describe how data within a buffer gets retained. Most mechanisms that pull data from a buffer will remove the oldest item in the buffer, so this policy is for dealing with situations where items are being stored faster than they are being pulled.\n\nThe default value is KeepLast(1).", + "oneOf": [ + { + "description": "Keep the last N items that were stored into the buffer. Once the limit is reached, the oldest item will be removed any time a new item arrives.", + "type": "object", + "required": [ + "keep_last" + ], + "properties": { + "keep_last": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "Keep the first N items that are stored into the buffer. Once the limit is reached, any new item that arrives will be discarded.", + "type": "object", + "required": [ + "keep_first" + ], + "properties": { + "keep_first": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "Do not limit how many items can be stored in the buffer.", + "type": "string", + "enum": [ + "keep_all" + ] + } + ] + }, + "SectionTemplate": { + "type": "object", + "required": [ + "ops" + ], + "properties": { + "buffers": { + "description": "These are the buffers that the section is exposing for you to read, write, join, or listen to.", + "default": [], + "allOf": [ + { + "$ref": "#/definitions/InputRemapping" + } + ] + }, + "inputs": { + "description": "These are the inputs that the section is exposing for its sibling operations to send outputs into.", + "default": [], + "allOf": [ + { + "$ref": "#/definitions/InputRemapping" + } + ] + }, + "ops": { + "description": "Operations that define the behavior of the section.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/DiagramOperation" + } + }, + "outputs": { + "description": "These are the outputs that the section is exposing so you can connect them into siblings of the section.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file diff --git a/diagram-editor/src/types/diagram.d.ts b/diagram-editor/src/types/diagram.d.ts index c4c62ffe..41025d13 100644 --- a/diagram-editor/src/types/diagram.d.ts +++ b/diagram-editor/src/types/diagram.d.ts @@ -24,7 +24,7 @@ export type DiagramOperation = type: 'node'; [k: string]: unknown; } - | ( + | (( | { builder: string; [k: string]: unknown; @@ -33,7 +33,16 @@ export type DiagramOperation = template: string; [k: string]: unknown; } - ) + ) & { + config?: { + [k: string]: unknown; + }; + connect?: { + [k: string]: NextOperation; + }; + type: 'section'; + [k: string]: unknown; + }) | { next: NextOperation[]; type: 'fork_clone'; diff --git a/diagram-editor/src/utils/load-diagram-json.test.ts b/diagram-editor/src/utils/load-diagram-json.test.ts index 7d8af964..3b21a9fd 100644 --- a/diagram-editor/src/utils/load-diagram-json.test.ts +++ b/diagram-editor/src/utils/load-diagram-json.test.ts @@ -1,8 +1,9 @@ -import { test, expect } from 'vitest'; import { loadDiagramJson } from './load-diagram-json'; import testDiagram from './test-data/multiply3.json'; test('load diagram json', () => { const nodes = loadDiagramJson(JSON.stringify(testDiagram)); expect(nodes.length).toBe(1); + expect(nodes[0].id).toBe('mul3'); + expect(nodes[0].data).toStrictEqual(testDiagram.ops.mul3); }); diff --git a/diagram-editor/src/utils/load-diagram-json.ts b/diagram-editor/src/utils/load-diagram-json.ts index 323b95ec..12d75003 100644 --- a/diagram-editor/src/utils/load-diagram-json.ts +++ b/diagram-editor/src/utils/load-diagram-json.ts @@ -1,6 +1,6 @@ import Ajv from 'ajv'; import addFormats from 'ajv-formats'; -import diagramSchema from '../../../diagram.schema.json'; +import diagramSchema from '../diagram.schema.json'; import type { DiagramEditorNode } from '../nodes'; import type { Diagram } from '../types/diagram'; @@ -16,8 +16,12 @@ export function loadDiagramJson(jsonStr: string): DiagramEditorNode[] { throw validate.errors; } - // for (const [opId, op] of Object.entries(diagram.ops)) { - // switch (op.type) - // } - return []; + return Object.entries(diagram.ops).map( + ([id, data]) => + ({ + id, + position: { x: 0, y: 0 }, + data, + }) satisfies DiagramEditorNode, + ); } diff --git a/diagram-editor/tsconfig.json b/diagram-editor/tsconfig.json index e53d1e57..f79506bc 100644 --- a/diagram-editor/tsconfig.json +++ b/diagram-editor/tsconfig.json @@ -13,6 +13,7 @@ "resolveJsonModule": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, + "esModuleInterop": true, /* type checking */ "strict": true, From bb28f6212b58943ba0a3ec01a27c85ce3b574eee Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 21 May 2025 02:30:04 +0000 Subject: [PATCH 005/165] successfully display a diagram Signed-off-by: Teo Koon Peng --- biome.json | 14 +- diagram-editor/package.json | 1 + diagram-editor/pnpm-lock.yaml | 22 +++ diagram-editor/rsbuild.config.ts | 7 - diagram-editor/src/diagram-editor.tsx | 65 ++++++--- diagram-editor/src/nodes/index.ts | 8 +- .../src/utils/load-diagram-json.test.ts | 35 ++++- diagram-editor/src/utils/load-diagram-json.ts | 135 ++++++++++++++++-- .../src/utils/test-data/multiply3.json | 13 -- .../src/utils/test-data/test-diagram.json | 23 +++ 10 files changed, 270 insertions(+), 53 deletions(-) delete mode 100644 diagram-editor/src/utils/test-data/multiply3.json create mode 100644 diagram-editor/src/utils/test-data/test-diagram.json diff --git a/biome.json b/biome.json index 78a8d9f7..f496118a 100644 --- a/biome.json +++ b/biome.json @@ -26,5 +26,17 @@ "rules": { "recommended": true } - } + }, + "overrides": [ + { + "include": ["*.test.ts", "*.test.tsx"], + "linter": { + "rules": { + "style": { + "noNonNullAssertion": "off" + } + } + } + } + ] } diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 6ebfdf5f..1efac1da 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -16,6 +16,7 @@ "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@fontsource/roboto": "^5.2.5", + "@mui/icons-material": "^7.1.0", "@mui/material": "^7.1.0", "@xyflow/react": "^12.6.1", "ajv": "^8.17.1", diff --git a/diagram-editor/pnpm-lock.yaml b/diagram-editor/pnpm-lock.yaml index 22791992..d8c58370 100644 --- a/diagram-editor/pnpm-lock.yaml +++ b/diagram-editor/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@fontsource/roboto': specifier: ^5.2.5 version: 5.2.5 + '@mui/icons-material': + specifier: ^7.1.0 + version: 7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) '@mui/material': specifier: ^7.1.0 version: 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -478,6 +481,17 @@ packages: '@mui/core-downloads-tracker@7.1.0': resolution: {integrity: sha512-E0OqhZv548Qdc0PwWhLVA2zmjJZSTvaL4ZhoswmI8NJEC1tpW2js6LLP827jrW9MEiXYdz3QS6+hask83w74yQ==} + '@mui/icons-material@7.1.0': + resolution: {integrity: sha512-1mUPMAZ+Qk3jfgL5ftRR06ATH/Esi0izHl1z56H+df6cwIlCWG66RXciUqeJCttbOXOQ5y2DCjLZI/4t3Yg3LA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^7.1.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@mui/material@7.1.0': resolution: {integrity: sha512-ahUJdrhEv+mCp4XHW+tHIEYzZMSRLg8z4AjUOsj44QpD1ZaMxQoVOG2xiHvLFdcsIPbgSRx1bg1eQSheHBgvtg==} engines: {node: '>=14.0.0'} @@ -2688,6 +2702,14 @@ snapshots: '@mui/core-downloads-tracker@7.1.0': {} + '@mui/icons-material@7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@mui/material': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + '@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 diff --git a/diagram-editor/rsbuild.config.ts b/diagram-editor/rsbuild.config.ts index 14ed37bf..8a371c4b 100644 --- a/diagram-editor/rsbuild.config.ts +++ b/diagram-editor/rsbuild.config.ts @@ -8,11 +8,4 @@ export default defineConfig({ }, }, plugins: [pluginReact()], - environments: { - test: { - output: { - target: 'node', - }, - }, - }, }); diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx index 7736fe09..c6ab7cab 100644 --- a/diagram-editor/src/diagram-editor.tsx +++ b/diagram-editor/src/diagram-editor.tsx @@ -1,8 +1,7 @@ +import UploadIcon from '@mui/icons-material/UploadFile'; import { type Edge, - type OnConnect, - type OnEdgesChange, - type OnNodesChange, + Panel, ReactFlow, StepEdge, addEdge, @@ -11,7 +10,21 @@ import { } from '@xyflow/react'; import React from 'react'; +import { Button, ButtonGroup, styled } from '@mui/material'; import { type DiagramEditorNode, NODE_TYPES } from './nodes'; +import { loadDiagramJson } from './utils/load-diagram-json'; + +const VisuallyHiddenInput = styled('input')({ + clip: 'rect(0 0 0 0)', + clipPath: 'inset(50%)', + height: 1, + overflow: 'hidden', + position: 'absolute', + bottom: 0, + left: 0, + whiteSpace: 'nowrap', + width: 1, +}); const DiagramEditor = () => { const [nodes, setNodes] = React.useState(() => [ @@ -40,20 +53,40 @@ const DiagramEditor = () => { fitView nodeTypes={NODE_TYPES} edgeTypes={{ default: StepEdge }} - onNodesChange={React.useCallback>( - (changes) => setNodes((prev) => applyNodeChanges(changes, prev)), - [], - )} - onEdgesChange={React.useCallback( - (changes) => setEdges((prev) => applyEdgeChanges(changes, prev)), - [], - )} - onConnect={React.useCallback( - (params) => setEdges((prev) => addEdge(params, prev)), - [], - )} + onNodesChange={(changes) => + setNodes((prev) => applyNodeChanges(changes, prev)) + } + onEdgesChange={(changes) => + setEdges((prev) => applyEdgeChanges(changes, prev)) + } + onConnect={(params) => setEdges((prev) => addEdge(params, prev))} colorMode="dark" - /> + > + + + {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} + + + + ); }; diff --git a/diagram-editor/src/nodes/index.ts b/diagram-editor/src/nodes/index.ts index f345ad85..014801df 100644 --- a/diagram-editor/src/nodes/index.ts +++ b/diagram-editor/src/nodes/index.ts @@ -4,7 +4,13 @@ import { TerminateNode } from './terminate-node'; import type { Node } from '@xyflow/react'; import type { DiagramOperation } from '../types/diagram'; -export type DiagramEditorNode = Node>; +export type DiagramEditorNode = Node< + | DiagramOperation + // TODO: this is a placeholder for reactflow default nodes, it should be removed when all + // diagram operations have custom nodes implemented. + | { type: never; label: string } + | Record +>; export const NODE_TYPES = { start: StartNode, diff --git a/diagram-editor/src/utils/load-diagram-json.test.ts b/diagram-editor/src/utils/load-diagram-json.test.ts index 3b21a9fd..edd1b9c4 100644 --- a/diagram-editor/src/utils/load-diagram-json.test.ts +++ b/diagram-editor/src/utils/load-diagram-json.test.ts @@ -1,9 +1,34 @@ import { loadDiagramJson } from './load-diagram-json'; -import testDiagram from './test-data/multiply3.json'; +import testDiagram from './test-data/test-diagram.json'; test('load diagram json', () => { - const nodes = loadDiagramJson(JSON.stringify(testDiagram)); - expect(nodes.length).toBe(1); - expect(nodes[0].id).toBe('mul3'); - expect(nodes[0].data).toStrictEqual(testDiagram.ops.mul3); + const { nodes, edges } = loadDiagramJson(JSON.stringify(testDiagram)); + expect(nodes.length).toBe(5); + expect(edges.length).toBe(5); + const map = new Map(nodes.map((node) => [node.id, node])); + + const start = map.get('builtin:start'); + expect(start).toBeDefined(); + expect(start!.position).toStrictEqual({ x: 0, y: 0 }); + + const forkClone = map.get('fork_clone'); + expect(forkClone!.data).toMatchObject(testDiagram.ops.fork_clone); + expect(forkClone!.position.x).toBe(start!.position.x); + expect(forkClone!.position.y).toBeGreaterThan(start!.position.y); + + const mul3 = map.get('mul3'); + expect(mul3!.data).toMatchObject(testDiagram.ops.mul3); + expect(mul3!.position.x).toBeLessThan(forkClone!.position.x); + expect(mul3!.position.y).toBeGreaterThan(forkClone!.position.y); + + const mul4 = map.get('mul4'); + expect(mul4!.data).toMatchObject(testDiagram.ops.mul4); + expect(mul4!.position.x).toBeGreaterThan(forkClone!.position.x); + expect(mul4!.position.y).toBeGreaterThan(forkClone!.position.y); + + const terminate = map.get('builtin:terminate'); + expect(terminate).toBeDefined(); + expect(terminate!.position.x).toBeGreaterThan(mul3!.position.x); + expect(terminate!.position.x).toBeLessThan(mul4!.position.x); + expect(terminate!.position.y).toBeGreaterThan(mul4!.position.y); }); diff --git a/diagram-editor/src/utils/load-diagram-json.ts b/diagram-editor/src/utils/load-diagram-json.ts index 12d75003..4b75ba39 100644 --- a/diagram-editor/src/utils/load-diagram-json.ts +++ b/diagram-editor/src/utils/load-diagram-json.ts @@ -1,27 +1,142 @@ import Ajv from 'ajv'; import addFormats from 'ajv-formats'; + +import type { Edge } from '@xyflow/react'; import diagramSchema from '../diagram.schema.json'; import type { DiagramEditorNode } from '../nodes'; -import type { Diagram } from '../types/diagram'; +import type { Diagram, NextOperation } from '../types/diagram'; const ajv = new Ajv(); addFormats(ajv); ajv.addFormat('uint', /^[0-9]+$/); const validate = ajv.compile(diagramSchema); -export function loadDiagramJson(jsonStr: string): DiagramEditorNode[] { +export interface Graph { + nodes: DiagramEditorNode[]; + edges: Edge[]; +} + +export function loadDiagramJson(jsonStr: string): Graph { const diagram = JSON.parse(jsonStr); const valid = validate(diagram); if (!valid) { throw validate.errors; } - return Object.entries(diagram.ops).map( - ([id, data]) => - ({ - id, - position: { x: 0, y: 0 }, - data, - }) satisfies DiagramEditorNode, - ); + const graph = buildGraph(diagram); + autoLayout(diagram.start, graph.nodes); + return graph; +} + +function buildGraph(diagram: Diagram): Graph { + const nodes = [ + { + id: 'builtin:start', + type: 'start', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + { + id: 'builtin:terminate', + type: 'terminate', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + ...Object.entries(diagram.ops).map( + ([id, data]) => + ({ + id, + type: 'default', + position: { x: 0, y: 0 }, + data: { + // TODO: this is a placeholder for reactflow default nodes, it should be removed when all + // diagram operations have custom nodes implemented. + label: id, + ...data, + }, + }) satisfies DiagramEditorNode, + ), + ]; + const startNodeId = getNodeId(diagram.start); + const edges: Edge[] = [ + { + id: `builtin:start->${startNodeId}`, + source: 'builtin:start', + target: startNodeId, + }, + ]; + for (const node of nodes) { + for (const nextId of getNextIds(node)) { + edges.push({ + id: `${node.id}->${nextId}`, + source: node.id, + target: nextId, + }); + } + } + return { nodes, edges }; +} + +function getNextIds(node: DiagramEditorNode): string[] { + switch (node.data.type) { + case 'node': { + return [getNodeId(node.data.next)]; + } + case 'fork_clone': { + return node.data.next.map((next) => getNodeId(next)); + } + default: { + return []; + } + } +} + +function getNodeId(next: NextOperation): string { + if (typeof next === 'string') { + return next; + } + if ('builtin' in next) { + return `builtin:${next.builtin}`; + } + const [namespace, opId] = Object.entries(next)[0]; + return `${namespace}:${opId}`; +} + +/** + * Layout an array of diagram nodes so that they don't overlap. + */ +function autoLayout(start: NextOperation, nodes: DiagramEditorNode[]) { + const cellWidth = 200; + const cellHeight = 100; + const map = new Map(nodes.map((node) => [node.id, node])); + + const getNode = (id: string) => { + const node = map.get(id); + if (!node) { + throw new Error(`node ${id} not found`); + } + return node; + }; + + const firstNode = getNode(getNodeId(start)); + firstNode.position = { x: 0, y: cellHeight }; + const stack = [{ node: getNode(getNodeId(start)), depth: 2 }]; + for (let ctx = stack.pop(); ctx; ctx = stack.pop()) { + const { node, depth } = ctx; + const nextNodeIds = getNextIds(node); + let x = node.position.x - ((nextNodeIds.length - 1) * cellWidth) / 2; + for (const nextNodeId of nextNodeIds) { + const nextNode = getNode(nextNodeId); + nextNode.position.y = depth * cellHeight; + if (nextNode.position.x === 0) { + nextNode.position.x = x; + } else { + nextNode.position.x = (nextNode.position.x + x) / 2; + } + x += cellWidth; + stack.push({ node: nextNode, depth: depth + 1 }); + } + } } diff --git a/diagram-editor/src/utils/test-data/multiply3.json b/diagram-editor/src/utils/test-data/multiply3.json deleted file mode 100644 index 7f986a49..00000000 --- a/diagram-editor/src/utils/test-data/multiply3.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "../../../../diagram.schema.json", - "version": "0.1.0", - "start": "mul3", - "ops": { - "mul3": { - "type": "node", - "builder": "mul", - "config": 3, - "next": { "builtin": "terminate" } - } - } -} diff --git a/diagram-editor/src/utils/test-data/test-diagram.json b/diagram-editor/src/utils/test-data/test-diagram.json new file mode 100644 index 00000000..9c85c7eb --- /dev/null +++ b/diagram-editor/src/utils/test-data/test-diagram.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://raw.githubusercontent.com/open-rmf/bevy_impulse/refs/heads/main/diagram.schema.json", + "version": "0.1.0", + "start": "fork_clone", + "ops": { + "fork_clone": { + "type": "fork_clone", + "next": ["mul3", "mul4"] + }, + "mul3": { + "type": "node", + "builder": "mul", + "config": 3, + "next": { "builtin": "terminate" } + }, + "mul4": { + "type": "node", + "builder": "mul", + "config": 4, + "next": { "builtin": "terminate" } + } + } +} From 0facc773cfef834cae4b4232043a15de9170eaf6 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 21 May 2025 05:45:05 +0000 Subject: [PATCH 006/165] visualize other nodes Signed-off-by: Teo Koon Peng --- diagram-editor/src/diagram-editor.tsx | 2 +- diagram-editor/src/nodes/index.ts | 26 ++- .../src/nodes/input-output-node.tsx | 35 +++ diagram-editor/src/nodes/output-node.tsx | 29 +++ diagram-editor/src/utils/load-diagram-json.ts | 142 ------------ ...gram-json.test.ts => load-diagram.test.ts} | 27 ++- diagram-editor/src/utils/load-diagram.ts | 218 ++++++++++++++++++ .../src/utils/test-data/test-diagram.json | 13 +- 8 files changed, 334 insertions(+), 158 deletions(-) create mode 100644 diagram-editor/src/nodes/input-output-node.tsx create mode 100644 diagram-editor/src/nodes/output-node.tsx delete mode 100644 diagram-editor/src/utils/load-diagram-json.ts rename diagram-editor/src/utils/{load-diagram-json.test.ts => load-diagram.test.ts} (52%) create mode 100644 diagram-editor/src/utils/load-diagram.ts diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx index c6ab7cab..30ff6ad5 100644 --- a/diagram-editor/src/diagram-editor.tsx +++ b/diagram-editor/src/diagram-editor.tsx @@ -12,7 +12,7 @@ import React from 'react'; import { Button, ButtonGroup, styled } from '@mui/material'; import { type DiagramEditorNode, NODE_TYPES } from './nodes'; -import { loadDiagramJson } from './utils/load-diagram-json'; +import { loadDiagramJson } from './utils/load-diagram'; const VisuallyHiddenInput = styled('input')({ clip: 'rect(0 0 0 0)', diff --git a/diagram-editor/src/nodes/index.ts b/diagram-editor/src/nodes/index.ts index 014801df..0f5b80d0 100644 --- a/diagram-editor/src/nodes/index.ts +++ b/diagram-editor/src/nodes/index.ts @@ -3,16 +3,26 @@ import { TerminateNode } from './terminate-node'; import type { Node } from '@xyflow/react'; import type { DiagramOperation } from '../types/diagram'; - -export type DiagramEditorNode = Node< - | DiagramOperation - // TODO: this is a placeholder for reactflow default nodes, it should be removed when all - // diagram operations have custom nodes implemented. - | { type: never; label: string } - | Record ->; +import { InputOutputNode } from './input-output-node'; +import { OutputNode } from './output-node'; export const NODE_TYPES = { start: StartNode, terminate: TerminateNode, + inputOutput: InputOutputNode, + output: OutputNode, }; + +export type NodeTypes = keyof typeof NODE_TYPES; + +export type DiagramEditorNode = Node< + DiagramOperation | Record, + NodeTypes +>; + +type JoinOperation = Extract< + DiagramOperation, + { type: 'join' } | { type: 'serialized_join' } +>; + +export type JoinNode = Node; diff --git a/diagram-editor/src/nodes/input-output-node.tsx b/diagram-editor/src/nodes/input-output-node.tsx new file mode 100644 index 00000000..9b07893a --- /dev/null +++ b/diagram-editor/src/nodes/input-output-node.tsx @@ -0,0 +1,35 @@ +import { Button, Paper } from '@mui/material'; +import type { NodeProps } from '@xyflow/react'; +import { Handle, Position } from '@xyflow/react'; + +import type { DiagramEditorNode } from '.'; + +export function InputOutputNode({ + id, + isConnectable, + selected, + sourcePosition = Position.Bottom, + targetPosition = Position.Top, +}: NodeProps) { + return ( + + + + + + ); +} diff --git a/diagram-editor/src/nodes/output-node.tsx b/diagram-editor/src/nodes/output-node.tsx new file mode 100644 index 00000000..fa41b95d --- /dev/null +++ b/diagram-editor/src/nodes/output-node.tsx @@ -0,0 +1,29 @@ +import { Button, Paper } from '@mui/material'; +import type { NodeProps } from '@xyflow/react'; +import { Handle, Position } from '@xyflow/react'; + +import type { DiagramEditorNode } from '.'; + +export function OutputNode({ + id, + isConnectable, + selected, + sourcePosition = Position.Bottom, +}: NodeProps) { + return ( + + + + + ); +} diff --git a/diagram-editor/src/utils/load-diagram-json.ts b/diagram-editor/src/utils/load-diagram-json.ts deleted file mode 100644 index 4b75ba39..00000000 --- a/diagram-editor/src/utils/load-diagram-json.ts +++ /dev/null @@ -1,142 +0,0 @@ -import Ajv from 'ajv'; -import addFormats from 'ajv-formats'; - -import type { Edge } from '@xyflow/react'; -import diagramSchema from '../diagram.schema.json'; -import type { DiagramEditorNode } from '../nodes'; -import type { Diagram, NextOperation } from '../types/diagram'; - -const ajv = new Ajv(); -addFormats(ajv); -ajv.addFormat('uint', /^[0-9]+$/); -const validate = ajv.compile(diagramSchema); - -export interface Graph { - nodes: DiagramEditorNode[]; - edges: Edge[]; -} - -export function loadDiagramJson(jsonStr: string): Graph { - const diagram = JSON.parse(jsonStr); - const valid = validate(diagram); - if (!valid) { - throw validate.errors; - } - - const graph = buildGraph(diagram); - autoLayout(diagram.start, graph.nodes); - return graph; -} - -function buildGraph(diagram: Diagram): Graph { - const nodes = [ - { - id: 'builtin:start', - type: 'start', - position: { x: 0, y: 0 }, - selectable: false, - data: {}, - }, - { - id: 'builtin:terminate', - type: 'terminate', - position: { x: 0, y: 0 }, - selectable: false, - data: {}, - }, - ...Object.entries(diagram.ops).map( - ([id, data]) => - ({ - id, - type: 'default', - position: { x: 0, y: 0 }, - data: { - // TODO: this is a placeholder for reactflow default nodes, it should be removed when all - // diagram operations have custom nodes implemented. - label: id, - ...data, - }, - }) satisfies DiagramEditorNode, - ), - ]; - const startNodeId = getNodeId(diagram.start); - const edges: Edge[] = [ - { - id: `builtin:start->${startNodeId}`, - source: 'builtin:start', - target: startNodeId, - }, - ]; - for (const node of nodes) { - for (const nextId of getNextIds(node)) { - edges.push({ - id: `${node.id}->${nextId}`, - source: node.id, - target: nextId, - }); - } - } - return { nodes, edges }; -} - -function getNextIds(node: DiagramEditorNode): string[] { - switch (node.data.type) { - case 'node': { - return [getNodeId(node.data.next)]; - } - case 'fork_clone': { - return node.data.next.map((next) => getNodeId(next)); - } - default: { - return []; - } - } -} - -function getNodeId(next: NextOperation): string { - if (typeof next === 'string') { - return next; - } - if ('builtin' in next) { - return `builtin:${next.builtin}`; - } - const [namespace, opId] = Object.entries(next)[0]; - return `${namespace}:${opId}`; -} - -/** - * Layout an array of diagram nodes so that they don't overlap. - */ -function autoLayout(start: NextOperation, nodes: DiagramEditorNode[]) { - const cellWidth = 200; - const cellHeight = 100; - const map = new Map(nodes.map((node) => [node.id, node])); - - const getNode = (id: string) => { - const node = map.get(id); - if (!node) { - throw new Error(`node ${id} not found`); - } - return node; - }; - - const firstNode = getNode(getNodeId(start)); - firstNode.position = { x: 0, y: cellHeight }; - const stack = [{ node: getNode(getNodeId(start)), depth: 2 }]; - for (let ctx = stack.pop(); ctx; ctx = stack.pop()) { - const { node, depth } = ctx; - const nextNodeIds = getNextIds(node); - let x = node.position.x - ((nextNodeIds.length - 1) * cellWidth) / 2; - for (const nextNodeId of nextNodeIds) { - const nextNode = getNode(nextNodeId); - nextNode.position.y = depth * cellHeight; - if (nextNode.position.x === 0) { - nextNode.position.x = x; - } else { - nextNode.position.x = (nextNode.position.x + x) / 2; - } - x += cellWidth; - stack.push({ node: nextNode, depth: depth + 1 }); - } - } -} diff --git a/diagram-editor/src/utils/load-diagram-json.test.ts b/diagram-editor/src/utils/load-diagram.test.ts similarity index 52% rename from diagram-editor/src/utils/load-diagram-json.test.ts rename to diagram-editor/src/utils/load-diagram.test.ts index edd1b9c4..2a88596c 100644 --- a/diagram-editor/src/utils/load-diagram-json.test.ts +++ b/diagram-editor/src/utils/load-diagram.test.ts @@ -1,10 +1,10 @@ -import { loadDiagramJson } from './load-diagram-json'; +import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; test('load diagram json', () => { const { nodes, edges } = loadDiagramJson(JSON.stringify(testDiagram)); - expect(nodes.length).toBe(5); - expect(edges.length).toBe(5); + expect(nodes.length).toBe(8); + expect(edges.length).toBe(8); const map = new Map(nodes.map((node) => [node.id, node])); const start = map.get('builtin:start'); @@ -21,14 +21,29 @@ test('load diagram json', () => { expect(mul3!.position.x).toBeLessThan(forkClone!.position.x); expect(mul3!.position.y).toBeGreaterThan(forkClone!.position.y); + const mul3Buffer = map.get('mul3_buffer'); + expect(mul3Buffer!.data).toMatchObject(testDiagram.ops.mul3_buffer); + expect(mul3Buffer!.position.x).toBe(mul3!.position.x); + expect(mul3Buffer!.position.y).toBeGreaterThan(mul3!.position.y); + const mul4 = map.get('mul4'); expect(mul4!.data).toMatchObject(testDiagram.ops.mul4); expect(mul4!.position.x).toBeGreaterThan(forkClone!.position.x); expect(mul4!.position.y).toBeGreaterThan(forkClone!.position.y); + const mul4Buffer = map.get('mul4_buffer'); + expect(mul4Buffer!.data).toMatchObject(testDiagram.ops.mul4_buffer); + expect(mul4Buffer!.position.x).toBe(mul4!.position.x); + expect(mul4Buffer!.position.y).toBeGreaterThan(mul4!.position.y); + + const join = map.get('join'); + expect(join!.data).toMatchObject(testDiagram.ops.join); + expect(join!.position.x).toBeGreaterThan(mul3Buffer!.position.x); + expect(join!.position.x).toBeLessThan(mul4Buffer!.position.x); + expect(join!.position.y).toBeGreaterThan(mul4Buffer!.position.y); + const terminate = map.get('builtin:terminate'); expect(terminate).toBeDefined(); - expect(terminate!.position.x).toBeGreaterThan(mul3!.position.x); - expect(terminate!.position.x).toBeLessThan(mul4!.position.x); - expect(terminate!.position.y).toBeGreaterThan(mul4!.position.y); + expect(terminate!.position.x).toBe(join!.position.x); + expect(terminate!.position.y).toBeGreaterThan(join!.position.y); }); diff --git a/diagram-editor/src/utils/load-diagram.ts b/diagram-editor/src/utils/load-diagram.ts new file mode 100644 index 00000000..a8dd835f --- /dev/null +++ b/diagram-editor/src/utils/load-diagram.ts @@ -0,0 +1,218 @@ +import Ajv from 'ajv'; +import addFormats from 'ajv-formats'; + +import type { Edge } from '@xyflow/react'; +import diagramSchema from '../diagram.schema.json'; +import type { DiagramEditorNode } from '../nodes'; +import type { + BufferSelection, + Diagram, + NamespacedOperation, + NextOperation, +} from '../types/diagram'; + +const ajv = new Ajv(); +addFormats(ajv); +ajv.addFormat('uint', /^[0-9]+$/); +const validate = ajv.compile(diagramSchema); + +export interface Graph { + nodes: DiagramEditorNode[]; + edges: Edge[]; +} + +export function loadDiagramJson(jsonStr: string): Graph { + const diagram = JSON.parse(jsonStr); + const valid = validate(diagram); + if (!valid) { + throw validate.errors; + } + + const graph = buildGraph(diagram); + autoLayout(diagram.start, graph.nodes); + return graph; +} + +function getNodeId(next: NextOperation): string { + if (typeof next === 'string') { + return next; + } + if ('builtin' in next) { + return `builtin:${next.builtin}`; + } + const [namespace, opId] = Object.entries(next)[0]; + return `${namespace}:${opId}`; +} + +function getBufferIds(buffer: BufferSelection): string[] { + if (typeof buffer === 'string') { + return [getNodeId(buffer)]; + } + if (Array.isArray(buffer)) { + return buffer.map((b) => getNodeId(b)); + } + return [getNodeId(buffer as NamespacedOperation)]; +} + +function getNextIds( + node: DiagramEditorNode, + allNodes: DiagramEditorNode[], +): string[] { + switch (node.data.type) { + case 'buffer': { + const nextIds: string[] = []; + for (const joinNode of allNodes) { + if ( + joinNode.data.type === 'join' || + joinNode.data.type === 'serialized_join' + ) { + const buffers = getBufferIds(joinNode.data.buffers); + if (buffers.includes(node.id)) { + nextIds.push(joinNode.id); + } + } + } + return nextIds; + } + case 'buffer_access': + case 'join': + case 'listen': + case 'node': + case 'serialized_join': + case 'transform': { + return [getNodeId(node.data.next)]; + } + case 'fork_clone': + case 'unzip': { + return node.data.next.map((next) => getNodeId(next)); + } + case 'fork_result': { + return [getNodeId(node.data.ok), getNodeId(node.data.err)]; + } + case 'split': { + const nextIds: string[] = []; + if (node.data.keyed) { + nextIds.push( + ...Object.values(node.data.keyed).map((next) => getNodeId(next)), + ); + } + if (node.data.sequential) { + nextIds.push( + ...Object.values(node.data.sequential).map((next) => getNodeId(next)), + ); + } + if (node.data.remaining) { + nextIds.push(getNodeId(node.data.remaining)); + } + return nextIds; + } + case 'section': { + if (node.data.connect) { + return Object.values(node.data.connect).map((next) => getNodeId(next)); + } + return []; + } + default: { + return []; + } + } +} + +function buildGraph(diagram: Diagram): Graph { + const nodes: DiagramEditorNode[] = [ + { + id: 'builtin:start', + type: 'start', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + { + id: 'builtin:terminate', + type: 'terminate', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + ...Object.entries(diagram.ops).map( + ([opId, op]) => + ({ + id: opId, + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: op, + }) satisfies DiagramEditorNode, + ), + ]; + const startNodeId = getNodeId(diagram.start); + const edges: Edge[] = [ + { + id: `builtin:start->${startNodeId}`, + source: 'builtin:start', + target: startNodeId, + }, + ]; + for (const node of nodes) { + for (const nextId of getNextIds(node, nodes)) { + edges.push({ + id: `${node.id}->${nextId}`, + source: node.id, + target: nextId, + }); + } + } + return { nodes, edges }; +} + +/** + * Layout an array of diagram nodes so that they don't overlap. + */ +function autoLayout( + start: NextOperation, + nodes: DiagramEditorNode[], + rootPosition = { x: 0, y: 0 }, +) { + const cellWidth = 200; + const cellHeight = 100; + const map = new Map(nodes.map((node) => [node.id, node])); + + const getNode = (id: string) => { + const node = map.get(id); + if (!node) { + throw new Error(`node ${id} not found`); + } + return node; + }; + + const firstNode = getNode(getNodeId(start)); + firstNode.position = { x: rootPosition.x, y: rootPosition.y + cellHeight }; + const fifo = [{ node: getNode(getNodeId(start)), depth: 2 }]; + let maxX = firstNode.position.x; + for (let ctx = fifo.shift(); ctx; ctx = fifo.shift()) { + const { node, depth } = ctx; + const nextNodeIds = getNextIds(node, nodes); + let x = node.position.x - ((nextNodeIds.length - 1) * cellWidth) / 2; + for (const nextNodeId of nextNodeIds) { + const nextNode = getNode(nextNodeId); + nextNode.position.y = depth * cellHeight; + // If the node is in the inital position, move it directly below the parent node. + // If it is not in the initial position, that means that the node has multiple parents, + // in that case, move it to the center of its parents. + if (nextNode.position.x === rootPosition.x) { + nextNode.position.x = x; + } else { + nextNode.position.x = (nextNode.position.x + x) / 2; + } + x += cellWidth; + if (x > maxX) { + maxX = nextNode.position.x; + } + + const existing = fifo.findIndex((ctx) => ctx.node.id === nextNode.id); + if (existing > -1) { + fifo.splice(existing, 1); + } + fifo.push({ node: nextNode, depth: depth + 1 }); + } + } +} diff --git a/diagram-editor/src/utils/test-data/test-diagram.json b/diagram-editor/src/utils/test-data/test-diagram.json index 9c85c7eb..b8d57cde 100644 --- a/diagram-editor/src/utils/test-data/test-diagram.json +++ b/diagram-editor/src/utils/test-data/test-diagram.json @@ -11,12 +11,23 @@ "type": "node", "builder": "mul", "config": 3, - "next": { "builtin": "terminate" } + "next": "mul3_buffer" + }, + "mul3_buffer": { + "type": "buffer" }, "mul4": { "type": "node", "builder": "mul", "config": 4, + "next": "mul4_buffer" + }, + "mul4_buffer": { + "type": "buffer" + }, + "join": { + "type": "join", + "buffers": ["mul3_buffer", "mul4_buffer"], "next": { "builtin": "terminate" } } } From cf6764728a2a134b4c25622523024c943b77d3b1 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 26 May 2025 02:51:56 +0000 Subject: [PATCH 007/165] organize workspace Signed-off-by: Teo Koon Peng --- .gitignore | 3 + diagram-editor/.gitignore | 14 +- diagram-editor/pnpm-workspace.yaml | 2 - .../pnpm-lock.yaml => pnpm-lock.yaml | 436 +++++++----------- pnpm-workspace.yaml | 2 + 5 files changed, 170 insertions(+), 287 deletions(-) delete mode 100644 diagram-editor/pnpm-workspace.yaml rename diagram-editor/pnpm-lock.yaml => pnpm-lock.yaml (90%) create mode 100644 pnpm-workspace.yaml diff --git a/.gitignore b/.gitignore index 543a865d..5fec101f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ debug/ target/ Cargo.lock + +# nodejs +node_modules diff --git a/diagram-editor/.gitignore b/diagram-editor/.gitignore index 38d7344c..9b1c8b13 100644 --- a/diagram-editor/.gitignore +++ b/diagram-editor/.gitignore @@ -1,13 +1 @@ -# Local -.DS_Store -*.local -*.log* - -# Dist -node_modules -dist/ - -# IDE -.vscode/* -!.vscode/extensions.json -.idea +/dist diff --git a/diagram-editor/pnpm-workspace.yaml b/diagram-editor/pnpm-workspace.yaml deleted file mode 100644 index efc037aa..00000000 --- a/diagram-editor/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -onlyBuiltDependencies: - - esbuild diff --git a/diagram-editor/pnpm-lock.yaml b/pnpm-lock.yaml similarity index 90% rename from diagram-editor/pnpm-lock.yaml rename to pnpm-lock.yaml index d8c58370..e3558e01 100644 --- a/diagram-editor/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,26 +6,26 @@ settings: importers: - .: + diagram-editor: dependencies: '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.1.4)(react@19.1.0) + version: 11.14.0(@types/react@19.1.5)(react@19.1.0) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) '@fontsource/roboto': specifier: ^5.2.5 version: 5.2.5 '@mui/icons-material': specifier: ^7.1.0 - version: 7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + version: 7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) '@mui/material': specifier: ^7.1.0 - version: 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@xyflow/react': specifier: ^12.6.1 - version: 12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 12.6.4(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ajv: specifier: ^8.17.1 version: 8.17.1 @@ -44,22 +44,22 @@ importers: version: 1.9.4 '@rsbuild/core': specifier: ^1.3.15 - version: 1.3.20 + version: 1.3.21 '@rsbuild/plugin-react': specifier: ^1.3.0 - version: 1.3.1(@rsbuild/core@1.3.20) + version: 1.3.1(@rsbuild/core@1.3.21) '@types/jest': specifier: ^29.5.14 version: 29.5.14 '@types/react': specifier: ^19.1.2 - version: 19.1.4 + version: 19.1.5 '@types/react-dom': specifier: ^19.1.3 - version: 19.1.5(@types/react@19.1.4) + version: 19.1.5(@types/react@19.1.5) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -68,7 +68,7 @@ importers: version: 15.0.4 ts-jest: specifier: ^29.3.4 - version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0))(typescript@5.8.3) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -301,10 +301,6 @@ packages: cpu: [x64] os: [win32] - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -454,9 +450,6 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -572,8 +565,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rsbuild/core@1.3.20': - resolution: {integrity: sha512-5VxOddgGHaq5x4ONdKOZvLYLj8dhVfCAz+cERNLXrKLzBISouY1A9TJcbZBK4xoH/0DJrDtDzapNA+dI9Jr07Q==} + '@rsbuild/core@1.3.21': + resolution: {integrity: sha512-0Xy3CEFiLFXZpPmmVmX1XvfAENGrb5IyXYL7zkJ8vF7v3fmZgo3yy3ZeY8SesPTsiZIbCObJ6PemFbLee3S3oA==} engines: {node: '>=16.10.0'} hasBin: true @@ -582,56 +575,56 @@ packages: peerDependencies: '@rsbuild/core': 1.x - '@rspack/binding-darwin-arm64@1.3.10': - resolution: {integrity: sha512-0k/j8OeMSVm5u5Nzckp9Ie7S7hprnvNegebnGr+L6VCyD7sMqm4m+4rLHs99ZklYdH0dZtY2+LrzrtjUZCqfew==} + '@rspack/binding-darwin-arm64@1.3.11': + resolution: {integrity: sha512-sGoFDXYNinubhEiPSjtA/ua3qhMj6VVBPTSDvprZj+MT18YV7tQQtwBpm+8sbqJ1P5y+a3mzsP3IphRWyIQyXw==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.3.10': - resolution: {integrity: sha512-jOyqYW/18cgxw60wK5oqJvM194pbD4H99xaif89McNtLkH3npFvBkXBHVWWuOHGoXNX0LhRpHcI89p9b9THQZQ==} + '@rspack/binding-darwin-x64@1.3.11': + resolution: {integrity: sha512-4zgOkCLxhp4Ki98GuDaZgz4exXcE4+sgvXY/xA/A5FGPVRbfQLQ5psSOk0F/gvMua1r15E66loQRJpuzUK6bTA==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.3.10': - resolution: {integrity: sha512-zhF5ZNaT/7pxrm8xD3dWG1b4x+FO3LbVeZZG448CjpSo5T57kPD+SaGUU1GcPpn6mexf795x0SVS49aH7/e3Dg==} + '@rspack/binding-linux-arm64-gnu@1.3.11': + resolution: {integrity: sha512-NIOaIfYUmJs1XL4lbGVtcMm1KlA/6ZR6oAbs2ekofKXtJYAFQgnLTf7ZFmIwVjS0mP78BmeSNcIM6pd2w5id4w==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.3.10': - resolution: {integrity: sha512-o3x7IrOSCHK6lcRvdZgsSuOG1CHRQR00xiyLW7kkWmNm7t417LC9xdFWKIK62C5fKXGC5YcTbUkDMnQujespkg==} + '@rspack/binding-linux-arm64-musl@1.3.11': + resolution: {integrity: sha512-CRRAQ379uzA2QfD9HHNtxuuqzGksUapMVcTLY5NIXWfvHLUJShdlSJQv3UQcqgAJNrMY7Ex1PnoQs1jZgUiqZA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.3.10': - resolution: {integrity: sha512-FMSi28VZhXMr15picOHFynULhqZ/FODPxRIS6uNrvPRYcbNuiO1v+VHV6X88mhOMmJ/aVF6OwjUO/o2l1FVa9Q==} + '@rspack/binding-linux-x64-gnu@1.3.11': + resolution: {integrity: sha512-k3OyvLneX2ZeL8z/OzPojpImqy6PgqKJD+NtOvcr/TgbgADHZ3xQttf6B2X+qnZMAgOZ+RTeTkOFrvsg9AEKmA==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.3.10': - resolution: {integrity: sha512-e0xbY9SlbRGIFz41v1yc0HfREvmgMnLV1bLmTSPK8wI2suIEJ7iYYqsocHOAOk86qLZcxVrTnL6EjUcNaRTWlg==} + '@rspack/binding-linux-x64-musl@1.3.11': + resolution: {integrity: sha512-2agcELyyQ95jWGCW0YWD0TvAcN40yUjmxn9NXQBLHPX5Eb07NaHXairMsvV9vqQsPsq0nxxfd9Wsow18Y5r/Hw==} cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@1.3.10': - resolution: {integrity: sha512-YHJPvEujWeWjU6EUF6sDpaec9rsOtKVvy16YCtGaxRpDQXqfuxibnp6Ge0ZTTrY+joRiWehRA9OUI+3McqI+QA==} + '@rspack/binding-win32-arm64-msvc@1.3.11': + resolution: {integrity: sha512-sjGoChazu0krigT/LVwGUsgCv3D3s/4cR/3P4VzuDNVlb4pbh1CDa642Fr0TceqAXCeKW5GiL/EQOfZ4semtcQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.3.10': - resolution: {integrity: sha512-2iwSBzVBC89ZSk56MYwgirh3bda2WKmL9I3qPajiTEivChXpX7jp83jAtGE6CPqPYcccYz6nrURTHNUZhqXxVw==} + '@rspack/binding-win32-ia32-msvc@1.3.11': + resolution: {integrity: sha512-tjywW84oQLSqRmvQZ+fXP7e3eNmjScYrlWEPAQFjf08N19iAJ9UOGuuFw8Fk5ZmrlNZ2Qo9ASSOI7Nnwx2aZYg==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.3.10': - resolution: {integrity: sha512-ehWJ9Y5Zezj/+uJpiWbt29RZaRIM00f91PWuabM6/sKmHJhdCEE21u5iI3B8DeW/EjJsH8zkI69YYAxJWwGn9A==} + '@rspack/binding-win32-x64-msvc@1.3.11': + resolution: {integrity: sha512-pPy3yU6SAMfEPY7ki1KAetiDFfRbkYMiX3F89P9kX01UAePkLRNsjacHF4w7N3EsBsWn1FlGaYZdlzmOI5pg2Q==} cpu: [x64] os: [win32] - '@rspack/binding@1.3.10': - resolution: {integrity: sha512-9TjO+Ig5U4VqdYWpBsv01n4d2KsgFfdXGIE7zdHXDDbry0avL0J4109ESqSeP9uC+Bi7ZCF53iaxJRvZDflNVQ==} + '@rspack/binding@1.3.11': + resolution: {integrity: sha512-BbMfZHqfH+CzFtZDg+v9nbKifJIJDUPD6KuoWlHq581koKvD3UMx6oVrj9w13JvO2xWNPeHclmqWAFgoD7faEQ==} - '@rspack/core@1.3.10': - resolution: {integrity: sha512-YomvSRGuMUQgCE2rNMdff2q1Z0YpZw/z6m5+PVTMSs9l/q69YKUzpbpSD8YyB5i1DddrRxC2RE34DkrBuwlREQ==} + '@rspack/core@1.3.11': + resolution: {integrity: sha512-aSYPtT1gum5MCfcFANdTroJ4JwzozuL3wX0twMGNAB7amq6+nZrbsUKWjcHgneCeZdahxzrKdyYef3FHaJ7lEA==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -668,18 +661,6 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -731,11 +712,11 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + '@types/lodash@4.17.17': + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} - '@types/node@22.15.19': - resolution: {integrity: sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==} + '@types/node@22.15.21': + resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -753,8 +734,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.1.4': - resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} + '@types/react@19.1.5': + resolution: {integrity: sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -768,14 +749,14 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@xyflow/react@12.6.1': - resolution: {integrity: sha512-DQs1LOaxSIdsoxsfZSLBoID93eQvfBXDraBwalpKaVcWTueWfjnW9mQ7jviwC3zPLwyx/ioPh+C45/Ez7+CHUQ==} + '@xyflow/react@12.6.4': + resolution: {integrity: sha512-/dOQ43Nu217cwHzy7f8kNUrFMeJJENzftVgT2VdFFHi6fHlG83pF+gLmvkRW9Be7alCsR6G+LFxxCdsQQbazHg==} peerDependencies: react: '>=17' react-dom: '>=17' - '@xyflow/system@0.0.58': - resolution: {integrity: sha512-f4l+/AAdWejcFrkaCbKWRWyL64G7gMR0xrwRlbG6oF4KIOMcygGFxOXdOV8QCMcQ9u++QIDpsogpUhexX4vi1Q==} + '@xyflow/system@0.0.61': + resolution: {integrity: sha512-TsZG/Ez8dzxX6/Ol44LvFqVZsYvyz6dpDlAQZZk6hTL7JLGO5vN3dboRJqMwU8/Qtr5IEv5YBzojjAwIqW1HCA==} abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -828,9 +809,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -984,9 +962,6 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1082,10 +1057,6 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -1103,8 +1074,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.155: - resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + electron-to-chromium@1.5.157: + resolution: {integrity: sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -1946,8 +1917,8 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} tmpl@1.0.5: @@ -1989,20 +1960,6 @@ packages: esbuild: optional: true - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2044,9 +2001,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} @@ -2128,16 +2082,12 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zustand@4.5.6: - resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + zustand@4.5.7: + resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -2388,11 +2338,6 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - optional: true - '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -2425,7 +2370,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0)': + '@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 '@emotion/babel-plugin': 11.13.5 @@ -2437,7 +2382,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 transitivePeerDependencies: - supports-color @@ -2451,18 +2396,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/react': 11.14.0(@types/react@19.1.5)(react@19.1.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) '@emotion/utils': 1.4.2 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 transitivePeerDependencies: - supports-color @@ -2491,27 +2436,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2536,7 +2481,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -2554,7 +2499,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -2576,7 +2521,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2646,7 +2591,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.19 + '@types/node': 22.15.21 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -2667,12 +2612,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - optional: true - '@jsdevtools/ono@7.1.3': {} '@module-federation/error-codes@0.13.1': {} @@ -2702,23 +2641,23 @@ snapshots: '@mui/core-downloads-tracker@7.1.0': {} - '@mui/icons-material@7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + '@mui/icons-material@7.1.0(@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 - '@mui/material': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mui/material': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mui/material@7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 '@mui/core-downloads-tracker': 7.1.0 - '@mui/system': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) - '@mui/types': 7.4.2(@types/react@19.1.4) - '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + '@mui/system': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) + '@mui/types': 7.4.2(@types/react@19.1.5) + '@mui/utils': 7.1.0(@types/react@19.1.5)(react@19.1.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.1.4) + '@types/react-transition-group': 4.4.12(@types/react@19.1.5) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -2727,20 +2666,20 @@ snapshots: react-is: 19.1.0 react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) - '@types/react': 19.1.4 + '@emotion/react': 11.14.0(@types/react@19.1.5)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) + '@types/react': 19.1.5 - '@mui/private-theming@7.1.0(@types/react@19.1.4)(react@19.1.0)': + '@mui/private-theming@7.1.0(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 - '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + '@mui/utils': 7.1.0(@types/react@19.1.5)(react@19.1.0) prop-types: 15.8.1 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@mui/styled-engine@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(react@19.1.0)': + '@mui/styled-engine@7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 '@emotion/cache': 11.14.0 @@ -2750,104 +2689,104 @@ snapshots: prop-types: 15.8.1 react: 19.1.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@emotion/react': 11.14.0(@types/react@19.1.5)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) - '@mui/system@7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + '@mui/system@7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 - '@mui/private-theming': 7.1.0(@types/react@19.1.4)(react@19.1.0) - '@mui/styled-engine': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0))(react@19.1.0) - '@mui/types': 7.4.2(@types/react@19.1.4) - '@mui/utils': 7.1.0(@types/react@19.1.4)(react@19.1.0) + '@mui/private-theming': 7.1.0(@types/react@19.1.5)(react@19.1.0) + '@mui/styled-engine': 7.1.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0))(react@19.1.0) + '@mui/types': 7.4.2(@types/react@19.1.5) + '@mui/utils': 7.1.0(@types/react@19.1.5)(react@19.1.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.1.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) - '@types/react': 19.1.4 + '@emotion/react': 11.14.0(@types/react@19.1.5)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.5)(react@19.1.0))(@types/react@19.1.5)(react@19.1.0) + '@types/react': 19.1.5 - '@mui/types@7.4.2(@types/react@19.1.4)': + '@mui/types@7.4.2(@types/react@19.1.5)': dependencies: '@babel/runtime': 7.27.1 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@mui/utils@7.1.0(@types/react@19.1.4)(react@19.1.0)': + '@mui/utils@7.1.0(@types/react@19.1.5)(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 - '@mui/types': 7.4.2(@types/react@19.1.4) + '@mui/types': 7.4.2(@types/react@19.1.5) '@types/prop-types': 15.7.14 clsx: 2.1.1 prop-types: 15.8.1 react: 19.1.0 react-is: 19.1.0 optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 '@popperjs/core@2.11.8': {} - '@rsbuild/core@1.3.20': + '@rsbuild/core@1.3.21': dependencies: - '@rspack/core': 1.3.10(@swc/helpers@0.5.17) + '@rspack/core': 1.3.11(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 core-js: 3.42.0 jiti: 2.4.2 - '@rsbuild/plugin-react@1.3.1(@rsbuild/core@1.3.20)': + '@rsbuild/plugin-react@1.3.1(@rsbuild/core@1.3.21)': dependencies: - '@rsbuild/core': 1.3.20 + '@rsbuild/core': 1.3.21 '@rspack/plugin-react-refresh': 1.4.3(react-refresh@0.17.0) react-refresh: 0.17.0 transitivePeerDependencies: - webpack-hot-middleware - '@rspack/binding-darwin-arm64@1.3.10': + '@rspack/binding-darwin-arm64@1.3.11': optional: true - '@rspack/binding-darwin-x64@1.3.10': + '@rspack/binding-darwin-x64@1.3.11': optional: true - '@rspack/binding-linux-arm64-gnu@1.3.10': + '@rspack/binding-linux-arm64-gnu@1.3.11': optional: true - '@rspack/binding-linux-arm64-musl@1.3.10': + '@rspack/binding-linux-arm64-musl@1.3.11': optional: true - '@rspack/binding-linux-x64-gnu@1.3.10': + '@rspack/binding-linux-x64-gnu@1.3.11': optional: true - '@rspack/binding-linux-x64-musl@1.3.10': + '@rspack/binding-linux-x64-musl@1.3.11': optional: true - '@rspack/binding-win32-arm64-msvc@1.3.10': + '@rspack/binding-win32-arm64-msvc@1.3.11': optional: true - '@rspack/binding-win32-ia32-msvc@1.3.10': + '@rspack/binding-win32-ia32-msvc@1.3.11': optional: true - '@rspack/binding-win32-x64-msvc@1.3.10': + '@rspack/binding-win32-x64-msvc@1.3.11': optional: true - '@rspack/binding@1.3.10': + '@rspack/binding@1.3.11': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.3.10 - '@rspack/binding-darwin-x64': 1.3.10 - '@rspack/binding-linux-arm64-gnu': 1.3.10 - '@rspack/binding-linux-arm64-musl': 1.3.10 - '@rspack/binding-linux-x64-gnu': 1.3.10 - '@rspack/binding-linux-x64-musl': 1.3.10 - '@rspack/binding-win32-arm64-msvc': 1.3.10 - '@rspack/binding-win32-ia32-msvc': 1.3.10 - '@rspack/binding-win32-x64-msvc': 1.3.10 - - '@rspack/core@1.3.10(@swc/helpers@0.5.17)': + '@rspack/binding-darwin-arm64': 1.3.11 + '@rspack/binding-darwin-x64': 1.3.11 + '@rspack/binding-linux-arm64-gnu': 1.3.11 + '@rspack/binding-linux-arm64-musl': 1.3.11 + '@rspack/binding-linux-x64-gnu': 1.3.11 + '@rspack/binding-linux-x64-musl': 1.3.11 + '@rspack/binding-win32-arm64-msvc': 1.3.11 + '@rspack/binding-win32-ia32-msvc': 1.3.11 + '@rspack/binding-win32-x64-msvc': 1.3.11 + + '@rspack/core@1.3.11(@swc/helpers@0.5.17)': dependencies: '@module-federation/runtime-tools': 0.13.1 - '@rspack/binding': 1.3.10 + '@rspack/binding': 1.3.11 '@rspack/lite-tapable': 1.0.1 caniuse-lite: 1.0.30001718 optionalDependencies: @@ -2877,18 +2816,6 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@tsconfig/node10@1.0.11': - optional: true - - '@tsconfig/node12@1.0.11': - optional: true - - '@tsconfig/node14@1.0.3': - optional: true - - '@tsconfig/node16@1.0.4': - optional: true - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.27.2 @@ -2933,7 +2860,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.19 + '@types/node': 22.15.21 '@types/istanbul-lib-coverage@2.0.6': {} @@ -2952,15 +2879,15 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 22.15.19 + '@types/node': 22.15.21 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 '@types/json-schema@7.0.15': {} - '@types/lodash@4.17.16': {} + '@types/lodash@4.17.17': {} - '@types/node@22.15.19': + '@types/node@22.15.21': dependencies: undici-types: 6.21.0 @@ -2968,15 +2895,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@19.1.5(@types/react@19.1.4)': + '@types/react-dom@19.1.5(@types/react@19.1.5)': dependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@types/react-transition-group@4.4.12(@types/react@19.1.4)': + '@types/react-transition-group@4.4.12(@types/react@19.1.5)': dependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 - '@types/react@19.1.4': + '@types/react@19.1.5': dependencies: csstype: 3.1.3 @@ -2990,18 +2917,18 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@xyflow/react@12.6.1(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@xyflow/react@12.6.4(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@xyflow/system': 0.0.58 + '@xyflow/system': 0.0.61 classcat: 5.0.5 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.6(@types/react@19.1.4)(react@19.1.0) + zustand: 4.5.7(@types/react@19.1.5)(react@19.1.0) transitivePeerDependencies: - '@types/react' - immer - '@xyflow/system@0.0.58': + '@xyflow/system@0.0.61': dependencies: '@types/d3-drag': 3.0.7 '@types/d3-selection': 3.0.11 @@ -3058,9 +2985,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: - optional: true - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -3150,7 +3074,7 @@ snapshots: browserslist@4.24.5: dependencies: caniuse-lite: 1.0.30001718 - electron-to-chromium: 1.5.155 + electron-to-chromium: 1.5.157 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) @@ -3228,13 +3152,13 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - create-jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3243,9 +3167,6 @@ snapshots: - supports-color - ts-node - create-require@1.1.1: - optional: true - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3322,9 +3243,6 @@ snapshots: diff-sequences@29.6.3: {} - diff@4.0.2: - optional: true - dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.27.1 @@ -3344,7 +3262,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.155: {} + electron-to-chromium@1.5.157: {} emittery@0.13.1: {} @@ -3649,7 +3567,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0(babel-plugin-macros@3.1.0) @@ -3669,16 +3587,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -3688,7 +3606,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0): dependencies: '@babel/core': 7.27.1 '@jest/test-sequencer': 29.7.0 @@ -3713,8 +3631,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.19 - ts-node: 10.9.2(@types/node@22.15.19)(typescript@5.8.3) + '@types/node': 22.15.21 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -3744,7 +3661,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -3758,7 +3675,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3768,7 +3685,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.19 + '@types/node': 22.15.21 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -3807,7 +3724,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -3842,7 +3759,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -3870,7 +3787,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -3916,7 +3833,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -3935,7 +3852,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.19 + '@types/node': 22.15.21 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -3944,17 +3861,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.15.19 + '@types/node': 22.15.21 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -4015,13 +3932,13 @@ snapshots: dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 '@types/json-schema': 7.0.15 - '@types/lodash': 4.17.16 + '@types/lodash': 4.17.17 is-glob: 4.0.3 js-yaml: 4.1.0 lodash: 4.17.21 minimist: 1.2.8 prettier: 3.5.3 - tinyglobby: 0.2.13 + tinyglobby: 0.2.14 json-schema-traverse@1.0.0: {} @@ -4320,7 +4237,7 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - tinyglobby@0.2.13: + tinyglobby@0.2.14: dependencies: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 @@ -4342,12 +4259,12 @@ snapshots: dependencies: punycode: 2.3.1 - ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.19)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -4362,25 +4279,6 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.27.1) - ts-node@10.9.2(@types/node@22.15.19)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.19 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - tslib@2.8.1: {} type-detect@4.0.8: {} @@ -4410,9 +4308,6 @@ snapshots: dependencies: react: 19.1.0 - v8-compile-cache-lib@3.0.1: - optional: true - v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -4481,14 +4376,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yn@3.1.1: - optional: true - yocto-queue@0.1.0: {} - zustand@4.5.6(@types/react@19.1.4)(react@19.1.0): + zustand@4.5.7(@types/react@19.1.5)(react@19.1.0): dependencies: use-sync-external-store: 1.5.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.4 + '@types/react': 19.1.5 react: 19.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..d7a0c096 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "diagram-editor" From 6e5907d1c1fea1cdbfdebe4d712f2ca0b7dcfb61 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 26 May 2025 04:15:59 +0000 Subject: [PATCH 008/165] add auto layout button Signed-off-by: Teo Koon Peng --- biome.json | 12 +++- diagram-editor/package.json | 1 - diagram-editor/src/diagram-editor.tsx | 58 +++++++++++++++-- diagram-editor/src/nodes/index.ts | 3 + diagram-editor/src/utils/auto-layout.ts | 69 ++++++++++++++++++++ diagram-editor/src/utils/load-diagram.ts | 81 ++++-------------------- package.json | 6 ++ pnpm-lock.yaml | 9 ++- 8 files changed, 160 insertions(+), 79 deletions(-) create mode 100644 diagram-editor/src/utils/auto-layout.ts create mode 100644 package.json diff --git a/biome.json b/biome.json index f496118a..7310aee0 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,10 @@ { "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "files": { + "include": [ + "diagram-editor" + ] + }, "organizeImports": { "enabled": true }, @@ -29,7 +34,10 @@ }, "overrides": [ { - "include": ["*.test.ts", "*.test.tsx"], + "include": [ + "*.test.ts", + "*.test.tsx" + ], "linter": { "rules": { "style": { @@ -39,4 +47,4 @@ } } ] -} +} \ No newline at end of file diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 1efac1da..51e1e850 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -25,7 +25,6 @@ "react-dom": "^19.1.0" }, "devDependencies": { - "@biomejs/biome": "^1.9.4", "@rsbuild/core": "^1.3.15", "@rsbuild/plugin-react": "^1.3.0", "@types/jest": "^29.5.14", diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx index 30ff6ad5..0e1bcf96 100644 --- a/diagram-editor/src/diagram-editor.tsx +++ b/diagram-editor/src/diagram-editor.tsx @@ -1,8 +1,10 @@ +import AutoLayoutIcon from '@mui/icons-material/Dashboard'; import UploadIcon from '@mui/icons-material/UploadFile'; import { type Edge, Panel, ReactFlow, + type ReactFlowInstance, StepEdge, addEdge, applyEdgeChanges, @@ -11,7 +13,13 @@ import { import React from 'react'; import { Button, ButtonGroup, styled } from '@mui/material'; -import { type DiagramEditorNode, NODE_TYPES } from './nodes'; +import { + type DiagramEditorNode, + NODE_TYPES, + START_ID, + TERMINATE_ID, +} from './nodes'; +import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson } from './utils/load-diagram'; const VisuallyHiddenInput = styled('input')({ @@ -27,16 +35,19 @@ const VisuallyHiddenInput = styled('input')({ }); const DiagramEditor = () => { + const reactFlowInstance = + React.useRef | null>(null); + const [nodes, setNodes] = React.useState(() => [ { - id: 'builtin:start', + id: START_ID, type: 'start', position: { x: 0, y: 0 }, selectable: false, data: {}, }, { - id: 'builtin:terminate', + id: TERMINATE_ID, type: 'terminate', position: { x: 0, y: 400 }, selectable: false, @@ -51,8 +62,12 @@ const DiagramEditor = () => { edges={edges} nodeOrigin={[0.5, 0.5]} fitView + fitViewOptions={{ padding: 0.2 }} nodeTypes={NODE_TYPES} edgeTypes={{ default: StepEdge }} + onInit={(instance) => { + reactFlowInstance.current = instance; + }} onNodesChange={(changes) => setNodes((prev) => applyNodeChanges(changes, prev)) } @@ -61,11 +76,39 @@ const DiagramEditor = () => { } onConnect={(params) => setEdges((prev) => addEdge(params, prev))} colorMode="dark" + deleteKeyCode={'Delete'} > - + + {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} - - {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} - + > + + + + + {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} + + From fa5bd64dd8c4989fb38678b23516a0a5cb8ed64c Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 26 May 2025 04:26:05 +0000 Subject: [PATCH 010/165] aria-label consistent with tooltip Signed-off-by: Teo Koon Peng --- diagram-editor/src/diagram-editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx index df65a032..88fb991c 100644 --- a/diagram-editor/src/diagram-editor.tsx +++ b/diagram-editor/src/diagram-editor.tsx @@ -116,7 +116,7 @@ const DiagramEditor = () => { { if (ev.target.files) { const graph = loadDiagramJson( From cf5a186d8aa1c6bf7916fa5d7accb585ddd2cbf0 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 26 May 2025 09:02:04 +0000 Subject: [PATCH 011/165] add operations Signed-off-by: Teo Koon Peng --- diagram-editor/src/add-operation.tsx | 253 ++++++++++++++++++++++++++ diagram-editor/src/app.css | 2 +- diagram-editor/src/diagram-editor.tsx | 230 +++++++++++++++-------- diagram-editor/src/nodes/icons.tsx | 13 ++ 4 files changed, 419 insertions(+), 79 deletions(-) create mode 100644 diagram-editor/src/add-operation.tsx create mode 100644 diagram-editor/src/nodes/icons.tsx diff --git a/diagram-editor/src/add-operation.tsx b/diagram-editor/src/add-operation.tsx new file mode 100644 index 00000000..9c06b6d9 --- /dev/null +++ b/diagram-editor/src/add-operation.tsx @@ -0,0 +1,253 @@ +import { Button, ButtonGroup, styled } from '@mui/material'; +import type { NodeAddChange } from '@xyflow/react'; +import type { DiagramEditorNode } from './nodes'; +import { + BufferAccessIcon, + BufferIcon, + ForkCloneIcon, + ForkResult, + JoinIcon, + ListenIcon, + NodeIcon, + SerializedJoinIcon, + SplitIcon, + TransformIcon, + UnzipIcon, +} from './nodes/icons'; + +const StyledOperationButton = styled(Button)({ + justifyContent: 'flex-start', +}); + +export interface AddOperationProps { + onAdd?: (change: NodeAddChange) => void; +} + +function AddOperation({ onAdd }: AddOperationProps) { + return ( + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_node', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'node', + builder: '', + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Node + + {/* */} + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_fork_clone', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'fork_clone', + next: [], + }, + }, + type: 'add', + }); + }} + > + Fork Clone + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_unzip', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'unzip', + next: [], + }, + }, + type: 'add', + }); + }} + > + Unzip + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_fork_result', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'fork_result', + err: '', + ok: '', + }, + }, + type: 'add', + }); + }} + > + Fork Result + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_split', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'split', + }, + }, + type: 'add', + }); + }} + > + Split + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_join', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'join', + buffers: [], + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Join + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_serialized_join', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'serialized_join', + buffers: [], + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Serialized Join + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_transform', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'transform', + cel: '', + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Transform + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_buffer', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'buffer', + }, + }, + type: 'add', + }); + }} + > + Buffer + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_buffer_access', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'buffer_access', + buffers: [], + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Buffer Access + + } + onClick={() => { + onAdd?.({ + item: { + id: 'new_listen', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + type: 'listen', + buffers: [], + next: { builtin: 'dispose' }, + }, + }, + type: 'add', + }); + }} + > + Listen + + + ); +} + +export default AddOperation; diff --git a/diagram-editor/src/app.css b/diagram-editor/src/app.css index 76ab6ca0..ea37b75c 100644 --- a/diagram-editor/src/app.css +++ b/diagram-editor/src/app.css @@ -6,5 +6,5 @@ cursor: default; } .react-flow__pane.dragging { - cursor: default; + cursor: grabbing; } diff --git a/diagram-editor/src/diagram-editor.tsx b/diagram-editor/src/diagram-editor.tsx index 88fb991c..f7fd1816 100644 --- a/diagram-editor/src/diagram-editor.tsx +++ b/diagram-editor/src/diagram-editor.tsx @@ -8,11 +8,20 @@ import { StepEdge, addEdge, applyEdgeChanges, + reconnectEdge, applyNodeChanges, } from '@xyflow/react'; import React from 'react'; -import { Button, ButtonGroup, styled, Tooltip } from '@mui/material'; +import { + Button, + ButtonGroup, + Popover, + type PopoverPosition, + Tooltip, + styled, +} from '@mui/material'; +import AddOperation from './add-operation'; import { type DiagramEditorNode, NODE_TYPES, @@ -56,88 +65,153 @@ const DiagramEditor = () => { ]); const [edges, setEdges] = React.useState([]); + const [openAddOpPopover, setOpenAddOpPopover] = React.useState(false); + const [addOpAnchorPos, setAddOpAnchorPos] = React.useState({ + left: 0, + top: 0, + }); + + const mouseDownTime = React.useRef(0); + return ( - { - reactFlowInstance.current = instance; - }} - onNodesChange={(changes) => - setNodes((prev) => applyNodeChanges(changes, prev)) - } - onEdgesChange={(changes) => - setEdges((prev) => applyEdgeChanges(changes, prev)) - } - onConnect={(params) => setEdges((prev) => addEdge(params, prev))} - colorMode="dark" - deleteKeyCode={'Delete'} - > - - - - - - - {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} - - - - - + > + + + + + {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} + + + + + + setOpenAddOpPopover(false)} + anchorReference="anchorPosition" + anchorPosition={addOpAnchorPos} + > + { + const newNode = change.item; + let i = 1; + let newId = newNode.id; + while (nodes.findIndex((n) => n.id === newId) >= 0) { + newId = `${newNode.id}_${i++}`; + } + newNode.id = newId; + const newPos = reactFlowInstance.current?.screenToFlowPosition({ + x: addOpAnchorPos.left, + y: addOpAnchorPos.top, + }); + if (!newPos) { + throw new Error( + 'failed to add operation: cannot determine position', + ); + } + newNode.position = newPos; + setNodes((prev) => applyNodeChanges([change], prev)); + setOpenAddOpPopover(false); + }} + /> + + ); }; diff --git a/diagram-editor/src/nodes/icons.tsx b/diagram-editor/src/nodes/icons.tsx new file mode 100644 index 00000000..45301c64 --- /dev/null +++ b/diagram-editor/src/nodes/icons.tsx @@ -0,0 +1,13 @@ +// TODO: better icons +export { default as NodeIcon } from '@mui/icons-material/Extension'; +// export { default as SectionIcon } +export { default as ForkCloneIcon } from '@mui/icons-material/ContentCopy'; +export { default as UnzipIcon } from '@mui/icons-material/Unarchive'; +export { default as ForkResult } from '@mui/icons-material/ForkRight'; +export { default as SplitIcon } from '@mui/icons-material/ForkLeft'; +export { default as JoinIcon } from '@mui/icons-material/Merge'; +export { default as SerializedJoinIcon } from '@mui/icons-material/Merge'; +export { default as TransformIcon } from '@mui/icons-material/ChangeCircle'; +export { default as BufferIcon } from '@mui/icons-material/Cloud'; +export { default as BufferAccessIcon } from '@mui/icons-material/Cloud'; +export { default as ListenIcon } from '@mui/icons-material/Hearing'; From 6ec072fe141f4be04d0b41b276312db80c059718 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 27 May 2025 08:31:41 +0000 Subject: [PATCH 012/165] rust crate to serve an embedded frontend Signed-off-by: Teo Koon Peng --- Cargo.toml | 5 +- diagram-editor/Cargo.toml | 34 ++++ diagram-editor/build.rs | 53 ++++++ diagram-editor/dist.tar.gz | Bin 0 -> 1077149 bytes .../{src => frontend}/add-operation.tsx | 0 diagram-editor/{src => frontend}/app.css | 0 diagram-editor/{src => frontend}/app.tsx | 0 .../{src => frontend}/diagram-editor.tsx | 0 .../{src => frontend}/diagram.schema.json | 0 diagram-editor/{src => frontend}/env.d.ts | 0 diagram-editor/{src => frontend}/index.tsx | 0 .../{src => frontend}/nodes/icons.tsx | 0 .../{src => frontend}/nodes/index.ts | 0 .../nodes/input-output-node.tsx | 0 .../{src => frontend}/nodes/output-node.tsx | 0 .../{src => frontend}/nodes/start-node.tsx | 0 .../nodes/terminate-node.tsx | 0 .../{src => frontend}/types/diagram.d.ts | 0 .../{src => frontend}/utils/auto-layout.ts | 0 .../utils/load-diagram.test.ts | 0 .../{src => frontend}/utils/load-diagram.ts | 0 .../utils/test-data/test-diagram.json | 0 diagram-editor/rsbuild.config.ts | 12 ++ diagram-editor/server/lib.rs | 179 ++++++++++++++++++ diagram-editor/tsconfig.json | 2 +- examples/diagram/calculator/Cargo.toml | 3 + examples/diagram/calculator/src/main.rs | 58 +++++- examples/diagram/calculator/tests/e2e.rs | 2 +- 28 files changed, 337 insertions(+), 11 deletions(-) create mode 100644 diagram-editor/Cargo.toml create mode 100644 diagram-editor/build.rs create mode 100644 diagram-editor/dist.tar.gz rename diagram-editor/{src => frontend}/add-operation.tsx (100%) rename diagram-editor/{src => frontend}/app.css (100%) rename diagram-editor/{src => frontend}/app.tsx (100%) rename diagram-editor/{src => frontend}/diagram-editor.tsx (100%) rename diagram-editor/{src => frontend}/diagram.schema.json (100%) rename diagram-editor/{src => frontend}/env.d.ts (100%) rename diagram-editor/{src => frontend}/index.tsx (100%) rename diagram-editor/{src => frontend}/nodes/icons.tsx (100%) rename diagram-editor/{src => frontend}/nodes/index.ts (100%) rename diagram-editor/{src => frontend}/nodes/input-output-node.tsx (100%) rename diagram-editor/{src => frontend}/nodes/output-node.tsx (100%) rename diagram-editor/{src => frontend}/nodes/start-node.tsx (100%) rename diagram-editor/{src => frontend}/nodes/terminate-node.tsx (100%) rename diagram-editor/{src => frontend}/types/diagram.d.ts (100%) rename diagram-editor/{src => frontend}/utils/auto-layout.ts (100%) rename diagram-editor/{src => frontend}/utils/load-diagram.test.ts (100%) rename diagram-editor/{src => frontend}/utils/load-diagram.ts (100%) rename diagram-editor/{src => frontend}/utils/test-data/test-diagram.json (100%) create mode 100644 diagram-editor/server/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 15304161..e9b09a77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,7 +76,10 @@ test-log = { version = "0.2.16", features = [ ], default-features = false } [workspace] -members = ["examples/diagram/calculator"] +members = [ + "examples/diagram/calculator", + "diagram-editor", +] [[bin]] name = "generate_schema" diff --git a/diagram-editor/Cargo.toml b/diagram-editor/Cargo.toml new file mode 100644 index 00000000..e45a2593 --- /dev/null +++ b/diagram-editor/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "bevy_impulse_diagram_editor" +version = "0.0.1" +edition = "2021" +authors = ["Teo Koon Peng "] +license = "Apache-2.0" +description = "Frontend for bevy_impulse diagrams" +readme = "README.md" +repository = "https://github.com/open-rmf/bevy_impulse" +keywords = ["reactive", "workflow", "behavior", "agent", "bevy", "frontend", "diagram"] +categories = [ + "science::robotics", + "asynchronous", + "concurrency", + "game-development", +] + +[lib] +path = "server/lib.rs" + +[dependencies] +axum = "0.8.4" +bevy_impulse = { version = "0.0.2", path = "..", features = ["diagram"] } +flate2 = "1.1.1" +mime_guess = "2.0.5" +tar = "0.4.44" + +[build-dependencies] +flate2 = "1.1.1" +tar = "0.4.44" + +[dev-dependencies] +tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] } +tower = "0.5.2" diff --git a/diagram-editor/build.rs b/diagram-editor/build.rs new file mode 100644 index 00000000..8476df86 --- /dev/null +++ b/diagram-editor/build.rs @@ -0,0 +1,53 @@ +/// Builds the frontend and packages it into a tar.gz archive. +/// This requires `pnpm` and all the js dependencies to be available. +/// +/// TODO: When publishing, this build script should be excluded. Include a prebuilt tarball instead. +use flate2::write::GzEncoder; +use flate2::Compression; +use std::fs::File; +use std::path::PathBuf; +use std::process::Command; +use tar::Builder; + +fn main() { + println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-changed=package.json"); + println!("cargo:rerun-if-changed=pnpm-lock.yaml"); + println!("cargo:rerun-if-changed=rsbuild.config.ts"); + println!("cargo:rerun-if-changed=src/"); + + let status = Command::new("pnpm") + .arg("build") + .status() + .expect("Failed to execute pnpm build"); + + if !status.success() { + panic!("pnpm build failed with status: {:?}", status); + } + + let dist_dir_path = "dist"; + let out_dir = PathBuf::from(std::env::var("OUT_DIR").expect("OUT_DIR not set")); + let output_tar_gz_path = out_dir.join("dist.tar.gz"); + + if std::path::Path::new(dist_dir_path).exists() { + let tar_gz_file = File::create(&output_tar_gz_path) + .expect("Failed to create output tar.gz file in OUT_DIR"); + let enc = GzEncoder::new(tar_gz_file, Compression::default()); + let mut tar_builder = Builder::new(enc); + + // Add the entire "dist" directory to the archive, preserving its name within the archive. + tar_builder + .append_dir_all(".", dist_dir_path) + .expect("Failed to add directory to tar archive"); + tar_builder.finish().expect("Failed to finish tar archive"); + println!( + "Successfully compressed '{}' into '{:?}'", + dist_dir_path, output_tar_gz_path + ); + } else { + panic!( + "Directory '{}' not found after pnpm build. Frontend build might have failed.", + dist_dir_path + ); + } +} diff --git a/diagram-editor/dist.tar.gz b/diagram-editor/dist.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b390889a48dd1fbd2a940cc7f2c43eb4a59dd973 GIT binary patch literal 1077149 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

nAtkd~qz4eF~}hKhyb$R4@7 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�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

OI8EKQOoq>$UlfH(qlAjTp&33qv z`+GRvttrC<<8YD+FLfBcLmu$~mudsZvNaZ15rWGth;z4PtCGc-iPK&#$}Dv|nmtA~ z|A?dNJDuLy@gAkvR=~@u6-#1`U3)k?ub(S#JYTMqofn_sk}B>dy3TPXodvH=Zk@uq zDI3ySBBHz0$;d#U2txIbz#3Z?4rDkeY#5Sf=wPnd74uW3k~FA+Hvimnk5Wm*Jd;Tc zy<}ZQNaIoN@JSSAKC9DEIx9LHCOQkFgC%oAg#+;M4}P3o%!kkkPyaL=rIdxmkgEn8 zdXLA0EX4Cz*Bt}p%vm||Merajp4UpHrS#L#O5dG3-CfgtvyGLJ`=%@Pt9nTftNDP( zw*<~D_M8b#q27Uz{995Y)}w$!ktma8_(gDoy=9+E`N^tkECWx+@6*IqPhg)jY(&k< zswE>SRzISVE}ut8?71U)y`pSSyoTR$uc~qO@bD`%_i_|caQ!J|WbdJoMT+=yD|+i< zoK47uIsSm)LoFKopo4TY=J}^9j&!CN1TaA!8vUkc;i4#GtKPax zxtJXQZNV12Sec?Z`CbQ)9@T!thnIXMJwBm6LM*yl+stmHMDd;Z6fAKPuS+4@6XETv z%laXx#>%!?s-bBSp}RvU9p!wc$}|9p@V&0y${zvZDCysZ1)9$H!E@!UffHRlGGt!D zLL_UgUPmZPYzh(M-7XgM^l$p*R{gH1%vLy~wO~|s+?mr$RKul5V$Y+BX_ZI;=rL^c ztm`Y+?wS%M zE;-QGK#Ej@P0A+1Llzf}+I#t5`wD^#k*J9o&Byh{lQ}pNVV9uptqF zlPC)VHiAy3?rkKR{TUfVAMv4;g$Iy``*-*OdkAofy$MwF&bmjujdRZQ9S?}@NayDJ zURA9i2f_`B5=@t{b#8ocV={|yYfSGPm=bVviY4g$t1@%pZTMiDoNr zSNnM+TUkRV83z9iVAyh8nN5m|t`Z7FpHAI>{T^H=z&T({O(M%w@RB zR>hb)23Uyfo=tPsqMh$hWA%J$*^-1NcAqi>yx?~|w%*)z_BvR37XWKDXAHMI@*xaE ztx!rvGu&zJ5A_p?$Mw-Fot@$@dlVJCOr~PM)pG9%%uv~Ar zz7|V+@YbgE`AyZ&`kxlU1JB;dqMAhe@cS|pTZ*A|S_oust5e@mL81pUa|aw9OCV6Q zHZ8ETp+SoQQh+D`h$T#5GeleaKz`)<`8#de_WI*_aMv*I8MsX~CGoj90=A}a&BW&4V-7cV&a6TycgBgB)W}Zp%X|JJ|UX--{ z#I57j-cS_x>P3U6Tvg2MVlvHc%xHVGx!sjBxD7nnURN|dv0UfZX$Wd4)8R(Y^a8&Z zyv9F=*UM(#=S3~w2d4~kc6*cyr(S#Xa&Ld0^gKNQ-`aW|MK-&nS|_$LrC!%Sz*29i ztTatRisD4A9Foe;k9b^h$!mpqJLz3qb$t4DtLM+l- zS_;g+t_$Lb53(VKd_SB5k`yB`2#7l9VNfV=li1eTa{12xiN)8j*mAYJte0Ko;A-t_ zt1h>YHMbKQ^e@QR0r~5V)noZFQ#v5$gyt8Tfe$paUXV=tT3jP3z4c|VI>D?Of)s>A zp2s;QH`!p&HrQN^vKR?hhvVb)-Z1{izS3rnZN<;xGNcsHH;0TqmkTGk5<UXx+)6zhRust+4lYL`>#oAKUwz70#H4s&+>^skf1gy2{1W=e~v# zbNsJYT8>vk(~~$Kx7HgS0c}!>PM)-)(0xZ`AjkIJvh(m|t@Xk=i#9R!NJWPIQW8-M@>8s?Dci_PkUZqtC3#f(|ZJ<38M|RfC-k&p1=Ki*bzX$j;Pu(G^Y4{i?n#200W5o)>pq5PtU+*7H{v~ zpPCn+){bkn`h_1}#Vg5c;&Ka@kGI#{UV()s5>63BP(5BRqh1?AOl19kff4_J4d*T} z*d0240C?{?+6AT%`rf0#Fo0%)&}}`rzR`On0qd1g9geuaNIKP1M-<1Tf~)3~Y{Lf)3t z4!B?Gh`^7@6KMCj&+H!D(Q=t=ZOI%y?k#pOnKR@5yLJnT>gA@j{isuynC73P;s`5Tr7xnk0y$fXRKW(Dw z(tj9!l2e=<0|xQmCGAT;_8&(*$>7fF0JW)~UIj!SpM7tq&oDuLq9GVq$9_29RiGI2 z6(*=z$BE3>i%gwa$z6m7P>0VY7h=a$OlNEfLSkO9@vpYB)EOiOwJ(F|B&e2ISQe2I zVu?*|&92>d$Zc#6xB@QURtMx4wqL&-YFVLyMgysIbU8VFp@p58PZ<+X08*wAo@gSj zG^Y|a?Gu0xreQnB$v~l;P9Pa;(*nw%(eQiQL-t?m-7I{S8TBPQK9WL*T_avQ41(w^ zq)9y*A5j%m4GLbyt*KxqA}(+y#Ftdyp36z?>E@vv8m01k(WT?%5Y%pko$P=RzXm5^rcc0(+4{Bq0cNI`hODwz z`8-a}KHVfH+L(2%@h-vB4zrP((!sp!AaOYc6Atfqim%A>rd|46?yaLOJqa&a>o{98 zNz%ArWgSME+roY`4)HwU_9Exem}?syE!uc9j^eqpFNH^zE3m<%sARb)N|n(dW?xE* zVydKtbaECCzSg0RxI9oUloY8(7&3jO>Qo305X0~YHH${`FurPM8Is&pDV3SmP!G)Q z+VU1CxM)2b^K<`2KiI|{EstKw|YRV_EaA%kunQuFGh};ditVJSlWPZb{FQ-x<9T>)BxP` z5#i;eIaxuRuA=g(u4LyUHOVq1kC`p~vsfkltYu4~BE#y52<^B$>3Zbo&8Oc%5hfaNduLGJ7TKLb*gp#WXL);bQ?~}y z|79mFlSwOhII3M9JJsIsu<|zL_jVYmEjpC8{}cW@rBL8j>aJi^-xQy^RMu865Hql zAnQ;+>r^tQwi8j+J!;hcW-GofM58vhOs`Gb+I~BM1Igo3O2hbGWor zN{hdQhV=%BkG6EJsi8Tph_3@R4+3vOVBZZvZp1BYep@q^Id4!q`7u>enoLvM52cDo z4I=~Ced>t1gQ1AFgKZtUZ%_7tf5uj{Fk$L|<`5&>MrcNMK)zQ_dH7vBjcC z_*Y;MlBcJ&g4}qHg(6#*irn#~DTE7pn!w)jl|>QcPLvCx^j}7%ZP7tKR{IR;1YZR@ zacLQaifEK)Q&_`mG$MS;QiU|HWX{%OAX9FL8*gb-=V1G8S(a9c%AbnLx5;IiucvERd3o5)#dq^f?B)%T#@#i6 zRD~NQs24rPZ=Iv&>8oIZ7X-qr&o|o%ZYxlSt@3b(qXEBzyUIf63CWy~5Tm1>Y+SL4 z%0hy2om)s@liKTZME#Fw=Stk6i+J)~^ZOl1kP>kg&BP$Ffuy9l;-lFxB=Q0HN!Oc; z5uShB(p>eO#z;*>tV9h(_7#kL3oK7&VcJ#>^M~i9RdQ4p_sz#HOXqP|57`cs1c%mj zP->L2%iFLqDlY2SCXBN>qxf2(&9=aKIvf_u0D!D@(nuph#>x#yIN+Yz$d;|eKu-G@ zpdQOd9OI-Hd9?GxV@x)7;qnf^DDeg|YVX5R#J}tu{3G|erd25_^}^+dj= z$wXZ)vi%*A$H)(qf%QYVrGI2^e3_^U?)k=FsFqX9npWXGhrZ+Z0Tz)!dSB| zyaQ#_c~NS6EQa<=+_A3*z+btkLuFJ?9ts~MC(6g_RH933(ed-9X_I39t?SZn? z>v}o^D<>K&PuT%$#o}%GfpArrDoA@4RPI!eIA;IE#Ib+C%IM8Pf2ffxaR*t~=@~3j zpGZ8Z zsgy#uMM4^)ymAFkvqZLLzO0;4gGP1t^8%n1Dw=|P=;l>ql`@x?n3X27*a;PC;nqN@Y9w{$4|u~_WT8q z`}n;q7w;XiKn6u3#*f66J~lPv{7C2&@rOda3BF%d`k8@vQLSkv_U*8&13NKsdTmutRhoXsv z5;xOgj%iuVg(M6&3Pxst5}KS)B=OYqqK}{ro{5T%7g!hczn8YwXz!XxYQMrPCYclj z5Eht=#3*?WVCTY7D%{~Zp0%z6z=S=>1yX!8ou8TVXO_0kPhrlN&CQpzDY`M$i$hgm z4Pf$5s8n@BD~LX92HEQ9ck>Vgti5$rUrv@P&T>w&Jl0t4+F3V&hd2pCsZ~H1=mX%Z zaax!M@>N6hOIJJZYZmAS_iW&w@Hjzi23C|3B&3sj;E>jmcLwt}&z%DX7e3XIu)Cf5 zxvi3N2)l-xA^g%v9Y%8SRrpBMP(Dm0&wX$HD`#epqA=9gw&9SwtZl2i%xr5kdTxvU zbk@+{mXdB~G17tx{9<8z3~X)6Sn~_IUQMF4x9l2P4|F+cTvp|(-D-zZL+X9|kR{-q zZ}@Qrr$Ri!ys&&+-%G|H?s@#+nLF;t+Ns@=w;{PNeW9J_rhHPb^LTFCO3<&FBx+cm za}o?hT~kN=VP2#}Aptw_@SyJjbXz{Z%jWKgWuQ}G#-A%sdLPo-#LgymgrW<<7--oyxV|1*v zR5BzTzBT84q1MPB{Sh1fX0J!m&C;>1Lc--+Qn%Fh3S(P}Au80&Z1&1n`XeV70f=zq zZi4bRdi5lE4`&u>8nw=_RM9Xo@TzU?=aQ^wq%EK9`F!|Wx=HQzN-FN|V{I(r$`w%3 z5Q!Zfmy%!+37lT;bOGG6q`IgUa^qWB=#5p{P|E!u5XGI03DT&~&|l%s!D*q*gV~AW z9<%Q{%#57u+>QOEeF^;^8a(l6Q1d=XzGH48kyIq{QNq-q+rTuN$h zbI~<5ulRqp*6)Y_I$eS91Ox}6pO$X6pOzwF=}e7^zV4H$RC#oK+=__EO_UWZA1cza ze4l)u&CJgWb)VtA>??|nme7F>_4cWzr)%eUW25JJdsh}7u++kg8nJVT(TO_m2f8Wr z&I$EQOf(?4=s7aa2_S??3@J{$2$bL+DHaNeY6@x1eI36Iigmp%5D(?#WpoF;HbqZp z$|9vu%bS1NYy7fA<#YVCnZuc(+I@>UwOR;jSQHl3#dPD3K-~cG;nPEX%iJIdN=o8D zZ;30%7=yyxj^L3SK1KPqlEMLoH0Jnu1flHUG1Jh|-=~7g6H(^c{T>PU5kbXRbqTlE z5P<|DU7^?s^gRjGX@v@2_!4?n#p{9^w^!Ef!aPW%wh$$0klFPC(Kr#LBeQ#ghkKAH zPE|!%dx@6&B0^h%bcSP+=HftIdLjp^s$4hX>VNU>89_WsMqm?g7Z*x%b5nlSa+#jM zzS+{zR|0N$wQv;6?_!Q=ohY0WFb_QYk=ogmjsuG7vWLk7)ncV??+5~=jH^Uj ztOYx?WOYKg#Zp~{46IJ0R!m-a^`q5UAgfoKM@CzRhMR{*TQ54Ip@RGKTWQ?a=x(BIi*qq=k@K< zYM6v?cVo|@{X_RCRutPVp-o(L^*WJe^5X{mOQp#DMf0L+qs10t$zV`UUq?Vsg|f)d zUsnJ*dokJ-!^qgV@}+Aln8%=@k2~$6A_6$~2!lA68ZHlN(@aM#8G+$J#?DaJjKrIO zti9Y8#2z}DwqV2OEh4f^3zv&vkIAejFvTP1F^4?F(UiM|4iFJAFYs0K<5aMYB((_$ z%7x!G1{s2l)IIVvi0>00=()9*Xxf6xmF+Xup1($)dMTEw3T^j0L*=d?h>Hg{02v|c zilZ8G&&A^&!VOh=F4hi?AcALyBXcgA@`|artxop~yo*KtxHP>M0IRi1by}>PYbE7- zSs~k>CC^V8fxRlx6{>*%F?=Z8tc6Zbf_hvG9bGDfox>$)@o9*>NCx1>?o_!A~mGxp%cQchjW;M4VDrn7VrW)ZN@)O?J+6 zdH0{1+TS<^Z^T0?tt3_)<|)4zW1=6HuEnJKgHg$k|Nd@>zPMbhuU~xeB=+V1EeUJy zrzM>u`g42+)Fr$3M@?q$avh|9W7s1K0ok;~reFWb9fq2y3Sr3oEeDebmS2le5Qn%& z)Rpe26Cy#7i@zhCFau#Ic8uu0@pBsCbX*Ro_ZWxJKNO+V{s{}|l^R5dfYJMSZ2CkXgBX(5-whuOh`#o*6$;H#Tk79Mmk={pfi1(mrG|u2NOF@8Pm2b z2@GY3l{X>Px1n%Pu2;fr3K%ve2-(%khhONJuzC#=j0H;AHY4} zK0w>1Kp~F;Tns(|PHsS?&GW}vSAVCt1!-PDh0b%vr}MvY{BdS@uLzUL&)gA04py^% z>a8j5S?$78Bs7bUR9SF9blQi+d`_Uu@rWdRyHktQtMcHVa-cbD%SV+(#+$BSp5sYw zMa^GcKp@OyEJ{23IzJa6Tn7f;vYfOt?|R&fGmfrLY+ufG z9N4*s{HbI>0im}QMmYuM=I!?J;npBQ3Pc~k4B4_t}7-d zo&sD?8JKU-vC;sg^O@4ptfJ?(d_jzs795F=LoGoJZM?1g#!|ZaCZ1MX!*|A<4;QjYk%Ge=#?2iOqnRkUsDFJ1 ze6%Ih0eTKf@1UpUM^Y!tx;jTGnDESCB-b`GT8OxXE2g9;ZRuOC81F#fLbFf^%@gjn zp1xY1#s;2>_vS{4 z_;?l<3Vkj-G&p^88eNBin`sO&_oqj(c@mOF$XSGRmY8CbT4<(I?AS66QJrI%f-}9w zg14G-wqCUJ=Vgq+r8{}2tRrEl=O{7+g;?_(%@pmw9Dr9tQccwKPWKV9GFv*inyEPH zsPaW9Cga)9HXa1Nz89*ikQDf@HXNm`@8dsEh$wLN;WU*r&+mxU0 zEoGEfb9AurJ3sOpP6GI7u{Y# zWo?Bck$V$+9$Fu2R9}loVY%eDKbA&7-VO3|%>=`mXTu>{Fg`_y*t;CrcZ_7KiPN7`^3@f>^ZWed=sE)bwDZ*s#!pSQ^Y+y z1}SDLR23O40_;Q`BGS}9qx?+Jd5FnL>1dsK=psk4+0=^y^~SK3b0nMW?YmDkEgX?L zE4)DF?b{$XwDjnt!-iHK`D!TFx89nH@e@bWHS>wknC~+p3C0(IP;We^m9yNOliTSp zI!BknKJq0t-|xiXm!P~?lTNJ6qeJZPHg+OE3V8lhv8TJ*Z*#5~0DXRsXb>pdi1l~R zrQiJNVqZi(ra@F0KCJn3@!VT*Zxo`zcr8BzocPihJ!`vUWaoHruFq8A89}J;kKd^qw5M>xrRM76@ z`J-@pUxg%?rW{6Ih+vn1&`D@SYnRSd!O_>&FAH4<$q{>d$MFlWvf#XHWj%f}lH+rD zJtr+KhjE%}R`|YMMzU!XDkElvN=o4fB#K5H)>9BRLDIFm8%7#D6GlfTe0t=FEHKU~ zuqEQ8_@Y8c)ba=-#jUM_L>=p>O);l!Nc${irMJh{%e~b7TNJbga@^m-h%8!OKDyD` z(Gy(|-UX;_pUF8!254Cf^W`z4>$B=%y@L1RK2yvzp3>vV{?45E zg=E4Y*&Q{Gox4C2!I75P>u10BKXdOO*;%fYOja5=nt^m}$&4U9XSNz2+pH2miW(j3 zuP&}m$=@@U-}0~&iNgE-3q{mW=aaICqiT1+kGDL%?wy4B1o^63dY(R4qblQ;KTMY( zJiCRIijsy#`#wJV-22DzKl7B)vAGe?&s>6nMU}0UENRweQ3ARJhza9{OEen1oQo{5 zT&x_7i(n;S7b{8IPudh5xzhQiC1k9HofKhMaP^Kz%R~@85c-?bHl#T7;c`|KP01P6=j-(McJLuv&ojtTck`owCs4$%P1neVveOM`&+@xqmk(Y zC7OV}Gcyf%L4r$Y3T)cG@|tAXVuX!@cyRSKGdud)-Hyu+rBMlfa4p38hU3=BCuCOX zwh;|1f07caR9;;{u?#{MIuWfPjzN&tKte#JBvDMe2>=0U;Zy3ucgB8d2w=MKE=MDO zkc5zA4a{!Y=i*Jy;>a!O>;$G#o{s;pRu_}pQ3wTxVbl*`o+cthPk*$&jcTSfPmO`p|`HE(?i#(45{keTsel)cy^`a_~ih^7Zg zM`U8erKGF1Ag8Oa1;G0>ZEi7fKW$?r#B`nh!TQW`kG3-@iRgCvH;sVK8qNsM|9%+} zJP+XbF3igE4~PQ*C==`+%Lf@k;^{eB2k4VyKNv`QEWtH~7^%(RJs*!BQ#Wkbc_w%t zOI`HM!NN9%DapK8jUN36umN9(R7*^vT!cqGj0yZw2aW3Q7 z2#x#}xKS25W|akmGtA{ulkPepT0f)dOja@1FsIH%m`1Tn5>xrY2NW86f*#E_w8y#5 zn6Asj3$;AU`0_OmkZb|5!*@pC84ON%I)gYo3T!Gi}_=Om2zq>-5H1KOL#B(BEkpLYVqNAIe8`!y9^*Dxc6?q-`VV0C;yIli zGp@Zm4qW{1vVp2{HS!&58DePgq<6q_&8m)$WIaV&P8SbFdQx9(QO59&H)i*zXA7lZ6GQsE zaGpedE{FR<5}!N^I0ckz1O!kH5qF)l`!BvzgvW2C2x5eR*c)$rSFaO+*p3xAk@p3! zUDA^t2ZCOSK2tTkLy21Y-e8C17p-)cutNYIZ*rt!@8U<52i$e}6P zAh9>5jq}EIU=Dl?bvIm)Do*zXtOhe4J6$PR105(t+R^z&AS2F`U2yvwYwn0*na1|f zSZ<^{`fr5XOq8T<4vo$l275s?=dk1|2BBh%B>lVv;43ZPi3#z=jG9}C1XXe|L58J_ zB+{@EoTnU7an~bqAevrK10N`+S7WJkJ_B6!q6mM2RdbzpzrOTC>LhX_*3k3SQ*>Ji zC|e#66_mu{`=!zMOE;?pZ*Mmtzm4H}?bUd*s|D=V6v|ZYB_wfAj}X#GAq{-#gudYj zfHnbtQSqIu-Os+lr$AADdR+d82kCn|S^OGb#Ad@H@DeoM{pd4B^q#3Z(9Gm?3z2C@ z-wQ*$8^+TVMK%*0Hl8@jmxzRR_j6CYGjRkDG3K3uK^^%XA1v9~KfJqt2xpaVs+T$_ zyOQN^$(6;6mBsB7^w3Rr38H(nC}~zL1H7`)!NmuH5{4s51!m`lBL(?GJ@X=ohG@n} zVK(^=mhkOr(+>zxsM2kYu59J%lW3SRBU&BLhV5)OR9reA*1S~BtyC;QkZk9{va4?P zO*r=sqaFC0`?M4B2a7q3pzwybSK8cHD32fM!*a6yUl!7J20h!c;)rLX6%?#eohDzCiMyW-n#A$2U6v zkO&eXi3@kdNtKUjVm+>#vTcfoYVQBJB>Eqay(AKGgb-rOjt*Pv%@+E`jArZH>SpVw zjTY-3*OuIwk&UX3F?w+>$cp$j_(!^hBA#P|~6msn><78`HN8uQ3{T$80T|PF2GgwS>9ER%DQMDV zQ@3ER-K9w(3wBcHSd@GrW$|UGJ;9}QKAzZ}nEheu*agc99VB?(rZ4jj>_T0$cduoB z<`rjJ9pt6%C31z6)2Cjq{OQz3-AMfqn6wO*;np2c&nAzH+)6_%C0R|vWz|FE1+?m~ zS5n3v+Y3#iXm>Q@sf&5;Wj4P@&h~$~pbg)NQu}7;EN=aVh((9?1l+&2^7ZD9oudqf z%1NL3n(k<^eSL@Qa%_M%HNA~U1|O_O~7+MT-bM9i1ivPR|D_}WkdXn(`MFG^b)U1%^dnu4}e$VPOEmIQ^)k-G`7IXH?6iZ;`UVU#j{=D#PPXq z8E|#_k?{TXYwIr^jyGp4H=!v9F;3>2ORU`-pvkk0n-+rc`dyQeNiBD!Lf)teEGQK}7=G`Z^6tfl(id9h1DJLCSX6w+!oR1g9zqqK)EWE8>#JQ+Y;G^iA zirWE^dNNRH82VIsJ0>QKtzO{6y&Ux}aq_*rJ6#coP8RCTaz@!GrhJl2>X59UoK9=x z{XC{{f*W+IB555|5exxZV{KciHXat!3vqeHK9{bK6@{IOu)}Sk`Gm zpKGjp$jt-0#smrUER>Br@M-E133O;xsH4)NgeP#XF)y_=mQ7zGlqF{-&;`TVYcb>n zt4TgE>|QC}C)JQ^j3Lxlbl)?NcF%flx$i}L1c`NKNXIs?W|IF36uudZ^;SYgu~EhGdT@7i>M#zq=D zrpMhJ&Xh|_E5GXUz71yXWwqWTV zJ}pnF*uGPU(+jN(d7EY*zLD%BTKOu|Vb(IE3G<#!Tol)q&1R@|1mKztEkZ~4V-_A z;Fy^Q?;6k(5%r6Fr#>aR$Ks6gBb=}!4eYJFPnvKF?M;5}%F)*D-Mg{rx*%QKAtuEh zyP9^vuuJb2%?}#x8R?F`A9>Z&73gCb@k{?E`{2SkIcLk7u4*YU+C?lHsER;p5&mPn zJIeDnk`vV1b$@YBH`(@E;cXSo2kA3&WHav)JM9%AhxKIT*UI*Ld@eT3p{!WAs*0-h zmcWLJ5@G8${gt7$wvW5|#pQfLvoPc{Hc6$jTf0N2zpQ^VVDzy@E2t-D|Hk;vp^GY4 zU{}-4^zP=07wIDirL>*=6F;aY08~J$zxS?xycEPs<$>ZIdBKLV9^n7X%M&Ko^83Hb z%ZvEmQQ~3n5Qx&KNe# z06H0k4^wVo?{whnn-4KVWD@DI7!pH*6QR2}umXEqz~6qLFQQw5PNfmMcj)aam!pVp zXlE@4FG6^_K~jFlR6NEa*7E5~5wr6Yy^wd{$s)1@w$aabI^vMq3-49H>8(qh%L!5* z%~+rY)ZdQY`AzRAS_58wEOIdl&-;`s0s2Q&uyvfb;0(P;;%;16dYU)^iGr9WVcU0X z<0527u}B6J&V@T2(DE3beG8R3Sv~S1&Kz2ppKZB;v9>J)kWYU>yBeqJOg?+=7u}A#^j05 zWh39zNQofth6;H-+u>97G{mZ;&=O|fMx-UQ(IyzY6PUe?~s|xo;*8z@JYf^HsZL3(I7Q z$PE5$V~wC#w4FSD3}|5mAu_;fmnD~PJB^s-iaMHR zZ7ll0*`vLEW&zH~?+Ph7!+HYoOD*`4tkf&2iDpZ4;19ePF%m7+x#&lyd#;YU z$r}^?4@MrN9|k`FKwsnacCF{OjC)OAH^LFf!e-H*KEe zp){g($SgeNM1s8dRH00XTJZtHJ@iYuM&W}pGWk`aO`@Fdxa z?f2TrG@^0$-j%$QcU#Fe&ULHvVmQEDkBSYHC(tYol#&ouv!BOVbimvWmJ7yqp!ALy zCeR&16wV^jqoD8%_9I;3VwnX5-p_xC4*+1d#kqBy()Rxvg;!}~nowf-&kQ~!t3yd! zxH_=8m;D&C9Z-TEYs-P9)C^d#}!v~VMcrP`S#mBxf>-J>P>+5~)q-X%oaz}Ju@DwHCg zjtZ@hK@Aw&(DN#K(2i(kIJpfKeh;(DKlYycr$h`TRsm7bg;MIcoQ1h`W+_)>o=HRK z(hME9P|_(@XPy=6AT29tk-?s9X0*5si}k=|D>C$+BxkhJ4IBTc(JL|cLG*`8p2WWh zF*!>?iBdw_oI=|;FDeVWR6IK|I!Tlx&YWI zYG#hKga7pmvbzBODf(v)0ezFyb;Z~oR0~seo7v@B+m>}p+U0Tk!met6w*7yLk>?%H ztRl>hAaqF~6O*`i^DorwZnyRWg^AlK7y(*AmNWX=u^YB}S`>8x79GN1p>T(Lfr_cb zNl?vDGP@=)FCEA?#8`1jvdEPgNwCCMJ4woj7B=9Sf{H1}kWh)K#E@1#<%+TJ?kGf@ z^~P&SeFJ~&`J>an=?8+UfW*gYC>4g#;6Fa$*ku=6q!N$C$C|&jZ?rd(KXF44iWP_c z09+f~;jz$Gt0>j0>mf%V*p?6BCI8)ju2bJTk`5(dWd{8C&ef^R+X%-6S+hDynDr&Z z?+b{Ndy^mStX$Wa3n7%MhmAMs-FkT*T5apOp;>r{RDEYW@@>~X3M>5C-Rw2(7v$N~ zW>BfXh`$42Q;qmiuM_gA97Zz7=YN1W#dSAO_@g~=@)@vIJ4&f5|6lF-{|;8(|38NR zd;C8ab7QCfu+AKf|F0o{CXDPxCUnNe|N9_-|Bv~9^b9P_{|o*f105^lfAjzT4+#G= z{|~k7zxaP7UH?z;|Ng_*lK{j5r2L=we{uf=|KDO)hxv<*@W1$fKz0A({Of3dM!*?g zAO64ie~4TEQ~6jRvh->Hi~om&^6wn~Kb3<*1J3&|{vQ(4zw@7e<>XV> zClviJ{vYx`9U#I#A$nQ9`~ENfABqsb|HS_T$OFjxFa95j-v5&Shx#8*;Qtl>4|fm{ z%#RNRw9nlaI4+NfnudVGQuQw;@dQj;()dUCHepA8J2w#)n$>SuzL4t!kZcE#@PEdt zO*DJX_ z^4xarP~a2s7zfYLWgDLAl2{k$0qIdj)nU9w`0G+@s+-E{N7k?F^miMY>Vd`9^oK&% zoc27e4h09MX$GcAx?v6|nz}(cs)~By!i*X+9fi4h#IweFnpE979x|@@31<$q9fSH= z6Eqsd$a>j=06%uqqRLCAv1Bz?6M^t0*jFO&H%pN-`R@B@K`e0uR5cULyTzOcm3zn) zt7L@;NW==P+V{OH?=EpM-0%A%Ym&YW_rLbRnF_QK;>QTtf31VCWGve@3+R{!a}L~S zY2T6D?A-W%#O?Am$(h;%tX5KtbairaoF(x8PGlPxJ|5z@IXk?^a(!`g2=3%@>tP1e z^@VYZIy7HFwpdxHWuGc@&WJNsSwBX~HQ~TK)jIXeR}wJ2XPe6rMcmyGs#F1QfEcBo zBvB((Xk9-}6YD<8Q6+lLL;>BN6OVny%l*4k-OZ)J>E7~kXK{VP|3T=T&?B~6)Vq-N zq??goQsleP#Y7=3*|_jP;A0T<1_zLHK>Dwv{EzubUtB+{uWzESk0Ww9&EH=hPk>R^ zNX*bcPY=N0kDQ*~ohX{!>#M7&9Y92_iQ(I5U)%@}H1#k9ky@1+t6wu6Fu*Pvz==3bd&~81;S+C^mqiBB=L;g6#(xUk`G-Q)vNQXIsqwW>mW+DcKJSpoYhhhqH3{VFdYAis_fZ#o?BLDyLifG5 zs@K8S_*dfV{nu_ouryThh8L_t0E_{q&Hr!UAAmMm$~=Jo8?Hu_3aHwq1@DuROk$7`;@j{JEv5wZJq9k=g9JVO=tbC_Q_xAHeC&)9)8k~o>Ol2 zQ!h{^3}AqlVt4=;j5$mvU_1am)XD-vCZ`cA(;)9*j3$*1DCGm5HSG?_Z&FBo`5*{^ zkG?>hk3ItX9JX5Qj9`;+xO?f0E_p-%h$mpb8(B&!K6C)JDFe6%1Oq8pP0|~6cQjC@ zJOcBP?M}NMC1OQZNHgk9^fV_mUY;8a~Gj-I>kCKF}!h14$jA;bbn+;+7H5$+x zq-=nI!=n=Q2N(ty8Bo(~C*nl;DXVrN*Zf%k8VCZ@W~?E)tk(H3kp8VfgZ)A04m>qF zaN-%w@Fopu-=WY=#BEaBPgzN{-zLkky=-0@orlGkuh<~_Oej$+417d-`@yh+Xv66= z3O7v$JSqxyu<};uosc&-@o{@`D?s68^b~SZnqE0=rN{Azq9WAXG308Sb|GdYK8=RK zN+uhafC#G#C$F|)qP<`5uKSOSX;oEkCbP}7`c1HT@T`*7%*n~j-H~24X+@UOBC8yr zyf3G+SMh8afHJ}(?M0mc$Gxpch15g^^bbEXKJ@I`a9@7lI}ZTBWd^`iU;;)#3>3R= zM+a?Oc06(BL6Z?@oC947h?A*tmYdB&I+ z)k;}PPQnr%&z-!!J%Q0Zi^PVI)D?yehj1D8WySO$3M>7?SzN8tX{c%xP2HA9Cs~ z;!ut1=|ONODmZi!lbW0CkD5Xl8qWfmHonp^3sW9z?TtH&=*#ejRZ&J|Cgxn`jcR_} zB7Cn^FBctFva=F$%^ag5CotKx{)F>qCR0p?LLx7CLxeN~^o0vuu3a0*1Wz{%G-JKL z_Y+D>R0@Yhp-`((UhK0|LV19$U-JX9WJdM+{ZYzm*y53Q)m!~DPfWcLKWCBxG+JP& ztQbSDEo?ZG>Za^lB$R$nsl!_*=AdA=FH&mx5I55a&NhNH3${$sUuADv9Ld1K!Mm{mY zQTAKCLl|*VY`U*n_@ecw3LOD&k%+1esP?#di^@Ww10GfSw)Zz;BB;$~v!x@HkXC^l zgmZjUkFtWB5IomTl5d1NhUDlk84!k_v@_vP7O||3<_#fSkR5^p z$RUZP{VtWJJBnk45E^=MtGu1X&HA%5-Y^GkiN9kpP}i4*t~#CyBTM}e+<+N1K7@vw z#$4N^R=oJwg_pWyK5t27+u^fMh6s9_h&;qE<0UF1VzgV?ybP8nhE#o{;r@vJFdC2c zX}JPb?hZ74yrYM933VM~VvjbEQ*3w{@wn~6$t^L4c#5;ZU-Sq{VzPjxEP zC2rJihl~k~&X1 zy{p1~i^)VHT2pwJ(&P}Tg{th^q&X5Mt=`)hz@Cgr#6a}=iumfQ#1E;u(rt;@Y1$bW47@)UiI6_CT3|GS(&a^FrEp8~tfC#mXn|;z9+} z@W4KllF~ZoyY2>NYhon4NJ+SF^>i%%1T>=-vJ}5-BUQSHE6@UII;-FDwReP>( zata$e=3RmY>+}HGo`n&Ego;J{>Y7RiEcgF$$sC`Q`t`DWz0s7(wv~vBl@-%%wzYs5 z1?^69q^fnxdaSLy*!4+pR5+wPV+0kpz{rt56jw&%Az~p_jm44A?3$0yW~OsSglT-f zMa7t=RG?Id281iz;zQ7aH8?G_@rW+f89y?Q9sp1@lhrUON%;Wv7Ik|CC@JNv$Q6yZ zwv@2$AKOTxfn;Zgj1L4_7@)qF_ut76{8}6gz_|ys!uaO&EFV^|fR_>XXXh4t9EcLx zDTAFpjRwnkNLrR@dfvW^*q`4_BF3mNDrWGRxadeZDF)1*nlg5>^nu z8D7u*`0eXj`ycxpZq0ug>bf~~G!>cUX&ZOayuCh43KZhi6>~Q7Cf9NAAM!Sb1A9})bDHWc0I!ne<);?8K0e4wD zOWGnEU#nfL5o2EDKWJV=8$H-Hd~v?UW)pRuatn6}XVcybZF3(=$#*43@q8D3B3zVp z=q4?!bVRPn7i(?~&3$D%$!Ih5%WtZ`zMCvR;Yz9?N0%ea}HNtXKWfP^;O=7aufbev@SdJ z>Z?3UeL202bqzv4Xk*DsL#WZ&u}h5k4IoZ7f%NSA34$pbO#IEb5H(u{6d%ulfqQY9Z=W+@ZREp8N3U5bf}Djo5+}=-f0?MaRs3 z*oohqbo?GhkH2I4MqAyiD#yXh8x=ffBDkbc;4QjK150h z!tLF7H5ng2JOnMiTYgDnlNgH_2>7_=Yg(T5>X+vYPzXfYRW_pZVQt(|`nGxa5&HRl z($sQoB>FzwbNnsYHi>DZd59KrL*tR?9gbnCOf}8th4VQYEqomdsS5xrE$g;biRigJ z9-+ifc$;}&D}URbs!)9H9PdPar=7F4U$Ij9@bUfk*k*n4emu_G#>q}uRQ(FRg`ME> z5^|uUx8qnxoBXIo$;7+&gSCUD2R81a*&=a$YHADiAm2j8&e_(( zr!Tvyvi&Q7r8w$D1GgZB&NE@?_uc4|1$VOsHOxWwYG=j;UZ z@b9iAWui+PE@Cd=0Im&}9nN((!2iYn*nt=F_J801_yYol3-ONL^kz-$W_1Az! zJr9C14FDh@3bgOv_fc}Be4zXY-mZ+9zJ-Y9YJ=fV5uKWY+y4T`g8g;(pXsR01cg~5X`3!EdBIW2S=7}Qy4aI`<&OQpM?zqB+yRlmQ~ z&##Rc$ZZEy(+BJZyW5YoMTl`gh>cnm09(iGGRn^eReGSX70`Kyp)=t5 z2GyI7+M$n8qK`F8IEZzH#-BOAGW&Y6N>h8Xxcv7k}FR6J^fu**1o`ybciVlPxl z`((cG*c|LJ*2>(iU=8;OG%BESQpW26HDz%v8n|8IZA|8M&%{_olU zt@WMEXqf+J%Rd9F37wGv^MAemhv9!;9{(Hf|6%?2{r}?qKP=45|84*OKOp?G|1!+gnz@lbk6^}2LJ#7%O3%|*ajyI3`~#rKlXbKfIvJ5e;>$PFhm$A|7Ico z9B1et1OPx5AQIp(91sG~U^H+7m|z*~k3jM$msW7pZOG;^=1GT)dH=QRxTW6vT@94} z5kR9Tq}1=d(5Pqq7l4*>Vz_>L5I#@S9-${rWW*6tvz&#HTe**<$7i@*GO=*ruL-0QLo zg&6(usNsxU){ncLoH1hb*sRyV{_V{LK1zMi!b2*NFWo0xy@^qojeS0$5^+Uuz22-@*Jzu@;=JR=_rsje25hyIS4mj zI@;!;bLa%1BDMn?($Y;kf>`fB3kQ<(_Ss$Ht6rea#%A_1`PWgIKqZW%-j^%Ny126W z6OIXfUm#Qu=Re|*P~=K|9jKBSKXU*J9=|M$FR>yGs}5!YWzbYre7-#Zti}pS?i;;S zY2O=yi@nVA8OAH=Vy->V3d6#w3YG%aVW@o>ZBp{ZXYbGM<(|}(e80TPyqkc88Cw{Y zw4xkE1)t?+Th3{m@EB7B2q35!Bs9ahB;O#EU<>|9J&IE#tV43_MGlkN=-Hn$+UJJ_ z4%TH4OGXL7;E`Z(eT<2GNbyrBWdXvKEoy;KZvO2EnO(NByJu?rJTBsOMCV)4l;I1_ z-`(Cn`ZI7WK?o!;{Sj@mhGlA~P3ApKjpX1_L)pB%EWf|`bm-14*v3p{f20uP(r$lq zl=P$(R1(O9*NG5r!%jFN8@?A`X2xR?H{bu(Uk~W=3#mzSYpj zQBb^n9=ruEjMy-E@w?#!ZP%fIIFl#>Xj$R7=X!9@^eZ*n7#-^ex$mhqI2i)~`x@1F zP{FT`gv}R$ z$tc32U74Ht7s^?Vn)AJO{9$eeiHX)U=vZl_Hxx%$2mhEvTW;x;wdo}00s3^~@Y3_7^q#-jKoaDl{Q>1|m{ zONiI{76+zerEg}yv6UAnQk9}=H%!;QrnGv< zG&PW$Vf^Cug=4IYB~~FCCN{A7qH^7&%~0s%dfZ=x;Pw!4`fR;FC}0@7os20O zHB)n0nO|mMv-d1HqthH(?Wow6hAwWwg|`~sPg>Exvfj(*HSGpGZ;i`JS6?RrDs*fd zV3sT;4aY<4FpTXEqo?DU@VbCM#QLz2)Gb2{R6+`2GWa{Ry|CG$P=)b+8+ka`NBVQ| zQF}?@mx6$4^YE3b*ii|qYIIVK6*1@l(EYifUC8=Lv`hI^?%L8wf~qoBe_-a#3g|($tna2|DBIQosvn9zv~O4o&$niZoew5 z;|ac?q&bI0dcE0a9qNqrQJ-{}bpwj-i7*YMXbMAPlnFr77nd&%T@Zb;BRbrGSpjvd z$_Z?ms$32LqXzln2hb;gOIe~R@QJ)^p1L4{F4;@rX|gw+;T``iF;+$;2Eu9~ng4U5 zF{)l(Z2`g&ak4T+$_%HD8R+~api-P<$~-`L= zFzNY+W@(9Q5-!T5osf0cS8Y+PCgaMb!cK}tRgk`xN_jP{h00zu&#A7%MO}Zl*Mpe* zdjbP%FT{vK|Gk@&NZZHbJ=>AJTN)0%0a^q5YV2h)^x=v&@A%%+FUwXF87wt65LpI) z?fW;w`B}sB%4$Qd?W@*N`@v+dTwAHQHoGzPQGw^lJ$-ZnG>gLeCTsiCa~|*G#jN9-jA$oogLWet1?2y<7z~A{`o)o`Uoi3- zdF!|*kyrmIw(+Ktk0;`3KkAW4wJ-6xSGb0H`molH!4;x(G%uol%9*@QKCKnOXyB_9*azxwld zCX4)>)a^X#%<8W|qg>j=7O0sEr&IN1N(nHSQ!e%K70Z!BPDrZ4#A-pGXYf%36J~A9 zM;xfTMOsJ_uJ&{4Eq}Vjdlrrz4dOcIyh-sWMfN?U5@fPeHkrQYhe6XUoxF48ZT%D* z*e)h&jvIoMBCf(LeI^rs$d2A!uiMrE&p!1zNIq>EdF^b(?YI-2fu^r}V1N>kv^+u<7s&)RMxp z_p^oHbgv1^tj?toH#h~WOxPk>6Ona%+?*!qa6~YH0LtEXDjF6?=g|7*PL{Xji3LNa z`hE)TH6o$Flj|sO~S&JgX=o=@Ync zJ4PimAO9b5v?ta%y}x&Ylpz(NI;a(x4V%G}pV*l2f8iCTj~O6rCOrr%>&CTQ7JS+h zgg327!}%K99gRQ-zCzaCFAvIS=hMw6n@oI6G#+{(7?ewh7qiSKnoNC)Q1L$3yHf+r zOCI}9y}Oir^9O{~tkOp)S=^~9h+;AzF^ zs&H^DNb))?N`dJqF%-KDyW31_O}Sy+FfqQdx~wjH#DnAT>Gnloe}F!@Vp!>bYr+4d zsxb7K{rNMFH~0ITFBOW@i7wbkV0R^&p$~}gE0{D`K)D_OhrpV|NOb9ftbI!8yhjo z?nx=L&Td!Wi`~~-yAb)h)mzF-b^B#H%am8>s7g}qs+1z{346Xu7@PH!3hs$}$*$Xv zmH^;VxX_(^lX87fQN||>j)Tm`Qr6~oI4CF{XC_qwX`w!1JZZ1NzoDb|K&#K81puRl zS>1{Fv(NXrIOf^PNP*h4D!Zb)cvqfYfg{gC$h+yy>T=0(6R9v-v8|7AqcLCHd0Yh) zs?;H}3V1#gn`nkh(i`Kq!KzPKymn1o%5cWv9H;Tiam6)BJ9-otv zq453j@b&a&=i92k;?}G+Wx6=-CbS!<$Aty=(T$4u0W2S2*bBkC& zBcUGiJ#0?&0Aib$S=_Lt`9}(Ky?}%NjN^Lc%0VL1#$3`R>LnhHZ2Ib8*k_CSOl?pl zvA6El$;-UeWnOH#%r33EyRSGcePcQv>|ny!jF4~Yw#|Hkd=+c{1#Nb|g8KHTUZ>QD zY3WsD_Vr!!vPsj}NO;pm(MT}*kDK~O;pZ0)l=q$vNX6Py!{wSH@h}|iNqWgpr}(0W z-(^4Hjm?lVWo=loKYAPn5%IkY+FGvG0arg)zT>Na`9WW%Y1zHV38U%J}uU_j#`XQSTgmrs=9v$MH|?JP*=eaByPej=cStoXwC9N~nS#FxFHW<)z|L9N|VF;3uZA zFK)r$1|>x2VQcLn!_>dG%`xJ1PfMsze?ZWY<4D+2uGw=jU*Bt{sBBE<9yzkjg6=o4 zK#YVJ^FxZ)GBQLVye6QZ#AQ{XrJ~LOshX-6zE3oK5=edc2#L;wz^>4#G#J8AP7;IpY%PP9WMvCX;0zc%XuVp$;u+wgoAMtS!ZU zLJRHY#*U-3Ef^)*dU^~@4Q&jQgAYlby@QkT8(#PmrSB*7_wTw^oj#9*9k3j!pJsuE zeH|iNpX7UcL@$G0X>Yf&wh1{I>%eiwA9-9CN=r7l;Qp?yHWC0hk6dtKr(;8{XY6h! zQKC***YV-u4cK01q$pJ*iL%`a!?U(BZ;vuDI(elhYQV06O;6qESblq}F!$Q_b0`SG zC;1_7QQy{@Z!fRlLCBZ5lG>{rdI_XPsR%W4XLZD!eDGc?k0z&pGC=!UF}I4QS@!kZms3}^H; z2^1WqxtWzc$*rge&BQ1!!vSi1I(jJK@U86X@xO!H4omTrf7&M{S$9y}anEP2g#VVn z9757uO7ZTETLUQQOZrFJL^WcVyqM6RQZ;Icv4O+VM@Db*HNEe z?9;Y^66617X2P#9SVj0ilx+`Tx+Ruc23{>min@?{*S7nvXLy06PW+C_fGM+VbTas| zT0lNLgsbX4+thXn7c@h};gy;UD$Vfg1r zio@%nLCkp4^fcbA$_&H0qhdy>F;OSLV>}tBtCEYREl$qO-+1KMSgp6DmorM-VP5n< zgt7>38Fai++8AIsGT5ZJq4H% zcp`ny{d$dDN$3dg2;71%YbhUSra~pJ(GaG3&5%jXUz9!R#FKT!-~uTG6_K`QL5fq+ zo18eBlmtqfnkLN4y4!^vt_;T$5K^BRBM=;C5DJ=N^YV2#TKc0TfUKTd=BB; z{cIzSFrK*j^dZq~KS&MtFj1#NDVS^R&VxV(ME1A9aWBPrOPJEh@qXoU(3|keRR-pUTJA^ZRO54Hz=8x!e6l@3RIMl zXA+7OkQ8s_w=T8LyjGc8FI;ifp0QAA&<9G2!yN~pSVbq1NFBbyQ^F}0+kN*xlH3FX znm96SD{r(rf}gO9qQ)gbc+j44fO1ao{aXdtP{NSslrFgWGr@ll0ZeBv)N_!nxv5zZ z_XjHg2Gz%L*EyBvLLcOI+tf3e{D>7H9CTM9!fz}JeUX$X|CW!qKH= z;@F*AQGU6hPp=7DDN9wHu+yfW^(8+jC0(x}fwg%87@@vOt8+~B8`EA1?<2Q^BhyYP ztKWIR#xj^6$)a>;`KSQ&e78J`BO2hRE*=L|y(6;kjs+z3@?fV|V^RuUKN+96O<};- zUkEzoIlmAlgEaNnB%wy#8RqFktvkUltSE>f$KftN%qFv<1vR}ozqf=reBr1~e$!5KA zw{1QMz5RCFXi=hnBl3Uc@-z%9A8nDDQWlQ50qe*7)s<;7m+JTJi3Tl~WJ^JmC%7^Y z%*>#}`0fiTM3c{l6okt~kOpB%?!|4!CQU;|ijD|3MgqO67@CoVpnIwek6}X%t3SK) zZCsE$f$|ZwPph&C1rr-cQz14QyLZWPJiH1cS@?*?Xrj7j+0t7<1i&ly|C z$AdfydaH>JinQRd^oM~)X8ohhn)<*r6x;<)w^F!yiJXwiJ6;SlL~U^Hgc&vtG^&6v z2%rdl&WmFrrxQ3N_y}@Mu=Kc&MqjADGVU4cgu!42?7MQoEcjVut_r-`#ExM?js=hP zvMy%es20cp21cFv6&^qkoggx)d^k~gFq-f-ld`EPhnWPZpM=H8F^?b zvyYAxfiTR<(?A&!I3(x;z84F<-koE^Eo!Iy`4wh<%Ml9_YNbjr)dLlOrjE#UXlMhL zo^LPtIQ2Us)_~&}Z=!+7cdh%m<5`=L-|?SqK0eJ=DBZCs1y(?!xW_+HNT9S%bfE)2 zT5#o|!`00_2EzOdgG#8d>J;KwaqkYqF-D!yB<6^yz7+XzE_7VvZm7Zs!v}rQ7P+Fgg5likN{Z>kesNid(_s>HnuR)gj}r z&agY5tzs~3H97Sh)ekAF9hrOtt$nGR_Wg3T3dZzAnFN0VOKGsf z6X(1=4QGO#i)cuL%05D%8GNN@;e|4|WQli4!TV<_w>Uq`D*F76p`RlH;9(oJn zV`a|~C7GLGQjUqf8Z=f~m|aOpJ1VXCcnL~LaIJQ!Fol;n#Q2mAYkw+Q8HSfgn0zZF z;z1%U9xm^AOvLZ8{}-Rv2xN?t8rGIdFJ73=#(Q@qvkV)W(nD?2*#YA_x5U9keSHMk zax;l)oZKslj@Zy&x-sk&hN@*h4q-tH=(HOIh*mw`Wq?zs^U&%e^cY+6^-ZOPK>Ijk zZj$17xcs*HB>$tZZffsmQ`P227vVqBgt#vAWnBv*TKU3**s*eNnZNRoyGxG!C4TZi zmhdT|nCJMDb5)q0j!WQ>1$r!h!N7Z#tPhu{ch1psg^}Ok5wp8pA=DdiswE;nrZe(k zYpNeHg){D|(c9FcY?L7{-fW8=&4CPX%+(60;`MLAk=!}?i!ym+p>ilfFhAV=t%V1#t$| zdzgK%8!M7laA24mSb!ty_lABAYO-359I;Zu=m(d4H=XQJbI995z=K{x9zK~<@0ou_ z9u|A-rQsf_(m0vSFRjo>A71wS{GR^Sn;FOW__w0nmCKO$&Ji`PtCqQ6udkOn@rndx^v~fy;=Jby)V>1HA1s7VE)PU%DY+Jw~eg{BDt=^e@ z#>4dMvlmGf0$<=a@oG8h-UoiM(ctR(;WV3@@HL*~gIaP2P$kaizwrX9Oewc}V(KU` zpEtpTy=eFDF7&0CT@=rjs=?~$pgpe#w9d$i=k4LUJmAmnxQBKN-E+iEqy7fHoL}Hn zazN>=u^A0Imf)x|e;!dlHb7hf?`>gE^K=bjH=w7yUvkv(gSiqOek2QG^2#ePM=yBO zyQ=Nq3vVxV`StxL?9+7XDX`jI-7SQWW%sdk+ij*M3V;(90PG-kw970o3_A`&iHsSU z`!U~%px$VaVc2T%hb_ zUI4iC1-vlz=C8(hiL!KtF&F&0}|f z#Z7;@NBDMB-X)=u+<3(H-J952xtoA{WF1W%0gDvm%)T2NpK zDVBI{;PHrQA>_IJc+(R@&_Cy1x5td$GYj^}U?l4z^%KG#Ab>av*jN5 zXnG*Y0ML`}r!R|x@h_$UdCNt6pLPeJWj%2WCpsTHqr@k3F_9|jEP{tA6FKk2av*Is z<%+O-f#U3k9~Z^#^Pq(3pvCiBBmU?q6n7FR;>a-RyYZ6v?#3{23V9G4#K3IS{3ng- zf>)!=R(&H(LC6x7AtMWpVd;Jg+;l<-z1R7LR+RZJNK_cMhFT#k3+4H!f+xHAXAf4r0C+#FnG%vnV()+w5r z2x2c5C>V`#69={q3?~}6>t87oE{S+EYGj^#(XO2Xe>$pPZwZ&`3lNj6eQEbExBfaj<^?*~ zy;+XE=U14zu~uY%Q-&yd5SUV;ENCDVI+%=zZ-Z1Bq|?!$OimWsMRdJzV6CRviIQ5U zZ%BY}_l7Lg{B5rYP`sxknM7hnK(c=zMtQbx=ACT8XR--o;O)@j+RHV04Eozf8zk+F zx*>RGrAuo zB@;!8O#WDxx#Mq`vIbuhfvsTmm-|ryTcqCeD^Vxu@#_^ua}xNv&wiel*qB)S7be>) zYlG#zyySj4q$YRC_^E`$rK2e%K?~8Rp^S+9t*xviA~|7wOm8JHOs#X0QM07Fg8UnD zxQs$km{xdH$H>)tK}M$h7ZWi`>l25&y=#Ga42)phtP4}{WI7l$6twEBbc}nd$nw;6 z_IDMr&g|;PGybF3*>tN$<4ng*v;EBmF=Ox7a47b91H6jc+E&Ss{D_KdC7Qe%gVMX= zg6-bXewya=g!c@{M4XvXdWA1>rOzZ{x;RX6BV&3A#k_@_d1)Bl2W)~N3=IdZOHter ztY3C;ju`p70fRTy`}@7Q@?fKTYGwL$*%}9tb4!;2H`SbZ&cAn_os*I%q$mn-oH=o-A`5IkZX>T^{wj8DH{snSNiVDr=eJ9L&yJUPlhb@eJaj;yx{#uSJRgk%V z{H~GGc5biWnOttPK4n_=k0e%uz6s)_3FK|fv|d0fH+$zTHlH+AFbv7(njH&yQG#0X zwN4h_rnkDDxZ;k~Db6xa8(FzozHKD4dQdvuV_!Od4}Z#N(moyZ_gB&D9|f*%^C~;- z_%lbABOfDqe2_I|V*&4y4NX4)jxh!|Mpf|H8RIM4`WK%!wiYh$ zK5?607x7D6DrV|FZMIEYvz?u`;oPizjje|^Okt@Y^$o;HlGAX2O#65g4JE5C%MT1NI|K`(uOOQ6EvDg47Cb& zN)i;XD~}oFhxIFO14*B@cX-K&1o(=}hNE)yu2y;KSag!~}$qLlw!D@EZcq0RnF{ z=Gzm`W-J5pW$yG8GMjrHO6N47Wk+Sqf-Ra2=YAWWRY2G+1gllnHxoa{ zQFz~IqY&29u<9bpl2SE*FSdV>0+C!9cqsq-I;(s=@~Nf4p<9B%Nk9Q*#LmHym2nRi zff^D5bvHZRVt@^CF5z~tu5Evh@svUp&CAsiW-8$>SO5Xo-l+GQ zPNDz+T;gVqonVGbBP{eSte^C5rW}gt1k!ONO3ve%+G|l^d?X2|k=Nv?QzZ)@+SFiT z1&i(3XJVqij(@h=e(>~5XczCn?LzL+K(O8YTO@hHkL@2#)H{Z#@rMCBzUT3%c|E$` zk3TK1R1#~oKdy)xOp%y$U9WsuPC$Kf-*@a6+6(8Y5tD9uNr7ApW{q90VrKVJL#dMH zHKkiqZpekki~C7Rz{HaTt2tGV+Arx7F{6p?$?Uy@7*Ka|on7Af6_U8tbAu9t4%%}p zcw3PT?veP<-!lOKh{n+$HbmYy^qt!Z>R8%MQ*NP&Q4;i^)I*CVfvXVw8P_J%s;;@S zm9!i<%4<^V&9;xwbD~T8PSAKx1Ko9;QL+Ii4bJMz8(eYWr=Dwyv7Xq-5_wus0#&OU zH#1=X!dpQ8Xxz5>MbJlLb_<4=G+lc+V!t;j+7u|#zZbYW>SoO|5lwA{^nAF}{(;kw zTq>tys$k$^nVC(qH^&9nP3TXVOHvEK(*O_G*?=X;pZkOdfPcd< zktA-@iD~33%?Eldk)uh=!*snsSZ@d5Z5%oYu@X<*Yv6x&UF=~g`jO!r%($*#VBmjE ziMF~`VF=l0r$J|jtK2MKO|0A?SUN0QJ#5NH7|*<^yOxjeeXH(5?wxtx%$qlgnJ*@0-s;Hc%2nCbl~vhQT`O1oe^7wzYXCoY z*Z{s_&7UnWI~$lxOET#)z5NjMM22b6-K9zi+ap*&xnTMg*;aqLq9IX>K31S>GKo56 z$~~~8ClnT+ohF{-IFnvX7OD7vc1fgZiS3A+op2Au1(cMIdI1f-+%dc&my`mIB{I~h zE_egR!o%{jhSh|L1s{3h94DERNmC#c7ASZjznmKyW})Jy2gN+)HN+{)YnbJ{ z%DaSzY*mTtw=!Fp6hQwu9RP2Nm|vK6ag2w8T(}BJKo(928k^H)3v*~&ARN6U>!eEF zC_+@2lq3TG+a2Efp<57B2w=bQsDT#YJ-E2zZm|BItGO~YU&L~-o_?>^CXruc$Wg_2+N#c=cFuguhr}F$i^()CPRB%mlw=*| z28=hGqAVg=r7y1HEXbxfauPYcITz6uVB<3TZ>@=i#@y zo)V%rZejhe+++3rxCGhkX1nx$a_vEYK4giRK!oS{@XM^9fzmFF(~@(92eF4`iSu>i zs`h4qEMI5G%9^K8?%ml%1P`FIK~%@?+oQJ+QOs=V;=31i%&a5WEgYv-UqCa!wl-uC zF%a+&<&+|AMVnNZg>tS}un+wO|Ap2d;vX)oAKR;xlr`O|h2q~PtnsuZhuMeORl@QWaD`XD^ zg!SbEM8o@&zJBqxKmO+9B=jv>-ka|Iaw#o7pxdcEQhMW2&q35+TWNH^;S`7P4YfFL zkoU*4WWtOkX}wZH8q$azLFV($=K4gD_`3d+BAeOJ#O*V1@9rL>aU) zVSH$>#3hX^2XDvy5bBF0{*QG1vLmo3mQvnZz>l za9AR=OK}+7YQWE{mwYhK`3q?xv6E0-e4q(^()?x;1r@@H-#)41?JwYdyqz2-~= zFBAGE(ymQzTYgzhd%2kTV{e*^q4z=POrzp($g`$*alsnNuVe2Kt&f(J`q!bc+yj~% z!->jBU)b6dZA`r7*q?kuONH@EDEm`IR@<1xqCe0Kob-;8?D()nFqKMw&6M0>#8H)+ zQbz2JK$V6|DCm(h62e;fHg>t*e`Gr)ml`v%Z{Pf_C0D=a6nq(Y=QgB312fQOH}q}#zdqAa)kl&A*i$KG39ZS<0khDpsA_+osY2=TPVxfMJHh}JWmuZ zVWPeKp-^fH^$D3J{)QS1AW=yHoL`{ZC6}@La!z)#SPmjudftv8-RSmP47@u(dYOWe z@8x#iP(s3&b_Q-Nv0(N7?Z21_0GNqk0v|O5nX3m#<<)%OC;fbl_0m7#Dtn)l@qia&R%>k)kU1ih)8Di zUA2XqGCq1)2c#jNe#cj)-j1b0pr1NK8+{HPK>=|DwTIu2Cha5<>G;Z}(~ z0Q_=hk>AF4=zv&&^68hV6KFt7=CqD4R}HUZ0Y3zqcv8F`zMgmW&kPH}xkN6ao!nek z6_yP%ku_ZJ{97Kum&gHMd_AWK$#o1lLj<@UD<&?}fDMr~EtAt=;_RUjM8UXcUzA6f z1P}|z`MpxlZNz&RSr1+cu9cHHvM6^HA~2R<6dT9xtR;0s9SnL*mM93{O>d5Slhbbs z5__~emKSgJmr%$QX>@G~-k?Mup5783S6Uj@DtjDrPYmTuK`+*4rog&|Y<}c-1<)y{ zey#V)w09G43boS{N!R8+?`PWOlm-sPY-s+weEtrMMbmoV>UMqios&>wn&wdILT1IX zXrUuSN3+77w1Den$`^uzLNkqjro5CsXKA~n_GJ7MG9N&UN`-iC_-aQY_}Jxs`(S@t56)l7#IE#*o5m|+hk zEiS$;gUU1lRWK};T%%&AL)Z_xCef4P;KsylSMj&Kn&C&{irciCD{WA5E0}2yMDVfV1 z#Xc)wv-b^(-~6nZ3_Y8eaiZz9XPF6BVs>DsizgN>GepR?zQV&t5j> zG34>hZ%PW%aMtqze_pC0m(T5_Ixt0-_-T7b>GO<*qQRt1FXo7%O)(x0ULETl`5rU} z-VaZSC9$+JPP@Hk9KK?{lDZJ`%k=45QT{k~xo zePa;uA^fCDTL?d(_vDkYfTn<6!EdlaUy-*= z#0EvUeWFbBTtX3Wp#SQtp)aEK2Wk{kVYNWn^RLd0#FcM`cSsqqK8acAjA3lh1&!XR zJBDi?%5e0QyWb7E=+#>o*h+XPa7!ekZWof@(sVg9wh|t~7ZxP=%pJTE_VEVEWe7)> zR)*0NlUv7QnXQU+e<^mWyR{;VueLP>7&+fFR1;ydh5@)b@K$j4t}De7w%Hh)0L$kr z^v|*84Fq<0J~b~*Mx4}p4+c{4bJh7+6JQJ*@`{3-YYW%WgxNyEoW2#f>6i>zZf;jp zI30&@U_2yw6i^_oUhg|U4W8DX?JmY@dQflsxqmVgl;s8d(PtHUMs$U_LI=~{@PyKg%nI#OH&aYxk(8<4N7Y-YDz+it7}FyR_^Hlh`A4+4Lei*( z2x=%Qr9-H=BSetaEy4_+Z1|m{MgVd?_*pW)(A{7qN2$~X>MdJ2H^QzVWJ4-X3TemJ1tjP{b?GSE=ThB!;5 zcfGg63W?Xw2YGSi!5__spL79QIic;DdMMt;NCn*jaH^9Lo?+}t3sH52l%m=`E70K( znEL`S(dE4K1p79V(}zCuE(3k{5e80IDZ6KD3S;Os6U$$$Gkm*GeSWo)4Apr5!{_*>dR+QHniv&!7n zoP7r_-yAFgkB7QCl$S130U*CdS_e4kH;Yzzjn*HmUxJ7O_KS;=P&T|77d)2kK7ci@ znorb|A8F7ql~HlY{|3my0*Y}P^2P3G2UM?teFIb8yZlICp$My0Sktizd;1I=va5PT zHcZcpwpym^X{&b)QizZHEG~q2Q#DFRK*okeJ>&Kw4aC@ZmSCM;K|5)yD?_dM*7DNU zR0dP4CZO#mzY_M#lWDM_l(680KSv>fgEM~g*NcwX6<_X_77HF`t?YXJ{gU{8Y}?6T zUdifhf&Eo}nD_u;`UCV^v4QG$^*%=o{Dm`TXq!D*PDr>QWX|Kk_jW6nTa|Cf-1igAm1eaX$923VB} z{*E$ZUE&$Frfe`^rZ6_uG`7%x-<6MK{3xr)r(^S+Pq1rlEh0{Q6CQHJ%_X1)g*sVX z<9;*IESI*VkMGkmx`oh!iTeGE=;jSCEzZo@x6rawW(!spmC1 z9B|iKhqg5Y@p<7V?H4j2Ai)*{eA?y@^raWf6#vk~G@C?1vQz^J@9u`-nI&`Z7Dm+7?Tw7@9ZQolcSohpmF^m>p%3FDDu55I7aOobE(Aq+1JLIm4b!GVU2WnDQm(}01lON4 zU(N1kwz(1qIuR{Sfk5{4c>e{21rcia=Zo`iJt1}Lk)S9Db2tVMC+8o}- zgm06E3O2BO37kT8({e$Mx&s967DNtp3k=s2IzRxP>LpHWTnF6BqB6e<7$Hl%6~##= zIRTLW$Xdo+x9KI@Bg=gnH7jU-Xf%LMA!R}nr)jcranMhhoulnfaR?tQ7!H35SAeTMihwC{@Xs{X$m|zrMTj@ z4R1#wc{c;N0{g1j$Vh%9!x)N|?kk|Vkg7Ygv;3zx6A!PM-8gXZh=9noDvP$-i7iWt zXG5QDUAzi~*W&}p=Xg7_RPeDcW2F=cy`M&CO4Zaozk^h+Y$mEomhga$(Y4UBa*WZc zgbLPWU|g=L8Rn50qXA&UmB3Q{(jFR0 ziX3*}`P^+x-;1TayB;3d<1W1IvXp-$fe1vYsZD(W;7>p$iW{O`bPQOZUr2OyF&Q3T zZc6uqa0!yeLgN=5T&qfI&Ybqu#3>1prsmUkHdMSQd$fW!5Z{eV?sY2_8?=zUX@MpD zPAY+TL%iS*am>7*ZClG)i}DTQr~NRH1`8us(}8LxR8cu~*x@h8 z1{l$MvcMN|a`R+9V9AydhyE1>5*7m}WHyI(nSx-5St8o6G1?rPJ2^TL<1=KVXlV)- zQ-YOb#~#-it#;GOkX!5C&dZ9X2U#15$GZgVmIo95iJ|aS=l)$vJ9=1iPZ0)0v7(Qf z?AKTXpe*x5QN)QJ?J|>gh?N8(<5s3{Cv-!dl-aQkD;kNQ z1|lVwmye=(SEIJIc25{+ztIC#)>BCs$>#TSAMQ?pgxP-IK&b$VLfwx}vIH`1G1ITH zEB^*Zm8)>Ko9y&ySIm*At}NxlReir|Q`itj%a2&TaLF6VIQE zz#`+$Sr(*=0kIwg%CF+flgA3q@pwyw^I-jDx&H!w7EOlO}X;VgU(H?I8evGb#ndY{$Z%sy8z802F6C z9*zV4GQ#xOZ72MUQI>~vml&O?|oz=KVbNn*ba z2?iji6}LqT^t8d-qOiJAs|YLVLSYDJbU%%y_jVI{nuDo6`ZnCDlik>8lV>s`z62!$ zmS!fRngy&O+0$)dfll4%(mDK#@n))q9`RR#sQT0eSugsEXGHpQ@2OXi>_T`1alj~E zTKZ!IM-UEmy~TZ#Hh*~ULW?pj`fshJIJ}T#<7{Pc(YQm2%WoJ2;Fj!8PecVjNH$?< z0Re&W2hqlc)zHZgH9*w;b>{NNV9Ia2f;udWF-`X5n2fK&&k^Yk5C$WPcVeE#6uF29 zYMf26vBqr1kLbOu2fHVD1%KW|s2)?uFB7m7Nbn#GvSh!o?JUNEWXj(P6il-&sXj{M z9r@GGzgtF+O|++j%pGode|qka>J_Cm(KpkXPTP(s5K~)M;T59rvX%n~0*s`1eicNSxg;)BvrFN2woWmRrGC%dX|0jtnfRE#HqVM@uIqZAnq25=73* zG>0=Il&{`HWsTPuFDTfK`SVRoSGcOBLI|Vxiu!=Lf`969XL*&%nK5lQ9Z1Z?2ka1)1`H0bN z8s~6Ff3BofY^yw0;`eIIAF7D@5!t92z2<+1noZ4L#cvJf`SYsU3pID3P9s#_Fj0T{ z?>0)#3KQd3V3%V>Pb(+hDxdPegIY;kDm(kIOfuUUS)$HdZ1;FOdwc` z*L_(C(UOyY9FVC`oxV|cb_-D z(16Ga>wDQ6(-$68`@ViX8lxS}V!))8wd57QKC@=00V}^KEZXMzzMV{$zWAQHepPL= z{~X#yU~wIK19Vcbqw4hlnrWx7s9ZT8Th$gf<3iL9gSZ9QFTsRR&GWGo_m5X-#4fT-+Kxw}Q_o~onX>SVyO z|CZ9|HEu+lA?uu~S*7X-sN*(@C0{#^23jRR4(R`*fDd&t5VApSNl4DD=h5bsU?E!~ zhKn*A8c2*KWta|I6Z$Lyo;ZwU_;(_O8uqN6hB#rdfdRqe?io&-VbMgbHKep#h2|MJ z9W0>9QH{3TQu2`hv`MOqOn%}OVpC@&%zhKMn=R-PJKzX(i;ze>qKFMbhC}}=_zBHr z94SLAT)MF{{zdnSm|432dHY64GD?YVWR}2+9Yy->)w$_G%w7@v@``M7Ps$V^a4D{* zzx#&_(zJ=+;9+pVDn0=~(lep;-NyY0;CA|H3N_99q^YKxy{4{ubKIR4_U*Myh_fXY z!>XW|Gf^GNYDY7sxG&(Fz|JW*twQz`d5&zp%5#&8?u)uHYDQ-BOVMKKW>DqcdY1Oe>@s8sr zgXI9Ok$VG2m*FE^BbDdiLLFTd45c3!i~n$6I0wqJ=Dh+R=;vRw7E7JfXw%~&nEerk z?oJs#z-|Db`85zyk$^or2kbFhk6}JOKHJ%Ry>-w#x%4d%3}h0J$<<(o8E%8gzx(Wz zS^ie_ZHN(p`ZsfNXEuPIpqP=t_K1t*wp>yX^Lh?+b~zIoY3FH@Jrq}@(!zA4zD1=@ zcDxMV6M>23OoV{1vbKgHr!|lwCDV;g=F<|w&a;y#Iam}^)*S4I&%)&I9ExW%P#QE) zhdG$~%$YT_7x~my{>`J*%}ZV$8i;1=o8kQUy z2aRJo_=eV?+Pz6d9{0_62Shp6Dc%lWfVkE+ZgohnF5p`jJ&hWWBNF`^2|!i^Dk28v zKeVe-Q_|9D={t?;B{WEhKqDoN=;yV6H6(@18>__8{xBJRUVP3e{uZh#&dDQMABQTT zXlGPVHwTnWj;|QWD{stB6tf$j!=@8aM6^c-gu%JT133hc7=a!cf&7LAv6JtE6Y$3G zjpNT`HrjWclhs1Rry-pn61e;w8-d>wJ34h+0cYRYq~5TO`3$ks{sm^U+I%Klf6`;V z8o;7YizcVTXxC%1B51amE2A$nuZ)Rmxji&Q67G_A(9c*m`O;tK?dx zz~oL*I5VPPX1X>x$yr9JJe@UE+&%28yPS0~NjTUlql2;c1vBH)7iQ1MQKg{&l%#J; zNZ#ft*UO5d5xfn`0%pTNm#{OyMiqu|2x?K zhW|A7U;L-F{}1z@{)6?T=b)1R`M=>m@&79tIxl<(|HXg$4_?#%CI2Z8;D6*lRRI9} zQ3U`%olA&5aQjdG6Cwz}|B?R`r7!(o{3kAe|0Dki47lyT_)l8@>hJ%-f0Cjl_4zOU z)4#p}BK-&d=^g%&?7#R=RsjDa|0(QW8>)Ywwcyz|#QQJ)Qxm}d;y?W_{?q@f{HJ@9 zC4D_(J-zHbaoGPwM7T81L}e^*WbdSo&>x;H}Tw$IN_MmB(9)kgX+Lp?FWT+kE) z5CkffDy%+@G{6RDNS*(-Ezo{?AV5BNkh&>cvwRgGTu=axJMZu?|B&#I=ntIT)u7$u z57_o@*V&{6Mg|n6lbEnL8x}JOW55ACyIimWfd4P&KJj5qqT;OoS#BZ+DQ|#W-`i)l zLTu{a-rh%pNS3qBzqtum+SYv7+TPyozS+5YFh$Ip-4#sO&Te;|$zng<0i`Mf1^8@W z@$-jy0{iX*0LTkatb@1kFsxx6=rJJDpwte6x~IFM)eini2&y9!03opKOq||$7+ycP z@+pI44!=LpN%<<20Dwma1b74#W62NE2=H3)yrJs zV`F7vdr~I+q5khG`L@@ud=Rsdq$rZIq?+=XgI?q zb7=-LnRfVFNOt0qV>r`D3rGxsUns%Ku22~ej~^sL_&v4{0iEA}6pl@vY%@5XXf~8J zyYuxE;C|bBa?;erYuo=xz25k@1RHy?&R0U|Y3ciq;j3&+-&f0vX3K=cX7!8pHS77X z^m#Q7^v-%(di#AgC?{%nQOZCfG z2K?-RoS^cK8OJwflEgb?ez(+iC;wuh^I*9g)k-6V;+6i)&d!9ZKEd*nW-gby)2-Nf zy&-}@x5JbQdQRxWQ(lgD%g3vRFJW`WznGhpC0n|s=xn{YQT?{bwq+;-Sc@X9vDoxw z%cGoZRHn-ID_w}&Q&HjZ2!(|DOGgR>j-O8V9p&M-w}#k&u8#A>C3hBz5=A4iITguz z-(gpS&_Qw85HfPOH@HFS%`1@H=os0e67uA3)sJb_`zzJV%2=Ssc_rZt!3t{%irvm$ zZj8C>Nrvjzymfd%xa!lv?bGR8m_=EiCm~U1cC!R!2e4~<$2Ji&>rWpV#>YD+ZB=Ts z{dce;BN26PC*8>M@4jyr2{ISohpmJy!gFXr~*82kCc zKpMNfR;tzRA~7-eW`F=9@WqCuq03O%7Wh?U+h^;XIbh^x3q+b;AjnSy66lIjCn;8oFZGm){muD*tcz>kO-PAHR+k*Ud- zXRh-NP&gO2+~3X7?Ce;&nK#_u%hK%ZnL5_@H0#WiIp zC8#oz=sKyirRnVCe>TNTUTIdx==B9Eoi%37fS}#!(-Oqs z_#5cd6r<@mEsiJtY8TVZ8#JolcziV~5U>gGbfw?rSe$bYl0#Gk5@(;T z4K^U~0T-AJI}plgL;Tnf=JnDBQsWxudcO54DL zJ4Id7-PUKXFYqWT>|k+XtJ!h%h*_U@0$`^5M%l1|cJUAHMWP3s4qC;U?$S@Iq{xYQ z_kS0fI_e~1ov3=jGqC+buB)TaRK-P9WRM;Wk#SyUb;Ruv8npZZ;n5*@(BlPj$Ua5U z^J41G$pPT0vx4RJivJ~ug|9%QDiIN<&BVga*}t&}?^CxtGXcW_I^jWk2C>j!u#d+H z{Br>8l4fC^8kt6$cFpH$o89Y@P;W_ZGGZnurM9fw9$_8x3VCPHqN(y3rFX^oJD~$? z|2w?49r=>PJ*EDH>Y4aLa#o>asl60H`StJ+L>M}vt7j{rkSmIN4h}fn7U7;d^#wnc zjZO|7uoK;Zu)Io2MW)?R&9keZIp&kb!|d{X6y%ZNjqM2eYRC(uLo_moAQ&xx72nTi ziTuYWkEv-0Jwq=H0)iz`Qc%oGs7bdj{X2|#6@1<#gqD!}xYa=2QMe!4#AK5GZ6_6p+K0>oI?ch7#1~ zNTfPiBnHU5XgCo&z^wyWq^L}Je;hN_%`)URP3UBhy$b7=du_DawZ!y}YApo}y5y-Tk%u5q4a@-z!Kr zH5!cJW96h`zVV2US)^MMG)Xr2Tb1{n$jf~3K{PG4Mu*$y>#nvJXsJEN9Vt8rP!y!- zaTzl@R0En;;5~yhSL@HGBq!@K?*NbB-x?cI0;6P+6Vk7+D?miXHqsDf=p>$;+kCj4 zfUB=n-E44-wRlDbhdP?&+-R~`D9c5$OLvqB&OHI zsX*hp(=I!h=*BcEkgAPc4ZH4LkCCG5ncl6qH$aHDGI z(JcxFp`h~B5t1%$PfK6%;FAt+Pi>1XGXV8^46OM8l>qFr1gOtYv|cwsOKxA9Ksa0` z$>p+{+M7{YXnxP-)YtcQ8H*F=oJV6D6H$3N#6KXnZTYQHa8@-?TeUdV!?~#s4l8eQ z-+W0=0F1;DgZ8JqgPXfIk>+i=99yh+L1$V5O#h4AKJw6AQ$11fV^{|}x~glcYMk02 z!*$Ty$Xd~Rs8z*wHOE6;6h5{f^x>!ape57t;XMmZ>=TdII@7(E+1hD+w*@u3wbGSy zn(EOL;IsKSA5MF4F*Cf_g>&lOJ9f^iv*^g)e@4rNm-80BwCl*;yh+S`OY4O%eN4=q z>KINiD@x?UBX8z=?@*RD_fzqq@K!TCxo?EKN$aKj_vzK5vj&*NU}{Q1o$1FuW{QR@PTM_}r0Iw?1K59#b|mUs{D$m_;AvkuBGCsz;Y z7t8|VeWu9)^zFr~HmVPJ_poIj?NIC&_C@5|;-0IAFYude-|f?n+>#_wykJQAZH-k(oh0dSm$WuW?UWTbywa`uQ{nHDZofXG&=c%7NM`v{D zpj`mo!cX_^h1J}_*)y_>)Gx*><-5#tcOCK%3&}?AFB6W*WiDOm16{!0;G6h&RxVzh*gE3#ul2tDHpSrZ-sX;>Yw>v37G~d{cbjKCHUhS@!cQ%Pz2uJOsWB~4&EW3K zIqb>xY((6=BZ@~UIfMtj#H}nRbq&EsF9x%^be3E$6PshJ(I-RCDPrvuv?mh*jW2#k2N8j{_u10v1 zlqK`d$u2pu(OI$1HY7iMJ2oXhd>=)TzO-LjaEH|ryH{|$s-^QFZ%BKlTnVcpU$c9r zPN>g+eEyBJr#)5WY_hlE#Qc(oo;$|vqPkZU+R)6ZwpYks<*$GLS_GeQUwQT~;q_~~ zuzYHM4yY%(7q9_%RY&Dfy}vuPmmlrPZFk2tD4nBWJty9VVqJQthVaHFXP5BA@SN}Q zf^sW)-8L6kIYIC|i~axO4EMTo5BVbah?utd67$XmbHMp1e;--U^XAh;_S^{)@ft?5 zE@dao{)F!m>`q6{*qQn_@+-&Maqd&uQ+{b}Ph|dE0QlNENBJcO-;NgY?f~EM;I2W6-0jDK2VWrQqD+9!wfpF< zfP)#yuBSdf-a@D6}b z1RfN?iJlXWIbfsZ`o9G${#|lCSppip``25ndrPmBWhh-Fk`#)T%0oJ&ziUs-I$DG{ z%f08Pn!s?LvOBtSs6)ci4Z7R@;zr6IwB8{>{$1rW45OcAv+`ozipFFwKIC^-*-4T; z7JXOUkWj@SBQ&m{N@~vIS3QF!)Tf{dO0GkI9T0AVrroDZ3m|k8AR7{(St0^Dvsh-CPq{m#WN52%8bG?u)H0Pi$S#C;ySv2pEnLX!BPh@mg zWE)mwNmgVed_C#s$}xR((3#zQr^`Lv{L12e^ldS9g*`EoIW?%cEppx1Ik)3%&~7cRV;) zGe+8Meab5{>vD{mo6TE6W~{0!Z2tR!x%o=`l9qSQZP8)(hH3p1I&;=L&s!=T8Cb+) zB9S&z9Jjhn%Un8!R6mU$<6zEEea_Q}kc-kHEw!NbGHeT6{{SGrsVVmVPCnHCEdFox z&tpT)`rkwUCi<)_OzbRl|1SWb{%^K9j()&;T({D1G-6=G> z94BD;g{4d5GlkJ9*w!p5D2qTl&K5cCetJo!={E>N2MpCvVW#p zjkY&KshW7kU)1?ca_Z763DOxhJ(D4a2>`%xpKeNX_gqQWsnkvrQ`N0?iubZ!IBLrg zj)=U3N59-WB5IkQdsNa{{J>q+>+;NeyxH&hh{z#df?&g&9>58Ea@Xau$#e|5jgPm5 z_T$1ZdE}5WDxNDC?9;*%M7Z_&-&OM|DjHn;uQ(yt;y4BK(pa;Z-}TN&c=~`)CSfMG zIz2>)0!R>R4GZ$yR45eD3Bj-Aq>g*V3X$#m2z_Ra+2ZP|PS8SPq-yPzWGW0lC%-yQ zumJkFsq{eX)2~?slX22{n7%D+0)u(OsErX83#_Vu`k;C-)M1g602p(Ax*EMB6j~X2 zU|ancgm2m|Z>H1=R0ygx01`T)@q#4ti4qVFd6|!_N@R~!Uu*r-bM6`{wB^srhw{1M zlP~bRysR4mLDD~LVY>&swMk|hfO|VC^?I$qkD-0|0eumE($BsWEk>F$4-&u4fcei+ z*hq^t=?V5Fu`tm0^<|B|<;LnXu#=kLf*IIo4iNRtM3$XA0kL&}55F5*vw`HoLM&Lq z!~t%aTLUb0nP=I7g2OQo;AJ-+t*UfGUrR6To}QmM(2kVFTuMlTq+$oZrWNZmdf|%)f9>O4gxLmWs5m5I>YY*}JWgh*Tui}$ zX;O-!@E;)VfcS8yiL%?}{_?HE70?_5#3_xz$T&c?N9JE_qmie$%)h++`c^OF;F_Ry zhY^<{VIod6l~v-=e}<7{gqa9z&b8Pa%#{U6g(bnx{<@}p)LujQXll16y(HNDF|)Im z(ZUP{UZBcKS*ncR`KlH(S5@ zH5F9$r|HFtT<#RihVF(8tOw_JUJUqq!Ix)!op~3@yn>$6Hj>?ebSPiad55jGpxArh;$+lKl&4;&Dim1Mcv(jt7`qYe?d+y>r#SV`5h|EszR+hoIT9AMf0;R<^sqIHclbRXQMI_1plP zJbAM2vGAhrSL^^qK)Sy^alSGJN2870yVfvVFc0%YytVauFnFpPT3UI}<=;Fnz$%y2 znz=UiIApW#4LqXt8pj&_7D|Sqr*B2b9nKD4@^JLT@6_iVA2-ro9q6;()kG%OL5va1mBzH1cB5N$|}D_QC@jg6Tl$IRIQV5z$4HG57$B;3(RN0Z|1vLp|`B!_Mq6fm#tbD#0UdKCwayWX-o)j7G?`R^~ z{a*zlp>Wpt1Hq@a1pcoqu-`X9OmZMZ_;~)MAq3Q5K_cJ+l0-R&@boSo7)?+%7NK#s z15+T3qCR=4si85Vuw?R~>7_Op{SwVt<_(Au8NC5qn3zitdbGu8xi&z;8xs<^9C%2n z_iR&j*{I;{Eh#s`HZwgjuo$(tAzhi~dwVb9E6omcu0~qy+JoC z2o0+=WX>$G&$U4USi300AxHs)P-)jbo1A$WoBHQ7A;GXAB?fUS43Zo<#ITGZ9uaTp zD3}u=4x{lf1u%R=5v4fuh7WWX?)@B7dB?+(kpWa42A(5mpfTjr2Gf+>=$vyiqkyNx zRHsKH5c^1xkwFqb{*T4IzWRX(VwCZ*CcK7#Sdngs7Yj{IXnX0xJ(L^Hm5@o4+T}G(*=$aa1 zJ{U{}t0K|o;hy&!(eExiVb4Q#u_{xFiKT?=qVDP0xs~Xh$nvRxk!HZ3v&CECZtO-e z&*w{6M44kZmNl!()iCTt|0W&vSi_~qKfB*$xrWZvy`ZF{iQ|eaG)CT)q0OM7Re6EsG{B$)iZz|%)0_+UID>-t>Cp)K+wMQxhcA`c_)>PoRCY% zR>(KFQet+=d&I&iGL)NZJ4}xDi-E# zUnrI=O$8_7{lrWRFE;YK=;3fwn+-2e$@+wr-EEK_VJ6`H(ksubf-``pl))VSoX}Bx z)={xN*0^|a9Q-zBYveGUr`Y$lmG`H` z=l*&QG={YiFQvIztRO#K_jbrqQeBXQ-Z@3eOr`C0Yv$B~wjjjb2^WNd2C2<0+YF76baFe6bu+tz@tj=RAM$vK7|KL)V1gYCKU`l z)K}+MPr@!H!c5_?qtu?w6!0=k7DFGJePr`lO?_02*$x{RrrC}=R4HBb;7yyid4jN< z2W5sakuZw;5_O(*Oy$Fg*qZ?u(I9hfXjUCMbY+pZ)k zYmTl?VQLdEmq(?f9-FM|TuAbdQ;ZXLKtR>X&F{h-3D=m~q8giw5Yxxg!=Z#YnYAu@ zP%32x;Oj*Nq5{!T9(X~vzM3laE&Qc5>2hLE?x|^mb^>%JhkEj3B41#>02Du=`pdgR{b1HDGoI!_MOpYDg%>uDWHxxet zY8A2On%^DBtYc{PC4yZN)i^0g@#QqN$M|WXt{)^`0y$E+C(J<4`S;{pb-)V}@?($u z11}QOMwoi6wq1*+Q`~hO2|X!X#`)O?qZ<6?EQqor?tMq$ki8(EiCl~|Sd3X*3|CeO zvCVD)R}ec#4DLRX9XA~kd~Kh{Y5}~QEAQMb3dIgfr42B?<9rP(krx>DG+-ziBsmtK ziqxd_tzZQYBQmj1Ai+sMf&&Zp$X-FgvA$tTSoo%b!c`He^VQgTQww*C7>!aSXC)!> zWCj*cPbMD=rw{rP%@M|2DoA2dCbm=zjDVwpy zHHY#||B=Bhmj_Lk8Vv>-*B8vUU-0n)=0z%P%K7nXo&Vyg!+#f)$ z<9&fpEWV#Z9Lwp^CW9!L+ku0+hXdz7d@A*c`o7`a0T@~aRZ#DA@h$VK5W)lL-vb63 z28G=(?1u@PI#?y5qa@W?RH+k@4;3BzY&L$Hw}HZy1P-;4gN9E%M{F~V*r$HZd4ciC z;Fl9mOFZoRwDY$H`4auiCcyw?R3(+_dhL*}(92$%>C$Cn!1q zvMoOAd~FutmpQh$UpJD;=Zm+&sXFAXTb8z6&oiEQN^h=;`aj7PUk{sjzUKrWV|t@C zgLu;<-bCoY4wG&7%nKsDE0jL{>X#O8ZOIcnWGZatvo;;eH=KIP9_I9|+WCUzELh7H z_ER(@Kasee`Iwnbi@FzsFb0p!80q&@jiiPr((;HlK+D*X~U#8jCuq_-}jz^h1)k{B`^<7<6 zO-AbrCnX~x9~~PR7NvtWl@(QFw3O83G!#^0vy;=~GZRf33{xb9{I!b~OXm{7S|rI~ z!UIhF7FQOlOz@_^9MlHCAK{bQF?^q^XR$3EPx)UaC;R19qE9P%n+RXwYu$?Fxfqt+ z`p|GTm#c*ax`$Gul)~}*{42ROw^6S$nE4u}5Zy}Iq*o0s&t8|DpcS+WW)8z|f%8_1 zTM8m}l!VUd0Nj`{#Cj?h&m{Y+E5hHY@=lzyWgIP3z}d9qWGh*rrPDgY9>qIA%ZfSR z%DnKp_96$CARZ=Xt;yYdsI-&W#%tC)KV9;G93%lvTimGC;`SlZ3|CeGI+(DS9PZ2nF0b)nsmBaZeW zqC1xr{Ku-eR!5o$5^6rB^6y9IG#k|%@~MW2Bs`!EFaut9A-}>>al{0-Qfm(VYP_94 z>bPnvSW*MPgFMt4MX44}oHEJeXjz!(Tt#ggOvHLFrK8z$8DOoAYwV>SsX;Qz;;TFr z92-W!3}Cm2RO!SfNDi8~BU&GLF6(LCvO_S2cI zm_G|j_R~#WEG|oQ2nCj^xDScb$eA39dd_$OTS3lFmn|`0@=v49?$Kp$(yv+{#VD5| zLp*lQ%;0u%Os`eg3kxg|BdI9H`xjeSwNhp=EBrfE_aad6NO3?7%E+L(cB~`4G1Zn> zYCh%Noc~r2T*wY9>|%w1bCcD_plB2dW;JAWI`8xg!ILjsU^8)xqh%*#uZjV*T1I)q zwAC2fkL+c+4l4>1DJyWtvc5+z4{4f7hMAItA1V+PZ_gv`;7BeouLO3oB3W32oX@8? zuxQzR=>g(|0~_$S(E1Q@BXb4g=jp6wfTLnyiVOw_tKh-~?+ixEaaj1~fEU6h3Nqn~ zmjiAB7mbhkgFm-ST+`&~0vy9ji6JDmB%TpMfSC2kg`muF|QaKrTMh1R6@BIGbf{o5AJ*whLnyM?lG-M3Ar;?OfQ;2ZTbVPVkx>^A}L3%_eBjfLD^%R+(djNRkjP{5y(GvgV zi|<5oh3qRTE~okd(sy z;tOTxH282hC2$%uoA?8P^D}P8*>+lq=Y&hbeMr~~OV9pE$?op%4_QCgqEHRMcv#64 zvNLcUl8lSL>H~?qB=b7ipu{5=-w`+a*_boe@kfir)YpH+;1Z-=d&Skpw60giou-`=dZ>sy(BDBt|qr=EN)7lXb$IH=TzuB`Ew-?C7dLG;fp717a^L)EGWnUb_mw)qyic7%TnSLg3;0m zVZvoXGutC$V`W^>z6g0pl&(A=`m(wIOlpuw)3BR%oT(J;v&OYzg>jLM>Dk|m<32T2 zDn;OQJDvyAM5!;#G!`tB@0v)zvI!_8W9%hOtCuhs9%1?c;O-AoG++i83*d8&&s0JL zUcpa>KXnDx=n8pdvQG3%1_!X5fK+yw=yUCpG;MOGhCdvUJ;YGZbwU;&S|H$PbHi`Z zIsp2YX$k^<`oHJ`zZuZF$Iw-%zJlI#x=0369LsPd7NQbb1~{K5nyNYG)9S_wbl(DP zCQL>DKv}}SEc$k_v$qbOtd;_}T<8Q3aHWeLsWs*ak_MDggzh`OgWwncmip*TEv>7X zKY=BrdAsU3eQLa$8w?-D2E3B4K9K~hrjBGn@|tTC5Ld4OrLM^78+G03QqNGhdzSXx z!I(zd2_NSl%-P~i`%;8J_-pD*uyWavnEpc7K?%&-bi;D0R#&3raAkr13*j+tYrID+ z4!Q7ifPEBri$YN4xs3w_zcAXpzD}kS(u=;_mM?yp8^#xv6!RtSBlkAb!A#N(-%_zg z0!@3faNl;RsuXuikLg@vTu1{#3{T!LldV<&u zx((Vvd`*%KXeYMsI-s>eFJ!oq>~{*tp>7{^78qS~;6tSKYEtqiGT@g!i&Dm{{-wQI zRgf1op}~&@o`B=G0pI)v(5u}AuG#_l$nB5m1#?(RJ~so30g2Y%1(dW#oI|(Go7;bP ze%yx8DdFC!qi8(lyNzs?_5-B?t+KAD^FxT8a7m1>&|_dgrQC)ciY+a8G$M#DKp|iX zg!`EoJ9se{TVv|=3nS(e(g4R{@T_b2_p}{;)<=5P%N<8Kre9N0=Y@|tz-f`d1^~mx zg=Q|?S~~cWf6~4ujjSO7XjL=2o6`f<;Fcl?pAm@W7erB$WISsuou8;Sz<3`NHHK8%LY*2dO-p#!HEnA;sc1S2NnnJzXe|$ z9DLN(mL{HZD@o#%mIez#dV2+f+vVg)^PQ~GcVHf8&5#;LM(>K@?zojDKUxTnZ;oX9zhCx}m%s+`A$ZWA^H@CJ*>M|d` zYbnX;tZq>Vppj7X?(MZ^teo8DG|odoU~gs(BRO-;gFn8a1*p2lesDyTiYm2US521M z67bm|%`***{{BFh08M0{@vP&E+iyX>H|wkZj|1FW$cC}UW05U3(v8*$3Q5U4_4v~d zb+^EbsH#gBilD+M7Ed>Yh~RQJ7gHu@GFU z74c2DBtk!tUic_(|DafZ9=59F$%r4no4szG4~jz&<>C3<7C_g?$-yAy=0-H2>HC@D zHwx1}YTe%4|IpxFP44h7ukM*3>kvtFm6|PB0E2>3iOPfXub~zqil6aSm&#oK88jqm zVk@WI@CMp)?nOJliAa&q+IeJ?5&IS0SE7i@{*rrr6e;qgcP4`XAZf9gIXn=9Ew>{0)`+yVtuIg(x3`ujfULl0A*30i3wvn%=! zEDTB)22gr$l`X~@c(%KIZ5KCoRA_XX4qZ%o@__a&XTvLbBCuZHm{CyHecUBxc0f75 zb$2sz3XqTZ-L;P~O7{;R-1(&_MjcNjVGADh1l0w;iH>E7@HHf0OU~D$k9Lyk^Ph-n z`r&8l8(U{PK|`(`nU3hTJC&cxbpMkY$e;6(Ri)x z4;QZF#1HP3nulUx>A*!^xD_SRIgb8GUh!knpMvggzN?2>Z|BpmJzNzq4|G3Ogw6FN zH`10c9=98_?q-uOt0_uHT*^31QbP}n-pjb4ZxHJ@H}KKyL3uAU^Z@IodLC*VtG_y% zGS@X47Op5#C&M$q25~}?ph@bo-Z@$!~zdfGylxjXF6hhe zL((U2rKdq%TDmc&dEuv!0Ow+6Dp#Nbpp zfaBO>7z19Y8cBaWKy>XhU2<uBI*l*iC`a%1fZYNgVmKB>3UmgTMj@r0Lhkf zsb{;uJ8abV(1@Oc7BHEYi4>zP^Dvjst!|q$%HCtxoJVo`dE^iHI^fAL49sv|Oh-u} z(%UYE3M5&Hk+CWs6t`f^;N)p{lzO-DT5C8Tx=TuvDNSl#S<&??H(Ab4CHvwCp)y)M?*o@#jk3dyPh zTY_y70(Ls}xjjs3#@!O>kw81tPnI@p$%VWK`J1&iogmC4q0_;kS&z2k8?zem92t&D0e;!*Y2)&&Yw=PHkceM?!wg= zBDP-Mx>3@ehbYuFn#^FcDzDx!WU*no zw`b8dk$vEVO?dnp6~l-TCSD(;j28ISrUSBrJe<;E9CWP3%8HP8E3I0u58KVpfO9P64e)*=p^RD|o< z!#0x3ZKP;>&-*A2R~+M-8i$#SKp>%~k6?tfm{2&$+2aUdHKdrN+I4XWnzzK?K5PMA zuLnCRu(A|y9}|}bkCqdV7Z-CVUGV$ynfH%3gl~}UC9PjC#f0f{z;i;s5KN3>YcYF)Q2`$-^lO02sw_ABm&5axty!x+{+BIW>PHVKonu5<-Hv~E;}fE zSUxBiW5*Fv%J=HV##>sRcShxsDq*97cCyHfw5jI0dS&yvmk`s&YQs!iqtqNL>A|Nm z)zzmG$lpJ}p;G27kyURXjttB?m4o+UA#Mq2FqPKaUtFbz+m@1p;W@}Emd-yvMF*E# z&#RUtV$SVTIZs~aEB+0POHhr_y(GHaI#7iQPU~zY5-d4pGAeTnl5_=cO0H*|cNOAC zrIdI-YZ33{8LTky9AtcFf32{1;*=ZTV#)1pgiV|3+|Wi>hS*GI4Ww3{v*K7ZNyxp8 zE9_gh#$XC`QpfVd4iSa>+hIh~l2Zyq8IU!!K z$RkS1K+l@c4LFjSFQ#(y@}{SNE-7pgKkW=0%ojy{O)mu44D5Fq{M4`9klPm@R&{tP zZVaACsPY^vAo-f2Gh!6b;T$Qc))!>FYBrG}m;mhWi= z2t|+}AkPcNFQ`EiB+qMW?aay_*&-ynD8QnjKFT)3;wmdCVJ|jCm-5_BXeU0EyL^cK z2H1fhgWZ_D?Mb>&_KJaVsXyK0oEuakP2qY!^;~l=?>;kt=khja?$-WQP1gOZ>eA%x zCEGLhE8;)W7ztlF zXcb!>W@dP~^fzB;T4u#E=x;Vjl@#d17@-#RR?DEpDY71jg<5ne#B4{5VezLO7m2?b zd!P!4=3&XhMN|$m9)@+-@U>YR;ST#*+R0B-(S#-XxA)C_v@>g3bVuQQZTzLe+^ZbM zCKvH4i&KwGh%BI3>9g2Hh(v_JWJPrTtq~a-9 zq+7CvJ#GR)l>{nherM`2^=u)|(o>RY%Ra~p?2M4k>>tLI>AAzTb^Aej^r7&$b0n%Y z!_{iP%9=P)QheW?7>xr35vn%op=|RSmriL}+6dB$gtxaRgQAZeWhTC}AM5sye|=z^3p^ylXB_5-MhHmLjH!aOLJ_=~b4 zN-AfV7Njx#4sRo+TQZexTm&VOE7tYSvyP?UrFh*2xZJTXUoK-R$9d;hOBcUIP&vHYjiqW=_T)LDxjwP!)VR#sb_0QxtQx}EPA&qoOk=N_Umn+((RATx}{pj9wr+3u+~9dieg3^L&Y~)N5^M0S&x5r%nd{en%L=n<)phNN~(wcJnXmTo@?`8z0GS~O1`Fj)9$3kP7bnyN^;L< z$=9r`>5I#3%2&I>)fz=d@N0HsHnN{MAWq^jy3(D$#>tQJZ^ne`p! zW0f+{*Qx75WgR|(6FWsncVVL8(#kUsd)b7{u6b}7bIS;FUnTyzP-8)@hvne}{z&m2 zn=-cymF`1P&(r7^Hx~NFw2CAYB19v$A~i9x{vx2tebGP8C{z4}%56Qpdx+&NPdv^8 zIjqZm`=iEUX2bbb>NJ>?!FqVK7jwbE+t7R-IV){lw$q`#*PSlkmanp}-l_Acjp=`2 zGX#taiJ6VSYs5h~G>rev{i^zSYV~cY2pnLEr9wX~uL6c)aU!$=E#H!+;yAv0==}Nm zaDX2tp2&W2XTm`Xa?;juo!sF{4pDzT4 zCmTd4kOw1rY?r=%UMJ1iFH|)bccTQ38^=Rwk<{z;J@IyTlz08wtH4*xj`udk6Orr9 zVXv5#4E+vopVN2X0V#I}LBC*$je-T#A||k;4)cQQQ%rbTb%B!Cw#O1c1?qeMAW!C~ zYI6ps$*Im5J{;y7a=0Eb%z)K?JJ(3NV<=o1^-9?|MvbW|M&vL(Xr!%J2Oo$ZGc@+HwfP1cO5UB zc#)%TSbN+Dr_-PPI99<`K@yb7B01t9EF{}iTAhM9x*aMx^a5WCqv?B!<84XITvW5u z+ci~~(jV9v{VokU&vNdtXs^-e81a&bW(Md?C^=Qom9Wt3004jpVtTV2q~OT&GpR6E zaTzGrW|A!Wnb(nJ<4tPGL=hQP!|=#?h;n75*|3G5f$AK^Vr8lgY97UMMT#Hpo)Y?h znmf2XnU=?viaq#By)lE>Ux9a~+kd_@p7(qB>Qb@d;>S+#+734i=Xif}J3Oy@qXHakF+15H5(pW53a|^iTAe2F`l=dnYT$P9wov#Gn@~4w^@X_PfC62n*2NF@yM& z^~ECQ5@zncl81*3gS!nAywssL(!y~nGXkW;3ysa=-3pje@BuXS2s#%Q^PTYKZW}aC zh9h#O&C?S|lIA0}4LA{*lTis%`O2M`L#iMs0Uf{mnY%8n3s05){6SN?F6_Ew?z7l= zesMlc`t#>B`TEjrmB5>iXH0y_(r#QF6Pq9J;0U;#0JcD0P>*35qyXXQ4%ibJSd0mQ zk4w{j98OKTN508MD>=7OC5L;eZBJ9=-kG7KF*Nje9rSSFp!o6~M@?k}sYmNJ7xPYhWeuw~rAWBOMRCYEUE2_k5P*$6KoTNTe5B$(%zkz7aZ%48yH z4`)z$Y!<{SSS@vgBRNMFkhmD#n-LdCDu(To>IYohV{y{~GEaBOR#$c!tJ|U+M-Fs! z>_Lg}Vm^{{zW2IjYp)&7Vl@v!IfPri~ru0RnKp(B4i#D~=L z)SAOtK{KdO=(P`c8|_NfUk&ht;qR6{ylwJ-dm>xAQH|`%VEQZ~@85-FJx=7K;sNFX zi#4^r1jc#@#VklFhYJHZFQc`mvjQ-omWQ>Aubtmqsjvw;^W zr<(m+8d*elaA^vO!Qjj+jwM>iqb1)SKmvf*y?>*2$#{$w*^P)?uo94XGd+`FdcUqn z_SPW@e!%-j`gHb(6)R?~uP6#5KdalA(fvakjbW6hv7&;(G-7RZ^iu__w>0WiDE75J z7Hzr?0Yibya&awK>bs^3L*ET}6#(qU9`NX#)@s@KriGKtuzRe&iOek|s!s!LhVH5g zVWW=`AgNb=q?Tg7Jebiv1P6`E@RIsmdBv09Jyu`sf%Hz0&*nhH+nidv%*p`LEmNqh zZLM04_`W`q*gmkPEak6~lSBKJV!&Hl8npbmJ~ztEoh+{nt`l1WF5T^3Pe>XK8EIhOjp^t+PDN>0II*<;qV>81>?_SY3zV1VCM@T_Qmw2h<9RjuHZ-~BnT z`&r|KZI3oZEF{@=WtSIYuji2o|9<%h1g;24j6~lZJw2FO6?0&7cZCVJY$bDRLkT-Z zcY8IWqqL3kw6*B8_DOs8XRZb&CXvOe&!U#9s?F+xWKOa_b(!qEw`V^) zH4^DB-?zWH=CRF9&!_9F{K-m=|B@84jtHODDT#_cQ$9*O4Zk2sC#PcO%5I`#j#~HO zX4S}}w;X1Fnrs4@qao7!{n#=srJ)nP=1~07hm=dHJhhq4YL>uuE|$c6zTxoO+RkmI z+=raz(f*PLWhLn%+0|uB)*#0t&2Y53)TSkYAMm_^e$_lLe^w-Z!@RsAwv%xerV@g^ z+MJ%TE2i>SiODvCR1un-Xj1WfVv)H}fl{1MD&)yMkrdbW_{VoLe_ zG_j%jMW9RRH=mOVab|3c^?H)A1gk@nl~Zz?MpR2OwPV!ClP<3l=BbMeSIg2WZv%w6 zAxCG_t;>yX(tKwuV~|*N#*DRbkE#t&gor5h#ly72uJxuvsx6?2*~LS$=6$Xl#6V7d z%q~&%aTsKqH|2Z6fR9K>O?0}7Y006=nGP;U@$fnzqbRxo1P#LvJR=XzI_OL5@7R%1 z{(EzEH0WRXAFu>&rg7l<*v?ppWD}in7<{8z_lp&K27b&Ba?D;Os1uhR9A$rpl?7uL zYK&YP<03G(BoC@et4J6M+}39_#dyi~%5N4MhgPseQ0yN-`BHP6(IG=g!EeIJ7|2B} z)710rmux;eZbgf4L=m_!YSD zF$2K(w7>X@3PC~zYG;{V#=E1=c*7@1zu93Mf4p;_c>snDt!OoH_GjFa&(RJei{siM zTZaZhY~qPKQ*%^E3Q0}Wqy;S6+2?r67T}S#kWk+p6~6YzGzXrtYy!3#Lhxr%7=$-a zqZ)7v%U4|qhBfNtH0yG#5MW6)B>phc!TL`q5$@w{8qVunq*H=u0O+&#C&CuiLVZF1 z)DBLE^ypz`C0vGSDHe6I6! zULHhq-kjqBE?xJiRx4Uq%Gn})v>GmEBa2d;SD02}6xfbsn_Oyac~ zH`=3KN`IsGoPH=i=5H8ys?LlSF3yZP*Mv3(J>TSEOhJytSZtNXP9`RxR$vIEAt0m{ zXAp4;2^z?gBpZY2t*;s0Tu?FbIgMlz?@AHjhf*v+L>dYMIhRP&l)YY}ww~;B798(K z^|r{Z4w;rCXsxjB6H=B!uL|8$|gg>Xieux060$bZj~r{)<{qt5v~E?+R2m?8C5 z(R7LX>97<_$=y6ypoe4yJ*j&hqKFxf(U-uHO$*DLBgquXFzo*7MT~150R@J@nTl+) zyv)D7{=>?#fo0=k%h_~QX&j<}N|P!wdYszurx77P+kjq3XLx5PKg~jAuJs*L0$l}Aux!HFB1}b*0|r_}^r@hc zla-W&g%glYSPV4)FMCe{2wLd~V);Yaw3wJ*n4+pJR~Y4aR~0S$()+Y)qRr@SkjX+rU$#!#nGs7oDY0r1qL{~lEOogpdt`PGTo^1#I&Dmj2_0eiwNoJ_b zSOwrB&nbIGx@ct!!)*URx?N&eUtT5Rokd*qq-+e8!T5u`c`!~J^#RhJ#RXf!fg|(w z+Z6zp!DlxfWq9dO_QL76=4=IJrA!1zCrHg#MbY6)OgA~P@@NAkNms<AiG2*3? zRf`Nc>UlCWfy%qG|9B4CVOE2+OT#Z*4ce=PCr8VB-<}!3*$A0}xT9>jXoq~4jg)d6 zBh@VVm}yxoqdAAA+Zl^`9cZ8t$ZY(G+~4qkxva6DGdXB_VU+2-@w;$G5~`(oli#{3 zA?}=%sG2>R@04z@B~=n9J*AU39mbug3&r$oNP+XRSzgLUu8NbJPfkgr6FiEu?6HcWS_ip{Y(^2|&*ip|ju zy;et68ve7O?a?6J979Ur0fGJdPC)yWtS0G!u+tXII5~96qjy~qUOFe=sJMzq1jTRo zEC4K?wO@2SE{_}PyK8=V#o8bg%UOc@nwgf%N*VN_LoF=q6$|p4c5UKJAu}WUW>$Dh zp}#LwXbTmO3hinw>&qaa*~$ zpDv(V?VunL8RPJ^F;UEVl(>|AMMid=-#=NUmqh=fQ39ps#RBm%7t|7_Gw)OGrfyyw z8pO4aFBEXPv;EH$m#MDe7(qKx&pUY*e3s}g3ZBhMLT8M&4>szzJp({g;QFD-=)X2v>)%Wqt;Ow44eji#9Hr&u1y#-CSU+}` zw1l;QQi(Dex3q<&eA<;j$kTs!#PThNYsMDi8!O(`dvbL1aawrx-wAI8Rk%hpz2N$J zajhPYnR%twx$@ds_0Z>gwpczCnlkq9Hi2?!XP;z|*$q)H+GrxjqbyV+D)caBR|r=2 z+5I1HOaH1V7PcF+4?Jvjt%Oy>Y9?9>3aPuvZ|>(0atlMCX0fNTpMJxrEU3EQ@UMVP zvy@?CzvdT^55#5KvheiJSY;qA>Oa-B$_G*lC$7Q-!mK_d@{mhf?qGPmzD2Hc5OG9f zZ?Qwb=L!SduMZ^hFtQ-Mm|=CN`CP*MlHq79sM_D?uY7z8)K_QLCI;aOi~2Bmm|IQ4 zv>-!4&chulSuqh;b<+V>^2v#3m1o-@(;O~lzIr@gW(M{1;Qp;tUhZ%m{6JML-0Z8~ zYo%Wz_#01F{&^wN_Qc_Pa3b^wDJu)alsP-=2aJV_jeQLM2=R5pVfnU?);U>Z`Jo_H z@`Jpd(Xf5IkpH7pxE?n9AToyhXX=v|>cbZzmPHtDzb2@^2bk8hVz)39^*1Y!_Q9pO z%53)2{PQTnc@gE+uhlP)w|Uc0?DBW50P4b*3N~VOl_4#8Ldiz4wM&deY#yy0(j*1e zP~H9us2 ztcO30?E*IX%h*+D?GzXOtaLUuwK4dFrAuWy94&oaKwbu%M|;yB?PO~yz+OH6el-ri zfE&mg;K|7-xd1W2h{1~A)f)@cvy~l+9vcs*d#dN58+=krOj?2CoGMg>#`Zc9gBh4> zIWKx)Y*#b48$9_K3u0zd8+verJlKs&9DXjQ6NYCI4tcT|XpG0eH>oMap zCj%JsKz_sKIivUUiHJ=qwL(KLgQG+KzMM432mWe9$a=}|AM!wFMy4uBmNA`PcPnoa z(84a|xaHKIDw3`aJY;Wxq*jlO{H8&3(S?{297%Sa*r_kxNhAoqKo54gMC+$xfY(F^ zc+EJBzk-51fz50?=jgse_KXXGXLYEhI~#cgYKGBm zYJ{Tc&1!MY`f)THEhb~vw=Vqzggh;w!2HV#>fiWAj0lw{3dTC=!Bxt?B_y$vS{K2xVZP}cmpVH{D-wj=?Zq-ge>bd$U+>4-tR)Q|!DzV8YB`?!2V@qv)hk|6V=yZs?j z@m5#{IgvXa(d9##jRc^>Ljvs4>~@Bj-f>0-b_F`{YQ3U^7bp1N@yf zrl7fDmd**5QI{Lfic_tN&6(PUZN3mg!2^_msqM2_Iz=%fy7~zM`m||^2f`iDgqPzn zFzTl`3f>>+7xx zvS_p(q-oznjI+kHl2*&NWWjWN$V#LKpIha73!d%>lV~7D+JA^%z+I zb?&}lklKqCk&feC8V&RxxHD>$NC|fgjg}8&vBlak>qT~J;t!aNX9Y* zM#TDCo%pN85dV6$(N`4B{#Vp>`BJi5O~T@ z*1byfNN zqS-t@WKN}g+%w61&{jD;xFLPSI{<^v<^ds}#CLlACZp>`%in(Fv=TkpgQ%=>fNw5L z6SC%R^GTl3Rl8>@UI)&0pO~Kf*3(9QXZ-?@uaz>RgNC}bifi&ykPpEL$1m}~$I~*i z3`%}#8RL()qYwZ95X1G-m{VLy&oT1ukc9%e<@#$vzn+ZWvg0xt-5gX1Vqw!K{7jAO znZ~WmD5pNetV@||{{9g}X>gVXst3mNr|4JAhl2mAOZxx?yn<8`L~HR+p0g_g|KM!Og3thE5}mku)+gvva_AMFD| zq73~qyQ382fWQvJy}F8ZdKbE5I{!?SWdmse|8Z$TGEzEq_5=fy6oU!EIavCViyqOsiMmXk5Cp*GmpiwtQ(>_L8ggr>!W}y4!KNFw zS(ut-n3qMNR|o`GftGRGQF_|!(@A4vH$;#a?X!)#bvjs~sSqG7{&GHX4WH2|CI*PO}0-P zHL?4UbB{L^L_Y5sVFLh|6iO0j={sSA0DZz=!~Hc^aTxDt5nS?gYbI#u%J&r~%Vvj~ zl&Qoer$Cnqjv9crw$;w0?bxD)i1fg72;^V^s9n_C67xKE03%HcKD=R`Ae6;KKLuRG zg{&{%&xomDKFuF0LZg`D?=QkO!9Y1@$>FFxNV~Sk`Vnp84H3=jCZmUyOs*~lLJ)Qq z>PL*W)evH0-3p>Vl$G35aQA2lcUK&#!TwPOS*_a<0TMk5d*FfmQz6AtiTrWwltM8m zm0m_rRK2{$Jj%_!#vDO0pjMoV0pq}*_F8ls3XU<*)eeE?08K!$zwM#~qSuEHe;8Y+ z@6rg{Po6el+t{Um*Pb&bl%9j?(uX%iqKxYqnC4(gjOGLBJr9=1_^1z?@am~l98|D_ zSJvxjFV1ipPyMu{%|gJMs*PQu6<#<8RQ2qL`n`s)+feFRHVulgpOcLJ;Q!j`9mjE_ zfQK#F>yp%XEZ#Dwch=XF*T`e}b@+IzW4A=#8*Gt&W?054B$qc!%FWXM>an#(qTiDh z%v6U!R4xwJmHxJDE;Ld{5zH$gWVThz49MALI|ZBfZQrRV)?iLg^^A?^6BiiahOGW# z-~74nWfw)i_1V&;$wK-$-?rI>#vk1bztN z+Av_rahoOQVEWHo>_P9d}qrKQxpS=0@}V?i6Furi+Jgbbi^JT+!_ zAO!B6S}>9(3GjKLcoTEohj3#ezEx1Ge+NZC!?E03ldb!VnMO0>BqN-4GBwUZnwrBW z{-_Do;`bg7OieXubxlc*=A*+^y_xaj&*Zkf;Peexsjq?7%`_SKV_WBFLQQ?ZBrPPp@F zXi5D2=Pjt=5bM3?y{AmA(a-t%dO}z0YT3$ay>fY{3AivadF$5K*f7=-*cC>7wxRXf zx`$3~5oaTc6C)H&x+;X!Hh_QCmC}iQS^K!%Ql0yf3zp*Rit+Q!jnE9{)v;57Cz((Z zCV#TO{uy@W`Y~q;>j)mf+ujh`!O>;XI^nczT29qBF6TI>Q;GzP{dxBYdfccH0#3vB zOU9~x7G`U2S#vC3fBLG-OMaf=V$*d-hg8kX)-*4=cg*J5#FgdyCTPEzvX}rSq8E+- z6ollK+$K{v7)EA8+uT45-1gi z3*8l2PiObEiR-}|NXxKXj`CR~CQD+G0nk?gz5Y?(LCt7%R?qpiJr-N>z`7|Ffd z>uLBSR06UYQC04*JSvA)NyOWuQ zI8bG&%`WiPlcBDMoGEc-0!Z$$c`Ba%k33#Dl|5a>-8a|NIaXN+1TmP6>`dPe5hKXmLdfh`joWPWmW zTH^IOk{w6VR^)^cxF!KjO&+2(mp~Jd1SG7z3gMLcm;RvRYPMCZuH%B~*%cevQWY=R zaa%_c39uT7BJ?o721Ki9i~JlfCytArPV|XZ9V25h z;xUZuj2`BCrLx%NpZu&PqC_Xkgq7n);e|h$&Y1+Hy_+ljRwBFhWpnax6ElH5XvosSE&Fjk(cNw(M!o5BwoFR&cz(E^SPM+J4=4C38f zDq2<43p^aiHStbEZuDOTbD5c_a!$8lc6O=lZh6>R)4mwkYJJd#F`s@v08`C^i+BsuYVPfq#J&sh%>s^`mvg0{z( zrK+nwKt+WLgqaKHsj)tiq3LU%K78=WmSmIP1g_vhTWpO{kY}4i-D_K`$Y8d~C9};Y zaDEd-wA32@P~~tJeXjk4YZ+Lup&G-jVV_zs1@P(0Q}_b9k`qbYbF%uC|4NH&LcOnm zmDiB08;P)!LT)iLpcx*PBB9a&q0v~@GPm^iNtPbdQlqKhZ<7-yLpODS`7!%21A=kb zK2Xmwyok@GA|_H=cdGFry$v$H89A+H8ye6C4~NQjbcvAK%1Zj$O!{19F%!E;zn*$2 zpH4R)_wc_{Qi0WnVjV%eUl*dMit=OP);0AI**iU5XvJLbt)#gtPKN0`9K-P;TTpSs zPz$)VB%8){PgVl@aADifj@%v$aaru3S$mufs=VlqV2vVdiM%lp)ar|Z!iw@pexXiL z9Tb!O-1u%B>i(R+zV|!pt9OWc_v_g|lA~ux@`is44wzRvI5EDoUkd~-twT{}x6?xnc|c zFz0E@P>0iyq_JW4qVcHJt5RkpikAVb6Eh48(6zhWizDda+0 z)K_fRNz&Vw$_9!cZd6*B1rRi3aN0udr)?QB)Q@_jhG!a}?-W=NA4V5QkQtt>zLB4< zg;VS*Dfh_ieRt$w@HQBL1%VKLPVF86o!`(}4$SX5kZJ!;8&9iLwOo!wl3iWCCBHW* zZV)ZjB}J zzYRj`%U98d`o9ki-t872yIul|nbNvR)+SxKBKnQx+>xxIkmWX#*_QVXD0;aLR*v^o zv^g=Gq=xrus1r_~a*^Nzd=V%>=4lr1)x%q&(; z+*CPiCQK!e$C!tYB?LSYc)d^sk&eyvR{ThTer1MqaZW{`1p5R_k)5##8_ zvw{ieLJ-+U!1?jk@D%E>`EiB#Mhj#?ex`zUYFI?{{2=_pjRf?1vSLgOr~yPl{?lP| z01#f{WNX-#Qw$rrJhGCOD^Uq=9xrNg8qDUtDBOCCdu& zXKdOd7Gmi|QZA#3+!PtMvKTO@rt^^f$^;bQWaQz9in5oIuYmgcV&gWqz5G)ue$mCZ zbtk3Id9mHqn+f9Gn}LbhjgoG%Ac|-j_E`+%*7T=Pgyr3h=N4G1*+@rku|+(6JDdUz zDYcN*YkJ1q*qG{&{YRG8z{EUSjy=~-$$CjUf8 zfd6Ix|7`yc@ZbJ7BCvE!%uKBGCT#!DiNOBf;lHsm{$Jt0u`o0KFa6j59qhmBzv7Pl zr~d1I5UFqt{-^q{5?CQR*a1fWC;3-@iT{)QYoA*O4s^iZ{}g`>;``r-zY1{)i<+&m z`SscX}W0RQHzghR;_aMimV0Op&RYykM9n#tjD8*3+9xg9+35?xq<85jBD=XzUrWda4Sj2%T9@!U7QG zS5yKaCUDQ|#*DK6?s$$%YRDp3XDTQtfn^&zje*o#XDb*1={VuBaL}7fyl8XK>+epD z17v4lbhZtx4pW@joeS+klx*gl0RULML0xd)W-SE%=`!Ic@OJi_d=3SR`*^$aRF-s5 zJlbI&)W0hUa(XVocQC}f!v>IF_=uRP@9{jWdH)wlllg63IpH;t6_EiIpoa{f8}dFi z)NGd`EGM%6eJ>~Z*4174c1-m)gzZbfz0jzt@_*dSc$MT+IlD+lxeZq zVD)Zi-Y5X-YDuIiwWR7};X|5J&=`tApN<@=U(ei7FAuZv1m)saHue zt%2KPAf*Y8n3O)C)IcQgh+d9jXJoZ#H_0g%ZtZ(B$@DvJVr1QbO(#ST7KBiUz54RI zt<(49((c)h&i^z0mtcSZRX&VJlK=v+1&9S6(X`l_kG5cMJFuAu3mi|Et{ZB=_SLC5 z02i1{*iSU6t-5~`%1aMh5Nw8_t(!mkp!)G@j>HJ483g#N`V_&_`!)LDpz-J%zvT<3 zch7UXte**b{~Mcpckv@0;iG^qsRS$r`w>nx|pD({-;(mG`orR_Clv=3m@voSD! zYdjuBzLxsFzIDKCm&bTnPAcXEVS1sfgv?;st zUJlRTJIhZJAj7n|)ZLPY6AcWt0>7#{yzllqm+yE!P=KB5*^}2stl|MAYq1zU{!H16 z{NAPZ<>k7}v}dP$CrD@=w>ezKwNdg6mf81HC;Km+&4VF_gr0d@iuwM@Ij?!rE}R%x z!E5Ey>$ZiVUVR+hhNwe@2;5T+_Bjlc*7bNfUva9NHfxTsoM^0vzMcB{-X?=Ai`U>I zJa5%?BO;vzY#Q9^L1c=hvkaA1P18JZo;#M_eSqIAYv(+%>drf z7ROM#dk@CI-(|m^xt|=d-kPcIn4vwEnH?07T#|`wP{6y6IGYTAq?L`tk=K5L1i%QBN15&OoWomK zBdQ1izQ6WmY~P4#31}I{YtwD{T0(sH_WNq<0`*Z|N-zC3jjU%&WX|*IYOu2Ynh& zZzmG7YHO>CnN8q#mB(w*^;Oqi$u(9{h!EBL_xcn6%FL7;FWMmY^k=Hr5b}(7q3bv< z{#`@F>Z-+*7nn1dqseg##qNLTs zi4i+f{<@IJ5r`{?|0)sYAR@qPH)r$r0=I51X+GGls)IYIfMcG5rSvt??KTrq+8+j+Pw_)e@+m0 zGg~X|du{3#DnC3*cK|8nhG8M6S)m8|i^HlFJOv;11V4JI^vFk3^~c7ds9-^%drj!5 z6Uc2qNFpr$;o6FmK&siN*}Dxc+FO^?igZ(+>>vdY)bUF_NozsWwkhUQD6aNsJjyF* zjqe0vq{kK!_;ckW_Q57}0>ot%%OgjJ^nF3QJLQi+qFAU$lg|J`Cc4v^`k+dpt@-UU z*9Oh_>#c@R*}?*rJ0vRD)TtQo*s2~85b_=J67$dW)^fpy2ku=pk-IAQl8|6D>xIpm z^_es0JFs!5w2bhU;~fNCvB{IwZiG6o-S6=ULC8C9E?*Rk``^99f~c^(D4Amix!^*a zZ;>Hq!W6KcP>{VWqL#<#h_ZCPqAb-id%Gq6Z9>xTkP_Ni`^F$rh+ zjc>ge{aP;a%#Q4z9}|i+#A0a9razDyqiyI@ZITtMFaUD{UD)GyV#Ih(f7j)Mq@kZ-gIWV5&ed&Cg$M9f|b8H=MK^3 z$Py8dc$&^fuB~Oy*#s+&>65$Fr|Zw|=)@2t*@O^+8ToD*!AAAXO7LTE#{ekkND2(? zrmD8?SHyGu+S?3OhQ)yZ583DPYnwlqY|WiQG)5y*K7lOE|7ZaPfYDxpWA~|7?Xh~H zZi!QKNoOvLJr2?Cr=$rgVS-Ezs=WWow#115`}t9CJ~Bl-!?GUyg|+7o19kslBpvS#O#P-R$$9M>|Oc}s7(Y3VIN$rf!_9?vaVj3#( zV!x10{Z3OshPYa1em0}lv5?e1RPJ?=&1XW4ByR?0+(8VBiL|ix>;AvdN zdf9nAcHR+gtqg!3XRe>%d2{_J3a7xMiwB)$fLE9&&#sk28R6sLI^HN183?bmPebFw ztuRrqO2+7pf?V*`#cN+UK>!aCLc5u5P@|9L_Fl2mo_HfJgW1v?*UIz)9Np|Dfivn;yzpQq`yfUH2ndGhaq>qURg_u7IAhQHVi4h`bVhv4g-QMGmW zQGxuv&^y=Da(Kn?r6~}x>~RQsB7bNF3TDY^$wD6O(BzR*4*^;_$D4CI`OF;h;^A2xTwcQU zz5V{2)X&cDQqc9-K(gG^NA$g!28{No<}*bfTJ&+HXZ!$UY97O*WH_9xmZUK|jbNDk zAr-RJg4rcqOUo1*`cO6RS-a3rjLPNlNs}1M{kzDzbGa3+fChXg{+2E)5#l?oN*#<6 zOs7p>s@;jD#|VObSa~#x`pAayCis;N~^6^a2kHtV*u&_ov8=foP{oJMgOPq*Xh;Dhky}A;6R@Gz9vFF zkRsW+qBQsN5``|MwMLCV{RDQ#{F2NJd9vWxm6B}lU2U@RQ{#9!<>7Cai(WJHa21ge zTD$f9(_MLL`W4zq?r>o1Z9=027%yY%>7P$l-Lc05l^n@dFZ(@cf~^Hi!9$f?s6A%Z7L;?x2|yvig!?e@06LDwDLe&S1q zW0c@1EvxyJ=BETlmf(=S+N7ca?k9R?amBzrUg1B8!rkx;U+FGj9Z9b?*PMAgwCE^9 z`hj1T{rL=#@3ub+)=rL>u-*!+&Vm%p`$JYXg*T9_+P-f4vKTXH3NXCNvo$R)lLsMJXEPSR(^;y);aI*y13PPpXIsXHlPQG=2;)s#cRE(o^VjUhK~{nA?-fE-(_1e~?6#2hpUUo8NxnlabZ7 z`E({nA~M<^D^U)?O!1^~^}L}&qWBo(&{-4o0}m*19B(MC%hJ^~cwN7mgYOkCQ zud0igr6(t`PNUmp(x4oTVE~F<0J1a+Pud5o4-*J4g~3P#vlJ(QO$NBjI-cUuvK3op z*jKT!=CpA-_ng#c`)A380f zVsuWd9IFkcZ)s&JLS(Wr&RS7SE0WEzrq_E#P@t?-wlkURtVjIxjYlMN@+#=0ovzWj z{H#AD`xaz5ll}XDoEc>YEfLxFU|-JVi@H!9Tpmxu?~b6$(i0K;`x$Ik>;;E}lpRu} z8l0cKCHTkkRYv;=J(sOlrLOI<$qf}Er^zUId)rD6ZUDdc?vb2;I+d!aqzgv4<6XlTq6 zh}2N5y5jG_E6#a9GD>Jp8te5<{){Lr(+UQ?Vh?d_ATK!C;m5w|2Q({}dNVZ1P`j5C zp+$Dhu#X+vMNS-5+ROI?`)8|f)|3=<(t~fiiWc2Z-_i(kDXzM^Xx^0L8j3r4*6i$PjZzrgn45u~|m z?SP)5Xat0l)^bW6C|4exq-t@F(buJ?K@JUOnhYO|Ml+ih^kgrzs`@>Gbe5pd|3U7h;Cka6yMKnZt zXXJ?AH)g8yt(Q>ikM-Yx4Li7>^N)z~JDn|Iua8pa`Wj!EfsLlQ-i>nk?Gf0taO-?H z%J?slyav`fTdEgyw;We{Tb|z?Arm#|*kR)KuwC=9QoHB0}^-lNpruFLg6n5@ZU=$S8?I{oMS+Q9{wEk#Q6OAZr@TWO*S@ zp_H7(AoH}RJhT|u8Y@kXmU8cPHCzitPc8yoWrZqLVx{*nKCSj}Xd~44CQ@`H;8#a9bV-E2? zanT$P0DBH68Sw1rQsK{q^2RtZQ)5XPDKi*<_^Ycex=o~kkJdL5*euZfZbXbZ(4VZZ z{K+D%+k22n+lkCvfzIpTj%x;m_bD&gjud0;X<%4R@>)#|uQ7bsUglIM_QN4e2{R8E zU6AbYsdlv=v;nP zN!o4eS+b5mZ*HQs=(JpSi~1!T%O3)H(3VyIS_IAMl@18Hqya|NC49E2`rI*Jk!k9J zxk0#lsMjGJG{%LZMZ@QYb4Al(67b--dxTFw+^3JVwpqgn`#Y8*2FF?Gb=`D@P)thz zbk{~h=vt;(3ktAXO^Qm`o7iIh#~udE_X+=jq2vGiA*jsoMKEua2#{rspF~XD4~!|2 z$`i)*Cv_T%n9SQ+=u_i!jU{1@sO5O@Ihye^u8ZCO{j2u4?FyF#CN#UO1T7rXui}-g zu_)}0#~sG61X7-96Ej_5p|7P7{z*HnQIy-|gvmu^HGNN??eb)IJz4hHSJp@C{m>U1 zJ=Oj`PE~Ncp?4W~PA9W537pT<&8t*X)7M=laQF*L}i{Si&k@(b6dy%2V`4hIx6LIW8D_uQ>kPN$oa68L4$t#u7_j~ehR8D<=_qtqo4REHriSStZ77#e1?)WHxv%u)ZLogM9{o3mnM zW=N$x-RVm*mD&mMyum|>r>K)eSES3WJ>DLc_*sch71C3H6pm(g%%E4fHb+Er`9A48 zfW{Ii!s_ylAx+=SozoZBXR5)vA0%PudgxMYqP7EjQcml6F2aBik`|<{*)Qcb%oSi>z?WjGb42U$5|kMPKDv|?Gz%;2iwR1<^d8R z2ad3W150dv0^HHrXU-v>4VXJlY$m_O@-t%cv4MD`%j4xNVTpwv<1-WHdTEH*!tU6T zJpOd)&rtS$z(15XS>`#|iFllC|4GHAhE=;xEoP#D)yuq@W?+Hq>ZgNekmzv`4I0S= ztLy(_(@?1fTWfMBtm_KKOrGE@gc*u`A3z(W7!i}_phP(3Ix z(ZBDiA!Ct&4FI3dG9GgG7wJ+{wRAPqXbr>jJ37jK=y4&mdV^$k`9&0%{%vLDB+zZ2 zzaWF)FWYMwIp3cSz;yptH#iQ*C$?F8st4jfnIbkmP=>Ju2Sz!hORMP7>v63jq-k#K zTFF0dl;B_>LKe-&={NO}@C7_+HZ=%9eA;h%M_Aqy0zyVb_~}vs zd5DclmJK3lYV+a{uB=Z5oPAD6Q6qGj)MHy4e?dY0Cj{6Q+^kb(0Ro)S2^^Dl$EsM- zsn#rSR;ysVm;4+?#Q;L(j$y>uj?h#7AgSl@ktpPgdMAijiYWq(LLZ%jEa)jD_92M5 z+btpdt(zvT_{@HX=OT!qxV#ENAcA|l82MnL2`ud)Kd!)k7K>uQMs zgRh2}6#jmbkXfj^fH=&JE(4!-a^Cyy6NW-*}_pDRA+27PlO8IM(>L%_rHq?`G!may)y^0cnFYG($ijUcE;13g zgu6n&tbbWS@7hgHm`4UT)cLd%^;MVpT9f%@)!F}7HDH< zJH>D!XcrJ~)QYVcs@VxT+g1u6fv9R{BU>*g2^%Zw-OU<(T^kk5ga6HUUIxLQzM;G` z*%aBZ&zz4=FBSwy)#>{)NjcD+4j&uN{D(Ei$fpfQ{Mmq$NL^`ZBen{3#jr-{x$)$= zAHYgH#3DkOFeFU9o~$w~KumZ!cnm1BT@4F0mqv2b0#*xCW&z~{mAt75{Bye+S40RI zDqxlHs`raac9wz=mN90NhS*2xsxcV-d^p2;jh0eEnRFYaRDx(h`cRa`*)pUaY6L^o z-{&31RkZ@A@_IH!3j-b+DkX^myDb+Cm84t(?IKm0W9JDf>7s2x`DHL>WC~WQL*x0f z2@Wfd1REBkOkh^p2xF4&v4p9XZ42VcLoB9(KQ?Mb>cFN2ij*&iXwLj@axM+)*r99M z^2`;g4`-O}V+|MnkP!?1uCk%Ox&FV&^RMJPwq4Dpr)_w{&r|}Z+EBOEPdE~{%nOd> z+oxVlS&Y|QlTKOUD*nd1#Y^W&YQ1ZG>3?yos~5yqB-rs#5KYDtXYDG~u_s1p8mzebIkIib zgH5Nrz)Fr9k?Du|8lHwCy&`&27@YM{pBoY_(uLV6BgSt1tgdFXIan4irWSx3yT`_9 zhSRRdEL~P)zML@3%XNx~WQ7H~qSENVv?H1&Fc9<|h1B z+B-NC>YU`#f0sfc$zh?il{0~QWYXe&=$Nz2e2a7&4 zGmEjoeTSeeRzhKrgWz?DszsNB{u9;Q!SH{}m0L5B_{ZYkj+azJGoI<9{WI zFk8&hRNwJGd|m(QF#oMU0AQF}x&Ir3U}FFPXh8q~1Yp+K)9hx(`bGc%xc{+zmj5U) z0lMO5|D6AP|JnfH{wqX(K0(*btexEcRg3=Z-@kT%Lpx*mdRDfE|Jvbg{cCgd9|d9; zUeQ|L?cev}_x)FY@c{w=+W#Xb>fhqOc7Qbh`liR#Yd~UW>-ew#fB$3Okp83HuQh;LO|8?Mi{=E$%G_d;1Y%z4;;~*BPBXB7=}5AK1bF-zf5in=RMOl;gNqm$R?6 z)mhF$oC`{sGF(t^U8Zkb_`^8^oa5UddB{4jy+OYTrGu3F&37_vxF;dY``vfq3V1yd z8^nSGGk4N&o_1|C-afqiNi(gEN_JHrMtKKl1t&cvq@h=kR)?U)5HEu8C&-PJ9U2 zUWk8}f%D;AXgYjsovSe znB&Wk-#A=m#(kc*iEUBj2mcl%^}VmjxKzJ$7Cl3|oqnl;0~MK%tv`a~XopX%mLB4WvDn8mqMRNjxl zheS%`lt+r;(U~zfyPVVyQ;0#RRgHdVG0jHuW);B&EVdZNfsZcMUO^@wE6QgGJh!*Z zfRQ05nF9r7^BC>PRr4l5VTwp%wsakyh-rXkdkfNIT%!S@g@o>uP$Z$Su|S})q>#FA zZ|M}(g;7VXgIHbZ*}Mjvn$dXeF%t_KWJJ_3 z&rfIBIL}L@={WD-r-$rLQk1~(eq!vy7lb*qi+w-BFijvY5l_^QqGIp9uoJEzjB1Dr zOAB(JTAeTuaE9ODHRS$^cRU?q_jSuIfD6#b&Q=GMtM>?MyT$%ZR&1Xm>-TO$-gTAe#~CkO9v696}Pq&dljn^s0M8SBdvMd%6T_YOe{4onWLv zlGB0z7U}XbNf^Tp;CZ%!v;Ny3Lp?n`AOjP8RKSENy^P>|K(R?W2moQXJ_Yp!z`1QStAlD`tG4EPnwmlq5cD-r!A>>= zP*-80dd&}0w~d4&EWpe5gtU<+t6^0Z*LQRVHBGD9>LMw4?y9yb0Xe#xnvlj#Jihu2 z);Zp0dEUI^b(-E3qgP}XnEi2#C?Kal7MCt4kwbn+{$zk4=QeLAEn&7|*b(Rv?zw_w zO8*Kofb3_Q{2K-Dc##pwuH669_?>8ncVpPN#);l$PbjQE!7pFX-Nzmjkw+FNq@VEE z>d#`=ssz}Yr6Pvh1ftWE`ARMj;`_J$5%AQ}P8XBKhe6_)JMPs=XS8wTbgr5-?t#WB zjLGp;`)ClU2x(h_!yZf_pic=RN8;AMy^CDpue=8O1|OyIzo+h!R9~?iX%Ut2Muj5R zIMSVs-#fuK?1yU3u z0(tQL0{8eMA4CM^JKK#X-X@l!NO0P>e($YYyVx}~*H4XVwcIhkRT_$jc?!pwoPBmK zUR9g98yIZ&PX4?fDW(zrVKN9|ufh-Kw`KVqhB1Jv7xjb5*}51YY4_#pL$3z1?qcp` zr>`MdR5B$=RrRhjSuOr?67AyNO-s<|dcSX9l(DTAa)_yq}ew0gKM)CkVr|gvicD3{H)$ z3tp5G8u-qBZIMqc0?k8P`g~wy8CqZF!IToVu(z`vdl&`EZ!jJSv{y6 z{i<;{`b#AHR>7FU+m?6y<8N@8^^H^BEM5fJS*kWV&QsKxAovU_x<$?MhKl>M( z#@isCm}=@`!PGg}ole#}r@2bRba*XEq3cI#GzxqbO=ag}4-NX!ON+L$(uwa!1 zG7_g`1Ec)>C_#TidJ!fh%_@Fb3mHj~tCS4P8po}w{Jh@ZymR`2&szR?s~L`o zg{RKN##p|frlg0naoEgie9DXkJ>#A+#zNb`IigUdw)WUcj`<@{3_4+w9BBygv=g7f zELD{Ygx3_D4&=|yl?#yV)F$AVTtd-pPYyh9Jw4&*vb$ajv*$8!Dy~*`X2a2yDyPwz zLQpk60r@UGq7@YjhQy!|9*4(-l=%pRdw&PxHY4t~f=2Uip!2n+kB7b@PxgZ5f@*=d zlk>9^GI1H9ARhxEAHNIQdS5wjGvhX@1@x`y3i zYHK1MJcYSzge8&aE?KTV!&H@9AbavsM`xpr?!pjcVo`^tB@6d*lxkdh2&Se-;eK=5 z!%-C!$|=9{9>!pvE;G|n7H_4JP3Q@Z0Eug*(uIr7UGS=0*6GT8VIm@0xNW(=^9#Pq6mmjrx(; zO)*`qzc1h)sgi)vyFn^7Dwn|H=<+_raiyoL7`)l0rmP-`o!xa$QTKzUUgbfDg_pat z>-E-X1-NE!`p0IRc5YW%C%Ldw4Op%2wk~L?U`-{S1hL+JnZfg`MP0A{tdE4P5At-% zIZgi^q&eX1%#0s@@2oCi-m#Yj4Ba|Xwg+S60~LG`kc@~!hF{+r^2pk)p|FA$7@V!I z*hA-KSC~Is?~4`WM})OYpwFO@TJ`tKl$4H{*gQvAUs#_?Qi>{r>_b^)y#7O{n5jLz zuLMZ#c_IjH8{raK(-g11+mN%Y5jqjb z5Sqcwa{Wm+xWTvucTTe6ebG2SP`v--5Z$=$Ib&DV8w2&m9H{s->0kCzi9$l6z-kKr z^@#ZKF`9^p#UVT`J+W*uSF#mvo{-vW{IQW=dq?wMesS^cim-&16MG+ z_7mS~w-3qi2MkgrELc>eE~A#rr3h@;F$J@wb2l;-5(R|rl#EEspQz_y`OIVqde!4W zh3y=NsCyr~ZJ$*ba#iaLfQR9$h%7K$M8kF|n=}^Xr_DDiplg^%Xh-0lEq4*>dqfP; z5vuF>Z>neCfkqj7QP;Hl=~v+LH+tf|tBdS#RLjj6DHa$HyNa&sQ=` zXlS(Lk%!*y8Z|HKPxSZa_>~pWxgf*!(fHBA>gw2p-JS_;w+dR~;@hQxEzr``q7oW* zX~_5of?911v3@MA+ZlL?_va@3(b%}kBWkPm(~FB`RdJq&ij3mb*^0la_28dajuz*h zSggG(kHOW9-WIZ`cUAa=Qb737B~3O)ajr(V6TKm>I5^-m`7K%)zlTUiUE@4==k*^S zgtHXE56^WBV#m|@~^me*n+;JOscLi*t1P$ zfEx%_aR8TC%m8SbQ(RJG=~BI{qM=6{>^?#Q#K%0n8J z77lC*8GKc44!~_BrgxvLcB^`K7sC+^B27xrT+ikhoHNGJG0!vFi|c(}r9KB#RZCmf z5+s}^j0#!sJ8DcNwHI@28m;%+i`AoF;(`oh2GHjQKy9QkCPhi+K@((lNZR83ddQh^nfZTsIE&&5+G~d1b|r2{94Ml-PoNh0$(H84dF>C(%FfNk6t%o; zUVm33AFR?9cKX~6eSIj$WRc;aAcb^^k?@giQ&zw`1OpY^HNYPuzR|=1a7z!y4W#xM z_WA-2$B~W?*Y^HJ8%LtcB>jeV6%^v;Nf?d=Hy1ASx;Z!%xZ!OAdGA-2wwT9oi1LD6 zMR1ByVk`}Vh_2IMfr?zWd_(-@dI$kX1WcOzCg^NWvp-(WmMG5us@OFnX1I@_S7*&RTr3dO!ADX8z zBMHO0v>LGJ*JG^E9`So)SBYzZ^wkxsYh`P`dY|%S9Q#@uG0{wNTs9{6A?+%y`}5TW zK>j|)s~289fQ_7t%i7F76nOshD1SNO%A!(JEjz`8Iy9kZ(D0c#g+iKwq_1FYqAAQV>*ZX^X5I9}#Pqu`~l(1YpxS*20@5(ixjkH*_0Cu3(`4lZmVc>_CR)Qh-r#iPh>PR&hGCrL+9L$CI3& zZqrC#{-_d-7$WQ$VcW7l#^`jq04}~GT0Vnq)KS2xpIe*r`y|$*;|kYK=iXF;QcKwV z!=#NQWsiC*xy3w!-Iun#a(WBHAW^*Uc}uB@c?#?eIrY}l)mc5TS9I&W% z&_ylFjHn|8sd(mQjx>aL0=s+D#pH{i7Qx4LC@+Rut^8%FG&+YrY5u4tz`cu8rpVsj zy}>LF6v-cs6MUg##=RL{rq2J8IZm!_e^r z(TjT2aQAuSDTwQzjLH{nAngEOK%l=XmIf~J0+ZK|Yk$33@`(PDXkeZl4qDu&d#M(w z91e@K1U52>p;C#xqypvtF@kWHEi%8fo(`VWKatG%TiMNE1cYlGKh`5bG~qD9ikCKv zdf4br!(NB_;7wu|0wp^}a#-%fl~`o3_{=~{X!)Ednaa~mLTUNui>H|cS{N*&LLsp- zil4uvA_;kobiij}xb}*IcK3P0!2Fi7b8^C^w?RH*dD46C#e^TXnicaB&E7qWDN;et zh9@z<{)!sl=$_tp=CA;HGU_|qS|$-}&%=F~^FgEYWwt3UpHDk{Sss^bToE->$%=9X zbPwJ9wz6}QSzjX{4bCLvIO71P)+W(}wqm}#!23(QgNAEDZguilDQ?JB3Q?CJIwrJz zc<&P}KBjm1Ec^Q3&sCkO@x`_IxY&Z2N)t7YvL*R!iD5RJ;24&sFu`PKBy_}&qs?tc zr$CV@(g8{eBNR%dT;j)X9jmJZ}iY@>Im=+N8|!Rs{9Z16N%uS z{a=wqP4qG}X<}7#lD|}R3CxjKmn3dRNA7lCRCNN{AU-5!euZD3D0nB&v%a5g&^%va zPLkg1Cp4XgH~TTur>2Pn!HYRbg-IkR>!{pZl-;*(uRD>9@w6?=nAPtV$Y}YokB^PW zvr{t{mUPS4wz1PnlhhCRYm|3TR2qzgwY4g&mu}I7v}hk6rfsO#Fg$ct5bh3Afx%?7`Z^ml;xI3aFNfeG@SW^cX(&Iuc0~`Nt{hZ}cpT z1d;{_CcvN2{7!E#L_Y?` z7^dK9JEFgjCz3ty#wkbF{>E&C*bbhijkY^uL|=afq>7^)dNvrq!Fk1OM-C)wq|=NW zu;=#n)H??jZv^}Rjb<5m9x`bHk7|at?t}Za%BB1!M&jcSH4-TIkjnXfL;TvCoAnI-cQ@ zr08bGVa{_`Srht*Gck1$>oWN|C0XEfPr%T(@-?f|e*peqeQ_WhK~4l#lr|%SBG1fM z*2&%hbd?tX-P7b8;QAjZ=M|CwBXuFW33J$O}T_R_N=3LXlU>1W&N z)XYb9#T!1vL%XCE&iHvS`Aipe7$=UJgkH30y6v3}e-@1&aYi1j z3`2{I^pIO-*O(D6`N9+W&iAD~Bbf1Pgrj~}%$iTQv=1rony-9=!GUBh1u7dU`0ao- zixZyfd)Dq|9LBo5WKBl4t;lRCe_P%wDjO@x!_U^rL673$V(_$-nORvEJ+Ydc-WK_J zuA-*=`*+f1B?kjFW!#h??HW+y=QksGZu2*pDyUr%;|qowhf_C!Ldt=e!B5t&A-9}c zHbzDuJMh%orLc+<4o@erhcrAjKxa?x2q0pSP5~BSDwon7;s9Eq@=sO;h+QuZOQG(V zc)6>-)pWwr)bnCw>(T+gk*q|dvh!e;4Q(}PU1xc+k{Vsd+1n~}NBOA7nQFsaFzcpk|PDx!V_-KF4{8J|@V*&SlJ zok9_x0}_wmOm|>}7&G;?{^k9^AoBF*f_j||NU~V5AFFQa+}rA@5N?2_c51duYcL7V z<%XJSV>=VcL<)Kdg_@>LGm9=pikYIB&YxxB5YphFv%h~61-`zQ_v;~lGV0#i;GjC6 zK57QEyshe_%B5XfuwbrdoT?e<$W&}$6bJ6@)xt)0bptg53ci>m(ieDhCKc2RdG`~W zu$!{@Yw!!t=2`Y#S_ff_m3P4J2r;rNQkfSyN4ExmOrK-9d>( z`1wGvpaOwhL@WlK6G=nZQI(UcD8@G!b{BlRsBydH&~0HA*a`}q2@*-|Ek$v6qGsvf z4B;vehc>{uO}gNC2e-hvmjz^D=dw;bErN2i&fH_%fjlgNaS5Y11{as?xq(g_rwHd1 zX`hVtrQe8l8Kuw6{Vrz5xj<2KzOYE6?M_06w_K^*{E{mVeOy(<8m~@|7+{SrM`ob( zx19D~>3s*d_swglvy6f9{>68oPiN+G##)0Fb<8~Pt@o!;Hxl1m@R~Na9o`+U-{)uo z9FgN9ZJ|lM=3e&C(fU3GPTb8r-xPnrio3Q*{@a`@9M>}d7Q}y>{v5hP zp!tvY{UspV-^?FLuzN6+e{CWEMeqNc{l|R4zxmMF_fcRX=%3ktL;jjj4g>`m2q5DK z?C?L<8{FuN>H7fzKtBQ?!5|9*zCCr^wptUyth+?7w^(Ujwy#_5G-O&-5aiZf zZ$2}#^%6tdF=h3cVhC_e$J4eaa2qQ?vCCrzpMz|z=FS&or)d_5W0D0sLmoWCWGJzL z6$6oc;CvF8b=dZ;Gd0`oo{@x{;br0UX~yVRdCOJc*!}X{Y4-MOvIis>zeVD4y>;?Q zVPNf(^WP~~zWwd)suU^t2+?|eagg$o>+Aa2A$TYTQ(tg!U4@Z#9(x0AvA~seOC*rJ zSF+u!>>A)~htr3VE3G4SyimeAqq`bu_0$pTXodduj0`i1N?v^<$n07lP5lHFa&^r< za&@&8hlGSA zhh&8ef~<$Ug<^tohsuY#fkuZGgjR=kgHD4UfL@0IhmnTSg>i)mg-L@chv|TsggO0# z{D=Qfppps9{+peA@7UT zDz20-5mEersBF(PL%gKvD@!8$f;)w>NOAt&QB2%6f=vHVx3GehU&llJmmgWQGH;gw zNy9#2L|!?`e!#&bI%72=QNAdRj8s&@$kk>+ebsSz_M4q%cMNK~x zxEg2vK9+6evoTfnIjgLk$Nb{%H_VKrfbr9JhmE+^*{B00=Q7F(m?mP03ge6kqJJ3H3Lix>1s_YRDeh&g7u|gM(vr@tI<(7 z<&5y=V+8uyU^`L_{&4tOzZ-snv*%mUuG;M$-*NS0_Fk-^^Q+qb_skCez5D zZZs?Z7And`#TmVvzFYsa$6|Bvl0XHLn@9oHlNG`n&Xnb?uw~OkX&F*!Ay-mpx7;t@ zes4;do*V|esg-tWi~Bl*K;6X}6TPd0`7zIfiS zZ+q*4&iO|~2)ppg`w_onf5;HSYqC@*s_Ro|DQ9+n=L0&m0Rxon2lkyP1n9doBi;&r zvey^+_*y{m+<&GCk5Sr_BRxL;POn?S<(KkNaAm8iJgf@BgNO1xAQ!QX_jUMP{?1<7 zI4VC;Ns2mV68yY|y=w#A8YL>3rT4f)Mu{Etd~eKne#)B67RTfBhXuJDl$A8{uGPkw z6D^XRxav^e-rv7klwAM50YKEm6b=^`C#f#LA{S^gX=xuPak$c8roO?wsd)k9g7EKb z1?Y`AdWLtVqD5#GgSsE)UrkM@oZ6R8%uMFRiHE{VD$CTv)|)N2)NoWf$fxYAR6#n| zF=^HNL&iNj8~aNA{(@l7a$aL9#fu01K+*N}Uluz^0zZ8vGNbUtRB2DiD-|9S zMC|pxu7X(M6C&eL-Jt=p9`kp~r}RD_q`py)(na7oH)<5Qvaa+10!R)D%JzVxGc0Vx z3{QHE1en*ize{IVq;ROn4j{d*s*2FXnBxL;ooF5`8{@CJO2V;IxGS9VpPT_b${=eL z1e;OSQIPcY;4MJgv&jSu#f$XRWRVV@G0U7AZ*`0|n5kiCUc<=!%eM%rVEbyO5mCZ615d=(P*ECr1Of0Z+f5MU zuE``g1Oo*QAWKAv`OSBypic`2z$W9(b?(NC>#PUK3+{ID@%jo5ixFaoJj!>5Ik0c1 zXt(m|Q!k?Ct7(&)1>%evQnn8-JRf~+1EBiS=+h`7@AXSEdf$>U2`ZIvx?G+?45x-P z1^M_(qTBr`@l@gY_6MX-=0l=k$*?3H)(*`D2Z{PUHDJ6}k+E`wO#fq&?>cDF-1NIF zxu;vf(rN2uRK#-2GI#lY0cve$WiGJvdZAW5mawJZyr712)d4tUqzRT|4~tqu_E0m& zVd-!63fHsF>qXs$%x6{Uuw~-+dVmLw!E;42Wdk@6nB9#`M@6Hx`<1$6DfR3i3wz9gsj>?4Y z{hOUHD<kp9T(7gYg^ zH*d7cChq<6`LZJxw6nO8Ec+VQ>Cjdi{6bz#H6)E=Mbq2;R&VwZnp%@8!HZ?xb_)fnf$ncSwX^1 z87ZK?R2|gS?&0qJXswz$8*(S|%A6!Lh-!2paWfs7acxb%swX)Rs>Us5z=hY^`FCTOXR1s5Gw~6|RKh*qg>6QB?xaL8A~`EB>`JC{xE2l3pz;bP;VibDV8bs83c*w8}v)A za6Sjyc<7VEHXLh%j6<71SyWb6z^aSJF_UJx=e-7PIRW0I_QkPCk}3z5sHgu8gJ8J8 zE|<(^#14V*QnUfk6SV}=2gAluVz&%c0Ok^?l~x7${(g}x2N|%j#h;2eB34VhmW|6H zM!`y6-Ki^y%3zw(mqU2+TlJr__WMpcL7!aN*r6FPM{>v*r7)#5i+9VMQ~}g;M}gL3a7VG9s*|GKFYThWI&mo`6i|*GkEeB)*m-#;u%B z)jS{sKfjCeFY{G~1L`^}$E){ub*{MB zk=Dd;2U8T-?x_KtQ)%uInp1bv)p-RrqtqOKGhiU9?Nrf>Eb6)Ki27YP9p}mbm_>I0?LEsZ=jUEuLUWuslttS^deHix$;CGC0+Lvu{X~h(38CQ+AR~$o0`7ZY zM7<4pk&+gOH39*zN>%e1ph?P-jIQ?9Rr)@nqbWNeQhdnt%`d>0ZM4QaPegj+~5WP>M1uA zo;1OW(`a_!FU9j>%qUEl<~n(m(qE$Z05nF3+=EoJ}Uf(S~5G zXOcZxZiY(%d%SNI8$sl6rnT{C$qN#i3t;tNIj&5gj?07FW_-bHK3mizIb-%U92Z@u z#3RruuiH6IT!}wOp6-dYX+q=V+hShsL+6tT!)eG2t;(ilxwMLG>QGjhp z{Ve&(Scm)z2Zb&wROG7lZR;XP*ZZ2w+*@-d*T8|8Z|>x{sUbwQ$OcJ}}uK9S=R z6it#7U#D%O*V2A>PX6|*bs$pXA!pKx)5 zSxbU%9cqWFU$XD}-)Rp1%;KH^!5}!}57jp}^mDWD->{_VE9CWQcg&bQpSUgEId7GY z7i}@uD-QVkBl9>X#}DRPTMzbcGJZV+o{mYV_qs^BQT4rW@vfPh4^ZF;u=lTe{8N2c z`Z0LXucjF3wyrZTZJkX+C2Zy10_| zzZCqN*&d7)P9QL-5%ilZoL{Bi5e*PQF`I+ag2N581gt0J>UKoJBFR0+%>1#yX#vyd zbCU?%sS6IPJ+swpiA#FhxW0osJE;kPybyziP8V1?{6hnoiZf9YR{D znn1PEz_3IyU>;MYa=jAG>R=vGB8nE3bTAoR|>za_itn>Co{MHKnLR956i`pjX!5k_|`QS4|&2xGbA!#7ucA1@C z+1I4r{ec^bl1}b~--;i*G-!nS=?WkIGky31l!S;>j$==zV4*U}u26S9Y)%6a%bQhm z?GeKd-oRFwc2`=^-*F}UA@g(tca3sK0sx!(5nG|UwwF_InBe;b_%UdPw>O{F2>HT_?6x^>Y_A9 z$WiBfdi9mpHq!|4qhw6NW-1K=&Hiz&-`qP|&bVljbIEl?lE>+RtgUQj>^;SaFf0QOPC zNtPK;6#c)aioZmdi zvXaP5RAM|wB~DL4seBMVfkCEl{k;_ zKD*~ltzJL2KX@=UYH4!txFg3wp-@5k`AcRL(gZzK=RBCDO6heqp9c{`-Aqq-{-d2w zj_lM~>S#&XlYdZ8?F3C#wArYmiV==Z?uZb7eft9((lIMUmy337e>4yEF(_Pl(>B{! z3b;ykmQSx&JxwtCaeZ3a$%4=zVxIPlC8veBpJ zorFlj)*h*Dq~*(P6B7vixhE2Ex=#PpuX__mPR4+_lt;8W=Kgxp(qyhrs?J7L+aZrG zLn@G3c*9n%+PWBMVL~IJKKqia8cON!r1)#hm)xj3D#ynIK1uw}h>g7BMlR|}w^PuL z&9vtbWn!gqvlQudz$S`XkVV(9)=?t(GP%B zKqN3?lz zyH1{T;`H$F@I7tl5X7k!NF08z`(Qk?viO-)8ZCy!OE=n7Rgd*e?M;2UQboe;A;wS- z+w%zVsloXwLQ=IB?)9k3`**%-_fKY2?$&Z^=WWpa+nN!i`OC)`i6M09b;}TtxW9TB z(k>0%N-A6S_f5?->5S3k%?gsfChu=K-Lg)2=3e&Mgf!ejhVXi8qs<%Cc|>e0$WGU=qIc`At}T}wCf%lOWh$9}6UfyjC=A?L zFwtvtva)#L&)p_{Eq*uq@Mt&3=ZF^6`kaj~Y$T5J!-KqKVxBD&BIn+DdN!_dE@Q`W zF?i~outl3Hu5lKsQ24dfEpCB zvYS8>=e>}AI6?qq6tJJ+Z4*k~H26gZ_G~*;j)K#E?r%p`U;n_#e3*ohK_M2-ao8&gJ8Ah^1 zH@ID{S(vi`CGE(4AnFF!h%BN$rzX)$%YGY_z1^47?hr=P1@6RBDi?GVd>WhQY3SYs-w$!pbHl}kOBZe zdOJr)k}u%JN5~VvCk8x)f8j<3BQjS9Hs%>3eGL)Wh<-z`o+ z8$#~5^;M>FYW!f7)P)ZK`VbarxCiC#I3YuJ(55Fb2TmFeXm7Ch;RV{&gNatrBaS$$#M7rX{vyR1|-2YgZZ6;RZDT)L1l z{@4)Z2macn4E>3+5(MtEtGVXaCbfTQ?!8w~eVG3q0#n}b5!bX^cbDECJ1P_#9ne372$&mCz~olcOj8u{`g=QBEUbt-PE`ccZXa#7iWTl)7N?@yiONyp>ecK)8hMssybI3^Va zrX*gV09W0grW)6(E@&`53;Wj#!jCOj$m6gDd`=5*rA*4^{i^Adoh<>y)Y6U^im87+ z{c0z|iw^s9Fwn0nY%9}xu6q>8U8rzk=B<`lJ>RF5dB<)9_pp^A+Y$4_H1LPmw}wJg z7q&l%&AHtXV3oK3+BC{v28k+LE#s&+L{dSU7%7a3L4&MFH zV?|H&kPOn9F%tL7;?RywRmwtvAkT_9tbJh$z)+`LFRRg~ zsF#-95;M+T#1wJmgZ&SZnKOK0gM&Q*>aJT~6`b0(mKZw^O&?w4?Iak*fnk^*rq883 zJ@PED(XwGs@Fmcbg4R$2;D(YLE}#6!u~SE?MKQiLB>`K5kRsN?Ov5fJ(!97AU}I!^ ztP5AV%^^UT&CW=OibH&n!nsp#Ke4HgykQNDeedQR)x)zN>eGCNup1aro_ z0K5W_MJ?|S?7F!oB{AJTLyikIlgX7l(1gXbk${%r^U+}V(Sr}?(NQShCj2Lit!cHA z3%->n)V;vk?B^CQhh5!?%_n;l!qC;BX)Vz`( zJLRZai-t6+B^+y_c)vY-r$&{d02Dk9(U5}rZVmdhkq8-$v}Hypxkdk>dQ~2LtCi#u zbwhgM){J4!b32u9fikxPgDevJgE}tv-_Hjnq4PtXz~iB**=myL8o^)^PtYDiQ zLRQ!PCU8uyzq%uEpSBOx&^v^=9Z7aGg+w!zqW4iBKsU;+2k%pVyw({=Tq5)ZcDK9o zwAKaT1OQFD)uBNNXKVUZaZix9{P&VFJTdu zO>S5!5Z0uv2XZX%U#6ypQ`zZiNA0)_Ua16pp!jmOdHh%kR^73EF(Ic9*_QI&H%@BL z2M2u~sHT!v_vzSCB?C~P?TrDFGhavE8QeV8jp8$FNNJ}DF~^oM7vt*7)fL3laZN`d zQY=5}KH2mr-Emt|S1oKx8W26fxu;L6$^``JPR%N)h(974Ql-J zDyfryCrc6Hdl3NipeQba0M3KU;rQMp%$2*Kh`RYbEmKURPeTb0k-^ZUlq)lzhsnKA>BZI%D9#q<@P8>`}VmZj~-^0S&$B2 zdmu-mfvvc1u-LR(zi{oI++1JO)G(B=meba9YV8!06YUxQs?CM zB#EwjAx&U6XQqh>7IYIrm{JyQNGXlaH76VeeCn|L8I%R~C>&vudR!8Qa#<RJeEC+BEA_p*-{(484A0Wnf}S0uL8HMo~RN1Ds+77u4r-<}=8zeIRd1-p)I4 z>=|dYVySC9v|e~=z?eeIMM6CUs|z%KC_#@KN|NNI$b@*tMM1~kNz`Mba>c=m24af@ z2PVX}W`?K=TEvK82f+s70??B43P6~?G7f-s*pK7wpxb2j>!e@TZ5EL#^|Ob?=&=;j zqO=T{q|Tdcm@FbBFoa2*2{|pCR_UM_ix>gU|*=Ulr-Hve_*CBNu8Z*{Xwx;;+XcYWiY zVenj#uDxMV)@HHC%{WilOsM8mWTRvqYfRuKc%9%(;I~AzL!A+rD!(MDR8(v&W0vp? zXK)I=K`>mAIhcJDF}*y(6m^~@+_&0-^r|;(!G_(C1})lQ`Qo&(7V@fo-m0t(P-_^( z(ro#i*sJ0cEf^_@8d2X4u0^C{pXd7?TMdUGnl!fPB-`IcGQ=SPRJcUSTTX@~QR_*h ziwjy=m<0G=_WxP?pXGlTx;vO#S(zJBGyV7M4-*q(6FL?;rvGOJfd233|1hw!F#Qkt zA51L&OaJG85Bu->Kg3V}ssF?I|A_vN!oT7MQUXHvU-~~)003b4004hRh;_j={!{-4 zeCl5tn}4O?-u)f!KlOhgxc=28{}nx_)_~>z)c=79`&SqLS9Ekf1)2X-{|92}Uwz}> zc9|?oKy?07{|B-T;D6Bnf$RbRK>OF0&?^mk-{e2_e+c3L{!9M{x=zpKKlOhI#{Sju z0RBV&hXU;7KlOhI&i-xxUt1uiC?uA#|J45>{O1Qm`&Y1+47L{kQ~!tPKemSj@E`g= zSpfO}ssBUtufKr*`UB*~$8R+LpZY(FLvFx@V@NV%OjE{uu!T^ZSbo zI`0k|_W}aXS;af5MtHM)qBSh8!R1L=1nM9Hss0I-Au~INZ%^M z5i_t@bua&XuAfNOtuT(0ZmzK)WH+6^SSRd8u~%v>wjvL zcblIUX4lkdhhD+Ft2t6v(0|ZgX5|>>)@YbPTXTLKv8<3~cSVaUX4jAL4nE*_*{EG> zpyd0eR)~HUD_;(v@?@=A{2|iUhu*A}s7$9HS7noIX_+$BeQ%Hm?)ggML|t1pdnL)v zgkD^|mWsHM4Gd>(89v9;9QxQC94Xyu-??dme1Y0{q^z5bpA{rp>33mC0qQ)kHGLo6 zX}SNxZD(D6_PHHdr__f6a}=goFdk?N~edzZEb7b&P8kbpYPW&!_7$U%leXaMUk*z1J zvA9xgy)ff5bXVp%6XQ&e;P@s;nf+2m_*7K?o}x5qoXffY=4O;u1v#+eXm-1zxqHQI z`-X=gHMZCzf%DJnsB68ECAy4zA)M)9b4pDA{PI+|NNULhj|6e?~*}v!MK&tOn|A@{dw^(etga#{mYw85; zjo%C-%KBFT$pONF9g(iN)H1U?0ZWM@bcRNyy9jqq)hV|7XRLn?WRM_M^SMA(U}q@v zsZz3Dx$;bvL0-1l)V(X;dpXhB7P>N4`1j#VSL}GQQTNUV{?@CDY|k5xtrz~*q$_u@ z6Y%!(-e$zp@6o336BT74ond3Wq)ZqzBCmCyZ5PQ~w__>AS$g;ft4x3o-JLUQ^c|WY z=Gwt$HaeU!9Kt;U-~BYA;1<%8B2ye`8P$_ZlfQ|u;MlQtyn-O$*G4UOqM1@ zu+rbN;|w!E7RM_-!o#%i(`U&hX84iY|;B5ge1?KqaFr!yPd@x}2d4Sy8y=wuQ z<@uJyG%GVLI{%jI9%o?2Ix6RMmCP`eJyo$Z>!c}N>s?qop}-ZNOpdDu*rxHZC7l?B ztiZbHUylVjHDjw=HdzTQU_uiGoo>Vz#x1g@ki|x|Z-8jVG@cBWP%0s~QvQuo#$|{^ z!FQ#nQ0RMw91uO@nh&QpWn5`@o?A{jzggUX;2%pJ0{#)^OMA?k$pP;4H4!SDd#0os z&$v0M3s4ews({7kacC^iaK)l_c!&N05m%2BbK9U9^9LLFiwrR5s0-;2f>=fj$^97u z0tAw0gs3qN0x1349m3Ivkd}@v)zUydd8(=3#)mEE@Lo;zuCt5l;QZZXL=@D_pGH{6 z-;kn}MdC;moDIl|V@(C0Fd`?I1}T+a$Z(c=hTx0-0cZNJ{zzoF9)bU#Sf>vSl61}h zEPEnb&>Z@)j45~n71aSM*j6V>)n2?POElu9v+EkLpN`rLV8vQ<8pirqzt+(Y!d{Zh z;~4q`8`A5ay8evT0}9B)1JrHt%nbkm{0Dam6O1uymqgHv;*3IVeD=pZX3vq6FR+c9 z?Nz)y-w;2Jp;-(e8S9?Jm%QNv2E@0Z3w#>jKl~#9&-^KQK=DZi2mq0{fAgnM>6seJ z8qONq8r~X*8l{ca%gA4T`TnA+=lF|65Bm*AllU0}O@hU7j}86q{_wr~?$OOn@p1D{ z4fNf8F5PavZu>cm@k4|a`n5sQF2IsQFncQis3=q*KoFFG}M76Z6Vj16)gKbfwpEk~S}3vcWI7V}KB+ zWnO^)V}T$-JQM|?SU3WQ1uPn27;MFCDe1PG%q10h9eL4n-c+JC<%x1@pUbf|jO6z9 zaUgqgDqZpSbP9tarXrtwBo-?VT~c^m;gAA6LJ*M-GBhrh=FnJ*$;S((8}c`d_$$#2 z=m+K9P@0K5)-0&aU$cFSpP)BNmo?`mkL%6o2Ok_xTU4I;SX4fX>o2OJ3-a->8-qiU zaG3s@dhFdNTbDFAw+Q%t3*WEsXShQ&M!}GIzhVGFL;s>O3VWkYP6q4j)mXW-`dB;oS$8eim!son zU9Y!0RVtj2t43BpZwnS`wwgsB}gWzutX<$?{eX+3p7s!N6Tv0a(g!-KxIytQ=REu~E~2BK)jCt<*thme10 z>N~N+K~rAxZ+j1Q3r@WUA4ee#_kZ(w-j9j!=EPvsps0eH3%uMKOUWsyi5JB6+m#4? zFX)_5wBIeoBf356Tb;tN&~qkvVI4%~k_SCp*m_falihSa&;HE7Qj-<}>G`H3StI(V zP0JS&xHuXuRd7+Gi8;EwchYh%IqTcn&*wmE!)dQ++sSITI@^q+dJ7AGrzAA&XrK^L z@&t*=sw!oPUga+cg>fj#+k-t8Dy?6rb}A}#=xS@XoHRdEP+aN~X~9!rg5tCRpy|Qe zsU_ZixT)i$_yF>m7m?xoR8(J6P35UiW0_8^twrS)6~3po`=_jSu;#4Z%4jC%wzI~b zv0$6s5HpAzA&OV5XS3hAV}sn-U4qZp$0(l-q_*L` z`i9f$p{VV7bEd)Vcb|#>pnNEP@TlR9>j-!4SHQClGvCo&c9En@#=N#RllPrz80gz;9~Y@ad1;|RA`KcswWV<1%U|ywhCHsA zyUHs|Y2Vla&R!F3B(^Ik9l_<{q2OlHQb$iINs#nkZ0|d-?JEbr2cE%f1(7n+nV}UN zve3RVKPo1j!3R=5yEJNL_kA^YPk8Bwg z;fCJ^X!ZvMZo`u0VobbQbW-$Bu4!SM*k3KJzx-CzZgXdk>`2Ld8j$@8sE?M z;dHcgMntvxJ^FTNmEg^Wn~Dci0Wah` zf-G1t^@Oc9QuKO){CM?)pTo@76f0-P|HAQFM>2cvY_;-pon?2>Q;G0dClC$FUZy3k zr(MW=PHgCGrrcg*O#hB+TZl=Nb9CEU#UDR2kA!~6JRgV&7qm(1g%3$`yp1*Xg=2#4 zbw%ijTH9;452p(t>`{}_LLz45<>(*%`9q>c?a=zfCR3n1toY1 zhk88Y`Y=`S?IHBeGcX#FUYn9c0Ope*=*s5jNw*7*#mDP%1+)p^*0j(LYoky1ur?3J zjh83dg|sr;o|FloQXgNWZX<^vrjVW^MkSJ02zKz)zC}n)MJU9vfu|up^3Zgc^K&1? zYH4gV>bEX*cT4cu%>~?`%Si%yU9V1^=9B50$Q75}0kFc*Yu0qivwHY`PCnAm(Q%5G zZTrA8Ok+Z)pfm$M1fumRSnl4Ix(~WXxNR4hFT&4L%7v0KEdV&Akc@!zVo%wjH|(ud zptXHP=-A|zevub{1zLrL^?Dp-(;6vU$Ryrdwb6C~tsR=U6~EY=fta-+O?E53rRFIf zm@DDYF|i$bJ$rm}vp`Cce2C77E}Bzq?l0sa!xZ5KyPh?<9*wDh5o?khHe>$1-}x;z zBT)+nougS892<$2*khI7{BGOf-HBmA!Fd)dcZ@J^oruW;VGOTEs zV@BRg`cXvMUboZz&GIp&cI}SVmDNqJF^$VgYAQ7VGXDA$DQ3}2UI{eD!XzPM7voEn zR?W&ty@o9LQy9=+u0{U|yw0tJx&vwOUyKs6$Zi8l+;XLNks}e=#PBrhvabF7wzg1A z{Oa!ay-RHra4sYcv7bV1K0M3lwaGfbM%JGB>(N{)uQFE|!2LaTyF4UH891qH<`l>S zuU1#v;$6m=^&C~q^(+Rgn$pep??1D&nVqF9{yT%KePkKGG=+{rnw(}_uwQ#ZYvVW< z>g^zB=}werSLZA%CtIOH5|lS0iNfWAsv)2bTQx*Bwxu{%H2{6{xyiV2Rh&#Naf>y zvFHPOnI_mpsh$(?M{>Z(0vd-epW62=Pyc=%6%iL#gDZ}ru}69lmB>67>8?*2Dn+`^ zPc6O6eY*tBv^ghgM?tUpc(BqihH1k%$mWyRi`Jo+%gQ8^$P<1ELyRE0eDOA&NMT3U z{03FN=5Pg7`UtMtPobGjBQ(Z8h|zD)UXBm`ZMusd5~3Xv0v-~AfmtF(zM(W3$>FD# zSkOR$9+!*(i>1Dbk=j{OTFbVay5W^?e0#rXO2QC8D6bew=g8F6(Q+}_v@+Z|i3t97 z2LzRRjG;&JK13~j=4azCDfpD?MkIc``U^aM461eN+VpHKC&(vn!`i~iDe z4W3g1l6nn-`DXsR5Updn3m`dDRMAv~T+LF9kGB-=z`O5mD&t}qZ&{FSrWGJ$bl?;Y z#AOFeM25a?m(ajX6ld7i(O=HnsLs;AG%%mqM%Rv|rwUq3Tvnwr5mrMM5OB=co?+&0 zfPHN+Gbnkmr4qadz735X%5yK%c)Lf9}@O%UtH!kj6ghpG^DxF^lpYlmqTCcpERG zgb5t07}DzL+wFd=1Ut@=n0z}&o(}=)IwYsh9~EhaW8y|hW{rJfQpC*3knE8mXBPOC z3kt<3QPoxY?}H_6)y+0Q?Da0F0FMAQ>D+)u>2fvZ{&}01ccCCg>@i_9nJ#fitP|5c z(5FrKkM*}#5hg4_D`;{%{w@B4jfu`@1U7cu_e?grtHBl(gt12)k;JG84C*v|)8lJ5+vRyns(G#t9qpZe62IR) z9P1oZQi6`HE7m<-RR?c0;_<$Cm1^$cN5xEqY{IGjz-*Efds(8Ek|QyUm*%Jw#sQvZ zIf2v{ZmBspw!DKGvrT}!Tb`mdFE_w6W7?gb>Z#}Go?{Me+S^Szy1)dUmpg_uGRb}| zmNYtoeQ4=t3X==4GOO~+9K z#LvTLohGQZ)vm_rK?w;f?_#)7+4WyTs$?ot;@aK@0xpVAX4@G-=I7I$84D%-bn!(M zEHjJ!@~!m}gyT?<<7%D-JMHUhiO^&nCl-E*N@9j0^mEvGxK#kovBSuA?1mx#FgvoxXzE7LAbB#Y0!i+!=pqqXf z$e5m~;xA3#@HM>u^tNu)VfOm|sqP2o6REM=>4W?W_uJnaN!tf@H<#ap^DatgkD4{} zGksAu_IYF!ed5EhzEIvUm0Xz6*nzm~*N_$DULSIDnlaHbyI3)>|ZXo3X1IzLO7suUXSK6d0RsC@3!hS6FfjcHgh;7P~*nmu94P%l-g-$nyXx z&H5O#_k2TZ$nb$-cU;X35bie>xRzN8pj5ujPa_+dOs= z^SWfNjShy4gny#dT0^@4NHBuHLEL(c`V=}_ zU%6gZ&(e+9@Sy|zVQiOtsE?R9B@iYBngQ5&>YtHgXc$CoCJ!YXIHVO1@1K4OlTj8F zr98WW!TiX$h*%I@gQRh*XUO)s1cn@_OKGmKxz0XULwaeSTQBdrid*+NBJdQpzv6iE zy^p~Q_vm@gAx|{bD|by`;l%BA8R4#vx4+tfiW@;%O6Vf4#`Qjf4J(1x&_GJ%xWlkTDF zjo)@_eR1Z$xuguXGE3h8dZzmJsj7CK+3951k~aNEfwt@3)c&Y-SdRg1YQkC~KElw3Yi(*x z%!HM`nDNjyG1xrJrDOGE>t%0x-(?t?fQgilsURrm`tdPkB}vFA@QpBG5;!stWJdPB z($QP~2A{;n`kn9>hyeo&?Y2g7x_S;T$Y)=*w6lvWlAd+0x~F4ByGT{sBZP)i*AKdx zw)iB*MqkDR;RRUx%g%N&u0)W3wiW`zDxx@d2I4rB4to~9oO`MmJWz*m?^aY-1PMuK zKzZZCXDQ5gwjA<>P6B1?n?5HnD)9@Li_JMHNFVHcIat8oopM3@1J#r<7jPm7F{nOg zB7D!aHG|lYi_xK3AzC4h>jx;m3|P6n@+2rhG-+hJpJ12(e}$=w(AcCgx3X}53<1Hp z$u>!lTmUQ{3+l^QV8Y@prE$^ApBa-^K=6 zGb$NtvAtOPi(|EvY^#`#XU4{ma$1skt&eM=mEH0PePX3Hb22t`)r7wBa>paXOtTvb5;!wq{_; zo8fcZVxN2KslorsL+y>$6CekD7W2y!CSZWna==ptc7g{Il?5iTpwj26Sdvt?h|W7N z-b-0hR~g2PBu^_+hh8LpupyJa%A6=MzzX(6wi@#-aUfF9A2WxXdl~{jW~_HkFJQvr z)HhvCp8ozIN7b05l=1;BAuR%&5C-??{V?$J@%|0^e&?vVe;CoVmWCayD{CcP1H|`9 z>g#kT)8PlZ)&!|tv2sgGyHj1ea!X0O^X%blRj#0psfnXlp^#i~Ki90rz6G7?!DH3f zJ`4Cd`nn=n%{4a``xWYR|L5lv&>^%f;pPD8E!+uicj`}6jE2WhQ<&4Us2I(+5qf80 z{ke~_mC&aGD>6C2-y4!7h}~eF8g_&pPw3t4Ig=!atfPMSx@1p@GC{zzpZ6F)j72m? zT}151Ii4!ryIkXN3QJiwoR1Dea%06ppKTZs0oCz_#7LsW6`nbqF zGKus=_~V;&#nzTGGe@DRhgFRS)soR^IoKKLIq3v6Hf}9uPseQ5f^$1V6QKyzA?~BgRJyDK zYbjAQubuQQtqTGJyT>cuQ3GrKQ8a9C^r(sT$EYYHNaJe`x=@CY7@9Wh`qU(blRSh` z*<));s}6JkyWu9@*y!D`yVGnI^s~WJjav@=YbYlK{xdSHnR*qoe1mQ8fXE>*`hS-5 z#0%x&2*8WXX4c%SwODU%{_E|ZmnSCuvRGq{+Nh*bP@I*g3rG({&g!6_7FB9JbCpR6mIn`l0 zRr{HqkHVT3QMb8Bs~)2vp|2X2xZBc`KI7LVoe=xgBeu)mAs0jGf#D?Cw&~l_zuUOS zc`^g2WJwZ#L#Z9&Lo6&^6&Fa0a;QWVKhuC+n5ht__VfZGv7O2#j(6O!CQ#h4 z>M+b{zR#$o)ND5zL~j(fjtRSqii)dDvzhOIMI$!gs#2Y+7MUKy0$y0PkGpnTOG>eZ zIa~dQ9|EsxxG#%~e=ir8r=J{ECB}8rJaX0dd(YOi*R4?N+4YTCH@mP` zc9emaHCa}EjtQfcPV>~<jW_;HjX1&=&F-=2fL5;UVMCXSqMH*kb?1Z|5W=qjCEjnpSy++E8gIw<3Y799yCBmg2TfN3O1Al;8>MSy@KOg1m#gvKL+H;-rJHx-BUAOuZ6)AZ|Gz??21D<5^Th1mJ})DP&_3_ip|vHM`rb{Xk(7b_zy- zR*>aPzIGgjt)3P|oq$D$Fqp_Z;a;HPDshrjGn6c@2`ozo@(nRo+)}K6%Zwyh_a7{tQm1Bsh#8qNQDxY%2S^0JpBF=i_wWPm+Klc357~b>)K~+HFV>OftLul|G zpRnz+i!D-##^Phm-`Y3Y8_Aw{APB^ZLw^9S4eoGR>8e$f>ecm-BH(Syhj5c=_n+(3 z_l{&jiP=~HKfZHyD)TnNaX{9rjuK{l3Gn&?;{LwLk9JnBYs`fZNZ0>~H|gDac^+DA z>$#y>c!*SeXFBq2*FFj>{Mp^?HSHJT-P2}NsX&jv17TN<_)@PE_Ng33G{+NofH=i* zH&7tg9ys|7*s2|+)Rq4~W_tY}>i>-0oc`AuKqC%)dUhjr`u}${fd8-ce@v__%>SMK zkCBo7f9n7K?wg3P?{^^e()%H-9iT|zt z`;J(1^;>a(f9e0MOd0?4`G0u;|DFC1?CPI7VgH%@^pO>_|E>Q6 z{{r~$^nVclbdGfY)F`aiZZ z005wW_5-*nVwDsA-}*mJ>VMX`@UQ(@f4@rqxBl;6lEr^N|L>naW&Yp#KW^;*UjN7Q zul4?~^nWxn{-6Q>wD0?#z4&tg)(X%;LBs|8kWhpXK@b821QI}q@);D8%)+6&_WVVIS(kAPC4uMCnVRbpRELBgL*>4 zVm}-8uLnS@cHhsD(Rn}4)A6z3%T4&a0n7izE&=%0wI3A^9LJ&xAKdHCWNSSvN+1hW zZ%sD5`|pmw<@)$mxxK}a@_D68_c@zuyHpO&&X2eNV)5KQOVn9|^;q3Y*XR2%ms`71 zXmW%*HWq$(G76+<6=wn1#9vz-`&Wy5kLI=DwWW1l#?`fRw7cZShHf3nCa1J9ldPo! zoF{wOLj?cU`U&@&&xuT=gZ(C2#TEbS_oHy>wUTc_YUDIG23$a*pYH*}9=S%XPIH4` zCc$}F0l*22I#XeCMxB%#Xi|Y@+6K7|w8mvr7C;_wT05dvL47iA_79h?WTHVMdCquA zfbs2GYRj-j01NS&Xn=QBm1>Dz`8_osGlj;PGi^brl`KvbV$8T>zo$}7wu2ElyH~M*jTWK zoGQC=+f(!EwxYYo9-bq%Nu_UCA{sPvh=OjC#eRjeqDzR*Ve(FjS)+iW*(6@g4{6a0 z&JD&T#|S;;m~sb+WZh*hk>$_|lkyLu{t4V<%M9$=@%td`+X?%Q3Ni@g=PVD|a*vdm zmQWvs82kizVS4p;iU-JJGIym$s-?zDW<{qum~uMCr51Xfp2RQ`X`Mypb2eqJ@!LFP z)uYtna%<-2ypkWn*?xr{TdHICgk7uNj*?2DM4I$?m$dnaaToDKJa{tWsw6zg_B4wW zah^y8F`A^nc}9F)U8V0nndlp)cPD$YU7kDjUmldhCG|={XVdEL5A3;AY>fF<}-HTmRe-N zN(=UGbo7UxlBH8Zj%pJPj3(9wOq%N|<5Qac<-9xlzz8#=gbBC8$h(msKJc*1!ssl) zu^I!#Eq7&9+!xTXDFb3u`wMcyOyWU|YH#R-S|{NkC(xlJgek>@ImU$X#{>GsclDBO zRS5A_C=69d@l|LHR)`2zs6J0Q8?DfITtSmQ2-AQF!w3k&3`7zsAtV37E_5=rJ|J z5F>aFqi=X$)$^rvP1HB)JQIZ)Bj{Pd*)?YC< z(PHRJ+Vw-}AH`U7^@V{r_qPZ#79Rk5{O13<_4rp$01E*1pU*M{5f+tJ0>JzyIfusLLxIbxZnV0R-$wP8VC zfxYC?2-@oab_3$)+v5gfqg<^o>dTI_@PD#$EMg%b%gAJ4$AB3s5RU)X>cV6u8Vz&+ z|Jf$TUoY2+`c%W#4#U(7P>W4V>r72+%ZljY76UTFt0;~~0WkG58mWLCLiGrN52)<; zc@f=GLzk*B<$502q4GAw)&l{ru-tgGW%C3VInU;n1^wA5j(SFw(HVB^(nE`_=+Jux z9}%CWqVy)QPg%2Sa~fpkpMra6=AOcPjA#+&lf^bTNPrJR{1Ei$@wDh`_Lxd^^CUtv zE#?*WLm9hqV^wX2aU(@(WwVTP6LJ-U5_OZz!;H(54AUM^$>jF^lHQ;8;}#&xs${ZV z9M|o}84oP0rg0NZt7qL7>z2*^@X;KPlXf(n4f9m&cAt0aR-TuQQmx?cpE9R~a#mtZ zeJFtcjh3v+6I@I2^uun)Q5I1c1cQK_Q4n9hmih(86PnQTmIq{L7#?M-fSN{w`UckO zGOThgzqQr#cIU;`Gt{NkmE!b{=T-tlp!@Rmdt*<+VWx4%luwRbOBOOzh|__Loj7z< zeTZQX-JX3+&1gzwOdo+lLpUzR37|gn9RXvJY##AM^=OJ7L}D?FKa9(sES)P})HaU| z9o{m$xhaEpA{Z?moS$7~3QfHKJ*#kbpB-Y#&C47<|1Z9XtVMBk<=vzI)#?&M&3f>J zK5XconmxOgWnMt+EowZWLX;6iJaKY;AaBDr%D^%5{z%i$_pKRGBZeUfbvTj}=}3di z3D*#f zPFcj8gF`|~=7H>7XE^DedDKkk=3Y4TohgkcDR$7U7FTgHvlw)ADOs=&ZLik0xMsel^zGY z+zD@W_wQndgjA*(>0CN;_SmxfEPG)ca`LvmIi{?xo84zo(U+eZF5AaS@A!D{S_9rL zfe4|uA%;I{xP+iALv1>STl`M0K6@G1Bd+iL+O`(PtziHz!&krJ0S|w7R->@Jof0wh zMQsXV(K*8IwFk0a@4dFue84u_dh)}{@G{A-;ef|pON3h8W3Q8_q#X64JA5i^Ji{$3px?3np22F z9;q1^Yht7as~4vSeD{wo3^s<0Z;&cQqc}jCcof3|rVA&uJaE{!YEL?M_9&961ctj? z^!=Y)!xC~PmV|-h;_pwXT-spS%OIC4uOQ15!bGgO$mY4`)2UfpIpGzg<5v?0l9+7Y z;>p^|p1BaBl^CUQv|zbHer??R_N8<|ysDRTRr?0~dH8!jhW|;-6zPQRhtR@%O|+p+ z#(*EDa1l8{SBwL=d6EJj5}!jYu!x`^<>(HiAY`9&+ik~^SpL(!Jf+th6J_zhs%pNH zedBgOz?K#eaJJJgkhf=>;6k=%lu!e%m_Wy3@Rnhxt7BMtE(f*`m>VQf4CKrC#v3s2 zHgc~x;yqJ|E9QJ{uYIBwG2H^Bi7=tJ{F^71$@3jOrBRF>SqR3d{s(wd%3A;`@K;g# zW>>TlB3V%4(D(=@R13a$5L5h4BT<#m0JyT6|80gdO$p(4AVBno{dY2a;P52&7o8I` zj{5ngTf>c1Z9v#shhL;XbRlSUdS%z!S6<>U%P6LoxtK$_`NPPv_4iKxNig{NcW$lC zAG^sIB~}kfUcwZ2wj&Xx;j|0r1j7{c^$m|uvRgVyjot|wnhq@zxztSI78AD)_R_O+ z5wiTdm{TkbBA|i_V1p}<=x?65J8h!g|RK?^Q)XjV}`RqPGV z_e4Z1QZTTDGLe2)8enIY7yvm=5EOko=#xsD^ugp=bRWZh<2@mSJkbqn8>zD?(vt2 zMKk7Isp&!AL2s{+)jv-}`2y=tW+w)T2;@;ESM@Y@D(37cX&$Ylx=zKyg2stZf~1j< ztue2z&-1~xpE2-7gPu|cBsvZOHjU|9=Wh4kOoCUym@^*f)a?Mxh&uuCEGHFAmp_&e zrO;`R4;z4MI;~o)in8I%fc=>%IJCNE1jglH$ZirRKj%(rLqWI%g43?Cb^lEZ{U#hi z>#iVc!s}uQxz`NflON!Kva^aKV6{a6rhSV9rC}<8fi0Y7!|-+bBr9=y3brpfBXi1x zeB*0+XV22bn-{IkG6_TI!0r`??e_^GAQN&b3)!Lp*dedGLL(+gW12#@v!ZQtrDV)@ zuSXDyqQ$Ab{G)JdBYr89BYEXrQ*^9h>ts}xDVM}eO=x~gMdOYJYb0BIMN@_)VK1Sb z>yV{I30V;tV-^EZ6FY-b_9U-_O&xi8-_lqY=XNte%cXUCsQlw5G}Vz7_VRXj0FRYj z;>dyTFLD<$E${D(VL`Z)mQi4wm`EN^*^wxXvWsKz zVWa>xH4Q)aO3B~6be=e)UcRQ4GdgMjmW-DHwW)zPr&d_kl$Fs?cSmU(&iN)nBBh;hvK zXP1f6*_?T5R((N`Pho(KX$>IL9z(l(E- zCe6W8P^?v)AVF$df;B4a6cHvR8aPqv@M9J2W(ENY{u>dY&B@+g|i9=QelC z^{d9;Q96U4xf_FUY;42Pk$p-Ll&6UiRe|LD6m1h3CVjwRT`kaJ#aVmZ?Bt&kvOg=mWnxYWDb9#h&V|I+X?i1ghC=hFKO>~Pw z)-6X`<%yR?J~=u-I5jclO_K2Pa139XEIky8<>HF8-IRR^JfQJ$z&d4@7xwZB(S?!_ zT;&II=@`Vg(np#3exj8IA4wPa;#?MW2c|hU5VUBk{1@kE`zjGgH$c7ZUO7D??+tSM zdNR48Q(u=ukJL@}5FgQx+1Rs%V&D!sDfenBl>la75iBD&kSEnli`PWQD=~|8#jQ@0 z8KWBrX*q{edy5n~ukhk-nYgaPhflYpy5 zOEPn3lT+bP7##i_m!VNk}%1?lK{FReExvdAD^3-n*lGPm^p^<-_LC9GjxaAO!(Dgcz6WiLqK zuAPFT%&OiGS)iI(30(~-!y@G24kd;~__Oc#%P=O>Pobaf2fQR=M@^rFGfi5-ZiPPU zEhA~O23q1Coct-btZk{=E@eW69Fg=bhgbH;Ykq{SpQi%1Yj&G%Fk-;!d&TIli)-(e zJBJu;tG!E0{Nyo8DAm1Khpm4|P5S0mslbGdBQprXZw%PM!ZFH&xM`_)dveK{w9J*L zD>RZKbnSGkHLa44#ti~B4n^@-NPI@SpeqAHKMAFXJBXc!{fXxe`YTFI)-ZqsJVmBzmEk9-wB+)) z2v=r?UG;gUick6_Vjfwu(?prnW^)Gvi*ulZosp+%wy0v8t8!hhTRMkC2rQix-%>W6 z+!fs-OI^x*B?0l(=0=@Aviyn^XX>QlzSrPG_k5#Gb$&vs^vcP8Fdj`Fcxh=ScJZ*>0GzxcW}X(@Cee? zHV;LMUCnf!3t%9A-Lm3t!#A$b7Pt{`zZKn_$==iQsAvt6R1PtD$;-&)84yySu9Xmd zWLWX6BSg#LVV_4vF*HG#IE8wB&GSJ>i{;q^f>ZF16Vk&OA|crc(bvF;{- z7w*Brt{2S}ZeC<` zy<&I^O@Y+R)}9E`$Xo8Nce0+Y603@&e#aWFhCGt1|@BNCszop{e3I29XVePKM%Zg}|7d@i(r-A7|j;v)XlSXZ*81vrY$5pRyN>nYRB=4_8`lAER2PnPU5ZAw;#7EKM;g7sUQ?%xci=Sa}V zR1GYZST+EA;?4A=#%u}Am`N=$)0*q418Y$NA5^h&-rKJz8_7;u2p1q!+PbUZg zJH&_ewxJj8pdnV_u!Ks(?Rfv}sqv_FyNvzrK!>ZpROd?b$FZ`SVC6S8!NSL)Y@5FT zYG8eEeZnPHc}Nc=3F>Yof&+R^B7!xo$p-0uRLqQy4VqJ4ZIS2gABpgw@T?fhIvyk7 z;x+Aw%TJDb;o*p|fMgre+xrxGfk-iimF<6B3-WUGP7up))cUtjN`Q(bS4V=wpm!hM zI&65HsE~`=Q$1Nd+m`k1G4b3{J$qQ>saOm)(-hjZ)db?|!$-ymN(M%G3+Tno`W2fV zQ#Yn^s!NjvOu=`DOkRR`tkGI`+?$Q!Sa_?8L!f zYO$Zrdzi8ch$;Bx$LUMJ>-fJ@YVU9v7i=I!E#*|IGHoQE9 z;QQLw-yK<$d3r8cjOKM{Z&tFPN&W023);P_EFS9-Iv|lRlfJsNAl^YF6*@*InWjr5 z4)LRA6^QZ9_+%nWYRph%)pZiE7KVFhS4qXszrB95Elm@D0r4fowyvk zkVHcrej_7PPGFko*R}%JtR*st(Ep9E%mW8){WA}ltXDE(CS=kyrCy|JVO*vp9O$-kEW`vBm%M|zWn1dr2zIJ|H=k+dGRZ8&lFaJpVaK&Fbt@|>cbftXwGv2qlO}NRRypPt-AZrLCSJlGRzYHgRqGPd zzui5>lXKpQQycKt#E#&az_oz0y|GwB44_5CskZ>{t$`7fJw|sqPF~RAglTj$xnCLY zftVa!{azU1L#i>~2pmIkv{U|M1a)10F1hNyV9Pn{ZeYU<$)+p7W#^0+Z&68H(VnP9 z;`qwpMFVnYwy{J8pqwMkyFot+fqOMzHFhOIWO|(pjJ8u*v{XY=;lqo6X2!89sDLlH zI0KJt+MBy8wcCaA7Fe8LNO>LT-Q1#RkD=0;b-*^26Df_n2nMk{aY5~ZYpvGW!FupQ zZ$F)PAB!o=qt5v-Z$oG7`Fu&7re(#GZ>d8Q_PJj%&YaW)XKD_F?G*Y=R}L}2TI^M} z^d28~(`P)zej>T%1Gw=11nX?Bsi`fk?Ug9CA&$$~Z7-cwBy{R5_`syv)J|zHB);B+ zT%u)U-0--&+@v5m(wFHfQc)@500XC|I-xzSzS8crzb>O}gFa6Z-2%F|(+`(nlEx!D zUBawiOh*`omfmWm!>`&ZC}Jp-wE=+x?h5!9QGyd7KC~;u@s9cKq>E5QxK<(LnLV$dEqB{70#RuAqZQk4`=(|Z@XqOlF>73WK{9@Av2ltXeg~#+ z!TRlT!7@c;JBD=H6^^=|`*nAb5ZkN}OKvo5NXM8VXA;!j>lusR`{5CTdO*)?|I;x` z(rH>V^`e@AyR7Sfr*HLji$zVZRlK{*s@8@&NY}&uJ!It>EL7LYj@PKnX;TKIg@ZVz z9OQMyCUdWqJnVO0Su_+m6)s`0UY}X*Q!>fAe2qU&x+I*?lFx;ejzr!_+!b?Is=F`C z+`ZA!HtrN)i!q!`~lQA+R{CrjQE0G zsR3kQ7b`ppqeGNJgoBG%P; zo1pM+eQQG7MuHMk&M3XE0v5ll%0^-zLzc{TG5b;R3-?i?3S|+a=cYe9Y(wBev06Q*Y zAV52u!*bu~Lg*g9PhS1gfHCu-~*L*%FU3_5UwzByyXsu3T2x;~CDlbyCa+UV=g zSfA}PaX_`wvt#NEWO(-e8;-gY~>(GZ}^|^8|-B0x8v%eeVEv@=i)^TUKNe`8j(=vdm zcRIjh_H}@P1FMg<&Uz2|1Ubs-$s+DbHY}A1I!)OEar_K-JKgIcq1Wac^Vd#lvrR_O zqI(UWB%(^e!f=kc`EubVvf3_x$SZ*G{Qa0WaQ5>T@Xqv|{wsU)H``Yt=I21+Bo;9f zzPWi;vYmQ(l+(J{Y!aP$?~PkznZ@HbQL~pvksi1GTe%F@v&QP$R>nCw%q!9N z_;HIn>bgs?OJro9K);t|&p zR;3new$`e4ED9OJY|gzS_%p-O#e4yG zYprVvb9HN_go*#)ylQeu3Ebj`7W1}@)Uclwb1|ZSt2dt1bi@tZ36&P!{5olfl0qSF zmnnNFGm(f?Zu>j#9N4k5GuYDO6wNO#b{qO&jh@afIH~tV{l3dIJoA^o*Q`T2My_}A zi~k)??l+m6Gka8Ap8Or;Qaz-vF$q}b()|;NGCR|4ZNkstqVD8P$OQ~0+>vvYsg>1_ z9R)wvi_&i!y$>Ic6N@iYdP^*3wN3I4JL^E3t9=^AfN2?sHsLs%?7QOVtQ zSK#D=gHG3s}9!! zm$zk|IaJ0>+KPqgQPo^8iwYj*X!Hb7(IFnme0+;kT)Nk#LJDECpOYfyVqo#m^~Ipz5`NRxa3@A{Z&YwojVok=izz`^lZEV}2=Ldq3}x-*VJ+ zHee5A_AA))k4GCVHlEi8b@7^-bEVfSszGoEFU2IHD)VJhKMgI{E8)?;o}k zl$?vGd-ZzL@=&3faobPHCu^RZ3&dkwZ8U^!_X2>2JGwkuO`!G)CNa>4l=S+}kjGVH zJi$C0o***ZJJ!YpG;w{$mSdypEYw+>8P*6(vC4au>PmJFP#JiYqGn%xaTQjjfv=#&WFBFn?NU<;oVT*t!)6})L7(JLmDCs|$~!ACQ(71qn$dX+ z*vY_kO36t9Z(Szi@O^9VF^a@!bzJgCz4OG5tq6ODx~C3?vb7Cus|`A>Wn`U}@mQIL zJ5r<>3Ma3rWnF01jGSc^?N!{4b!Js39;;!<3tH8>pGZI10N1m156j0X6xP)!L#8g{ zs#Sz@OmW9gIVkMN+-yRfOvwwnMtL=Uak`|9G~Y_MQz+Uz?m5R&HHVeZkHNR6+y0+4^nai)Hs1NX*~^nJ9ie>y8OY{8eW3u+ z;ed^JPz$BS#y$Pw_l^YQWF5jGa0wH4cp>_&I@1T~#|{zMh3WZtCUO zaNm0OK_1vd28Tj!AbsH?E0BcOo-}De3uQzGlT%8zQYYz{m_i?58K#OElOCURL)q@I zbaBN8S+CCNy|-vz%{+xS_~nUTp5n;bEWYc@#lvvxS3+4-{e{8DEQXY7XRWoc79YKy zFOa+`6yvcLA6i9+Zz{KUv*= ztc^K`EA#jZof${XqB*%l&*(Vy7RE!OmZb?!)foP@Jfj~<-{+36Yh4nxF*ZZihuHAE zxKP&0DS=tE{TZm(AdfxG!c3FsVwEN~YfNBw2zyx6hyS92If6Izn@YQlnH{vV0z%x1 z&kaqld5545nRlV_szIo!a#o)W>_a=@r+MTk^PtD;V1`??G6-TKic3YYGaNP%g%e|= zlRMDO3azrypIKsrTef--?pyK`O1@x4;(*ZX5pV69K@rgF>%b=@{QHCay&O+>r$J~( zuhLCIZzshvL6#Zb$2D%Lb4~5lMRH_kAoiQWoHcJMFswRbL&kooS8>O^n5{iN%rP(Y zSGX|XpOmHnhyPPlkZ7v3)f7a*u?29qOeah@uL*AL4J6D}xhN?0$}K#Utz3LbNvY)V zbM(aa>ceTGKp)tOuG=#=bPO7q$qO24#~*#%JQzY{$#5kTo0-sS`J9^Xp1V~V#Ph3L zO-Zi`xKt9GCuXLepe!Wh_~m*9;jpUQRwvT1Aez$0N<7EoN0?|M@CYeUOE22>5YY}^m2OQhyitx2$DVXW$ zC3#3L-8EA2HHE80WI_0qmNOn`N3q$u6@)4*$uZ#_@biQ6?e9dJU~$z~ftEuWL(4Gm z^(66n^+Gh=jm;*aA=(m-U<`p{OBO7l>Ti|zIAlSp$gJW08$fpg1K~AwU7Z_2cm^!o zS!x{dV^CJa>rn4ZmG_gNNH{7=QAzIz1tA)Ufd)5ChalB1D*8q?p~9$}4-K7g@ph9wW`$F|Udt=>NER06_H z*lHL$sOS71Cn8;9S`w9a4>dZ&Tl)loJ!q2H1t?M}5Yvc4^Lva($hw8H>?v_}%i6v3JzOjg5R3S2DIW>KTLX}*qE62g%+3cG zQ7z9Ik<12>xyVrt+x(9^4;u@uJB0#TRv34Q7Kw6MHQs9!5XL45>F$}aI$_8gHZ~H_ z79^YCz^f!=bdVUcTwuH?e;fd<@+(u+A(nc&R%xpy9n zS_RO=fsLtz1bDwhUNRL5Zs(27tr0QmnRV0mqRu1I+NVdosa;nNoENJA1B)&u%vNG(4Y?$*I1+U|nIr49;^+kY_zvUG4F80itYkG0;a(HaQHy8W^+J^R z`QQ`81}Bv{CAA?vQb6M8AasCAcrU0QH+aBadJSdtFCE=*V>k{+*;WrpHOkJ^F?S{f ztY<`fL+iXk9$>m{R39zRX#spzTgcsT)a|ynw1h<)hnO1m}iDjs*C;ekTJ{P zFtw(0s9nz_HnU~K@K0tY3YEskrJjK>LRP6+XAK## z=_P$6K)a^q<~shK1)=32EoFL)L-wX|XSH^^*G2B=B0tq4%TfnZ%i6SYbwOjhjc0(v z!LtxEw~@!~*bMuz2?G}2ZH<7c%-$rJqs&{_xGAU)c4Z-$7|~+}c`3@|!4CN8&M8U^ zNc^)On3N71j60sG)lQi{a`cPf2Kg@TmL6C(94hw-;Ke9c`=(;?dZfma z7H|@=1bhe+7R$*7ZmsoZOLb_Y^=Ac~R2X!(abPiQuf!)+&h86DHzwQNwA=`8J-Bwqs+jgGs%^yWT1kkw>=4 zh97($1~thKx8hITrW~SQAO>C+i0)A)HQ=*oAXmNY$KkiOntm|}IVF!fNw5e>X)qC% zpn5$~6J!EqBsJqfLtfunTzQ)fNgHM>9@C=p6!Vm)$f~{Fftv1Z8bihUf`6$Kv@wQ^oQwgC_XMvi zZl~>Tt{xx7;50P7Jwy7n5r++WnDRwZD>j+M1$Css2y#my-ESS;93P}cW~OGZ>3cbq zdNfV4)CS;&N>5dSr!-S8`218opmhF8Q5M;2M$MlC#*P}oIMA0sb`Nmvp=<{HPK3t8 zN>Zu`c#u`owe;Mj#qwe@j2|&2#eVmBCdTxD^{a}@EqjzL*alhq8op!>{<42b?oxk8 zB#rpU9J32@F1BHeoJIRTj$U|6+WEkLuJz`u*!tn6qaHdh)UJMZja??ztm|vEa(JPG z=i=)+9v8lE#i&vrfM!FBb;VS;3FwBq`R7KN3wVSqtef*@I@KBUkBZ+)cl2Y@wTOcb zn|TRYkZ#Gi`Nb09Y^lr*%K8h$a`M(NN+!bQCW$R+Tu#AL@h)%i2fNX#z& z5c7sQ!Aq|7#zqX2L@C83hl#XAfO3VY`F+6Q5_iW(h;*)nWf}moy?BAw|GgQtc0Ej= za)E2!rg10R{I;44!0M3t|q zEjYpflEX7|FKr)fEr>%d_>u`NZo!G#63U||; zXH%S#LQ!wP;Y(g)A0jqB+@J)G)HQR-^iHi~L~VzR%<52ljk$JL_}PP6V=41J;ZMZ( z81;u3oR^_@ncG3H;eAPQf0ZTS%lE1;UDs7jykd%ss5MfRL=JT~6^EDlaaeo$PI}j8 zu{GYFstV$`jKj_Q0p{N0r$pun6NN54p_SpiFlzGEr4Gwxv8<}$P?aSIvNy+3zuiY0 zP2u_8Tk%Wf9hz%y(ku7H*MBC zN05I^E=$~M+9WOAhB4x}BmLOF zeEmXD`bJKbLl6wbVGQFZ1+yu|X(`2jDVcjDlR;xde)3Zo>Xu!;>w@`3g>mH;;b#LU zuga(}e>DNnpI|9Cu4p0t4`&wULA=VuqPXebSvqm)buo@@s~(i1MSMw1xRQ?25;l_r z)yQ;OUil-uig9ccDUm_3jxtS|W53w&|0!Jv#i7N;%|g z{SQ`?OIzv$-j-8xs7w3@i?(51(-z;9?g znj3=(>HPE-rkw3ctoxU*Ga>M5PvQ}g*t z@y5(dRs@@4HojB&=2ddM3S(jw9pg)OvF1k=2_lN|I+B0o1I}*n^6D-Hb$+R+wtz;| ztFi2nY0 zX~zL`<=JkvB|MDY{O+SpqVolc{VCmF~Ii1IyjJiMzeYx+g zw>n9~ob7t#=0u;xZWty#-DIkTVVunO8vB!Z$n~O*dn)2Gb4q@FzI~r2lKFAR-CYpJ zmYxugTfcDlzi^f3f`v>&Ktj@CurOp9w)Eb{%?8hA(`MIZ+(IRiC?d>Z7a>hpO_ceC z?qC2|;Q;{b!mK~}%Kw*B^_sTXdUFIv0pUCbMqnlHd_LyP%n6|bn8*KTgt_WZ3s`4F z>2Ty8%{|4Nz!yz?IJs~W87zEiI9!o{3CU#qpYix3+6S!U&1BA+>ubCoA{547(j ze`zL@Kab(n)3|%gHKeP#n&XOI&_Bs@BJ9La29Wi!ZGu}gJIJ~by+!5=hUrt-Y&INh+lAcE)qJbvjCQzNZFWCr03@a`9rTQBi$pkGJ9ijoyZ&TpTY zKQVkjqwDzr6oIG<2>eA=0{tVPIfn!TiqwZ)hiwJ+*>7%#u>}^}?|Fx%@Hd!18rpGy zunwpSShH`Yjt~0}+2HaWy%*l6{Ysls7x7QFoxZB1gFPVtU;-urppge$_@93J|Lgts|G!rLPx=2@{+s`wm5qZ#pM}Bb z|3d#i8~y)||DS=0`G5NV|8FS&&Hv9!{BQriVb}kM{(s*8@c+{RD z3E;o{|8u4y|LOnF`e*)MWP1&rH~#hi^#AYu@A&`k0RB7w|G$_3^r!#;G9j~w0_^|x z|Fa|i*Loqn^pgMW|7Vv5_%Hwe3s}j&{r~J%002M%|MLH5AD{6|;pX}x)J+kAMPB`MRbe(O{EvG1~5`?)O!ww8oR>9vtCm5jD)_h&Pa=WFax z&U6#nws)V>g;*-Ro{G*-`7Pv`vcPUykMtK3vQEs#puu#3VKwD48!JaE@iLp4BtbLh zElZPD+YuNk_n57)F2_ll^_S19u|Ot-jIO;C{=M;$<%WwxH<3Ahx>pQ{Br^qf)`a=5 z(my#C9rG~KE-|JFQp$_m!(d zp+%CW8kGlm?5rI_%J8axG3ofPESE;cv`gS4*HMilaD2qatI~Hf2zrb>iX8RN~1) zfO@dpIP1{9V~fE-8;P)GB+dA6b@`ry2t7S}0&3b6f@l*-Y7=X6^Yr7z{9rJ()EJI< ziKfw;Hrd^~_f7KIjiN}w!Za~O%mm)iTDT5sf|kycuAmxvu~Bizj3ai&E;jl)6_dAh z#r_(_$hAUuHdv^_E5|~oFsxbAT`k8!c4luQy|2)FqjC6R*6KkxD~zVI_$qTzK6gpN zm2Lf^^Ud305aAPf^--h^zVXb-!UmS=$jtGsr^C1tA>fiD7nuC4 zVqvgUyS-y~QR!rPzge?%4Z7X4axJ@U;p~Yk7X;%OSBD4g05fV& zi)KfFW)GQa56Wgo1ouE6`#>yr&zyVDvU|_NcSpo`&(wQI)jOY!`(z3rgg#;?N}nJf zWdf6!HsX|Fo*xbKiR^*hxkH<4fY-CX$?|j|Y}&D4&BKEQt=)Jv?4vO5uQ1J^Fj(Kf zFe(w^SR4RNJQbo8dgdcrh**Sz!?Z8g-| z0J$p>f=4_Vn{a4aeu7qhs9Ju)R$iE>G_U^fmaWq%m4cg4*t^8YZ-Gw80+R?8B85Rj zJSa|Km}G=bV;mI^lUU?$t}x(4Q7X?`tS)IDkGMhH?>lUIL@xfjoLsnJj&zH@{?t>! zh@4zXtW6=)D5_uUzM7wasiK0RJZwSaOy_1&tR{7#w$5Q(c_FdzPFXh0@6S<4 zk2Rcr|M`cfi)un*!Oo|OLGvqP$`{kY0vzD~D(^o%0JL~UQFse|5=E5(+Bz9T*Mky6 zkrcdVRMAa$R!h`XVq~tdHX76XicO2jY+PQ(0e>y`&^W|}+XiTVJs=<;GH6|wZ(gtl zBsvs;lb$`W7NJ32zi?pm2hQ$l(C+aEYk2e!g|PrUsEv1=SINAih9Jh!2obuVWd58{?i&{q(f#BHkST_M`^!58uA|8r;#kzE-`u=e(+m*@c;d2!PtnARzaX zP(xx3#Nhh{j`;)o^^%Y@5SIgxrfdQD0>e%*&_n*@-3H7AL#=qDhK6NCZKxA}Jfr0|xyhe=|v5r)H806$0UysYC zKDst+M#&4iS{+5qY8rEjypHaaZ&rt^QWrS^o}90JrWUDQoy8s^9tN*W(5TZs77`gQ z6a#J1_-EL{l`IER_zv(Gy-qWBoX^aOva0@9BL=tpqx zkA8Y8 zMMzlj5gGAW8loutqtEVCUvopahdaXu!#=yb%me-m2h~aYOiJ>sb3u94v6Y&%r>4eCfG;QDPAmrWABZv5*{h%bhRFa@x>k9NoT z;RS2c=R`cNE6$5F6DBTq!u4SJpbaw!)c=OuUq|292L!s42k)Jg&jg%3ub6%myia;U zdoIWma;(Vt!1Rok9a&T;YB_a`F*InAER9POALiYz<-b;D1O!fIn$J%iFG)^KM`mhT zWG)$;@YTP<+g0l}5`R&&6A29-Ac@FQjLw7v!;V7=8sc@u(9yu*Y;PFYe=28 zz!83)LPUx1TIEOcn+zob^UpKRx_xEgr-7=L*6OgxH`__VuKYvB(UeB;oVvOvWtZBz zmxaf83|95QN+y>iCY{sBN;%6ST4|V~#|4Wx({-1wcrV0LU@b*&WT=Ol&llU&l;xYn5)BS*z!~&JN0QyAZazLr>KqGF1z1aq#|v z)z%YBa9;!(mq!i_Ns9J=bMw63f3f1;F=N^}4^H zD%?DC6n8=@9f3S{H!?Cie>5};shMpmsA=rut0ZM^_QNb2+myzW;ue4_9Lp1 ztJx!Q%+V_GAqe1b0x>48wlcnYF2+9di|-|#3nW&09U)Ids)Z31T0LPEx=tOafD46i zKnDjQkOdA{iVe@T0<9mWwK&!j42vSQ%jfwWo4r#}TXZj0Ek1KifAO9qvr;k?a?h@_ zm1>t)$UNd<2U=8H(NL^?n`PEspm^Pkv*{ak(E^RqDW=XcOB7@-2U8BB*+0Tn8gn9M zJgT zq1L07CNzQs%R%~ncC7gav^vAG+(CIU+4PRhF*4~Kkq3D-rri>D&qV;2NgOP1MEE^O zDJ{%MQp9<_;V6S1Ned*yh!LZ|6Z;@Fi+||kJ;E%@W1@0W;Q|pMZ>vh?#1jcF~@6rDHrE+yG zpvro{?vxmm%cb#x9~tKZ<9oFPMhJg^K zrbRR(s|P+I%m`aF5EqFJgf^?q>=-%F@Edu-0v7t7`7nf!Iy)%xb-T@nKeWX>TGN4{ zm?Ksef+eEjnxBIoSyBIPKWoz83&O~2u=WP4mY&N6Z5*B2D_jsxHG z#}Y_Z4_CH#;TEvrj3q-BEk?dcOKB}5W~S-k<|ZdvV<)aLLA@F zGM-2YFC}^d?@3(0*IsOHE;Ym4f}2}OD!0fQQ!ZmpbE&k>Ko|H-&(mb$Agx}-6FNh; z=H%@&H=x>r;@8yk*vKjzGPFvLys(WB95usIPQp+^E8(}&744IVy}#AZMHzv z_0J&3XL;B3qDzi9B?%v0x?^b>o8jz1S^}c5E9y6`@(cz6xr^_?q+b|aVc*8BZx9^% z+tX|7xvK!W7o2Z=2(0GZZmh7K56cb>7$JU%QJfo=4-5q3-UpuV+%7Pc5t~X_hBk-* zReX-U^e1k$5oPEa58O9Y7;_QD;#@q0;^m$&<`)ENGPb)qF>zq0h=an|dCC6h>dYBd zM#iRxUIcDCiS2IwP}!Hk49D3U(3cbz4`dAp4l3>fj&2orui)qg4X3IlE{mmGWV6`V zISE82T2($Seq^&Ajf%+{wl?lpLFgseK9~m2mtVumFED9%K(uuT-!v~L+ z1~*NTbj+6oGLh_dcac~Bt@^mODP{biqXm~5+1|p^!oCRVO9ANS!{_sLM)qt=ldlK& z!Yb56e`bp8!8IQ){~G96=0BZ2d7o$C6nsk<&fKUSxno|XYk&njC{sW99SXah(HZd; zm@Z)MfD%09#cN)g5uW;}G|o?;)>u`)?nDB2gzsRNae?xg*u5q-XME!V9$u2(4!vcV zsj0uYwvi~X;p-m;w|(hlp!SkVRzv-Y9=&hJXq?p*8Ce+^6*FUrjR5Ofm!@Hr{5@ya#Qk9bYt%Z(bDi5*{XF8Arjk-?YL%Y$)keD4*-H4*602XnMs^cE%i)2M!kx^xFyOIacc$siX-Nj){6`k^hQ8$v~qEA{mG~*x7(;sg;8Fe8e5T0D!J1eYS8i`kT zx8GxghnSm$)K^s$8QcK|-^dvaEsbUFmkN8F2h;+m6b>po>%05oOCsKZN$$Q2{rVo^-G*XD=3%&W+~;07S*Dv{V$VZ=C!XT@rMn z^k%DnzaNT#0_Rq-|LUQz?L;FgAN*wM&7-oGjK4?@xUWw$pt?AJJnt1lVMhHyS z4`IiXvx%sqvatVd1blQmGSA27{KWsrHx#{)U1;j)a-u6|SJC`|qLkqjH4*t70sSBW zeJ25v*-gMoTTLlkdWXir-ulXDUe6vTz~I^hViF8o1V$d;NgFU0Z@q$lJ)|lAgN=tB zWE>cnm+~d;8~K%WZ))6(u+4*mv;H;R=||$|j|UOVvqvu(&U+zn5bVCk%{0{oHZuT} zm}Tzi#5^-mRFypc5_l)Wt6D{CBQptv=o`GW9OF{3{Gq9Y#=Y|+t=n^i3I%cKOjY97 z3IU9hr9ykHJw2QlD}cN|sr8wW|sX98s29KS2k^pT&{_6J)8 zTdqH7Gyv;EbB}N;Zy7xm{d_j`%uc#T+#BL`D>T&XIdX8a>;~;#yZNkUvk6Qr!mn9U zsP0&=N!6-)=~{qK!fI=z_4Et3JQKS%Ns=K{F9vkA;%mSo4v-FY2~6FAMuIB9fWs?O zC03*4ieM638DZ{qvI8snqCGSt|BN@Ai{0xiHAPFsD|yj?9vAs^C)l&# zL1+-F5Yq3V+;d5rb&mF#?y7-oyzxk?F``~Hx%+6O9|==`9vXMNf~@@Z1mTFcdlb% z*vOo{pWL|Uq6?%65*EWi;oq3)-F5O{Bmi&!=xAzJm5r%m^A#c1O1v!H_wgEjiuW!Z z-|$ncw>PxP8JL>7WzCYOS@Ihy6!tl#o8_;itCxen*9({}CCi)b+3BIIA>EM~9@E9u z<>ex44k~#WbC2Rk#-tl#zZt9@cr~Q$D-#>z85%6lILr2pg`e%TbbzmOdwT>meU|gV zH$Pa_N#zTA)5T-$Vj{ed&zOqc0;w5)P{vM@)yp{@*9mqu!B2f{#=y4MG2>`z{xoC` zn0e2+EB>ZlXXfV|!NvoGWOG8#^a*|$M+W^No`x|*ADf*!uj;L58-#D9H%dyPOe^=S zX?d5k`y#W;YR@;k;PC_h!u746POu&D1&mxrpP@ir9Y>(?8gPf9@j{@&N+CrUj$Uhe zf|gzc_)@9`m%%@xLxkytqm)fI8=OI3A8lMR0**$10ND8DHfIUAVhj=NSp!J7ElMI{ z`Mcrq_~YI8xhP!I8LqVl*(*fZn_|Tj&ja3nBT$Ehu)GsQ7eM3ECktka<<`rjOg+R7 zFA7ZwV0L@GME9}3N1T+r8}i+GGIfio&?;kH6zY*eN8-*WL{Y}&P>F5YZuEDon#c~X zY;hXun1O7p;-q@d`wsb}6s}qWFn?2$Y``4blj#3#i_US_k;RJ+Lto%5(q^ zHvX12nD5L1Q}b5rtih{a@2`qCh*}F)kB7-_vK|7Q7c9V2;~i{I!|hahhdKd(Ea0f1 z$+EvGKlwlmRT*k2{HTH8zzuz@0ctMQ{e}L~XE}Kra{U$?eWtOyBvY_D?m{21N6akU z-w3PHY%QJ~Ygk8^#^_ntWv0$Kn#umeumBlxMH8YQ;4rjE0Mhjc7ehQYcwubN1skJGjx3V5Y*t z7tMzO*B?o3*AyE0^RxI+cHXT&V_NsKv*AHM;+-=sB~?N`**nG8y7W^daZu9{naw+; zt}_}gWTS1h?2WXHyI!4*wYxeLWMQw?4gcH%noZ(ExyImWohJ9(s8xULd;M%&Z2tQAsV|m8Q~D zx#9)7nl}@h?i>}7`hH5h0ND#UxQN+@`6oZyEK^04OhwwKPx*R3Y&W z({m&l)v_@$N5LpZCiqa;pnElM_MUA$OdzI}x1dD)awncnCRQn%uMe7par{Q2I^U{y z9%pS)aAzTIl_)fy_@mzy@R)IMkns=z>BqzN?dOQIdJ2GNEhvcF`CIplO3?lsbGwxD zz`u8eLs1_b`wPtpgq7zEyp3FHY{=<0tB6vt8-Ph@OTY(v_aoa$;FA?yR}eQNPE6{? z*b~>Jaiq*iH_fymBJQ~k6)2)&cZSqvc$UIs2Ds|f4avPZNqmiY!12ZM&?-L-60YJz zFq(`d8Wx7!70L-6O%;KRyxuBop`~&JcI@RZXimLfkd2~!{1Bz=p;R2Fcr$TE>0)nM zil(D7Rz&#Ob@}3q3dR1^WRA*8xRp46eMu>J$|>~h4qCy>7w8fJLIjsa zU6T$j-DJQGhd9oTyCxZ#wNZ-@jgFB~eD@-H+EJ*jVZAD^J#3TQ*FQgw4%gZ%^6ci8Qj@KUg^01) z>ek}1lBLr|tV+y_o*q)+lQCm)vf5OFj1Upj549E?Xdo}ChqXM?J&ccg!9_PhP3u9MMyjkCDzNq^j-L+uP)6WQdA<4kQ!Dr&*~8S_~%rU zFrA$2LS})!71rovP~IE@Hznk&H!g%f1&t6!AsjeiVB5zDS}q}iML=-%PWXIjRO66^ zMsva;Rg80EokNs%mTsGospXh4`RZ7)!^Os0To@ZM)Pxjqv;jN*jo*ke+g^mX(uh8v zat0~%lFjyDY>TOeQlGw_a^*6@;RUG?OcQoiW#ZT?KaMVy$`sEAW6Mh$yzApHF0En) zu{&Z_?qNdWHl#TXM=OE9Yuz+f7ZLQLxW`c=5C9+%9~!IT=>#|vevrCtmn1j^gf?q zw$M`AH;Y^wbxE(w7{)hC4LL&x#&CdF1bQcB7WB*czf z5sJI3TchOr4U6PXPw8uk6RbJ2W7MX@lJ?kgMU2lhtDVh=uU}GGZvV&)*k4ib0hu!X(U*{rTVy|SP`wtck={%;HQcz(Y|ln^)U%Z@-gpjfiBypSe2S3Ho6 z`%#IJ2xa>!A9rC1Oi`7{N#gj*5k&*4>9?`~3((l7VV-?*GyvPnBM325M^F%en(}>9 z7>0sVS!&!{C&{~Pt|=z6w+m|O;@e-(#=KeD;`OF8_l`;vaTSH5X}mF1S+mRa&&=go zBS?b1LTLUWhaTR;Gb&Es5FI^>ZrNnYlE!wY`C2S(WA6tZ4wtgXxNs7Cf9#?iQI}b_ z!ubUyiV#JFaTvf|>Fd%P4@6D)exmqpqB7oQAZN;afrHgqU2U>$Y%I$JaRpCig+?Dw zLdXk+a@fA2V1;Zm;L6Sk z5_pS2BnfgyyLvV{DqS`yGix;N&WYogjyNHChbbzF1R7NM8e@V~6$O%K^feKk6;JDU zI95<|P83@5?9>`oN;F%MegU1jziF@S^tuOYlr~hv0-BV(C3qm|iVwFvp|u9y(@y2s z5e$TI8U=2%PQT3~4N`3}8a zb`6I}rdOlUef6X=rwthjI8W~cnM8$#k*?SbnODp#@Z<{xG7|y^eJL00W^nX>^dgzD zD~V2L{@CKu%)=9NZ3j{rc%=|!C1O6d}ZGK|PyAb0BmSB_+`HxrUDQ9rDq| zxFWf-)>^^o3M=4N)OftnLePb&i+eDYq0Rr?L_9ABdZn&fsrpe>n#oF=SezPxalRU6 zMe5Vw$et3$EM0NKuKGn)>lFL}NCgNQ0R)ES)pNBzjPh@sQ(H?~*q7uGVPRua*F0sF zo|S~a`kJ6r$YiP3w~Yj{sixv_=@>RP(iYxHu5h&ifERs;5QhJD|aHNS^Lzp)*BuPp>TiR2QaEFBk#Ko z%02OFQ*HKeZ~U}>El{y`mLsI4-jBh?uB#J(&=Rveaq~sstDstan%{dDYduaooWhyA z`)dgc&ui!B3B2#f;>_?yof6K4;oHs7_8gxLvlc8by)?ZBig)-#D0@Y=2V%7i69b6R z1pc{$vjx$78dsG*I&Llv_J|#@Dm-JzieA)(06RxFe*u}F_6fn;3LYD6P24w}Mrp{@ zKZkTUgzqP7B?sdxeGSo+OYk@IIoUJ04_bZ+bf(|(uKK7u*=^4n4WED*EB#{s)98|} zmp&7|>Ur!zcHV-B+G-+%72Y_g*{9AxbIlSTq*@HY>)UX>1uCU#RR{Q#pnnU($n7a=)r5+3yo_O1b-oErv!qoB4Cl?7`32 za(`tZPQt$IS5>=IKo^=V(G77%2l2>65wI;$qvY(=>gD)zmZR$P3z!o+PYe4H-9c}ZHHOd1BV@2dOYl1LQCf>HNyc}%K%RNib`pG_rzxxBi zEMr>fz92CsrPyCdPIX7p7G;L#@L*C#@pI@ zXXPba6Ui81snUQY&}f_R>R8iU-Vyz30npDn78JCUR8GVD!`w+~$_}r_x69Ynwec#} z?6axH(n~e>lh5YlW@H5T&aL}p{g249>@{q_(y2xd%`F`qEX^gwm)rg{j95T5|5o8{ z-Xpx~I+CNY)Hj_pWcE3mEOm3Mqn+8sbz41w*m9S7gg7mNIN7YY%faYpaBwQ^#Kd_z zA};=lQU7L2iU5I&j=&9We~wGf&gCn(V;gE$U&FSo>j`U?PJ(?T%v4s%_^c*}wgf2( zv-68G%#@V)HLt=Zm#%8o)ttUQN)K@*okxU9fRx|lBx&jXyPT0&4;WViu?+9UEmIze z7`P@WI?y*j=Exa7Ieu5X_B+;f1m8u*s7%|pok88%Es~8LP6(691Pwgyo(}Uy3%^m_ zUnmM97kbw{9b^Tb@!mpToSV^*7l!Y`o#c0rCB0Q32#T%&`9;jZ#sh}gh~pzU-GVi< z%0tz`Tb?`?)pVtzs!0OCgffx0@o90y(fVc{Zg0Ogw;g-)LNG}S3w*KVx4m`UZRu#Eh88kH+2?m@xl}Y#uG(dQI zG7IRVp`svmm})zU_3{z`E<;@Hk0Qsiaf%AeuW;jf-@=lSe^nFhah}Wt%LUSNzly*w zjmCbiFSSKr9mU4m+u7qZ67z2HPdke~0lWU-YbEQ z%`$^oT@z$hKo_kCO27+8jiAZ?O5t1Ha`EtwkjEf(m{b*|L73&CFFd@Utf!-Zqog3C zxC1<=rMoGUtUFamUSz&$sgD>5Ep>ckT~c9QhZvNVJ{6OefzumxQlD&>{x!)ebEI$T z{^?N-KeAeDv;kxXEXX6KGN0KoaDJ_BHXBsn3YAsYfC*)H>lL(RrLUyP{%-YdG5^v0 zq|}kNP)|{4RYwC%dk*RL;KFw5gYJE$%k;t&IT}(RuDnK2Z7c1RxmXtBICusx_`wG|f zPyFPwF}TL}!IxFGL6E-%oe4sW_2+mF0UGn$L}SOyF&IkOxX_dftIJq{d(+46pjOmC z#wW?=$=k^L#siD2fCb&-(Rjs-VKH~5l$MQMKIRu7lbuy?kxdpQ(}=N2dKwXzBIkD{ zM-LX!dAor8H{d}y1cvJUqgik}-Gbv(vEQ|HI1dfgsq+%I5XH`QF!DR+%P06;;O{PzHzVcFS zb8XV0t_N>mtZ%fY((Y$@-yod9{*G&m{BwNxb2xLnE+E3m+=l40G4qy1-`*a@-AZCR5 zg%-cuCpPyW~>7T$XSqbWJ#qZavybRf2OZ>(0?gL(0xBx3Ghr15Rrw5&jHO|J4~F=@F^PgkeL;2KdLkdiaGZB zYD&nlL(6c`@G4XIiv9hpQkZ2T-4m;kbHK{#2H0Lf{AvjVK_a5-rX4)qXs3dy<9&3X zUCT1F><`Q0YZLixXE|j8RPw$K_QJwKDJ5^Y!ZGYqK+Y>zMBxD0dV=|fm$3v$ScQfL z`}MQAb1hqqw`X$76h(c5y@UAV#P;0+rGSU2NK&q9(iomr8nXmqg}IIp03qzK$u80Q z0qyzPI#Byq8hGK`>>9Usnn*ZuCTrWnaeWDHv#Nq3DK|)kM=jmr$B^pC1GQV%!^z)P za$R@*C^mfWZrnCdq7{{_3Ts^QW6F}m=-LU)1|kOoZrxK^T~Nh z!(sde3yB>6bQas%l>~}Su7t%*!}>qLv0k%);-&N9zq{pv7W#JV3XfBvOMgF(VrJAJ z+L8i=gvBj_u<%88Ubh6r8Jn%eEbRID)hV$LfHIxgFo(+JRa9yM zwutQpaKsl&$xg6m#yQe0ix19d2YI&d>^)q} zM4DRHx@%U91zxQFq#SvL4I0#KZEH3g|t?x3EjJ zB!INE1ec@z2~w9YeSc9h<5+WCq2nNCCb}E0YY=IVXkcdR+y8h)370l{2j8?*w2CYw zlY&(2BDH$=tQ{9Hpva8kH@`(cc)pq33nUCJ|mubf$-;jRp1VK=eb zQA$OI&n`rUW+xYKLoSPUimW)BWZRUS313!XdmL>$Ly%AK`^Y#J=iT=$6*eyd2{*99 zhAcX=7VuNR&OtbiA;15EtW*&_&1ra$kzu&|#cuDxRMeyRCm~_Zf`poedW@^U&R2M1 z!BW%F5F&P8R{!Pe>4d|Gl_P zp3s8S%x%)X1MhG_M-ed~aKtVV*G{Gi91zWm7WFkmBeeC2WynPhK*V{B?l>rqOIxzz z3KfPi>+Z3d(?D@qQrT9w$6FmTz9$0Qi(jONJ&0fCASDDTtxvU;Odirc(9ZE8S`;|H z_z)$d2#jLljXy3$)yu1<;&OMH3_VjcL~2b-rJ)kMbF8hR)P)~I%oF_Ul#p;#(iu=u z*qRD_^ROvaDJYnO5T1B)P3`|n>22kM7?zu=`J!Zg{!Rg0yNm=d>bS%+$lS;$h-@uv zG$l8El;+unQcsc7w{Ssb3C_>T$I|+_!D#Jp>xk2QDI_?^xu9@)z|)mzng!$oN$~LQ zAX4eD6EoG2y{Z|YQFBZF`0TSYNM-X;@Rs*>b8f#zDKbWtit$JYSm}a9(~!jraQN;s z&wJ6pj@LAjV-`)(aPkY)w)$AGN1g+~cEU}VV-LtX5<+KGix6o)c=}5O<9Y#Z* zM`NBn3LN^HugCiM>Z`T2y6mRXoxEMlcpzZHxn0N^T*v0>(@j_1B*UPAlbVLgceK-6 z^JlGOR$YVMQai%-r0c8l=+OaAS;WgoKEPJX(CgBFM0~mG`wz+`(U-QCu>52LrVHET zB^|XyRm{p6v-~@zt)bVre%w*esI8zCE?P?d>X!C?){IunyTvyuPYId%!Y5eC10&U{9_NeveSSYH<>C2Q8YDR{?yh{2Giy4o>es@#Cs`bb?ZM5NhUsIOAQ6o9N2Nvh=dvB`X8zSwa z(yMiX8r=-;GU-J^E*9>`{Q0&57Hvrij_<}0=bAK7>h z7!g4i62mwv&~#(7sh?JX&Xr_eGMMoUf>UPaTaP?#$L%5XH#umJ81>mdga{oBd}P^2 z3F@qR_tR;yUK4l`!Tb~%guM~8Dn=jG_@gFu*=@cR#^5Db_X^bg;=RVz1zqRTtl_CT zE=n`>9XDtAv=KZ0=_V;4)5xl?5|y1Awp#Skz`^ED$?6WJk!XAn<|In$Ih#AHu%zL;L33fTd5psX9AJ+OyGa|Y>=sAOA zEz*FmU`_3j{0h{D7%=n>G5U9K6bY6L#Hd^4+L#ZcmzPcEJuTMjEODG!r*G;P7}ROm ztMOw9dDcDs4%DJ0n>~L{1WYgpcEz%H5)BDf8+8S@c5U)_Yc81(4%i8oa17WBE(;5? zR@J@iGSz?x4)|${ju0;5yFeejlzuSBV2#ErNdNcPO%K>Kl|Z&kp5c=p#}wo3Zy&*= z;q$f72|AQw9k@BGO{C;5*b95~?YTtH%X?leCASa^!s%djvD#`ZC0DfJq|AJ0lIi4Q z!*8LtCg%Y~Ei%@0?>^Kr-jC>n>+5x^#x358-(p90Ie+(QVI;fplV_;a;Ud3Ov_llen>WC$rQ|hH3O_%5|%!1sOjlDx=F}~&HlPJ3Mc7ff7|_g$67qn;@k6KUOn1!s{4Ib zIDQ(9?b%(`-yP(VL0;_tQYHwB+A2N6{j#d8I$m)@8h=E(VvJzP)p252y)e@Q)+&Fl zkI?-f*^v!(Yr&Az>%!ujWdBaNlpe#x?=(#wL9%`8XRxp8`|G`8dHG5HVp=O(gwvG( zML@d0?(^K}Fgq)moijP5mAvkV^Zb6Qd5>=ke|o<-%yw{}?c=@=nyQT~;WI{uvOK=| z{#mf;L+>D;;i^iy zs8m201*snw20_w7o%6df7%aG+XgObs{XRhU)d+iQvyFWpQ>tH-{)F6|v% z(6NcvE=&}-L6oqV=WkFH8u=?lsi^ruFI@7rD~`cUqCp?p(vOl7O623yh@_M-zzicg z$2TUd{Dvy=QLpBzC{U0nxUncoCr`E|?bR-6yxoVrEzBA%iHkF9<$2tkj9p7%XiZp7 zoc}nbpXFp&GDVau^5n^S7(iF#T&1$I_#0e~!fKG0|r)F+tsw3ey_kq?DhGN*b6%TKqX##WP-J+x43<>dBz- zF|Rwyw4Q({BKzG{R?f{fRKbI5V(a_U5rGF)%SCFc9j-Tx|m_D4fXNyChHHnC=1 zaMQ-RyGNn|uj1m)!g$TXf`y_MQ@rAcf(Ye28@DKirr7vh_hD6DF6J~b*|RfJISa>e zQ;4Io-AzFe6fFI=Cz=?$V5Y9tA|RL_KRoDM5jm%(801nqrvf+yK#BJQK~!&*w#%tZ z@6tFP9JZIQ&a0EtWfzO}yNtbN>3 z91SbSFWG<43*PD3tW09PQx?%0nO>aB^=nUY9G`wat5|>e8r#13ASZ0|xIrg~0F3W9 z#{PAVa`yuxZ}B4o^reMnp;*0;mH)3v8rH3H*#r=T%fFyu9Yf3pIQCg>l3rwv3C3eC zM|KaaDEStD8_Nor#kia}I-q&tbcT!cHyDW0-ltSf$R9(a>uABv?;fux&$B_> zLF~bE5_25c93~TS9mNv{e$ajhe86>phZt9uhMvBb>sDN%Xj+!rys!atU7sUpTT8c! zhY>TsmS&SB>UWWcT1J%-g_`&Miz{|IZ~cVr%}UW&(%%0S)VRmp207bVy=;j`NR&eGW zGH)NAR11&_RHfhYc!sTYz3fKJ_AIW+ZJjPhmm#M}mdXtA>8(p84j6zwZj9vr0mC4U zJh89c8H&llQHJjO3^V0-v`HZv8dNJl|urb?*)Fj~B zgaeb8VLRxrm<&~M6XgVDLEON^qb(U#Y(uVR_H`Mq1|Pxj!HOB zzXJXtDt5pfnOJYf(jew?+e!0GMkueCt55h&U}FhX_Sie3t;qn!8`;liuHs#J!YyB9 z=FdF&=(ceQ$^x$y8JyTyN+?=8ob}KtrX?w*zLk>!`8&{}fi~m+-|-9nXZioG{Ezq# zR{wlrL&Nspzz^((hWd=gMr{A@fFJ&|{J-WuFtf5U(f@Dx4-E9oEdP`L@P9-3Z~Oi+qiB*4G;52pJR|K>lyeF6Lz|KUR*|KI!vc>aItB>Gpq2&^b3|K>j+7yq!2c8f;m@EyC=ehz*xc(jU|aw^PzE6on;0-Q1ficWv4mKwaFd9D)U#)f znKS@+bb501nU#pHfvSP-f!cx6f!2Y-!3F6Jt^vJ8cNYt9&p~RiQF?Qc6kYK!vZKXB z8A2eLZxA+O{lDUwqD0^%BXyXNUrp`Lit1+T=>LdhM*26nayZof8Lt=>b&b_9lzZX2 z?K-bdd?YE~+S+oekdj?+_7JRxs)W%Hc}A{LDpny{zGU~}r(?O`%yX1uxm@=7i`T5s zW_k+ftu)!H?6nCo87>%+vIxJgAMZ&K7Ga(wDNYHDk_QzwL2d5CH2OT zkUj>&i~LsB=QwCcI&OK=O(%v7@s8@_6Z8tz8g}JL@MgB#z6RyWvY@nL3^h_xJ^6wItn_!`-dnItOSPpLKq)=B!X3f5MDFmH|)AL`4r-IQ7BscJO z!1<*tKO1lY;9}^BuO|Z!PGFuvs9~1BYLZ`^Jy|x(GX1{<+4w8!mhsfbilM z7|-VJ^C^l86!?>{vM=j8ll6aIN@W`51+VDRs0r?0T4sn^CRxt{4Agt3A-zImlP{eR z>Uml;QwgRX57gVY7GK9oY6Pvuhe<=U0eXm!v!6Ikzu~OD#jTM=B}%zR?{r+H}!a=<6>^n4CDr_1(eIXKA1K2 zW;NhG`!FS0S9ju*tRmCN#t)LFt_@#!(mRPg<-)8Rj9dB}tQOU6;gk!6pFxLTw2!!< zS;Yl@l}Jvrow&uEL#~wq+JeQXwNpu2Zn3$xoGVO`CLYmHS`zm^uTx@pjHqTS(49wa z4JkT*R~N2!nOY6u-u}ti?0%8ZNy2@#Eb5p^sD7RQPA}Y37%U1Xi+s+$Y6iZ$f_-v- zYUV^p1o2Zd-Ca7{+n+T9NvVhvM#Pu0cUP=3i#cvr->|xJtqb#IRw?}+Iop@GYrtoP zIz=bQmntotJ1?2zUNiwXD-n+gWgq+{s~9iNlRtpHpY#Y$yXpUqb0a!KMAWY9Es*aT z7e2FO1>aP7BKnzXr3;VpKHRMRnrd9TZvoU4g7o3dmL0xQU0v}ZsnB0Pa)D=2Bur*w z6anI*v-Mowad>m8_0BU9ra4CxNmZhRzO#uKaO#ph4$oLKX*NwXN)jf`nUZA;H(+9w zD8J*J3Iv6(uKSjpK6Uz5?5_3`RaexhEudhPTePk*Sejc{7j1YsgzFPv2MMLw=7D?< zH+%+pL<^Ov!)W2pFzy5)2MEsN;h>~Z9M(s&3ZaQJNv8#b;wLbZqm8-tszppGUU+F; zxVCj=LiRWK3$(HES`%p8F1tir2Es*N-l?R)My}1)cIlkjiC{xY3pAVu;xy-6gXEOY zDqn9Ebxkq% zKb#?gOVg2-9Gz(;#gbOnGNAYiu&ba$_h zY;EXjd;1lg^p}`njw*QdvG&9^MUU#1kTe`J91_)!9>^#b(U0as`lqdX+3}!q$>!Xa z(=5%kIhpWMFMEtMjyz#?<4~7P2JY}Zz*(Cny(7YE9~0t*`Wr@=Q~+~a#-D6arVNS1 z04ZZ8N=0f&S)$L$ITwukRDc%<*9yI&N3){O!>UKbs?XG-N7bUw^JZ z3*8oG*%pJ<7OvSAO)Rh=z}5}J(63a&6lj8Gj~?nsEXI_{F=dSV$dMCFZNNaKHcqM1 z7}9K|$F#XNLyCs|%lQ;_@M+i^6t%^C1TJv8IdccCu)~pW+fGaC~uUj+=YE4`KWpyZlg|b7sZ3 zolzHc!a%*^GG$UyyH{gHvYQu{aHc)u^pZt=ELahMSHOq}4|SvfhE_?RaG*>GSYe)+ zagLHvxevxDUkFAl7Tup0rtH#Iq@|o-^eL{CkhY@CvaPx$u_-?gmUB)DZTqY+RR@N? z4*(3q0KG9y56CfXLTO4F7&L9P9y`*NBZtH-)|h&5v`UYLSDz>I9z%0Irj{dE@eZfd z9<%2Z=4B83r5=vYJ}&Sry|Epj*A4;gkWEbusPt}ttP3I%o{$hKpF?vkjw*~H0G$qz z97VVtpHc)snJ~&?Uod)Z1zDhrM1fx5jb2{(FWHqDKN58l#H3f~RvK+q8o^c?1+^0t zUq>)7&p;q=e1y+_zhBrslYkdp7+%nOwfCLW&2TOuNcU&PF9N|AnV=d?fm)M^N>v55BR)XpSNk# zbAvbmcJzWB^$-lvC?Musn>nuzff6PhUK4s?+()>+NquZEwopfQE9`!Rx_{0j3*2G( zjK=gok?m8<`n=0!8R&2galv*CVIugE>Q(K+)op4M3hZSD%&Co9j-XU~h9p$``Y4sm zs*M_se=M0-8&n*DvGz=$pE2x7O)YMWN?|+KKpS$uA?*Bs?=o8kEG${IvJ8EoPaSBv zvqs%BP91wrKq=|U9#9DehA-&Aps8}N;MNBOW5h*j?uc~P7*G#!lTHQm#q-2L{zf6f z8x#IfCVUh2r6}o*JE!{&|0yWp!@3ZG`9l~*y3b!}$G2(#gG2Zr?294ygf`kr_>#xE zm|i}?sQg|Jx~V@3d*v>m$(n_tpQWfDLk8_xK+|hZC5>gBw~h+faRy{=!Nf%*xR_2s zZ2=XT*&PqnEXH>>)sKB*redA(m{zJjZBDBPXy&po z_>f~Yv-BdGz1)cF^;eS!D}I8Mm0(1rCBVusbH>(`3(=&NWXcBG4$RaKuH#A%{4HYvp zW4*;%bMn*5GkWbm0GCBiQ1#Z1FI!lp9UqxFgLn{QCZs$PnH-&F2%olFl{Eq1tt-|$ z<3A{uSQT$^KrQlvIoMTCefDHpivybCBslQd@&QuD` zr0VWW%5*Y0qnG7Bt47NCD{&mw!&Nn$9-;>EjxGios@iH=8cWK5NETDrk&1_BM8ZLN zp~Jeyp2n)i;M4Ka5z^0___9$|!CiWfGA58RO3v?f7EvACgT&7HsWcWt zTACu6vdu7d38Euj`j#d-my~SsXV+$0SJ5t8 zO{<0@df>LtL|OT-BWB_~dd)&+hC?7L76_o@XGV)h+TQAd2sITU4LLEEa!fl1L)#qO ztbIb(@P|(_iw7!H9?ZDOvJ$f8d<^aW27KX}fh|nV6?sPqhe|<~O^vw8YHBtZc7ue{g0<17`z$$%#Z=iZi4D`74Oe{+3ENf+!oVv?$K>)tbtJ53sgQPb8$CLio6o9ok$A zh#98H8P|+Q7Y4ocuXgNz#ntOA zP4q;L6U0qS!_AX#+bM=zcK~2|f6cV8YcEM+K;O3s^BQYit&w221o4tMC`=3^C>q|d zU(p)z#E36&lB7Rw(%c z%5e@?F*mT=O1(C>HnlddHmNu9Hla43HP5uWGwkuAqydKyC~u(b_Kf9)IbfLP1sJXt z=7rg?oaY5taNOtlsk|Q;ebBc51T|?0q8NkVx~OVK;l?Uz!*ISUYGV2VNcd|24Te4{ z{~P93lP9>AqU!D)&*@HP*cfTh9|EI>1|dWs{X_u$@f=tXG)825TdJ9rZA#@z=Otd7 z&exWOXBDp8QF-g#QcoUUZ_TlNu2WJ7oZX)uye;pW_Fo=3@{|l&`KBx$p?T!khXPW0 zA7oG_4uB8El^VX(i5J)uh7kQ%Iu{{UY;l_DB}jF&UVl-6=dwS3{?;cddkF z=n)HG;m?FNiwhbJkV9@r^9T40I6-(mYIaxv*QtJ{y=J}`wyPmdt)gWCk)U)aO+7`P z7~FQ);8bTgX71E_N6Y%CIc)Hye z29jGtt2&48!7kiAJG{fl8CoSQ$t7au9kNwAA8Dco&dCE_HW=?A-Lc-uP`U=G814L1f z4@(etmEKaCpC0QE;(i;qW0Hlq& zQw{_F5)Xm{wP!vlU~o7RiP#-9dg-2xK=Ktwg9XZ7=$Fug@Phcw4!!x3Q~-nI=8;7@ zKyRqp^ll_tHY0yXFOzyQ5qlj!8R>rJ;88?Y^*(H%MmPcM9@<2!StgIj zm_X*3C=#W?XG|5?1@Pw{5R*j7GN~MkPH@cJ5Gu_wA9P%Cw~ft zccg)zB-W)2wo|{3QB)RH6szw4yQ$BplD#1hJxy>Mh}p+Wxm~$skFxE>{bld;IG7E| zRZIp5Z86^Ez-`;;se=y@5;vM!Jjg%g88*C*j);g3k%{$^RV%|XUA>5Paf+#EIeTmF zS4%|bo3c4O+yu9<3(~0o z;H#9(lN9q>bhl7jj};;hDP&IRZV!Gf2z8IG=**`s;v+pnTprPfJ~UbfPQ~9nxpPpd zp0AhvwlUz~C?uxK^==JUy#MfyDdNOrb?~re@~&}~cTg@Rb_=i;0O7sHK1*3s=hAK| z!8)tIZd$a0S*iXt5}46y6u;{q6cAm{zrTL-b;X_{!4zWj5t3gTi;Yz5R5^qZrsM?|d{WrY~KPNT|Fwneq z^+T{%1_gQy2;NDm6e87PW5)8?$HMH(_V3Tu(FAYj<;gT!UoA;w39$*wB~vG~if@<2 zMj{pT$L;zVe`|P?VFdaen*syz(8AX{be4(XH_UxpWZHUMT&Ll%-Xd^JN>WgUm3KCv zw(j$IM)qpT26ebe=uF1V*27d+NaH4@Ke=-Ti)+RX_vk% z&<$lZH8;1wrY^%Ff2hPJD?M4WXy9m)tOO}HlRjmWUXCpB12l*Mp*thLa4cL}O6dHb z)xw@SjIjA=_$NI27p5mfaXy(|?kz|m;;=R$3(^q==-IqJv<7?x7den-Gxmr$Y2huf zeA-h@{#i7XrjchSFQr=VmH3>dreQg1Th8uspa8R+o)H75ilF!t4JmV$EyJK(@9>;I zamF;hRi+c?KBg9<{FWZolIm*~^-V_-EFeGUZQe+cP5=pBv8Ym9$PXzAk~?*Cg;^ys`C3777v3^77@y z8Cfmlyq{la9FrDH+;<<&EH2KS*k zc=ZkXQI_4>W+V7>Ypdv-M}eP~oYZuM+YMm}wP8I~^ zYH&_IV|1X)?{_#}H|A_;sIc6PcbsefK3|xCTVKiHeqytaWsc zEh#Ec&WXr-QQ8fOWZrp0w`8B*d1LfE;#d!K-J`+lV3b)u*^G?eM;HV9;m&nx(+OSP z33LRvbpOJBAUJIS;h>-X=^JsISEb*5v&ocX9kFx+?S`^dwb>OdZVd-j3p4FH$zc#D zgaiPpgForaDcTIV1^=w=f%ckv(KO@AH&__!J#$?17*Pm!6Se1Lj!`G>A;;Nqe&ohQ zH!auyh6o#zl^IWrbaaM{LH4Vej|5Y-@-bAA6-$xu=OxmofRyWRbhb1(PZBZ4bgb7> zNZRr3>G*kSxbQqFwd9(AnD;|b5E&czOu8em?c8R>9k;^)S(=P1Nsx1u>zX`2?NvtB$iq8CN62a)GQ6Wr zoN;DdlhMlAYg#Qb_=rRTp;UarK97`LZ)uPl>C?dusM)s98$l&LA;!~@O2-9 zN%mQ8-iV}4XU=%|vv_(#rT(Vzak3$@rRU>t0t;+M!}4_ja7o_nimSOr}0^>_I(IA((DUd7+{VWY5t;PF+wLuo*%+6 z{x(q#fW{-z2%R3YLi-k8TQ}Nzpz%!`@Wchk2WwMPy8M2|Z?te+rWGqL>K)i^ZtzxRYQfS}&L@?pFr&j#bX#Y62r?1m0^EX? zZx={4Z+!zZv0CEOMNmXz#)u;Rjnc|Fr0!g`ow*t^x$5{wUD-})YpM0ux2i{-Q&EfR%>+p&KMbg{?DYIBuQM^ zfv+qDQOuqism*0Hu;!0@Rn12}*7xkUWisAJsH=yZ_kMtavBC4i#Ft4V-v{i^g@?|3 z)}k9=-RNa3@J?_E37)NsQ<0{p+%vOFu1*>%k&iUCt+)&tH?7-1ksyxha;>HHZRm8pA(6wn-KgvoVdCN zJgnAlZw_(E3@Zj1S-{yvKG;ud-`d9G=TE83qmUQ*vV(i-#4&2o0#L%f(>@Jw5B^e1 z2(Wy>rQTfNnrDW)cFXfS6g4Momc3MNt-l9~D}&7dq8wVlh>)crQ#Yqw#yJpJa4lH@)hvuil`;v3RTq;pD zZMb5p{De;M6?3<+m1|6D8aqTje;m0nG>rg99c9^n`=0q#YCmyy7YQ=8T#r^pel*1{ zFL8U8d+%2UpU-%V-EHOP0~kqMuV|D9b{%31emxv6mdN^p3fo5ke#^@ha|L^S68V0m zbC)+LeuhL2ItT!H9PE|`VTBc^OxlfIlr%3gu2Fi`tOo+RWq<%2F<*y(dB$`nY zhH`U7QlC$LHvieo*sT$A+-jj)lBDOGYZ^uJ3ACHxunq*PzY#j@50$IGj46Bu)WBup z1IL~D3@TFiBUzY@ewF%D^?0hON0wE60Xbs3USe&orA6AcnaUqbo+ckuo2b}K6NK7i z-ugk8ju|r9Imv8;{KWWZn;k^xmPkE)ZsT?~1&?pa^V@F}m{5i1^?F`QH_woZT$ZKT z-KA|$JF1>=-*vFwdAZsrR;v=&jt^)Cz58ol3cFdq>>R+v6p^NzS=APG(kc0?A|oj? zI~z*9mM!i-nU&Ux(iMo!#4@Sah`Ouo%{A_>o&C(e0|{BAj=~9v{AGPgZjoNT1JNi-utpf(PBSh^EA=Oj%NJ_t|M=_`hUggoi z4XTtAaO0LaRE^O2?SDS3W~H~Wzq4OnbE}8{jqfuUv&+ukw3B$e-=qPM1}qfY7pnzDIvZR)RVcl-IvQe= z@Q#+h_;+OUwxpMxKhhn*ShFS1Vdn?V*ZW@Rrxh6;14CVC_pqgudIW&A9Tt$oN_|A? z6Y93ROukO@4d+m<&xF<9Q^vhAEJH`E^> zoDv1p6!;W-19!<`x5qbJ1cHScoJj$(V7$rbzxW9b?Hpu+#7cp+Z{U=klN&KI^)#L) z=M`;VO3FFN+jTU&436(q+5|vPv3qeMCF3D=?3#imQXsk62xoMPs#j(eTAH~D)l^Cm zRS{do(;?%dsYK4!sf_%9I&g9lu4;7^GFf5zS3~p~3}Awk@n&9r{bw_4TOFZ7vOQyo zwD4T;euIPtI$Q!(TDtVkFaGHo*H!-Ni%?eMyknrhs7YE0HWYBL+2qnn9M#1VZ6ik? z#3YhBEr$z){RM2UN#n!jJoMsm&3P(hv2ZW~u+~j#%8hYz=!%g&f#oEFO@uj`NAf;` zwS4a`X$5q0fPHXJ-R)NIi&Be=sl3fr+r_wkih)6lQljPte!dFlnh}E5uj?!0ojSKM z7w+DxM;Nm;j7w+F&pa6N7>}0_p$!Z#fUfnfz7pt!M+>%c7sU3R$WxI33KvB1Mx`_E zb-+ zQg6Ks6Y)KLsyS&jfN|jb48u|lNAF0h;DaF`A+#W2!){E7xY?cG zu`;pUEpyJVIai4Ac-EKa!^4?Gh~c;T zwMqIM_DETCM@1CAJH7@&7Feb^on+**GIVfe7|*~^?^CT1)fbuqw`<1llmvp=)p_*? z?rgau?wo0JZmB;xL}Fb8eO8;;U8Uh)O+*uHE4P=bpW zh58wQVsgz%;FqzllaHhX%o6A+XhhjJp!yqYF1a*V`Y-Wdu(I>@U87}V?Qe$IS0DRw ziAFr5@nM$ogZB`e0KL~^>_G-&j{vzE+E)UhndU`s@o#JUIs>^am`h03?#g!A9VMp+ zeJnsvdNz=VpgA%O9tC87q_^YlRrhq9aNcB=(2|?bo=8MP@5s(xX6K^7m~iUYYg0a>WD=V=pde7T}cKVV;0to z+S&ZAQ1_WbsJDREb%8)w3$XfJ31v!eEGaZ%dc9DI;pOcm1s@8zs9adA zaMIWRpsYk$RnX7V+b_;WLE)mKL4MNNP}b?WTp$&YrK9+GI??0Os9jv9!*{`MrdJs` zZ!y}ddB!F3W;Xh@8pWuzU+If7cj?A1yu8jfqe$CerQZy*3967%ph4MB>O8}UOicxhe zWZk1<#_^$BT`O&conpW|g=vzZ5|@K@XrB;Tl2r`XAbrX}m)9piMQH|5H7Ei~3_N@E zCUK}Q{$!*0?!fmH$X3Bl2cZRh8=j=M=6?9YxA!Ih=%KVQQqK+I(+5SJzp_#GSJw$x z3VU$EGg6R6nzTcxkwHGco)*|phs{4%xsU7-qdwFFZnkt3P3`Z`XMAPpo`eIt>mF2Y zRIY+x@(#9?qk!D0Z}$=XLu^Q}7^8(LnuO6o>bc5{8I=Th0lNMwf|-fNr(NOg*NQfE5g2NCxx6pRJJ-1^t__aU@;{ z9zbx0V|44bk8=8GX2O0r@d~GD&4`y<@cJnCxo7zZ(y-!M>4)jHtv`<7{%jpWCsv~i zSF>sD9HU&qhzA~P;JyI$XJS2^wPn>t+KsqFP|2hWFIV_~3i4Mws_YkvC|+m%rK%jbje=f`$$*eesc5Tpj}2tWPvql z>Uh33PxFWMe4bag`UvjsuUg%Ks*-y7oUyzmQNi^Bm%&$^!tg%6c#R{G1!g=JAwRL! z<@cxRiUz*Du^NiT0(V||u7>6T;`l?M`|X|_w6yd1W9k(x3LqVr>W_=^ zS&~FurEqr8Ez~Uo8qQm9Mgvv~hKq+tl|lIjse1=}-{aV5M3UY??`qdzsy8<9yfq|M z0M&hQQLA^W%N;SN!+l9vTC{S`rY*v>_~0J&q*$-%EJ{usDTW*cfvYPFAfJzP>*VTaR9R|Aa^fAi^WNs$@L_tLa;&UsYOL>BoxeH8jVZq>>CqObM(wS1A@R)B+mpMpQ}H)xo74M8EekVF zEk&Q4sQ#*8r726bAxefg!d*>H6`Qk1T|ON57iU>cDv*-&}3y zb3Ik!i+bQ3_9P7EvKz+t?aUBNr%^NQ58wLxM8sM$MJB|`dW@=nihd<)%f?c8fWq0>zn@1q$saxV>%uM z$GCk!7{plAP?tlBj(E{>ZlwkMWq&aeBOwu3P0W6c#grUm>ei}nZ9nVjt|MdgCfjus zoRlnV_Q=_t_0?W;HZkhjpE?wrh#~X$nq6SyB@DaZR-+ z4951^?zZUjN;TF}J*9G$#dnGfref>YUtL+*-TYG67h}^`oT4_fPzlpnI}e(^raPmz zBRObc;l=Yu?SC9$=`ufP3xFHvovPj=DxsTGEPfmXe}2+jUAL+vozCF&F`RhZs+MQ zKc}8>-t92kbImBp%@qR+ofaN5bmP=xPxjpeaL7T%POF>?#RU5D>)XmPuIehwy9%x4 z>eW`fOW;!?5&RM+23fQe1k4?I#@gEN55l%|+$KU&%O~d_<+HZT%UHLn&WMc6eK6i zrA*UWKs_!R)FdRRk%`qS>(`vx0{$wxfAdz4PYrRG_9FJJr4P|1r9LM4C%dVSmExvI zUaH3Ks<`8$LX30DqU17?H2xqVibq7loEPzbEPv8*(|h_FAOEbwX?6AH(>8Kalyf%L z>>O+Rz6B0P*5cOG@_9MmAHcz`zB+dS^~K--baC76Oqv;u!ZJTdf>&Xqr+HME3e1+5 ze}b1t&s@=7(OivZeGPAHl4WMf?dWvgtPsh_#BOQ00=((oTy#YFu-gHA)30swKzuP+ zvkp8y5l6{!n_6=_g9J=%GY0sTy>C+ns7ZDf4|Riqa+-6RSjg^H4Dj$=?|ZnL%!eOL zM=w`iCwl#!TrZkXM6{|UOBxeTmzv8jG_Z#ipAqe@}YDVBJCuPA_ zJOH_rQEe<0UGl`@QZH0qsL*h|ij)#v?- z^%Ml14N5{A$L!_D`$Mt;*3knJeO5O);Vdp=hu77|D`Ww%cf$!osD5y7nfZ1XUE)?xXvtr&6&DZF$HI)zK1UwW{*?`h66OZ&p961|~ zxR*4HrW(m-e{Cnr28DQ>=taSQlx^d@Y9n$00IMhngs}agfBa7%(aFaHfVdwdqI#q5 zYs`?piAoNtdgd_k`HE^UWlf-tqNE0$+oG(xxphB=Tm+n}=(QlkXz`9)ONgaS*7jg% ztEi|jy+P?yMa#)4G}$UmU9qBS90m&}SwLj?ZO$#kmjd8RUC-Tm^YDy#=KGF8pUcDY zMI$Y~wi;?&1(#EptmXnte*e4S(c3frX)@!k_i*%SI=jL5UbJM+fF@-;Y%~kPwF$Sh zif889f>Tw?=Qf|dV#Ul_%0VMjUM_>&LaMwrlC^I&C7&{oh6Ace?$8@uu(p0BAt{=T z)eif5aL52JB-2MkJ0RAEknA=jb%pT|)Df5)7jN4S$bCS4Js53PK%Rq_BK~kQxfK@K zlt`%C&QCJvU4$E|GH1&~k`yNC;0eET*1#)g?U3X>;sh}g9If{&?$$xEo`XLvB|$3* z$PY5k=_lp*;K^95po@<|Gu8L(T)FWCIlN3-C`4_q@kyt&nyn$q22WOK%P?EX9LPUuB| zlL$_b=&^aK^Hib!2$r&kV?tH_->8#*V6!5Ctq&fYj>IEKj{1{k;E}=s0DD|HcWUT_ z^Otw@dlZ6oR~iyg{R*B>jnR&o%aF-(wo)nRG)3jh^HwXUZ5@47gy|z1U3t>`mw!s% zJl^xK?#!Z-pB~n1YpIl$S64c@-0OV?Jbk5ERdqE_ZJdTd#OQE2A+_Uw`n5_c^XVUR z-Ad)#z5+-=Jw0?Txw|2CDWfVIwpm6E7Badn^;Q7qqZfB+v_H1bv4}alkc~W8P<7M=1>!EiM-}cGpU>HSx^Dt|{iYj8--{E6E8|a&oKe$RniZoZqpS7zuMVLXv=_~7`7|{JJ~bTWw*~-L`|`I)lZW(GR>T7Y7}Zd9 z%@|bUEL`Mq0e*fmsv^3rNu(%|rauUS*9ajUsB2bVWZjV+Kh@9n+Jo7`+ntNGVLY5COKUJ`+mgD+=i&OE%Vb2dih;I~v+ z#y#y%nSFH&E4OFqs5NfV(yMJ-sGR>yUR~=96|R>xOVc_gPnr^O`*>yTLZG|O9Krta zN4*lZun1$i$39=nWE04$E*LPOqH~2DgWS3EQYYG$MtuZ|DMO-IWRE5T!7RPO&W`dc zYlF92iuZ$uv$s=mFbpB)WC~s4E=@tjHcO0bXp3x#;3m#sW`J-TE{#hdTMG>lmQ(=A zJ{s=2(=o~#RQ!b5btjR$Xj__87A|aQ-vHrAL8gd$9weE2uA%GRCXtT}cvuozY@d-` zc#HUX8#u%J(7?{q>(tVuufFbI2OGTlZi6XLEwsE#f@gD~K5oOjI7ZUZXGks+bW6It zm5?t2>lji*lM#&bwPSZ{BE$@v68JGlZ;7cCt{Lq#jC!{z{zC7#p?yu9GCjib`SVha zu;rnxwF)0yoxbl*X_MA)RR)Md(}S_!D8kiv9$W*KcJ6`8%iTrb={e7{3a6}!*9A5q zIEW+r84wXP6rtl;Peh&MZM*>T8jxB0#;Xj@s|~GW$;b2enMX!W+-7UdZ^veBDUA_u zK{$r8&iE~cqCaVJpvB(+vipYB^5-)IAhUW`xefAjG#zMVYjZ0tTW9y{_H@O_wAS5Z zeBopR#?sh(wMz_5P5Tj@j!#qS*f+;eSoa*S70%Ho8!N&~I!=fIbpeH-a;W!@|<0$R;*B229b*nCC3Y|ACa*7(oL z;y73hriopV!&5ngZY*4;m}p2TJ)77B1Gm>jPyQ`A_ZZ6XR~YR5ibDUJAoU}$lj!UN zC-c3bZ#0V}{_5}@R%>%vru0ML6giMa0%{>abZEU5FyDwcM`~) z02l4-%L2bZzcYn*-{9V3-{Ac)HI-?BIiacmaI>-=ScZ?0KCk7(r5=^U2qpl|9K7>D zJChu*)v^v7F0$V4S1^MefL}nR^K2A&f}m{a+fF-m4zi~a$B!p90eBLnwQ3C7oYwCS zFv}nDTvtH&gqQB!C#t-o5tk+5uuCGjkckRoSMezry;ZI+qI zhBQ@7>3SRJ1Y~pB?GK1`v+V9}FKM8s?i(m5Vs;q)@qi=dIQE23&+_6PZYqC%bl*Qt zt<%>VyiOysvsrMspn<)5U!awgOiGLPxnv8g>0uwsQ+N8QNigtA!2z4nM$%Dgm=cS$ zu>F3Yp8ke|IGm9lNNB{W6n| zKFJM&b8v)c)fz&{@dqo!`)+rhYP|k4YGr5rIG11Z>Z*!crG%NfDr@_BC$tt@a|qkx zap7Oomz$RCn^l$7q@pN4b+jb|4jG z<0WF>F9yKNSp4XD@qJPRz(|8~uvO)sP$Um>%u9fJILWF)ow${RgSt`MyJp;2L4_s! zZZ-I#RVcGAmbuxvSvXT#FDB`DrsuU96w`g7wNxm*i4r#ZFje7z&s8s4D}OSnCoYO^G~r)?u+W~tEAtjvo`wp4buRTe9k9*mlZ zNaf(*a*={0ySwxF_RWWfmT8^^dt0BM?lZpGOa}u42kF!4b$R)9t!XIVYeJfjUyVi} z)n8Q$l{iMdi!O2Kn;%Yy)+AxZyy1uN@Na`_YumgIKZy}SxB$QB$mj9Mz$#@o9f`ezN(48CF;!@ ze`&xw!C4|H--Z_cxdsE7WmQGVCW7utt|ulj|13ph+fJznp7aJ9W~iBVv{; zofQxZ2qct2xZBlXOG8FNCrJe*>`G3Gi)h30{ptB5&_US-6K+DIz^U{R zFf}Bup1V*ZN$x;Scx2|bym`7#WMAP>%`S_C7a3c?9(}y5Dlw!8(AwvCg%l^3J({}_ zd5gZM^LF5Cd4%1EtzJN`wJbqqxp}gt_Ag^KYr?puCf>?PqxELXcgJqEqN_#2;J22q ztWAfVEvEAZuh4rAwwd-XNCxkHE5tDfuu(^kZj%pxf^V?-ghIudx0O4BYo-&^nW(CQVED$nfjllL~o1cL=hteTCW~2W>s9|*Wi1# zL7@ZtbUinO!P2nQ!6(2$rXz6-C0TSbR9W=n?#gJUW^A@b3ZdH}+(w7FD#6z6r<#@O z=P95s#%e-I<{1}LFXQ?PhWB(cE!9u$FY~3;5f7N*N=6zqUR^MUV}W{tC^R;&2==@- z&(?<+e!TL-PRsmVnjmN5s9Ch>d_K7^Ep)h!@IBM8TtTnt(l%{)@En*aZS2|Y)if@4 zy07t}Lw9SXl=1ev_lIOH_rKgoBZn|>;j2ak`yzjG33-EXxi0HR6x_LglO+E29fulj za@o*(!VozGI6uQ*&Zp_=F7lY~4PJpR9{XIgRzaiEzltfR1+XKS7QcpO@?_SRC&#fDc1stBjyk4b7m&sA%X~0#`Xm*Kf zWtM6xUui#yp9>ptTSXYThTDcA(<3?8mi~VJQ)N?9#ZJYC#jmgvRqdDhjaQ0w|XNgR1wF*7IamWlP#>PuIuU=Rfz-AVhM)XK0!o9=JA z`{^m7E#L4#uAoDSQ;#3O81PSOdv2k0S9n6SZ!b$-S)Mj{LR0PGUp<8umaq?c(eig3 z;uJaL;nw#*JWDV6)32Ll-sskEa0ompzRIfBSIlBhJ5z9ix2`Ufrga>HYu2gAyeynE z1jiEs%b>3#;Rz>EM>d7K#;J+nC6cwlxLcj$&dc}gp55LEy$qx7GROow^N?k}32x1zhn)hZcfow9aELTR@`J7-g%BidF0?R#M^VhddPzZ{g39x> z5UEAa+IRe$2^sPDp~+Jxk7ZEk8?$Nc0~P%3j2E{DOCKaT8tG4E|Mf-32M5-2j;j*0 z-L1|m-Q%uL>-=rQqXj{Qb()YJkuBQ?_PipNkY zHRY5G4hk z#cPhG8yh~+YYVeOZFn=)P#;?FooSz>jpI8Gt);R@nRY?$NKUv}Sch^d#|s%+=eF#q ziDuYVq|czetv0yAZ9lP3Y?XQH4eV{~57?<*dtcM<&N(&%Ua*fAS-(S910Qat9&NM_ zi0NyHGcqnu_1);_(7yfX7c%(R6CatOt3JR$rsJHc*h%IgUjg^>W?Xw-#A^F5SE^B% zrwm&Z1g|fdyjXo70pxwFj-qDZFwqEww}!@}G5ll^R`HAsGe zgGyjE0sa@>pR~v6-2aI8_oe^64898C_|JF$_j!N%A7uBxN-vlE2*`bDe*i+}LEqdq zoRfgzi6!7gbXARIb~pabSbJIj=M5$o$W(W)t;LkduylnBf$k>{n(x%~<1$_LCK(%e zaM`%JGbiQ&@cM{$B=k28yJLasT#D=!6l-gB=_OV{c4U#0LtI8T(%6O^YrFr-#@i?1 zp=m+tyr@b3gnTjiWkT4v=yHHlRrZxmR_fcUSxG;cPcX2F_j}N2;ctwTkf&&fi56vM z^7)55N8&)D)`h5jX;q00dHF8f=>qfq!d;L92a%AqbZF>=7Ukv{!DktgM+0FKiA=r* zxh&**WMc05p+^0P+=PiT^cxNH9b0_cs5wpdd4(x$ibsX!8L80uu}^W=R>fzvVNB&1 zkSd{P?vqh{&u-HC459k0R{K8#$BZ5A*A>U+$2<7FHR&{<3y864xbQ?fmU-VRAOJv5QtXdfS_POiRo&TAvdHb{@#+#zq7 z<>ammq{w>3)F&$Mi3tyE$BV;cfNe#fhmJk9@*bJK#l;JX=f%vk-n%$4JC?U}FP%9o z{SW6IM!BrD3;ruVVkc^HY9oX259+LRLB`7t9;7x(FWQq87m*W=427rq@7%zXrN(!H zYNRx=rU#hWU9}hA6Wa`tr}`Y+iO39BH!Zb0_sZJ8anDJ|8#k7o>U8Qk)w$G*E@GOt zJVqQXUurr7sHAEtRkPHW^3$=|hL3|M5#O&XjVo*_T#qQr7bZC~%9VxgO5LKjth@ir z6^w9+M4RT6p3W4Xs?p%pD>)ZkG}J{&tennwP7_?3X9}@GTm7uT)U6wSay06?SIEf6ixufNNxh-yY9_EEp`p86fa8>kcbV81YgzmpmG z5$rI(_Z{sUHg;rOScEix3L#hg|AW1MfU>0t+eE>#ZC9PLZPzK=wr$(CZQHhOow9Aa zYR>n6jp^y`JNK@+t7pxcj=kQ!cSc4=W@JXZk@-B4PdJ95cfjxjbQG#%gr)!CzJz;* zbR0CO2dV-*xjTDh`GnUIf*1nb=iL(tLL3*O5|2k76Fwxphj35!66^WZND;~@;Vu`< z{5!W`XP(!IbZfkC%I6pqd9dRT%_S^rM)j_n4ODA-=al!6SKIHJoZKP&y_>swuhu$U zH%c#LYx_V9f|hVWB(m;=9?5!z9;u0s!^V5`HPM)O=tEND21ebrJRBujif@UEg$g`X z-Ez!z1{#^lMYc2iryq}U`>{4tFM7ggufmyACVj_>c8^E6hcfpqFXN8P9+RSU%NC8i zVs)nKtSBYk7z3=YSR{`O$2U$Hb4+SfGTUMwNB&zM)UE*6boDhEC$pE z^Z}d-bQO#*AP^-E(Lq3;99TIYk2%m~4)(pDI1SYSQ7d%x7SE?sj5f!yrWE^}w4>do zc;g(dqw%`L^PIP%mp4LocfRzA!&_c=e)WmQ3w>uN_FnPp_Yd-*p_NofNIE@T%2350 zfDJu(oTvjkQrh9@Ht^U3;f4ROsgg6!hV z$0Xhb-I#$pj=lkNc5w7PD6LRUJ9NB0LpLzGJ=m_y*azdD+1j_xphUF9qXq+&`Ew1)3kzWDs_CZUA3&$8h5P^P`=?CCjPwk}O!UC- z;{gBBT*RjZlyY0Qiepg#;YShLp_FO6BW>#>X(Mhcy14G~1TcW>0~DJBMsOgI;a{a^ zXL&BEyuhBD#HGc#hPy*nbD5h?G$y;^)^uT*h%{#7)uHh`b#2mo-gk`Byf)shf180j zb!npJI(5?0aFOV3*t|=gWFYujzt8(*vx+O_Pec;mCobDH%@8kX`pl9DKj%rIDpH)k za}*P|jUd-Q&@HTB6VUNc{}DhDt<2kDMAooR7?D>_vLA3TiOyJ!NR%&1BPWwp_c+sR zVQ6Opp|B(w7UZ)~UmZu#7m+7xPEpej1+K=Ozl&vG`Djd)eab2;=QTgS{RuN8Enxca z9pc;iizo`$^NbfxL@TWD*c_vr{I)Wsm7$ao?kfGT4wu9A(MxV8;2krer-BC<(Nd=d z`2VWr;{Qzl&(y)#*z&*8|6}7YU^HSe{J&lQkAaotzt{hxXJupk-}-<53&MZZ|HD=L zSO1TK|Nn&kAMamN1NsBh_@DIu(*E8+b^`!_qXh3nLjJ4&2l`LC|Ipz}xbffrSN{(* z?(eb~z(4wb_{N(5>i>cM0r>Cq|G@sy+w1$AFAVN18R5VBe_)#c|DFCH*eL)2QU?G4 zrWrvl`R2d+f0#x8dB4y}dKmxe|6%^KE$&|7bIZki-qteY(h7)s8XnTx1)efF=)PdHC@2MnBP);P1Ud zvLGf^uF)u?R>M$!L!+MOX>R@E&_E{~?H^(;GwjQZ0b^)uw)Vma)6UB*8YLNr#6I`V z*S6!J>{aX(ZEw(gK}2g^lJa7`WOLPmNGsX%6@Ab zyH9f-Oy#Ogm*tkf{_JD9WMj2U1Mg$}yD>%JYIT>|b;_J9;MI+t?Zk1thDxi}OBS5) zGU3;s2xZzCqfR0jRM<}@C6)Y2DmzMB%j6JJZq1oh^LwQb?4(A?h~gDR<<8KTSR|`P zujGAA>T})^R$yN5QDuMI`U%M&N=7GgowYOe!6lrC1?PYclBL7>(bs8yB@*jyi9nFf zf|q({0j1S_ysA1}MRNp8(MR5v6l-N| zD@iM=jRMv`R<|%ArnwdBHpATX!OkTWR>d7)$(QKTvOJkD1 zqI1c%JaygtE^jSh+h?~rey$M)R?N7%jjqp84%*`{L&rg$iIfNPfIm>mWU7lYOs3$DG7P3M3E_%?zU`qLRLPkfscnP2 zl(V2WnDByx?Zk0X#u3^@fiEQ2VLQp|cz<*V3LGf&6DW%pCV;AY>6I zSc@sJ;HzM@i?!Y~tX)sAm6a8}&u+I>ZS&ZD8M+B}o(Nf3NT{guUe*&$?wbi}(U^#8 zVVx*{zDziuqAjkuTqwJEtE;h~2fzReU^uUD_!08fQXKUPbZdOLiVhLHFYaUsxDgP8k2e=y-SvJKdEb z*PsVN0g&7f;-v zW@BFjZ9=miH}l7L1Z=^IJjw%7&ZImgCFblgNf!y8gFIoq7L?PXqhJMY> z^0!ZmD*)~X)->$qtOd}EA^14iH{&yd_)!0sPQ6C|f|VUXCq-#JqUZQ;_ePxon`VS7k^||Gi@wsw~tL zdiBU4L_|WuxLXB^nV-@?EpTQ((&u_W&2S+JegVndVSS(~=E0SO9XvP7D`Vn~rSR4g zdu_lM+CJNx0n2H|4W<)pQJ;bVowxbe(6fOS?ZN3P{EmU*8XHB-5WJnd9PvV#GbcGj zi&*EDMf^CSdVdNO%Q?iDz5Lyrg}nf4^V^c@MvISgN%7mGs%ERVa|ft4s}darovxPg z?GJ4^bKgd=>0EEl#kCI{NHzsG^w6xUD_`ulccq#9O~d7-ad%_{8gI+yk;XU19zpoF zsn6r#A1GgPYQSf+H~ER%TaHIpCs|+z9U<6His2F7FfF z<0n(8+3C!a5jEmH7CIyySj3+Vt{!w+am zB(u+@3H!?u^V~4Y42%65`_UT!t^h9pGSB88^^zn}X5c~59dh7;MJYa$759Q%CI$oD zaN2`;klxZ)xaXffSS@LgM+RanP*|Bth$zZGSABswtzT>~p`oJPL4-)~R+Ao=;n0mS zxYH0LN135DAC3NH2t`I}e6)MN4rZ|~t>|Ir0Z%)w{6TjuAE`YU3ETo@JZ9#2_XS{A zVvVZsnOkc+FqL(Z7_9Bo;v#mPP({>^xDWZ0N} z+Mtle&5|iL{>RVdaEOFbIZ^+=8b`&w+3rnOoyjnm7Q69P*h6?89GO zaz9x2ac7R|^$F<}j=ldS%H~#aAMy?WU4V3}_S|3qoJxE+UY6_YY|j35axU@l``d^8 z=2%*djUIuYG4FYwuM#{Hp$yAN{g{R?&yRA%QWa4fd)%>s9Nw-%74{pMJ2K)-*V|M8 zyW=DjAFj_K%~=n?oR~a8O*tg@mMN#a=n+uM_M92kA z+#g)P=B0~MGIW>e?%KPtl;oFuOUaJoZCziZ$%>E3?40{U3sb05%2~Tq64jE@x^8p~ z>HYpm%h_$0&OeSPX3;h`p_TYRO7bwl zj*#JquNBAxkc2+tVRS8K@2FYp89U~qTl*A3U?6W!XLrfzc`C~lZ61|HrIfr6AW*Un zntJBN&6dVNqw_y&D_!SnEIQ-0txF*({?gH!HaQkHyv~l22PNNVfyXPg@!Kr3`%x6Q zczP;KI$G8aBTeaUS9LKJN!)VsPozwcOYHrmK%~FWkntsOd0sZS(D5+Yv{9E1(wkYkIpU!|2_HT29k$o00-tWI@+z^vSAF z!Lo6~-0OO_MH&OUg5hj;KwA}kjRsb0DcjLwdrL(=`$Whan|Cr?dd!wOgHWv_lJow) zvgv)|@{yG4!(^kd@}?}^3JE+DPrc>p=`3Ol#K`1k=k_^EKvpS;v74#WO=Lt^(z2#q z2Z8eevX`^~P9!LpnOx2rsCe1=jVCSwE|1p`x1c9GqWDOX#t zEq+{mp7xAs35a&p^_^XDIKkJqbkko zWvKe~DDjCyaU=sv1`YAvV5S}ZcV##se!eygZHAIqwVMDBuH!D=`$Q$3wV zd7CkDYFjl`s0a_7kGCRnfP$&<;%V&j1g%M|nhzgC&l}<7?P)IT#e0SQ0hEZxXN!}J zH^{~}D=xCtkq{9IsEpL48K19ZOu;`9>TQy72bYR5r*&E6(fDXyhpOONj(Xtdz| zE?K9K+gla_x)TYFj~uv(YMe%=_)(5b(&+AqT(YznUSZ`do>5vB2@q7bKseC~S-%R zi#3y|R!*{163u5LMU$j@Biq{Ws(n1H!^6w4q?h1*BEa*p|FP~cH``p-XHBImcO?h^ zNXCSfB-^k`Ol379ub<5f{qb|OlM#cs7cvY_umg-oWChmIU#5UXZhmTs!A%tRDN-+@ z_GYpAeH{bp<}!CHE0sweCUNTta@03Ve^Dkj&kX+vxcTV9m3C-GE|v*!4IQ~i6-Xi= zXQH}FO&QDk0_uTZbthytT@m(23~`4RN&({m3A{IkNft<#zRB2vq3!&_ps938JRU#? z4sKXB$3KM;;XvIlmwF@?!a)|LdDxl+S+>d8cXxl@|$N2o+8lM1oc6b$3C#BYoF%8g0O zSS^iV8Xv=0)!K%=t%+gcV9II}9l#UyEt^&rx)~DQqdeb@1Gsluy|N*CV${76ABK^&j)X0XS**zN4SoLqn|~n z9ibifGtg5-s1`LX#c5~vn1W9+tflPs-{D_IX}nJKXhwd;F3J1$+Tv9fnlN3bh>5@Z zws5+GUg&B7=0U#=3~)S+gHvO$=g(EJ*JAq>4 zofzTkVKlU?nj0uW)Prs#3}?TJuvOZ|+)0F0nKNT^^f)P35dPj{9{Ha~rGUv=BON{Y^KM)0=!}^rh-p*@w=DhQ}=TH03 z9p)sT?@$4hFq$2OS^>xH*B1%_7m7S@3juT{6Bsudigz9^cDY;^M1-gdX@HSeU78^Q z<9K!w-{9KBc7%v z1aZt+j#F)ZhtY+%B3`;`YxCqe|LE^F@hnD?jwpqc=W<)7OkyU)-1f`FOy1|^vMF#(WKl0v zCd_bmIgZ{_TXWyt&c}`YmQPQfb}9Y`cDL|!uYB+@b_CH!BuVy+{BG&za)3IYFbs&C zvoQ;|KYOdXjdfF-aKW>99yq-VF;qzMNPqL%*^1q~ikptVi&=b7HF9d(FeA$4mV%yJ>@D zwtNXY#kP-Zi}QhG7IF|f!M2`v)@!0Mw!};GFq>_narH6d>ft%-@Ti&kBEyw*BUoCw zcVazD%237*p0yc8wU2ckS#^*&(vHOH2mFrUrK`AyZJ$hjXY+yhCS&^my?wh9O}DYz z9vt-x!#Z>vW%lQZTgBF#|u8OBx2mRAx!pdD;Pak$1G zYVAy*)fS*ZI{4X}iTq&n$+`GRc?xvN2LP%kKUVFe*T@y#o6QcO)$E}Q)^JOfqM3C> zGPOd(ufq0~9}z=Q-J%XTCi7337rSc!3R)37)M81=I( zgx%^w{3W;m2IWwQC0%0Sl*x?-b-_^}%t&q>vcI_6Y#Vm_3RP-)v7IbeD#O9ac&nO} zPX45OKJjjV>c#(iI%)pPM-m_opbTIDU=H9G5E+mf&=xQqunKSn@C5K1h#N=&$PK6z zs2gY#=mHoEm=Kr=SPD25xEgpAcmwzqL=q$jWD1lV)Dtub^d3wMEE23892A@wTpxS@ z{1Sp1!VaPtVjU6+QVTL0@(D@;Dh%ojn(pt13tALf5n3186516y5IPn*6*?EX6uK6= z6}lIC6nYkV6?zBy1o{U01^NdD8U`JP2!;-Z3q}M+9!4ETAI2QU9>yIe7$y!T3#JUF z>A%zsF+)33JwrP~J+`6_Tdgul>vagZ$;!0V4j|n8dv_>%aUzNFKm{$Nz&=0RX`2005vxrPYi_ z{mcI&!ThJ=V}&TxXaAS~NBW1G$N#5rP`JS5|MLGx|I8=&mvaN+*Ixdc-GA`^$baJi z5&jzC%TP_5u7i{6FsCKl2`= zfcClj0>|YMQqvG{TB_1w5>3FgC5^v_Z~f}XZ|5PzLbLh_%NKIJ2a@do68^`RB+rth zA@HLJ@A-ncx~>Lwb_y2l%h|oeyhz+YUIhoKY-R_+z^{0}e_M&{5V0lvL-UlAaD4UdoRp^;t(wW#8SsC@ZVws)Ta;V;K!L@=fSv!k6lL3{?hE3tXr*@rZp(0ka zN^MS@gVc6H`(jlmsOAj2KPEZ89(pN1CW zWHqd5=)k{0TnKCa{zRt<)j|GyesHD&ZG;3cLiS$jAS{{6w#))L=E0l;*IU}RB{w?P zzaDVAd`)tub^)uE6eC@ooE&Ef{J#>}2ZoP^IIm9+?yy{+-5i2DdEI(g0Cjy~+@cQ5 zSCB1M7HT=B%A7Oej8)c-kaA5pF;BEkJoA-)o8Ga{<%lBgtP54DfHy#lQcn`AktnpT z9i@qNALghMK4qeSZq13uKH=rkZdZ46YjC-@Jl|Se9Sgkw@=oXx+bQb(d(w3?5=@GG z7rK}!q$L{{?g@Mhf?nYOa`s97Hk5xk-*NrVfxd~pKF-MHG=G12yx&Z^Mq-A430MFF zaydP{TTwK-e`sGjfQVWX!`IQixDj4x>R|{%wJJ3>zh-)10MK+O(f^k@J@SGzATgi- zob>F0wFnLJ`h^0c-*Irl zA9XiqFP#*n0HP0BV5`ce84x0vR)qv;L*rM}+Z~|T0E&vB-X{vSADnaBlg{oy|_A_(iOP?$$^_qR&0ioBzn!aih$mi7#&)d#}F8J8~tLwS$TW?jbgRk+A z#OK?O-MV0DsNyvrSjBHJMwm8#+CXxEHag0GTKs>*;YO)|@@tNxWv7!-$Y2R3lKxU) zz9n=+hCuj3lP_={u(b8nD3@R9{DZ1;K2Y1~*?E0^trGb1$^_Zc6My1(vgtU>^8f&B z0gx9Zg`5Wf{mD-N0SFMWYykE<8^8EjFe!dkNETv8kf9eC43ck9O@JR|RuJUZqEl~> zIpx90-2>1(HFKovy)5HvYzTm#9|k}PdJHwtH$WN1XE06>itvWX?d%M~b$*&`oX(iX zld>A^C277K3f5pPAVL+8-*vPo7(iZP`S5uQ-&SX_ALkHy-uLHorD}SK_l1UcKyegucab*V zs)lTtEMu;^apy_nbeT@BY8KwHNl$(46w+bT}4A0tts>)#NII!)rhO1UBS*WQN6BMO# zVNCPm%%8w`gxMd9jT+bIO#Ac2osA7!VC|RiGV6b}Z05-8zyIk%X6r{=HZLPDF$|~|b-n13T%9pB+ z@3N}Xe2Gjd?8=|DQ#)@h3uT^>dGLeVQLpl_5e)9i;ZWgl)Z!E>F94K&hzc4ZGwP9$ z_gT)JT}ll%v&SZH#l=@APNDnVwyqvY1&iiHtl;5W<0R%PVn;idGO=@?{Y@dmD@Urx zNc>)UZ{pNA7Qe~X*(0#hLKdXaBrh8^8;}utc!0JjcUV>Cp;geN^fFCSlIFmlH;Se? zeLBhpE~vA|V=5=ks0LKD^(tEQvv`9jKIDU!=ddE=PG$_}J$h{Qb?o9l>aGqWQ;AP9 zreBaZ-=f9cq;#$8H3}RR*)tZMNa3i9wY9V~+TPwB2Jb8mc2^9-`rgWvCRK8K6_w(W zmE}ZG*=NfdoDidA+R!J~@Ql^d65&4YK`f{!v95GD7T*jLMzNUb=|G7Ty~k9@Ow8{? z`q(1{iC#7#8^l-TzZign!OLFkq&VbTgR2j*(|g2c$-7@l$#N<~FL z9%G*;srNc8gE={~V@2@UDx(D_XaFx6!V0cd@|&WCvco({M^~AMPlqDum0tZvaEZD$ zONP5&YoOFREanSFbY(`yn|>4$f#Az?U2eWzC%PKF&lawxS9%f2M!I2a?R0Rj)m{o^ zfr{>d>$$E?5B%Va5N#6-f(YAx(^@`^3snq~+S9gGR->c~`p)Sk5GNcp! zG>V8&o~taiW~~sSVf*=`#5z&y4-1Pevn1pz#-Yx?LI7c`5h!NqPYyXjTchiX7NJhy zgchyd z`bzgL)&Tk;y7}ZTc+XzqWTRKa*f3c@%9qZyRhT^uMzTJ_=HE}+;HHc}j!LD)%3MhI z_f{vf2N;g0vuEv>M1CYU=191sy9MXOI4t0lYy!)T(VBb3u(iE1zCIt%$g);JTS1)w z&CmHeB@$~II~ZajX3m`9DZfp)4K7wp^A*&3^uMsDB3n~wySruEpzUWMrb>GA)St2N zQ0EyU?&Ql>UFE_W@-L^pOBUszZ0XL>Od(fIPK9RTK^bz4j=#7xTes60L!n?2gG9k% zl!lB?8yAJG>lq46?X8SOtuhOu<75EGyU!(qIB#G&@WD?V45Xi(1dIG}FdZG75JirQ zYg1^yD%8#GNX(e;=JiEX6GXC4jX#ch^*2VseI}p58{w`EGH_VR%UOc1l%`n2?@bg>(AH}aVZX{?83fs`UYD`s$0FfdSbh$&K_7fSznpajVC)ywe1 z@MMvz9M*s)Q)%s0m1AuF^KpJLtwJU875t6OHc)cJcZttfbatY&_nZ?_7)V2;s){Ef zYbE$V84Ho=VT%N(s&M?{Y9OQUNG*U-Gr_loyOHDloxNqa(PF)WH`)$)9rGV=#DrOs z@s!t`y%}uxeAq}k!**2SJ$F9-JggMH_i{Vg`nu(ydxu;s6B7vv#ds_@ZHu?%7)-P8 zRR?LFa|GRU`^qbHu2@qom2Xk)1iqm7q}~dcB;3x#o4$F47nr)Xrr(-?maa0t14Q#` zx_L%#Ux1)hkU6y$&K+B{7BO@c+VRAzA#Dp>rF@YaUEe_9A~Dvc9WNm;zPtoIw3^g# zuLWip6xR;QN(0}>*DS>Z<&vt#2mXM3Qg+Xp?~&!M`;OO#+0m9=pk0WEJJig2*6POMa)5O?V(hZWqh~8|;6A$Gg7#dJdQ`_XxE)1$ zcOCWxe>we*UDbiEQayV&Q91IEHU7}`Sz-J5LLz$FXjHzdE9ba3`l|Wcmat3uP!$<+ z6>p;(oKL!E|0~#%&QP>M_jd1a*A}`LU3<_or6;|*rw1I|P9OUuCsezbsvYmD)r#-W zvNxG{{`dT!v24bUh*m_O!ea-_ORL^BhQy04vp+21TTCOoe|TX!TW2-#=^jl)xjhoE5P+3tt(*Cuf{PZf^V<;1c!m zxeneryxAX}YP_X_1s;dOKfQtO&bn=h&#h4H?b|^z!5qj$+kBk6z&o>r_{zL>0hP6x zMTcHp3-v_yvGBOn8ED>VB-$$-uRbjB4e*5WN%lFBc{H^E z@(%n-lMj!+&3n%iUiZ@t$0vP!kJmq%v&ego&Fp#Qz1cI+Ib88I^MTf5zVy}Xd02X! zsB+MHc%^dDT7;hRz!!pF;VyQz5xHCH;A%RsgXlx|9{D2p>ASRQk;9-~>F9jAsi!J+ z;-w>>J!f9t{fWJ^#D_-eFpw$w&CtC1)#IJUf9g}ai4zY$^0w>zYJN|0D%ig4XxOJYWQNZ$!svM9A0O2?`AULf2xr}aCK!@PEWe=<~`F$0HNe3PfCL`e@HaEHmmV{*48(lc?NA=N z-$5G?Kpb;0!{74r^aDqc2%rG;<-GC8nqu#*wM4&K{m09Pwtp?axk;r-S)!cx$+SY* zBJ{o3KqrC{T{$D?DrT=o?EJ>O*kk#m`` z3T{QtGTM2zp)n#~b}P9K6|N7n4N!KM=MxMa!VhE24~Se8I#XZtGA7UtXJ$ya4e@0k zvMb=_j>Sh1{Bgu=YJjkcxFBUI*<+qQL(I|qS9LM2Q_#$!w})u&STGQI2xFPw1ZEqD z>pmWL+UNsy&TOR{dhTK6XWY)ctc!_n%rW!Kfx`TP5~qYKCiQ`F3w0bzgJ8^)vrBa=`*9 zBE2VWxvAd)otphy&HJ-k*xqB0`GxU#Xa3ushf@u0QxiO%-nB(wTVq72tyn&B)SW0x zfqxkX*%Y4h`9|X#GW^^OEtZros16TmHnXwj#|hf<8E2cdVyx9*W43q6Nx;_$2PQAW zcF-SDX{zET$_dJXxPggD`CN~sNr$GuW0dybRYbB``=)$q#)zXoud)?>FjT?3qn)5L zjSF2POVdyk2Ha3aXM~i+LGvYQzlO)1z)0@K^Jjf3R>EDiLMQ48?Jin%RKj`s6$lQ{ zZ~|`0M0-1y2CrNEZulZIzvszE zw~R|r7kI76;6=w$Lebmdt%pvqEJ-Q#t(*+V-+&ekv>E?D<{tiM_`kKjliC0C>wks@ z28J9)9RI%l$M}C~7yobYe`Yp%hW{S_|63vcH~#;>ApFJu8UIE5Wnci1{`pO~1OSjO z{2wy_003D22-w9oIALI5dVK%j_Zk3!co6w%9xHxX(C_&(ZB!-d|vlIKNRA^BT}5w z>o&j$H~C{Bfy_pf#GIgx`U72JNGu*i59E^Ulkxe`62zofFZ;8Nmh&TP%a$|RND0i% zWSdaeWQnsIVhKV9-iQ47;33xWWmXgkH$}EFTK*%kf!y`u{dk+)WRXF9{Y9(Vo}U=C zt=%Jzm=>07Y^L6%|-&^3q_Lj5EN+2^7i$IQHbuXW*%nv?SxWlSR)Hj}p9AcfC)77K9&kJ&(w1sZ2hhGp{ z3DBB83kqcBxKWK?gwubP%@Zi{{EF*-gF2jY>5?QL;?W|{IT;==w1tF{&?RQ;U!eB! z{dD!#KOkf^lCD;#V`;OI2sYf+{-jqnh0Zl%tL#?#sBKODc?MuHR>4ZT3`xhK1u3n5 zZ`aOoxW^N``l^P-`_A0pkdAN;89w-GNvOdDF&3uAW_L?;A`q5;uR-l~?9=fDFfY5Q zs3jYEZoUfDI89#=yPrPVx)vwm_2N}rbU~+r=t=|@jX#f(NEbfA$Q+=R=-uLLr(_{4K(tv;>xGqB>f-H`c9F=g95AJbL-8j)azWiJY_MwAIF5b>( z-vdG_H#wfz@Xc%x-O(~LJ{2{SH2=NlwI%(VN|I`rP+lzQH-vl#p4LO7!=q>c0e+Bn2q1ZbjdY*@ zN}kkA0*uEhfOcrmVIC0F9ps5V@FN8BS(zgKUlj7cDV5^3p5wfqllhdve=VpK+UN@O zd~Cms{#JcVlLrIUOV<{V$lm}3l-#QbT66W~qgAu_@E(BE^L7!Qa>?`c=Q2l^3kLjl zwDzzHV-*6ia{W$+?DR8MG1n^Z?x7^e*8|}{iQqh3l9c9G$`g*zijWEcrRpFydP2+yCSp_#(4neFq+4NIKUZ1Vx27Q zUv2~bVp;U;_HoEZ+YEJ~ZRw$dMpyT3ZJeCMlci}{LisFyj@wJsVR(+qqy_x@?qdzi zL-%Z|;FVw5DOR#Y%IC}#Qx|S5=1gjKWY}1=^i-PWefY9&0mF)eS+_AvCpSB(YE!a1)UCZ6(!=WJoHl>`SO>Y);V%IOJ5Lvr5# z?I}4b&96M8!@%AemO1;v@l;kAcVbi6=EhMA{4~dvM_b z8ueslPni_rXW#PpLtzg?{Zd+LViv8(=NhC%Hiyt~K@cC?K!<^GsE=4`YKxRuwuOrw zvn`7NG3)1MJ*Nl0v5&;8A4jVOJgi3-Dh+Czz{>-K5|Ge2)@+q7)NY_t#YgcSG4u<9 z-kH5vY`hO`iPav5n*R)ND3UFLvJcO4)ktxSXxhrlQiD9XHRR%x6Y`=i%7mA^M#=zd z5=XkQ(hw@r{FqLpfY~F&gdaaC2qPJk6@-x}f#>f%{!<)Cyv#98iLw+#;YrAGD8k7? zGO$p#AY0iX3rhqLBpljb5QJfRzguGTs>v8xk&J%{iIB%9@+UbVE7AGCLx}MG!XRKb z2w*F!`z<8oD}eA2WR$N+>Vf{&w?&Q#0d2lZ6x4%A0v0r7hBTOzPL7xZ8U{3(gQ8L; z(4wH8kt@`ULbL8#p%w*k1W6c5bf&!x*1{q{O0s%qqHf-!IGxa{M1vD>I?u#7(Z2x# zI^prnfPNqvU9A!oveE~@IzA=U-wZR$a+Y&>8Z~>zinXtT6TTo8ergwOtbg6=gU?dt zc=NiNwRWoU#!_=mC`{+)q)$B^NU&(w7sddcVzs7k-`BF_K*fGnk2I@sVU0j26=3ts zDDi-nbVUFx2{|i*WH+K26S#%?r_paO~}^pYB^ZBRowW&fat`q!1#k`!}V0XDr$yMgNAm^$PhA zjF_dk4S901(wN{1ZU81q$;SSloIkfb)S){1Y}W4h(~a!iNUM3PQEKZ-k-YPzOF(8c zlw>dNXjP?AJ;w|fvUG3{%p7qi_4uVp=zFlbAcW)@u2UUI7qSrf*>Q!L-dr$tWhc7q z(Bv~#3Ng1FhJpu$1H$3H%I6@qwuGumVV~D5;&5nQqt;=(5fdc-xKnR-6&L~^h=~V*FSk4wHh8Dw2dV~ zP#cCJTAAqjw4fh-AVJ=J~d0IY{??AU#Xs`J~ z(mfJ1j6@+bKlXXdPfzl%Y?G`dR{$Ux{CMl;7?Vor2MD(G$a=7fD|P)p(9X zL3Ir2Z!EXTx@|U*TOi~AkVqtu$cF0^i9}#QZ;RM+4UlGOQHW1`9?+)_V z#K_c@#aBkn*BQ;PR#@{3Irz7z?f( zhfhsMZ6?H*<80Ye!3i0ogzC1HkmC$+lk`6>vkc3pYw~9l$y^WgClpI0#?VQ&Y>s}D zd*~WZTrpTp8HqlN#;Fj0bbXefu7}du${8QHuvy45VLY(#1Y|Yg8*l%)^gXhQizMt7 z2W_UZ`7Ius#8%$G=CW!n8!g7PB1@%Z5V8hMd_a$64{bhni<~Fem{->c{DW*Xxysb~ zoM+Dgl=#$nBUL=`iwN@@QhjbytxeC~xZDI2`pANu6fz;eDDJZQNQrUzEcg(aUTuc2 z2Em$U1XV%YZklju~486#Pqo|S9Q{SgUY z{URw8qIM)q3Auc;kQ^egtDqa=@$jEzJ5m{gAw2m%aYCDG8q-ghBKr*Hy5vG^%HdeO z-k`$nfSn#oM)PHlxhTUWmJf-yGr+`Q#u2>$0=1?ny?1mKT(1B$L$@-TvBY4ez z9R4O0v^2k42%UVbDizfP^@=a4KrXB9b2ii||8nM2Rpk7Tn4Tk+p_=-Z$(l!Z_o%Cb zH_ln$$Za=`A(1m*t8JH7K56T*I5S7_h0EXb^_)BXKzh^-eGhtwa5~f}9Blo zCDY}t-FEwDr8iN)?WRd1*C3dtBtk;|ZO|27==?N8SS zgzoxf(#-Cs8Bct#M@Xafo}^TrvX==u!|Ta&0bd+6_Shly_eq5V8EJ zWH|DaT8KA-4(<*n{5iA{Mu3DiXKjZsH$sqr!@q}igmgXdDCUv(g=`DR7}8#mZ&aE_ zZ>iGjO$HG+?q55$S0I{ZJbo!a^X<%ufT&)Mj~GaxPvoo_7t~?9%-Mq;?Z5;5qCE6s z0Hkl$=k*7DN8SPpdwLLDUuFH;@HFqI=@ab(1K(;H0Tit|yhQ!;hz$9CMs0-wU zmgjN})CVRfHxH_pd>L#7-2NU_M1ugNn%hkR351}FLh`G#+fp$o@S6ci6M&fk(qP=H z)9A&>asH9+@D%D81ld)JFO7+s@N_nqaDzj2OQCqMHl*cboB%G+)M6^PpFt=}6B54PsBvY#xLuc{k!!d0w3vWMO#5Rdob_PO~ik>fA_ zS$A~@P%3BcsNb2ktQ;;+A{_4}G$CIuUzClWKs$&Y-1Am5raCM!RjHm+`*^UN7QqEj ziAT`udI|rBh~_v%^+q&R$qh$Xw-&LK&i$~Akvt0BbHBtZ4_RZGoi{M1?Zm}fj9>@% zM2Yh<{~`(J@_AZyuj~7J@%mS|4b|i9`l9X!M`fw~ww}xcKk2sM}8&rYrl%}nfz z;nZ9s=!a-#unS2a4z03i;`iz9mwp4>ODIgaS-8OvJuVenSLsH4r-V~ zr^*{3LdcLf13a_N(T!|D$@VOMnbvaIUFverEgd582qgVnie*ttzR_y9IV*2FVN!n0 z1%aUPS(8E);Vus=L|;xA>```OwMN|c$$}P=trt35&CtK-6C6}UW`Y7~rK%PYC07%@ z&mk*NA^jbukIAD&+w=~bZbE2z7{OkHwJ~5_BVl~a(X-$<(8{5f_R46ID{-!_IV<5> zWZRg+>-^^a$KAWsJV?4bAHzdnoJ;PXqx<29Lm`+dd8|@NCi^ly<0+@vCo~sa@!*}Q z-Mup)e;67^KoHU8l71_5i;6?HEeCSfbrP+b^$fIQKZFLR*);E9j;WagbzL=U9&81n zZjNm^2gKf7e^c)JH(uir78cu?HS2T;riSCAW_ z48F)VuM}SK93d$t$y@JNAphRe&2RI2W>VN?@F_Xp5ss6`?cl8A1c(;vQHw($DbPv4 zP2IAwtKgOE?xwXo?tvV07VM2|vlr=)F&9`Z!Gsnw1Bra7P<5JWHOUW9^k$8i$ytW6 z9QR;X=fju?6mE=-Nq?}#dpLHG(>q>n?nA0;d<{t7ZxEghj{sALgo?Z}2MI0E2f4~M zvC4R6=~80!Nt9E>WizHmR`Ij;uJE`jNgEE@p)qyEpe`2TYE5?9PBD-PC4i`Xi zaRWx5zTPqb$1OEw_y7jR<}0+DO|x3SHj zr|NzQNhFdxHRNzfh(QF+?ZfT+A$#;eca+}1yRIsUKnTP!Dz>O=0bHOt!nkl4ybFdd%4@#!7QvZ~^CiNDj!L*T3k`;lPsxd}D~USnf`# zg+f+z*m#nXxl;kOBM~`^B?MpDIuUVS(DeKfz2L5J;}{wINdG*_4~A%n*S)A)6dyAl zn)p_Sf$c~vm{C2YmNuep`X_(Z{~ly=vYYnvUMh~CAeN=gz~DGwO6xHX3dE36G?g;* zC7Q+TX$&QZ>bpF#-j$56nB9OY{~UIFBplG!y4hkGiN=5B8y^1^UR9=}>> z!bqzZcL!3Dd|9*l8OiHrD3Y1P-d*mLpcy>(oRQB{t0xzYBBla` zNEWnndl}b}UJAdz>?b{zED$$JupM<|7O>xHuYZw|qzCwK84J*n+5dzZ*QqzpIt8%2;#gpeT8*XXKRj@)og8<8k8m`mNxTwxJizAL+9>Kkqi~crTza*W<7r93 zj7DDy3+RGt>wi|hi?uM^3=LZ~8P-O8#27e7+-s7PP?5{jBoxm4E%A@(>eTeUwVWeN zVWWvLllg1+vU*qTl9ucy_)g^^2j}XwwE^V@uR~=N-p7PJ%P#$^<)MJ1E&rrt5m2~C z#iBh(8=mFHQR6zhHx6q!@54WEF)Q3#oZRq*Yy`h9pHfsZf1L6F#EzJEo=YBuEvY{Q zL{U%6mLQX0Dnay>84T(|1`!ZMS@@*^IB*cm0I9U2TeT66k@#`~NBIu~ zRL6;6{em;>^9LVP$lsER2|~x2A10_Rmm&ElQ!lR?E%?1)O!@c- zW^w_XQJO_QPpmF$&DK;>wKlEAKUv3+)PQ&BW!5&a^3Fh7Y&%I`wBZ=jgbxN;{4GJ3 z3@a^|ah~S&8H$1=Gd=YCcZdz6voTaOisPZ~;K5iS)9|dEPrAb-YW!Im+XSw2mC)W9WiUyH=c6 z{o~N|<3UR&b_^C~n9W|Q7>APVPAuXWWF~3)9^L9NfE&;H77`63M)UMoLCwU61&5TF zYpF%%gSnS;}e&sh@rXbrp6l)?Z z!+2sYo1J{!43blR-~wFFd~C{OMM5Z<@<9;H>DRqs1y>rfIGl8X zfpx!}ZSsPgSv|ZKBd>i2@&Fb{(6w>i=F9BjzihlJ&1{|B%7YW*>}_kt`x-9MyR_r1 z*1PcF_CK%gsge0j2&Fu*{S%XP!Op&j(V3&_0 z`5US|w)I+90FPj^!Q4TBomN9xLa#9$$p{QvrCLVXG)$XB4i@yIP=}U+T-)x#f;un* zj)o6H0%CIz?~@wDA`L^x1NJmT%!+hGU-U}u4x!{G;6hR}wfbxlxCi^T9GsP^feO1w z41`ISE#ifzUF%SVNWbQ5jnd;wqySEIIUp$Py?3s&SeIHvCCW=UHyTuzeXa;hR2&J? z%NC%SGj*C$V{z$cf4zyn?3n_8%SvxA{suMwNUkH_6{}R&$r< zK#evV-XdiaUiUs?ysxtnJ$0&jg|66@P{Dq>qHJoyv#R@hKr124t5LhgZH)(ds>llALfsRdMLKA(OvZ2BB{-_juU|5b z*&^dU%&9^%7mn#upnTk(vCr9FL5id4^nAw4aW%;+WrC`p(F>)7*Df6i;%c%?DgG}B zJvc3Zz;#w~F^5{#geIWMzT|szc`8=juxu1-+*U?gsom&G9QncvS<_CJJX$J`9M|!} z!QsGXRBQ9AwXDD45bZY94hY3ekL($*&wyE_0z(0F4Xt5y06@d+;LT$V_v|jH)G$Zd zm~qiKazkEdomTU=LSrj;8GoMx%{c)??5G%Fc*eZNv6({`H=(j8TLu>V(q9s%ynG4f z)!C|Ukir%;Z@mY5EjZ|e5W%V&Q`$KnipoXNJ)Z{5W+qh;HI3Dal9y#O6Xl^N>Mlfok52?V z1X$&kYfKVPs~SW8N&k_}QfniJqfB9MBqbF`b8>s2sjrTTr9Ds5?~s@JlHWJ-GkFL^ zy8A(V7pFJnB%c2IEmJycRQwv--rP0Yh<~Lw4(eU9blORTrno?H**uz`d)dR4E=Rz0 zaeCFMq)HeyM2hfqT~OEoXa^tN^Jg{BO&=m@g7GUcN~jA)`J{la zN|R>D!7VnsR~1u-Rd$7I<)HMmZ$aKVaAP~1=0L-K1eslfeL9Ua1&8)RHf9`?rf6Ll z{10&xwcTw`@F6(xq$|BsZ!=oK(<2}O#)GmuP9MT)`0wF=h!G$v@7LOLqdRuCU+ zuwN0;`OIT%g<#2oL_-Rj?8HOi8qUR86)PundZjdiB%T+3ac0%gG+x{i_C7VGd-fYl z=@s@Vunw`do#DF?3=9iC@NPu&0V+Q}X1fjrc!>MQ$asmmtQt;+JeQLVhD| zGka?75urG3dEZaJm_d9t5+F*s*b(*TRJ&MI>TNmAHiR0!b~~vEb{9;Jmu#UPp1ZwB z<0r%f<`Lb6d6MW1=9PlAZnM84LSw9=(tSB@u-=F!b&4min;Z{b!CnHB#Phz@ttS7p za(}6GEw6< zGq+x@C=YKltpt@-33V;o`x-rdeB;En_Aye0lJThqUtaaDN$@jLSgGo843;-oX`Qq8(eU4pIGl&*h# zJ17^|Bt);=__r1ZROVwbhM`dd$|3gCf?*kmp}4- zlpZAL9fk#lijV(um#SSvxj3hE7&?d8v>sxiDD44Zc0 zZ*JI95l&yS)k#zH`U=cRpaMM--EG~PnW}#ZQJXK4FPW8Eq3(}%wPtNqM)0j9Wmv4k zRSV#bi%FMpg5YlC&WW#h);|MmQVS(JVnJ$Exga|0gu}BmT?3dZ;yb^xW+lbPxq72) zMO2lYB-wQL-ST`W%AVC5a3WDH80lyCUnwxEv@^lQ--ZtLHiVA{ewnmZ4RpWM71nr# zZn36N^r@z419l^P&&TWzRbGBtt^hyKmhkHmUfDnMuX*xJIUG@ zuYk3xPB-RuSCuj5wkkF?i;@G;mzy)-gY#*&-ra|T5eBp4+4Z)!%4vl_r}lK%%=XmWgEu2fD0LbC)oPy4=2GLs;KDtjP217} z7gF1=>2-4lZ@5mu+|tbjMTZa-lNaRodl=+lJFMlbXjAA$NMg^9kZa0;F$JLqJ;B{0 zaQR%Fm~T$Q=gOW9001gKz`B4x5%V_`9qI#I`rJ1L&H+nY!_{iT+$v`#cvUy-`C3=( zVpo*&(jbRJ#_`l9)QJ^RBNK#9%TLM41u%~$A^ z&V_(f;)UXejF{3H@G63~Jp^<(w_us&Pbe_5LAUi)RJKWteYo!IYEz?Nt0S2y&oir!xeOiaXJW|9i&)<#|%dP{gZ z7wrc+L4W|ZGJD|<1QerF_yvr()?U&o07(#W49adFM$Zj=a){j4PHnPHs^1l-lJ}&P zxZ0|rTf36XxwynAS|6jT^dL_lvw(p8{v}3SED>*he*{rfcs+)@n303sG7wlf_1Tgj zLEFhuPTdl2$U0Vp228ePkTfwRA{GvZk|x=uQs0szaWIx1LW=V*h zIAn^052<@C6h)03+S(9n-K-^5+%|JUg|~UkC&&oQ)l%yLg(qX}=fhK|s3Ejos{~QT$LplNW=o zTqH&BtupGrW@-p#vzf$ige>3zElV5~8X6!Z-1@p{fTS(^&}r91BxS$eUS^C|E-e#< z1-)y3#>>y#_cGW^VAH0unWr`!E`vKCUhzSX_-OgkICrMB)Khba=n5w$<3B3zC-*#s zm3c!()vt3%btPj zfV5qK5%;%yMAHT{DGqdq~k}J&JeoiP~ zIC~CkufFDc9M`d$xEx!}zgy038aQWtC&s+dv=DoRCTPp`OeZSU&d(2llhskn!KGO& z(?sflABVLV*M9|!&b<62RxQKyTL&zy#bMK%i?1dw-VcttrW0k+p|%^1Ng51i0_6Mt97ZZ~-la2ijlbM{5VOCPyZ6n#J^CgU zFf4zBV)FHE99sPBjA4(YC_O3u__m~L5^y&B0Ug@|hnK2-=6Sl!Pq<#j$5X9>E|uwV zaCMgW6O-5y%oW^O1>KTs;g+pU@Wk*3tw?-Wc|5eKd6_!6AfmXuxl%QpD)DQ*!@@dWsm6=T}n+`7Hmf`S~}^VYsnmOIhvC*w< zWd)W_sDJOBUEJ`|)S6X5d5(WrokH=`8dJi)(4DgJAMe4z?pM$|TnAun;U;h%LP1z2 zzwFd=E>n-RV9~l6BlzFw=+NI)A$qjPdx%t@y!Wjk%)0q5XJ;Y$Rq^ny8~sm0*GhFS zzfo}O2V-%$wjAv*OPOFcBij0C2+nG6NI=3DA(AMyK3`M5>hn4?`Mk)q1Ip50E6{hd zTzs7oc1z2DMVI}gVUkk!jREB7T(oWQhIHb70h|a$w>y0wX0nYiZ6um5{HT7~rbd|% zdiI{3sTUPNxCwt^h-f+NFUHYmkxG>81<`vlN~O)q-TaZJ)$$g;*=T<6K|M_j8J;B4 zkZ%M;Z<&A66QzSf{i+O)OcYB1AG`Pwg%Oq*XY<4Rmf>#_s%1Ed!C zLZ5ig0;wX~q{PXXbK?QFcp-R@urtuGBYBAMtkccbZW30c7ixpN0=-vJ(x;|0;8e^M zLlQL=ZJkmqUTz1WY{80T4PEwIyiRBqH*awNmB+p8OJ%xzzW5%3`1};{N8p26yH@^B%D^})f>=*a0`kL~s%bPEa5;TS31p_=WRM3Ba&tAb?HNni6O0gTO9xX_Q%o167x zejaX!kw!{2P_CE`-_WuLVW1ILqS9jy0Ti6)kLcT^*Q5C{S?qW02nm7iIM)B3*3g6f zF?q;$Tn`C(SU*PmmNr9|1E?TXk9u`VL6mJ0Qik^HDx*x87Bgyu6-t0rLWP2R1gaAv z?Q=;yKkLJqs2+%i)Xp)L%jW6pLQwb(TW+E=jfWv;dLm2S9hjs!=aYw^6wFj<$6Nv@ zj1tIWz9pa_m7G{xKn2N8RfqNYu;Sa%?F&5LeffkKEHZIb;18+XQ>vTIGuDN+4}o{F z&=UwKEpr`IW0vNCOafSGr$VA1A{nQ0F*`obL0nJk|Hc(Cs!mwhzssKtH3Gpv13}nf z6KkNk|2&dL2o9b2m62jmPe_U6#RwYVTKs3ANuMW)n`Da$h2BE)DzRvDdt+rk97hc* zfJ|I(H;5h)hdN^;URya2IikR%mbkEGr2$!${yA@~a}fzm8d)=sID?rMJSoU%v$~y2 zCWyx10u?gusurNy;lM#bO}3+}lkhXu{aH#x?3REn55sq1k(G2(wY313b|GY+sm`%Y z?0Tfc%`%6*81Z#W5UT?e`7Oxa>&_I6#>;Xp@FUt0)EXQ#)G}9(Ugz5p$5M|Pauq73 z0#=Z5L06R8hZ>$U_vjG`kceGQo5^KyvKKdn(7!s0C;=IXke8V#+==7iAg-y&R=lZ~ z_fjz%H|TLc-92SOPLP#k(L6SFgr?ZBPtG+n``!;OR?mYWK_T`0bvXN&HNHn;2zw{sUV%S;YRZZV-r6mdh9Zjcb$ zZ8g9){CT;h#(GS#t7G*BE&IqS*W=MlztLqbHt|=Y1Qo%M!IXm5Xq<(rao8KSarwBo zrk=*aqMzJlS$ka!<#N-#TbAN}(%}#^1doxYXzW&X}g5|f-so5ZOZ_p6FH3xHLHe>~7g<)`{Tit>>`djk_0R72Ry2*H|y(mKR!^U6oIAWRG1Fg=fc!~ z`vyLEQfmuNiS0Rt8Vn6_2}t$PV>4HSkk&h|sjR~brMW6-y0$pn8hT_t`< zM-KB%dc4B`)?6=PVRwGIlNzqzAzc#|itHC^Lox!cS4*8RXX!|?Y2@=rjUE*tN_^k@ zA_=Zj3RD-Mr+^6A5i`V}@Ws`)>|;i&DPPa@?b&)fF*z1a7W@#G>P(};K1uG zs67t&9_jpMu71}380|cKwY*>xc{P6_enh{VI5s2i9A73!?udB+8(gFkEs`MeX21M> zlK7@grmzq^@=FGI&kWtpGNmC|ia1D`o3=gXg_=W1W6 zP*(^e>$Qp`i{|xI^6zDN+LRZR35AKKdngn+gf9P=U4wR(w9!-<`MzY+4UZmGS?i`Q z94leInE@wECTxat=WW_*y^6cRLh6SXWT{-J2IGDYMjRFDY>WO9ETUiTHdA_YagR6_F~Vq`j+W?8zr}e6E#k`8P)w&ewnQE*Vmo$ z+gL|M4+X#9q(?ojR*k&6mqeJ{Q!zu?k~pWvyyu{nx|ItlZ28pZM7kl)KyQe}YTZbJ zrR53X4S%{6*1QCyK*eh%3Kx`&w9xA8?}zaN!3O_)=|_gx<%K$q!lli)g~KS;iwTE| zbcwh`ZMvr5lwI8GbRaGk=SW=KpR%E%(-wMYYKo!RvnC%JN#26mWc>FJTku>lY-;zFC(otM?>l#2iBYYTQ4;=Yj}1rTj$@&taxvp@2OVI^9V*J zhqXlNLea48+UKS78y+7rF=Th_-!z=Xid01ciJbTgs}t0Bj5C8W*GDrU;P~^P*$qC z8e?#=HG(*GRkB9f$Q2ULIZM7`fH}D09z~SKMYG?cdSUZjovyooI4_rp$VSm-1(8|+zAa|Wt0$NgU|9$v!X|VN-#T4J@TH`QEW4AdGE#26 zg?`Gan6k00JO+apM(q3O_o3o|K77pZc@t^+0bF9=01Rl2^RFX8b5?I_H}fL8(KOG%sA^nEaeVPsfl9D0FrmGW`obtw5hHTOXtrPd_g6W_-hS5#Kn>!&6+ zg8`|fK@$i4eiSCKXc?ahn^+R1O4-^)(d#0< z)|k!B89m9r?ex1(Gsib1xmC%~UNm7leK$+q0m1qx82uNnqENd(?}{3YsTA=~thS7; z>0h86H^$jAHccAwsO*$V}**lWW&+5pT1p@PL;{gr%_ z>eqRR%m{bJ%x_RN8oh@EP8%LT+XgJgtps@`2LI!1B4TzW#%N^b_aVN6k-S%kpX-hu|2%ns|PkUQhkf7vOplNxVJlPL4C6{vksF0!0`3 zgN7~#yebaF^vqI|$0i00TuMOZKuPz2*j*(6L0~S; ze#N$__JVO`M}r|X+{Ij7ahjm8x!a_%w|&>$nX29W1C{o<_7LK6Q*dazTwL~hpt0Vn zXR~t7`dBwJ*3kgQa(duC$y=I=d$(VSPTYQ^&ZB3v8kH#8T**`~0o9u3=0D4>>TZ%7>kL=+0 zqorE_(BpH+?fDX9nAHOgTa+ zw5TF@{hP#T2uJY_H;4kRoeyC8yn0lP+(#|?qJm$<# ztOj8ka=(zrz)%rbz?iAF#7H^>EJ=#Vm{k}ss@5fwwtfTD;pfYZeusloX{V`wQoDXb z-`Uo4$V16yuzGO~c<{G#Elm$p!+0n512*u}%u0 zoh@4FVN#<(qm`x$VUfj8HykWZ&rJaFp{r4JY`Z*m^_19kR@KjQOW}Lre}o?3IrOuKMXZ3&=QE=cJyFtegi53UP&fTs^P7&1xKP5coIDw*>3 zgmH!p2wvGeVQpqG^UX?g>Fuw-2s2ksurSv?jM~G18I2BoxXW+%1So72hSPHPV>?O( zj)!ElLB08c-^XRHnM$~3ImMg3lNc38xTfHN262LV0*vCTK zKTUYa{^@sv0rg$8b5B9#=ad8-GS=}luHu6r2pEbYyCw_!Svl767^ftYR`5cVUfoHv z8OARF_^r7Wi#V6QU^=_D^UeM9l&gPom6xuIUV0+!X*r-^DgJ>IxsV&}@%lgzXWGv*q$%@Pc5tLB;hO+pqJ3~i~aF6a_8&S8S0@jKk= z3RJJR|4<15=HTj8bF8=E@a>Jp7E~0ouArvDF?Q=BG^uE4S(E|;0!$*zE3kTNn*|gL z6f;!0sKt+PFq9!^9G}459!M}YoE-lb5MslaV=R|CJ_y*9sKYljc?R``1i? zk#DGjDM+bTSO9?ODpxm&*TLaNnxwAuVS+W@gEbNAMGjvi6tw?^RF}$2=caVH& zNx_*(LOxA3l9xi#Z&W*2fi@nQts4MEK)SyY8GNxo0u;*{GghZip;E;qoT)JcbYxpW zq1sASa!DC>lphTue=?{Sx-Psorm7L4}F2LdxQ4oi=&;&*18liX1j5m#WE) zm~&_l7td2}&<()Ap6ZP*V(7yT{leI+A;W5pEgZw!7$NXFT*SK)J%at=pZK82KJ-;@ zU`T5h+SzD28Q?RToy0Z<@yQT)I=3WRbtqDAo@nBCj7R_}jDwrwF@UENKsfK^nDReA zvjAdYy&(7EJtn}|YeObYMs9%*p^|j``1(A$cP!X{#zkbHTVIxiMH3y z167%BD~ObhQ*lg^FOOH#4mEOCa3=?d^D`;}hJ~r?3j`n(%kzgtlgJYVw0eb-1XZ__ z&+MOAny&WaFPz}*Ue+|Jwnlffb~iP?LD34Uh889lP*+;8^Q`ofqAAL!>5af@;1OV7 zU6I^)h4VY6vWx70ze(-&bw$g8hoGJ6a9NGTm)FIn&c=^DU#~-u->)zEIY|C!=-?Zf zNL1ee<@T&v*iB3Aj=6$azJ*$OB-?bf-S!vPd2k4W$!~ZwTR7kp6|0T*tU5-eAcmIm z-aK40R0bODiW;>-uGkyKs<`QhC4P^QH^-?v(MZsevmF((E>+}=z_0-0iI{IZm1-7qD(?WV=+YQEB zjL)Y&J~|?>opyel$g*mNu<>JyEk_kV3dv@vRC*Yhm~G@Ev6&$DVr2Am8F2R`<8Qbd zZOTN65=L}z0IYC8YId;}O^t~=@~p~u%M*3WfjFd_@0UN>0v=hdnFpjaqutzLO3tr2 zB$=2Co+SEaXA#(+23Y5bT)G1@f#GPa72-W*6uMZlhOX3m2ZErx4^@e%7%xZ`4+5;_XsF?z}A85_T4Hv|y zV<|9j8OWgh5>i`v1;GW5TF-A@Pc5#;VbPkE8FRtor`5&P>HNhlT`jkla`LQ`h9s9! z|7IjmEy(Ix4Poir=G(d1oSt1a-Y%~S)aOgwhom{?%{*OP=UJ5c4nu(mQ3(}z{oIF* zg`ujZMS*943u2wc*@kixzv>nvz|-b9IKtedUlj#X)>B|>lc^(SG#KW}-)QO}!9p?o z`6g4%(1K&5O_)UnY0jI?Q)@H@`72iG#d7j@DH`Rm(uo(P7w#?V@7fZ8qX@QYt(@B6 zVx2T7{Bd*??VtGb%&~kI; z6*eV-f&Q>E?ep@jCjFTwD2S*bQ#4aLNBi0$HK(2{oATRXio z+Ky{h0*3;H3nG2>R`b6A%y#A#q*ng;$%j}U^riGIPUz9N#!6&oJ*t^+eC7ehslqBu zWodsOdKTYr^!l#R`L1nmgZ=`15=?G`nyA9R%#6CDfULuqx1g?Kp0H3`dQT{X(*`43 zdE?;Wq8j3y{Zo|*T7=ecQ-gFJw$8PX+HISPY?qB*nc?3ksbrzK`~)|-@;&ZpaH4#x zb3UOrPi_#NmK(~0iTL=-jCw57HrLsE*>TyJKHdS9X2M;jN(2SD354ueA2-haf{QYI z1a&B?eN>9KE3I!HDq&>*s-Jp$AkrAwEO$-`$0{6zVu;qkL3}PHo1;`sNeaE)ajl7! zh2sYkwhX22aY)84`m?81-2duJrr<^TnMIqo)>vc|1E>k>X_L)Q87FGs3BUH)^l38o zz^6n?yS=030s`EXi)uAUlQ4nSu7%b z!qIw2OIWf}^1zRmOS5V5;V;2YtAR7-C&wjj-(wR^Q)r{j=|H$tzY{RiE8zyK?m2^g z_W+o|P-5IWw@iv~D2EXs8^B#M`Ve6KuF{L(G`G^uf7|*!P6)j~ZpsdbrneWX8=$rM zq$6GsU=Obr5UOZ<`%bx_E?!-n99>X3-0y0cR^+;6=3t$GR6?q)i` z=5>zUxg1mr_wbbXTPelPQRpJO(p+vxul7d9yR%dcaaup|*3svRd+%BpQgCW)l(FS` z1-K#YWq{>2_hJtb3PhSuLAN%D!cz|00`qn*QCot~zU8dx-IuH1{S%$82TWw>>vZT< zOzss`Q$`C?At*YiLNlQ8g`Y;^tSKbqLP&He_GfMY2Mv;l$_QTTz6qg_gf9Y!Xpf`ajrL|ORv}OpUCQA0?2shSr+=CM&8p(S}B#1v{R)-EPbs{sr;Em=Z70w-3 zktuF8B;hHyZ!xffZ6XzV>N!9BtTkW|W$sS3YOaZoOnHS!i1P;{(1NUp)lF6)IRD7+ z7HcGCEXj!Yc{J*gh9`|}(a+5NSny7_P$+@C8*zHlVc&G1REPyQ=s&Q5v1{H=w*_rT z3?(A`hms&m7|RFF$xy)r+Q-^t*tGPkfidLfZ+Z1hq}Enz6+!aUlg=D`x)6W@b~9X! zBIKkETPyyld~^7eTjPH!sZlV3@6klE6E;$;@U z$EN`Q-uU>uakfHPX6Iz|H8WuS*sO}9bE1mEXjEtACF~9=tnIX6pK%Df>(?u>#TXvX za=xkC5ahRtu~Oz(Cjz&6<%CY*?>Eef+}=-z(xHh}e7@&lA=nnM8}F@oq%xP)EEgi4 zkLRt?t&MS(D#07_pVe)Uhdsy};6I&-g1~)n?vuG!;3^0%GQUbtdJT>hAAI?%N*!ko zv$9nO4b~#6tEFhyKkO=*w)vvZ#YJ?{wpNHh0tb6IQm9pR&IsNtATyCP<}7SnHw%ug zDGez$W15+guTWU;!tXMqSoN=NCI%&R3B%Lu3D#^o*6KikhRj|y&%)I&Jl%p>K5um~ zKu`$YTpr-Y-*i^o%c9Au>cAG_7`HZYnwc1MwwyG}qva+3c)Xn!P>o!!aV$)x;0~!r zN>7GlfjnI{fT|Rr;tt`_xeZ=-JP1q*G>o+GblI51E?2)Ty}H}!S9uh_uQ6<3SMfVh z%NDX}l=FRsY30@~5i`*mKaQ?$ROD*pE-U-C);KNlT`yCU@hH`NZYVh;$=M|b%NA!t zy79b}u9#u}oPOlULS}7}rlP|9ILZQoG;w#KcCpwmq#S6LvoD1{N(Ae!2r_&2A8oLQV}x5{9WjN7LaR^lERHP)7;cl z)Z%WENYRT2x3ikEle*`O{gwpo`g6c64YQh z&$V^wx(-Wp-Sez-f>cHWtzSs*w$ESSvul97^<8jZ~T~Pa|{-Fz3&I=9*P<~ zsd3UdQaI>(-k<~siPd%idcRJovjFaAC&>i)`y8(M`!$emJ^T)?5!PO|5J40>3#FE? zV)9Q%uGQY5Kx-mz)}tea^;G~S>76^l39aM9sLn~wc8BWSpHk(UNU-#%;g-d`+SRoX z=!I>xv>~w~Wb)n33gs>-6%uiV8>XT$)o044S1t%24hLRqq{X7iy~0jlxYb!3xfO4K z_e0t)7SjWQ{CrG+%6S1TcH`AL0w|-)-E@HEFh2TOEo0)LKBM)(%rl%%iKJbERw=tn z`e=mZ?TJib6F?{rJM+$p!90yd!^7(P;iS%lwrOh2_}zY&l{m;NGD7P}b#ypD`4$^r zUAis*Jkqb;))^kXP%QD`EOk3J(_w2gqE+;qR9t&0=~yUfIUapv-E^tC%p~K%CE+v| zzPh0agM*#(6yyav*5u6|z0?rdg0#a5$UODp%Wjc%9uH=pXt~pvraLC-tDDc@oiGk& zP46_mb42RSTpmlg%$UW=1@`klO#o(RELM0kd&pF;DvWa!iv?2-@j5V&A(M(N>kxa% zNJR=Y0sS`d_d9~)eI6hhY%`+EvZf_E#*diBxuzzCoFD)%RHWoDEE6au$V0iOC-evA zt^xYPjH#f=E(QWF&QBsBF9h+2wosM--~`_4WS4_I3O0DYfbc48fd7Esu|D3BAs$*F zY&Xr^tBvaVlxq{&F#E@Ky|dNTtG3m~EZu5*j(KfALklHTXev0SQvk129pHb5 z|NjgBGyO+LcWVP%D@Pip|0)4V&%(^WVWMyRe^~(_8k;3m^{YN>FzyGoSr}~dL*fA(L!7%?t{?Q-pzsNr>BTVQ)`y2f${un3(LI4^J z_pkV4vlyzCCKk^roE~?)YzxWz&w;&z5NfmkM<`K%5U72H{3&T@ww^i&WW(&0v$4t~ zjaQt#rcR_Z9ggxQGG2N$4IHa*R{yl{*O)`0!Jo$f2w%+J3S&CmrqGr%rslIWymj@i zIPqRcNuSqZa-*+YIfEeLM(&`GuM_cW;+ro}5%@8rNP<=opmB{9ehY1Z<$B>^L**LA z$|ag+Jr@@6rX|ny6+k&U05f+HQ-BnIBQFlx@0i{dKi!X)mxCkBJnL`#^J9tJ2nHc= zQb*DPDOn712qe*@Bmxo~2?+9Hy(5#OlFCEtnbiw)Og_T&wp?F9OxY$-6HEd`%--Ml z5N*}OLaw9TLgeQz2k{aq3EEmji_FsgaJT*fe|+;zq?*#RSsxTPPOcHJi#f;r>q{Pg zR0RQE@E6X5beeS593YJyw7#AdgSn5a#juF)xjd{*-I9JOJ7YZ*zpD798Td z$4x3Z*5opQ6m)<-l3L)l?l87DisYo6PIeDF>)1 z)KF4=eu`icK2+B;Cq6?I&fye91;~hR>2}Fa2$&f%#-@PReb4~>0hIC#EydELirZH| z)Xx1Koyb_+uA4xopKt2muEXsh8+$OLo>kuHO1a2H^lDf;`Sl*w5p|kM91KcNf=g1X zbq->ef!?|!a!695Wi|&1T^;Pv zDXjHf&)@`hg}lAF#2>_#o=sP`N&RkF5)#4|V3QFYRP@UcXb1?h$)HcPrdExYm(JrN zYt|#WJ}jRJ@~9SFI{(**%SV@_vXJ=ZTCOSQDiwHoB7v>2lLeR7mDI1@&t{L$Gu56B zWdC;S)ml_3R zGN*2f-6Vg8VPPyO8CKpj$MNBb(?0IQ5gOucHT(%-`rHg-i~BqwQ5-wr`e#6kmgbQO zIZelq5WQcQtEtLfttTkPh$tc)LbQOsAH{TCN2u^x&fDU=Dk4}|5a2_An5BY~l=?B7 z_h+aB6b@3s7Q|$7^8^|1AcrbFXqiWf4&KEc4t;{zfp$js z3tQ7VsBck84>ER}Nrec}KJ6o;2I2n7<6+t>8Q0!twe&lb6F&A_X+tM=Zf~KbeV7fcrC7m$;7A&+RO`?OJioiVmEl338t-iR_UZs@I%%^3>v+L3o&6Y?j>P*7 zpJ}oCVwhdX13`7^e?Wl9ZO7bBd6SOy@o#kQi^P$iNO8BA0&SeU#r% z&DKlK#oRi-3zEi^ZTyOmf?1fAC*MDh9DevziDe2@Z@!3gVFfP@nnCAq(hLhYh-wx@ zy#{>cZ&zWDX**``kZCGd59glUfNVt9`c;%BoaY%E`A|HBXI9G!lt=B`9ll3pjh*CG z-U+WVMecJfI(wfEfLiw~0R9cWiCeAAFW3b-yE9J+K$X|>D^^dYWf6^mZu?mc0b+O9 z6HRvE$QPYzi2Nc(vNg5Pr_cdum(Wx4FJsCXAwwTh1T~(av&N1eEJ+N>x$kyr*~C4% zqyY6tBYvaP8jl#@VIKATYzkJvhwrGjv9LM4r{tY#^ZR`m0Yr`1yb3pMgHYkX$?p<& zX#UaG>TBF)eYWA12;PdfVODdc?Kk(n@M=)?iq~n(@_jamldI~4fY)IOjUpP4YKd`L zYA(0gLW}JP+m%H82{eafVAo9ycvchGi`Pb|Np;6wjOWqQJ>S|YQ}v%D{2ETj7@~Jr z({{PZ&JaFyOb{3^57-Q5!(nwc@54+5a)?I@KHRBnOH@w*H>cx+t_BD2y<{JfG-nV`LYEt*bJGzG+dl)p(>S-#KQdI= zx2d630a~N0pJ&`|iV!QD(dF|Gy870(IU`RZcKeYGhLVW{9hDF;EPubN5$T!nWedq8uGafl?=%+|6aS6G60xSqC7 z8`t$a_N$LHA6kDuK+SO=Y7K4~&TmJ!tf4fP4)_d)q0N%qI9AffeQXT1Y)M4QvnCiSy+@L~O$-I@h0A&qQ6X4s1jg^83&Nu$9vznFmvoK0tWYlbC20!=F& za!Q}>X>G>GF96!bj%nH;@KltFWrG+GJ=F9EQMM!!=$p8BGLv0JWj8}>9mEJ3-&<}z z(gAr5%pxwA$wECiox@W;R|%3zI>^?_5x_$E@Wt92Ny@mif^WBQ2OLdCdqv6>#zbK) zB_0koX*%y?j=EUOBU*I?nFO$XCbK656oZ=%aN$Nh$?oty6gYa%5OdRCF8Tw%8$_#* zmNO)Sm8yii5UOVW0T{h}Y(r-M4e^k~)opN-P_W3n_~cW;$+-_kX@DPUlkzA`id532 zySYQ;Qb;KVCW}BSi-FEVj)y^eH^LvP_sy`XwRny_-7X2@NlnD`h{zdw1QE~8Ag@nuen`ne@9_TSIH;X;(fgsCc**ZZ+u}=Cz zB!g0WKld173*9KfWY>ClIoElYK|~x{LW*;1<9cbVP=&1Z0-MIkfV&Hm6H(mLngHO) zHB4#ALzfI0WA6R?fGZefUJTxJ{v2}Qqv*T{7;vD90jX%|ULQ>soBKjL+ff)rS^@Wg z)VFS=PPnB=D>;JOMs&iNXWf5GBcY}qkI>sy2X`i-2{mHo@AZ|oGzXvw2hH4DDoiWf zr2vVa`dFbKLxL@I-V>>e85K;mB0>?-ex#&M|I??LAnw~oYizzg7{L^%ebWR@4K*j9 zBCak^IyU2kD^Oy$m<@Umf{r^1_*la!3LLS}o)r+dKv`mPftrCR!MrJD!pz6}rIiS# zPsJ|QSnwg?ExB4#uZ*hbbJM_=OQXD$U;bQZJ_lg|{`O7#hh?!xfB({5F5*OMJ%cq# zfcZ0^(mO{Y6{(IOt+J3us^}pB;eO8<6YM10PB6HpR z919AOr{+FfAN+|$aJ$?k*F?yx;PV7m?dD*40(&M;YRa(I8gc(n2MfUCPqHM8V8@=M zcv}B7FMvG&`vVC!M>S)6@(!gk0){$Z=V}EJik`J4tX-cQM+YM)~Duaw8tX@6Dk@ zWhXPHiVCzs#*-7fQ~c?1LqHps&BZy4i5EMYS1ifibWVph=Ogk zM0a?xVzr!iGqDx5P6c{FuSd-MM7fHYu!TLvx3DV_vbY&7#{*=PtKXlg*ooAxkPJ0v z{FBwyNi8WVW*Eg(4)vf*W`U#s|t|ZP&38^Htg1*OtoVZ6}}s+TLGe4 zTm8ZINt%A!Q5&p4241^~s*d_jGD8bw%i_juWC{|LlJps>hp;j{@Jc zyGTkZ8&+`$E=Tg_8rMD#DD>bwg9k!@`}XX1ioc=NnZYi2z4xA25k%?3v;*Rt4^b}l zlm=+K%P}V>j4H~uJU5)&L;6GgsE+ZIB(5uAF6J{H?-S9r-L#x9UQWdF;+V{qok<5_ zP$%lK9SUv{F!9t$(=Ij4E8jJKO%AI|_ivxg?p@7b?L|y<4sXTi(tpMZCnE&K+Z=>| zUmdR)?)nVF@iixt&M0442si#&ODzQBWuY@QFHzUWv6&F2^1!8)USWcA&?1_7c!_l!=;< zGl!>|y(Fz|I$4pxd%ydx7f)4(fTLKbMp?1Vg;Z=K zZca1qc5BIa&vOG<0KK-$+GWS#6!^YsGz+PeV&dUD+804a)SjA{j)Zy zqrFJe5e=mquYHSC?72)(2g6D3u1C@o{ZXb`iY6}nrLd*}muU(!hiG(#+G^t5T`|E( zNRBE>PK)4z3IvN~ka1_Aimxrq8kA3bJvAqs;LV>)QBM!v&63wn={0-Q-VW>8v{A$R zwWtS*`^$q)86fVY!*M#pqDssGGkCz(b0>BqO3m>u3;Nv*CW|bTM6^Wk{MQ0{oB+nB zALn5pXK&0Zm=u_HXJSo?>KNL$CFt|-SISMT$J-_VNDp((J+F>+dyNy>&9(($=6>AW zR9GEMGC^6lbnrHACXxp1&PK+qQV;2)mZ(Mj3r>^#=_LPhzb5QIyq9m|m!L)Nw$X8f_R|a72L68DSf}HcbAt zARO9c$*)ogLiP=k5~-9`Y6A|4RL0VD*kV^4_cTR*`KhHIZVk4s`j^=-K-{d-&>KRG zCK1R%iLOgh_RI?;3twmMucvb8^45$t6(4(>F$T6Q(uFlI(cH+lkc-~u4Jwl`-eUmD zX+y$_++8uC^Sy+Vg|F?D^3rH5175o^)NF-`ht@ZMjy|?uyS4zp<%-Hjg1!^uSE(j> zVh24{1#9PK4_3iWf26F;-BTnR^CnDUvwOku9vg!$qc_|*x^$frXF_m|g9YwD>1fHq zpQLJQop{wJz+j)KO<&v1^wVao$ccWaDv8tkum$2^65J68&5s?Ix|MvQAL4=@0i)%W$?ynodH#hiNW#CqeJc{r%?veqM?8Hj zlxZ=f#=!xt?o<#T#Pt5@DSEZ^J$4C6h;{mVoTm4;Tr3S~Y>x7*MaRhj$lSG-t8UYA z2m_`wuvCuoAixhx1_yq4lgP@85Ox6(T<@##z{vgFCfJb;-Ft`XHD1QfpF77Swa=d1 z@rc$51&Y9hUhCzrm1Y-z!(^$XjmIqEO>A%94brdmZigILNwP^UjWy`D)viD>!DF=k zS!9hERtR7vfwI$Kydqx5O3E>0&4`O(pNu+uS9o=+b+=58C2O{TC*#3@Uy8nFcg`pgA#m)e?3?tm zI(*CnA<9frcXjIr%Pxvd%+yZKj+$r6wMN5;q z_5s6r)oAKKVoZ@~yW)UKrMwE#x~JX-_b*1ynKV2hj2btI{h$6c0Z`%`3~qDgpGW;A zO^6Br@n9Y6JH4;kkhXW#LLgQ(_3cI(JTeR$b`ZdiDd4a6PDqSb`C>0b6mLYZpnX@i zHQoG$8Hvg_0tfrEUzUIa@your1{vSW^Nt*%?Qekv3HBXZ$w^n+Jr1y1-5Z2gxf^Ea zF;y|Ai98|7Tuz3;v2<_!M_lT8ta{ybkKnoGIBY#UivzwPTeNt$A)cr*^KU`4f8m!t z400G_Ev3gQd!NMm^4ykS`wAYNl^@u3qtrLPCdCD2BK+Y&5o7(m+?NcfB(!BWgT8IE z&}0okeXz{NLjNjtvZUTqd=WC#tn;9s+xc^9t3+2j`z2+^iLAX;+y_JT?jVh5tReuy zRP~2S@z6z>S2XEGBhsd)E~f5uBXyj+R{{2I#j+Cuz!(G&tNpA^8OJO?hnd`+sZrtp za1DMo$L|Z5N_s#(I*fyT_6j5nH0Atd7AwfILVxz!GlS6MtFnLS%^%*^!TPCd+uV^fb1SZQBCU*6Rf4mA;-YZLXNdRUD1cS|A4V_9@4-o29mO))s2xy%w_hWHF5z zWNPzMpYinuy71RXW*}3iT&A{bnUamnPf~t(ATFs&0J{n6CVq4m)Phn&M)#$eXxWL(J0k z1z^XD*ihiXPoyk)eKg{Mty+jd5kaJee)G4n*_@)3UTQ7fqaVZX6;GNk{R-+Wq;JFKMAT1j z2Hfk`SDQCqcm&pu{#NZqbb>z)aQhky8(*2ghptlq-MVh3=bb1bwPR{uxqyyTwJyjuxdi$_d3$%^ z7>c%|33!gyd9BagQ~jc3+7Q%Psxyvzd@o}8!e~KjK#pG*Il7YFcWpp;d@;UWZz(Qg z6G8g}KKYgy)6^=TR#g_>cKjo!xnbF<_mTG`=}YcoWBU+>5vvr%!T4KpmSCxYxU3_R zE6`j)7;9YdtHkfWY4Y0~%YeU-3BN3#U{?5R5?1}1H8$*H^oz%Lr40~H;ZN;C9r8t> zZJ~;g9e8O_Qf^Y(Bc5-7(D*0!cU+N9?96@kEpIm~_-i$Z2jR}o1&;cKw7)PTJ!7g^ zs_geL_py80nXR{3S5Jz?jkd9JI+k2=(uNS>r6AXZwqUh%zga7UhA=CVIi4Z5?5(ev zW-BghE(l+6UjH~xf%4kVY9n`W&o;5w3_G_U7!7ReXUOsNA%NVo8I2mfVF&a904sm( z0{f-B0l?3FzZ^EnU18%gRcd9sq*&Q2&Jv%);VCJo=#K)auXa$H$592Ck%~@9^LVh!gtJT967SPBIc`r?mUVibX>0#Cs?7S=cnyV(My?D(O>t5$Jsnej02S1`k3@? zzplu7Mh;JnfTK-*Gd-Et1{y5TcvUC<_pFX?!b+>s}Z5_O{k2JC1%% zXQ}Za4!K^)SnY~MN+)w0n0iCnze4;O6d+>)(946r1$Z2!A(zqg9mmu$Zh;sac933E z_z>J70_Rv#pH6(LH{L2H!lY0pI0aU;bg zMN3qeqU)d}ASm{e;aQ8|O2>ABS96QUs161IjJ69{;{7wh_rrQY;;ilK0xkGX(A%M<)z!!nfbL7lG{0K`eFv( z9ePr9=uRf9fkX9NlO&Kt!upNybL{2MGQ#=5!>_#1u|#~9BjUv&1G-a*FRvtcsABG* ztCHSzu8*cZlU^E#=>?suYi^>er{W74ZW2mYw zD@9x!W(2kp*opSwJ6=NGqi%s<@#+b7hU z$8TQD^;4-OMUTN`zjh>3d!Gjy%g#eJ0eBF8YLN4E5w=Zr_I~ zs|+!v#)|R3){MNN93f?2e^ixA9#~p15Qks%R141FE+llS9AcS26sN=K1VZ5RcuqrRueTvS!ly^j}C> znQ$JBaaC10&0j=aQx>EWIUjDK+cJ06fh-`_bA-Z`iuLAMqY%aHk6QiCBqo)-+aV@W zUI=2Rm*158jx{-SuhWl9xJ~T>ZwH>pd54htjZ|L0VAR@idGRTT@88b##zl5D{%ezY zk7dAev76n~;du4Re9ZN|5zXgro`FPrNo81s_XA|iYWAiw6@7IaC;Sb5;kdQF-^7bF zI~It@XiAGnmVda|`y#0?9%vigB2?RTLvBG#A>q7RgjNg|e z3ehk?J;F;0Kl8{&3&@bM)MFduWk-V3)ZRpxB`jy2mF@cg{xyaw@<-nm>CblAD(EAM zNhqWnOS&XBST%7OAh(c}{M3q$7m#aE%;m(Mvc$MLpP<^pjd*FET(PF~62@T2N#JL& zjOqP#wVc;%BzWkR1w#iCQL(Xn-{b41)8bIlVyl_tsm5c?-S2V%1@2#s%d#1b%i9;) z4b?R9fvh>xW4|*nudV!h*>FB}OMAp_K)eY$wqE)GX=Z;PH{=vCFh5Z=C}lKd&GWA! z-I>^|h{6NBr=#cP79R(`EAV(g6SMS2iSXRj=Dm2NI$3shI-@r6kC8?#x3C_wkLCHu z7Vj}tJfl{Rqb54KuRsF6SSS}J%T&OUmYt9qkCv1UO2%#TWU<}Nv=!>tr!H>d?9ZX& zV&}HB-5cM>3}>qO5iPP~5U%(O?N#pV?pJ+cAp}`KRfody&Jsa8ut8bAcA2E)2n3i* zcbs(>CDhCs`N_?1JUUo^^0liIFWFQqU~kYT(>7lb{4tb=mzjL6(@fIgy|0v^W{z`;5O38dnm1nd3Pu- z>gvb{q(f41$auP!ps1RO{j{v*V0FvcBnjWGm z5-Dy)+JB?0|82nB@~#CZf#wct9Ha;10ny(Whg}Kixg-sC>G0plRQcZ)Y z&W2-7t=9Aojg^UDQpB|j8o$=5FQZ8}<% zDtW~iJu+z zLkD4e>jvp(=L@K>`jbo3T9A)#-na$#yRA!m@t3a$U(3azbB9ceY5ci_cgdEX57 zt&VvoIRrF8+(S#6rl}<#ucK_wHO3oTn@{eiC|Mq_X>7Hh+7c%i2a|82Q9Ts0PTpD6vSv*Bv^f2@#XsPd~4b6(W_=<$f4bEwi3C_$z?{oQVbOD zVthd>a@5+Wy@xl>`UX$yfSa4O5*4D^Rizejo9XzqsV;L%7SYnu+e2b0mRT!j&R+!;-i4=Q?m_SAs|+I!AZ2t( zYsf5r(300_o3Hb%B9W(ItQ8C(v?7H$EaA+MLdxo=FbtLi;fG(nZ;pmDDhz}&P98=0EMoB3QtG^LypAlQ*& z%w&YFqFO(?%tbX@FZhnC(Mq`;M9NUgs2hly`WLptA}8%{1M-sF0UIC#uTbW)?J$e>+7`u)H0zoMW*p8HDb(!jpabo6!C0ow=gK% z#VNxYyJ5yhpX=oF6sSQ_n{3K4dn$xf%z5uN^xTz;le}j9mv0?X2j;GqP1!1%dQWd$ z=FhsxBqvdAE3Oj6Mc7)LDO0}0pXs_OLJa`s0Jr6@mY&xuEN=KgWVA}yBiwS$B61o~ zL9t*t1-`7|+i!@?%u8_rZ3RGv@e7sUi4vzKlA+jPey;x<`!-#92Ukv_y1>&~+Cu?j z!Li(`_kJguPNO{O*6ubsnq3C9`zG05*{?T-7=bapY#-@QcO(n3fggmpVn?e)qplGO z?u;L-ATAo{w>}*vt^Hz6NAxsBk?+rkD&vmn8=u~|S{ZPUi@g4`QyCv*JcL#qzp zV^;j@Hzqr}S!|C*CN^4?VUyCHN8c=Z1vuWX{y|i2dc9u=Rs-4++epr-OV z^&JzJbGz_;e*|)bCv!Vr;dKmqqe9k?vRt+_0L)qsoSHL62G?FNw2|LMBH!+L09uZd z^U3EbB)AhH-iaUm1x|c$n4LcsqX>E>n!*OUFC*=1{>V5%$X`*5Qb!1$4>-p4ScC!| z63e-#sj;QO0N}FtqfO91q{1cACS^81h^$77OdT#51orrS^=3gZxpm=Jcmd+ z2IYA(TUaI=90XVu5pkRv?(&>99|=zsOsJp-(pBNn9;sHS5v}+a<35Im?r~os6=D6B zrC{T_&hH5MK#g6>MeqXv7|Gq))|D61{YkbjhXC+;(`*9od)XObSNML}^nGOZgM`V; zm^b_(11O{!Y~m|oCS&8~kzy#=yEk2D*(Sx6Y8V_BwF9rx1K`vO5!e;@*lK10m^?_$ zu}ltGhol{19_wk@v2D@5QgHM}L6fEtAZ79Sp)pynUUSKR-MSdXH8XcPz!UDO=$Oxn zdfxEU&QS-c3q$U#H%TUkHd&V zB?xo9XPpA#w#mb@n-(uJSrd3kx5PEvIK{;6$VKke??uAnRn1}O2Y+(?^F?jcJ$4;* z*06Xf#OY{h&TvC()YIxR&VO_X*N#c>lq2((1TMG?u0`sn9U*Gp__dvXU~~*_?Lv)R z3vlEK>L5%;BXi4w0&H5}RH~a@I!HO$zCdh>sfz<}GF7UKtkvqsodXZje4@>gF%;J{ z(z+yxWV&!i6c!p>Jp`Qk9fajFO9NxBdU*sE)7_o!MP(vnL9EqEabQg3g?oKQ$y-ov zL7E0cC{PVSHL&$=?76dl39cbK*NVIyAyXRBWr3)58f1|K_@>!PKS-w2 zWOfZA#UKQ^1zX+`VSU1Cl9@>6cRyrxx9@DY*)2yA@J?*skKA3i{Eg&@lkHu{b=e8) zLCh*(Qi#S7=+TT4skCN7*!S*F?nxQK6zcL0TV7<#%KClh zLd`Pg*j zg|NZ#DR4QoT<=s?u~1(?nWAbPZGHlOj&D(A_;MxiDQ~hJkCOX27&#y#;?+M55#6mw zFhi-7&$wSAiygNuH=av6)Vdnln-10hFD250K55I<*Fou-VF)%`X^zNs@C-1__eict z=?pjwh@{gWd3CraET5(fgZvRv_SP5;il*!`g{TKAiwg+w|K;#M8~^KKZtP^EZ*A;o z{Qo=)JiQT{p`pI9{(lSs{y)8s|Kst$42-O7|K0rWj10`I|9kxJ|AOEuDsF1J-005xc-@mMXO#%=LkWy4mR`G9K++V{3007ouDQ71aRaE{B z0030?H_iOtcq8D9&v98rI>x{2gZ{>e|1~|w;{xD+1`z*^oBO*g_}4Ua-Uadvt@Z5y z06%QyTDkwNfFM->0I(7O0BC8olf0T{#`;D8 z0En;u>G)V7D)jlx{zd`-ApLVa@c$_s6cKQhnYEMK-#EFy%P)VAlV3josoBcb@NYU~ zvA@TQ^w$WVZEtg}_1*sN7e(uDI-I{o0FVce_fMPn8~1m6K-$0C>T&lPklNWgI{iI= zWq;Ek|C8>=8osLp9I}afi zn$=HOzL4uZkZcE#FaUttdh+bxdYn8;$eyR~S_{WSi}qkiJLy`^iQ}o*ISkgYc?)*% zazyVF?`oqoDDcygGK11u>&dA=p>pMl)wNnXn!25fyTUHO~zNA--t3B0BW$G)y5cU|0`luo-Qm&Z=-CaZd z6Nj$nbYUCj$$<#>*tGwYwCg<+#bdLnb%lxogD zIZ};_zZSD4QaCfI9eLHS3oKR0Oa9a>$Ow=*&8t6e7 z?7h@MSTdDunFVyrgEYivn&eFF0#++2M!GsVInEOJeiWXCMID&0AX}^~)N)LfIcLNftE?R%<(hC}o@kwT<}3X+ zyVozNq;Q`EbV^{AVXU{d6}(8Ww4E!ntmPvBz^^a=-%vrqE3q5LhAp`Jd4 z$@*a5L|-3g;uw9g?VG3?ZwenqdkCv=r$ z&$FlNcTMdTQLz(@G)QtfFkz7{AG3rp+yK63D>&QVJftT6qwWUnrIVr*K=dICY*pDb z140DTs*nI}X#9$Ly8{#(Kv5CY`$WO^gOe_!jv#C*RI5K33$G-nP_^vLer9fb>60a; zUbD|TAoN;T(^pLb`MlcUdE0r=1s~ggbv@U8>#gc_@HPIC_o zBD>=8p@bm7D+4g2nzxfCGUdR2MOLBjjP?&eUeftQNf(Hb3-o~)mONBSlr)N%p|5|5 zQJJG=4g3PzHX{5DGLB#{B4C1fFCZq|&!?g=MLJV5f>_iBfvpN zlbkY#8z7G6aqxYr_!u3D=JD`dKK~FM4S$iUIgTgFtdP3CIhH_vtJqC@9iDu8qBE>D z1RbrvOn!e?9irQzu(-5p-q7U2j>M8_;lQybD@J8`>Ji)l=ElJ(3mD|aaO=Y&P0d_f zSad(fh}oI*eyytmBxBE@)P{8_X&klRmp42pL|%Hs6ZP(#UeSS1hp>D2Wpw|0EVFEL za=4fs^gB{0*-cf6F?&F2VP280OZ0b{H-f)s^Acwev5TK@j>hWZ>r3z8+h0mc+;r>2 zz6|W3l(w6wXO!@cw1q#Jn}2HVXe^8|54x%fzF}Bk%4EA>(R_(|vb;zzFD}rToIN=v zLG6)xJi~?rJ@B{Gv@%nS?D*T7M-V3& zud72+R5~6~k!D3ldU#ue<=qf*LqM8?#K{bDsV{lqpwi`sP<{YW47&~zR`9bpVV(!r*%!q9n8Jua5zsrm5`NlDi*MNMtG@56&@FoRUHy zx~8qG_j|-amhCOg9Ud3WXf?y2~ zMG}#>unvaSo$zmV4#c*V1UHH)a=?%kZ_+U+j+!Fb6}?hJ+!1Y`%kNaFfne1_D&kjf zO>~CSIi_V5jcw^vZnnP^lizGsE0ndj277h0FlfL}N6k0QCmOp?VS zi$F650dl2k;vBts(}iIF5LbbiaN-66l=;*a5sS|av_q}ZS2I$Zz_=ZCF>&GJ^Uiz~ zQp=RXu8u|+py;wL^ER|kfbf;9^$SK-I+->C2GKr}`^^I|#PEPUO8DyfPYUFh{m-ip%N;tM<0T z%ANd-j*L`4Pr(f?a>cvkEx69aHrHZwzo!nfsI0n1C*V*S4kQ$uW<$rM7kGPo-(TfR z5bsN@usOsqLs~!fmZ8mcpyTMt6sDTHNlDl(40d<^L`G91?c8s4aUg_Byv&r?DoPw9 zqwMyRwiT$K{L?LeG9(MZ)zYF$1n>fGfFL> zXP-O89kPy68E4LiEtu5}T)1S&>SvT<)gL@u3QvCwohjeRT{gt502Sg~EU-I$oLNR7EH3yM>h)=7sFR z=Nz-=8~5l|7bwZ8Sz|Jt+0IZDF1(2NUUBcvK6999STo^3hJr$p%?`kkJZ(LLb3rsH zK53S#PWLad5S(5@!f^%={mCx`?)5nQ_I|%&+g58bOMWB|6SGD9ip%J0@ieGI$)C3n zWI-7pl<&PceFcs|QpM-E_iKL|*&nw3RQZGe7klW$p%iW~{YB|O5OF70wg@XH235bm z(&OD~&yL0kBy|i?%p#-0-KwM+Kk&IX&0@KowaovC@@o&VM|SL>(P@y$*t;EY-gu11 zil9|_UUV$a4+X0A)4?vPQ|MB2FgppBedp(QA)Sm8 zg*3zb`+gCDu^f~Glg|}6Mr($#uIcC2^F_AQ3BbX4Ut6gqXFA*AoR4UXtpyZDx_ybu z>}LCi#Vkr}4Go1mEjbBQ#-jg#MQ*udn5#v8A55lo2oo<`s~hdzQ9uAYp9@&&q>^PK zp*j4yq!RT9Us>6Y%kZ4-BC%^D^O4f@HAmyiQWhnSvg+ZE38i#>(jlqPg{CwK1tgJ# zlswpR>&%+^&&?3tAj^qAJ%H>x>skF(4=*dz}d5AvdMC@e!OhJab2$PU7*i!d^GT6z~l7JdKqq7kGP9&9>CeM91d)W z26fmv#>xuWe*`Y^7tfmj+(EYlkYE4haDHfui0fo(^R7m>l7!nHtpO?b9z^TLX+7 zsgRYRok_SF&Ii5?r_Cnu>FE?bfW4UF1o!M$t4t|=;n<+#rY)jJed0fGV|6>Qfh)c% zw06)-6J-P1&S{-a3IQI!6*0k;rgJ%V`-Gd~rL5(3rE?K&yRuJbIW)pHxEH_Fw;KDO z!l+b?)U{5B*G&2VeqeBuLN)t}<4z=pJ9|%g;9anDQ%=~WL7P7cs*Q5-ntnlDfN&Ex zJpJLS09*-gaaHdf;tV$|y`B0{C*#tEJ~wbS&-Qb0lXIfc#Rq*aV^3kg36A~45n22&r^s~}%~$8^THP@5zh(=DtAR~yxDC>#2; z%9zZrI*`^qP1iE%p5X*U7Vg3Gv}76MoWG@={a{%UPa|Y>%LcAWoUR2`Zh9B{;Ii#H z)$GZTn3HdMI3HGE$%fZsmY1gKb;&PRTD(h3tz=@LTX=K7rc0A`FoFDp9pJ^mg8elm z>-64T1NVTFjW2Avvyp!Nwc5u$JZnq>a1{lqLl){@lbiWf)B1DD7v_xbsVU-SYn%Vi zrIFND{Wz!sy)?Y7AYb^#b|!c4u;}!PGG~b9&2`4nDLEPD#`;27xy$A|Y3~}~1f+|= z;d!37@N+g8{d<9?I3a7plycnpE)HjEL7nS6yrosI+~>Q!yiw-lot9g4J0zCi)wg-H zrA{ajY!{RZa{^;1=il%EsO~Teyoz~&!BXzw>spPa9_#Q2w^`|2wV!b>srIbraoyf} zpP?vU9Jr$`M{Q!9)vy3^Tt+-_kPakv~ja^KvE0D6C} z4Q(ZVaR$ERV*Qg_$(ka*k#&rFdCj`0f#c4k%p1?KG3Um-`@23^p5-?%KSI{#RX%)P09{e>VDV7?ATH(R zR(1atJ^;SISh6Xx_F)6Id4cH#YpE_Xtyc@-*Ox10X%}h*Xe`)#g+JSOYB$!-RG_T!+BeG{_~BfEPs;(IBiOa zo%|J%j8v;c{$xSrT>UOSJr83Y(4y&C;XP03B&?hNv$PmBGa_f0V*jVjh?`Ld+eRcR z-aNyE%`vEb+RL~jt(m^+jFlb4bdQufIQAACrw@DJ7v_CFmaTHAUz~>eTtKXV0IZkY%v3KHrgWRy0GXO;Z{D|W9H>}<^Vu2QEpU6S>aL4up?4sbNL>)#kkqISra!cbDgJHODZq0=O%G!ajxO+ zkkwq~rW1|HuDCT_7$zc(*?4tmJWpMlG@th!qcpFLx9i_#;7(ndsJTv^v@~2KdK)(H zk|!AmzSi&aKH03|O8FC!#P^BIc1<(HOPW5jB*M>mQmBd)=kFZF#BC$U^$&ClE7$~d zJk);#P(&;9b{LU0>=Q=hm6PlT9897!RwEMSi_*x+WYs;+G+P+jnLsEkNrnaaEYw%W z5%fjm$(mEt^h1HGap&)1*;hUqQ)QpB%F21o&u@Ri%t#BEK75DxwvLD8h3k373n!u# zR(NcVQBHnanbOKo$_RIreprXg;ri$$w-fM=nb1?g1B_^?Q~!G|O#lLa)L|%K{sOR+ z_<-{O|96D{8UAnR?qF_ZWo}4g?B?|UECRw|OwUHo#A@_^g#q|K#{ZdESy=xE_&*c< z|Hl9S7li+c|MNKgi~k$e{hz@9{r_4YToD}Lf5QJa|6=ifp-f1%UDRdbfAN1X0)YR7 z!zbMM@BfScgZ;DZUyL0<&k4d5`(OMYEbs5K0Kh-^|1&@0zxY4c;om&r{+gdYiemP^ z_&@j~z<-DT|I=sDSpWb?2VKw3cK?h2vswM;{X){|75t0;vlRjSXZ*h$%=KUVpKa(b ze((FY6Krxt6{!3d|K}9?yU&Gx%JaMmIrA_6&y4}_pYZ>`CuRO${GXfoZ<@cY63Bvg z&k+A#{GUe;;J?BDX=eOE1N1Qf_B?wD<^Ze}po4;l3-}?S2qS_Z1b+Pz2SSq1ppak| z3f;K_U=I)i1ZYbnS16E@%dcR8K4)$ckHoR&1kv_bZ`JFQ6OD2nP%@oz*6&Y9u30-> z3CITZgoeX;GU{IofL86kngYzfy~UC8X{Af|DVuAnR2JUOkGKG0@ytF;#94#&NZm`< z=j$MsTf0(la)diJ7GZcY3Z!TicLCVMUt1mLM~i!x=B41JrFCA~)wOf9yX4x2ZVlNc zr?fGXtfd2-CwtgKnBd0x5$}u7iA=bI{W@C3mEiN|y>RKJl5awCv zMf;Zoe{hCL6<0*^wA^ouPb5ugT2Ik|Cn*bWpcdr0UGvA@atKlVg7(+;6EDgAoQcr- z;1EnXSYfREr>W(PDX&q!kdo>zTL_13P!=gIO(R~F?ANLt?hCCVNH#p`l!yNOszZ&a znQ&>*9}1(S<+5HA?#-J%6S%d(f*K4 z33us?jRm{Usj@4#Ju$CtE4qE?;W=cRRQiG=qCq!@DCj0x>{mD~x`5~$Chw$}H3}%2 zP2$yjml8SWTxVQzjL=h#DR&T0)?MZjUJk7=DSs#GpTJAD%)qG~zYD^-nXvDuAcIhT z%JPsY_ehy(3H4EkAxMxHqE~OHxQ9FKpYM zg;y#hZ7!46K3|MWX(~YXJ{=_hV+wks*5{y78>duh3~8=1FnA>$Y} zpRo(K)FKO3TCjJcqd)kND4h~?RGVmEG_f{d(p*y+pVIU%=iS}|Mw}TXOt=w3*@*=4 zL4aEp!e9xG)fgylxh?ALPE4c^Lfl!Z-vI^3YzpmoCZW3MnoKDKpe409Dv-j zQwXw?V9!GPm4yhGDulBtgs>`1-YSGdL71k5DAaK~*K5E_`;*LrDgrP>f4b%TV+?(i zfVIqy5mPe^F@okcmIkcipflcPDItxg31Qi}#;TYG> zPIVJ%{TXu|EsC+ET|bomUW`pwUl@pccY`Qx@eZKJZ~l*a{ii2@1AzJu&->TO3yDZ6 z0bu>TJFo)4Gj%Yw1i-V>cd`M%1AzF?y~JOp=0ALo^l&{Y|6lg0Pja8h4-kXDRPijS zg z76T9xSey;3 znS?Rm0KQ!=Si!%?GSO(D1Bd}I=lJ90T2Y^B*xF&3dJbx_VQHPIX>C~%UEE?oW_TIJ z@gM-Eeo7-5uuZ5QA@B~B9X~IuTWaW16{cLz12Ev^R&7p$!u(xu2hH45c!wD+%zV7q1`i4F zZb%S<5j~z3eZ?MAiD8~Zh_1!F!hRraH*Tz|%`k4HD5Y$cab`lUVo;)Pl6jDEahze= z11gc+zE{%w-G0;pWLcF=wu9@s)i~pUZPhexqG|P{+hX0au@^p?<8j=MuCs2Qiqr1% zX5Gs3yk4pm{PkVtv{24Utf>zL@c+W8C2@gjX}+wy?RX;R{f;ad79{A;4VSIJE-tw*A~LQNl%kG6jE*zl&zM(W)hV(W?*s6?K1M*1 zxe&n+k1toKrw>JSq4NU-Y<@oSsi2k{;t@a)G9*0BVOL-J;GWz1+Wpj!e2`KETFEGB z=lh@Ty8J_@wk57wwT|$?U+gtFa8HMUESyH%is2O5R$x5A$1OnWS;M>5x2)<(g?!TJPkA3$qmv7cjGz-Li3 zdvWs<(w&=JH6&q1;)f3P%dly^JW}J@y(9Av05^{yS-;CQ^N5S z|AF}KLc(BuJV8+Y8o{rIdL$ioA$EkA&}PRo&7;Si<9$;MT0lGJp^ObhEg{P@2I`An zaeq_^7`S5S0Gb+E5Hp|!Bm||3(1hi5kF44mIK2!z8C^G`_vW!T9GdpFMzOGCoJ2*Q zaLmm(7f@v)Ty8#}yxia3bX~8v-=KS5gWbJvPBW1SPS`|WXnnDDyQ0rh1DIQO6Gz%W z)zB0ypqYIA>OtbSd_pppf^MLKJ7=cHrohsK#KyjV0M~a6;FXYY>>aYQ@(RNea>?a3(9rgeIaEXaL0;l z-X-s`l0lImLluwG@7#X7#)qMX3tU5!>uD~q*Yz0~Q`E*EK9xwR5mOCqy`sMGDVnj^8{@_k?$P1Yp;B%tUcH2IY2Lox zLqkaEtfBX8Bex@HBqHo01rl~am27-|oaYO+5PIM_tU2`~s32F8$IQUmJBv0}1Z?U7 zY>Mz#m@|LFx8T{!?P>5^oxWUXyJRGz%qp{fE*pO&bU9q`baEfkh?x1|(jW#0~mb;Z(dpV1QxZ)yM z8*M5=fyRMk+{$qfc_morKvrwpM8&s+pNrc%2Dn8E>8`H!`{!5H;4uGuCjqc()!?S* z5_%gN2E?8wk{H2o(ygBuVaeJ25ye^I=%mue#_!S+qh-r`%9fB)Pi854Mgx}kwhms$ zGNbxp>y;5no}R$k7}KH}uL73k9y3{6FNYGsB7O<09NmUqR*`IMh|)Ur&tq%?WN@p( zzNRQ)IFAtv=v}5kPE*SpjE+ib*CKK`u3LIj61{Ao-Kb_6Y$8<;rey3W1q=GcgrR&<%?&(k88Hl>qUx*pJt1kmwTyv* zC{kP=0bl9f*cv8>fyla$6HqBmcf6d|RX$ts z0Mzi|D)+HN2PX`Qc!Q*P&3Dp@1uMei!gk){dSOH_ioyaE#jV2-u1Frq`y#YWjevWq zur(o?ekAqDCxV_`9l(lL05%X1Yxq470?%#7?iE?$`xo@^&$+}N122;2qvtko&~|7b zpv}i02ZX)|QlEXi!?>!KcqG1g&35q0O29~#P{U&|JVU^q`=-orf!$T>+eqU0^o^xV z=(9!NTmr6f3C?I)qXk(GZepWXN>q(;zeeTxR;5S8rgWIx4w&1A(%wV!aw{2XvQ)(o zXOzw0KST8pQn=8T@@ny~jZJ?RBf6(m=)}^a_vHOVy>}keh<8T%`7Y!AYrNg_uS7Na zyj^H%w9|{=Y`5gM?Wyfz+OG=6h?1W?HGiMA^9EZ|alMQMWKoTtk)@|ZkLzc<&u37g zHy#Q3PF0LpY4`A?@kbO!w$?IJI2sDC=*jB|?CEJKDPDFJ^$g^F8ne3C%uuY6m;5M6 zRx8e5Z?`4+5r&fYnjhx=!9!Q3eTqTM$j7xQ-iX*|QTKlZne5ZB^`q8e=OuXYTvn$< zojPSG`s?YDFx-WDm$UK2WiWX)G+KM51*AYzX=l&2kO?8Zp}b{cORB16R?+AhiW(YO zyEln0IvXgsY<7(TC+f{yb+xjr$_Z0#Txhpd{@!grk7jhobO?0Kc!P^d6W1HV3sBY% zmxaB*56$l@cV47cSUj}f7(EVIUrSV}0xo|oZ4`n2Ar3c0RWbFC4iW+mYYcy5Ydmib z{TAqs4#0RG{#620KAV2AS^MM)z31|aB7f(~^t&OE-@4a2k5|+&Eq5MAYMKcl+iqr< zWr%+wGN(2>+?U;OE}%zkAQ?c>(zw!<^iR1&^=^0f_KSgWyaIAZ_2kCt`9yLwSL)e5 z^TaKPwxEtTThQ>viEm7NCX+@}#K~d(UNl31=#CBh`jx>f5uMC%+J{7K&EV22Q}Q8I zQo!`$W4=PbYY=L}MH(E-V!q(s^G<@f>-We|VPw+aQeyCHIU4(-uYYdD5VxK(^P!qT z_@0%Z9W_8R`qq=d@4%4*Pm-ZfbS3OXuLtJzX3eCGs(E1d4WBOfwsytlWc!t_4VMIw@m)0nVuvQBV5b|eBuL#R1% zCeghVU))22%SJc8e)aV|_Fw7t6~FsHd=Ud)R1T9DPnT(?a0cw*4V{HN1Jv6>?F^_} z3RGtYFn-=U?B5k*UPv@@DsD1l z&jz;mf+N-GJwaEdB7h)Dh@3kqrZ%m=l=W`U1asDtY&0LSsA6EKDR;(sz`MdztL~3ZWzNsT1u?!f{PnHol)WW3}MM z!LiybTPuMbN#pdUSI^UC!DMLvqTX!Z7ZSm2C=41^ErFV^OPfs{5(Zp4ivoqkpBEj? zrM?4;5%owck>}!)YwTZ*%|!)!1N>*tF%WY2Y#yrLBVAd|lVP%JKtT4a0V`VI)pvtU z*b0z<7a`)T1rXAVaPek^E&|Kt^Y7j?`j3DG3Q6ltoUXTf5ukEnTkA}pV24kcy34q) z2A~}kJOxTN?#fq-#8n*a9lsUqiflKgWy*?LxEbEQ*6yz})f`0q#?2)3AH9s2zw$E_ zn597bN+B4f$OZS#`&SaU!!1bDXdn0CN({BS)6X{jb&NVjN;+%AR%!wrro*$s52=tD}H%}A7&N0+; zu}D@M)vrYP34im0r6pTkD;}#$dWLc z#tX|NLUCUDIhOhKTI14YiH{o746&#`*77Kz$Y@x2$ou3qd5daaNt;w@sIo*{4VP=^ zuP(IOrnNDw9&0VgI;Fa0m_ODZQUswFZS*z;dg(ht2`a{VFBV>8BT152D$`=`{EhuCO6&!);VAW`)&Q(KO=vl9! zX7A4Ch%>yku&~wXAY3|nkJH{F`8P+#1ds2@g_d=W?7I-OvG>WvT`H9k<4zcaZo1Tp zLmMhDqgNzV#o3P?AGkRPhItsF$vnX)528}9saL&}2F^`+IrmB$0}}Zm9TKg2PI7yJ zM9Ezk1%&uTOeu=fZw=87wXE%U5pGekDxWHHwS5ZzpTNM2mesx3+f~TQJfyU5n3zwd zZSEMFQD>2jKL;a1e*5AiDhb0wTSR2%>85d3k6z;AZ}Ox!=gXaBGPp_%mXgn_tGLvq zD3nW6R>ird)CwI2g&m9jtF9%z`_{WU$3c29?8{^%q{ZBNfANJzNsn{IcdFT_{$z)ORN9}4QPMCoK zgxRKcXNhB*O9$wZ!=VEP5(fqnD_A#tO7&u{}KGKt|ZNUDoXRAWpk=(ag) zw~p=ytJp@Ow@QsK?B+l1FHWUB7j+8i9o(xXfZ`~X3&;)4<00FE&hk7=_)>$_Lh9C5 z0!G3kyYKzTUR%a3*hb-c^Hs6tjo%Nh%*;wLP?<(=BcFV?r{Ey!0ZyR9 zlDezP}$Ia?PsPH}>+H=Mb(Z%UWb>-qq!1x1B3J&nGTFuj#10^)*%8mV8AA!q52 zj^BVl&{g!cCrNd0Nq4JFbGH!|7Vajskrv$4YF5`6%y4@w`l@}rl0-gfnCC+3H~T!5^#05U1;dK zXzS~gF}WECYtpa)qyl!}&7kquJ{}ys+qnBJOV)uwT?2y%m3OQ^m$NE>)sw}~`utT- zu!{^VUL~~|c7soh5Ir;#PN9Rnz#nm{d*TyGiS?scSK$vbdmRBe-H%U#f1-=%$E?BLn_XpC}bw z9P+UEcdb|0%_O)M)|*-=_k^pfh;Wd5@DL~^A(FEw<>w?5YI~okC~1VY&R#Zy9Kx8!K1xATijZ*iSpWLExEg-yO5%m#M0g}M5j`1PFwEfCLcU!(WW$eP~&%;#u<9 zx~jMVn$J%sE30DmvpvWBs?@;#&+@avECAO z#`Y8&bG=qmRO+5KBCbVPSuN33$+Qa=Rk@2d_F4Nkhbr$pR3>l`Yx;IHWJ|Ec+*I|% z_)GZb@B+%A0bY#|-lgHbIyOtrC37=GxC&xAML9QyTbazkiws@9D zT=mgR#r!Ex`7=Y~?ykvc_{)SNP_-8@p#kg@VgP9;Dq2iztc9L(9%*%R#fXe~m55?J z9`n@rwQ?>Fn{aH@^1Z0c*goZ6hNXzy9oGsUL=Tag566gUF^&m2{2EYHO9!VC#sR9O zVZZ(D)l-wnR+Z6^lUX#XDlF!a@TT3dk{lX)JfU3t)THMH;gmSb2>l6E7BD-@?b7@9 z?ax^!tllOegJ+JF0$Fo?;`o!bc3AT*&8*bUV5m=U(kmxzK^)IY$fbg`g3>R~hUj+G zj39br)i&~Ol5sM*M4Xz-@W%-=@%zMElrNK(nvg(P6b+d3sY`8`QS4Lmn)dGQ(M@^o zyXX7v3MP1ETAjX&GZt5*1AFN~4!7R8Rjx(z)qV;-@OHVT9N>W@U;|cg!gxsV=Vxm0 z^QbgJuTSB6%#5W|!YV-Fd2_6CUoUexIrXkwC89fNa%dPz>Dy$vS?3Hc&x_=~$>FZf z(aklm^yntzjuhS-mJWdPdJJGp>PbbCAsJ>f7Ni;@5_7!U02+0!RcvOf3=~-)d&a6j95| zWbW=I%2lYhmWt$zkJnSP^4omDy->;El*TC2aW{bGgy z{;H>+i-oL~XTN}>kwmE+4mZA!8^C~%O&f@-LRD5UUyi7nIugkF6vlgp>As{_zXaJY zqX4u|f@>Zvvv^O-AyC0lYM?Y0Bzka8;T**_z2^H4OLV%yaYk#HQ8{rd|Bdy+!k{~t zi!gR9_?sXT-h6#Etcs0WGo)>@j@_V2`{E**sD>YLihKUM6q3vR|@BkFOI zVp>x6QT65~41r{oPIp8o-{9JS?P;FvBSy;WM@)I+=kk(EBX9FwB7?3N_bYP z&bfXrY?}SlXk&at+*Bz;12eZaJVqtg=FF?3n#+_LTteUWrnpdo6f8Lnva9u!EX&yR z-5zvGhW*9d{;Lzr>j!`>!Vp+Yye6H@XgkM&_9LOsbK%O6IF13Ir}G`{AsofsXUvOQ zbYOL)M>q$HF={@mhI^blfHkLrJ9s6lf;ad)JwXu_z~UUi+1>;21%0!XV9zekDb;H< z4i|#KdeiR8lIAr>pVpT%*K~9QSDbzl%Tj~d^7r0SouZ3vG-Zi*88eTxh60n)?!Xlw z^i8d6bBugI!l0oOJeyzmu5!IM3xgVA?k~3L=zXv(?e-dcUtgRa+f`p%(iBM&sgL8i zG3QPAS+M8YgR~tNV;zB6hgpHpLBx9}4zl<}aNb5-S;o5X#saWJHg8kI`&x3z@vpEf+P3TS$HdTA9;OEdt#@5kodtAQ*TJVqZS4>;e1>g@O^Cqv zU$ylNvs8=;?M1zLwwSaw7(E^`z5?DqeV+U}I#RF}e(A)ZTbz*?+i@oLxOqFzij7)G)a@maQpBKRI=*ZfB*EDvCm^B)iL$JU{5Q-+%X zlt9Czo95+&X_4V&RqGa#)b8yQ7M5B;B#t4X8iYqlW?S6aPcEO}@+{DIVbQ3uZtQ<9sUOr9|`mRu0$E-v8Uq88;n&1ReshFteNmo77#92%SH zWEIz#(R-|4rSHYKzCUs4Av_gqQoyo4S)b zEsAoKwwhTUmBv<^jIi;fE1S*cDm_r)j<$`M&+7HAeGT53g-%t#II3$X6P;i*wCB(n zA@~KUZ|o3s%5{94K<%5K{$}AqIPN7=9I%;XDg(ASUUI+RNs{0r;coagt?hmvv*=xB zCPWdl%)RLb3{QKOi@e&)w&rFoDlgse%%A_R)tUuobOQU4jz6Y2w`xbvpF=Tn%bKP| zid646ZudSoo%o}3mEPMvT&+zeAT)@aoykIvrU$pw)x&0Vbg!{-KU{r*^#5S*pQCh( zx$r@->|3^N+qP}nwr$(CZQHh8b;~y9e!s70x@Wq3rf030`Dc2s+I1?aRlTwN?wlLe`qo}>i@`Eml*v89rieNIuZY$fydb2Xg9o%B+E?tSpI4-D0vmOy6I92dmLZCl)raJs$bved2O{^H1lwlKbqd znY7Pzy*9a&PWE=XN0^D9DS%9^&N42}Rx>pQA-HcAGW0QKmg#!2iYstOGqcH@b6Pjo zS4Xq$i{WjBq9jWyDz49m8`O1lEk*8RjC3RlZN*+nKAJ^~`$ojQtJoGCj$R8$R8)~Q zoGTK=uzV1_-(Y@U$-?~Zi8M1-yI8w{+&1vV%em-c=1D76GqcrfY}wYf6SLiU78Ts{ z7>PxkI!pP!1ctRihMif43w0BxN&6CO2?amJtPAC0s@;2#t#(!;HP-R-C+QdN*H%kG zQ#;Qa!yF@!saYg6LvhhHv(9eR;sxOuO+BMU)9glvFqv`eW0!j6hL@pDYRHQS zve;XucjI!`B$2h8vkY1K9xfpHyEAl(%KlogPKD{HWj5uv?_3gFhP*-IwwXek3oxf7 zC^Z?G#9QfirV#Sf?ua}dVBOF`RCcd2fOL;}U4f+1Yk@4#YBEM!wE7ifac|i9up;iz z4{)YMRGCMg(qd1v=X{9@2d2TLdK8Q8Ncz@jnDskc*!!7n4#%TN;q;ThkBQM$+Z;x= zsvJk-S;AqKo#cJQ^EAAKyuFhlbHqm~dm(cS{awI~6PA6M@-b^+Z@+FM+F8g*4phvU zuXluoSlG(m?nWpXX=`=dzth`<9*;KSiRo}k2UW;xuDEgDZ{#G%SnRHv!US;r9x&}W z*&DzJ=%{=QtgAo-DMm$kyqMyjfvByt2Xvrcl|#hb!Klb||6+FZ(z;Lz?0&D$ zuaB@dc#Spe-p9F_o(LbG6g?VC*IU{-J=dPfOQvr8HMBbI{8&veRCd0aib$=g99uIc z1x?`)dqc+kGPe%vsCvzf;f;~2o|x8sRVF%q;1jxaqcHB~#opFUTn7rE?(>t*_Zh#5>uqY2ykLhOYVqCA$Zp@cGFwH>MVDq9uyS@BSUw5y* z&C8=#$12^M^U3ZI%^7?#4*z)h+B<8uMuz2rDi3pCn_Vz2Kgio;0bunkCil@JZ9vYA3-sfoo}Pt_j>>Mn?-GCp&~HdY*( z(TrhSwgrCGN$4zd?YeD5K72d)_!B=nYTQX^*k9DUS2?cSi!k?{Dhe>yB+dCOw{OmH z`4{A4G}VDdD$*&ytfg2x>q9=IYI(%bptwiyFP95Wo*1vgL)%u4mlMrtxw{i`jm9vX z^Peoe;vwGl!#IPRuw}6%AbO!}8Z_aJ5Go&nmigPvX4k8UhIA!p`Ypx?Wzz%Zad2Wi zXy?c~QP^6eiW2!T!q(ZD0j=54>{(^i(B)Zt(inz;E-}{7Xe^@x97b{A?_OE9Zws+5 zT;saGa@;pOTV8%wfZW+2xcMJIxWt~gu1A{LOb|`JfbQsOv3q#d$D#=1`cwR{4yI#$ zaO6?2-Bnv}6F1tES`79MC!LoPhH<-1!fVTm^}S=wHf1ceu-j^tc%L3qlQ~OrYpA%t zbHS{&uQ5BI6Z_JI-leqSSh?ys8jkrL=vIPc#;ophD&c1?-cSA_BG$r+#Oe505Tq83 zwFM*&cL$p$VydSwv^xrGjYMQ_danS(j_I#zi+zYvg0TXD!LP8fBqJC1K;WQ0gUQ_dctLY%fj3*F&+KHICjp1MD5xcO`tE%yoX}PIkffUYM++~<&qNa2j zDtUHo#~tkZb#M_=Bk2V+m>?pvm*M-SyHSa!yJ_3u>PdroYWcUPZML&%O)Fw(eSCf> zMfUk>@_}4aXW&Yh@-e6%-DIdy-cr+{;aNbguc7Yg)(S@`ObZO#3xcrM*4F$~0Au?E z?@-QRTg_QXE3({N>}b?c*h`;lXDbRHt74?F(ZEtbF5#AM9-5V~#%coZaMY6lO0`&T z3oiQ`G?2q*4skb|z3bO9Iv7Z(`T7X)Fcla;BG zQB^#+<)l}rTVojumrHSA`?SDgDz6fG6kKa-Q^QQS2v-hSojpCrgPG}3UUuxB6+;tS z6*H@9{J932Ha<)(WTm*SMmsUBeta<6jP_hsP4qBFZVdI(}?-ssVyytG!39qvJurJxn^gJ-IEWMvOtBkux*`cS_>sr%>O# zNy)&r@{gFdzP=ILO0jsVu%xH9mLKUB#g|xl0ju!x4sWSJ;vi&w&+Um3P^aqE?2U|!Hn9` z2xNgr>>}DU$<-Y6{p1#ji<$y*dZ311F#yc+DU)ms2^g`1ZAeIA7%FUEcn?IS5h7`k ztH>nl5s@p!S2{>y(o9MLYLlgubQVX#iVay=n_A2StqLr6QP_Q`5oqDJ>kCflaqy{c zTA2M5i>c*PgM79~cOG%iDkzeO(X&Bbc=mf8zCoUn&DhC8DjSxTNOp&#qnZs{KM3 zM>h3lkst8b%KeSFs?i|B1Ld|n&%k{lh zWT3m{T}%xJht?jtH3#N33X^U==X!;_Gp@4BjVfYr)VF^Omq4}mTf<0IVpJZ1Le%fCr|k`m;VL_#eFP;U+!rNx2Q zX`0@ev^G@s4pq+1ljyrS*GWBQ?7(?VT<+#-K0AhH@?9EX)FrSB%|hatex`9h(KtR6 z8BDr)LnUPdpBarY6+qvaKK;jOGX7)+AA8HTk_P?2lgyvafN<}qO9;w{8Tpb31jCdp z62d`>WNv4miqrTdbu=trN%n&79^M6SN771EGj{6>gE9ggV~#_h7cv1!&JoE%trK_H z(whx_j0^&WK0mvorjcNRqeA_G7$Oe>oO{Z37qy&C-l8h1QKD_viDea+sLRYd@VSq+ zDP*%?z0@Df23N-`eV!S#d(@7DL8wFf+#V;>EwiX5+8XePdDhkBQ&S(68`Y!AEt?qq zMgL0hh57&|h`qm9SPf=t!pK0;M)(@wH9kqcU zG<-Sg$yO7_oaa)E#~#oq_%oFge#)ZZ&$3_^*UtCXA~W%xt){Mr zzOw_!qYeuEm!*+YxC^vqj+2}^nwP-wwsI6qD6$2;{PrEA8gvmhyGo-jpv%_RWA?gZ zREJ8pG-LF;-C@l%*kO+T#uU?P+pP=8_WY1^o9u$>+$a9#TklPv*C1z1q=#&UGKe(9 ztG;*c^8joP?A5)7Zm_7(iPv4_6T-N~zUN#zM_UP0cJ8?43jHd2IMr{oDl%Ty1_PfC zs08ivPemKk=fH(d$=Cj~{A1(XoZcglRdU~Hi&njoK&Gm$FrKChj-{?Xkiw&29jKKq z7kJk(39w38GNt-srdI{ALpyM5~6=+6WaWMY+9BC+z|!v7ChXO7L-LIpiNSrO1`wLkc=w z6Z3;|i-9i-ELvTM^4`G&u6YjcSsu9ra+o4yH0~p+kj}7bcvpZA?cZGba z7`ci zn0+jjxed~% zI>Ue>BU-42PJz6fYrX_aPP+U~AG*RMD;>v!AE!DEr#3dn4>Kp$I>#F?r=U{D|13Mb zP8`xE4!f9CTaB&f!zg@1T5ehcuO&OoE`j%&B)VR$NIW^oP2js&)b;$u3MNU#E~>RX z^rt0^@pQCsVSS5X)e4QMWtj4DJQNqsoX}SlmrR|4U%dRYI*G5kzPGFxEz6sHQt}sh z*eEB@q+Rm28>#p(v)3p^n>gf{z!u(q4?O#sNF%>W1KE>AEy%SxLHNnO&Afc(oT8|l zicWlgH~v6wH>gtpxoaaE^4HGFI8?%va{@(x+O=YoaWAP-GxMr5l!q}CrGThOX%1s{+4@;c zz1Z$AnbKP;d>B2~Jl{9`VmI$)T%Ne+aG3kl70p**P^MlGCJxWFi z$jpc$DSLmzUg(WLC+sKabP_vs8i#WW>_kiNNGpuebIVVjsHa*;;2KwaW3VK_+OO=p zDl5)@0Qk^BfNtf=T11d@sGNdNx2R>_5219n+?Z=0K0j{zyPtRNo0Ig`i`qO0`KuZS$`Ym9@x+} zIBusZdrDq1eQAW&QYChcB}H-Xat^cp2licmK19eY6og;s4giD$9t42C<1TvLi%Vjc zRm!gD?SJl(8#2;lt4L(wR>N+M_!_y^60pQ|;EDm60U7~D$WrghDwR|$;hG|6rCf_e ze?^{PKR|>SNtbdp#BHijz=y&SsRRk>++lgKIJmiam9 z(2}smhmJ`e2;QR-1uTlE6=cgpHzjkba+lC+;#cLdYGl@4EbLnHJRN$XdPV!Jh@%-r z`HV{LSF0^-8w^!xtU{i5Y0cZ3)Hds~t7Uo28Xtj7`2Q$yF=Ni~Z~g3r#TH1N<9del zmQ)9qqca=SG_yjkxpd#>5>xzM=Yt@&N)G$OGVmBL^(X z<5&s`nM3pFLqvyd)Wfh2=(0nq9T0Q};L%==YVXn9v^t%2X>BLvo;^Q@dUAEI@t&1^ zGx}orCH4*R-N8jLMUwvC#vJ!4`TqU^__==AQvv`cU?Kn-1;9o3P3L$PRS*GWky~oyOi54A?pLZx|%}t(IX8cvt z%kRl4rTPjNiDNQXp_1^$#gh}|bUkmRT6jIk*oo>;P~5)HO^~+Qp7P7hyPcxv=kiyP znX2oHS_nTdw_ZtJ()0iFSa#aKVcPtJ&7Suy@Ri9#1r_s}N~X`2#INnpv6PJ?HO%10 zI$AK+{N-&z$U|wBkzQ1P8LN984T0 z#w`DDGXMTp{-5LjnVHyF>Hi<`|MaX3jQ=P8|NjT_KjZ(!?*5Dax9a~tfd4oAr}5Bp z(2oBT{=XXl0HO*20P#i(+s*C2_K;|1bU@_CI{R{}1?oSZx3RCb54t%hnW` zgZVH1U*JDw{15y;l#)K=fARkU+W`OJ?*#xLhMobt`!D`q;Ok%gQvcNtn_O5SISNU$pvPI=X-99Qn13;{J>O7yC~c{|o&8 zpMd~SK?QWM`Nth(cR{XZ(R_}~15o*7WP*~ALINmEB7xu^Ct)TqYi1-RCWbb69~|{n zb&V*S7@e4&Aof-E751)htC*~=(*p|K-9x3LOEL^o;+6s-vX)<9UuhKK|BTVe$-wnQ z8pxr2`feYtcZt>i(`)t?b@ktsb@cR6>of00sjV|Ht^03gT_qgn@3nTe*Ej%E6E%Uy zs)p1smzoU>_3$HHWEA zlOd%c&>ed>2a8K_wl*#LZno~tmN2Z)DYO^Ys4l*!s?fSHrcR-q$s6}JNA@NzrbV%% z?U9h4B5$EK#*M|@;{s@@x^`y%& zJyWOAuu`h`QK6RAC+4giJ4ItIb)!lPHJ-X<>z`it>mYt=7lF1 zCQ)OWHBYGEOl(fXWIOzh7i)j5WE#qOd@r0?FvTm&9c)#WNXiQKo~k^pdDFB+^5F!~ z5S5mZV8TD1P$Pd&|6J@k%iF!Z_wO;6&|Hfn^ECR@@x;;O2Iua9G?0X-s*Yh^m4Mn=BY!K$53;*oduNlT0;doR&vUxM&e#a3zjNa2K6KmrzFk{ta!i;k3Z4^O7&L zrkor|(|!PDPGCt|7EnqqoRV|^>IT32(UCEpL4Hi4&C1IL_}4f6m^2F{N&_+kO`$R> z^i6Sz9v6U`A!-ED{>_%TYm1&dr-v_=TjFOk1vuTV@hCMauB^~1hRe3C{zN95@v0DW z8a`CKazBgSJ@zy@X&D9^0bb2SOf1W=` zc!&2RY%4^+BZMKYpK)q`NL_XuA>VkgV?@9@u*Q-nwiCSk$a#@2VNCI7OSLo-4y$9$ zU6ZGFJ|aiJW}sTq<-dS+eVV;9<}|*nBI+ z(K+M^(1b2;Nv54U(oK=Q^Ilv&GOU@Ezty;qKFfkhwwSEwiQn|=U)Zx}#zXs&4`+dN z!F4}#VYVw*F`)1|`W|1CZ z(KKRKJz`NvVir+ik%4ZJwrbJEYLU=t{&V|q^}8gZvx-8t?=Gp74M_?3%pmptN2G~Y z!buw8X4#5Y(;u}!#r%(E6gXD7JJE`b0GCEu7?g(6v^R!RTDu+tOYB&8k!;~=7MGha znX~LkrF==Hat-E6rR=lYb?SGTYNIa5&lrJjSO1Fb-Cqb07a;DOAoi3XITZL>Nr-YN zLmM!$7I>3Kc1r-Y82B2}a0RBf6(9u55c&{&b1L^IKi}vYYICYbXNa%XUI;C{_QjL| zaa0iNl-!!=UtfsLZ39-eKJ@VB4x(z{*qPISTD5sGV05hNg=*}&ie)CT$K*=Td4;Hg zBvtbkPAeMcHPQ2ena#@FLee>^~vKF+gHQ{R`~-Fap`6{PIWvzcS$q#^MXe;mgY5YuI;713(XSKxr3hhhvm? z&6tDDVA?f71TtFq+FAq(Tm&i}`$~Z9lpuYP_|hZ$707{U!cWy22I!ZyQMjYdDaW=)_j+!dAhejJ%kO)pQJP z?}>&!5iPyW?K5d0mr-&~1PYJ%ve5YYZtPdMafmIbhjx!8OE$g47G%!Kxb2hR-hg{J zy~+MgJ2;n7w1In_NbO@e$-g`AaCB)~MgMFSn?&I1Tmg8Ixo_Xq|1JioE|30+Di^@$ z$^Rc=*)ma9uN(6o2ytnf2gF*fJ`1hU*9>M)@+0u*8@AwkA+H#m+GFA}GGL4e;ZpjP zzte`ekkke-ufskcFjy0{y+dL!MgqSJJs;%U&h!4d#NH)|T|VaLcMe19#^^JV38d9n zR>shH{^a;3qW)#yhjhAJUM=^a?a@rgLR88TXyZp6r_AKZU7cg8#v&OUGOi&8-?$B1(8Bi+0ol1A>65Z*mn_lgdF zMTPi^1dAKSk!;&{)~~>|A1Y0m*#g@`AwFlV+rksZwU~gc9&%Hy_kX0V>Qj7ln}8ai z8o(N08vq+18$cWWGywlPT?z0W0vy60hR>ZeeN;vuNcg~&`S!_e*ic4`3-CfIL@y>6 zAf{A^@?b7xvN{(s?W~`ZZ5mrom3;z+9u>R%$Ic}gDL~=p2LPD&JBvkOj)Y{EcqG(G3rdT;hnDDxRobhweA|mvUNpb~CPc>m&)G0}8*(3rH7vi0#Te=zot@#`niOc@iiX)vo~D`oC*l`ap)J_^5!1(fXMo4Zz}F z4D9svjP?O4cZ|yn)cWeP^`QntLoT7W)6>(?8ETBT#=H~W3GbPK?STz}F@gbtd4yGk znT5HCNr+j9eTngj$%)yCt%+fZfr^zE6~Dh2==r7;`57z;9t@A7r#kXY(fy_=`ROF# z#;Q=`)bUckexJX=0}sEszg$0d?|kom6MNe6pnkG|_q}{wxXL{25BhV!C*V-8YCCWp zd(L*>J=tDSw=|t>pS#gsJg-nUBD>IC&yeP@uKI)UK*UGr;(&30paU&{LH`=5zFRx3 zBT^@#>xNhnTr5NTpjersiiK8FEhlSt-}dQ_*+Zjx*A!2W&o4mU7)i?YW!TQ*Ka<4& zJ8qd~FK~4%G1R-+8%f5|(NYKnl3@NqX!r|ciEv8K+n%5S6r+CD_Cwqw)HQYoi6$f3 z8&^ZF71_S1B&lqvj^?f>Xj$;)FS}xv(T?NaAIt8=i|gsEwbPlbS5rvX1%7yCc(dSq z2-*YwX~I)@5JyxlCwM65{9#yP6yq3@HpX9p*;TQ5>r-&#L3(177D7aV*>QDPv*P|u zyX!oWmv|o4re^|JZDSOH_~Fxut#kTO>mdmVa!S#XaM!ag2a+E}=BxWoGP)UaaXB{h zC3d1C)l5t;Rhx$L6jbON9ieZ@i*^tJU=@%0{ay5kya@Iio21tb=rukV8@U!KFwZX?Qgkpjz{xTGW#B$%HQ+`>=tiB zi+AB)$jvr9jF+Mz=|8zb zx2Lgwz<%7cadZljCJ4of2c*O(3zR90qL!aHMT%9+k`Htj~Tz3lt~?2G=S< za%^-qQ|0SeMdTZr_FTj*%-f6A$!#gH+BQ1#>AC|upSW`(%TAU71q>pU)$>+SiNpxd zu{3zxNCdg>+fLeK0%LzwG-w)hBPZ2$93siR2Zp9TXN5u8yQTDTTPYxyBpL%HzIN1zfa8NOK+8EVoAp8DoTQ6}VtE=D&)|5Q+5U0kx3@KQ656CDK? zzKw^2AW(=8#VIO=?kj8(849%%?rJ5&Q^cX|)LVXzUpA94`H|Dvk@GR3`Qc2$NdAGA z`ZEb53k@xmMLsz>G|&CHc2J$ae0P_;U#-6#I*GNHDM$x$Ntyi>%9QrVjUaj+?mQ0# zgg}MDN&_*>_%@il1xlB4z?Dj|A2D{ok>HxUPocQ=G<>1BFKa94>tqW0#lk+Va>x2; zQovExWA>>PwHVV0bHw+T)Re<;_bUx`V=B2B^4HxgsK{{Z4WoY>Vc_wSWLTn z{IMRt-JXuuwhCdM!x0G-)92ckyec*hyuK8)XlNV5*h-yTH>=RgG+Ak#!k zOWD#NK`dZLtDnSOkxUFu<;ItbQ=z3?v!Y73C}PUj+m$G7|HD-&+?})-Q}F87zuh_9 zH@y8}?>CIOAu%kJf?fx6XS#V$*o!6M=+WrD2-++c$WgVkqoX}OeZf=aSV(W^vm>aY zJX^uDVjTM@b4vbr8E!4Jz8j|ik1slacMYvWgk#`q5DTP>#~7wL`VM^n^3(}d$&nlg zg>0|wfy{D8`q+p#!p_5hHjy&@SZCAW9@`zQJr(O(Zu@(|jPQ~=~*+q#=P zr5uU{1?EHe&D){y?~bvQyNJ}FhIy6{XF|*IC5XvT4Y5_tFM(d4>z~}}tS6Yv1Aq!hmlG+B3zx1Lo@bD-9{3= z>*ZO}X}ARx5hxv?7BmN&iRuI?uRBLYT}eZguHP<0Ze+bXCa^W@_h3uWhLLNk7d=8% zFSACvG#Y9+XGp4E088)afW(foh}v&}j>qJ{6o$zga+VxsW7JQ%CTqWuS|Ty_n)6(dNy!V*USub+Fh>E$H_3v zVk9l2B(ElQ-5uRG(s>>`n=PiN=+OzFi1&dE%=Gw|?0$Sexf}F6I~ooKWS2L*E2@F4 z+iLSAk(G1w%wxMZJsqY~GqyRZw$#cNDHfNqZK^rwlejULk~8PaS)Px#MTyQbrNy2p zg^TrX(oQEK1#bcA@&)vg9kYv1{AHx29)3v;x~ zP;Wr3QgbnyZPWN@znql%FY(=0(;~@@Ii7BX>DEaad0;oHKyI4nI50jYwT8XvgVK-_ zT-D>q?i~Ofn`_9+zBE~mt+{Xyw-eU9jr6K}KAmk}2P_=hcG!oRh)0r7y@p0P1?Ab? zq-1-3DI2$>QraG_0!QPVQH?HsMv^|#=C)>q1vFI5nB;oKSf7LkaUT3oy!&H`$`!XH z0+2sKC;+YOIf&-sB+xnFbgyrncc$#+ZD?&c=Bnr)vMw|neT&NWP#yHQQc07B$|U!` zh3kqs7l;u^XNS-nSyU^YVHgY-*?-C^wdP<=l5sqJ6owp#KaK4V54I0mN)Qe>az@`g z-W{7F<7lQ~7F7bh+tpj?4TdE(EqaFIB~-~~$1@w+&Ts1i3Rr>36ti$d;Tz@=xjXil z(c*Zz@mS$jW!6}IPoVSmk0c|lV+$^89z2rnN54PCD-JfH6eFmyz` zdK7DpnUXLIZ->GEErsIebINJxJ&Xve_~RTZqlXQPM}g2X z;2B7r&Mu`BPu?!@#oaY7lI|ib0$3SX+phPGQ0d_?%HIL> z9^#oGCxW393`~%!IWXI7M_@%7TXd`M=TORY3dNLZe@X5~{2EZ=1Hr&w4pFZ1){_YL zD_irhWBacIS;id#V(B^2;*g-DQIVALF?q+^yUArOGwB?gWuUJ#8~WmXh^%U@^+JeA z+6AH{p>ank3R&c&+)JwUWt0-N$%hJR6clZKVfKR4@9YLxZUaI&K+Sv5_dz-^6|#7t zfj;0!iyTSI#_+<2`vOv>TxVl~=$X^7Yg2*COT{U$s zOnnJ}c?pW7H`i?n1dr^ys`0$WSuSkqQ?hpuWBFuzwH6KQ8ZeHTy%7F^fa9IN{au&- zOz-W_QcpT_OIAsdP}=Vd0~r`oyc-kSg1jNnEekl)FMekJ@D0eQxU^K3 zUyYhVeQ`B@Z+f@CfPdHThF`7DqGzPFS2UUBktwHi6c&3~A$!`civl*6rUy*GGn!a{ z^I+6!q!^y^bhg(#Jn=WWGx2S<`yjXHNV{(yVtHC}Zujzbd}{aj@v&y5`~QZkIq*;DI-d$dxr}BCrfTB# z`sOe>23dIIE;L;m<@XFJCxhlKkFAo8Rt&8=N;>RxBDJ;Z`_025cK$(x8gT$gjaRnR zlUMd5Ct?w{ezIA(aKqca+h}O~0>-oE{eJd;oNG!{Wks!{fK^(yrKPxF?xgo4>Z|WX z(azHL08<#liX*s?K3Qa2GkYS=0Hbwgd)3CI{{ZVEyf@)$!4Amb`nR2+?|C4&HC|(6 zv>I}hjc{qu2nJ&vM2}T;kQz4D0JxbqLDpBm8>Xf92H3uCGq2n);LEf6 z`&uA#`y^YAH8U!T!zmRbXW!blsqlPNTd3OMi!h*g49jk6fNe=EdY5NLWWnVLBBI4d z;4;0J@f5~jkx?cwxXE{qy77%B3g>gR2hnD)sf({)#hTE`UtGS+q;0Jm26 zxnHoD2+pV8_A@jza`f=P^8Q{mNkl}Yc7j$-nWQ8<%V2sXXmbrZ%#-Q_<3PK*s%t#z zH+k99y=boO(ZN>tS|L#6a7W>4+HH_Ti5fIRtr3UkK87Yfe7rQBb!2>3wD$6fzwnnnWy0h`T zpib=vbxloWvnI*Z<&2tZ2`Q`h;39EVEp{zNEQMNvS_3mGHI(dfxz~5225V9>Z0nha z?zPkvLm8!WU)ZJ@Kfm2cNn#|{w8eB`Vua!k0Df5R?0Jd)Hji9R0=K9dZZ5 zjews6a2qB7ZSAHi6wppirTc1Q7w|<$!>4b@@BW)SoM{Hebn%p~hy3eoSSu2$yz8a`4 z+;0%CP+->hbrQqra@;iAbf2HGtiYVv-?w|KX28=V^DiSVFp9euk{7j?h4^p2NioSc zB&LdUj#Hmgj<-*6&s+&Ww0oMrmMK~z#dXh04@3`k=wmSb4$$_~^+)}^pb_%8UmZ+0 zs-rlbB?)I_n$>#oxXa(|Vz5u^k!IXoNkK78cnex%c_e-MSOJ?&dp58!72ocKMlxF(w&TeRP3(Bof$~a#Ydg4C`RhxlO0O9;hQO;3?nvNgHeU8zkplChztWbp-}MEy?kSHZp?5w7 zq5ganj^7@2#j!r~^2FV~L^T0BqDxvceuA4+E_Hojdt5u623JD0sUg?UBxyN=A_$zy z3(2KW-m3EvN$MeTs-cP%?Bph#7AEJn+m~_hpE=eaiSG;gU+=0Mzzj8Z0dc?LcOUO; zVCwVjM+f0w1*XP{qAy};;+iW_Zo#p#X(|?(_K5Lb7Su{JDu-{M#TVO&85o9aCP}IP zR^BI_Ub%Oq?L98eYFqeMggGCS{aLjbD&9356<2~pRk^18)Xl~OjhNuqb#M8}8|5yR z)T=4uCGpa|`r9{;g|_BZV7KxJJuXLK(n3)qN@B0JmK~2)t|iBedgJTcYy1P<1)ViV z7ge+J7b}fSP_;-GuKNt&_89s0#R237s5@Fn*#@ri);i2^d6qpd403$I1-G(JDlV%1 zJ5FQ4RLW;(Kz66Rt#&beja1M{Tjb=v6siaA@AR#giCC+0G2zfy_y{DT#qMkx>-`eA zzOO=1DcD@m*J?$VB_8IM*`X58LfE)nvhJoP*3LtYLDX(0Oyv*KH z>B~bhREru;&sZx_F~xiNC&`H~@C=u8Qi{5Xh??lUDW|Dj&l)Q8lS{6~##ZjGVhsdb zwNi1`CkjfJV_UVOL1Ph_LbQOp@#8IR-UCQgSPQU{z!_~Q_v)Gl1Gud*vVy5dH4YMI zR?vLaofIaN=eQrZu%lP&1iE>f*=apPh`1)^Rla(BR@a|{QPn7g*|)b*6)fl#Nj)+% zg_HqxB(h?cqdb8JGW@N2mI?SZo%9N1gATVXmxDU9NgGUv`11uX-5Xa>fY%=Sn6Y+{ zQ(PGtz&mStg@2uyZmo27ymA(!IvUY zpCOQZ0P+XmmQQwH6AL82gPe@v$aRMsB_jWGR5R>*`O@NY<+AcQ*E_qBz-2)l(*bnr zgydZ;?6yE$_{o04iuPe& z(J(D^q$pzPADw`jm8G1vj^SZ>5=!I48lm%3pi_7>DJv%LYJDEOn`WTQ7=(1QV2{(6 zpwptOIb@(L<^h}itl!kCttUP6-SaXg!$!x=#ZSWFuZ-A9A({6oDnh%dC_|Qz-d@?F zheLIz7JE__r$e)U6Gvq7KQZuAW?UJJgH|uD>NCen9wv$V{`~J(8>$@d%B~sIq~13; z*FZA5)G~hJP?li>6p~KmtX3u-$Jcj*!Ec=R*ibUki=8XXDaMdB8(Stagn5&c;LWz` zee7Q7(C#(~6_-!JP#iOE`^|J%111^ZbZ&G#-ILb3E)y?2l+4V;B&%4$gho9Z+IH}X zvw_5>IJH7(248!OfAhhqG|Mt3|F=GP&(p| zWnQ;f>tv=@uE8@gX&@1b@MfbKwJF0TrG;8dCiZpo0q|H3u z=ecW2ALX5bMvytqaI6B|tU;%b$oDjyz9|2UQue?p2^Es-Y3$N&E#rh%U~&0LOX{4J z!L3>WeXE>Xxv5!@lMdO=9E)V(LJW5qX)GaM%jy#Epyb}G5ax9h{T?PL%j?y41+xAm zm6G`KDptYOVC7pVeZcgmfK|=A^p}8W>tp)i<}^}Bck?xYmmTu~VO~bIvRF9dd|HL( zT4DU5VH`c1d|MbP{aIphh{Cg8zqhlCF3$(E>}#D&%uf*q5ykD=lb`%1cBvqb7E>$*vGY4tDdiP5yx~>%pa)> zQq9Z#;%f%YXnLM&np2bQ9+(A-i*s8Mh-&9gdya{ng;n$sJ@Z*a+^o0vq1EX(*6+_3 z*dv^#S&mSwCeFCts2;JMR?bzA2>q;@{iXS3%nq8!09mBRx6J+x5PP-Wu3z3e1`0iz z1x^zhi&kIDuHeqJsG?}6;IBq>$OrsK*VboK2Xn?wN978{%=d?pFr$VOArso^$KRfL zX}z#@?2xEn43I$Y3AwQm0hJI*u^Uj~4@~8iW=y3NXk{Lu%bOUd3Nz9hqM({QMUB<0 zwc2YkzRuPy%PnxL^qgZ=TWkaXKK{5bE)3)L0h4BkMco%=(W-s0=_<-b4kqH_Vq#+9 zY@1kYPJI|kX0|j8IQt`3@m%dEPa)k{Zbq)Uzbn%#EVx)ES+i}unaXv%D@#wFm+vy} z-AdCo$xJkl@sIe*q0-w_Zy9j&jS%Ju0eDJV+UVhdw{a1NjVV-Gy;$1O%c7}r$DzQX z`GihNAqV}TQI22X29Sj%OpEIm*~Q>>oL)wA9$f9tUc7!LNMCFt?0)dYv|_oMMT`m>dI%N3N1=T>3lp)21IDt9DP(K zMlZ_eH;Z_RJGe#R6KWtLRfIjEl`L0PjGsehGiFZsvj$^aCPS;RWUfQYx6kK;%kAk5 zET20gvwz^p7DEbo9#RfQ(L3V$ffH~;CgVX&n(F}6!sZn(C{OIF9yeV(mRG1&QIh$T zAUuGmxquY*mf9cK&vqlrXwrUo9>=%b4SQmgk;p1m=9qfScOJ{rG|Xh&Pciy&#cs&N z*wY}bFO*ie;z{)wdkANV#H!)&73`Dwi_n9avkud*YBSb8mmln*77Ey5L;i~sFV`WAahIC@4=R@R7@ zE`&-Fz46b$s)GXSuX-6-s6~_{e+VxWKk_W2Mpf!p;aylHf4n{;n<(6 zVIR^s<V7S=J%6JQ57Ph(wWx*Vx zTv&Nl)bLUZiO0kPvgl3dwNNpuxcnc6V zWUVgHZ5S%ssj4j*N}XA}?)T%&3r0;CXZR}M*7d~_GNVR`Cgs}ZMA$8(Ld(12=>yww zoY;XG&~zSsxAA{*#6ADaLV0~rG=wCgkRydK#GF$X|a(X0?u6aXJ5iR4|R<6|dZeY#WGh0LxGwc^_b~Ntht(*CNVG=v=?T*)IyB zTpc$27@ENDA1CS@t!YJfr;Dw%(NK2Xowu|aNvH7wkw+XW$Ud?c+j7M2?*$fNoGEs& zX2^)^)pw=8yy7@;0DS%urjBi*!UvC}@<2WpH&{aqn+X<`cXJF8j4bO`8aQi0@xA~g z&4{Gt{5tq}iR#*FVOLsruu#h~6-3usPYHJlDO^94O`_2#@9|Wzl8Ydv=6N5$^s1yU zI2#7HJ6Ykar=}ZDrKwt|Dxssy5ozFGm}#w8FVn^oef(<58s`=r+JIs&5-iN(qaGkUzhZezG?WQb1s z86=ewE(S1#o{ea*q7|hO^%m9|C7Y*;MwA4{G3QzG`Tn4{Acz@at4^|A#cPme0{G?F zqM*&tDgAZHjpX4wfk~k8+MmR^h23~mQMA;T@EIEz%(42!#njW}yVXCaZTS|nOk{K# zl8VMOE@v<^4nrgJCy1U;%-5-_Wq+|s40wDyQueq0r1F8&N|JdRf2%sS;G{p+SDT$g zbYnwQd~nvE-;MnmV1#3%4l>Sf05nJ5a$6|osU2x?SuQi6VX>25GQ z*?T!YDFF%f?Qb7O9+MjXWp2T?RIAv8YhkWwZ=`jbwPFh_tnAg%!?UJZ-1#_IJ_LXb16tofEPTjCA~(JaP3uZt2*JIH!Fklfot%`7!oz9TIKxX( zOljh;vz*aR%+< zj+Gok5mH$O>3q|%4c~#6;aUb%U`DUF0jGe>Q&=WXIYcRyjrqfxc6Tr2IeMpG`8T~eVFV5WdGe*>iQ!_GZ* z3vZ3o8d&o7x{w#&P4=NgKCYK5W1;wQ5yfmllX>g3ibG``N*OGRgN#J2`d7LqjwOw6 zJ&&=nCPu0X>M?p&l~>BKP&k6JfODCNnx);Co{zj*Un8`GrGIKe175vsRyz>~TXj7N z!4Lw10Sp2qp!HpMlDbUS{~Z^I5$yF`cvBdl3i|Ri?;SLPRR?Z zcu?a8$VkFX^n|I-jexE@%hb|>cAE2+Z#uOe19X|=qku@H0&exBwpMxjMX`7yDQhHl zIU7>FG0dEjgsS*szwjQ(Sywwi5FY6un8%iFmSw2>4kWH>kV!~N3{I5!@#kYwb*2__*Fy`Z*jn zUdC5KbtjU7{MBmaTxhJAEzwr4XRMFZA0{K|0_PKjGc(SS+8nr^_oO|65U)UpdIw>s z_?cGZt5xk#wo=BfWn)SdMOomse1nUbLN^a}i7fIE9j5ogk^KnzsJT=6;VUjOy_>t_*e@P;z^i+D&$kH@= z{_}m`YKhjA@PRlA7xvGj7UzcYGS=$95DI-BIGqxoi9GA#g{G4OiaRsWT$ATa7sRY2 zR2|e7-Oa4;@v~xk$}4KJoc%MpYGFeX-8f*V2Pb0D+u4R<+NetMkl;C!T%1{L4YuM^A(m}G51}0t9d%quFW$5E=SS54X z$*wo9Nb7#un{7pFTZ$BOLxa|Ke0u9Wky^HF>5$9V(56{Zc{8#Y9zwn3#t*uO+VayD znzHOR4LfJAr+~hvr;Dt^8b6$!@1j;sq+t1Tg(2rY!?M>FFWndTS_S`S-e1Bz?o(s1 zq*WoQ70ZKNCg6p3xAW)<($Ks79+uoXZG&SVKa-&nJIt^BEkj_<~FE zbqs67#QevXfBh2*$5d^tlmrjEJU5@7Rt6P=@>moPhTl_Yk=}CAt*e{vM%^anO4n$7 zlTm_uEN};bRYQgQT$7DX9S$H}zi`r4&hUj2%fyt`GNap8ggR+_6CyD@2x2?g$B<+E zBr>&)o6&IhLU64!TifkPV_>NLBJy*JI*|ZRK(N2WCZBxcn^#oDYXsD~b_b0|dFotA z#R`%S(`h8y?X(69}INL-m9bWJP7Fpk^=pv_e%_cySb4D5poM)y_1S zFixXRA%RgAd?UX>>&I|@KwW%4I98j6rD!D^=*zb`LA6)#Oy` z2*mrHkOeI%DOEMgo}E*O&c9JeXxZ2%$wgtxIPi&;$gz+r6a)d56=6g)F2yc#q{XT; zb-spTV$~bS$Vf=eVs|PPkaD~fDYczcA9B0{fpD^Qdf0uwDacOrK^BEC@WZ#Vx;Gi> z{5DzY{q(PUapRx2Z7Wz@6|%9@zN$K*<+4?+dEK(VOE0;g*?=?kXYS&-_t^P6aPTO` zLinkG!R8sVASbFCc%g4FY;3|OaW>f%rxIoyUp-O&W= zVM$x#bQ~SQM>$Gs*1q3U5ksn%2AX|g@0j8_G!czPyVEac2u<>K;f*Ic9__c0od1gyu$M|Uj=LPRIkfD4<&Zy|E* z6y1Fi5M!;uJ}tU+A-+rz{8Z7oe?@GYRuX%5JetUIC0# zj&l+{(evkmj?4NF0~&+m0FE!Lq!Ln{bmRh=tXga6+(tN-lAwf{&{l8sYP zhn_oc3hhy5oeY%4*$0IF8gl zvyNoR>$zess<99f%j?anKxk>3@z2Ju~@(tyZF6^T=olN8{Hxbvex72Vy7eRi6MpCz`2+Ksag;tDPn zJ94zXxRg$24sIH18uY%H6ocn?J$L9RVpk#Srkz$XNPxc(zJ7%|SJq}AhPL4ZC5oFN z)b5qGyD6WJQf_*+R=hmP79`7AO_X#@dg`s_5_#z{bgjd~X;)q@3x{eiDaWvV^}@5- z^5@UWRT98VI_OB?MyrFFiPP^P5TuCK2|4(Iqlx{N4LGHyZH(5!W_y#;A!-Q76*QYw zc^J0SbxKr^O+;Tnk!Yr_+#JdX7>e~*`p=6|z@=}yN?M5*hdw?>7t?n%&heuui`Yp7 zUOrl#&Z%WnNwYsU6A)ZFY_YUVgS&17ecxXnPgRkLppZ8aJSPm0Ib2Ya+=eND z`g~(#JAdhJX7U#Fwp(%E0VjE7vf)OFw|(X*1KtCCXLI?Ewv+h0Y`gQM+j5JV$a;y) zH2lUpJ9E5)yiMLJU3%+UkhabM9eJPeC@*5yihh7y{K>U$^!PX=UV&#Zt~gjANfZi! z!xYZ4r01X8^oqns!*Fq@NMq=)DX7(U)mq&-BFek7&KmGA+R5D0Hq`{Y%F)I{tC8dA ziW}mAZ>jw)NmiqgG_o2$1_xV>dI+4%xMu$R<=O1rKg>K%W7DB~5-OR?3a6nhvMeUkJM6pD2K{zC75EY_pdvy`rDEhC_&Cd0QxhcE zKMIJgd=&2ttiabnGMLwA(mYJ@AAfItY^g3h8x|_X29;1<&i} zy*TMQPYGXkl-up|<$eh*#L?vlg!0|-m}$2|xFvSbuJUlfr1GOX#}##PnJ6Y|FEQfl z8x;%C-P<>GL0fMF=Ia((^)gtQ9u!v+-PwMO{)YsiRY|+WCk~nG9%qc3!!*$mVrFG6 z7M^%?Y6sk%DEyp{2ZQtn7`A?FK>O=8fnj+KNcwsfHd;5AsqUobRWzgJsjJP;FZv3X zl&tfBL5nN1Q2hSv=?mjFy_}D*{N>A%I(Cb87C(0JE{+!{(^qaDFC086gd!4nBv#&6 zy(r)pyk+*dBIhr{$%dfDY*dmEv6$Ky(!4buo{ zl!vcDM6G{J;+!IM!^(>-(Jc&+)vm06&~W3^!3*Xi)MI&P15tI`h`z>Vc3oaNhX~1N znn8lJ1WE-gKWFRJVdn_-wDifWLQ8Qdh+5L75ssG#>_|KRYk+ld;}w5n4gX%>%>_kH zvD))WNRVi8XRX0l#{Ue)4bMgN$GgVF$K#}Rd${*V?(J_7(28&A`aTF+=EEL^+LW`m z8Q^e{TVli=#J0YB127{Ah)@xnB<*#b>8u@MmA(Ln`ua>c`-=fC9uZ_ z@FgJOgiinbCf^I?fAc3jIRuCAmmTO_sZ)OycZhpR87_$5`jsJ zWx=L4vou%ecWt$}^x*Cr_9=Odzw)YIhek9`@!-{ElzMnJxvsF9c-Yr<>0DcE1zdDi z^h_tcuqTB@H4En<$K~z?%mSF@&q$p_TfQ#PS88|J0z*GjXTRP#m_I!y>4A zT(A+qF~BL}Uracr=f>8yJ^`xvWBQ**DQe=7ZAsjJZ*o%t9C$b}C)z;Q9$%t;w$EA0 z3DB;fJtY<=+Jy+ey^5KkM_8>9&8Ru0okvpY=alDD8^&$RY)>Rq1O{nR9oe$2T{6+y zH<)P2KOB(b6jR2@APPzvw%AROAhpiuO}`->iXC-I$w_@#yG*Uq$VBGYzmPP3-nE0s zoK(iF*ICH%OPR>0itil6=Yi-&%5)|0f@}R>73qPhGkw)b$-tOUGRX_)+c07(0wq^8 zPo(zp(AjxyJwmg5aM&Ar??)ktirtJyn%wt5iobERvzP>d_)vxIHsM~uUH?QVS}61^ z*dA${iq)ZVSPDFbSz-2#Asu_n=rN$$&L%kkK+Bbe=u|fB4L-*Bti?4|6(YNkV zKv5_v9WgKST>}**zeP_DNH$+*Xt;|kng2K5sH!gg;Qu||s4wU53-Al@|L`9CZ}UbW zJe3{$p?y;2LqO>pg9Ai)fKIz_rX&GR=Sacx&+XW~^lbhwc%!zUE<{^)c4vPeE=V~v zoMzpP%z*&*KM}(t#?YB!!5lLz3y)p`65}g-FO(U@FwAG;wbw=xVv!$m2op90K$DUT zbiKVf`$8HeD~gkq8mYchW+f3yIuzH23;J#mGDr~LjRB5GK)<`ekAL`RT5LE7H|wPv zI4nw~6AC1uZQM#*bf%D%f=d=7o>;SA)C?#6d`sJXxzbBnTd6Gcg)Y|rNKWA_ZgRua zSA@U$nd=~>8aw8}J8Il!hZg9n5L#etT8XjRQI1OEhbhmyy_VG#mt?~f1|}C5c1T-d zNRaTfr9q0|8GTie{PAhwJ?(paN}zp8RN&mJ!K(GrTVTW`nV}SvFzfWXjWEqiQvV_9 zeGRAARAsK3DERHsonmjL);R%oDQ5XDL3WwOdZ64m!B1+zCJrGdLZYxPWD+oCSS5b0 zdz@Xs;dNVRGTRgyZtN*HYD(lEou8~VDoq`^2A^DyL2hEPAQF1gAxozss{D~^9ZhMtZ{+YC!JcbV|(1u_V4T=+g_*Jux;&r`wc-mnoG-#v6INHGps@PNAv&m zTb=>nW+Mha>Lf}wtN#V1Sxit%OcCGFz55~=&6&kT#>xA>%~j8#&t$r^ZYkhW z5XRWFDJvtmM(UsXl68$M*%v0Y#Hyj|W0BpHBX8DTWW6{&a$^)qNT%SZLAM1|rO2A$ zfkR=3CU*&MVg|&-3kjlPDMli-gsiEelaL33_lPeghh$?()sl8aF^d9cHQB0AO+}ol zTs1z6ljht_=j-$rWv{xk6|IY@=QL5xqDF>2c7tvv52g%_=_~VCdbsp6>V-*@oO)aJ zJR8fl2D8no>!la8FsFWst7eBzPN5u+S*f!$EPJIcl5LF}5xx1f6}N4-y}UKP3BQqF zHhI>0(t1X6&?b;B5I2y%FvEg}f{+661M35cgV%5|Ut}Q)1=3_J6af>i)`y1j{i-1E|Y0=u*Zc3KYScCdWLp9+c+aQ_DEdL2(Uwogy;c=^;7 zgYAqHrL|%D##478F9(^h@yez0Tr4!1+>+ttWoomeenWM7QnQ(lw>(YKR?NECZj@lI zg_y8?NKFC0O*%4p8+CyGipfxwG*eDe7RC=wPATMhE>Af&2c05!gsdTu%{ep|P%}oJ ztiQ=s`omC#@Q!tX&NeM}k1o$ZQ5bSV8UH1uED2sHRVNska0Vl}pD38~tz3<8(+-<# zAhf@1(^ZY&8BoMOLd6ceBNOZETpq$)X+Le5%?#rebMuYZ4QeWd${Bx0v@;#Vcq9Ay z%u~9nNWA5X%KBL#AKNi0MOoyvCW8|jPYpxsfU_As!?Yr$G_ZCyB!355GSp!N_&>ru z^}omeWaQy!VQp<;L}TLaOvCg)^FXngnsS&hF`4`i9w%olmv|1sz%yrM#uDu0CJ0R=5Nc5Kt(GWvirS$k5oELx@Q+TjSu`@HJ( z{b4SV+gT6V!to+k>Uf=wD;ovRCymT_TJQL6lKW)(Rm-;6_<=2uKQ>LZorE}&*>(j1Bs9;YMVCEnN zJY*go5#2v;@KlilCM_!U?QI+m-=%2!>D$@V4Q_jBVw?M{0I}-MctSCLpZt>0EKvBs z`gZnacJ|t!p&1%p%s-yPpV1AVV(@_D3Q!q`KN3_iRgTw*lo2+psKGP1dLsHh<359> z;pYL0PuzGD5hXQ`i+~dqDsh3mn;!ZAa`CusYe+O96p&(kRM0!FP5w zn(~&*nVW~(RP=8Dra`+IPdrwrXn?n^ILqlT#QYz;#`je!>A@U}+ljm4Gh@bLBLA=1 zEHB>xT&tsP4=~5Yh!RZi{nZKouxAH_kha)@Evas zOmfb!tC_5pwcx*7<*r(IwZ|R_?{kjUeF43uh+39k%WHN3l{zrMDg8c5ker(%+}7)_ zneR@Qs#PQ`COa}6#-CP9IC~b+JJHm`ZDh~=x2<06nnt66EZAPKwKph4Ahg@kT#S5j z+(^{ka&O}l^5xPUP%tT#%2f(gvOQokn#~q#1xx+{MWZt5%qE-B8dAIJt)@ez*O9;> z^3MTF>6@|8bj@M60{IPZ73~%JXdl?E6BI&F46Ot=$rN=5)6$P7n?`c+TZrv4D5Zdf zHXVk$!{9VEe!$$T1NMflhq>C-IQm@a51h>?i&K9Z5fO;NsIiaqXWIAC*}O={0|eAC zy0BmZ%*a7PPY36>(J?a!zR)GqX{RX|aSg_h+GqBt?+FH;u)U=PmBC=ixUk#B!Ax$0$ z`HkHzd~>H3kz^1w+-8S^#EwWZ9hw$X4RiLD^t4oaUN?}6t(~a$ib9izb5|5bWr!QT zIjAIQ6c=b_4n?z4npC2Yt&xrc;&L*S;oW$MHqecrk)lp=MUPUf@wC%lQ!S4p%yYm? z;jOy1FGU#D3O>UDqR~QFmB4Ct31LZ5G2ekz8DSz}^pBGE)Nm|jE*$kVTR-lx37L({ zE1hA$pt7UjtmK^Mc$tu9L>j5q`CUMK7HD>~oXTBXYu_fZgNU(@6fXF~pxeMp0a9)q zC|j>7qFyvAlDhst+>}}QBtTOw`K@pTFk+*zA7?DlU6S~r76PWzN$3llasJMEw0il& z`<2)k$Y=W83I`)EmkK!F>h^k#=iot!2qxSG-ghs@_d9H$551fU`~|%K!C?c`xbFnO zQHk!4lg|%Ng{)6S-p?BkUi<781n<5N#^wjX-}QI*QWriTo(u*WG@zO1h4*V@)bcYJ zRc9B+pzcW>#TjPD7S9h}!~9EP0>wA8$&sjdd*U&ejI$ZJgiz-1r2HsjUWzwO^^Bzc zyW9^!EhygJwv0F-Vw$tXNQI!w}w-;@W{Vz))`zetvzPJP#4o!(-)+4m1ywdx5jX*v$i z*RH=TYiq$wku9qhKnBNrT%Kq%IMQJ2LSDSuyn zZiyK28hohEv{Y95@#*Q+*~Q7VxuyBti&{6fv%S2&Us>nGdBs{aVht1%s@Ws^Z-B8( zhU$=}L{L+U2nOPfn=)uhM}hGq9W1Ali>*VQa3Qp{m91S-cGNz}t8@T02Du!@3PMZO zADx9EtKC@~b)NwP({8)|KGFn}{m7+I5rcWZy$)5vjinN^`3p*Al?!TH>CAP5%jQp* zwcp#KWcD4vHXlZjA7^bo0WvPZneK04xqcqp2S-<^XV_hzyI{9bzjb$!7}(UQVXn*B ztqSTQfN=6{83Cu+Glx-7>v%V``kFq(kJ;CnX==Vt_icr|Ul)$gLMJAB;onm&#Oi?k zY!Ud`aO_j-Ld)p!1Y5C&C_n@{BKK|_2{$r%@(uMPNAgNVAX0F!*tDj87!;5e_j-AD{DO85|lhRiS>PJA1b-)Jqsvkl8VQi0v4d2g+X_5(Jp9EogoM%M~@1RbfJrMj)4m)%7eI4>MW(yK`TaBj;yX+|sSEnn+0JQjG z7jq}ts0wwf1;&hMWgfSA3wPsQs)8vyqjHlCoOU8~iWjzp%xc^K3t;3|L={wzrz*!i z*oKG_ni^j!uckx`An?PTa9!);>W11>{}kWdNazVio~h%M zxCsNC`34?m?6{F_U6uQNQ7?KF>FoTbmN-lYIl~a@&O%w@V)|6$?`|E8<|HPaSR+Ea zHS>A5Gnl>4RH%cvI-L=HEyG`%M?(Y&z6iYs9p4tNMcTiT4NoM%49K91*VTV;q>0;> zM}xw^r4FsNH7dr8>7=#1A@YqHj$y>%N}wcS1M`gW#d#Swl@`Rd%rzhy2h6Egvs7Xe z$wzw84dXBZRUBooSgjG0Q`9J;fjYym03u=SB^UV_qnS1=s)@qk8L#>p@|dkSZ1=%c zd*RN_T98E;@Rb*ASbNPe$`KT|vLRFJr1T`@be{d|i0%{dmgsVg>xUncJ zggj#lW$^>@;RyZUvQ;&-it4_-E8vw_U2rZE0jx}|rAi=pnE|0-J4{V%!tc%+gJXAg z2m0Cc3owz_6k%48pM~HU8WwoMAeAQtebJt}LOO-p34njgG1QcIP>@r+S9uJPP-L|B z#e|jg|BR4?+1X#^BdKN|;bP50R;VHwye*79pU!4{_47pUni2LX|JA;9pQv%r?ch1TGd`T<5MZgmex2d+{Ku+CU8-60Pa{VU`C$BZ2^}4Jx>@s z8;8fBsr3p5U*ICpjPX`I>JZs!VG5lopq1a`M2u7g8&&yIC>Rki_7_r(gsp=8>nj^r z1O@*TxhC*$&5@4$rI+-+4kQH1_BNb{6+sgN_m8m3$-4$;|59dsZmN|S?0ofY8bL(= zZh!TFqdKOV<7e4Rch8;mb)<`acfmr?KqOx(H3?W{ub89w!c93bU^l_my+WLrP$fA+ z$@W=4m@Ba-@?g={VXf;2`2Ot(PNAd!`2Ji&u|W-;i;lb5VThXYwUhl5jyeROP0L%B zGYm(kWXhEew^I;=PR{eiQX#d+g(N`grl0 zz?n#>*gW81)Swbv&b5d)99zTvc78z^gFzx(M*1U_BzYXGlULabPj-M+f{=UK&WNbq{I9rV`hgLJa3zNWjn|T$x}tRFNzQ zTV~gOH}d-C-YIJE&&{uU6L@V&VFZu=O0r%+q(=Z!!j5l7JdBwrmfiZa4>$?QZxHtg zFG6M-|J0vo>sMVaqovJ#uAxaaJt#XWM4qU91%%7L*0zqdnL z8dK(K9A~8!`{FLOo{CL{>N2r@lfbnXoB@q-W zbxL;;#XIFVGz*Ix$SbPhXl7TV4}3l}3lI=(Rkgk*Mb^S>h$|qt3Y-ASHwh7EAV&2X z90Wh#{{!v~)bsAQO1CAPc-|T}tBNLRoRqdM>#$cDO)1bHSVSV$P@I8mSz=-%OT?6% zGzY+t02dk(pF>^(v|&+$0Gy4QfSu}S-*_MXht0P43=$ANaL7fe5_qThj-r<0($X{z znZ6U7OZZ&L3-%WDJ#@kXx(pa%*=i;e&5XD2( zc-pk7b+l;F6Dd4%^(i?b*4?63wMW`$f>F+#2}cq4(U?UX>U%VPa-9Y8EF<0Dcg5A#*_*+OAw9tBv}s`19^pFS^fS@8Sx}IArMzQ`}_-Q?UBX z+WhVn>tMQ66+1+Ic8az=f_*MK5qEWU*#o{gc7g{Ti)jEP2KXxzf0}^=^Cl|q(l+R4 zmp24BDo(69{jj@#QM!c9b$(WTm!K{1t`F+>H3- z17wEQ9ES0WsKz|FB5Zk+M|T2YhoQL7t#gK@LmRAinr~w|chq`sHt(}P_^PIUaRpC{ z^JS(xG?>z^m+@N>UkKvO3RU;u1R)y^(mIKiK}Eh`O$Pud&oXjwV!TS}p{&zp^fHax zdu&;F?#F=?c8t@kpvv)sDZJQpxKW&lZme0ya&er{IMz%VTpgM4wVi+=$*2K!>lw~2y2>Z@y*qnJ_>iEOf)~)u)v3R;jC)V7I z?_x#IwdtXv8DBVxX3;i43(oU235lu~P4lTA%;fq{Ph?rd1Ye201>{xmBWhFX>cZDEU8zNwSNw?if*Ix}ilq(f3 z5F73hUnJe+K!a_1-m%OAfKq`F4_Kw{LX`d$tQR3>=njeAq`+?%3mGZ{g=fS)l4#vh z7Z~S%-?q!;l)|w=%~A{Q(bLl* zi=7gpc)P0EI0$FC_^f9*bP{KU@>s<=)4x^%wUFM>nP9_YCB7+}6aXo6*eOI{hg6T(rz4 zRsJWbw!Pw#WMsJcFQ6pJ^HZwXz@hL+F1Qhh@A0)@&{QE~Zma^7 z)jx~Q>9Q2~M-?WFhs~tK_T?n%IjxbX3x5R~x|dlic&)^qp0CI%RQ<=z#4 zGjk{s2uKx*uaSD6kY{G3t01^H>6`EeA>A~&R{Zi&-&iy5tL;!7&p-Gd(#!m}Lr7GxUFmyhr z8-i@@cteP|mgHzA!53a)9&irD{2G)x{WAxA%nJo66G}bo(sv~Ty@`{EfMol=(hY3O zO5&!y4dq-jQ*!X@W?yKcpsWkKy;P=zmHL(mGqRj+N>DbF8Gx%A7;x7F#xV{qMJwgb zUOD*i^3TC_deRVqJ0aS>;xoTOrhrO#!YbDbosX#RnO=6`Ci%J> z03|%AeG}+3XLQ8tW^?(ndb6{R$?i$H>5ntQL;a26>_r7BbeDOfA4UO?R5`!+{A{3Y zWcG)cw5WIqd>}Bdn$j?R4HPrGrl_SQMVbty4S7PIPVg*hD}K3;A=BMYl6(}Q4`mM# z@zdKv4o<`1uA9O)r=28`s}bT&AVz;L|D0OjDAub+0N^~nR!^#9xDqp0NraxKxD;as zJ_swz`_bN@Oetms<_Xex(P$_yX7z^iudOPr75-jlCQxnH9bJ;P&lyhbR$1^pme*QQ z87{ijOZ0dPY@4bdbBYDDeYb4~x77r26f`)glJdep;N0It}Xkgnzc{30}PpOmo}YM+i`y2`cJB+?TzAsbp*ka2fwOdWD3E z#hc9Q-;&JBIrv4_yU#Ce!l6=H3+5}eP2Ud_Zt6+;6ngM$x1wKz?7qe18e_>y?eI06 z_{?$ADZyin7D<>O99xY8#2YmpB411ey+UmPb&bc(W@rx?#p`>uX0b0gF`Q~YJGi?y zXc-9ZKM4K|6HCm4$@eb512I**NnmGs- ze|^=)VS`&o%oRlWRgNXSlwwc>k}qyO+W7bj)x(vjE8Zi;vUQ9E(&8a2@1r57fs-uU~kA_by3|E!S6|brF^3{9~grg{SP_ zOEYm2AD9w29yAYqFmWBB+CN-{n~b4Qdz9W*hr@fgrc)IuqA*ma ztE9>=0^Kr^rz`2;*J#{fdopiFk4+LqdOJD%=*A_@re#_;|is(BLc97;AS8Fw_Vg ztJ0iRb<8D@>Hwy&#)bk_x^DZ9J5LlL#0KaD&N)tNuk*pJe(TVz!S=3ZexWn-UiU@X zk#FmWR4BY8Eld@i*m2AoC1g)3FJ@J!=v=+e(kn#PL(84PJEG;4!Vprrm{?9mmJwOa zx@WPATiQ?AQ-myWcW>iqi)`e;vFz-7hDu&B?QI`Q-HbEJLfeg#wRqm7S~ZhzBpVyO z8`UgNKgU;Yip-GNHC8Pojvy0DeNz>ZsC=|^I5UI9r0@PzZNC_N^oVLR9X+=mpyV#n z%QbpM(Ps7+?Q14xGk6G=8nwln+-!4j$fo*fE-XtRGS4K|gA(3$0_57RGdh<4!6Ek8 z`-_m4K+5RfvNAf}o&wI*u~5IA>gFi-#lj}&ds6Yb{-Ydz{fM+B57NPA{*Jm_u*8cu zApCu6V`qQprThunehX;iS%1-!+w;>yx){0T(yH#({;Jb-857Wt8?OIGfDYDO?;7V7 zcWx{VJO!r*OuT@^KP{tr|4V!)0{~lQeWwc))|l}SxovGrGT;-eg+-2nImNT0?H8s` zAXKa|X^WbexvtzjF{v(Wdc?-Oq+yDxE2WRpmA$*T%@fhMwQ;4BXadGu>~diAqn4f8B0M0LLua3U62 zaufEX1bDEQ_OtFPM8CH!$YMp&Ck-3>b>@E}SFqQY8c=Mk@nM*^Cj~n=#QnqT`ytR4 zwAX^$gb&@s$ecwdUiX|+)TmV@@|6p{oxACTvZ>qA7s|C@26gECrwz&z=4nEcwWCX? zPj;NRcixw-Pe=w+`JAIHjM~lq&t%J&Ly_~sL7J5qU6ghX+j?b^q^^Mu4N-hyS8C{Q z`Q1U;L-dy(^#+}H+S7scl4oqYN8oJJhbc zE4?70(%6oRNP>j?!(nX|G5@p=@nJVxL>sEf!{+jg-f+~J2NHua2U+t!@Vl;k0ZAKj|Cb%(9`Z+cVu_oy4>S$5%bu0Cuje;_@n56NZqP-E5w6@LAWsNB< zZWc91&$*7U>uQ7x&V~}1jggERUa2qInuB1CTi1ZxxW;W`f7*`d=6#+leMnEzW!m4Qvpk1UdK$MNe@!*M zCX&G$z?6wd{Y{bg!Nk!4?tmcQ?1pJ`MvKWb{OOdTQaa(&SdEMql>FbuGCt+(yC{k- z={s&w+fGN7qq#~8y1St3$^>$UuoN8lwEI>Ok|*UZH9%`xSOB9>q4swN|Mn*1R`+XoHS=kv?PobP!aZaMa=GJS$F8!d5?{hRLN-Gd-gd2%*VW5YZS-Rv9Gibk{zTVKKXsYje~ zlNdy^52r2*WpLFShK4fxLDk%l-`f#c$f}OFm&=&QwA{F2N6) zRDWMDApu4Cc9p-TvsKZoY)APp?uZ(lcp_H}go%#m?_vf?)Dof6|DqEQLYbJlGbIMa zcE0LPbu$V~2y8xC|3(Ko9n`fiWRF7pUYjfpXbbS?^>d7RZTI*OH@bI_SqJOs>t{}L zEJ5|rz=QWzNF!zRhylmv0TmuBQEqWK+@73=3so`^EZK4AH_J(pLH5~C`@sc{E?xC2 z>)ia`J-I#b=i*r3Y)I3Ku>`IQXc63{F;ZS>L@z^0vhjt9L)VQ*xxX(yVqGFrMm9Jg zUIND&0k4vFP>}*NY`A-EwfS+W%sCKGfyaG7w)ixt`xi;2)_yke#vPe^l_juL8^^P* zJDk1u?kaM79++J%k#kRZ25%B)6JuOAr*4%IK~OYi4;aBe5&_d}K_3I`yaH`lzk!N+}tBA~m@RlbJUfpbLzHfG4`PM`O`(Yjf#g zi9wI@^e7@IdKoi9ggw}D!Zn2}8kp)DdZX8gJ|)3h7f~^qrnM0}0)=bO9tukyvI3%i z)cFqw(fbVWkQSl}1-xUH4CTFYHhWnlkrl z{;k+v`{pYUYggo*&S{b|Y?v_Cxalq|$)io0?rYJ`l=^`A`-x4V2}c|rC$71$sR)WW zWeh!4gaRQ{wI;xP`gaP;iOZ4@-a@!})o^;+I2SF0Mw=~-^@tLo%uP9*g+swR%jU7Q z$DCtP?XHw_|K0Mt`Cul$7k|!hBE6$_+-=7DKtY+r^1!BBWs?h*Zrbud8M8?e&<0j0 zdx3y9O)kd-k?sl1 z?4h&;yZ$py#H3>B5kum%qpv0tU1r?#9GHYC!OJ|N{5wti{J;r}Mb`dL^!P+kMN~mq zZ-}66nv+N6r~QORb>sPL+AH%~^>N=`H{hVqiH1NEQeL>yLvGRqxp%wp=v(MD9ag z=^ixKk!#a%dh|8UH4z&|kr`Ky6T7P{W?Tv98gzlFuPY3zf|xOAV`AE6HR#!-lPjOgI8GI|xo#ZNIej9|?&XCI z;R4FIP4y^#L9EJ;S#eKPJ1e;5J~Wm&?}Zv)s4n+9Tg#b%Q}95i+y9(Zs8}!^kB+!@ z)|2=MT#)Lzbmfj^9ME02{E*$j>Fjkmp&QG&oQ3aV29-NtzidFs3KE_Jnysxr2LK^G z%;Dk_d{vmA-MzNZIU-qUGZHdHB;{Rg3r!6RkSrx4Cb^KZO~c;-{OCh>UzSJlzJ>O62>J-YH?`Zq%2#_l@CwFcEAC4AFG5koijrRRio}>67mR zhW{FcV%K{owBzy7WDoU`LHLfcio#}M%|rxQZNvXIAO|A@r~g1YR0$l29id+FoIO<@7wf2#8|i{UHg{Z9^!cwLL9)GQ^vN1t z$eP=%J;z?d}q>SKbD2fzMBEHG3j9|P2_lYF+ z^jkTnE}6?>?xp$YS~)W9UFP|gR1Uc6Y_m#z*N50lcTro}nb^;Ccxy+{w#3b?oat0s zT$V(o7%>OIImsH;__v)@QmkJYC381F#fRMhV5G&iS;r?0a!7gw?L+Hdv$8zlq(+ZSw|?)f#(lV>`8(l+ z@{8H_t#mogdRB+=IcHzpiIICk?7IU4?!cz=&BkuS<7QsG?QBxm^rnppl}N>aN&N>l z#i2cr!@k+;SEN4;nOO1O>FF6{mNm;%GcK}s{S()H`y)#o{qG({kWSzGl?!jNG@Pn0 zGQ9!Yg( z$Oh|f8>tiT+Yg=p8O2crnfzEf&um?-u={8J4_)41CuKw#oZa7_QqD$((gR& zHoR}%oweu(c#W^tE#8l$<45;?-Vtxay;F5W{pzw?(2-O1ObZ zw@BGZDU}qaRGl%&l^RrL{>AU&$Z?AvYJy*LP&2sbziZdKpLAt3iw&t558%zCbbW0Vs9Ai-*QYJ-;#oFP$Bm0DagOJj~JG?J?NT z98{CP&22xX7S0!K-5^uKpW0N6Vl$m`zu_s;ZQkm5OOK{9Wdxx7gD9_pCk3Cwa}sb8 zKfB)N;zG_#2Ilqeqm?iRZ$jn3zx~`Un&oC5jLO!T&+2yQY~0$qoWQFwDU~iv*pK+W zLreflg{B*{ZW-|06IEBeATn`^uY3x&oMkvJ1F7y~PGZ?xb7Nl%Pihtv?}~@$r{9zF8bcsnqPo5jCk=!(U4fKL7sPc zI)QaAsh=Tbd@V^b3g^Cg5{D!rJXKrqZ~@W@36DcrRT59bu*0&OQF4G0NT07;+#1N(DnqK%*P2va)N%O8#O0;z(iv`yp0N3J!B+eU-#&3F^J z?4I@!TY@POR$@zouXXv_uwXD`_`~Ad->7_GwiH@9O7k-|E zhDlyX2>I#0#8geHVVDBnjHxgMwZXp41G}@u%kR@L>c@?V*S4|;HI?56j=3Y(I8()bGn1UkMV#N{H&e|jcl30iLq4Y6)R*Pdw zss};q@~}9^PiXD#q(omLqJM=h`vKtYn|zpAJdQUzX~&#*3NA~ST)rR`33@BLCl&=& zTsG9)QjpC);yvG7=e!RVAz8K5*o~LEV)Bo z21y~U86u`xNK9ra$L3sl{1DSbmn#q4jGEsB4zBOAW6_DWh7Hforve?>auc9rxAdvmKXKY+*=Bslqmc)XqbcT zW$W_OLYwm`Ss1yX?EuP`+tJ>OaOvvr#L%IOUSa`Al&2`-a_zG#G>SPcoeril6WWym z+5YI%OqeK7l)1Z!rTMrKCAA4W@~*A~v_wm2n_pt{rIe5i=6bVCt5vXD;9~y6DUlc! z=={i2)kAO+g7d+iCL3UpEcRmEM)uN+8qT%2y6R{9GtdN3OHFb9<*%IooM*%3Pgw%=qJ8VhnMP| zLaQ*vwD38p|*bG$Uv zLBwX=E(-e3&6{*!Slf&-{+TI}pS3?odRpH)!y4#2c!Xt@IpdbLsZ?MLe9Xi~x>CjL ziiv44340J5j;YT1Vc{06-@xkVKlDsk&U4AH@pXAgs$m3EY`7Mi2x#?Meo9|_w2>M?vcqFH6 z1Kk0_rhV_Gry|hs|UDI61Lmim{6Ob`2vq`1~vMC*z4sy%M+v@fj;}Qm3 zRbv$?2?J6ccBZ=ls9bh=S18_5Qnf9$Ze2FFB4YMDe!rWigB# zv1+*o87wpxfdd+d6>W3jMj6yz7&uTbUUo5C?#Fa<&;& ze*Do`ZkD_E3*hQWODXc#HF`?&$1lUV2fVT)che+|Q%tYVqbk>`xhOmzcLxN#?MIBK zd)<{bVpQ5_dGoG&uTwqx{z4+myHA6o1fjNHqblH?5Nj&%D=W9AdvmC8+bAYq8(j+~ z8-JboSeq@chspl&qX;KZ@yR`vhHYMAWWk&SH7G~_NWC9Bv{9?oJdW|ubFnvwJ`T&n z2n4$jLm$qyDa+M@f#xYJMwgn#=g^vfBL{4c(0d%oVq??P=GomA`Y>&(S7~0KIMN|J!1Jbd3 z761#82Juc=-83X%qg6RT?8U^^@w=zBfD+9J6iMOycBDkl&DP)9tL2vPK^|Bz&Z;+Y zN}d66Frbj?AzjK(S$7$pGcw; z*&@%opQdX$oWdri>$rwAol1ESOYeG~2=eSb9mSZhPRFuT&mT&(t#0%NfZjGR@iF+i zyS2QRdX;KPa}p@8LSjXfl(6usVDm4`@*iJv3S1l-( z#lNQBvP-qz1jRTV2N0}=(R-Y9grajwiUh)b=L9skNdVde6DQHNG;XKK)}&kdK6OMIrUsw&_r>A z@GRZycn%M@Gf?F1*2=0mGlez>yTUsu<(X5oIklu4;4&6CcS?Kkyj`DH(Y<@m3#?p} zw^xeU)al77sw2EyyVuetgESmZu(AN2-_zIC=~Dy&z`(`thHM&HO6q1Nr*Fd25M0so z`;r=(nH<dI;ZpZ(E)1;sV=R*47sx;J8+QVk!UpDN`n;!(~>`yUU%w0M^ZV5;_^G z$P~qC_Ste1!cYo;==+Z5zX3K_k97$6RV|BQy7&!<9a?e&dVhs0 z5#1o>n;j`jmci}tpLaG;a3~*@KAEGOkl_ib1&=~Omie?c`vig0H_}ZP?OkHvq05jz zOZzr7WO)!uYBo{W(2?k`b+s{n2G*-2x=Pm{ISV3=H;NgTpW~efURbT|t zu8Ql+hZy*WOnIsU2YxN8p_E|9swk(hC&8UM$g_uf4*2v;J=`R@w$%F-&VXeWJ*9&V{z`*KA2L^?g9E~sFb@Pz(h5<3I-@3ID28zJXSD|8L73b5;%wJyqX*s%Z6SZzy}<%1B98BD=Vbq z|G|jEa>)a4>!Q`>Dw~sfZ(+t7lcki^(ILyB=~ZVN-TXfW=9 zuy8Pcsfw|PG_GVW#P@J$bjX8|e_k89%J9gLhTw8@|b1UbZOt3)5-GPQ@IF0>Z@yHJ5<&%_Ui*z4n=jLXb4mqAcb9MKjh*p5`HUpV=K7X zTG)&Nrlv?~I_$@k#I{;G{x%*TZYqY?QkV93p5pTKpBJX_^3pj@3oUP-(_)gV4q=ZS zZvB(`+ob&~L=ssgS7wa>{Z^$n)Y?J|+hzw%?ZWW(-m1PkFu27YMmy zCfpyKv^NC5w)tgLpT&7GJ$d{(J{|Nkw2JpM&cI(&mj#DQF=T@)Ctcb)^crQtpwq$s zOEFif>c=7nr?NRGl&5{0EV;*+M7I;^2X3;f0c6r0S#B2Z3DO*PAH-|?bq!-N8yUza z={IE2yPEO?a;axKamK*$VdsGLgI29YMR*tnJ{@+MOUFMBU_`GMyvT;()BZHadP-E4 z+n4|9K3X>KjST+5$DB6H^eQ&yXHNT8d{p;H=lS$*rn&yU7Nuzo(9a%Cz~#a(eS6xz zKbucBzQi+7uX|$4r(H7Q{oRaF5>3%!V^`Vg*tQxlb(Q+hlD9NakQE=Md7MSK!3~_v z?2sj8aR3y(QEVqa(W!?2JE#OZ9N4ZqB*^4Lm2zx4jwy0yT*Ag_FIE_wXwfN&U(`r> z6?}7TE_=Fs84gi@&}f7$!*;p%J6F42`v+ z(_B#5g2FQJXT1V-aS4~k20KdY(L;QmIZ@S9-=TN0F5qu@vfL~x%#wRWC}g@WTRRy! z;+-5SA*+Q7RMbh1%B+(tD6-0Zq;}+p&}`ngg<=}IxC_-HBOd;{W96oNi~NfrvG_BH zlA?^1-XPRfO_6^;3h|AS4Mn|88yM7KV$RA{!dp}AEMJt7F#vrwQU;-=>C3u_R`?cx z5bY~67gm*3VkDYBq7!A?9)c`>rR}^+ zI6GkmUO9aWl4}u(>Y+L-cjp^a6u#_j>iHQw?s=~b` zIOW+JRK#f}m_J=!r4+5CkatMa#J^ychsggmtE-%;9#_(1XT_&yzpGHvJXSOK41d}@ z^b-Kwj$l%)lM6VGP@XyxGsIRZX1(fK!+`w~qCe@r>&yU9 zAl9X~?h)0%x;BH4j^fLGClI!HsYT|OmZD{8M&wiR>XeVp9Bf8oX^)4^x0v4R8Kzi5 zOk0|wxw04sr;{aJX6t`(YXYL;-MePT?o|@bXmstrcEY*3A4L%r|F*g!b~y3u>?t5m zVTpeUr0Q&>;W=?S7t{F-he0n=J(&SZ@D(&y&A8Iot{SGCT_jE`-h@O@1Gg@_L|{Y- zUu5+>V~8dW$%=cp=OEy5*bF?v?w@cvin?jE=sCZ`J_s%+deSDGkV7;m7&szoNWv)| zIDKA&FiR&K>-AEvj6QWa%8>%vLWJyr2opo%9!^3xm@LL+%IM1YquD{8tW6uRke}|- z;6k8s8+7=M_oUtL5U)^2@yF zBwL6f5P9rpHO`A*!dl`*kgL zV6*1e`-gvVqd6{69~&bj0PguvP$C6vp0YiD?HaFEyG>K~u}!wUo&G$Z);9Rn@#WU2 z4bd#_X?k|$?j4VGJ+%5lG;+y&B`r*!zI#$EgZF&0Y>;#fW3QgbBMWcNY&e40t^Bv=u!UIF#u(P&Y^x3ZA&A45< zor>Mdeyz@qaW%)ey8bAco!;}_9KKc?hiz2Ktk*lO^}}W4?kZ2W2QEv6I=WmV98-?GByix_prN{{{xQ`uIUnI$`pqS*@V}J50sgcIBQw*L4+9M$|DX9*yyZJxi z1<*z=-J}2%mKN=!0Q{fw|7Y_5lK+M6f98HMVPZF?XJcUdAKWkhZod1Q9iII)@ z|B?TNf$2Y2fd3!J|H=O%`d_XW(ry5_|6IAQ{)PWH*4=T0DzSP0Q?yxum>3zQ&JHG0Dw^bm&W#=7T$Zj!^tVpG5(7i{uh@1r}{2O zfusK+kO2UIg#Q;7`lp(@9|8qNHU{?p;{KC&^WS}$tx7?3%?zCW#X7K50O$k&07Qebah|y5CI-d;0EGJg()@=9j}g z1}LyKurc`;_b)#n?Z3SG+gO04k@B#O-IFB=@Lar&8)$L)~=8+Go4c zX|f01@x&b4)gOE{4?pqsRgb0Dg2xP`yW1NY3HD)+O)v4mj#<1}pk`mYR43EHCRu=R zM_OlE;-Tl-mHn$DDf=52SSME(&YZHG>jc2CvctsPV{FMY$UR&qnUyLz9byUnVJ4q951Jm5iSL5wjxL?%}378ruC{I>@dh+9C}ra z@fz{=;29Hmb?ZEqJJM@WA6n41E;o~C+3tC6qwM@-)1_PXDD$QPjpN&K=G}n+x+SouPZScGc(_%V ze;3d92ur3K$|8DG&z%d!B6{PK@&un43++fd;LP<;x& zcP{~W0^WLqKk1w=a$gDVx?#A|cv3au$QplBz>lJx_?#x1WW!iM;dh)t72X1HQD#UR zWrq3ne)G3dH;D$oMqjo36#H0FnG3^>{l}391hAgb?_5dz;~~i8Ya42v<1jAOZAH z^4G|mjvzpY&9)oAiSVu?a7sZsfmA^bWquOng)mHGoMj;hOanV}BC&LDo#QC|SAIT^ z)PF^y7rM5rXKVt&H{Y(mQ@Q>KZ$*Q@SEI{Z?YeZQCG6Cq7uCGr-wIVK zyhj*@baP$9hsMi$2;o{3_*THpDzhx3%9&M9HZkE`s<(^ zWt?72ckIX2WLOz@_DE(P$GGM3dQ`+;DPIe4Ud4#C+*sU=@9-VjkvyqNxo^^p2Y?OA zBLmDk=|Kj7AeIwDa({+`0D+az?x_oyV69u>MrxVumH>PT5lQ>a@-w9LrN7CF`TEJBlw|zz?uD* z=hlE@ra3GiB_O~BwTb~4xQIL0w0Asybhy7CVA#I@7>1Z#pWDsP&kYO|3`~T9HPjCV z#^S1}-%_JL808WSzofq(2H=eXGSht%bf5tc5D*!(zT1x?7rw_bPr9mn}0!i)UdA!!$3$suwP{$rm2 z>>63R)$MTL8f~%a<#0KWAB^r+Q2p+mjWxhuzCp0#6ducJ6!XLkI%qh^B~8teC)=vr5CO zi$s>>Fq08NqN2@;QuwCsU=Q15$po{6;u9qG2~{v`ZsiRLY0d{I7OIjIU}!hELU zTAELn_hqTE0x5h`xf4>3v_jSARq0$n;;`%Vc$wv;8B@v%bdO06@`oKUSP?1_s?Yg= zpV=iLN1C+B?)whd>5X*v0VUVUD^Fp47yNUB?uk1ig76OI1*CTx+f)z#QDCO#%F-PP z0qbC=&137)X@2W1a;ErB=WU|#48QhX zii)2H?-(?6uIV#4bU8WebrdK~XiKfrpVNS;6H4To^q5!h0u zBO^1E1Ag&_FR)JT2V_-ixpp4{dTH5<$zUIlz?o-n=)fKBiJTwUvZHGDU~i&*3BJFi z-6SDxU^cx6{DGJ@eC5C$11ykf1w?NEKVY>!=jge^*rUvt`bF#bio?4kcJaR_)CuBw zBu643w^TP!!I^t~A%4gRZ`6x{)<^h~=$lYq#DRU0!+~w)GsU7q(5S?S5+~d7NE(L( zkI9oN$Ypj}d?dqU@wXkFA#EpXc-4}+Umt}h0vHhtM=I@f9gi6pQoB~E68A1}8ezTU zyIkZPgeIAF=@m{+eSnR`o;|gu5@4CK zhS)nxg}m4ziLd-;!qy^ihJIjEcuHe%j4taf$gak10m(K3v8k+o{c z*e0Zvkd7v0YWs(*=Xax~*Fac;o03t#;IjRf&^AN7b|jg|Qd4B6sZ0KRzt*xPz>8x!PqN=q3 zWyN-2;fz>)Eg>AJYb_O8F32AC0&=#GjzE|^1%N0Hh)w3KI5>UnvP5?hj`l6i+V6cHHVXK*KKL-*u<`kZvC2`;f9<85!8}40g1= z(_;0@g!M{6ifK4XRq}6xX*JD^qz%v7{bNX!nBduDb9fpanSqsdaE4}JGd*{eS46G1 zhm@N|I2ZpF7V^pEY4UF-M?nv@>*|2wQE-0)Hd8Q6VS4Ew?!m4{b8!W2^fcTP#B-12 z=(*lcT3+b9GYeo}NEu^4Lq5@@dtS!qw5ehwe{eV*FyhPrTwG z4%&qdXvx9mfmq$x56Fbs0Cy4_eW?kd@5uVe!?y+4wD>sM?r_;d@6yO#Nf{GbV7c6V zrXg;5j;mhEHT_0SnNV%#B}?YhQ_L7u(?r)p;TqRLkQm!RkQ`Pb;I}H!;EGlPm@(aJ zFY!3LC4ag%YVS{Yd!KmLb*B}9Z7XO5pg*{QbrHe^t01yXOn)Dh@gKR;OyWmbb;|DdOOr&*qFQIRzc)9MwXGN*y(TKF zeW;q@X~Sts=3r6b4hpbGhc-Ynb@XYN^l6!br<*fu2G!h^TTfbP3D_cUO{_`P$Cu+n z{=UAWAsq0%Aw9xwQ&=az*~d?~-$DoAi|_X!77m8~T-GbvNiy7iTqg{h;9c`4U9cb; zTTbBBt&Iw(o`*i)tD1p_{ViidyVWu2LCrN)F=j>|CKPi;A%@l(aYCZZeSH%@4oEn} zInIm3LqJPVhQbw#z$s!ZB~x=Hjgl`O3LPM_@@zv9{PVOf<)+4U6gNB?n>p>laYM_T z@+su4Y^vlM-qCYaL6@e6Cw6@Ew+rFjab?o3OA4*z{46cKk^MICij@+V7*8tr5o3v# zOjCD&=c@B|&FrGcFF*ZmFvX5GC$eWLOL5w1kps5VKS;O$_N0b6 z5wd;0enk(TtPn!|x8UlJSz6Ox6Wzho6YXc>6=@?NQcfCPji2pb_r}B>;5cLT49+n_ zTWm3WThLSVYS8oAWGQQPCS%o(nY(;fO;VHCgE(m%6aghep6xpm?{L}y1zX$(rNCUV zVa#AzS*vLOi*!S>AOX9>C1euB6>VM+s^)!}=w(%K^U#%W8gfK*wIe}qNJ?_x?|~ie zZb%mU2RdN7Q*S$%1EWXYt|ua5aDVfTck1zP_VI5V#XV|^#mg*7cC%08-FGo8Pt>x2 zdSqE~TWN+hO!moMcW5UZ@-D~Z6y!O`5(Xv6n^r9}L}Rns&;2dnoj0sC(O=}EO@?4k zjBNLyw4lvG#JGP*;o*u$zb%yRw92Dt%V|h zO{lFJQNdde#0&*0+R(vQ2JZ`wuLXoJR9~2!QI2wy7(YyPUO~-`zrbx1iZAf5QWE1i z+f4bntnOL69GolkPRmi4kDT3+rt)FSV%5^v@RM| zM<;r^lNqe2E?lQ2qHDHRinEFrREg1{oprUj=>Ym3fOy#Z{pq+m_{{0jxe@hFy^%!< z<;vx5P8ITC`eo-;RTv`)W@5rw+(ZF!*Z#6d&Wxy(LLEvHl=QfFck;!Ln`~eB`jhqn z(_rX%K}nDao62#fkpGDhs94`1b9rcF)M(`TTkOJE8q(p}0Icti{9ybmy>xY`p7<3Y zD3A&PeGQe)WpKx%!07~SND@7_j2RA}H7l?LRiQmrg#~j!acuSH?9O#134B{Ve=E|; zYijCMSL-13bGx(lx~hELt;T8-$zy@U2IH<}Z28$kL8JyF`r~-wFsCPu*V#pD;j#|R z=KHEZ%*!q1OS{=kKtjy|*&}uZ`O2Ku%h-{5Ky2OiG_&5S=tczHX$Hq{?H4u@pDE$P z>&1k51=al9GrbA3`5MH@+h#*bUd9`UPl@dq|i#!-RTZBao)&ZL)ggm_70c81lO|e)MYv4{UKb%Vhh{^l- z(diENo`&|~T5+B3p2qF#Gl%Ha^tItOf6@!&!wA21;5r>IOnyk`Rj&L%q}QkEY*vT^ z3uL|?ki_S}>7^9_^9l5YipyMnSTYcv1z5*y{K>cf+@8D_FG>$&v8oYt@k#4#lE0`P zphYKt*5evNz3~XAdfx@lXM%onjtAiKN?A-^I2iEjH z7e|FlqQ&9N+xc_{QVKoIBmy++_)n!%&G{IFjE!=NHRN(P&^4BorGXFV4QKdMR8+vU2KoBt-sB#m-Dn zL-XY7;T)8N#K<+QLi36=ex-g1!$q*LbSxIioA5k5SpVH-TRleR{myee@*+Q92BKSQ zV6bj>u}EdM5bf2>;Uki$tea6lLe^s`ePrp(mgg(K1;ti^`WsJ0c}s%i$nuHiX?9uw zit1u4oT!kKVPL+y_O|2J$?U;Td2=m+O_vs`HTXIYW@73jt8EdleL)VL%SCJED+}Ry zYlSCMFL?PIYUV7@ADqYZc8wjF|KN}0^(}c~z;sjeCl3z0_#K9JtZrd%sD=uU3jP>K z7(zlDkUAeB1nGE&fA~|HOUl8KvEB!=)Q9)h1T%{3Fhwc*eMu7hixuweD$&;xcdg&y>}SM7ioD zaV_rv)1o71Bq5o#H8dlIa%w(061c^%_8kD;roCRPZXBip{>{)%I~-^snLg7C;5!Ug z1SPY}&TvfpnPFf~s`mZGr7J1XA#9Jl%He_!EJ5X_=41 z9zFp=1$C0IAuLbu7bTP)cn=GA%q5z@V6kDO zquXcvcI0Y!Pmy}KhhT;?Qe=b*s}=!@ zrBuzPKjOC2EwnX~fF9XCL^B0Ye82iKqQRg2b2kV_EKq!V_~;(-j24$&mo>fZFgSM& zwSH|XoZs&)EcdXA)!OI=QhWTMacbKf0@>pY0hsg}f=|)C%Ik z_gicO8=kS-)IZy8i&+CB3zlMR^mRytBL$`T5r*5d9d9Z@!K4Ao1M?hp#&xuMr@j zCCu$LT{aMDxqI(Pe{!R10q)&f#hVEjW7QtclM4mMD-x)gvNz4VF?xts z>*qNgd&ZQ93>kzcx|$B$RZF%Q!HI9PWq@9xY0HX8fXrMc4~u2AK|nQQ4T^OjKTzs* zI8mlTfrmma7Nm~Jmw+mJ42l!#&hnPg?lLwxNGT9}?PzWnO|oD*CRbt?4O9-Q-E+0W z?D3mA$1ijLuwP7-?=hK7=6*zf>?oC9`SK2_m#nE_Fu|yR386d$y^MeZgPq>_=W?&P6-ZHc=2%|lzsvt))OEy%fJ`MzoV9N(j7%%H;PH%9Y7D1m{8aZVOPc%zL9zGh&7 z-x>Wlt6oW0hAV)O1Hqe6G4?z4UQ)64KjQy%@LlkOY3)ed2JNKbo&zj@KUM&-RI3qZ zlec+gW=)p%z1hp|hQ4mO{&qw86vYUQaE>vm6v{jV64gRKCo#{@vpDF~3r8Fq zc*gMc$bYDmn|r4RM4#7S_43D;Ibfz$^SS_amrPa2jFK56s!%RaO)( z>_Nozu}}@Ij?*UWp<6tnit~1x&)+?2WRI~gyD7)s5rq5gfg6%cf&Qg~49h7)*`YCD z=ZhL5_km0N6qcK1i#xzQCrzH+AZTOv%lbeXc~o)tku~7V21KSR9AMxP5zH^(Z1A0| zo21$FG@X#$8aZnYFz&nFKEYaTOOVp%@~oOOWO8& z+?K_5#sMg0C&;azl9>B9k74KQzydjh&h{PRHAgdwPH^!a-|kN}dtj8p9D*g}Jzs?E zw`Ab=LM{Xb{K zB>-3B2q5#%?e#EyT5hoxZpJEYwbuCfw%AZvS2J2yZ`x>YZFT4w9bx-XEs?``_$@?d z2T@)?pW99+ty z6UbwocDcZ`F+nep^fcDkpIjQ?BM4m~26rKy0NVd!k>1_h9F~Nr5pZrlJI0`<>Fw?)!PiUNB zwq~MCSQ)_69H%%&1MEx$(qL4LUF&<+Fk1tEx1nxG%?4N=5&6RSX1DGUyp!-Dmx6@` z%?5PLk=DZ7hS?<&L?yS1#}vDjsa>X!PM#km-fO=EY8AyzG8+Xt^1l=alQCU7Kjd4K zE}JzrX=XI1)-;_3@Cx?k`!0W79(P?k(dhI0;n9JW^Z}~_XzIaZ`!U)9;r2nj{qghx zQ1$=J?*AEphx;2J_ic|JJCxCmymqL{9Zq&n$=lEN1{|{hMbyv^PN^@3_doUFbCYmW zeIt87LwGpAbaZq;+zLS6fBn}wo<$LaA6a;hQnvk`w7rX@ow&XD@}}1dz!0_{P<$R3 z-VtAxe~q4<<)yUh5^H`6hZg$=_8v*yb$%wvgzTDI%avg=%7l$qm&WVdty$~k&?#E$ z#$>nQeHQlIwV9gh+*w=GRkE*f`#xog0snjRA^(fbI=+lQ2~pyZxP0F%Q=+u_D_b(+ zf+v-#SZU$jNnFA%lHA}(uc(quK-W{_R{&Y8Du0g=Nz);5R6!-#VbIYuCUY$^NufBM zoJ>x`^RHGbLkANGg%!z&5TB*S+626Tr~+9_s=7fKa1GAFeH{DhXH%Nob9Q+Juf@gP zZ@4*WA=9VdFyGGUh=NE1&qUE=jN&Sf?J4q^ptTvTETybSciE>+gglO~eo6;E@3<*F z6&%2*wgxr8|Dm(&{!jUTU;g*}KWz-0&HtCapY(>N%%+USjQ{WYe*Q=PU!4EPOwani zI{%NJh3)@5|L^}7@<023iqrqs|I-@&|A7Ce;XjRso`ZJ$pZq_&0RSLM0RRwhG>ctJ z{_Fn5X*A|BZKFAesh}L z2iUtg*&_1x0#X1X)IMUFWJ@@@QzZ`H(cfb=gvtWc0^9=RLO>({6K1kmMqYwQ*oQkT zK=VfW0#SUMVYb9%`s3Au@&c>tNFuD^&+VNj=AE||h-zqn=L3{4kqicaH z_?alxQMFBY!;04KvQ1Y@>7}l|}EpHh#%oPE; z18K|Sma0Xka6&urG#Bl(MglkWw$=U|UJ6G9`*%wcwJ1;##wT*5mUaH|SP8I_sSEoy zsPsUA>Rhc!Yx(M1;`B9$(>bH`lIxiPnx;y^Q_t^$aYeC!Z@KhUB8YZKzKfG#Io}nA zXP}#W#Ufw#lz#`k6N%`ykNb(l<6M;G?FzF;4QCS_sY|B1tj9T&b-9bWSjRaK7IZ$; z-8lnu8Kx5K&n4W-9K#Ek_cW)oDr(P%#*$6w@o+otLRF`VOY&cVo^l^RXR1)m6Y{XzaFRMfMp8sK9v$5uzD!Vs@^y&7d|?ruTN&8c=LF^(jmM`XeXMfj`PGT z@&(}Hmy9e*AS;Psya1E}GWoy!YyHCj{ek;x`Rhih%1SI)#jd}tHZYp1-mYe`aK)Ju`m?+5x=ju@V zRdSfixeENx(>cxu=}^nTH`Y_Or4|m#HYsHq&u^QlYe$XUXirhPD{_@favfYHD&Ab6 zLUpKh^ObBilNu-T&taK9Yc;#FV?{R4O)DFsQ$;JTZJd2Sz$EA)7bwV8YL-mjeGQKK zjnq?v=bf(v_g|Cfa$Btm*m4>R1~5q1jEFJ&Uy%(qTasIm(bguW%NZzco3SW+1H7AO zTy!^=9$KfO)et6AuYZMvr=c*bRRlw+IlSZ^qkA%o)k;6SiAhB?2rCaMBWlbvY&;?h zO}x~H6I~>{1|8fI!n1{wNlFPRDiN3P|DMT3b6}&Y%QL`*?mY^lOKSEx*V(lfD%{E` z=udKrG@Sq.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%0At5^`a@yb$%Ep`l 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 A*L| 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

h}Uct#FMv@ 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%0AHaN!Pjk&5ZwoqQluk&N@SzyS`_48 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

7f55&VGAp+v6z<-vu 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�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

VQSFFxDt1FLBhXLT$AF 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 z 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

sq$cb>?Bl29fcpuw1;YNx>k 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 @X#_KgQiJ` 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%0AC+~d?1A` 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%0D3I&S^9QX%IF2>rYDx`h;p_7tpbPs zCQPkiuSy4h@1(SIUP_JC)thF=JxW}93OaHoB6bfd&hd$n;rZu5uaj;3MVJQgB422o z*Tb`=)o3%~QoN*wH4sYkW^~w6GgoY*H+1S+XlcPEhiB>;ku_tRzzb}_LYIfUW`8VU z`GLNdMLBD>)Koo8H#X8}cQ>to#lkB&NDfM1AMxJ$QJ*2V7bP8QXc#pGeh#=ibWNqXauJW#+?5dLYS zgq2L$M~w+EhrJ5rKBv;TGn}_?`*-PCPdDsTiReH?pi!JF)GBCY>50w+$V$HmxIjgd zmk!bJh|dPqKCPFUwUyc@YZVayDwzzo8Je9HV3UoF>;Dg$K;!|KNP?YYSmRG%G4nIhlsZk8m9Y+nMqZnbj(U#jxUD9dzGFzc^A@*L9fCZz^;SDjo(8h+Mj7SbM{z3 z&MGjuIShZ->1)bg6+mLT)&SAF@Ql0|ARx?Mw?bw$SbLn=G%9o_s{UNhdvuUg&d{O> zjO|<$mBicvv!3)e?OoUSdU1NRSHMOle?i|~ud*)tPDzByRLH2 zE})*Sc72P+<}7)#2xif{n!y*s?3cI-&7H{8fnT1e+kc%N@r@FU=?KY}5`*gVK zUa?bcZU*=bVS^v;@b?k7r|pePyP*2FKv=;-s;_K|H*W@dDpfsdi>yPKmKh4qzRGps z8480|ZvedH-mtI}OtDiCR-Oe>3UkCMEiwGU((?1s47RZQxv`RLZo*D7fRP45Rq+*; zvJb`=Fu$1xqzX#8ip%kqS-?PqZII2Rn9psDy09Qqnm6Oz70)lD=g1D0X|GfSa z5FJ1VGC3;8!vz1Ramg^|FqHFb)G)GQqJi4VMQt&xfUQur4`DYQ6=V4qaukM0-vEsv zr_X$#0hTj}s;{GybPx8N!v_b8{7?z$yD6MMMS0PC(4z59Zs9&vIB&;KJdb)nqW5^C7{kRFzTh_FYU;@9y>;I3f+<4$k!O z{M&bKe~z|yq*~71>|Fcw`7ijuJ73?TOIorCRLNVjY;Ti%`*rl?)}QWvxxIH6;!X7A z@q>pyym%PZZ|ZA5F(!S*FL|!z1`oweQj&|&KGy+uY9(*zvy4<-`VQl*}ijo z`*t7C`(JEt-@UeV?E`!$S3~J}*M8|o4aWTaFZtZMapMo(4e!rH%VD+lp3~&h6J7|5 zX*;T+Q4s*Q{_uy3hy78F7b?tVxybqMwU21rAIVthDj^ba%iq&@uYLNwi%*OHL&l44 ze=$w&ZYN*91I{m>3;F+@FWUV7?$+(wpZNa=_*}pkvg#wDk?>> = LazyLock::new(|| { + let mut archive = Archive::new(GzDecoder::new(DIST_TAR_GZ)); + let mut files = HashMap::new(); + + for entry_result in archive + .entries() + .expect("Failed to read entries from tar.gz") + { + let mut entry = entry_result.expect("Failed to get entry from tar.gz"); + let path = entry + .path() + .expect("Failed to get path from entry") + .into_owned(); + // Paths from tar, given build.rs `append_dir_all(".", "dist")`, will be like "index.html", "js/app.js" + let mut data = Vec::new(); + entry + .read_to_end(&mut data) + .expect("Failed to read entry data"); + files.insert(path, data); + } + if !files.contains_key(&std::path::PathBuf::from("index.html")) { + eprintln!( + "Warning: 'index.html' not found in embedded DIST assets. SPA fallback might not work." + ); + } + files +}); + +fn internal_server_error_response() -> Response { + Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from("Internal Server Error")) + .unwrap() // Should not fail +} + +// Handles requests for assets, with SPA fallback logic. +async fn asset_request_handler(Path(path_str): Path) -> impl IntoResponse { + // Path is relative to the route, e.g., "main.js" or "some/spa/route". + // It does not start with a '/'. + let mut requested_file_path = std::path::PathBuf::from(path_str); + + // If the path is empty (e.g. from root_asset_handler), it means "index.html". + if requested_file_path.as_os_str().is_empty() { + requested_file_path = std::path::PathBuf::from("index.html"); + } + + // Attempt to serve the specific file + if let Some(file_bytes) = DIST.get(&requested_file_path) { + let mime_type = mime_guess::from_path(&requested_file_path) + .first_or_octet_stream() + .to_string(); + + return Response::builder() + .status(StatusCode::OK) + .header(header::CONTENT_TYPE, mime_type) + .body(Body::from(file_bytes.clone())) + .unwrap_or_else(|_| internal_server_error_response()); + } + + // If the specific file is not found: + // 1. If it has an extension, it's likely a request for a missing asset (e.g., /js/nonexistent.js). Return 404. + // 2. If it does not have an extension, it's likely an SPA route (e.g., /my-view). Serve index.html. + if requested_file_path.extension().is_some() { + return Response::builder() + .status(StatusCode::NOT_FOUND) + .body(Body::from(format!( + "Asset not found: {:?}", + requested_file_path + ))) + .unwrap_or_else(|_| internal_server_error_response()); + } + + // Fallback to serving index.html for SPA routing (path without extension not found) + if let Some(index_bytes) = DIST.get(&std::path::PathBuf::from("index.html")) { + let mime_type = mime_guess::from_path("index.html") // index.html always has this mime type + .first_or_octet_stream() + .to_string(); + + Response::builder() + .status(StatusCode::OK) // SPA fallback returns 200 with index.html content + .header(header::CONTENT_TYPE, mime_type) + .body(Body::from(index_bytes.clone())) + .unwrap_or_else(|_| internal_server_error_response()) + } else { + // This is a critical issue: index.html itself is missing from the embedded assets. + Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from( + "Fatal error: index.html not found in embedded assets.", + )) + .unwrap_or_else(|_| internal_server_error_response()) + } +} + +// Specific handler for the root of the mounted path, ensuring it serves index.html. +// It calls asset_request_handler with an empty path, which asset_request_handler interprets as "index.html". +async fn root_asset_handler() -> impl IntoResponse { + asset_request_handler(Path(String::new())).await +} + +/// Nests the diagram editor under `/diagram_editor`. +/// The router MUST be nested under `/diagram_editor` because it is fixed when the frontend is compiled. +pub fn nest_diagram_router(router: Router) -> Router { + router.nest( + "/diagram_editor", + Router::new() + .route("/", get(root_asset_handler)) + .route("/{*path}", get(asset_request_handler)), + ) +} + +#[cfg(test)] +mod tests { + use super::*; + use axum::{ + body::{to_bytes, Body}, + http::{header, Request, StatusCode}, + }; + use tower::Service; + + // Helper to get expected index.html content. + // Panics if index.html is not found in the embedded DIST assets, + // which would indicate an issue with the build process or frontend assets. + fn get_expected_index_html_content() -> Vec { + let index_html_path = std::path::PathBuf::from("index.html"); + DIST.get(&index_html_path) + .expect("index.html not found in DIST. Ensure build.rs ran successfully and pnpm build produced index.html.") + .clone() + } + + #[tokio::test] + async fn test_serves_index_html() { + let expected_content = get_expected_index_html_content(); + let public_path = "/diagram_editor"; + let mut app = nest_diagram_router(Router::new()); + + // Test request to "/diagram_editor" + let response = app + .call( + Request::builder() + .uri(format!("{}", public_path)) + .body(Body::empty()) + .unwrap(), + ) + .await + .unwrap(); + + assert_eq!(response.status(), StatusCode::OK); + assert_eq!( + response + .headers() + .get(header::CONTENT_TYPE) + .expect("Content-Type header missing") + .to_str() + .unwrap(), + "text/html" + ); + let body_bytes = to_bytes(response.into_body(), usize::MAX).await.unwrap(); + assert_eq!(body_bytes, expected_content); + } +} diff --git a/diagram-editor/tsconfig.json b/diagram-editor/tsconfig.json index f79506bc..5b4330aa 100644 --- a/diagram-editor/tsconfig.json +++ b/diagram-editor/tsconfig.json @@ -20,5 +20,5 @@ "noUnusedLocals": true, "noUnusedParameters": true }, - "include": ["src"] + "include": ["frontend"] } diff --git a/examples/diagram/calculator/Cargo.toml b/examples/diagram/calculator/Cargo.toml index 8e89632b..452d51be 100644 --- a/examples/diagram/calculator/Cargo.toml +++ b/examples/diagram/calculator/Cargo.toml @@ -4,12 +4,15 @@ version = "0.1.0" edition = "2021" [dependencies] +axum = "0.8.4" bevy_app = "0.12" bevy_core = "0.12" bevy_impulse = { version = "0.0.2", path = "../../..", features = ["diagram"] } +bevy_impulse_diagram_editor = { version = "0.0.1", path = "../../../diagram-editor" } bevy_time = "0.12" clap = { version = "4.5.23", features = ["derive"] } serde_json = "1.0.128" +tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] } tracing-subscriber = "0.3.19" [dev-dependencies] diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index 2321f0cf..1f56c276 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -1,14 +1,34 @@ -use std::{error::Error, fs::File, str::FromStr}; - +use axum::Router; use bevy_impulse::{ Diagram, DiagramElementRegistry, DiagramError, ImpulsePlugin, NodeBuilderOptions, Promise, RequestExt, RunCommandsOnWorldExt, }; +use bevy_impulse_diagram_editor::nest_diagram_router; use clap::Parser; +use std::{error::Error, fs::File, str::FromStr}; + +#[derive(Parser, Debug)] +#[clap( + name = "calculator", + version = "0.1.0", + about = "Example calculator app using diagrams." +)] +struct Cli { + #[clap(subcommand)] + command: Commands, +} #[derive(Parser, Debug)] -/// Example calculator app using diagrams. -struct Args { +enum Commands { + /// Runs a diagram with the given request. + Run(RunArgs), + + /// Starts a server to edit and run diagrams. + Serve(ServeArgs), +} + +#[derive(Parser, Debug)] +struct RunArgs { #[arg(help = "path to the diagram to run")] diagram: String, @@ -16,11 +36,10 @@ struct Args { request: String, } -fn main() -> Result<(), Box> { - let args = Args::parse(); - - tracing_subscriber::fmt::init(); +#[derive(Parser, Debug)] +struct ServeArgs {} +fn run(args: RunArgs) -> Result<(), Box> { let mut registry = DiagramElementRegistry::new(); registry.register_node_builder( NodeBuilderOptions::new("add").with_name("Add"), @@ -59,3 +78,26 @@ fn main() -> Result<(), Box> { println!("{}", promise.take().available().unwrap()); Ok(()) } + +async fn serve(_args: ServeArgs) -> Result<(), Box> { + println!("Serving diagram editor at http://localhost:3000/diagram_editor"); + + let router = nest_diagram_router(Router::new()); + let listener = tokio::net::TcpListener::bind("localhost:3000") + .await + .unwrap(); + axum::serve(listener, router).await?; + Ok(()) +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let cli = Cli::parse(); + + tracing_subscriber::fmt::init(); + + match cli.command { + Commands::Run(args) => run(args), + Commands::Serve(args) => serve(args).await, + } +} diff --git a/examples/diagram/calculator/tests/e2e.rs b/examples/diagram/calculator/tests/e2e.rs index f0b0e223..2bbca126 100644 --- a/examples/diagram/calculator/tests/e2e.rs +++ b/examples/diagram/calculator/tests/e2e.rs @@ -4,7 +4,7 @@ use assert_cmd::Command; fn multiply3() { Command::cargo_bin("calculator") .unwrap() - .args(["multiply3.json", "4"]) + .args(["run", "multiply3.json", "4"]) .assert() .stdout("12.0\n"); } From 8d5e4bb730cc9cea2aaf06fe60b3b5d727f44d10 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 28 May 2025 02:59:21 +0000 Subject: [PATCH 013/165] cleanup Signed-off-by: Teo Koon Peng --- diagram-editor/dist.tar.gz | Bin 1077149 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 diagram-editor/dist.tar.gz diff --git a/diagram-editor/dist.tar.gz b/diagram-editor/dist.tar.gz deleted file mode 100644 index b390889a48dd1fbd2a940cc7f2c43eb4a59dd973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077149 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

`bBo-aN%K4e@xC zt>nJSy*^!mrQ^gK8jGGOD%AHy=6kCH|N8CT5KL>#NDWiS4@J&Wya{9eQJ^N$o$@Zp z!C+1g-(zwg8G?6t*)?au(lFOz49%vIPvvJgIn)u&4|=gt(owSal5tV_q-+>J*<`Vy zLJ&KkfeR4Bs2VKOG91YPM}F;33*3|%c2oHy1!CJbzy;gK2CcTQOhe-w82}h4K_Ss3 z5}8P3fKZHaR>x2}Q;rO*N|!lpLr!;S=&>n!dr4DZ8pX|7uVuAlGq9ra~v5gl2JujIsA)Hv@%E#&Jw(z_$H)o>#0P6&nMjNM4y% zL<_yBmZIFI3;4C0^~uIuzGkRO@+lM;ZX#MtYp6IBh}Vwuh}fy;`P;0avZu1wNaTv# zOfSKd1Jge+$%K5p>k?q)sH4OgGnBx3FRk^?OqT7`q{7rxA$-k6mMyv{l%wSYW>JrW z9K1G@NWS^&r}I|M@6WO{Dz3`w^ZsjRx$)CagNC5i0!is6Ju2@UnPa51Cd&K!!~S^s z+fM*9MhXVdE-VmW04$&gs9qxikUR@Obc})w5UKnpMadRxQuMTkS?&oPTaV{l<1aqV zA11qo&f>Cne?b&`<`gZU_pe(si`{SfTAvKX1_8^4^yI$T*s6*<71WZ`-@Gf9*Ir}U zhA(pICp6|`6NHK)FP?SdR0h%+*#LFb!n+jSXFT=474~o;1}?kqX=&x?zk-n{O_^RQX=FR>vUGGnS{K zK+})ef`|g|hBiVh@%}*QRo9c1L~0?JP5XbH+~);+7+TXGPNe~mfS|w_gh|0=ANly2 zX*Yc`=}~H}3zwVCQnp$PYOp4M_9ZvCD}2q~dM~A_V16tyvbP@#V1IN*PFDivSxf%Z zlcADs-z4sG9tjtPu)2rGTGxEAhmE9krg)!Ruzj1fYVmn~Dzo2uor|k_`TFzQJJ+%X zmLq|LnCM4WI-WWSLwF89m22!-~OXbW~?Q|mN|Ck6= zM_QRv76ONNCkb)YbvfOgMC`DwM81~5K`U@R&0x-L-n>gA&O8b($3Z!N{mf;or^+uy zV(Ygu|8_+M$>Fn#5{|XgNMX9^CP?j6DM9~&`o4t)4Svq%p0Mk@Rajh>D?)1I;Y+!> z1u(tN4McKS=L(R1Q|j?fd^Hw*&Avl)BS+eM+9ID4h4>c2mHeE4=v6Z1fNZJ9(yzK9 z8`Iij>#uW*jGuf>vTcBzF$$SYB~v)X>$6HVoQgo9M}1O^Cb4^TnUMyOQS1^<^azV} zZ@gwfONNu~aFfOCp@LzNLZHT16Ic^92{;S<2p5FO<^jMNfR(ivF^L$8#NUTAnZTKH z4qS2eIRzhr%wkS~W?)Bi1IZb7A-E$C5L+S`Vi<#1qU>N~LjsXSQ8GmM0$rge?s5w~ z@$UEOAWq1!%Fy`^BugekHB7@Vu~k_90kk9#@+q3jhy2?eVc{5!WojOFVDKjx5`uC2 ztgy4M=kU3FPNEmu(vbplU*ZTG0Go-0W8j_|o-)bds~+Yea}=eKYX}f(jfR;C^7%<7 zY%44K4Wafxaw`gX9)&akC7_$~V*#%JQA%LuzK zOdqg=B=JAia0d=xc=eLONX@4dk6PM8-vO1M>mt|-Qi;%Xq>>>FAk#}#r$zad}7Taff6vr0T&3)XUu z*jA6zMQN9GSP6ep-SudCcih}>*#_8EzKgQ>TjZF%2__L`xm#whd)+GOzH`;@_bi)7 z%6czli=OCjZaF^N*xb?W0}u3NIc^@xc`_Q=C!=-A<5hLNh<71o&t~ZW+J0YGqboyp zGvu%Wey$kh9|Yy;TAXf~OXqo+E0GI4LbL02=iwb6hvE^A@Jhd`e;)dMDcKUOvfuT( zKr$RrvzTl~syH9fXfzwFhsi5fnrdQvR7AA}^M&Y`?BfSgT@{CCK}h-}!zM(Mxsj47 zLa4$r0-2)>GyGNDt;SXotdrN=3e01au*=gz^!JFKh~>9@+npzn8F`7*DOaQ|4z&oq zMiRv}%61{O6e##oCWPh?g6v*HNC6CiK%H+r6QTUv=Gk{1yKGLA_ZmT#X&{Y z1z%V_17o7<^mW8hs-c9z69mzIZjeZ&6R31bXgIxmQF?TWCzLaotOSv`2c_S|R#-i% zDdcaxH4dpVmDZyx_zc!mc4aq`>5Tyz8zQb=kFI!XLEpQTmbwl;lG}0Bp43f(Dmvnf zwRn?>bFuaa8%2WiF$B+qI1YsE!u5M8%$p$1`jB_7r{CM-MlIH+u-Rx*pu(b!7iTAf z$B~eLeCVZ_q-iOr1Bs%zCAr55GHgsFg4AM$3-lTXUbo_#64D=OQb5$;7iO4tQ&!1A z&muMXHXD;)dt)N?xP6H&{$e~Kl;|ZfMw`qHh>~U$PvY*&)>SmJ57l8jNsIstzC-FD zH#&Ys7uyRGYLFBL7kBZR$WYpeh|Vg%h^Yv#c$fu23KpZ5h29g9G*bAH6#=M}$&NIF z+$uq~w7DqBY7aOYY6>RNx%O^YS#3tvo@@I?#OLt`9(edy7fs$fI++&vmP>la ziyufP)>4|!p97P4J}H&`NEDCfd5DfvF`>#`+nsIrd)^YP$5?3JXg!nGFoJY*DO-?l!udBNOd1aeV0eQVT+6SKd;JWIJ z^99?ba3&8;`6wY7bY=3jRPNzNCaM!WvXk$5kWTjFnizpjAmDk}7LEsvOe1o)nD^hJ!l+_x z%pSF9fo(ag^1kxk%@Lz9yN4$pfPxW_g4U`SEYJkkb#Q|0pq~;(Vict1L_{x~*HRl;C9KOOLXasK4q+P?L3$m2Tt8A~F}pr@s5 zKh;qN=KBT>@ANW+qG$YxDHc=WS0aAbLs8^qO~8_cEgn(gPYlAdx#g2hA*21^fSLBQ zoCzRizv&XGs=B+_n<%it7KQj0NedSIoy)?{x~n?QCwLJMaUZN&7qEJF#{qjX z>p(-m7E{_#3ta9#K5uFT#s|X21!$Xn;htJSxdLJPbqDYZa2jm^p_z*UXx2IfW()LZ zX$PrtZRgtzsO9D+L<#i2oPn0{2MGTqr1DRfQW*&jiViWN#uncLiiEv)XW5Mem)}s- zCwRb_0P~C}yx;SHZ$b`Lf7dP;TR3D8mg6|=wgVOP)TlT1PUKE7 znjCzf(VHOmfb_t8uYNGCO2s@{{LNp)xom5`zWw8)_-~p~(!3P)#?il8a_)A0e7ag% z5KO875EU0N%pKKp%jIhJwZYV?pjTPsLC3Ip8xHF0wcft}!v#^-TiUoT+vdNR@#Nr> zM}2sj`8Gx(@~7!f0~x1bWH(>=!dGpd88%ckwc=I#Uu!kgo-$=tfI81pR|_^ONUfvH!=00jE>~HrXe*#*T-ZdO(x4j?I4u{qRC=`ngTe2{ zqd>mDS0EAzlzQ!0v@e{;G4t}NHOk$x;5oHYg0VSQoWEBA{eXIYdUkTHZgOg+rG?$q z%i9ZAj$Bu4mBZGSmeytLSWg{XHq~O)id09e%MDcJA~Yy>9@?^`S;NM2PW>M~E+kvJ zD+gr}cD1or=IG57DSO}FnTwF=(X369 zZy$ZOi*b-ooU>!NTB#{jw4m`zvjf*J=1et5yz_k~P}RyuOKW|sw|gu6cF(`303S;zuz!4m0q zVObN=1CDP)kI4yHL$vs8qB{}$i(SXUe9!Jg=2cu}vh@SmHS&^*9TY7%+Q%R?FvE3X z5DK>b%HkZ03L=)Oum>YU5*2Sm_h~ri>JWf1PSm8>ubfE>YV@sm=QfeAA(s`b7V4wf@~3w7 z%qhD8n2JM%fhW1Wqll~TNWXtu9&;ce3JYg4%4Wfq?xZ=qb#=+J26Q$eAAe$`$_Io#pK}1Q^^arz zyyh;ITT{90+~tk)Mxnz3{MH~Y;ZB;Q46{e&r?U3YAnlF%pz0&P7R&B^%r+LZs)&yU+`Iwh#GV37+P?)M>|FH-cFv`XbXuxI zFPlWzmYRD7+Ew&f%wartJR!wv%-qh%WzG525bkR!?u-ti-0ixih@A;7btMt%nx3GL z`MXkAbt5YEg8GSff9beVC5TqLemE>=`f5D5ANPOALCdFy00oE4mCX2`)Vngs9G50z&-> z0gFZ;j2s4(wv%i?)cTcz)Uvs1xMQjB-g~s+`VP$+s4(O;*;uvkkH8Fvik6uLf4(Eo zsh9@-*xMhc(lLI8$KDS7QOTyDX%WU=R}|Ihm{Qq#ub zByUQR-hE;z3wp5vf`Rgs=H=U`{ThnCFaZr|uRGc=MyBh9251r@NMXQL2i7Q?mqVm?ML z1acKVk1AGsd+{QyU-$wQm(!N1{Q^Dtg@Bf()5479q zRHTU)11v@pCsJrO+TnyRs=2E+IpRKnif9Pp1mh1BO(_Jp_Mk)g!B_(nXub>w^}Jz@MHG2 zunH_DV5(F8NR`UMRKzeQnI-j#CsaZgL|%VBLewV*o`7E~*Vr6mIwZQU_jKfgxx5O~ ztzGj;T<9zhy^X&TtJ<$R8mt8n!XBa-l@mij21GLXc8m&!3;J5r7=MQVIC2!dWFx{U z9;pXeu*!~^WikcHP*~=8kMl1Gktk|<7m1V_>x3J$C(ApK9;voil%?S&d|L~2epL0* zXb7atH`Cpa%Z6oO$3Q_CRM+8HYMtJz5a)}wdQ2t)`#YVzG*{Qh<;-A8-VeWp8o>5p z$-KV~HZQ7zWs^EaDVOr+nt_>)y%FZEW=B`}L&b7m;5a>H);GRc=m2@)wu0xEB z8cLkzU&pw3E}@6ZCGc+>tqig)+59p4++9t^Cgb#DH@2mLy|4OgOyD!u--n?yh$f;I; ze&8Rtrab%HWgI4FmyQl0~={wq7 z5PM_HijxezC^<3=$yx{IWRX~&eu{1l8BiUb;!CIz-a?cFMXlcp3op-|JX(meNe1)q zk?SVKmP@dM7X@DFCCcHBGnoNeQ~g#N@_z~<933*tE3S)i@;Eo`=k5y+lv4^`$@6(z zEo+pVBrHqQtj*7xiOP3x7>PzacPhw}KO7jLllUo6M2jperB;7?tkkR&FDf>zXCz@C z)yZ5KauAC*FY611OEx1)u9=&*9g$sfEK6g9lFe=CxTL6yP+;pCGG-$HUTc+6Sm$Z} zC~I|zQs*cxB#MErc4SW6iy3vAQV|4QNi2NTQ;Jab`zF=&0h3?)Jbt}h4YwRQkNc8JLGI!t zf1p{!9lGRNThk%qO>D^C@8bD+1&%}82-J14trWx!AR8GM^NDZpih$DGcU(s0xmMa6 zSIvi{{R6rOD1Cd2$NJ&>X#?tcmKMO2^)~u}TQ4V8=yiSf{j65oF)ORqro5PglkXrx{ici!? zj+Dc{Q>z8N`hxT8uMNA<_tz*f{HH(Fr7Y}@L3lIucycg1`0y`0cB4#P&iP##VGlId53s_kD#t&eaYRu5Z0K=)A=7aM)*Llh(tsq!2$^oy;T(R!#w$gpnIv#obvE$ zo#k>9K$rJhr7tSx3jhm{aU4IN&BtdungsFmQHy^fv@ijlGU5`Q=%F1M6UyFVZlu?a zd-qsY(SxN4shQ0N$5AcZ+LlY!(OgUmS^0(L1#DGYVh2!M0XRdGr`A6a(_JZz6Ce}2 zFOGBvue)j~m4yGMiV&<7Y3YJIEuEgfgN;2iZtwTiqPa#!Z~g6O+~SKNmjx~Bd~;I~ zZkFI_)gGY)gBF`Goy|v|kE& z_{ohvY1E0^MJY7z`*TV{p;1pFOFzHo}CT`Mz;r*c{B%G*ymGsn!pgf|R-Lxy!M^(xGkN zpRZ|6b7(25g@N8Egb7?KWI)TZBLs4gIkRqH7+}z>_`XXwu*Ww)HeP2o4ffiDB(BGRQAcXrhx|JHRqfQeZr8f*_5!q288O^ z)+~qGP#8@=k%1YS##frrFZ1f-?^Tj;uCWAlVWjav(YQ55=J|Sl=_8eee(P!A>k^Ny zg#i{6PG#zIUcG?0_%t-mrNeCx7FRV+VH^w1k!Xct!cpoX5#_hwleVz9;jAk$N;5PZ zW|?b#PetrE!zL+_Y~;(C&sov9RQd)~P~Dd!KzB=c(Bh8aE7Q7V4SYt3f$6Z;m%}%b zaHDrSr;guN?vhyROjLu-QN-0%l(HX};P@3B(CSQG0FLo`RjO>u67I3zlfZiPhd%S% zV6b4?%VJEk+xKXacIij)S}9hxIIG}s`xP}6@@x8u?vhy{0v02Pn1^GaK`q%_AGA^A zHrH+ef~^qjY{MPkq{HZa%v9ldD@G28-c8J(GqK^DF!L$CJVVBz_H^Kmqa)Ph$_u_DkSvD?mAXDU=bMqMM4K=1 z9w3nvX7adc6E*FH9L~2~pmzPSkS5Hg{E=As(_#U2ddQPS06-M3v@;|V%w|G6T}4O0 zZ586n+CZHe5sHssRVM%|+U>%wdh(PTtIfsA}q-CYgog6j$EJ=^+36< zZOzK1ZVQmqT5Hecc9LE-18i==cQAQB^V!Kgz%JA3cq5QN@ex9t0`=&R?~cHi}n`ELqs@_gCh=LHmTgTzEcmnc(LF1 zPm|m3c3XVfy)U}J>jJ4W`dck~W%<4#d=SgXcbXNYZzX0PQp6dWt^0kz=$8Od=xssv;e#`TL(>+Q)en3z zDwl&|*nlKUT-r>GhZw1BkHv!YQy2Km!wb2GT%fnM&7iYl4ckWGMa%@7(xc&1>|-^Z5By4P)OL~@^M7x>$t5{U}74@HZz&4o+IkdG!V z=X6@D;96cggy>R?6pcdpz;X#=X(>}WF;0_YfSn+ zFlpZ=!E(tXGrE&Nnu0&bEL)@$Vb36Wd`8 zJoh%?w#VBPnuW3RcZybSD_VA5OIN$PN*5-r&9vY#eSyVs9Mg#m)^3MUHD1%NRBvq1 zZnxq?qpqM#qiD8{eQBw9tO)T7`SLFmY6I%YMiV`}vULKS_VviS9G$}R!%Gylv9D2Ot zIhM@*`KwY~SO!M2oaun4&d~^D|2`3Q(vPeV=PJMF>$mo*68%SuJK1K0$zd8UQ+{*0 z=5BldZ!xS^5l!r7nJwFnP{?bY*F`6%=P+Lcy+N-tOrnmN#5@dEYuG6*$tJsQ+V!~H zBL6pF!O;aG=FFNY=Wh#`lTH6TbrBeJQ<`xR7#A)19M`l%^6D5zKCIJNtZbn2MgVau z6-vr9F$QZg+BbG@GU@A1o*BGZE`RppYMB3hEx=vzC7qmLdaa+=7Mb7Db^QnK|I;C<>?#&t#t;ZtXg@LQo=30DCpl3 zyfPiZA>c!7n|+queDS{#TpZ0@jX9z~tqDsm#mct)S_>@+HK6i_9D=33T@w0`5U|2` ziw~Yx4Ni9=#nV0oD=rwHeH2-vr*FS)R(}$$Ay@@!7;Xh)Nk={chWO*&xKwkkK0b8K zH`KhD9(v#wC9@s&Lh5Zet&tbFI?W9&z+)CDljFB@f-9)t1Fmwv-IA`CaH~r%YgQa9 z#;v;D#h2Gz#7(-}76u14X++Q_wRLR|RZ}-<-n`Iudz_i~9{YsjEdMlevcv9PK%KZh zbD@NmiOZvA;Gsco$u6uIP=GLN6A7lFS-^!q7v43p!md%rCM0QVt%Bw} zgFJ-997w#U>@9B<^sedxlJWDnv+eUS4IT=W^!8AkZ?8vBorRC$`?$Kl?k7eEt>!rq zOOtKljqC_naBIpp=kcemVQ)q+cpfaAr~26;^{Z0rQ)O}TEzU3vMn;X` z&3X^-q7>N?GmRd|O;E2PLa5I8T#aIvvHMWF&IuW4ZJOt;KH$d&)?bUg(nnNbR&!! z9lny!$#$eD3kaJE7QnmaLwW={9I_x^=d!)t$qySt28!6<1x=2N_}F3ypSjV8lzhn@ zWvK*!jR_18&2QK%KUYwb&N6}e8A~z6-DXEGPREqIjhbv4fUtQ`UIr{SRSLsqodI)1 zQx>*WX=n8)!8>cK6xPW9>#`DZbDEhEznABfl702EN@fank`7yErvP;B?S>v6zPP z3p)`Q`J3DQhVJ664dKrZ(D#~AH17HitH`J6pLkj%s4DyTmCx&13w7oJS9pVP| z$Dr#nPEhh@QchI1X~}1R=i*b$<4BQJ-)~D{W@GBX>3A*THrp###BF!I|L`gL{wkC* z)wJy_ceEM&wU6n*tn8w@6Vo0-r!D=Dp4?e9Y!R3FV%R*tEK~pLc9>Wwd^S>Bw};+A zkX#@*ST3bzjm(yUqUOdNk1Te=3M|f=jSCu~nZSpiS2PZyigy(=IMN3JtD38;LZY z2#q6lXajfi$ySaFYU=wb}$e}WfeoQ&p9cS*Sz(taj1#-8H z+QgMKziSJh>kiudOEe?xGapZVf@bnGnu>FwB@%CETJf|@I-mut(SVsctqbPO-ypW< z#A8>|7D>5F*-~t=`6*9(Kq`>FUckOuXskeoV55S~Jp8inFS(QYbN+O3KD`h3%R(g{ z7yklw9R2Xp>^@#S(r({p#TzMevKt=?iw~7?HDQXvvNNyK8%=lc*IzeQ4FC9A(j1C{2q69F4Sm7!<}wS zpD!Vz2SJMGs95@*`-Yr>-D<^&Wm3jDH??WxqkOSvmKkO816R*2tf|Pe`iuy?@z+BQ%Qy>Qv0fKwyDJYHmUx3YtpYUd-L{$2 zig9>DFzeXp&3ehf5oVTpTqgQ}QTYm^N__xZ>BNWmo_e!^klr zo0~d6B%qsfNLl2T>O2m9apJ#M$up$PlzWgl9NUz2xT&Ibj8*#hw3 z&fwhle2_dNIO)6bA>ycB5kizztE=cH@ode!LqlJU@UqN-xpVf0u;JfCxw(%laK z$T@7lTN-8HT!8@KKmZG%tyQaD0jxq@)hP_)Z~>xMt_hUM!mHXzL&IhjbL@hE_@X7Nr49*>6@cx~o98S?#<;wJ zsATUx`VBk0%_=N^t(CiTxh&=6y=0aC<;=h`qxlwb3#%)XZHO6F?7IiBQ&DtvBfBXm@+5iah20UAyEH>P;2eB z_L*Rt4vyB5NhTea$0*CL1(AL9EMO!iPVE(#A<#N>O94^N3nH-fe8s{L4yqe{ImFj2 z1Lh%i$g|BOUjP(?%0AUIyz`MiM>W9LKaa)?_~Cq~(Jd+ZOrrq&#hq6iXgi$_FnsZH z4Sh(bW&@H9c_l++=|mBI#l_h}_ZeO12j9ts1{{bU=Yi6$jZXov&b zP;MxC3l3GShe}72a5hg<(*ZFtCUdA_!Aw>7p)?yle9Z(_GfZ`lZb62J0TXsyc}e}g zTth=MnjZ9*RG`8Bu<9N>Yk=zvgph;ql`cO*dN*M0QXt_qJpkgZH=?pFD!-N!@g%U4 zYuCV)xwlomSa2#sZE#iN`~uKZyTwagmkd1&B=~Pym{#ksBaz6F@-4E+yZANR!)J9v;WlOr6+^wXk&u>&mgW{I*Ky0bCAE8F zIanc(>p|;L1Y_T#1It5ZQ{N;ct#gb{0(6k)S&{f|$HNW{)t00*3U<@DNIpggAoL?6 z*Up;F2T7yh<@bH#Osh*8b{5 z(YpgAIH(FqUDoztIuhN0pz9K7hr!}d7N-k~3ayx1wTN0Rcr z71obB5m>l{kuni@LM%mVi_^1e%Rsqd!X~z;)CZ%VRXR4p1Xd0atfVMhLAGMe#hE$H zwohEj{_CWUc*!-Y+xPPn;NDd;yeP$5BIm< z399pyHG-u1gTl&VU7F&65Gq9pROwUl00n6=$$LM5Dx2Q|gZ1HeKuZ%HcqxKQ;W}p; zl=_asq7AV9^(S47p3t#_)wq1)6k&UdZU*@=dh*4LH$!t=-kvr9%Ki`s^1r_+KYEtI z%&)1=Q==+QTkA-YOr+G^?RP=Qb^vMPn`s8Xc3v^ia_gMX$lkzhPvbM?m=`5uUuNe_-o^n7 zwOpD+@%RbjNxTNl0o;FhW{W&oAul{X@yI{fTaatDF3;Wx1UWCnHrr& z-mUK~lw&a?SQHlb(!2lq43683`||@V@B38s3Od`X_f>W{Hnh7Mw+0&boU;%<+i9hL zXgTO!e$w@-Tz%wi-gnuFtGbf$U)j{6&T(;I)`GYR)+LKj}iPW-~& zDJCX~LZiY=)JXf>?8f>-n#|$ghkcrM7@gIo$1$RvA%$M_B7pWNUNkHVcd_qw|MotObe>GY`Tj=;v4{*&ou% zo@iT|i%n5-J2NyG=IR&`w9*J63&2@oerO2P5G(%3jTT*O{;x$=wCHB+aaqfx6SCqc zMx{bG?2ELV!)bVasPohJ$IhcGNL=PLQkz$1SSk9fE$V_pPh7+Mp%Kcq*OD5-qXiba z9mVIRCdo>fwgXQo&WR-v#0Jf9WpHHwoOU34vXbu$WT(s;c%)F}cB2)wEr8(zo`mo0 zbUwqIUY>j;9P`u5S18e6$(^k|6g^ zr!S=4ea#cMSY$iy11(fHxT6U}b_78wzA8LFp4=?XG3&ZC2hJ5H)4>}-TOP*QK^tqs zL|1#9NvlI6=JQ(*rr@{wwmQ>7zW-E#1G)i8oG(BfONz<^p{BVvWs+rY7|}Zz zj+RP!2NaobX}Jsog%*Fgq1zEut)191$c6T^13Mh6kHVM>EFf>k^;KkqRJyQd6HC}1 z*Uz+Y^)9zU)yf;o9qK0y9WdN@PV}}Q&|g|yXvUVM!JL+;h76-vXbelwb5#TCys=|- z^Z4T9P1@*jgEpVL-nY_%)WDqd9DrLs7=x9WLhDu^fjw%$YGF>gkES=DjO_0L8xZAe zrg=^Ugy$aK%Durelu{aVJu8~1;)Z7JVzUxX1ssp=nM0yE(L+guY8bAc;7n`bRw%jgMrK>lg&rhR#c&E4;Xy zphMd*EUQXBg{?_`s-JpP7;b3}+PyMm%&W#DoY4$DVq)9Z1K9{B9UXt#%Pznl70n3f zd?_Sq$z?aPN5Fqf&q@nMt8d{r$%bK@JTnJlj*LXM0a$-q>niNULP9{$UmR+*=EzY@>M7fENyDcQPCu1-szp7#%2^&s|Iqbb2HRfE_qZB@bJ}V6;RZS-Mt6Ab+$%ui%G$H3hOx6XDY4Bu2TpdyM!XLvOP_@Z2YG;x!YdZey6l3TGCHsZXz1vy}v)Vc`rs0X%-2^ zr@g-_($xu~pm(}{w-|4-zXCW-y+y4ZZqO`##k3Q?W*4nS#K)y)$QQlOwCad8rn=-0 zn*4Q?E(L1}bZ=M&obr{`T>idYz)v5yP-~*Kk7c*d|*w3mq(k4>EVDj6H41-ZG){kR25hw zb+;24bJ(Pa+que^G}7X^D2^g2gLDR{GQz}M=fxFJ5P@HWGa*K3fuMhZjN&U?yT3!0 z3tn}z5RmQ-M7l9NVD-$}3A56Xz0WLbe7P1os46RaNiedHw(KC3aY$0bXzN;8IJUx%a~9v`@Jh#d|!W2^$HM>Cp`UlyojPR2-Tn~~LLu<5*YMDC+o z7wV*Ug$~vDQ#2Iag_Yy_%AQ3((IF1)II?U`9iVYUr4vT0q$+I1q^y-CVFg@xk0bq1 zo?vO-;PfIl2fJ55&X`n-R2WGaPlJb7r@*7&Zm+tQF1j0Q5NqQeuSphsN;Rf1BJOXM z^o@hWF9i2}$XSZRHZJ^r?XZeR6G1!9_bLvWj4yam*w<6x6z)sXIqs6d@5gjv_lR)+ zyWBQeriAUs-(Yk%*lG5wEo7?9PPAyJ7u>bEx|vG|43hn*^wlZt+va}De=4u3fn4#j zZzNB+6uh9C1~3wZfAhtTjL)O+ZDN>cZl;vNNB@_PjpCEobSsb~~TlL2;=M zcWWBBfTr72%&di-Ii*)VB6)afZ=n4!TVd<6TtJ%8na}?rz(lNgp(H*#k}t6=3d(9c z7uwht#-OKiPuk}2;{G7lGK7zw9DS&JIN%%CK^^9jx);KIeI6|n*o5YnxWGC*h8pj- z(RrAKmh!UNrn5@N3_L65F?G&o>LSCR#CrV|?E9nwVa?kEPUE31fA=OORa)HJqZ+nY z#NEQTP4DX&Saba9$&R_f?hN<+26^zVqD?@z|JotT;Jw@GqkCWKwB{hXz{WFAYOL)1 zRQG(^fS{M4*gLu2zkwCc}G12)?W4_{0}1 zav*&7l%gEF5|$`s#I|ZT55$H1lf`p}u8`4L=m$LgDKjDuA5il|5Ii6o{7S@dwh<^$ z=liU04h(cBP6P45%X58*1@VyNjw5veES`m#y#JXe8$2Jv{*S$2*_k+aF0llQaGx6>*o~! zmbKUQB1duL4cZ^k=tq+$C1hTbo=fCQ;Ez*}`&<#oyDS%5b=Zh>?D++hbO zS04BxwxjZ<{PQBfvkWhy<;)OwnU0%jYf0&X@;TX4iuai3cvFl6>32N<<&I4xDM9n- zc?~W3BuXKg+rXYe=3U8R_;dha#E?QaoakUL8_~geW}-aMYZfg1=-FvnrYJiLmAu_e z8!~>vv5_Tlv#3Hj2}@DQQqrcJ9QN21lN8sa%sK6rRC3RA6Nqf2MLWX1d0qK2q#Yv= zIrs?HZKN^~`5ubxfG$H(ITF%A@AS=5z|%aQP1&8*dpO~g=tlDL7ev6S{P~*9=56Q8 z2aC>jCVb|?ZMI9$7;}>+CRhoRe!|ke<^1ugk*xDWrDHvJl`GHe2oZcW_sj=|3MY`Z zGX)cEJw9eK=d8TW@UB>{xgIO*YGnAqJ-gnBDv?*7{XtVy?hc~=7%~NHh;Xd|8#1b# z27B_lq>vMTpJqx<-WYgo*)hpS)l{wb54+Ys(KOEd0MXY>{y_?c3fG^y9oam#VXaL* zotYN3J{x%%zQUh5E0>C>o$Zv5F)Gl8@`yJ>5Bmfw1}Yv%k_k3TJNTsq=(SL&Y!yn%2V)8~~4^Kp6+X z-D9ULa1%|8t=6O6=Vo&4G3FsX$>b1u$Mw@UOl~w!7WXb(vV|5cN~Vd7*%tX+_WhyaYx_HOuVWvq)1Xmkust#IK9Kwv6I0tBtGPJRcY)&{jo*gWiPvRC- zj>Q-K@94L2M`LPHo)24R<%gz|lZVAtFpYg?WORAVM4dFJdp6X4#WhrQIC6Nb_vsJs z^Va3*E2>u^Nxu&O;?2B{_D;keBx{&56+FnS-C*D24U`ja8W4IpKwENmB!(uMA|TER z%Pb5B+aY8^?XK5c(sw0YF}ee%;( zbU=X%b_vawSuWR2<%D(G5eudGmR42$CHV?1R&@)QVxuIdzuhsypAV^g7~!xzmTtc? z4ykHP1I5cJT~;>4Gslw36wi1wworaT2e+llR)n0BT2g`g#2PeRrp)iNMhAb`arwyLBd zDBS~v=bRiW2pCEhkZ$1+4lXX@_L^$h*ey$fZ1VKPnw^iPc)y=l`uCsDlZzerV(gz8 z4lnIslHX7AY8wccAuk#dQx{Nzkw~E>*Xo2qennZi<0RzGw2~g}C7V8E=UWHRVAZbk zwGK-@Ad^T)Jq8JM3lG#uN1Y-yaRM#i*SHx?y225fgz@&W;y3ukDf679bi~o|UIRCW zl2_tz|>?Stm=a4@DY5O}leWO@uq!WZt1f;*nSQ zvO-7E7ZA)~5Q1t_4GLtAfJhM`mJB7`m5Nx*ZVL_+q5K00@iGyU#fov#EhE*N zTBlF3M+Q@7g;LWU7(}T=4r;NRbSv#nbV<_y(SK2JL@Mi5Vf;`LkFv}AovW-PxX4?P za^3G3-TpjBW$bDET`=drfY=&<^7W?QIw@gw)K`daLJ(iPW*ncLDPByF&T}e%q_(`e ziVo(~)bf$Nb&k)TALSB7j+DA4n!ppRS-B(~L>g-{P2Qaos%~+r(8hnFGUnNL#!p3y zLOnYS3nmQ=n4Zi$Qd;?Pks$<24QEt2}+)^=z@Xm$+WR;0+zD@qj2iO%v2Rnlzlh9TfR~}>qP1hzQdjT zi}I1ZS8MR+F0mQcL~Uf_I1$YlLx*HaP1srsankm>p*4%F-G&4ZOP+_wFA==lnun&n zBHFH$XJ$)zGKwN7uOpKxNgBs`aQc}V)P!-W$%J%IFk(=x z6Q~gy)mklq7y@tgZVa<1IA!{ovw&LwkZ#Cs(~~B*DNAf_WNdKid9|gL140-%8*qGx z41L;TYmz4f;fQWOXQeLCNeMp1?i+G#7!)%qGH_vPdeAFWssA79c8h;HvR-_zweoc= zc^4R)oj4(@H$CKhWWg2vP{YE#zxAsym@ML^)zTmsUCDzXQutMrDaLn=9-6HWH!wat zb)oXXGClKLG%hxz1DS_lDPy=9GZdh^y>~o6HCpM9mfYYt?TPp(HShPQH<`&tjUkat zXWQK) zDP8srsMXCA?F;pFU2_a6xv#EHOExH5wQA^%YmATl5wz0QO$%cpSP`pDdimHd7>16- zwZL_9G%!Fh=`kNrPXcdGOG1SWLa8QJjNLKEb<&UP7L1N#Gy-LOOP4qV?(<1FJS-?8 zwP?$2s4OT_5&v4CbvK{NwfOu>e$nvr8md=Qt6_x<<{ni7)X_d}dGOS8%^x>(dE_3Q zO1o|`flFL~k$d4B17G?#E*E-$f`amJ3Zh1Lm<}SE`z*{ob?4c6d*Z27iDrqZU{B~i zzn!hQ#EuzktBYU1H(IC!h;%3pX!#7O$=UVxklI%Bl)uezAD>OGZh_>5Fp%Rsq1xa+ z2WG2XxqH2y(*vBDWEm&*{n>+yk|j10yW4T-GD15M+_5<{6|#)@?EnoBaHF z87J2QP2~T2W7M~y8GG)z_?ysJxZui~!g~!oQpY4l5W1JQ{iXbkk5K8Vt@;od=M$8mfGWB~DQ%^*X_W33JsIGYWj38k z><VAh&c=eE z%n+M{_WV`QHn2F+3r2TiL@mN?;i+}Vo%@9FLYSr)zUxhSP1j?<_mk+=%I)YJVYHv7(VihE4UPGCsV?FPquKtaJ(=YVc@z-0T_+CNDIq@zMT+YZGgV~g?c1ht{#^4(ND zs`rCo5suZhP#JV`i-RMuq1C6Yv{(2!xyvN9>j;>y%>b{g@APAt`MSvjz1lTfXQ5QH zk=eP)RP{yr2t95}yd5kT_jT_7g}r}{nk{(x#j(e>ZQHhO+qP}nwr%^I$F^S0_8?OBRy0xd)?5?Tajn&iB(_Qr`7lV6)VeUJ zt!`jFRLGi3FX%$G(ys}=FsY)QOLg_-h34VwsKTu@&{f@RcTH?T)uLrAX4 zTMez=CR5xNI}$s$pG=a`0;A4$6*}HO>-QmP#Y*za??q%hIGz>8IFImijP?@37!wKt zU}Ok`q+F=qY8qb3cf)9Iz1=AbeR|foYGWnD3>19wJ~5*JAVU-|am+9=ab|lZZFVyMPd~@?Zreci;vosfg;8XFn=kPjmBu1`C1-A&|K2`un0r_N=N9N9sWLGn)2Esw z8 z^2DFV-AXR~Ak4qiwf1>5cyHDm>sj|*?svU8=vl}4PW$=UaIe;cW2GG$KQ@|iLH&^x zC+cw2wa!?*Ft<8XVox_7S{s(LGG6+LmL| zu3%aVR51@E?LweQvx*=|3VDDDlsc%k<53(rem8)d?Ml*Ss|TVcV_e4yPMMEHX6b@b zxyTA4d0+`;Aw?W*jY>&J?X#&$PfrbStdLk!B4;S|DUfy#mR3|wfFO$6mm7#$8w*ED z1l}OPPJ#|2NEVbzL;;@J;z&peTwz+c-*b^M>OqPO-D?SHU3zOxd7Dm3EI<)eM#?Wb z3o?%TaW2QL=ly7v+OI3P?9P$L-`LsY zy~QUDIOK1L@$ef`$^sAwsB5X(5*6f&i{iZ@$C+3Bw*~SCdy)O+Q2)y+e4FAkwF27k z7w#@MRal?-sUxs`8HRW|j$~*SIiKG*$TgPO2RA7n#&5!h$O`MX2-i%<|GsJM1t`)& z^H{a9_V3WTlyJ|J#-iyM$|eA-@1Ps~m?U}oVz+HASeH zst^DGh{!*=`#*V%-%EC~yfQr#003yuzkJgF*dS>i9Q8l=fdBwt{{fN~{>NH+ZvyMa zwuTP>WHSHKrvEsFI9I~j+|c}{8`wzo}=}TJt6aJI^D+d7YACtfVfM#3Rx_JCc{;M+}$3Gt0@FnrIu{Zvw zhhOtg=jcBS(gj0cYv}Q>T!MuE(Ov?8Ab?IgL)(A#BKW5VNdK>GP6FD-@ecOR|DHv- z^-l-+KYG8m04D#{gE0T2wwpTz zG1i-I*h{ch>=m|~ZQFIW({f4r)-&0eoO#j0ASsfI1GQ!%qxha1k}ZUJ43;B5EnNF^ z%yLDzjL%bYI4~l6czW;>saSxDOwj-+gR1+fcY02G9b{W5c97PC==<#s>K+7^D0osE zq{4r{?nFH3c*Jvb!~%{|xwdn3fdHn9(VlEe{R=r)Ix|!V``0J@slM&25`gEB06w8; zSBYqs%)8J8ZqJzt67fvA?`E!rpa;4t7JiGNMBN~0jnNxDyU^@^Tv^h6VfZm;hPDWw z+Vxgjy)^kZZs*~%xYN$%+r+VW!_YGLSNAI3P0ob_?7`GDvvWUN zpWpm{#Iw|`g^YCBinNzyNl`}b7$IncjtA$rX_<9Dxy;}oBbYIxsG;P*b@ zb6NMP|4Iqr`pV(wGYRoCOz?^7C(kWL_D=1X={t9vE8bq1zOa2}4NgZ81>%rSu#|(^ zT1azq%|*_*lx9DIGX*Ke81h&;Wr;GE^5~az`#nZJp8Z!2;pzPoi0@I0Y10_z(QL+N zN3gjeNJ!i>$*i3^vL|O&Q-(o{5eRkakq#~9I7mJ0L}LI(Q!F6BfHBo{qF4uL3mAYB z9xWnSWUPeZARbHtzydsgy|n7MQvzs!CGadQ=u}J8Jv4=DJ>6>if2-&g97-s;NrV6l z^bDIkvk?Jd0!KKM+I892AWcPp|H4#GKvP5r>2L3g4h!+u3+0~g?C$>j4(k?6-@8d7 zfJ8z{CYO+j<6dWEeZH%%y~$(WXvH8HCPR8B8*7dho^l9+-cs-&HD#sE!P@C1ovys6 zEndu#g14J|2=XAwo@}tUncQPwUr0U-#!>Vu@FCCL&NCFVfF6Ay%2_9yBIOylgQx~l zY#zE`Qt1>e@EYyQ*YG7oWr<2*wRRt#h--r8cndLLUZVq{hlK8yQYNFavqGe^rjohu zZ0i&2sB4hzsO(egD6Q10!r+76fzpHKJGjG(htWi9fLLAW+q?#xn$ddgvyccGWJc1m zEX-uvI4?-1>pK6l&j{K3@Bb90?-TO?fiTRWL;U*@rg;)&nPjqI3=L=Rg@b4naZFP} zL`I0`)arzhkSoFlzcKGuqVwq(r@u#T5qz*AD4em&8QOZyDh|x_Q-By@G^>*h2`&l7 zrOB22?FElKFI=@Hf}S`r9re+(v7o^Q3_w1mzQVtLCmpWF6fgh)82Hpz!B&tdkVKkC zJ7EZ?oGM%weSxgY$vM5FNGXO1dEwt~i-0g7pJxS_?4l$4sD5Z#77qdNq#@@z2Zl_7 z3jg;k&_9iUfPg5V4L$w^p<0j_Pyj9lj=(xZMg@OFf@42$cUMDpk3Zl#d);SK7MPh( zRZij}68wHFQYL^x(EJO*ZT<@@+Q0zF$cz9DFe%0$E3^<$Vv+#@K-6P^$^#PxBL%Ys zg9ft*qY49!f`W3SGVkLTpCX*bdSGuX0U|9HY&=Nj^Y{8U`8WP&_uc>dH}tpsC*PyM z?e@DCtpMiV^o>}Kult|*6!71C3IPD|`wIZ?vC*mtu7fS!+`pY1;s`iNFb*mSK?oTn z7=V>TffPX%b%v`fGrAYWxVPhgcXJ_yS`aZLJ z9_Izz1$5FV%Md{gE3!qc( z1zj*)qiN?wne|KU58Cyj2(t(lAtTK zmb72+Wn8cga(jTy5VuJo0_rcE7w#*53ce^P2nCFemN2!*765+M&J)>Z5uD{WUQYB9 z*UP%PTRvYTz91l~yIZl;%gIeQ)jEEb0>md~V!P=Bc3jRU4QbI*Kp?>!{G@P^MXp?S z1ZyKw)`@kog=Yjl+8r=y3mF@t^ARO>oLdUc62sjF+w5Ml8wXi~^|v24KlbpOL{)HoBW%RB=Py=|MG;w->5cU1*BVI(Egd&v zP%WM5K*kR83Oq)TocYztb4wK55wTmyhi)^imoq(b6;J@%A_-^>st_hzDG{z(rAl~z z4guySW>6)Y|mAGi<2)b(+A?wmdkzGh5bI?3~K{%$qNPBT{4 zLR$KIV()6{`}fSY8GpKAbAuQk0TDqP#&BRLAXl&cPDAkE=fx|4xZ8C!$RSgp$jwj8 z*ZGR-eq@B%NIQRN+-h&S^)K5pRn-oA71KG7Hm+oSfQ z>nYo6`u22snGiT8vk4JJ&R;jMZ!ch$+v3?Yu??MXUJct~88HGID8S*dC2Qb89tEVy zgt9mQwob~&F?E~oE%(PotywqDCSO^m^yT~c7ooIQW{e7S#}?!wdW8$?s|Lsr6h|r{ zU8#zeCI;+7)+x@N6uyu@TJSkj(Ug#vzsIHCpWGPtrn=iY-}T+gT1ZJ!Fh`rNcu7l= z;wc?Q(>DhPR;9#}tFge{He70fV=rR2Ain2PrnPNFXe9WgT3;=yK+FSLf(+ynRI-05 zf;jYfekj}x?@9xOxMYR&zbE3|^W_-{8HwOCp7bSHW4LMib+XO1I@yQ+BqQY&!U| z2w@rJX5v0PA>8aY>y{6vzs!y+@FSBhu=B6$-ic;4&=$0}f zMkyTXen%OW1^V(G=%>Vl#V-+zDB}#XJ4v;BVaNG^RBM8~?Fo)r|CFE_5$uTV1ha91 zpkW8$1yx~a#rT+bV^TPN{WEbme>aC*7Ip4%eE69`Kkv>PZ!1qr358%W=-jlb%QuuK zEI3RZ+lYJhGYhRYJX%Zj8_12L>RwTK(BQQa!wGF{SJQDZ&*c-ajEQY~UOS@9xICVz zs@~wbCn~##uMa#yb#SVzCp&-&CF%rUfv58P^m^C~?uWPY{sa3S%C5Key!X2KJ!)QN zV@bQNf>b!MtFY3?i<-OZZK=G?_)_M|-bil6uFI#;OuW6|Z{(_f+9+$;R*T|h`AcTO zAFjnw%N z>f5v{M2J3%v&R{2qHS>g?&w6eaDFJmMQ47)$+N@Y2Xd4f>bmds%d9x?(@2$6IPDI`_OefR7iofrro$U(OK@nhS~hgn6@bDyt{ z|LKMNd%9kUjV;}tO1HA4tE;wPnLFAS*l(}{S1(=77k5S+D;&Y6*ZVS^yUtrVo-Nju z?Txo%f*KA^uug1e*-2EC>wU9|;JF|Ea=?3dI3-2yp3#ZA8WenOv;u_rgb~!Qy`Sbb zt9YhH?kMoe{d~m!RPKNc0J{g;C#I5>g>kof_!2#{0^(D#KPB`kaaN(Zu-i1IwV1bZN?Zi}_BiEB&@CVYt54yMi1VVy^UCwV1 zH8>TNjvE??G5(cYdiF6>ifJcg7BzkA;m-{2Z%=Q}Rh$3K+WVi{QaRV-w!eRAQ|ITG zwV|ThR4Obd7>DBGmzHA*b`p#s9OYM+bIo%3QJ?sl=B>8hBKw%c$-S)H+Bd1J4!H>SKtaQD2#;&$s_aTseR zW_Hm{ZL04L|>m?YA@J0PbIYCR|7+&0Suc;&1DpToowYmuDcD7a+NTXJC zv>Ip)S5dq_di!U6>n}edosE|VMTC|^p+bljxel~6g){gbRX@kc#G;xu@Hd^VPs)*J z>CPt`+|(NSAH&i6n%y=LI~qo3Y@Y0CoTz?fmr~Puivq3f!YOuxKd}X^6l79Gy_m5E z`dGy!8zhG0(Z%*?-V6|F?S z$1QOiPpp)r)W(Wi6EDhuIXdWF)@d{8NSL@}zNXl;0^YA*jV6W*!< zS1YHNO&U@|_>BR9iA!ELrUE|a7}XrKClQ(9I(6>jkgi}0M3V18e>(bby|h$(*SD>L8*YQ z6#+Uq)yEu|?@Vp>qv98M@;!;X1}G5(#3~@)ZIDkmqeb!X%;EhY{)GK}kH1npduJh^ zee8W_#-}IR$#sseZ_p&8IWhXNGR$P4UEA`JZN-c z>;u^^=rIL=cN#DX!w#RMoq&QmAU+0#sRq%@bYB^Xb^^_l-xv4fAP~<>a=?q)E<=t? zFoSox_@+J*Pi$M>513N6EujHN zSWW$oCg08f7sB`crz+_h)vCLaf@%uQ@Vs&!9p<@tp@tRFSrw9{%S^DPmV}pvaA6kz zNCzGd0oDu|F&=X6&QQaC8(6PesmiBk7(SAKj}l+vt`0x8$%NLnvsAX+y1%k>J`a)k zlgH1iuaIk5i4^t2nC6B;u9AsnPjTwf@sHH#A9Qa}UV5Af^)Ry6JF1H*2~nn% ziNfTok1pDqWiVc-h)Mu@rrGcCWuTSp^o;X($Js~TZ{l7^$X;S!?L6H;{xVnTBxdVp zqQb%#Ki9;<=bw=S>pWdL{huw?;py^~;nmEk*h^)D?G*#CZQKIxyoGJvI0*_OP zg4@zyPpL{g@i^t`F{Qv9L++yp7Dn)@zT;3vhKzOyp61f^Ong7Xr6ppLg3UxFt}^D%rOzfXfLMS=$LAsKms3ZXUo^04p*L ziE|dNS1kFX!+TZ08l}0#V(~bYoo+4`*%4?JdZwdL{VoxG&aEc9inY~OLppMv)ioxW zp8f#ZlPR#+l$7_^Oi|Oj64YF9y=|1UJkdBo{#a&Q=fdA$;KQ zn+{V^pRWgPZ0&0`R%{YE4I^5%vmrkp%h+M9Y=Zraocw_YHkR2Y^5vvC-JIfNq^<7l zHVDS%R66L8iRrU1p~6jo0$+O3`9q#4i}*4j04E@js?Ga-yjIL6=X4IX)u9;CG!iXr z6K6AD_?zzz*-9N9_BGJ+0~b5h4mPJe10x^}K&bBlTl`nusIsqZSEO3f1SlX#42!|F zEtzUk>Pe$%kjnhi421+j=EZ{9v4Fnh*G9J%Vvyr9gk}M*a0>ATcyA@q5J8dFN$$6aj%%d%InuReD zNtLH>q~_u)db@wt?ulk=pW1Hhe$?SQiaPmh^^{xjg;<-J5vYP5NwV%@FT(d>ayqzxXgHw`wXqN zZ)$y=Y_svt^*+bYvTY{^>nXn4GZvKFzLk58{x zi)LzH91bWli(+P{W5r6dE0fqax8ktI&^|0B=h^VWc7l9<@!5Abv5DJS^fy+{=b^BE z{F%bY_O)D`#{HNtc(bB5x%PA(x)xPS>Qo83L5D-9Amthv=j|sV6v=G=E&T@iJn<3^ zQR+y5jg^nLCh(jDWHLw)Jk#qQ5b%ev3=aEsSG?|DGx5JaF&*ic$<9vSNG|@~HBLes zRu{w>jWGWNSJ$p#Jt1gAE5>N7+H0V8ffqO%p~qKWFbC1h#y&tH^m=M#5Wo~1a`0y6 zlf43f%|DOGWokjl9}$`k8p5)i+nS&CVZdEUr(bfY!FS?#*driC9%8gTa7b!41E`nD z2%Q0-$GrnueS5v+l3{SKx7jkq?L*km&~Iv|oLOSj;J%ZYv=E78Wz;8)pq0JhSIchr zXe$NRxBE^?UZ`kK6D1U_;N)TuNZ&S+zNwp2gIf_@TdoorE`sPBvN!x0>56GBov#%> zru2031e$j|Ib!#KWe?Tb+c|$ofgrLU27|;dqushs(V*5xI1VTA%=#;fIXGC1v&i7A zU1NtAk9Ysfe0%mccW^BI8C*39*+e`2Q>E&yM9bF@NFYEM_DBP z87Ij+q7>(pi}}7=TlRve%%Z^U?_TL4{`N1c_x;srex514gG>xRo~h40{mkh-#^LD= zZKz{k(57bH4vFtP%NOx=wSABqaYBP%r$^#9CTe3jC)tbF(v;6+j_~$XszxYq!LQAV zoIk*KXx@(>i)0;@yAvx0Le}TAI7D;j&papfWAHTeyiB8gk1(_Rj2&3u(3^2NO--2w zdo+7c!&;I4Uq*z=2f?cHfJ=NTk&ntqUyhvjj2Y7%uZM9#pYw6+3<9Ct0PuT;SHvim zGB<}~LjN`0^nXm_`A60tF50@=CzGpRF+;IaG}|{T765AoHc_;NzU`NM0HP7IWHn1 zKEClv(NF5DZfbc`5{=}evp`N-%7P+mPrjZd_x)<=}D{ke_!H?gBZjK z3P6cwP!`dx;vHOD{9K@7WcnhwoB2rl22wM7_BowMPmWl>_$*(#D{RJpF?YNu&IiO@5-k+t|)2R@e@$nD8 zOW)R4++TQnqZJtr8U^F)3NDBriJeizVO}g-LT-iy8G z#g8YPHEB&0>aFUl?(UWO1}kqsb+C(li0>y|hET|TJ=g*ED5#&eY6(sK^8qz7k!b$3 zw2J!B6t1#)L~gytnv?I3#aC`KpT_=l?7sy^BJ4dcW*GG%S-&cI{bzC^AKZZ#a<-%n zG1G^@ILC?Ubb&JdXlM3&ghri2cre^D;Kw>Oh3k;;BxaMx>vb?kc-Oz2z=iBT)R+*;UIV9)S`4mABng*Ww zpOGKQSI^9ft7GGxgJT{R78TgB&4n|d>AKZ^bBBOul)-1Nxk&FGsCP7$EFd)TUi>$! zMfPjnAwHi63wY8GFDF;JrB9MMMXi>~$*x{1xKVJ|{ek2%8kzY!`PLTW5ire{F_wZQ zX(5hcX9#z(60?yBrvec$Y_`=RGSFr6YdRtt6nUy`v@U;O3=;^u9XjXxnwz}r{iJpi z!Gos_p@bcrd^{F-;BcKJY!xy=z6>@uus;@=-P_O7@Xwc;jZ9^n8n!U3WK#akjdm!< z3+^9F;QRwSuOw3ynk@y9E9s``;h4}cd=%&IHxg!bIuA*1gLY;+FTA>*sco-gMdwLJOQujHr$8Auh(s8S zjE!^~n&JK7Q(=s7#pRhlyu3r+0^gIYJdFglz;ocGeB>DqB`4kr-jRf@Sw4~yZ zzY=h+k9ICSmE_t9zIEWOeBe0`K$WI>Wzle-u}5j)EqBilfA3ba7gJLI-k*y9iSo3D z5oc1n&BTAI0=6sHAzxya14O^oWO2AJEx6`o4||bWc*$E7@}-^hw$CATjU%vr?$>ss3X%Vh)*3NQ|^1qcVI2j~mf z4Fn5B0OSia4Ris_0Bi}I3|tNT2LuQN8-x->8pI033nT}m1>^;k0MrUJ2lNW`7mOH; z6HE)t2P_q=1{?rf6x756wDhe39Kz_8|)$MGaL<^Gh71P5Ih7t zHoOab2mBxS3HU|$E%;;j8~9iFUj%RjECix|7Zm~%0vCc1f)s)hf);|&{}?+ICJrVB z#uUZ|;ExCanSqD^xY~d`9vi+1qza*eC}RDm9{K4%LEYMawp$Nox3PW4o(hW-@y-Kx zypN`uI;JLgy?yITz_!PT)7!E95@@x54<5;#0TZ{!t=0M8gTXBNy-QS{lS!?l@_k$qMHaclV3j32rWf z${l-0vN!vS`9}WpnXi0TnRLq^o&7UUF}iJ9hPuFKLk=%KmKKiQ32!@eie*hkWoYAK zMDY%^Xr#;Z|5ohQ|CRlZ%|D6V|F!iG3x}yGgQ*e6{}%y3|DW6curjbS{NLOEFt9NF zZ~LGB1L%Lo|5P0K@A#i(G5_vW|JU(9F|f-da1vbpNBmDMfMB8j8UJ&}A+XH~I#lDo z<9|lefDnL&qWyRLPv!{}q7GUwV%q`P6;&Kn(4-){Znii1yn zW4qMWPM(wtf{j5CpyBJ57<@<-+9Sqt6eAv!*#tOMV9mn0Khlu9>wgSAF9{f0TqB@t z&eJSxSHMBA3BLR7>-036jx&-V;pq3Wr+@fGMNrSzcBvU~y!)Q-vLaxfnrlB-o*tDq zPj3)!O1Z`Z8_S-4)rA3G@fSRVU&Kq#I^tN)vrY@@VFDrS_$ak%_K;JZF9E7Ij(+@= z`76cTceHk!C3$u&Wd|rjC>=7B;|hK)Y`)*+Z>_tF&yFZSZN)83KiAG}t*Dp6UX z4gjPeivT_Pmt|eUq&1+q5Yhe3bUETYT9xj)#FbXBJTw2jGWcs0FdRgZ1Oy;uF3{6J zFzgM20;mHZDIM=5tEwr7Nd<*fsBbO(o*d*U#?ytFxP#?3D!fF`y)1)KSVW zbADK>P=g9}9#l&=Qj`e*#sD&RQe_-wCV_aP$;}eU7R!d0ce;7|>gsmLRzU*Bvygoz z$bz&$kabg(P97;?p`WDrc|F(1=eJO+< z6e-gXm1^qVsZZ?;;HrIJwJBgaeUz^5H)8fHsG&15AtET^2}CsVa?1)d2sYUNOvq3* z^)3uVBKUA5c#;K8sQ^H!45n!aYSOx#;JPBnMiFkK1X`&EzgmQQQe~a6DH&{pp-%xg z9!$XDz_iCVLxaRsL! zws~AfgN+J|E}v|+dEKx`=Us&UjWK}G(Sd-6$3moyvQ9c@W*UP-#?29vvca>WbqpT= z!mt7-&htC~#=B7(3n+K^y(Yi>)ceCj)`x(N#-(RfHH&#`>lD|Gfx#XAvvSD0Fu1*F z-Tjr>V>a?|#@JPhELgYhF3-lq>oP}t_~rLnk~8o*+Vgu`-;ol!N`D$}HKw}pxx+8n zt6XzDk`a5?h~Gw6se9eJjr>sZM8IoTI~9BTDU|-2>1Q{L`%Uv+6TiCZm13o>0NUHX z%UZtySM#GY`u8@Fe(W&Z=lYG2&at6FC$Nmv1$5m?)XV(#qR8$VXiocs!Xam8qnM*M z6k4maJBt!`PCV(`{?oDlrqDv4tslmFJDIN2`)%54-OsWqc62b7t^*)J;T*6AhMM6j z7CsL8yhMLB<8b7V;~kjd@G1H0OFtlS^~a{LwszltY4k(z)l=IPZ1YL-GR|o{n;hWc z)ZYkwy&th6HqrQszFV`uTlVu6`dhIJZ?0(&Y*M&}3$4AoYgYZ+qCsRjpg11EdF5LD zs-y7!Af8%*fwr)KnrInWRwf^%uVYCgh=gp#{E-e1ZMWTNlLC8J20^I^aseSC;B5{8 z7fFbSB$O2(X;4sya$Z6zdIdiXFL!M$LidU$Mp%a?N_z`sl(;XAjKWZjgb2u*IA$&^ zf~bk{V2Dy)2x*CobNnJHi{^P;vd)&lGZidzTsut{P8Ad$&e=Rgyw8kO{HG zJEmE+ZF^p3kM9)DF|#K%W{z&0Hs^8YA>URo@lh%J=W_eUoR0y9a6ceQu$W2CR_ z9niA$UKcglBm=YR~hZp4pb58tfgeSR1=lhDHFFQ1a3|x zSv!3z2Im@e<_)?LA&bV4@sF6lalPkmmN z`%s|>_l(QrIo_=8;rhba!YgizCL_Dxf4rr_jT*l;4>?p=VeH`{>ke)7CsCH zoADz1*6-~+9a0Je6fq)BVn`5cK1$97ANV_n5sIITG1`;H2(wyalrYXQ%9-Z?v)*Hr zybn@NgNQhSp-6&A+U7`7!f7EXFUEw7no|bkRgsWP#Ur+WE~;VJg-~)c-8IYu=9n~? z$z&~J{-YQA`);wG$q}pOl|sf;Y>GI|2v>YKGb9~Nl2^}Akn@SazUO)7b79q# zlg7ufMriLvif8k>$(#czOjK0He*vfO6x{Dam8`1(%8Wt>L$y(7$T^nfHLtKAS=|91 zDp6sdWC9k8$)+U6EwfyJP$JRJ>FIS*e0bP^Bf6{7Bj__30i7zRq*O^6uNG3B*=;TJ z51TLso03@fRJFj?8FK_D6mX#gyEGn-`dowIU>Gd69`e76#DosLg4>w%C%cc|bR&Hl zeuuW?N5;Zh;@hjWQ{UK`_6}b3nds`bbmJEp>}NztZU8GaqAykA^-Nm3r1a_cb}Juz zwrPHb9ORYN2-n_BuRP1a==p}p!{1+e^LeDJh?p$#Zdwponmfi1Wi-(UYZf3TWP zCv5~z?)g#H^E^&f&%4wn-dRu2(6BM3t^M2^EA*Enuv@&liu8o$c=GKqya4L{*98!Q z6%LFfgQeT@JNiS<~;2B2Bm@4ES$ z_Fj2DAT`GY}X62nam#)*BQ+70BCy-K7+zyC&Mr=gPNXYL7M+9x@p{^m!&#RLTBtx0vbx zE!?`X^u=pp>;8V&OAh=XxaqSHag}?rVlF1N78uMlv6=%kJ!S_`xR)oD`k_j1ce|54kd= z&0f?E2sn|#Pt2i5nz>np2G2?VUrrsKo^0SsS-qgY%f+h2FpGEQf;GQ@Vo@$?g`f|) z&O4y!x=!m=PM@UWI4kEB#&O*HCCYNqEiN3Fw}4az4eQ^Cu3!bjSF^Mpqb|W1y0JRg zBUYk%lVam3GNqHlDE`N&y4AUaCkKyD7IP({*>XXw1v694vt2i0XZO+mWX!s`mYHX0;*T>tyqD%1F}Z?^wi_|G#r9j6++xFH7>>dmL1908uv{PMe|W}f zWy(1olaU00im$z!gN5?R=$KFjmPXv#T}NzM>$zF8=!^ZB_F$I^v{pJ2 zx9a$|hEI{FFcwAzW9XePcw=t?B{ufL^oVejro;HNr`u*2!en&QLtf{--M12KwH6=hRk+Q{FS zAawF6C~K6bjUY^A8^#HG1k)mZxMAcQM)_fk;tvy=^Op1YDA6P1der!>saX(ISA?>d z^khxMf%0uX2^-@6fwkXH>hl&<+PAV6Y&ty#@ zK2UCVawYSF;^6iI5w|txc{l85vQh=T)hDamA>maNftiFf#gR57rrGAErr}*(8|=C= zAGTIW@2`ur#j36x*Y#DxAef_303bDbHbqV9l34myZ3=MR4ezh$|}6ae1~qkyg* zmGaEt60HG3&Y_d!Jb>pD{)H0)fai0X;{%fL>mjcFSV6|3xZm8U0az7CU9&sqA@Lz9 zjY*8>s0RK{L3+(xZwv+G{tO*$nu)8`+PRn2{Sm8B^hjowgS$Esd~YGP&ruhYodCYa@a2%=i$NtCtEiSi@C~iN=nPz<3-ulD&2jP4`G~U z!`u@;{OCDsJE62^-W$TJY*tPp9y>GrJ>ub4Dk8c2*I&}JgfdmDYiJ+V8q(1UU7~4Q z57t36E59eUO1Fu70V$j0V#&O5Yn^J3(voPich_0wc2_qSx0l!FcUCqQwovR~K(Q}? zU0Yd~RZ~%qf0*)D58XI%-LjXB*f3#By>iux=_u8xj+iP%Xpo==G=Y3s%bSX?V1nuV zxH2}^sdk|M5}ZuOC=qt;k?G*Za0YQAcDqwOGyf-Stl@ylx1Y_GbrwaB5*jF;$ouzo z?){D=vC1V^6P@mj%f5Z(0a=g{5RjhPoFSAaTj$5t1)X z>z!v)K;s!^s5sh5fzh97#Tzok`lNo)iy|F3Iscx^DCVLtF@n`_KW$FPlDoEL z&9LD6%|lbD1WLq^gPTSR@3>2wnd0)lc19o%d2&0a2c*7YP1=cW)QB!+7^`w5%6<7( zB;Z#27G-IJygx&7$SLk3IQvfE_N)}pgDXKM_r$7gZf`5&i>$k^GjFq6!#De1>$ zTEmH-hewbZL<1<{^cEXFXR+tcVCZi$uV(iX$(EwSymron;CB|9-KupI=UFkMFcgpW zJ(sch+Gdb)0=v=oqHPbM;~H?Nv>HacUFYqAt+~cr`5|wKHm-B(lpB{`(GLE2ByePc zs)-Bc6m!_mJsg@Fw!|#+;7-pbtD>u%`jP}xvP$vD>bN&{m^ch~U-=Lyg9|aNxUEO$CF-Qx4{))ocY^10KYMqr?C`=PlD2NCC*M zjIfP{Mqin*A#{YzanrA{Z#&?CCtNm#fK-?rlb~QAsIanX&uYOLfYhoo3GN>jm1B{I zr0xwYN2zIfs+`svmQpco?U0H~l~okMJvU=d1F{sjC0yPH>5e_2)=KTREp}WiOteHf zvbb%d;ygV`LNZWd%)05sbaZ%*D{p&&XzBeK7h|ax5eT4hCr=?b)KpFkfsqx@QdQ+X zZiyshBRHd|zLM5aB{pH@I+%_~i066D0(J^FrEI5lbbR9AyID&twr9g@AXrMlI^fDd z$-v^-NXBQui_v39-1Ysp{RkCYkB)&D)P-A*W>DsXyDeb7@8>8FpD?j2RM@=ul}187 z5LZoCvU#03+By?ReR3c=cNTU{=-OM%=S}j+>4K&!@kD)AxtB|R!FsfxQ$xFTs-$7Y zT{~)k)M&Aove=>>IU7Lc1`Nz$(h74RL@?s-qyXKA@S5JDGKOP|)pFV|`;`jN>){*z zbsjl4-RMU0pc*Zc{lJCxvFP;O2oT4zeJF@L5kF9KvD3j~tVNbhcJv}dcleqMJVJx#PK$S4R+uWGJ4CfTy!RP<9%_)I(y-)XFmhjntI zksQOgHJVv|C**m~jA@ajQk;M?sJN{Vr3>|TarJ1?(X>JY@kRj~%(p;U9iU8OiceQV z0s1WrkLz`sRy~R9pG*|q(1xoUpeLlquRk@c4$tTQ9qZ|pc8k&r zHN)!-Q1nNY1O%hip{!i!eRF(Kd6VP-l)wD1*v5t}zUpH31d&~@Z?5e%s`)U~`adW> zJMAUxh&9zQz0VF)lOZW;!r~o08zGAK2KucLs+ZTfb)o5;)*;kX9_|xpDe1r_7 zGLK>4b*BgB-wL3KU$ylLZwbLuabep1)&YQC}`Bm1$oUBPIoTdAB7NbjYTh~%M4v)0EVg~F+Jaf1qJ->3O1%22;^@s5OT{xWB%gi2b;DIev^va`QAKaNEi3wt z9e&3ujrL@xi5owkSov4rq(bjVk)V&>h~r_LRK!wjdA(SVbecy_8F{RFiZvV5Qx$Q(7dvvlE@SzT9tIN2w{$8DGH0{N&F&L zfKX%_1H`?J0egTv1}Cr#j5j6F-xJ}%i=@&}Wre^{T8p~#yYPzAofn$B`nQnu*HNg7 ze55!njpWgPkFoCwi5TvQt4PD zx6n|oDb+$%)HZ(|uGP5WDHxfKklnDmdL;%rMb|^4EdskNlx@#-Ef71#hb5;fk_F!D z<~R{MoB$ZbLIfjb-o41GDyc)}DY#Ui{3=S3BFHp^8Lg0U{zlMWYfo)A8@ml>wA|Cgh*amKOpd+cCa@s)f3(<&`T+~XIUS%z5 zCv=ybf<`EP8=8NN@E58fO!gh0DehFTO5z)cN2T}VT847$CpN`_ zkZVSo!z|BIURgO+_S}k(3Iz*TK%qIg#aA??anI)WbA&M+Mtkjm$QdgeZSm}m0A+U0 z4r%e527glFVL`T);9!7)fz1dKO$N*kqd8nh@_RQmawgmMr3-_LKUoy*J|FAi*3;eU z@AxokpbtvdqC)!)?CJU_;WldtE*RU6-*J{v{M;YYrmG5YkPzUvX?WQn;|H}CYS@J3 zCK#0XjTlk(XL%tbw&z-xE9D&1Zca1_MHX5b8X$PIVBOM(xxtPnRs>Mii9?CId@~io zs5u3OEJa8%+XUVsy?5#W1T@NtOHL%}nEPZ6JhBtjA6+U{h2V zgVTp0{djg_s9Z=&f7+qK!;d<&@#y3^r5b#iCxI^^p`}l2F+rk&658l4S~PH-)VSTp zrX>+?;l2p3i~1PaUKmAeJG}q_w}jP8DntZ}7Ud2^P~gi|_nTX5-Vm(Q+R<+TdTA9c zfyUZR;46nFxW&($WG+DEnNcElNB|y1zx)#R(!{KMXbDHvv!VF|ZuDH>?`1I@YY;t^ z@qj-<+*pkYS*px$l#<5AcWBnNs0b4|vW;`}sW5cF-8>^cKgtT1Z7m|Nf&^U}c0*9n zZ6Pr&kMDCQ$_f-BRU87^A!_c9s>Tcg^?P{g4CWQAQcH1ppbZK6D~-p%3+yDEtHO(> zB=YbEoC<6pFq^|4_!s;M%IO*z$w}eqH0=VAh@Loq9=beZ36Mil4%c+x{mp7FER17q z&DyNXiWa570>OY9R^LZlGO2=sP`he4UV(^={$9U^~5QBxVL zG2LVPesECF5LF|zf3S+EufcL5%EYQwv$ObkIg`+H%ow8i&bVVZD!U=62!-ObP%WPDo5kQb^!P;X&``!L{dzm_Y_z7a+*N#MaCK?vY# zqX}=cFIioizLy{`sXZX*OF1OUtDroYzPfIW4S*up1I9?krg1_bjRWYr5;YlOex&S{ zndF}LBons!$;fC_Zp`s|9tL4V#?zr%F(InD!J7JgtQBxW~%+2_e`Y=sZo`o~wi zaYV>SLjgk!2J@Jf(ekD5Q6b#a)R^x{B1nIutLrO+59Zp@zWH3t18fszNv*Hg1I>Y+ zKbL<$#3+j+FJ|?Nff3oK*H+_7cy2XqM_$GQU<2B_A)Ml}9AQ{aCpK;Rjs5zTy(eu= z(IaPt&5zSzxtM=wH37mX9WExJD15;``zTVJ;IlNe&K`zB_~CY3zRDL&VD9lj%a6LA zYVaVgIC#Ycab5s`?q8q_-M%gJ<^K$FJ@55Go?yMJ*a9HHb95$fnX43}Hj^78L(v^$ z5@m9cvP>=Fx=$>v`dMxHUCOQYarM6pcZVIsPTe1VeZKH6+7v+}Of5~zNxCP4L;=;z zg@k8Wpk%b=n2%qJxuM@GLdacXri zs2JMEqlv82(j&s)IM$unkA`OFB?UK!+T|*`HG}x$BvE!oi1oh6M_v9?AVk{5m5D+{ z%mg-;%DmpL3pj)JV;k?CLKZ+#0p%}LjCTXe$V=oQT%g&2WAc!+Olkk(PlkfNpX$XJ z7eAF+hyYQ&kPVg%zxp>O@`;sLbTBEv^tEu|BMY~*E7pszOwN8i$dBd^m0FXsriebL zZe3nV3rr*(C_g2*KE*bri5GfEOBB7yer*0Hu=!swM}Ko+zbi5UO{-HBgPV~vx!;aY zv&Xlh;Myplr8$v3+)HAnGn<2Tmemgq2FB0}#elkG?V}gbm^8{mzV<9O+PrgxpgG>; z!08q9qra5|RBQJocF~C2#WW1=$}K;?L|unh<@X@Ke(ZD|TO7>`fiMT+D<*j} zoQYjgi^=cL?fRcPtgJ_LiA%igmS`3&k9+j&d#WPEQR%RU1C5Y3Qr7Kyv9s`y>}o8qa#>Mf7!?J zM;-EY`@Y6^PN9#ygvI;N2S?L5&w`Su_$oCy)s=qN2Uo@uyW<{=X?ZmC9qm==v!z+f z%3>baEvhI%;KSqHxFDI*(50E1^^VzbKc_akUznZmmI#6u6xH1VRK0`Nyo(+=YU^Nj z$)BUzo>g&4-)qAifc1t$-0i5gHD!^;s~}YRRVH894VM*u#ttUCqS-Z^`nw(?%VU%? z8~_9;Mg&waQf@m#RCr=O1$55jEI`J6yE$C1TMk|EE)orP6(yT3v38Zqax~6{itzMGrmBpX znW!zRlt@&U22fT0%3?-O=gd>>f)(}oD4pXD&8&S*9Zmx?FJ$dW3V)(}4tl+|V6i;% z)FF>8i+Mfr-uXYWHtW+@JK|V_Z_fCb;^KU5Y`B@tjp3iuf2Z*x%Zq=NYL7QWmP zw!dPP-6eh-2N-uMKUK*a9q@JU_X(QZ`oFvA1ioMF-k&s!t9-K&6_~F2n|~?~RfLI* zbjt%mVqOF728J7f)}%~?oJAwL)ZmFw#2L*NwtWb%w#a^?$K1GQOTS-QWobSM7@j>t z!8e8sYq8FMe?w}#NAdB4I*;?RnpWCr4^=^)k7C^E?+V zr}1mg+FX34aL;{Iy4-fn!Or9lVO>;gThDez&cLtPmX1R6Q=T0U@`q}Y0V=MNPvoH; z(_|Iiq?y=%oF@l|SQ=e!o<%3y##2hxRJ<>pGyeGOLpod-5Rc$YCSN2SeI@Aa111l( z$`}fd)LFbD(Z5HSRs7wFI$m;R2&av8pQ1n;jyX&xY)APU{|hzr+r`1o(8TX(4>I=2 z`ZEEDEKh>#!F)`1G&J&2kqlS`kY#ofAz216boa4nkAOP3{}`diZNFr_6nEX+B8JV+ z$@&^5pe;_;?I|Rq396Zo=IR8Oxys>Bq{?NfgUk221!pM6n_*C+{dg3gG&Yd_LMtBq zYpKOl`eA-K58hUoxy$91U%$ptXte+23i;IqSJnpV)l*oC<N(3e z*mFMBTjiN7j+eQL^U1h$Z)x+J4?|hsn0q?^+Te<7ST5AZ@DkH&%v!CYo;m|GdRj08 z_+EFA4Q>Ci-f;{yid?3L)%~_<^yBgLIVB&VQ`cv2*~RoDE=A)^>}kWEiX@TX z%G-Q&no76!`)k&D%O8X9`Ji|CC&)U@1@7`>I-DK7!@A20i~5x+uhdey98G;`?I0Zms(2tkTW4#^p@Pi9e1j@y^;&NGA za;r5uV2tkMV~;ZyqNNXAX{LqjtLZdF*F;FLSg^^V!#k+ecO5?Vrak*Fs!+Y1nHH=d z(6C4-io?+nfmkNW40oAzO%ZH*)-ZAKPV`X0FPx?Qz`fnzra_DJti{+~S{MV1FxrC% zhyaCOU`2N-UYNuCZ2m~MBuKG-+d>!9-c{w<$juSnQynoh4pN_RJzva@TZgkd_k>?TzMNS=z8U+Gs z63MFbsRa|ycgv{ZnsXA1iB~Hc>?tla`|f=dCJ;>@{E-N*tX;kWLull|H|^tM?P%XT z$4YP4`P2+BJDG;FChzHtCEYgJbNoNMd9`y0x?#xkNLJRNB9p9$ z5icoqDt`&HP$gA^^+Zxx@w|3%?RZNqvC8$Ur>jf#?XmbvEzkQ-YI!kH{Qw6yYf<9X z#7H}mwK_ewhS-W0#bk#8b^!kTLM80&C$9~mP2^T3Qie`)Qa#sFc3~kOj4Yw+KGfnR zcjahHSBX)!o2^<)EO1e{F(=kOK%Y-bmy*Z4=MiNhPV8k!sDL+6x3UoWXwLVmc~pXJ z5&krke`IX!I%wc&2=^g9-NRiX6={rdVfSa)ji9YJeX<%5QqZuf7`%S~`l)$4+r@f< zlU`nI)sc?yg0sNBf1Ozzq-;VHNCJXQQp)=zDv%(yM}08(mK@(4J|K>i^{__mTCFO1 zRA)N50_S2b{k7jm(zbB75^JO8`C+WIhJC+yum|$KnLpf6Q{tAwmb)$3tbHx2MN!I5 z_XX7|plOR0aW`=ROfCZ)V2}>Vcye|E@J{h7^qMZ2Qrm)TUYkc|E!WFM8j#gu2)-U_ zgkAr0bd;`gL46@rP%bfK7AZ>duQ^81A&v9BeD!RziFSCZDkhIb{lUyz>5&bU5G0BjQIR4Z2rsnS`6V#r>-uZx|{iW0$aBBz>;EWivMwtBWv$sEc%+@#M{ z-TP$NR?f%o>Zc+S!EEVrD*=>6F4A%fjICZXr=lOXP5{Uwr5lBmk;3zEtUH}dtfzXp zr~|QB2+8{cjxe5oR6K2*61=OMUuvk9Jk*w1M|x3tBC=19Fmu+Y*I~5|V(7{SMGu^F zOCV;hkjSH%xHaj>Ge;lowaTcAnc2=oISJ(B0^f>WAK!)$?$zGcOd?mCB@eKTa$+kf zBOw{<-qhlyw|6K-hr#~lu1mpEHYA@gAg|LPw@73i()D-ANLbRKTda{GEkj;OiOyaF z0IhmIkOp|{XS=gBhPsqn9j5#}#Y^^DMbXv#0sbC1WQsShDshUzS(9|mlCZHY&DiLo zp;gX1H65E$K-+u({awy|Dr$0?In}-{s#s<8tb~!K3r;l#>h1{*kM_5Q#QnjuKP_6_D(q3-0Y9eYR+<-6kvw zzi{PNxS8)ZHT8z!pE`9wxzQog&i|yqbjihX6pIs?wKT3beo(sg1>?9+HR7Zz3#PiN zmK0e15%(7L&Ae;jsDg4`Smvj!RC*z(VcSZJa&|uT35@#HbN4AUx>7h8jNY10W7q0k zs-1j!8|piY;OwULglF|UwWoFumlfEl>p9`?=?KIMMy~m?gq9aJ^_$Ut@f?u9=eZba z;^m{h)XemUb=H#)>lv5dQ{;d0yU-rDb(A1gSW62dX$#EvmzF#lfM;z%k2v@*kpgv5f55X=FB=hIq_d6LMHzfEJ-LecoX%#$$R~F5Zi_7>_h!i3E znO;<)yHLDz*%3>USe!j={)rSBK-94b1ng*Jvbu^4%T|hXP}hp`tdB4*h!^BccS`&I z;r>)=>rFNjR$3}Zf1LOmUe`TXTh1zb*m8MJY`L0^ALqHBo(~2(J(Nq;`iZ{YxdR8|1+0Wd5QM1SON>^NuRL~)mW~6hJ(hUiSeUW>yJYHAxod( z#jlPmdiZJC{3LdUmosmcN=&HkQIYmu+fr8y@n16P=2@L7TT4~^!0#7p`wrYt1w;f( z8ooMMOYjvlJVX{P%DqAx>>9S)!p#%q$x#e`B;99)h3EnT|B;Na70X)~4qD!-;0zek5lJxaz+oDeh1n=cfW{|eOy~(7?0%Y3pQ~=oE{n6vt;le& zfLjH>h6X+ zU~6w7i3q~-YFDrAaf4=XcUju5c2C&6TwCT2@MIk5vBs~FNn2;F2IDdebTH-E$~)%K zTxXarx}`y4&8*BY{Rjtd71`^;{{|}?XX@0P!l* z94V}WEED0YSs5OBYj)zTi2>KKSE6u!F-R#ZtdS`#gm|VspG6>o+VUje=@lq)y(z#T zwOSDCw_PbjSQ+un3ls8&3#R|{IXHQ@mg<0HF6Jxhi}kC1v%69O@T7FU0oW;u6k;VS z;AnQ0z*sy(BNay3Yhh(6^)_)w5kW8J%FX>g$AqPM>aK+bvWdB*n}Kk!}X^tR!<*Mr>jG)cCCE9 zZ(T#LZ@6OPhWe$l&6e$rx($P6^Cg$241Fy{giBToWc>`iQ7Ag*$x%H4il*^4hQGC> z-D&G|CNkB5IT&)Ws(_^jPe!FaCm8?vR&SXdUXRTSt`#E`+j`UQC?I5V+5ZGd6bbEf zW7?#-&PqyAAL>d^3hm~5?Bwjd8vpAlvvtz{_&&8_C-MCi#n`V<7pRT8keaI&me|1 z4Yv!=VLQBNT#W5fLt6>fUtb(|0P_(EXUH)@!ppoZKy``|7TMKuj zz)vUoV=iGIBiLZko`-sv!pB&_hrFbu^^A=o-@vSE6!&dM&v%nzp4C8vV<`y>wMJP( z<|d#fu-P`}VcoYb4(kuNr{Q;62104rFo*;YwMbd3)y9jInlGgk5`9t9K~yJ*w6Z_M zK$Wv{4;To&P?E-)1Q>)iY;r?ZFjy}|z1QY0eS_QmI$Qv2-?=?7q3Ohhp*cxFWE+{~ zWQ6IgF}Cm>agG~Wa4Bb_+frW6#biM6dcNgvK|S8IpH94`iN3wIz9NdC8FJ1*xJ$;Z z)(oE1pk%Xq1_b$?6*%?GrkkB%%9H!F2Vx*oxQd*U@Njf|k`CX5L>+3_0 z8*ulhz1i{ARMl~kU7v4=_5qGuOWopUwcPu)Tl~AF(Gz>kYb5G)>Bj+%Dx89lq@%M+ z+H)>lnL{q7uhhJsIQDQj?@fhRpj7E8=pV|R-O79)`m;Pk@Qnn}(d0w^VUS2zNKtkA z4RBE_pUPjmX`hL(mE$4+YqekE79=G45p~5 zT;j2TH@^COXoH$Q#urVBZA$ZDtR4x6b~V_o<9n8)lqkj28k2T1+AM#Q+;JDGG<`-q{^=^itq+bvvemetPiXLfzn zyn7J25H*K%5xsH`xTfh^Z?$<|mL4}&RinL*Q=l{l54E&}wW2hQN1AJBUrx5(5y7EJ zn-eFv5cj~V4@9mmmt-J0G-hJZHT)1@kch<6p($SI>X3ybyIt3kjwxt3;5!`ezi^b? zX1RbifAsN+>6cMtC z-j#NFY%R}WLu=3-5;dA5K;F^clCe%{F%Ewgo|nuDcsQY$F!R#rddXW6-{c3XiDH#( zBb?h4eFJa9IpgwFSIh?aD;kp}U#kTdT(4|26^p_A)H8==_4I*-T^pLFFm`GSBYL_I zPF7_Ppbk+I`V*AHtG-)DXoCJ=4#K2|@V&vUV_`L6PN zvb2zTl?ESjc&Vaa6OF0JyQcFP*%3UC;LY*9GF-#a(}P*aI>_$TVt0gPYl(62>5J<< zcJ2wIF9{Zdeh4}ZTa#u`0miYkytBFk-BPL8lhGw#gLQc4dz_r==~LN#oP_mK z)~2L9^!VldW#(8`-nLx&?g4I(v%`8NC?(i2GISoSgUMiSh_P`qvfB0#*zt9LyJwxt zVZeaFLy?W~b!X0;MF@fe(T#&*mkKP9qrS6fIOe2x9WuxPKq=$o?e;K-MwuQ-yekc) z+Hb4nrarEHFg&t68CgG@{n%jaPmf|+hiM@RVx4^n^QBbCRhnL>Je$PQ`w66cnKRTq zPfm!y{yis%vQHc}yRnU?CA^ZxHH2Z)n)m?d%rAR!L-bjKz6G>C~+DJ4H}0|EU)0tqZ&;lm`GZq-g z!*goLN744PsW*cuHFC>u#)Oo(u+$I+OJe#fCyh1v7&y$Y&u|gqUmia?l1C|);-|%E zalUDTtJtTLo#6h7Z=;vL!ytorKD;sYMXNU%|Nes{8aBeM&%iH_gNjYw2jv(xpPJiM zpe>*6Z_{0hvifji)7<^QHtatSp)~6(jT)w@UeyQbRQm<}&8Y`{3%fTkceXZp{brs{>>n!{KQWQS|q1Xd!>fR*1S31*TVB-KDz6*|?apV>xyHN4^vQusQ&#q)Y2Lhu;1;Pr)zLHk$ zGR_R)m;?u$4Lj%1jUD^4W!5>la>?uKWv)$ynD&vhdjqY!g1sS(xCpYz*(>qQEW&-B z2h?TK?KRJq;hnnnbVv+kbgY=^9*WjI1o2R%G}H?bs{bIP+k>6lMY11x>^Y*1c;>PB zrBcOnCFHfkCx|0QUIWjwmOC!HCY(l{mYk;UIHw!LGNuZ7QcF^pXelsF9+xG-o;L~Z zmq&k!H~0$3@uwzdi1KnUREQodWJ}6Ox+uYzaEaMDoh&#$dV10zda`Lr!X>6nKI>)% z`bf$I;vt25rlUxkcN3)=4E)(N(OLFuB5XkWMwasg?CwaK!zxkg#+kTFtBaySfj7oltAg}A@Zcn#|=Ts(D_P)Kpwu`9hnw%NhH29MFcBL|`^S)_!JyU4&89`2bmcE$@j08W%&I!~lVF<-@(^Iwh}Wqx8u*&w zCW696z<<;Cduez4uvgQJTmsKM5j7Zt2b4d(HNB`0QQ(8GO5zne>S)-8wAuheTam9? z=J68X(7{hH1&I%@*}if&gF|=Ajq_R0U0l5I@+==0BONscD*0E&yw)0r1jm-f;Z+&v zdObcFZZaH)mn*H@(8APQS_$epKfVgX9ACTW=@s|hcz`7Kh2n?KMvul49DkbSdNil5 z2U8nA7By@m0G7r}=x*=?QwV@R2ggcGKr{Yw0oe78xUvTwK)Bg+r~%DWDoJw}!_O~{ z3gGqoS)9djBb^h!(Y*=We%8>18vK~YB2V!lKLHc;wRyT~lT; z9hJ*U1)O+M#0T9!O_ye?_?%(Q^|*yiFNqKZ*l_*uAvL! zElZZVm&w;1+LwMzJvvz4+*1Ujibw+#XUR2n* zw7an#P=j6DE7Xk~p?$P+DUxm7N!RlpE0RC2;|LFCTc&D6Of)S#Y!}^lQD;V1mwRy> zv%JbS6T@4Iv+54_)x~DNd#uddJNO!=QbSkh&AE!%xZ8eGLExRO+fZhG)wA)jmu!#6 z^5<*+Bhe}tck_ zCdMf{$|##?#1D$Xz6*fW>4>*F^q)qKD{3pT#!I zv=iXK7m#91cv;C&6+ci@!8t&VQ2eRNi3u$+7CI@$Hd`PO078MOd+y*nhm#EBTYPGZ zf!)Nbc7b3l-q>jcJ)y;P!J-X%eNrLjkoC1*9Z?nhF zd2G*?eb+d}L{kKm53DkW6xl+-enLj32Bo#D;2Xg9_wY7 z=#5n(&Nry7TYjs$`zP6_kJ_lcEMtLZT!wWI2H41wk zYlrUcow>PMG&-hivQ}eJYw>Wc0uE81xb0{uv2;qJ)HO-y~5unrz$Fo0r6Dh)xBxA(paYiu-n`jv@+}eyYHzCabW_DTR z5^ynaV%$BggCR4E$x`USx0RiG`^nsYlect2W{SWv$=iU8P$`??Fb9T-N4#&*%}QBx zYjb#0EtyuGF*1b8>bq<04`9dlmH*e(X_uiQ+&xePVJ`~ ztBS>HyFbpQsEpJ)X zgM@dq2(=3@sUa%2#gac$y2Q{GY6PWqBDc?6w@FxFHl#1r4+CqUZRv^w$Z?!5n65BI z@DQS)8phaYVgk`I4%y3$rk*6Vev@39Pn!C^I_QcS%jQtlTzJ3?kY24EKRnA>-3TLG zg9<2)g`oLxKRO;w6tPx(XaIjy)LL(Y@Jl=Xdbghakpm3-3O%*7|{IOT25KZNg=#8EyavP_R+x^~ItC^k7? zF&zb2xf4s=hzt^fg&xA+vH<;HL9Br>s%Qs7rCjzCM_v1%a$Psw>_fv98WiG`H(~JP z^521-mAT5XwAlxo{VL`P&7rZ&7|aP2=N*4OW-V^y$^hK*GFNSii4bz|up7=;z55vf zYcOOEV)dpOx)aE7eK4Q0esjWd!;3`xOb}I5aEH5}WKeUkYJh!kKK-@{!+|3cq=8YN za?3^t9+bNCb4|6zE)W1}W5G}Q6a~nAx`+V>KHp7|HLiAQKb2qOt$|Z1D8?+2dUEaRluQ)W%^{MZE=6 ziZn-_Z`I5DQ#EXylhS2iL08) zwrc2KRRd%k#+Cui6h}57hRE7+hqXqe(c7Rr*fJBMv&E{vH|NhEu=^GEIoNm4S`|r| z%xi`D8L-|@tpvIPm={i;!rrZ70(&Y%jO~>1o&&~sYM!1+KBGA{SOM2JYg!lz7SW)? z@Ug@gU{SVKo|CkhXCNg*|l*4OX zJE(Xk9j3BwoxK^y9OKNA$wTri^RwC`dupGaBx+LS3d{>suuH)29$+9WHj7@ZYiamG z6p7m{t=b#6ma}QhoAEFe^w7F_MK_?{6RT=T0}3o~aMx;~(&@U8#nyV*zgFtg{%We2ZmZK8N#0E8+bqV^IFf4*gL%3$0C zeKu;so`L}#=wBzR-}BCg@b&u8+r520x(Di=q>I7jQq;{^uoS(jt;NP8FrnLz{IkJD z;Z7Hg2;aLj9da%x*yGq(i!D!L2@o3fS4E1kl-!n0Sq|=Ix_KCQ&;Y(pG?<6B!E_Dy z{A!i`CglRu38FA&4{NiWxmRp}+-Oj}ba@1Ub{{ps^$q+Bh&BMY{70uxNkzcVuy`%zk^C{Gd01rW3HKC05=L5)Fii*NqP8N zbj6+H{^5c9M}4BW$S%1|_)Zw=%5BB*&1Qw+zjGK;zV8I(8mIR_Mx4HJ{xOj%8D{WQ z`|E39IbNUbf^h^LQ4 zONIgSUt-5@n*F0bXj5ppzTMbfJ)Bb-Xt(P4r+rvEd<#`dxD}I2Xd1a4XkEOaBRzk1 ze}muG%WmP+h3m%VyOt-$*g^f@S}?&c;Z7_K*CJxkYs>zWSIF?!rg?OyOW52f{L)xa z6t`46wdFK2($6d)1-so=Zh5Vlvhr6&ybpQ`^a7n}xG5g23NtZ;+S!=`oXM0G`q4x$ z3yCD1gU7vykLXz)gt05iq=h*XnUsdW)0g3Hg;-U+Sy<=cx$AZ&b%{%xGtdTEJ0I>t zkc7!0;?vI@`79UR$SUlE?>}6iB4;{#Q0u^I`U=-KG(6kLJ#U8cFW{t#(&YMtxA)@Z zAZbr!YiVA)DxM1|vw?b1K<9dO@u)c5vOd3)fW(t1>Yl6a|Gi@ufE5_P2{LZgH=xR7 zKEHM8B?h=V=O3O1c)M?J%=$h4{bjtKB)$kFHq8Gh3Ao1NM&65nrqg8a9@f0oPwJkH zWeWQEeY_eRt+c^GRk|RwjGa-#ug6Rl5o4*N!gkmAnc94^&a>aKHRuLS5q$ z(rE+h?|npIn9wMp32lQ#T)1_eVwostF=xQ|#o7E{YJb-+t`BOZKMYM(X_IxvN$SlZ zSwX4!E6end%~~IXDqA%wjJwIpFr?uO5AQ;YM*^Cmk{G*h@0&d0wVbY!(_cg`AQd=P zW-l8Lox4f-pDdD>X-C148Nxv|?}Bq}HNQ(Nh}AN7+p6loEBJKKmAp<>6Hi*Q2Djxl z7L{8lOzi#-hCA2I>c<==_g9S&U$>grU%zhqfSnojJgEh64--NC7P&iZ!Lda;37LyL zi-W#Q1}iGezCbz-TaA9WN_-E~IGrTU%$pk&hVzDUsT*pxE|)l)(^h=oWjnQ;lcYi9 z@PCN~DZbb+zHUn|XSemWt&1~Pbizg3SKrm;dd#zz+zf7A$1T>K+|3pZ=93K0H|b(O z(qK=oF+r{E0Iu4lug0RVyJ1)bO>FhxkI%C9OfRNCg%z=f z{v>=Vwd?HW7n(9I)gog(kSmrJ|8d~l02-l>!wnH0aMa=U6s`pDFozk1EW(}u8GPv- zL6DPbox=Jd3P92uc*CN(Zm3U~7mhiQT_B6Gs z?n7#{LO*lURu#QB>K|+us6ft_)3$YoN5EWdC@s{6%PIByL}MYTiB)%LW0k7C&#tZ{ zVS?kp^{LbycF3ixNl+QPW=pJNPH{VJ8iT@~$-1RD+6tW2rMvs}fe#nHpJlc&N;liE z=n$-#H?Igv&McTUAv7_sVwWL;r4}} z>vU8t%b@awnM~V1h^9Y^Thp++BRjQb=1W>6nW$!_ATon|)jTcDU(!zE$TtobnLF#( z@fp2XbG5WNtlCzL`qe2-uuvM9RvKQVuNmYWWsG%>EcSFUVyST&b+}z!faXQl*_e@^ zFJg?_B|1x{Dw6G@j`k@{>QeLfVqscRm|0TiSuD!xxZiJc zvda8?c*1}5apgz#op90#9{NbCo(3~_2g#9;V_5zhXd zvgU_{;cr&ro<;WcFISU%ctVy_4(>^ zk7n>W4%VDk&w^uY!ru)+g92a={5z&!i^b_tw1^3!^^lLJ(2}=37@}|2XEZq5OJM`} z|DFDy3UhpW}ZrGqJI<{NLe!vM{p!Z~V{y1L%L^ zf3nv6H~yzP%fEZ!|0VvX9d@D_PO#VifdAA32m$z?@SmwBfgu*qAuRt5{~2KdLI4`# z@!#;D;?}G-+EPz@JOG6fpV{Jxqku+wBvA&300~23#lOEHM6~H~H9gMte`cJw(dRk(OC}LyYdBS@(d2923iP5t_Ks^(fut zT=R#ff`QEEwkQHcli}jMdi5W|E;yq7!DT*d`>O{Ce()K_5wSi=R^!_%do$s?fo|(e zw86$ZBBL4MlZ}_<3&IcF^Z!frt)(!08-3Sl|<4Gj8c+pHSL1R3pYtBn5P}x#~_dJH4t^h5M;pEN)ZJ` z+ezO`(|!w+EdHvhN>_dQ15Y80pa?5Ecxijw#VeZ+1##UU%u>lbibmXKoQeMf@+qxv z55@6z>2l5Vy-wIuGwH4L`gtbATs=?GfK~fqlNI!=FHsFWiBB#n?sCee>x7abz3>NM zL7{%HE#>V7N{{INesxK&OaAuyz0-mym$&#)e%o5AGQbn4o9>(iBv&ozI(z%O_8g}) zwa6#sX?G1CO0f4(O+x|50svkBkS1jC&4;aap~}v>W}CMG9wEqvlfNM5?pU|KOG{UE zJE(1ym_Z89V4T9Tq4gmnY>rzT15oUh#?vg2f(u~k<`^Rc-N|oXH$@LY7XoK!+!1HX zI8#+X_8N1r#R4_e+P%5V$~ z1m}AD7gsQY`1{w!aHzhSA;GRl@MAxiWGEOW6^2O%EW>j`04)Q!(+d3Pw*fc=LVyhb zK426AlMWYvuvieF9}(=2J2r(3aN;O?C6&P3IF%>o9Y=9N9nxAbumKFjO0ZD^==RN1 zW|b6zLpa}AmFm_Q$OJ%1%L4JrENYoF;$%-wV9qi9}tm#4e@xV{O>mQ3$0Wfx;=58HN za_4V~{J(n5eFc&ITtBx4Z$!En=tdKzY__ZX`nR*M zuiyd@VhS+i5>aLxf=VunZr==Y3pDf-RdyS4?ff{m5u(B}ohllSd?#G5-+Q*3+Wqg_ z_&+cL(&L2bJVJCVK+W35e`!M{ZllbrkrScv#k;}?q9t51Fp;!yYuQCO% z14I|)=#KM-{Oqs`bJjRn)&9Cx(Zc{I{?+4_fdmVAKMz!kc6#5_E-v3QGSrzD zT7fc#0c3u|Jrqmjx=?>W{{%J>_y!@m6dviT#@+N;Xm8b(c(m4pekwKSD@=U_#N#4f zM41H9rxo|ntOmkYsEKdK0_x;bw>>cdyQTt1W>h5e)8<;ss}&;hd5MxE59-LL2!zlc zz+e#YvAmHdOh;FN;8OUG|%j{w&Y_!EUi z5~$e>41E-g2L#X=y8t)_E*v2XurL6y97C6)zzDk=zS0-`pN#u(_B zl0MUp1`%FH3_w4Cx+I7h6?IDJF1(6>=fCR*hZf=#^gDv`4!24Ng&4_086XrXM}wrm zBw3l^mK-K#rH@Og`;GJ)QYgxq((GZntqs3oZfzbAg21PkB0baVxPtrGQ)jj=eap! z-@W?k;qIvp(p&h>TmPV^5>R=hJS?dd#0u@6QJX+~++b)#n|P%n^tp5TLoUMG_IfxbY_* zSpF178XTBZ`wsf1HRZ2pjk8~cgyN0&o-e+~nQ&^=mg{Wy4m7q&Jixi`=*iglob?D{ z$J5Cv`?jIF?W$jk65A13R_$%!wbxUy$S`-MxEtAX~OJ?T6Q=Iflvol5X${99HYt>!Q0MYwIXbC)yC zcik0bwDWzEM9ZbJ$pA&IroG8qv-cXe~|ZZmgn zYiVa?V^LYpi-k2;V zKrt2F2?L8>f3iaIXR_PNSg4NKDsmsJD(E{6=*E7Tz!%^Y$yeKA)*T$8sS0PG%x4q$8K9@OY3{b4SSsH>h8 z@)_o<)vtHEgyELc1c{sjhN-upV{3%U)4O@>Mlcp|E_>6quubihDdq4kRkg8!3QmQz zOSGmzDo<|G#iO26P4q5_S^0xJbRjvpJ%fGu?=MXrayn~F_Y7L!gKh(hWq<_@k;+#DjcHv?N@JiUq;t^g-Ph;f(4;m7J2`r^3Fymuzn zAGqpAmgdDL0fa$`;_Al5hz5~owo_d#ze+TQ6YXr_iP@^BczqZQoS}C}!7${(9BmE8 z-gCJ?Q&f>KvD`CG?#I4OwwYwUP89zx@!mL!H;e9mrxmr+fym{kY8RlAC5A zwLymuSw$|LS3MOGEf{!Jx@%=TnadeCT9vU?;gyP`O+_)=CpV@n2z7~0;)AwJ}eap2#_EOg(f28rGCbJyKV|sksA!cm= z>jEf{tY9{8`KGt;55mg9qfGTxc5xjhbm7J?12Pg)V$U(bTFVX?gfC9s8&st&)`6!x z>i}4hj}>DFexGUP4gV%G0n5OEx$Tj0;&|&a8)eYI08zxM5CR2b@I zjK-a1LKkgu1#qh3=@m<^_MXEYow{1CIQ4^oG(35KIjKaqBcjfO=ZddLpgh8h5gb?f zRdm$ZVXe00XIUv?V#6&Z4DARDPMaT+X^&8@tc~!7iB1RHOJ|WS5F}#p~)+}Th zm}DOy&LXs#33O*dBNwCQh?rG-=d$i_8S6|H$zE0mae<5+g?g@z@8DXlzy{IBM>!1D z>}Cp!?XM7EiZP}QgHMhVF0sO-ZY8knubcKZDWc1nf-FHKnL zyu+T%cyJyX^H;vSZ{C=RJ}nER?nCvr)=`W%4BgsvhY%h^XIcZiK?k?@aAl@^d@p&D znzJC0fHzRAmsTVskDU7ilkA42WgKs0Dw}@V`U>M8O6%a)I!vS^I#K4tzkq+L3utjD z1|@~GitLtl6*${;R!_P3p1&w|o_$e=4wwlA!!;sdG2 zperjvag870DQ6-_u-X%BImSL~D<80Df?CDL_`cK}m>N}j#LQ;pRw?9`YWZucY&iiB60BtQRZGIm z%-gP|wZ@43@iFm2^9r$=@(Ek_d-bvSHzLL%b#@At>yJd+(R?0W%N~G1UkiWk>TaO9@vKn@Y!6*%3js&De1fi|NGlgf0zsdT(__ zKjy>McD^q=mP_Ab)WeY4wMkTU0la?hc=cp7! zmN8h9KDV*EXinJgJMBEc`y864(I9LYC#sS=ak$902~!K%^F9loW5$XRp_H-_0{)PDMi^)3$B^Q;jgq?2bv=JNe&c!rK-W` zH_9pXa%=g9KP-sp5`SrHxmpjY<>%&EZ%p*wrN&`ZzrR8Fy{^Z_uHp`rtjEk?S%$I~ z(rO#U!8~B>huIjJh~!H2s-gaDNqEHZOCJqVDg$~Gc{cT3SM)$;x-A_k*e%ZwZa-}p z%%=#1FvUHhkV!hmpRXu`aZyO=k+;=lHA4$%*>FjuR$CGolLy+F5)V7JvSJ^8zM*7qMJ-qr85f@Lny&*Y0WqAGoF-5~tvWdYS1BC2&l%=9 zD`171Yo2f$8x6dI%k9UXZV)a{4jG@lwckcpSgMr2g`hkI+fq);BNRW9nmJN)YDB$g zOFKzh%4T=J6SNoIpg3{cWTikZfrP7sEvlWzIHE*tG|Bd>d`R3?Zl0C8>>`LZ-tUPX z?({f^A)KuWF{eYXVYZ5Mq0u<4M^@`?m)k3( zxRY-k*-u`IQ$Q3YG3m7s($mZ{c#%8S&-#L#~qh!nVX+FKB?=05_z0Kzz z93*xEcIthRqVuL}adb4t4quy)(B-oS%@um?SnR_JNxYqaPu^W3t46Kv(~l;( zS1*f|ze6Zcn#+tPQ$9?Vo-g^u^q6KIOnQ|QEonO?-S!ua(nere{$(^P*n2qQJ$cV~u5d}VR029(Q$CiTYK=S?G5$?R;2sgo>Pq1E`TrNWWl6n$KQT{6;F zZi3shEVe9mKEg4vNb8}yZkSPS9`0_&$(-BbT}OM2QhFq8<&%?Bh{X-bT1qQ^jpcBH zB+mf5^>ow}a(FZc=`T#kzDXD}*;W&}5(Qt;5{|7W^Rco>o8FhK@{*HB}b9JO%Lds#ANk zWj1}pYI4j=Dg4sryp>UZQC4d^3M!X7D%_lDs(O>*XjL1x)eJh0LRi`@7G{?=_PHgz_F9 z9Rfx2JC=+${d5W_yQIJQ)HM-DDhT2CkQrH|hNl3hWfSGx`-Zb)l^r=<$wd$Qd#b8c zt175SBhVMhW)j6xl|e?g<3jl$`8z0`TrwJK)UCkbp`nsk`Byr>kq_J--UkAqOYxJHaMDT2T#jo*V8XKv zPA{rqb74N?!7T|;*39l5~t&juMC0|O=-O{6#h*f`IESX zIp{d(9+Pfa*kJ-RV~u+yf2svGyfU}eP0b((=->Pl6a6+Dq5x_tx#CRHC%1H-O%0n> zH%DJTg!t&ysR94Ib9D#2)|pMA>C7w_-qq9oXDckwXTi32EiBW#fo(Iv&UW>NzfZfi z0tTgK>%9;QmnVSxwofV4@8L!l{I$LhHUUCuvf{pt5lw!;q_tX71&mQA!ZiDjxx%5( z@AC~tw>l9Ivq1H*#kVQQL~S*zH$`ju66Ip{V%*3<&f5BOkNSWw7h$j-Jq$h;8*67% zqu9saAd|Z5PNrP)vAb6UD50uckP%bA`;6Buodz8jS}LDEfAnt}Fr$`PGrDm5?yf_7 z&cv?GwJiR?y{MF*TH_pPRjOLwQnlt=0Vn6%iQ>g$NBW?xzIml_gda>I7GE4J5@PFi zTWh$H8j0w-WVPMToO+Vdkr#89VA7)e(Q%AXYFBQ|eaDnV`MG(;u(O7og;$Ue=D43Q zD9i9d9geN2pUJqNRlghxE#KIE!N(LaSqf)ht^`CeWDCVsx=tN6x=UC{9CU3WZ4+Z9 zm)cRMC}LMH&n-~#W884kEy0ZKD=uRh+OfmsOw@n?J6%`pK2NV+z8N$HF*MLlWr$av zI7&|fOQIMr5meNqW-d02i8p#CJ!UTZ79ze#>%G*Z?aBTV`z)HZsQ5UUCS5Ov;jO({ z<~ossfhoBfn3&Oe#42WzTE|Lgu!s?38b-?Y;v~#%GwJWf(Zq5GkY%3ptG9iqBzhNu zYlnQXS@d#mu1`lWv~h$nG%23lzs$ZFbLeaUXDoN1(Fmp;aaCLB*r(8qH-J$mm4hj* zhOnToB}-fs>#m50v_PC=Lua1y>*|;Dw5nlyW_6yxM#x_~%U@4%rhr8=0Lhhii zHT^XrNI(f6L5Wzft9kF&C9F}!B}3qT`Ny0-zgC{FhrcvssB!NwY|lL>Lo#p&iR}T) z?4UZQ()n-u#>&_@+p11J@xn-^hU&hG)i}ttnyVh{v)b}d=+epzbfNiI7;EXz=(aU{ zuPV-J^q=9LU?d0C-=?uYz%v+r@QSoN97IXTLUvWX z-vT#7a@`!7<2l#}>?@FOGMf)~zM6%v+c??x-Sb-t6Vs(Zm3*SC*;}lEIv+mzfv4T^ zu+-;=!j8CAS0GSQQQL?|gYJvtU&bR39lHGsi6S0K&!~xJEH80cMREO$j7iWMrCJelBeuRW<3KEX@B;6ps z*2^q3E+%B^C#Rtb($-K3C=2ejCys^_K4u~gEyS*Kqvk{XsEFeAG!Zc5%{b(I&kvBs zo(C6vUe~XMp}QND{oVB63El07D4jfUH0*S8X~X-JO$+aJBJQiYb|hoV+o0#3I5iiX z5hgd+dR_i!LpQN_496e8r!Q-nqw2b`(udXee+A+-@C#YoCO&rTO@E!THlBiB9O`dE z%uFeF>A4E{J13X08!t*H@%0S9pH3IokeW4_ovNTVp|XVH+473LJWDmwl^bloTQ6Uu zS#{N+p=MTV%Nmc5`x391)J&}R>)I}Dy@u2?t7~3z+6r(x;@~D&vp0_Ue+K#S>4K>f zKZ0Mvxm>H<<$DIY)pONWmE8_bE%iL=*Ea$SA)0_2fy|=lj&he7)|YxwDILl z{Xseo71_Qrp4l7owGH%K8uc}Xc*OaaHFbV6J|v;VYM{%{gZNt$cr^#dTrIL@fF4<_ zidTIelgHwHW$c;1(CJrS1YC3U1{@R8BJWzpia)IV^68z4J(Ye1N{@~n?k^fm8*NaB zayHppH1Ppf`gQ4dPlI`zd0ByZ(#S*yF0dr3#z7og67$*LLZ`DnK5>Je-Purg6p@8? z*9ZHWMLOoXP&(R8zjfr26>zrs#?&)Eru%q)T_u-$_szyHMklE4Gt$uHUHh7~`3vjn-P?^5Ci|)8uQNYwW`25)@sp^^icBsB4x?_HdB8zHkN-4I0p)j~ z%x-wx9-N_PfqxA4pU9rU`KYmb(4Gw1G`+gMuVREZA*YQ$-Eyuy2pCqC%YMicA-Xft z^@Pm2+wYNOgKs%4wpq%~M_d|9v-4?gc;e}k>^nh`-hchIforGWPCZ52I{`}pKRQ8+ zVE5);_(QVVSYkh+gmV>5j6F@8U?bvY$z#)axIM(@EZDxFq-bqu73{2NlU7 zSsp(%V+`+kn8R?^)Z~TY7sipMb{XRLed}!>n}&OI2W+^zo+G#+su&vyV^J%m@8i8w zY(Bn92Atk3_QfAp+x9!5ltEM>(`fLg12xvd_m6yl23`ecqG;VpVx8H)lgg=)?dXac z>Zp9nt~nEOA=c1E0IYg@hya+=5Uy4<*n0~eAzSdctiv3!ZM^Xid#%XtTuIXtg+{}i zLNi!-@I#qp@K35f;2`%97TkW|Ea<TByMQU(0B-z#@ zv+BSEooNV~4m1Nb4m2Ab$(OeXhzB(#GWAtC(BX24v1nDb8KbE&Q4cuo_N zZ!$Xki=4|5Qhj2(Re)z9l1i$tjHIqHnu~}$lfYK>TSJGM_4r8^P{j<|IMsGGLES=p zbwR@aZCKMT%_P?+0R&8H-Y4RCwh?s@6W-*RUMnn_H(qs&T) z(P9}{@d#btO@_KTQh>!$t$xki*HlQ)j5HHba5j4XT@S1s;)L5oqe^m4o4T5bICNtK z8@m1i!lB={2o;!)8pjmawBFpJAp;PN*@O$%A91`yL>-Q2(zSR{4zW`C1{kF!Byih0 z&_?TqkIm@2QP3x-!$ET2^I7i*zWNxU2KgG&(7x@^zD*nCHvSOf_$_h*tq`3qT&l<> zlH%}Nj~JR6m7vAm=w9qVfXfC%ti|V7>4vF28woIJNpz1F`z=uv?yjq}(~rJ5WRLaA zf>d16$1)2@bpI8(fAqmLo=R)RvndnjjQ^VhPPEiu0j??DvOS8ijF7Kh5L0^u&}zbh zl&mO!sJI>VF;wgn^emJ;U9inlbj|X1|M$!etfYeyzE28Ae1nH|*ReAxll@-?j`0fe z`wF;n!~2S@bbqr=8xVH&1)k$mO1Z@^%FburmC<5nP?yKE8xtr>ywuew?Dz=}joCI# zIx)I7PucfQANmx^IO1q&s?EZ&IhpCYy3Mc%JL?v$(V}a%%ok#qlcYNu;}Z9Kq`0qN zm@r)Dqn$DSZ&ood@~@@8zdt(?2R^4NZG8$->HRku6KOCUfL5;7K}~IW_-=OV^YvWL zGwlhR`PL!Y&(X<&IvnKub^;#$E2bZpm|LJn(BxPPi+_aY#g6elPCqW>_`!GoPM#vs zt(rc$1-m}QeXoxT{2}pc69;&B{B({)zx?`@Gqoo221) zMp&M|2=^(Nnd3iA+EC9OPum#&n=QV(3wA-dm7*B?uYUH@sa2bDz%GY@hpufW^>xfX zpz#X$i)Rwsz7{7FBf}Y&3)y@T_r2kEGTN4VSUvMqY6v5MJ5yOfa~OEa=gEvL6WyEY z=+iQJJ7T046XNU{#q9R33wzc%vG~}7X>v8nqm!cwv+ccjK-JdPQ_uAzPNIuToG-NU zeC0Et{x7DPaQ)3OlodZOvwc5WiR)h4rrY;LE0c z`$WxsgjeD#cl4L;Nr1P9HhltkdL>6O5t#O`g?2LZNxmlWaB->su7?rOGeg#-$s3=a z_jfhhZWsEY4Ew-rfNNYsSkB%qBdn=2J~U}fR#8?q%?IH6>_5%z?rK`&O(@NSl+ZpH zEvoOW)a+;Cy$Jr!3C z{6-k^3H+g|RNc^M)wIGjSfaNmOm7&vB#@>BJv8Dx;>vr2` z-3x&_S^GP?yVm=jUj}_r`x=HT5n~*ltJ)3Ckj;Qa?B&H#*OG8-uoGmJXmM1!NO)`O zI^Plr6GfB5f+EHr1=)Inc2vW!)p09=|DHc&@EE1f1IhRCd|ai9p3Y6qJz46R5z>z9 zju!r*s*iD`Db12B$QkiyCYcTF|!y_Ak9kCGsbTIq0 zPuklgJTCPNju-x@7*BV|i!mqO>Do*!TSX%E{aJbS9dcFMm~6@sj=Qru?a4fmBhbg| z`V%hp^?C$Vqbf%scTrHYgtJbyD(#7q1KX}uKDx#|-LxP=1o2`(NI&?Jpl+e}8vj%Y z;(n+Ixqhqx*7uUkOTfyZsm9UipdaQTk&x!2 zl#6SVn883~C&(-rktx0i5R{McF4cm!mWpL;Ge*Hsfn@kLH*akWezZYgyZD!N5L{=$ zs2MPcIR{=NF!;uVgU2#eyv1$E#|_5~%$(?L*`SvZ@sb6WXxk0Qr*m_UlmdHpK8aLnygj>+7Bb3O`7VD4gI0Tr4BO zEQ)ciW1l--N@XAb-+@)7#N2*_=L&?LQlZT8BTyS-_XojL>z?Lw0Sj3W#4NQckU-0{ zv-8)EX>;oieA68sgl}VCL(H|4BZ`0~#w9E9EUy^`b$Fp8!^17zpQ8=Y;Y1)7Sv+@!a*W(~}Wq z*NxUCM5B6QscR0Sv4TV{7d!9O2hkY=}DH95{@_`P3h zb_dVpOuiIT_!;fBxB;3ao)#xM$-`nwX0CiYo?7hK9T8dxJ4XxU?$)%vsu=KYflX)4 zNgB`*cD@>g(-5m)TWB%Iu%k+8jptR*BV`(3q9o$Ld60T1S5B!1nmglpGfh(aX3st{ zM(I{&`Ni6=H{1xDabdnBdCw0JS{Wxqv2YCQ$<|7#a>4|*!2(@Sel1X6cP0ds=<0aH zh9H1~^J(5vR6sAx05q~e0vjM68&npa_Ws@NvAaYGnWtAyw0b9@LejY`C+lqPe|#DD zmzDrpvx~KYQkGeV!F89rG4PjGic)b<3X)-eOAXC8$2B5KWd(|D2VU!<(1mpG$u?#I zi>@+fd#D4dfpbCA*aYEgintAU?o#}Kngb{?HNy-?<^5z0XQ_Ll+a4aSe_ZHKGD=rUI0#=V3pg=CEiIP#XOK6qu5**d+z-^ zb^;@EHSJH}A!PAA8A!M~Yze3H#Vx*QV<-4LX*u5jz9i5DZWo!AAxUCez=bUb2#c;o zC7i)nIJX%Ml*=fVgs%mX=q&;ou#Z)fLB-V*QVFF4aGNrRbI)^JfM;Q$B_xTT%47lz zY$KF`7J=e!|BUGk*^`4Zcmr((Mz-Unt+o9VA zO01km7*w`j-<;?Sq4CfZBSHCCFP>a2s|vf|QgKYJ)6g_rdf}fjtg0aa-iE>2Ht^YDt(ht$1wlbhv^2)4Dh#lKKDW{2$k0GKxJZQDBy3` ze#--OY^ZanZKWeiINs-%f$Eq&tb_J1trLJ~G0H-?6?gFfc9lUvYJLqJU#5nIh+)x_ z&siAHF^9n}X_$=M5mCZC-h0lpINSo@WU*liT>w5

nAtkd~qz4eF~}hKhyb$R4@7 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�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

OI8EKQOoq>$UlfH(qlAjTp&33qv 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.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%0At5^`a@yb$%Ep`l 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 A*L| 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

h}Uct#FMv@ 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%0AHaN!Pjk&5ZwoqQluk&N@SzyS`_48 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

7f55&VGAp+v6z<-vu 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�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

VQSFFxDt1FLBhXLT$AF zKbLdWFUWQ9WZumZ_8@O}YDy|j#6!}xa&*e`oObMWs3((R#I87ppc%)nTJYgiB8<)E z=I;j=y7&_FD0R~vc0B&VPBK_{v3((H@r}5)2kf^IF;csN2ebm@QEW3b;sHy)Fn#HBVTToKpqGH{uLf-m*NSdVixk3mD5>0rDUw+-Cz|L;ym<_=%5fd?oVv(=NL2 zRNv*G{SMvTotYLgjix#yJ04kBKX61rzxza*Qm)?w&C_Z-{S8ku({Zx$#H~+B^jqQf zMi^3kTt7=gZZPrVF`7t;yFX4TH-*eZSu<*ucveB0>g}a00=RQ z)$hMhqZrpJ0s%^%x#i<`Jn03B`VDcG9Lmov+@KW7hb_fM>`m{5&q@r6mtX6oU5v}- z2C(#NWoR3aW;LL*sENt(YC|+jc2nu@y?bZfW7Ydxn(gN{RBo)5u1kJlUoM)X{Dl}T z^7ELiP~|Mus}EVG=tau(C)(K6djKj(l~Z(Pfwy92AQq5w32WYO?XhL1X_K45sg+!11vb6<7dgFrQINwijG!PBy#M_$R$99A71D@@+F_=RyD> z+Hd4aD$^>GHRK#GqQ$=0!Ad>Iv%IO5XWR#F^btc&e|Atmf120d!NlbK0{iNc^A&D5 z7k3|#cK&{chEi&$G5>f~E=R-VAa^kX8+t0N7LW@BebVdWUks}gB>z!?6aYQ}k=6pB z%A8gFd2aYuo2N3#9IFsA;6nU$=Mtkk51}WkrQrDDSHISEz^E1+J#lG%4QX!4V z<)=$T0;1g~PS(6AFaClv&pC{XDthT{aR7euwI7T->@+&v&HYfxD~;(sI~zo({iV3Y z1-xc-dhjdHCI!?GL2yXZdA-K!X4Zo;^!y6Yp3HPrr1x@N2Va21V@L`8?$!IO{`dqD(aa!}6U zx3}cqq~23CeqpEL-b8@@1^G7tdiWB}|LT-fTOP?gh5>;t+psYZ&Mf{=0L1}p{EvPB z(~+#=raXGU;-W&`M?c3*0&$Zn+iHVwVaP>A3DP1<#7}xu5WuzMGYS|ocoGl%y>SUr zdEUjP*wVy(XDx=~j52!~-OVMEfUR!V)b6S6$TemdYP!1zTQb z_y9&g$`LCF#R zixK%3hd;fB&3A~a`auW&mGqkf+WKlcagGz1^bEMU=ib6hoaf~MK%HaXeQdG@XiOE;81MW1IKic{-KQLmLKdT>K$PN z1KY7B2-{)=AVd~x7`_STg?^(<+RG5R`zEb{d~`JVds<&gACH*hi6CwuK|{mvR{IdK7edwlLOB)6tU7iCMU5cVD{mx#?s2q@G8uWoAL=sFlwq(#5uitclj-M}lvV3u^NTL6IKPtZKU{ zyc}s*kJnCvXZ91N<48}Z*5}-Wz<0dW>1!HeE=Jto{SrP$%~Z=r-e7-7T$9P!1N1@{ z=j5UDz5O=I*!|Di`U8CHT-pmq4p}($_#zRa>e%@T+5^|!*8?H}l!>(?x2Tq+)E!EU zI+^#?Hz!+l+DbQ0m)1n*Gq}U7OwA{YOew*HWq~FzsR)?6mwb1`URZP3b#{$ z5P-AVhujjD*0Zs5>mC5FC#^9!8E%QGQOAR!^SugE&DrW2#dnDd^LLK!)34)Karx%p zie7wvbn(f-j-QuDI?)4pUL8(=k9_VE3`Z@YBD2>&&{5HDDXR$bO#s=UM2@M-#Rb56Oj|o@r z#N3XXP7fnnC6qRXplmLzy&;qOM|l$j9s0O3&wTx=Y5Xc$j9bIM==iaQ=5@wXEc=!L z*xTs-!rTJc0qR9P`JY8ZQHi7JgPbBNuU+A8AK84vA176af+cG~5D0xxsbMfP^}!Tt zaai>n-C?5b7vX!l!-SPX7nf?qo?BQJhKT6>05q+eNk=Edz0yss<;!O{RVN-JWIkaAW#s zN162QGwCpUVEt@+1#;H43xp@yb-#pFI@u)E)Z$k)R#W39MAL!hq5Age%VTN9y^88KjJn<#2WQY2g2Ps6Ww25l`aXd zT679Q4t=nsBAiLTI#V^!)7=kZhW=AdBCqotZ=j+dA>tC(Yvj{oy!cQNz6w!>SJrFL zzV9ZF8Luu&-$G+Q9F3fjkbUL+RQkf#hkI)J98O6E;+$h*r2WE!husSY)Qg#Hk#o*G zSJh3{T4NRNd=1IAIq=(`li7kQB&O3Nchc&Fv-X}(FX zN!Cy%Vmt$1*34WVmb6eC_U7$5A028;TZ=rZZxshmrWO2N zwnCI-O<#|oh$iY02$-6XYO#jy%REdY2Szf@fh-6ITu9sE&fAl@9- zeJ{Maw${A>+S}2f3x)pL*$taYAv+(qqLi|Opa$=u^zPnXiX zD{kf=5k6Xdeu5rdqOq6g7YjLMItr1o{{0`TXB@Mz1him_rH@V&q=VE8CeaPAn*p#U zk-W;c8A*HP#iZ&2-5?|DAA3)l3nr{OLIv|^Rvzi%wa1Cp-b zZ5j*?I1ltS!;8|VB#zyxA_trDJx~6%yLz(~Xo18g0Xc5bm(KgzDH#D}fL*{y1?~VO z<40^ZxLeC6koe;pBKg=Rbr&q+HT>+4TBr=|;x@4knjZ_#i)Suwa!$14v=47i{_TCn zyCWIr%HJqU$Jtb1hYCE8CAWUMX{o7A8=w96Z+)(ZjST;6Gpzo*(Pee4pDMEnOUaDQ z6#j$!C~fp{eUh~e83BHFR1kIgB*pd>c2F`hgE#jOwL1iyl-192j@yVMMs<(Qqd#Y; zn_;lNO0c}cm5(3P{egUgA8WrIM@+T0vL(OqVo>lvjcYeJAyI4E{|L$TG(q~+s_#KI zpbmRFbaeLUm@m%_ zFrW0W#2LhGa=4jzem>EFeqn_S(c(wBxX?Lsh~VlOl1X&rjR+ZvwaDfZq#X1gqFaIO z!9LPy03HEgZGPsILKcu;Lk09WH&;uOVMc3ju8nF;TK!Ks>D$n}GUXmscfs$P#g(n`34W_(pF>zreaD z+*N`?i~|`EBjh{#h6EZOQXrkVJfx+1;5>MFb}eO^8wKe^Zi1i3!oHHJKIL|?YBJ2Y zcati9$)4(clFE(T#Q5r~)Jx;ysJQ?x_}nUQgf9kR7b(Atz3&dU`*aDYeDxLGnM~pU zRG$H*M_

+rD7D1hI1DPuyX(LGhh)Yy61Xtru|$ahHjv0P3deLYuSt7_1UnMopxO zOb9$oD-g>awUMj1z3Np$-#p^+_6au>jEZd_gEg;*nEQ^u=&BfrON}F|rPv(*{<>L4EuUe+FcLzs>@ln_${V!09TrlKicC@VLKZttU8L zEP$EA2imfvFC32_xvK>L4Im69^eQUa5Ia3<6jyBbsuh1A*S( z7wMTq{v$NM9rurt)95LS#Tc%?HVa2*IRD<$BNm^WS^U|M;Sc+W{J2i|dIuz-9FloA zc9oYlOt?$l4)|zKL*hjwupuO>I6|m+5}26s;A>w%cGxV6GWLFt_K8pzA!n1a}WmI`NiU z!+mgvP=lIeO3Ex?Siyui6X9Mvq5za6eJ2V*W4&#O?LXn*F7eDYH6~4@+shC5n|NYY zjhV>pd9tp+ed?7ZOj66mXunOH1E5!o0PndwNv)_c>kWZm5LiFqr>bhP1d?F}C5~zf z15!93uc2}RDLs9Y#gqB^)%W`Ku%UZfDo1_2*+{_L`@$xuCoKLZfFCh%X%iupo0i5& zbQJ*90w0M`bYZEFV43$)`Zzp1atE)zR3tf;*8o?~8rVr)QQEXS5%HhkKHmtjb~>c7 z#@tz^YDDukqFIXF{i?74#P>0cA!zQ$e9qSMNzg zNCKN9Cnis=!5|HxOOsdTv<(d-fSB246XN?s`oYHl2=UsW(_# z!)wAV0o>J|Rb2%pu%a_YtL;m4?tPox-f9Be$juOa67E;BYpw{M3J9=9R?z}v1MUoa zb}=#*<`)-e)g9WwB$aUzbrk-tWUq?lJ8Ya@e+^5L2WPJ4Mo(I9jzQE0Gbt4D9|pma z*Nw_+7mKp5(i40q(8KMbHbf5dLp3~<@X?z`f`bsmQ4( zwucC$I5U0n(-)RhkN`i91x|}gBW7%39f0Evy&otN{{D;WJvLANYm}s|;NeYbYqli) zKtn-mUec4pQ}eHjqsV0kLs{){|NT8U##YMJt-yrzfs_Z*Cw`+TiAwYs&Ze*tw5{~6 zkyI+-yMAbV0Ts`ad~fX}ZXps&EFQbhZqn&h<>&Zs9ASr9`Lus;d&?G%K?4eg5#u|1~ zFG02B$zS><^=AL}mPpY~x^EsJU!8;b_zaeLFJ@zqu%;zYq3=Z|yV=fZh!qQ%z@w8G z!d4>q3DZ+uhaBuTQOnyzpF5lD^9{tocm^D*@Ervj#7w0A695ER93u!kDUkk-Pzv^< z&oHc&Rj!^or(!Q;+ zn73BvH3vmir8%4mN_>-(aqH*!toco?9VB)lJl&Qr#P@S;_+1I#BM7sOyr`{S_hb6a zb5}k$pD&!O6^Op(8<_h3D{ne~mn)?!f1e|l|6$yhq&hwY4Z)Oi9aS&j{%FdtN@5eo z&y;sPf@EEyXH(93Yg)=^l6C|;2rwkJmzDddk+%%J$z6C4X#Jt4kPs1gi>^4WaC$Xg z%hY3cid=fEk+Axzv{~ma+xmewY;CZx30yq-$d>P=(mhQwvl2EEOzK`8Nu|86M-Bs2 zLl)agP7SsBT*XQmjJ^%>6>k{8=Dq}fI$I#oYd#F)FWa)5L$#6;_Zm_YNj z4OCfnOc1ec%lIfQ!uP7{>PTzM;na^LcJfcjc|rF5Eww%m$-48uLb~!d7j<$05}18k zDo~mShv3SzXYuh;>5McvE}1s6e!S{}`SEMnl}5t@s5%bFOPGEipO%msHJp<_}76N{%^naelTirV$xgQ~9J$4W|Wka4gb7C-_}8;i@wk#jitX?}6j zIQVyQuEDc)C&>B2pC7{rVmG-sfj{`c*aCN7Sd%<}V=mZ(Sx3%1hOpu02l+=3aa}q9 zL9rUZ{T{uw&;Tt+8PJqk(0S-V9JaI-cS1QKG#H*#L}3$IWLQ}fVr@?x=WL@TceT8f zy~oiHe)X*e56rZ&BwG?61XEAJLB{3^#5woS7?x#2P~;2!tqDf zGEtkZrJOxSV3Rn15FmF02;d1OdC^d9(I~)+wZd)yR3Dd307?qlfznfeMuv-%M)d4& zI(8DbTD7C_*n%(g-m#;P&0qjtU(boFJQQQe(^=;oRID<{3UrdyD3SW9Ab%ObL=si! z$>d#u+*0rb;mwOCx7<~IFC)AOdE5Xh24yelA~@_QWnO#?BBIsdY(cn)&WRg&D0Ks8 zyIF{eP?rT|g9vFBVIEticoq!nQw(!c5JxJG&V7!P3%P4oK}`VCj=& z^srm1953H}$j{!lpG=?9*1%~%zG8lFTbz(W;1Ymz3TEoyB;0bC*5M(oSZ|@BexBz| zR~Ny_(e80la*AiC)5+vBWED_YlzOqgO5iY`v|K2;#^WPPK}jwovudUTmaK^Q%&~;P z4L7K%zOiuQqh*Ln69IHn6G0w;uWvF1Se%-ujRtV}T9SbPAnzF*K;xwpl!JWj^i!h? zz_sgrWFQ~S*c})DT(s(nVAT~!l?$fA<;M`W6_OA2;?U%{BA3?+P#T31w(^A&Y%U|J z{O8C_xXL@q!(yy0K(C)7@R-h|Ql;Nj%Usggz1m@3H1DmyxQ86GfZvJ1QBOjA9ERmW5is?!iWTwqx!S=z!#lYUw@oYyC?zJw>k>AmyLce z2w!r416h4B2fP3*i&B-q;rvbH=!%CH+~j>zD;fL zJIiSZs&scBS3w>L@tr3>c@`lB?*f|0fg+hDU&Xm~!&KK?+64d`wNH+R4dF_{uL4MbM7m{90r5V#eW+#XfnBJ@uBnIngT< zJ5kn~dz>bQ7(Q5NvAsMV6DCso0E;0gDR+p8#swKuMZV-SfIWwCEG%xYT7Zvkc>#gr zB{c!Zk71cm<XJ_)#h84L^UR|-uQbT$lO=f)JX#8x1SQ%ivf13nmY$=ZmqjcaTJJ>Gq~42)aLL` zlRBWZ@ZS_odigSapgQl;Wk^@ZB17r&E%f^JTafj~_FY9o`O>(>m4jP=)V(|!>I42P z8S+m?AnQ66YoM37Irgt5kSf&Vzj^|go87vbnj_UDY5i7Aa7ie;jwPqs6COwEWHcGG z1Ni5sNr^0K(%Gv>1HYOpG7$}+koO!d`*R$J&B=yj{J(B3qz352GW&yBGa z^^Hxu=h&*3c1MoGhZ|4|B*6LHV{>zfeCpUJ{Joxag}>V#98kOgOX=5-$XH>&-(AXm ztQ-ve!tx-MG&AXbLrF}B{0q8b*MiPEVgpk%~%$Jev#t)i(_WKYLfGYOO* zoD37CB2oOe2yDj+D$Ft*g7|98`L*V?dPac_k$0Ey-N0O@*qhwsKWmnL0y78V$0wj`D^|$h%*A^vGh0H4# zh&j041V%KWIW*z$6CurRGIG=&A#;CkQg1pzyd`Bz#K^00ND20rhdvPYo^83B7wVBK zGZL+Jkv25?OJ*+`8Frf&7dhyoA{h1@4a$CKW=w-U@EQTpa5|d|j$CD79~UvgA;G(c zWMNBG15e#H$Rz(hL)rKUTxLo3bn3SXBr*=@&F1jI@pOFn!!Z5X*aLYTbXMWhX2S*>H?_(=$|-84b;D0RuRy@dULQ@N;^ooac>_2`kT?{Lz2uV z6u+;&R8Vj(w^)pSp=MFbnCWs0?z(B&L6IKSny;2Uq~J4>f8CZ^ zii7`t>*kEZFRQo|s8 z9T50qa*Z8F^l9Mc=DI4!Xh;DG65+srv=C4{bcICXhwuSuD6+$d_>W{rA&VOWT$>(PYTQsEWxgW0*)a;WR@V z>1|GELRfLePdzvoo+wCHAZ8I{D=>w^ zIGt0&^#TC}dxp=*c2lv%K+=f~<)llogQz^iqR&)pl{W1gReK-!P0<3Nn#yqsuq~(g zg_{R(#tHG2y#6?cF#>U39BoBHcW!9$d`Cx0HPbc=UR+?idhBU_ISO_%|NHHv(=Ir< zmUUnFsbmA^!`7h&!me5B0SZRn`^nA$vHgK7#(!{zn;O z7TqcXZlBMUI1Ii?#dmU>)801pw0WU-g?Q1TSPdaA!=;(jvRT+JER{3I*T(Ox&g z3wl;dfptfvsu|7D`V1&yeSoqY7cBrOk!mVR*_F<02doBvh~?JVied+Mrj+e8VjUIX|k>%Tw)=);RgmQx9aEQ`cX2wSN^ zb{|7(zByzK9yd%0*4B=a8SzKlq2$h*_^0E@d_=jaSFZ|jn*JA=871W=!yjIA?xM8C z%;jN6QDE+dPlW;yI150#=6H^}+uqHkX?BSU1TAKc;$Gl4MMf_H&x#Zu z#Kk{1(bn7k5BPxu zC5RV$S|#9Aq9ivg+hz5g8%~`h&j}pZ@MwKecC>hM)a)bw_C@L`rWm4wzUz&Q01mVgGdY`*x6o|aOo4<2LI}L2F8yR7~2iuGFuRY){lDd!4pppuSkvP zzYrxOW_Xg3#bfJ`f8Mq(R}?2oU68BIZ6@XL1LMPsftW4@HYj>C#%x(jT^r>=2R!zUc4y=es$j%)5SDV zF|Wb9C&DMRBv8#U7RKU;UGYd%rpRVg+{RaO1~l%TR+t9xfzB%aA_A?|MBi&*Dm2Mp za@&mPqHCOmAAlJ|T>xBX6&o+pyY6^gC=#*mK6+znYzN#NfWb&Yz?6*94mG67SQ% zMbz%(`>o&Z0P{q6aJ-`K?GBV^&(PTGI}Gq#bja-=46nhkJeUUC%KgVmJoyJ17y$rv zX2M3r*Cj1SkI?Jc&<}%vuH6WCcB;v0DU=5^ZhOr2^5)?Tb@ssL8NQROt!>(oYXxS( z62g(%c07qJUm;Cs+^C@wErt)}gW3Di*v$4Kad(y{ zN~343zIP;7boD>Ue*3)CO+ZX=5<)j)Q>7 z4=j!kVkCwyNc+1%YBrh;EW189rr}KIzdx(3n24qJ?%IoQpO;adRCjyTWrvBD+Z#Hc zczAR7$Y`#h>oBY5_#w40Go~uVTWpM4vF7vWs&bG^O_EYN{wQu;^1+PcKAU04UK)@* z*tU3$*hH?UX-{~|kGegEg?L_z<=9}K)DquU7UqA$o@^GsX^m!OpQ1fKD#wF&qBn_` z?gUoA*Gmh~hVP4zN!w8-V|y$eQckET4f&j@dV?Za`x|s-@3n0(SzeW-dP4)lYe27F znWyV}a!(EAOeS>{+Jg0%s}S&s1oieK8L>K<*}_bQc|>*D3{{2rig08Fw#;3OeZ4Sj zr@_?x3~h)VMVXt?Pba+;J;>#zJ!5>&VB8JAsbsgaeomy%Ep;xsU?NfpwQGT-H6E)L z*@B4M8NtijU0uiCv9=FeCo#JPuFSaH0CHe|ai&ddq`t(%wv}wI@z7cFfQr{%bY;uk z++NGD+x`JK*kS>0e@o%(dj-YgN>WOSDc;(-tCByUr?Mtn{Wz6lJfsP~i)EIX!9Gn& z01UQiL-Or9<}o2IaKrN{fXuhRYpJo$w}ibMSfSB%N>DM1iT6B$IScZ2*C~kp^~pP8 z`=8n*o~dr15#1jO{t0{6e^8(QmlDh}=w?ZVziPI<9TMyj666)yWl$py$RwCX^l~S3 z_kb-Q>g0Oy#HC=Y?V+E#kY!_(>km+?;}4qKR01m$hL113T3429DedZ{%RB1p>v)CZ zU~br%?ngf&|6+LgyIHR_#@-ZgDJC^{jV=x=Xrj6AJFA|?{ zGvx=3k5wPGX6;En!};FZ@PAEgR<39g$%2Ocb~+vq`;4XfBW}@$RHXUIyoqc(Dv@kL zQhfZ=CI$_eb~SL~cYi-i77fBm@q~8+IbmsBmWD)i)0wY?rvm68##21iNYdr4hyx_< z7TC>fYUQ<3z!mOBgb9G9A6HR8g~%y}f->H$OSDU)MW>p$6*iePBbWHG9C@E`ZKB@p-fT=$hNd)}#N@=g~-vHDLW4TH_=Z9HbsEh829_s54NzfT|&_tp^k+NQQ88*pBvrz+mN*VJ#toZ+Zd^u z`sF%8Fz!I?!D#7i1!e887*>WkP2|W3kROAwml4ejBtJq#D`6rx|I-cL`%iak$nU4+ z1kGLT4>hNO_&{%|eM*L1YWAkx)rJjoo?;(UsmkrD7u_ungH6>=fk9b?u`R-IgG>Jd zN!UDtKq7!vLqq*!cn*{Vm{f7+ zGe(@5nAdQtVp9kREb7S_sl(-^pdb`)sH5frmywmoA48=Wf?P&ldK1Vqq+1fapg#@*Jp%cUR9t z2nb+SMGj65tl5@>lYKX&$bo$j8jyH$f8Y{^TTrl{#bU#JX%jF+0JAXwf^ysW?2ID# z;ZY9=YHtyO@ydcFF@KRBiWtOp7l{KXVn`(S&m(3?6CO;Tc2_oVMcbFHyL+1z8Mxn4 zf_-FQ#|92pQG}~NVX|-)jJ;XV!NiPq(-cO(*rCGir=a)Sl)y=}-&Vtg1|RB1AG9rjU$H*m#5j<(`vrr4 zWa29OOA!e6$#U#UvG>WI{Sv}-Z$E%lCUF>HAB@4du0Vgoj_rK!JGY*=t~y|DjqllM z z70QM;#9`O*v+Kq2`_qf#x91#!0Asl0e*tI!awp)P@y0Uf?kskI`eEh{ZZ?939qIoc zdw<%{HkK_6qv!Me72sQ!mJWj0W|pJ!$yiBOrV3PQpn15$mO+UuIg$(^;QsA*4SSYM zNOhm*Jnwzq>JHYhwa2yBUh^XVcS7AdQi)e6pZEsy+3o@IDVn{DLDgsVF1CADaJRTi z+`gVnJ_*%wdTHlZHsFRb91vu}xE}%w0!5_qm zNQkqxpVYOw3$wq+F^1(7;J}>YNkAk=6dL4TU@w@Ge?eRoBDxQntO-;w6y|1g3{Y`A zKk+pLVP76Ap^yti8X{V|TiA!6eTNf!*L#7b&HhzCQ3tD^pof`);f2QQfF)|=_EDKz z^W1}sh}Obb`4^Jd(YDB9lN-2^%&ES3iQKw2x;1D6M%dcUTON^%W`vHCl1amvkjMkU z(qCILWKv<9opXH($`6JMe))@6J`F6A?y;@B7H8H|n4}+wZuy1Y8z1~)DzlvNlFtXr zG)R0MSfdXCPvB$P`%*$wJ~F{2aRH>ekCAsCk#@q8std7s*AbX6f@oCKZ1tX z`k=N0`INu42J(4?)=7l{t?|sabkFd{>~NV17qnEAPMAs#htbMEsy%*87wQvhACKm zXu4>XKPfL|0vj>CsEI9q3)tyQ7^$HyOnh&EZovX>F%Dv3;kKljjV0OFWc;=~gf21R2ZGnv zne8yfWR7Mz(i$hsRpuXB*bG#ZB?W)&(6&5#Tb%PU`8zfQ^rC%`wSGS8PyDyR~xPiYVOFW04EG<^A}Qr`fpu`g?JppNnIW= zP{WOlIRwR0@I+JssTM;%}BTR%%PQ!e(>JD)~``#Gh zNZ5F|rYcsiSxiwcABnndj6#r&`iVOv&iQ1#7sJC%f){Sz4aAsDH0~inErgE8=M;SE z8U@unHL?P})3l*c(b#rQvgTrGR82C0C}lT^(OOI2`BEgHEmm!WoegV2B8Hy0V*AxV zn6cKT;cAWe4DAU6GU((XV0bap4zy%H9mfJRn>F&spg7K2MixZY<{-9v2ix84{WW06 z<$MUGDC)@)*)w5Ib!+HMf$4sNeKc)rv#D*BW&&A5+M`7^Ih$sdR$t}J(jREF)2(W`~oEKchzdX)S2 zC$;{hW`=>D4svrdm3M5W20n=8ZYi6)rQB543)ig3Ot8mCb?$6Kf7qDJ2!o+!XG2$-I+ViJ=kCcIp0NeI^_1#IS)WK1i?XfB39VSs~FQjD%iGo*H< z?njDJ8~d#`Ri8&`PzhPqfPXZzOm^sTRE5Ikyn?pp15O*?Vr4yo-Ihj_`Q3zTcj`Ht zs}c(jM~#)J!c;ama#v#RFB+o62@GF>)qtg3-Cz{Kz<4kzhz^AmaTaYT`{v$S%KK#+ z&2XaV24`+M^wOiX8D;{Ug`fuKEB^+q>}P9hGenkM6o6h(Ohse-IC$zh@5e4}#njr0 z={L6`sU)zopePT{qg3i^X8@Y#hH|J!6kCHA@h+ls*#@A9Np!)k<#{j(W?F;^&uzPu zt?)vaoNnyy>}>6=iQC&=e_tk@SEmJZ<{K>!t!BduA(?~LCLDLs?2XW9g$Vk{b^eKzprw zUZO+De8j}h@v?9#K{UCjL3rB{u!YUdjp%W7wUTV*xrahiZ ziuMkAX#6lpM5F|h7&x=fVYS`{9?U6Rx$#a=#1!aQg=WAI$IvZ|dK`$j7TG7IW6G}J zvTJb7nTV9}(aWx&s`R-Zz~v`ozSHMX0$OjJU!o?A-hT1K7pi>rN%6@>xo3F5Jdd&~ zL*JBr^6~GL=-U&(beV`3or!qS*;n!V236465&eBdf8S#9_xML>%d$tNt5o*flh!9n zdf4xorZ?GZSF%ytp)Pm{(14>>uGmgqUn%b;a}MNsbq!7JWA@TE(UlC%lPJc40|nV; zK3zA>r)%ZX@P6}!G$=Nrg4opzKGQHFg+NdmeH2eHv_ z@*l>g;t#Aom#XUQopu0w$0sjR5wwzD;Zda4lh@B&uDT)H#qCq`t*-z`!{DhqA; zCnl7`8Ds=Gyvg~X{%tTHcT?}h*Y7TmF&f>51jr}BL3 zb^F`CX|$RBpgM?DN%mH8`nbhSHvfa4NDM!&nWCDHd<^iM+>o;?-=a{s8z+*lY%UfA?u)j4a3uBtqpzoq6H@kznu?p|Tn3u?P`5N@ zzWuB(4PMCMX}=C(C2TAMJp_&gy7`rlVc`6~8eRI$7SgmPC{%Hy=S-X= z3Q1@r(%z>~^u;*yY9G2-<=$7 zWhIGDwre=8+_Z8OD=dTl;}9AWp0}D%nqZCV3Yk zFt!M&*w~C5fYh=`iocek9BX?S@|L;u-Yp&R5Wk@px>jn2V`P_P-L*N5XRUfdk<$V+ zUjZF67@TvV)7%>sfofBgkgLz>=@Bpkd(0@~H--s2*i;nM)Td*SDEfrc@H8Grk1$st zM=ZnOV+lna!*FBKR~;mo%7XUDMDxF!+U&ODZHV6ep?MhnX-rD?cMs7YARS9d4v!rv z-(=bngfOL$NwU}~kOHqo zt!s@yh-C;Y2@gPhab${xD`lWUBJai5@W!*PsF8^Z;UoEMM7D>65n-6b|EGJgDX~1Wy>gZd5rZ-%N33``69T8 zt7q}K4Cp)BwC;n%e5G$pVMZ{P;*tpxoyv9xdoBell1~n1c3IRhr}B3>7h z<*k@3Z^dNNeJ59~1zDv0$dOxdXlx6c;VeWtzuApiL zv?xwPXtllc92y;N2-ri;|ahemP79_}WqzHi+J5DAOqw$5;2h~xqA7tB` zXDLQlMf{C&iNvSaIv^~=hgRV2^3yS2X! zwCjyACSYgTE+to3!>b*N%^%{U7OJKu!v*5pakfH51V{3@KQv2(+Q>!s(+Ddgl-z?;obHf~W#8=0j)8xG@f|E7*p)1l=yco{a2&zng6Iv-RqQWr6`2zf zA5*SLMHo7fNQ|A0!h+ANByZKxOEjic{0_B zWb+}WNClik`$yN%3xr|vy*BxhF!Fx$Xqe-QhViD^JUJP9vDS#-7LyuhOqz z7;}flz8}h$tnv*EX^o(jP5pPA*oLfvAVHnFRGVbdDUs}2tzOD$g;Bt{bh8-1MO3KG zlmgUdXkI)gBRw(X`P$mtD}oe`1_}uSS7L`jeX)q=pdlNpjD?LgRvgPp#n*A`*Tx8I zi8C}4+Tfe>R+GS-#elhE&V&ugh!BQdlEzB98?daZr0!9!1$r$;PZ}x48Rco^**E+P zYHj8~UR$_uBx)eDy~Ls@LNC{lz;F@JqURPDuez+5JA)CkYg9&wI?OZDDRqmSbWakDy{LNJjF=c81R2lvOESP+P*wFP@eG% zMgn%@z-ZiEL*0M% z$1IaC>FG$%gp#k%I|Y9nz#ee z&#^s4P=Dj2na;w76Kl_(QEuuwE)s<-(*z)pvN?GfXo$jm@D6u7@p`v41DGAc4md!! zf#2F2P}W;EuZK%DXsUq$k%C?wdgUksQGHAHD~%4;h)SRvp?9B=P*HOnA}k3^*#6c* zcXwwOm|ELKDZUm(6w~XxzqF13e~gE5xGzLw$aq<`cc7?|Y=*loZrjUmdFe37Mq!gaR_^a7tc`&>p4*;BE6PAxmx!Y2dqfojC z+o@790+(-FsQzIt6`x0fG+38yZ85``JUdh+#|VZm&T&LQBGaj#JayNW9$eP zf8Qh4aEyZ4D4S5MZQqPD4l-Neu#(Nh6>P1bCU``~C__-}s z!Pe2Ag7kxBtKQbt1_ClS^^CTiQ$T{yVf=zzs6(xJGlIAKJf<9j0RqGI10Hh@HThch zGM2WQ?n1wG>E?gi5C%$|OQXnyYoatOv>b5QshKU?lmh}PNho4FJ@>W#F&2D~v#)%` z2^UTQRw<=Xj1fB60@7B+;?bTNDp)vhfig&gLeWYhLVgx>4c!iOsRvL80vE+|D?Gli zJ%qNz=cUd&*|K(l8H-de(ytb_FU1=5%{3x#WwA`<_d^;BCmP4cfjsiGgpx*rWK16c zutg6-^{LaL5viGc8Bdk!4G7bko){IpV3IdGiqP<|JCL^HP9}!D>Ck2~z9eH+4sAvQ zKNu1j$Mx)+o@dJGjB+qYzcYgB577;W0pMs2<%eKiC1Lgl{z%WrFndn7q72^&i#NV` zIh|4ZoXg}zoR70aJbo2l7xUUKNr~oRMAp;SfM&&|I&j3@L|h3wHoAVAoXyWUzJYu& zNq{;Yo6ijOiKyW^A3gg*OPd{{T2OXrEG}LYRc$4WLh^@SJ(rSLasOx}i^wN$XLULS z(QrC4#>D1+V*2nJ#siXx3wQ)T{P;d|Z-)SoXVWk4*@SFZgT(^2Y+dxkAts~^R_ssl8!04EFk}}I4CpU+GN1{oJ^yu9(u7`j z7KN-+s91Fl8|9`ca(_0os&$K6Rk%Z{cnYr6*Kmsj$+46n|8)&((n9(ny%%X|WE4NQ zrPFA`P`dHjPZn}dx0pY+z%&NqWv&;aGH5Jde$7Z5NKDdYOKEUZa9``}lBUGGVW*RG zCk+%6A2v};I}|_hNXoB3(m+85pCW9xNo}A{nE0JDfnp>SF%ihWme~o8@s#BLHj&#B z5F}d|0f$0!bZ6k&Y=3EYlEWH!mz^P_2CKImR-v zGM2fg!AoozyetI%Z?4WSB#{RlTsj8uODAbkzAKYS`ek4#=`esY#!9ZE&Og4yXPxzW zz4N}a4zuKyYZND0hfenGxX0^2)OR1EbpI`|@+eDRk2)_p>$z15da;gmpPhAt+SzES zq?WQr@V#9%f1rTN<+c_}PrLZ7ecHu^d)o06!EI)Ht`B;)a%u89%a`Lm^W9%YDxJ_{;Ls`nvVBj<4Dd z%J{Nz?8ay6jEtXIbk?5|C&#lE46DaUI={b;8&9R8(LEIIg)EiAk#%aVLhIws8HN&y zO~a)j%rW{G$i;1;0eb=m#P9FFE7HcUNSE#klWaTC+E$ZnSqg6PQvjXc{*MKn?ma=L z``19n&>uLqw(o{;*5)*cAwX9CSHY_Le->Dc8elcL6Rg@NNVozX(6sOzdAVhBcbrHY z2W^ymUugU+ye5A(J$>Up42j*($^-Ie!-FaQjGmOA$%84&;L26q{UlZDn0iT3$mF6l zqbQh|Qf62?`Qu`pPO>)rhh`38veVybaXbq;$E;*nc}qVhA{ZCn>4akHbd}EH{!nNq zRzS*kf$2)Cm7C7G_zrKO(B{V?&Am>r(t#6s(Fqevie-4YptaEEX_}|C52Ddi8S}s> z{CAQ!%G=tLl7K`r|0=nXlr@w?&v+V$y*F?7p;&rYua z#q<%;t&P$~JT_ZSDgp-@o}Kav=M2qtF;^$&SOb--xaFK&2|IT>&6!r7Ca#4=6iMEE zl~_-G+=yNkdv?YW;mU;463z+5{$8fD+>qS7sF?pS$Eg-mEA@nZ6oQuFk{9}M59rmM zyG1l=E*+Zt=AHw&znj`QOoV^F4@IU2FN-pW5lGC(GDejDhe|uSIr2} z^fR-8%9g^$BG;DM{Ls|-P#B(w9jsCUmGB4_84=UmaOE}g%#bX#p#qGRL=~=LbHks) z{hwY;W``nrIiM6V1a2P%5+OY-OD~s6^bpuY0S+0Z=7NGp8DlpVXmrQyZp+!lGzAr+ zTndhErIA72-+p2jw)4kOY5NhaT=9*SQxkrB3uw1}8I@^}5e`9*WzT|?%xDkId+!Y^ zV?%h^3;bK;;DU_nUnDXO1nU1U|b2z6gEQAT@5MItBBC{0#`F*oIzQ0p@R(FBa^ zt%qv=BRq+81DVl)FkN$}W2r%&(Ka0BwJ&rIb*oPz(`Uqtv^Y)_uuZ=hj+t%dpxQ2%eo4T34IP(Ry=9 zTJLsq#~s|qAI_c;0m<^#`#vpOy;w$!??+E=?&3tKK-*vhP4 zP*6mbfO3isE72k~XRr0>yFXRSuciw(d?^8-GyotI08kPDlnMYQZPP&>U3Wl0X+eN& z9AKdI#VnSsFrd2m*dv`^Mo@s478JPlbn~DJMgdGUIZGhRfH>eXGN=?P5L~t=gx3z7 za5dq)b3j%oifDqfOa8qRhs5xMyDC%QFlmBAqHXBUxB(TCj-$(u#LhmWI}ZyHy@5TW zN0>}y#A^Q>$EPwL1l}balQ3SlvkFgFK^0wU^LXjqJaR~*vli0mObrjN&YGmrna|zA zuDbn#bI$4++7Shp?VX}eMX0q!O*a8L@QTV7dYOh$DI7}fXamkJ9b5)9yT;%{k2+GK zEfgKNR6ur$4_x`N(?v8XyOi)(c$M0sVmZIHlyI{xmu+orw2W>en6sYPg>52@O52Z? zgG4*6X3sqd;lH&2ID>^Z(KBUN)|@1TjKpq?Xto3@ni#0)QlO%VMnZC@XF(C5{oajE zs6xv%;-5)W1k(ruDPFK+iQd-JhpDt_n}Q(wX2ML>kJF)d5lw=L$V3d+iuc3%&!ZVM zItkL_=?S!J_)DLwu;CLz4Ht5*fNPp4)NyVyQ#DqF?#!`w4g;C`Isji4orh{}qjMP0 zIrQlQCt?~=m`CcnI+nSn@^Edf1Z@RYRT+Joh+IC-pe2imu?#agBu)z)!%Dh6nixHr zK#wL${$sVfAgjU%{`t!qyoj!$ekg7>s*{;sn3FVNVL~FuazRJjG^Agiyo*LxFO05U zKvyrc$_s0}BW(h%3Hr|3bGc9l2F~gcf?|8XKY(F+>xTW?>9*K?BlN;qWdt#rH@-us zdkNeMs_6#+8^9WYTSyizMGRC=*>X+S)>bb!$3>nDF4otL0{+cZ!289}JCCMN8N)kV zTkw8H@ID2U$Jt;i6Xeen$YUJKX>@LY{8WMbnG5n$UbQnA{e@b!$#4{%g=(`!XE4k& z=+-%cJdeQy_NlQzP|3*X)l>lcl95Xoydt(IlD5D_c&WF*_w<@-{H`rP!xLEgjD?XCiI-c*y@^Hc zF?t7Lk3PYLnzRyoTnfxn0IT{rGL{RjT7K(n-LeWo#fR%u7pBS-jcje(b z^p+fu#xaI+BR===tc%;vI#>=5jyue1Mr9X@8dV}HA{9fLC{-^ z4^*hn03P)N6~-!xx3pbit>Z>$PXcHwk!G4rH#vN339R?U1oiuoG~LEq>d2klXzRX~ z``z6EK?BEj>;<^Rn5S(G$NiSrr!mDj_!ZvM40Ak0G1V9VH9p_~sPTalku~0P41G-t zUl=^4kF0f8u>6hyE4f|{@`KjtB+-}lhau`7a`KP8y{#^h)mPT&IxpOTY;SE%=}2lj zpBM%AiL4jsD7EV#;_V_gKV_U0VdoZ zWZJ4*pvjy9%gBJkQSKW)_>`3)(+1Wx8|h{C0ep}fc*c?K%{=?sXGyymeDllJFcNtK7Ih6eKX*1X$Ht9SDf))FQ{eGEnNXQY?o zD-3XKY>HBEibQ0oNrF~^@JQD9TbgC>lTnghCWKjlYFz%3HG-`b{`%(d(er1gch>u@ zGM>l{Nd4xBlLcsunn3N5ByL?`3$J_Fj>&_uZr$T>jmziQiiB=t?o13sMsTY*Yf1BWw<;$&n4eJB`Bh*@5kVN8p$VXZ-~T8XOOup=m%+Ab1gqLBV+ zQUWexy5f0ROlj(ti0PHPZ7D*6X&J(KM>_kMf4xWJ+Bt2q)>wwcS*@gg`9W} zg{AsJ3cn=tRAJ?e^y|btb4nRL_GY03OX&)|kOxnSqLAbCBr4&LFS9e3(kHe20X4Ni z^hl4m0tg3SXwnD+x=RL(0{Nr83J4LP!t#=WA1U*bKn$N!5=agp^hBh0cvid?SLRqR z9W|e9tJN5!1uB5YDH9K)2q`uuwoX*Vu;#S>ahVJ~H0sfo8?5i5lnu!Hv$lJ}^Bg1w z?;@5oA*&mrTz3N2=tn?jov|8}GcU+!yu7}v1x{?{%Y}+$->4EHQh}q3*>sQ$!1q=)^nN1L5>`cptGY0I1 zRT(t^kH+5wAPlPg*2FE^zRc_kd`Yd~XNvX~NRSf-@;n)!c;z1JW^&m(<|a4hCR524 z?vsT!TeQxj?EAi_xmbMvQ9y!BAZGOa&|-SzAtd^e`??Z&g+)yJLiEhr@9pX|tu5%> zh-0XqIVzO?{x+s*)u$4*L}oW_&6xzAi6L&R!!M7Fls+Q%Q$}avk`u68egfv-bpk#! zWdTmFS`r53oZ+YBRye`WU+iVv(#u%&GPZj8#5onjtSLF25>d!=dnYJ_X(DJ!(A;3q zV4?~ID+Q%4DnEFI-@XIc^&Kfbl)j?Qhux$+-4 z4#~UTkhaYDxC%s_u1pr51K?H2<7a56?T#4H4Btg}jeSVt4q?WYwbLRO!lqi70Tv?Q z(U^El$f1jUd$p}XmgTjAY`IxHHbW0TPT(*T@;0-yCe~V|Gp{+Bdu#b-K@3tP7dvR} zQCsD0Pd&f=`#bu0$4jWK&|tV!s1(c9kZAatHZzgin7Z@37Av+`8qr4^18#Nq5kIVU zEg3yi*cP-8IJm8&0|@3(f!4YyDDT8};9Q$PVo2ad+YD=?7r6Ty5I<57KO)5}K>bMY zX_GsEc`#}dV@!USfP5iIyGdM;6g-z=0Jc?LpAA}WR2lq^>j8g`%eKh~qdVwKyg_E|09s-fI95y>4 zgu=xXx^HMx;4oQZ16x$iAvtfw7L~#l6=em*NKCLeUe%W1HNERF{60+K|L?;I1)DnH zzMY$RVJ`4OFm53@mf?f}r`d6lh|$Ijaf6bEm~^_Cj*+u5+8G*K5lX5NN{R?&)`Cz* zCPEnzLYcwv{!%BP7u9#H4X@^XRz=b)_rOE4($>d7m*U{=kB)S0%ioGh?}3$MZN{En z^3@W^H$SDsjus+Wy{lDN<0x_kLu+f}sFA=Frn$X;tM{NN|4JhwMddef>#Pm8&J5fN z=V3JZ|D!2kM6aCefE-~49}}}V!mI#=tV5eQ0zR~C-Cg-o9R-UkVj<1;ES}U5L7)pH z%cyJ_Ir4LwujZFRo(>FkX!G7qAO%5kC(1G}r2!H!$Sc%YHMY?0$f)4*4)lpHjJLzxiz;4 z?u8GiNp6p!sMtuLyt5YogYaJLZGVZqrkqSi7h$04{(ewPp*WX~&Go1vsYWxF<1)pW zOpNu=%ee?D%BKd}XW%yFio^=vnky2U>m(N^R-J_j+G0ZchGDY$X z6FduTPh}#8wKeOO>@lmP_Sx*e+#H`*^#Di;?4Hsp_YQpCqo5b>bSNjsc~W8af)XZ^ z!&_y6$VfortCYTa;hPJr#66gMy_AX6(MXt4X})Hj2dK)1Vy3K74 z?ysSf>DmT>(XbaLryiWYXc zRWTh1Yt~9wv(8hmIY_IF5kH}K&~JjVgxm!BW8mI^v&~dawi!Z&hj<*7Ul<{l&+zcm z)QVS5j?3}-I%w9Xfxf;lu4h3xg$|_SpuB)ziPVE~M&XJh+WeW}aHy%l?!m6s4k=n~ zc;~(wG3pTTE;b1Q8EAs%!7}`4>_-H^`58{mbL<8n=B;*r8g`t)eg8DllY= zpe+K!h&H-8r54jHt*^sga4Lw~*KzqN5#&>FN~lR^Sr1NY6?I8cSSHQ<-l4l&52A$k zx=l_S8$Z#9Uh90C4L((-)-v;gibL9(Y+UA)y+x!`f~r$l!Q0F9$ZMo(aKqdSsEHe? zD{j*2G2o)BxExm@U{2!mR9HTB3x!KE$paPygYSjFjmIgd^6BR_!bG;fjDJRT;_w$W zh|p1+%_?E3V+wywTs+o?Y1%er#gSzg^8A~IA%+J8CGy64C^xGxb<#vB24N(21~!w) z(fDQ5TPtt-76qj=;Ce4gZc19W_(_P2iQ-s|P)EvNgneh)*(;DIKBZvQwWe6e>4QIN zzEsr+*Nwz>-AE`#K+|;ty_@P5*Nvprbt6%(8;N$^5TCCkl)6+}-nwoZ3Sf=kO^b3Z z>Meu|KDqHwNCEP|??7(|bUHMVnbe*;^O>vAQHVaQ>;e+b(RF8yNFFp3P}o$C6s<%7 zXDTAoGO0YaaPr0j%pM4IaqIYmTqVVW1VAvkTp=Gx7? zHsbym=T~ish#euaPnl>0dx`EhK=YcGOTKMyXu1!{Jz>$!Z8ex~Lsr*BF=IoyZopes zURUKY#fyz0$JA0M7G5$>T@@!trSCGfov}{>&wyKwXXaGu8#P%lx_nJuS|KSBe@XWy z3@Nm_YQUkhFf87;%u9Z4Szw>CbXu}anklQ}WCE!0DO(ky9T2Woo39!hB)a}eEjc!} z!e2bgX2cHH0Eg&v)WH1Vx_U9y39mtHXl#*{{vPM-*a<&ljBex2_BUEG%l5hQOA8N~;L~UD>2HOOHD)(Z7On%C9p-M>T-c_=K>x|_VRy7x+6sGd+Bs-c zMnyQ4sR$DN%BwCxc=`}p}Ux|zc zc{i^C3f%kN_E4k)kmCpsRcAl5~#EL=Q)$c?-Q5}jQ{R;LgQJ-m!SlogryZEj0EdYd|?2 z84(D-kh_&Uu6ZY;1DI4%c^G%haM)T{-q;kc47PX2*O@a!_qw5N`L7N|i;t6Nu_sGs zgbkwB(m;|wkzOq7%PmAz06E_v2ox#l?A3iteo(eyy0~#FgV;;rK4ozuOg)4YVIY${ zHI8$M^g#!wh!Ch@N}M}P zw6(Bpl?|8nxT%f}3{?f-zes3Z%Qhs5LqKEgx5!BS?kQ0@8YrNMC%EHtB&J!i3rD~K zhh$#9fJ*HLgvePjz79Jtj$Xg&5Zj8c5aQugaRnbdEk<*k7A~0ho0GJx>L*0QFOwU0 zF`J0;0xJy<0pLQB59J8~h31;LyhRDH#dFGIh?LT0L{n318cGdc`C`H0u3|1Y+o!*) z_K#5gO9&pqMz4-!v{F8ioK1!M9`$$*7Z;X?fQ53ox!m(TKrKn^eNYt7CZ~;l#z2O6 z;5a!t!Rb3rUY&r{p+bA_oPsug@U-JL3Gzz6!A9y{JDh_%09U!j6s@Gx#k_nrY}|1J z9ikk~grKN8^xCnG9-;sT0stTwu7c`9BFmvyeZtH-1fr!0Lm+0oicmmsE-+iG$Phuu zUAv}L-?oCYf#5(4{A!F0$raf9PfzU%){|4f8?{R|>*7^$m6T7Q zInU?NzvdGT431LC&dWFNem&}}ntKe65TT!-$23#E5K>5_AVP~DC$CR@o95_DlREB% z^coZ0J*t6}IGfjr*GcPSiY7iCQJo5(#6k?%V4vtiAaJg;q`F9wn&P-;939iBsZ6qt zPyTLp3#fwHn3c&WL0&iMVA>jTJ%kTX=4ID%f!>)uovXAG`6fQWGdhwtOpx)l->hL& z7FAW07#GQ|h+e#<7qSZDQAnSP-qtp)j5D@0v^0Z#E$zuC8SF@Q`JwlqA|*(Z&~)jkc(n84~e{u?7n&_{PqNk_EYNyym5^KS|Dq837jNTR0QA+A=qbme-A-w^)%cXKC-=4d_f z8@2DVG^p3V^D~Q3uzRO?r^bj)`J#xApaFDwjR%^&;*S-h+n7`%e}f1-fcly81KN?a z1{7%YUM;7HAMg#%Pf+8zuATkO^ms}fkLJ>2 zlS|K*aOwVicmQj2^bbN7K-eEFTm{swkjI*87)oEP%n-JXHzF^wLmjWmBq_JIWEr+5 zQ0pd&dkFO>$^x_Pi8DmkB~x1k7Qz< zcnhHA%hrgEmEbKp`5mz;$cSe^$s}tkFN6AKag@QL>WeI!&(s%T(Q+9zP9=mmbSLin9IjH-l+8!>kVtObk)^|4EZ1NioNutd9jLU7fmJ5N zIAbNDsX;AY(;@SlqY2#&9gXPE4UMSt3D9+95AJ9KDd4KB9(^sPD@)X8R8f#U^US~( zzk21i{lT{Ay$Mpk>9A>1B5xr5K*f8(9M@Xer$WbQeX9umK~(Y}hs7Khq)^H!A}ghU zK+g}6zHT5xA+fLwH1ug+q3r`GVv1`Fr{npHTqJ;BT)}!JUQS}ug_f$%4~eXkMl{yA zKAUmbqzcX)naZ|P4$C`6rcA~%9vSpZj;yps#xm@Z#u20-f)-=3l3J(!jd~HukQ@=~ z4pPszhL#09rbQ`cRZIg3!0$T^KbsMfjp3Vi8ZrQiVNggN%FZZlm1wA@hLS*A*V_pJ8ZSAH^$t+DGN$8w2^>j7dW^1!ZK`XpLz} zDjT1aQSFnaa;96ooGUY0GHx-Ath`1^ZHnJEexK8`bHSDlaP%TIBXr2=@&9Q;EDP&h zcfg=*z^WrK1(8n;eWEoLf+oJMK=(6}H^|8Wkqn|$ILqgC@fAxsQxk+p0txay>!BW~ z{ag&^iF`e=UyB(jT0auAGIv{I?n=z*IL^n@Uc6EGE7QDO2cVIzwsxG^&$i~=oGs2iOF%EY)CQ-RTE!y3aoude2> zJ|JfdS66|EfLqnwT9-hJSWrUB+kAL@0{y_Y$A@1WP%ctSoUMqXg}c#LXZ$8ZnZ&|UyfK(N29g2OR~66swqhKBVzzGzva z3$;eGwl%`np4h>FoG{@LS~`k*5M|5txRC2H6B&XkUXU5AMsiO>>*-mM8P8-NE10bk=F6TiI`0h~Dj%N&@4}e9k}!EzO5lY0 z`6`*7sl)3+zW$V4pDXmsDqV3tm+@4d+T;f*>60=Z$)>MVE7K&Oqry!u=DA+X^OnUt zzk4z9wU~-?y|O_v7{f>`r%>Ce*C_ay zkRVP@+qIsy>y~M|_Ki?{tuu!uD$1lCT+0B9YVIZ)(kDD|la`5_7!#)(Ga~;^bsG~g zG6AQWg1OWKxojE8<=yLlsn`F~S^u#f!M z(aK#T1=Nmo{kgr}(wF^R<9bhCLpLr2I|>K=wtQ^V+#@+L?Ww^)n1m>~-QA8q*eh{k z>je$xAM$*ZUd2QfM~tTi+X_+%maSGjfa@LK=BFEkPFWj(Wsc znj}<%Or{<5QF=2iE)!+1fVFzrareX@RJkV=hGa;V;4kc${H`5C(x`2UYO+s%cj@m= zTj0Up0E+_V9g5!&{sqN>lWVKkv)5Oc^9@u|Xf0FehEiKBRh8+OTv&o_4BiSN#~o$Y zC+%2ad5uEkCS%6qS5a9>wvaRfzd5oqtxH6C7@3?fGmC-VTK!CXO0d)vMVdVRY2$tYw^(Uv(y{H2ER+!XDxs;Ra-qeZ%VU#%8z zdP5GTVzYWa<^+l5dNcj;Z@vOR?4%B`*OaJM|A!QGW@%5k}6|Gd}K^!lMX=76XG8edk61ku&KmzS}ou_YKlYKor1H~jzo0xC`ox)Kn ziL(;TPdCrfeC$bU9!K9mCxTW9xbe7(ZFItnv_`Sro(Kx=2e1{lg%Y6H9{{Q<0}oIY zszX=fq3H&qO*Biy`lyuM-`nf2<(6WHm2a*etjaW^M8 z2K2QZ6ixJ{3bX`sjL`<6@Xa{P4Gcz@E&e8E%apnc_nM(omTlOWfZ{`;Qp}Q;%4oOM z1#mRuO;)}>5pg#vL%__*o0b)nqQUMUeptz~EM8ytvrDf+$<6$(zAs=gVH2i=0t=Yf zpS&U{+BP^~5kMP718t}&FO?^7hNvSY)NyB(2F{SRI7q{+oT>!G5jzVHTSBy3xF&NN zUhFR zj;X z5;$0An7jUf*uus}XiyJC9_CgQbh3>hYdJ=)Ol&s6PIo~j`$H-&tq0YGAS5U`o=vRK zGMIg?zIbNyL5kL)P|9+L+_72{rjq0yDB29vGOLPJMe?9e$;CM3>G#k-B-Qqh!_@Tx zNewrUwABv;DzvA_7>7dy)RNX(A$4Z*UEi6TZ$DI{!O5+MUUlvXUl;7pUw3K=tYsLT zq04p%m8bR_M{{qlz%olqTJ~<+;+VC$C(E`vVQBR~dwu4L#ocybgTH<3U?ER#k(P6( zw4uIDu?nd24_brLU(!s!r^&0<_kHLG`c)MBzLA;83FfV41+GZRbLDP^qTF z>PGMfNuS-5cB5@U%YHBQd0Lnxo|#XuMU@O^hBV@6Fo*-&x^h-9RH*Tzw#W~VSa`+FEe!Xhzn8f!O>Obzrwg)yHj z(>f+N=8kwEt!!pU)7vQgu;}dM4mw+7Lx34-IUQj(7~<7Dz=vCb7IY9TzJ-P0#g6&H zrOvIo1V8B^@)UEQi*r}8my$g!wrx~m64&|-4pHX*tCTRRm1GW*yJ%^$SS&*dCJ*?@ zD}C3>j5k6$$DQ+6hK0fvna)NVcD1JkD;rkFvR+?2@@3z=T>0aVavL2aQIp?qT7vg(D$_W`@v z0aCy@@yc~iyV-FFo7@f=@cbD*R-h#xw5>W|&nj`p4i8a+Emxaw{~K0%2`RO^Pb5!c zFE30IPb4p_egHX$GK|y+lhqvN2i0>Ab#bosBo~a?&qH9|c&O;^zryu~v1FSiiZ6%D z`WY_imM=virI7){=nR>;xyL~6RN}~v|H=s`Cql}Q@6)W!hX2K*bxW(tZnB1fVx7XQ z!G6C>X=6yFt*P^}#`#IZ(&GK0GoldP&M+wg_j?z849!9AHU~+RLHk+m(xrV0{?VA! z#+Y+r$Jt@DylddDo}>CGV*{r10BFtX6cZ@eZjGwvDQ?SBAV)Z($ta-8YHCMV3%c5@nR*p^tdtQ3}pf+&$G#JZnq4iuWj`9hnnTiomBf%MT2^ zj@cV!!wpOXVTJL%weABWSvX*y3e_#BNx8kXq4AqwcMpxNA(UbfltObs;x&X&79Jc( z^{_?-Z3gOh$)c1pv1~R6hk_$ab(I2kcbXL_k$v72+2`&#kB=6OT^ESZrLdj@w#L{Y zxs|p*5k5nykxUj-YDiBH)Cg5(A~K)zKVE08`5%FbNor|sGqmo!j)+|av}O+T2|p=J zY+1)hABKetZ58obRx{4c#zm^W$_cy3otcS!F3Eh85&R#3$?b*ZR$X8RWk%Jf8Gp1T(?>x)yfj7)**-!6@oYy z5=SW#s?`UJ#w*uCNy$acP4Eq*EZ^i5Z5mcXVQcf=K-R9n=Acdb^A`^RsVI}8Y*V^B zGL3myMunDDYr>C6xu6OM95N>q-6(khiZ04%ZgP2slCPF4+RIx7du=+eJ?U~`;09m; z(KKy9mPuqqZxO338ZgoAR$mhl9*~^{lAS?r)Uw)C z+4ERx(-16UL$J)R?ZjI{Qty;nvr{^nolDxjWR5gSifZ)GgugM6iFt2Ef zAT210qJARh#MFR*3=eqEPb481*U@~>w+-4dY0#FDL0heKilvj9j5ny<1qy8lyEZxL z4JT+m{M%lm(s>kAceA#=-JXA^ACq>5-&$a3w>86&93H}>JyR1fR@xrYbl;O?X5%wM zsBC+C8}-jjF*F@UlImMVkuH0#Q*8)=?vl3@9Rke-O?#_lI;{GRHj?FUWgASO3JRJW zz8fJc;C=Z!1)tQDGUZ8eyJ)(vTe`LO=+9o=-a&s=hG=VaCZWz)VX@N-?Z(E86U9xu zpEklwQrEitx`4tymhPdx+e}gSE$Cx7hK#Hg4+6(aJCt0I;*|7WT-Iu26!De`wkRkN+fpgp%L9z}{`QG*I zgw3tVFk8YIgFBd&xjQRnG0=|yy-kr(0DfjL6unG^8{EJeiTT~M{X5O%>F*k5S-dcM zDI8Sg>wS&gb1(&Tstp4`hwQ`5BucN<3He>PQL^{Jou=7n!+FiNWYn3Gx^0?A=8XZk z<)`iC6)xoRHrGr#<4X!bW9W?04uhj?nnPRzxj*NLNg8=#(oe__w3_DAt0gY})RN3a z1obbc1zO_G36xbmcF6ecy&YeQJF3TnW{}NVL?Tqt#f^lr(`1~+x3{Yppl*sd?KM8| z#0!6uo>5*24E56zgvet5Fy=&@j}m$6Rj-6b5HqSJjyAG-i$Te-zp;w`<6%PCQ}k_a zgc48Mt^UZ=gIKzeIBH-Peq$>UGB4JqAc52Q+h{w`eU4(*mq@Rs*fpiTy+!i3dhc=G z!|E9+(l9^YTJ_SS%P@k zcWcILd&ZlV-}qGriRHGJG(dcd_CFvvc9s3fok|k5-On81u*EsnWUBB@iS(I}MAz+- zy2dUw0%;{}CSi>XpwN%Y01%Ll$|c&ojNsI!YYPcqnUVpWd&~%$VwcOGe1Iu8F&Z1rImUUx>a?xS4x`X^-E%nK{G@=5CKF&`D z#Q~ZoKBEK@3mWZ09XLtzz-dLrUzVfdFH2By3(1Y+!44F=!^fUE#1Vz)h!EmU+XtqxC|E#Qvu?_ z)$HfqN)dkH7SCJ0`xU$gpD!oGfYLnRQ;d4>@$DcxXnER2_92bcM>xNEoST`qnRQWiEA>0K}09ag4sVj z67rxZLFF))L#l#A>OsC(1nKEAk53>-hT=Dbe?j^#f>ZIU5TCyhzeo7+75;fEp1el| zc>0w7KBB+R@%3x`^Ai93ihn-hpBMP&2mJFveEeAa{z4!AhOa(Hy$A5~vv~7|`27jr z{Vs0)6u*DRhh6;B6Hof$cMBhGyGE(|9wAxIVwt`Zsh`s$>B^iQt!<=7#^N8m^ ziOQ~=Yy2h|CgJ>rr}9iCUp-T(wF?d5YNRhvc@5)kiO*Rc4wFw-+)O4-6C)Vtz)nt+ zm_a!)KzI7WXmm$1DU`7?{fd%gym)ncOO79}v@jY`3J|Q>JBE7}(;zW9N4xy4AI#DD zIz560DAG%id||H7!;#S30U3^S_mvbbvOV<{hy5$X#YHdk^!3`BTjTtxBM3Y&cr09@ zU987VG}GS`fkPPGV#pd!g9j{;Ad+jK9Fi}yv=m9Yv8QJuo^DhQ+nhDicZ2jD$QlIq zHjgnJa5OJGV2i%ublu*jM|g@3Jq4Jb$s%EW2WUr{v>MN?r;%uCpdtqd1up^GD~0CL zH|QCez7Z~u>052=3hQ(u4VBHEHlK)SL_Pcb;^XT8Pp=F(6Qm=o&qgY!^o-OF z((OI*OD0x;EI6cb?HDL|PRLVBfsF(&s1qyy{@y8Mr!Hdw4A9PkJbE(N9abz z(^&0kp|*NL6otx`Dm!jT$rOp|J7Lr1T>e{Z2t<#%1H)+GentWd`RM}5#2Y}b0w#J0 z6RSPT-l0#R!GrN*#pQ;CSixK#q=m22o$u@dTZ=$c@W2Z? z1!;)sBY@{Q1|?rU%v+!y@jwNIf3&R}hv49Nj6_ss#-|qxm_8oDn>b7#Q!;y0TW8lE zl!p^ykwwLVCKt%AK9Q+v_KET5>9>dh+M3d8bO941eKR7oNyr?g%fUli+dIBWQ-OO@ z1~{)Nb&_wPKxnRn=8#ZG-#e!cFlmq7Xx&l>uoK>;x!&p@_{2gP0n}@s?Ol4^hnNcB zxAm=VcY_QKX<_V+1Vr~;!XugpWlmFW*6B1U=Jks>A7@Eajl6WvaF4^>Ubsv@1DVUU zrN06h43sk<_C9E_aEddX*DT%h?);?7p9m}21)tNJjM`I53XA}#11^p!2po&o?GA7B z0*?$6y>aAd7jAD!LWcW;C|Gg5HYOLC>Tz^q2rxO}3<)DcAd2#e(p8Sb>KEWUKA9{a!eyO7_5Hw*gRbofOUH)UJqSIMi3(>^$|~oXLreIq^;g$ zQ;pGxsVpB2jBCL`qA^>rn{4}fB)Ui)7#(PQJIa!{ls&}&!JI!BA(isjH>vq(?9HdP zmnKHCB)DLxm;^n739-QuSXM_$?mnM-jZX|X6F7lX>-Adn&-7zJKfmHEanBX%LJU5G zj!Bdq{j3NXi4aXFQRd@`#d%ANGPINEBUL(|uT?!#;#z16mQ8_C$i^l?$|;lp@P z9>*sL$r;pMEV?YCNS=8dRLtl%tb&=)dzX0`Z~n+5(gXh)r40ZTRJ$NtfJ$e$1hP}m zf$XpW4+4W|$}mQM5Puf2F@6Tx2#X9%k__Wa{om||x$&m?>!4JSG zM<65sVF3sYSa|R_QepxU4^TJ^;_|#2x!*Mvg8`rh^auI5JS^oQUMgX=d{54T0DA;X zrILv;FqKG%05D|(s6U~It^iE2Wbr|+Q8Qhe8w|{|}MHiKTPo2F9{kN9B^ku3O_2^e$8QrE|Z*KuDrC+s}!RW=@j#p-} z{28B`%2a%~a(u2%RgW<3mBkyMnN{56k8%`mk1pSJH#^2 z>V4xokvcozG+NHrJ0YAzfHCC~!-12t*(6L0a%wO%%(sn`g8vr((!@+OabTZ?wS5*2 zq*b0c>BRnVBiskf3+7t%xwpG7&#m_jOs_H$Rp>*~NYAA7 zXt^Eh!;a4pZw(ReY2OmVsIMy|qKKNeOiS$k&R(F#xVy8nwHxG|{RT7W;!%PTGG*>K z6as`Qr&;X;{Tt@Cz9P9=IRs4r$RseMFb3#=<8F>pU7TGcdm52O?4EpY`|#wZF5|pP zN&Umj!89&Ep_ZTRC1i?9o)9rePl91>`4N~y&0B}MXofz?Md%YT zcvU>WWyDV~0K%bf%j50DT|*Lo(`+fFu9;DjWB|22tF>NV1m!0Hfp0xHsFO%%0S7rh zK-s*)oNYd8axlf3Rk}7xZ@Hy8f@?#Fme?Hux_KkhiMtTqpkj7_j*5wCuEFz?A%6hB zXtXY&xzB*a6uRuvPQPn*i42Xf?%0U%n0^=nu?Hl4n0_E}1v*UIHS3U{N(QC7h@MpA zqHSkxEdl2w%GO}Oxg0PCx-BNACmH%Q(=aJDx7;5T+piW`Wifob@d0Zh_NBW8MJ8_} z)<7WmG%3?dAwPOv7E_umrJjjf(U%i#Td+b>}=-8keMD{4`pEU}#fnqqOj_Q3gP60By3pdjlgK7CZkL8f7Tk9MfuKdHYHm zvRc~Oj^)t}c2y<_1F#oK^g>BH7z)aFwA({W4}IumGN-RLBLSg5c0th??gCS!2{CTL z3H%QalEQ8~bXIo|fZSL#l+w#bpGJ`lBkDZl;y*t8 z#{+TI5i&y^$t5wf%v()~WJ^gTZP5)TDXoT$_QeOmOBS`; z#F)wSD;u%kMa1_FqriK1D!;2YC?iiO{tf^u#m6s&m?m>=BQx!@pRpJBuDpazX1aT3 zjrcs$Yg2fF@9Aqw3*h@)=D*%sRE14Rnn@^ z%SMjWg_2sBSgXoCK^o?NF`XVP{%WaH>NWD{B`O-C0R%u>CIX=?Y?Rq@dKhSwV%hvv zjM;F_(4nNig+2*cesGW_sgfMe-MW#z(4>PfGu0=ZB&;W{d-} zdC;Pg)h@dy%xAMQsj3%5mH_$qTU_Soi*Y+YFh3`D^Y*qp#Z|yb!qYAGFnBC&w3y-WG>4UPj0mmTLF&&NYI%-q1Fp`8Q-l^2#kKTjZ3~Zl0~J-aaqw zs;2_R5C*YB)BtYM)e@L((GnOmZBz}x!S;YBGou}X6~SO% zS*d=P&7J4Y+J#(x>Sl$R+%w#ZJQb8z#-LQiT5@(_Wt+&ite`^Po^Hvuz29VJq`V^! zC?!I!lI{wJ>AU)m=%-XhFqyS$N>jkre6|FL%Da7Qg(G%$pK|PyJvRb+^zZ7**z zUjA0Ne#atIKxr{Qa<}DT8VQ(;C`_F69fSiIbU8F?UvZ0nO<~K13VGtM6R24BDaVQZd2RSV47axEyHx0~4Q}bG5 z8{uW!-`D;$tV66D4lg%WvW0k${HZzIl49rj`+;mSK$ki*;k0c~p75d&uWOoMkiIw% za<>Edzz10@%$gt&n8!mV<=HT zq6Q-OFlzF)y4xb34znA^oFq6Wu`s1+R_BDzT{<1yY*($T>}rPt=62Mh*AyFXH8wH9 zsutOryc;6T{(s_NHw+j7I4j8-gl0esiQ0a5xm9(}rs%Q48KV&(N9v6u9c zi2cx*u#6Iq`$O#-7Kf^2z;7|vw;?g3p)2ev?gL{~a3b?VZHpJQ4VuiEUH=SNLj^(s z0aZEdttGep5dIoxKtoocbJ1I;1f`@`31iw0f3mG_$N#Rphj3Zgd<1=TqeGS+XBFwF>sgrY5KE0h?AqVvrw(~t{g-uVq8>y67 zBIJ(PEIt*gRUxshEbZ0t4tx*-Wxtw^m+{B)nZCdFF`;D|=U^j0Xat3HY!Xz7~LS)myeMuYTtbOPg;@S9ak;!JfHP1&bO6kzO_PuAjy3u|Cg|{(qr+p24v*yRctY3cl_3f%Z+}=L7^_S7gBCGT&yGukwgME^hOUh8vL2S-5CDO07R!;xV94~V>;-Z z01`J422hx(hCu&WMf3I853p3hrOK94BPazzXjHlD=jdv)F78QUDfYZ?$Wv#Q8pNMQ zGw5nIkUdN>ow*K>N`k2=yHc;OPa^iJfiC(1J}vO+nB&@Gm+XdekcS@1^NS_g(+H}c zn$h+b(E1{WnM0q4+gth_ak2sdauvbYNCYtx$$D~}LQ$Yg1-e!N8c>x*H?+RV7*!!5 zi0>sNy+_aq^F>f`BH#m{SViA4J^<|*IKePF05hoqe>5VQYm&@Qw67V|m+0UFR^$O0 zcuZDrP#lu33GNQXXZdnE^yRLMFvErSLN^ts8izqm78w6f7+PZQV$R8Xf_e`|A<&2x4{D5ue zY=wj)!c!XyR1nu@wr%pB^i>cS875U|gkC&*^i-&QD3mH+K7RZ3k50(-IO?5E)DDR> zv{9$Ca4e9W-n;siE#HcUkyxx)((pqh&{T03l;fg^=LW1;3iF*^-=y!Ng3gzW4xJJN z+CN3TV15CF`TQLJTzh6*5`1wZ<_74+8;nvQ+?CSb(WdrKfUV}Kr-Hw%cITvU;UUtJ|8oi$G0YJGdlfw2`tA$I_Hopy!J*+`-jjU4^3Bl=w7SzHfQN`?wE zlR!&k1_$M3r`{E8V~RcCfI3SGpyvzHW6q#9$Kpchj)T;S#WM$-@zqO3^4yBEx&ak{ z9^mNb1tnGVjS-y*K-aWT6{(*(ghW&YsYOOaXc(|LO>=JqZ!XQ_OnaVBqSOtDCIk~~`X|xx2@o^sUr*s2PEQ7(jR934p0IH@c1&^l@8c1nx}DJDh&z8qGU(3yl00B7PkLVr(Ggn6*bd0d{vm`s$vX<; zWSK(TGlMh+RBufmjV~~FbS*t*KoF*+{L$mLVY2jK8?!b;$#qe0*ePX%5)oW$LLd-;xvptEs&ZJ%a85WOnodC zWDdNR{vFOtluL0mmcX59qR`2q?m#Fx@V>v6p>Z?7#`ZAXT3?5?6ycE2Q3o%jv#SYP zm&`e%s5c>re=??sR6+z)E7F;QEE)yaSJZgG@KXLxwvM`iGab=l#ipo&`6tVV9d6ko zi^Xu#)Z7AZz&2g6hk?<4=fPA3rCv)~JeEZSGJ68A4!DP_yqPbd!J9mPPqusI_ zT3+Igh)sA`fj11JD``qzNBQr{OU!lwse`^Lw9hDxKRhE~K;M~uGr|+) z3Xl<=wjv=t^Qk=w9Nb_Y>wzjO*h45>2Rh2I3|1lDO51nMq@jSP)n69<<(B(l+?}H6 zZtshdT=IG95Q;HvtrET7u(vOCBU@# z2C0#X^~QQdo>A$kz}do0YEX)}vzf@%uE;sEd%-AkHFZ^e5$G>a(TzjS(TE*gxx1iR zMu#hm85zx=IpGI#l@c0N4JKqfTRt9b!Bw*603#FHGVj~SmA|g#rW72cxjA~Ov+6ND z0#qp?<#BK_agw5HPR9mGkFXH>CvSDTKa#CL`rFV5a3-Rogz3jyl*;}fN_!aLPR2Jg zhWJF`SDEhn%Ja=Vly9?dvD`s*%MLmdELX}Aff97xKb%ay>3irYM z2!l!-;bk>59j4V$G6V^G9?YNn;rum76|8lBq{P^(^S1zMuK@GCMZ-MMQ|XYt(D5>w ze|2&Yt=7IUY*O*R%Xa$A=fkh7dCP)KL(QE8gneo5wE>j>LR;iu2MyIc(9y8QX1jlz z`0G7?qX)=>wI9GV`$JtkzU_tauzwqa;8KW!0c3EpJ_72)xI~=F6!uZT;jW75n!f-G2*Gim~p@0cx;JRDa}Di-|#L4=8HpTnxr66r^;@zJY@ z0Ex*GI3l}9XGin*Fe(rBGxOb>$t8>aJ2Ma}B8YeRTpMGMiyT049P%V+*LqwU z0PB)`O@UY-c&eFQ*jg(HOA(;^NR`G5fY{mzxbRZP?3H0k9MF=8UfyRdYQq>cbBvSS zKwh9Vj8&cshQSyaQGiI$sYMx5;3Qk0vuAF)mJ5a_T`T!agCgzL7TSTu48X8$xxwu! zEqlG*-{}r4N4l-P^pz8(fyEM1Z0SCS!cFn6yDds#$|TW9??9F#Pis*t=+s5)Xc!0ND*t{uOo2FI1LQKOXwITS^ax(tAhM$Qp|Z|XQL3Hh-%&(76VUcUm_{oP z>z0mi4zH~6XDWz&7he_12sru)iOXpIt4W6We%sLM#vBCo;{Ma7>gl)6W#7OGzp9gs zjV#vIEG}>5-uh|9z2y$9Pz1g+)KX(`5%UchwHTuk0-N+mMfQz2p`Zj{IC9Fr2Ejh7 z^E`@bTM{jY_>hy>a(#B++`b~b51plB#{y$AKdQ+@A%QhC5l$Co!6^U2hUw%sWCnlQmcmoyjc;RThe=pZF}tTl8GkS-(b|#CJ3eOY zY@~b@IXOM*7~lug2qbKQTNb(`o9UPmCtDfg;Xs;p=pC{nMhd-TW~ii}~Y+`Oi`^G=D5bL-Svv{O9BOYd1;M@EomVT6{(^#kvFs&mze_=g;36e&- z5O065-m-Rr-gL%i86_p`V2P*29Hd-N=$>Dbq&Lm!ExB=-&jIr3#p7&ViiSSm{gH|Q z@_sIR@YsG~bRqx6e)WX*n|Sw|{f@_*eD>h!>jD&7&romL363#;Se0;x_!2~RofE6< zt0cZmzFqcRkz%E)<{95}d3n?Jg{uF~FMh)>o?M_zAKs4WVuhAqMNIaJoZJ-x{FP71 zHPDnf{?2DBN_E7ab~dY7mck}k>G-ntL*cinR%u1}zr%K#uZ+w19FUo6&90s%gzo9; zehu>Wc}d$8#!oU6UNC3~`T2U2p56 zQ8~k&RXu68{%sBXDstGFEwJtQUu=SfjlV^m_^g0_!ij__mE|w;$Mf@xm9fZ?Ctxa> z&gwK7uO#`Xyq?u`HO9ZlNUva4pk$260>tGssbh7^^D)ElEi2R%{(<9fWmXpF)Lpd5 z6%D~X2nGO7l21@Q{$NR{BFpfe$^R8RD#avR78&4q@%2><^OK*O;|=DYRY0H48NpUv zoS$dO3ZKQWT?({M$N}Sn+zLCq!dfKpL+#NQX0@nN1_7xz{|&>*tCQ$wK8b2l1z|+_ zft^1mY000H9Oow(Se_X@;wLkaQ>hvVgRodANs%R$ zP9>KLD!36MXVn!|Br%V@ z%#a)xc;qeIl0=Ne(R`uAwQX7uq)C9$qH*|l3?lfS9Kph5^Z&5OkmKb2$-v2~K@TN3 zs^F9Bozv5^`5By+ok1=nz$p9qJ4vehB;S`|s7$iwCtK#(9Ux;DVBa!`*!erc(Uur72(m&0;QLl+{SuI zNj4 zNduwHDQ<63^j;`zx6B@maU9AjdBKGCyYLzBluizYLdb(KAE^xgkL}I5y*c`7Eo+Ke z5!IpXpU}Ek0WPfpLi@?DXc*+{1WFi0!V|6g97qD%?#tgj>IA4|V(6+2`+zaO0SOxR zp=R3n`pT3ZGp@iW@bx+J97S||B2Sq#%0J7rK*}fydoAar{uqoR6`E3-?kS2a6msGE z2;~uG9MX;;QG{6^(I=e{D(sn|93+Dfjv~J9zyVhO)+ka?xQM88hP* zW?zxkmVIEd+q$b&Ep-1St&Q7^*a>}aw28NjkK}#9OY@7_I3X#fm}GDce4;y{v6yi$ z>V?X-ObnWTWFb}lLj3-KMLt_ae#1xGPIMa}$7GxkNt;paKbYkhed6PNYpILbwVY

sq$cb>?Bl29fcpuw1;YNx>k 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 @X#_KgQiJ` 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%0AC+~d?1A` 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%0D3I&S^9QX%IF2>rYDx`h;p_7tpbPs zCQPkiuSy4h@1(SIUP_JC)thF=JxW}93OaHoB6bfd&hd$n;rZu5uaj;3MVJQgB422o z*Tb`=)o3%~QoN*wH4sYkW^~w6GgoY*H+1S+XlcPEhiB>;ku_tRzzb}_LYIfUW`8VU z`GLNdMLBD>)Koo8H#X8}cQ>to#lkB&NDfM1AMxJ$QJ*2V7bP8QXc#pGeh#=ibWNqXauJW#+?5dLYS zgq2L$M~w+EhrJ5rKBv;TGn}_?`*-PCPdDsTiReH?pi!JF)GBCY>50w+$V$HmxIjgd zmk!bJh|dPqKCPFUwUyc@YZVayDwzzo8Je9HV3UoF>;Dg$K;!|KNP?YYSmRG%G4nIhlsZk8m9Y+nMqZnbj(U#jxUD9dzGFzc^A@*L9fCZz^;SDjo(8h+Mj7SbM{z3 z&MGjuIShZ->1)bg6+mLT)&SAF@Ql0|ARx?Mw?bw$SbLn=G%9o_s{UNhdvuUg&d{O> zjO|<$mBicvv!3)e?OoUSdU1NRSHMOle?i|~ud*)tPDzByRLH2 zE})*Sc72P+<}7)#2xif{n!y*s?3cI-&7H{8fnT1e+kc%N@r@FU=?KY}5`*gVK zUa?bcZU*=bVS^v;@b?k7r|pePyP*2FKv=;-s;_K|H*W@dDpfsdi>yPKmKh4qzRGps z8480|ZvedH-mtI}OtDiCR-Oe>3UkCMEiwGU((?1s47RZQxv`RLZo*D7fRP45Rq+*; zvJb`=Fu$1xqzX#8ip%kqS-?PqZII2Rn9psDy09Qqnm6Oz70)lD=g1D0X|GfSa z5FJ1VGC3;8!vz1Ramg^|FqHFb)G)GQqJi4VMQt&xfUQur4`DYQ6=V4qaukM0-vEsv zr_X$#0hTj}s;{GybPx8N!v_b8{7?z$yD6MMMS0PC(4z59Zs9&vIB&;KJdb)nqW5^C7{kRFzTh_FYU;@9y>;I3f+<4$k!O z{M&bKe~z|yq*~71>|Fcw`7ijuJ73?TOIorCRLNVjY;Ti%`*rl?)}QWvxxIH6;!X7A z@q>pyym%PZZ|ZA5F(!S*FL|!z1`oweQj&|&KGy+uY9(*zvy4<-`VQl*}ijo z`*t7C`(JEt-@UeV?E`!$S3~J}*M8|o4aWTaFZtZMapMo(4e!rH%VD+lp3~&h6J7|5 zX*;T+Q4s*Q{_uy3hy78F7b?tVxybqMwU21rAIVthDj^ba%iq&@uYLNwi%*OHL&l44 ze=$w&ZYN*91I{m>3;F+@FWUV7?$+(wpZNa=_*}pkvg#wDk? Date: Wed, 28 May 2025 05:56:03 +0000 Subject: [PATCH 014/165] add form to edit node operation; ux improvements Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 168 ++++++++++++++---- diagram-editor/frontend/forms/index.ts | 7 + diagram-editor/frontend/forms/node-form.tsx | 48 +++++ diagram-editor/frontend/nodes/icons.tsx | 80 +++++++-- diagram-editor/frontend/nodes/index.ts | 14 +- .../frontend/nodes/input-output-node.tsx | 16 +- diagram-editor/frontend/utils/auto-layout.ts | 20 ++- diagram-editor/frontend/utils/load-diagram.ts | 2 +- 8 files changed, 300 insertions(+), 55 deletions(-) create mode 100644 diagram-editor/frontend/forms/index.ts create mode 100644 diagram-editor/frontend/forms/node-form.tsx diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index f7fd1816..29c957cd 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -1,5 +1,15 @@ import AutoLayoutIcon from '@mui/icons-material/Dashboard'; import UploadIcon from '@mui/icons-material/UploadFile'; +import { + Alert, + Button, + ButtonGroup, + Popover, + type PopoverPosition, + Snackbar, + Tooltip, + styled, +} from '@mui/material'; import { type Edge, Panel, @@ -8,22 +18,16 @@ import { StepEdge, addEdge, applyEdgeChanges, - reconnectEdge, applyNodeChanges, + reconnectEdge, } from '@xyflow/react'; -import React from 'react'; - -import { - Button, - ButtonGroup, - Popover, - type PopoverPosition, - Tooltip, - styled, -} from '@mui/material'; +import React, { useEffect } from 'react'; import AddOperation from './add-operation'; +import type { OperationFormProps } from './forms'; +import NodeForm from './forms/node-form'; import { type DiagramEditorNode, + isOperationNode, NODE_TYPES, START_ID, TERMINATE_ID, @@ -43,6 +47,23 @@ const VisuallyHiddenInput = styled('input')({ width: 1, }); +function getOperationForm( + node: DiagramEditorNode, +): React.ComponentType { + switch (node.data.type) { + case 'node': { + return NodeForm; + } + default: { + return () =>

; + } + } +} + +const NonIntrusivePopoverContainer = ({ + children, +}: { children: React.ReactNode }) => <>{children}; + const DiagramEditor = () => { const reactFlowInstance = React.useRef | null>(null); @@ -71,8 +92,52 @@ const DiagramEditor = () => { top: 0, }); + const [renderForm, setRenderForm] = React.useState( + null, + ); + const [openFormPopover, setOpenFormPopover] = React.useState(false); + const [formAnchorEl, setFormAnchorEl] = React.useState(null); + const mouseDownTime = React.useRef(0); + const loadDiagram = React.useCallback((jsonStr: string) => { + const graph = loadDiagramJson(jsonStr); + const changes = autoLayout(graph.startNodeId, graph.nodes); + setNodes(applyNodeChanges(changes, graph.nodes)); + setEdges(graph.edges); + reactFlowInstance.current?.fitView(); + setOpenAddOpPopover(false); + setOpenFormPopover(false); + }, []); + + useEffect(() => { + const queryParams = new URLSearchParams(window.location.search); + const diagramParam = queryParams.get('diagram'); + + if (!diagramParam) { + return; + } + + const decodedDiagram = atob(diagramParam); + try { + loadDiagram(decodedDiagram); + } catch (e) { + if (e instanceof Error) { + setErrorToast(`failed to load diagram: ${e.message}`); + setOpenErrorToast(true); + } else { + throw e; + } + } + }, [loadDiagram]); + + const [errorToast, setErrorToast] = React.useState(null); + const [openErrorToast, setOpenErrorToast] = React.useState(false); + + const handleMouseDown = React.useCallback(() => { + mouseDownTime.current = new Date().getTime(); + }, []); + return ( <> { onReconnect={(oldEdge, newConnection) => setEdges((prev) => reconnectEdge(oldEdge, newConnection, prev)) } - onNodeClick={(ev) => { + onNodeClick={(ev, node) => { ev.stopPropagation(); + + if (!isOperationNode(node)) { + return; + } + + const FormComponent = getOperationForm(node); + setRenderForm( + { + setNodes((prev) => applyNodeChanges([change], prev)); + }} + />, + ); + setFormAnchorEl(ev.currentTarget); + setOpenFormPopover(true); + setOpenAddOpPopover(false); }} onEdgeClick={(ev) => ev.stopPropagation()} onPaneClick={(ev) => { + if (openFormPopover) { + setOpenFormPopover(false); + return; + } + if (openAddOpPopover) { + setOpenAddOpPopover(false); + return; + } + // filter out erroneous click after connecting an edge const now = new Date().getTime(); if (now - mouseDownTime.current > 200) { @@ -109,12 +200,8 @@ const DiagramEditor = () => { setAddOpAnchorPos({ left: ev.clientX, top: ev.clientY }); setOpenAddOpPopover(true); }} - onMouseDownCapture={() => { - mouseDownTime.current = new Date().getTime(); - }} - onTouchStartCapture={() => { - mouseDownTime.current = new Date().getTime(); - }} + onMouseDownCapture={handleMouseDown} + onTouchStartCapture={handleMouseDown} colorMode="dark" deleteKeyCode={'Delete'} > @@ -137,11 +224,9 @@ const DiagramEditor = () => { const startEdge = edges.find((e) => e.source === START_ID); if (startEdge) { - const changes = autoLayout( - startEdge.target, - nodes, - startNode.position, - ); + const changes = autoLayout(startEdge.target, nodes, { + rootPosition: startNode.position, + }); setNodes((prev) => applyNodeChanges(changes, prev)); } }} @@ -159,16 +244,7 @@ const DiagramEditor = () => { aria-label="load diagram" onChange={async (ev) => { if (ev.target.files) { - const graph = loadDiagramJson( - await ev.target.files[0].text(), - ); - const changes = autoLayout( - graph.startNodeId, - graph.nodes, - ); - setNodes(applyNodeChanges(changes, graph.nodes)); - setEdges(graph.edges); - reactFlowInstance.current?.fitView(); + loadDiagram(await ev.target.files[0].text()); } }} onClick={(ev) => { @@ -186,6 +262,8 @@ const DiagramEditor = () => { onClose={() => setOpenAddOpPopover(false)} anchorReference="anchorPosition" anchorPosition={addOpAnchorPos} + // use a custom component to prevent the popover from creating an invisible element that blocks clicks + component={NonIntrusivePopoverContainer} > { @@ -211,6 +289,30 @@ const DiagramEditor = () => { }} /> + setOpenFormPopover(false)} + anchorEl={formAnchorEl} + anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }} + // use a custom component to prevent the popover from creating an invisible element that blocks clicks + component={NonIntrusivePopoverContainer} + > + {renderForm} + + { + if (reason === 'clickaway') { + return; + } + setOpenErrorToast(false); + }} + anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }} + > + setOpenErrorToast(false)} severity="error"> + {errorToast} + + ); }; diff --git a/diagram-editor/frontend/forms/index.ts b/diagram-editor/frontend/forms/index.ts new file mode 100644 index 00000000..46b11649 --- /dev/null +++ b/diagram-editor/frontend/forms/index.ts @@ -0,0 +1,7 @@ +import type { NodeReplaceChange } from '@xyflow/react'; +import type { DiagramEditorNode } from '../nodes'; + +export interface OperationFormProps { + node: DiagramEditorNode; + onChange?: (change: NodeReplaceChange) => void; +} diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx new file mode 100644 index 00000000..79c64831 --- /dev/null +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -0,0 +1,48 @@ +import { Card, CardContent, CardHeader, Stack, TextField } from '@mui/material'; +import type { OperationFormProps } from '.'; + +export type NodeFormProps = OperationFormProps; + +function NodeForm({ node, onChange }: NodeFormProps) { + if (node.data.type !== 'node') { + throw new Error('expected node operation'); + } + + return ( + + + + + { + node.data.opId = ev.target.value; + onChange?.({ + type: 'replace', + id: node.id, + item: node, + }); + }} + /> + { + node.data.builder = ev.target.value; + onChange?.({ + type: 'replace', + id: node.id, + item: node, + }); + }} + /> + + + + ); +} + +export default NodeForm; diff --git a/diagram-editor/frontend/nodes/icons.tsx b/diagram-editor/frontend/nodes/icons.tsx index 45301c64..5fe034ab 100644 --- a/diagram-editor/frontend/nodes/icons.tsx +++ b/diagram-editor/frontend/nodes/icons.tsx @@ -1,13 +1,67 @@ -// TODO: better icons -export { default as NodeIcon } from '@mui/icons-material/Extension'; -// export { default as SectionIcon } -export { default as ForkCloneIcon } from '@mui/icons-material/ContentCopy'; -export { default as UnzipIcon } from '@mui/icons-material/Unarchive'; -export { default as ForkResult } from '@mui/icons-material/ForkRight'; -export { default as SplitIcon } from '@mui/icons-material/ForkLeft'; -export { default as JoinIcon } from '@mui/icons-material/Merge'; -export { default as SerializedJoinIcon } from '@mui/icons-material/Merge'; -export { default as TransformIcon } from '@mui/icons-material/ChangeCircle'; -export { default as BufferIcon } from '@mui/icons-material/Cloud'; -export { default as BufferAccessIcon } from '@mui/icons-material/Cloud'; -export { default as ListenIcon } from '@mui/icons-material/Hearing'; +import TransformIcon from '@mui/icons-material/ChangeCircleOutlined'; +import { + default as BufferAccessIcon, + default as BufferIcon, +} from '@mui/icons-material/CloudOutlined'; +import ForkCloneIcon from '@mui/icons-material/ContentCopyOutlined'; +import NodeIcon from '@mui/icons-material/ExtensionOutlined'; +import SplitIcon from '@mui/icons-material/ForkLeftOutlined'; +import ForkResult from '@mui/icons-material/ForkRightOutlined'; +import ListenIcon from '@mui/icons-material/HearingOutlined'; +import { + default as JoinIcon, + default as SerializedJoinIcon, +} from '@mui/icons-material/Merge'; +import SectionIcon from '@mui/icons-material/SelectAllOutlined'; +import UnzipIcon from '@mui/icons-material/UnarchiveOutlined'; +import type React from 'react'; + +import type { DiagramOperation } from '../types/diagram'; + +export function getIcon(op: DiagramOperation): React.ComponentType { + switch (op.type) { + case 'node': + return NodeIcon; + case 'section': + return SectionIcon; + case 'fork_clone': + return ForkCloneIcon; + case 'unzip': + return UnzipIcon; + case 'fork_result': + return ForkResult; + case 'split': + return SplitIcon; + case 'join': + return JoinIcon; + case 'serialized_join': + return SerializedJoinIcon; + case 'transform': + return TransformIcon; + case 'buffer': + return BufferIcon; + case 'buffer_access': + return BufferAccessIcon; + case 'listen': + return ListenIcon; + default: + return () => null; // Return a component that renders nothing + } +} + +export { default as TransformIcon } from '@mui/icons-material/ChangeCircleOutlined'; +export { + default as BufferAccessIcon, + default as BufferIcon, +} from '@mui/icons-material/CloudOutlined'; +export { default as ForkCloneIcon } from '@mui/icons-material/ContentCopyOutlined'; +export { default as NodeIcon } from '@mui/icons-material/ExtensionOutlined'; +export { default as SplitIcon } from '@mui/icons-material/ForkLeftOutlined'; +export { default as ForkResult } from '@mui/icons-material/ForkRightOutlined'; +export { default as ListenIcon } from '@mui/icons-material/HearingOutlined'; +export { + default as JoinIcon, + default as SerializedJoinIcon, +} from '@mui/icons-material/MergeOutlined'; +export { default as SectionIcon } from '@mui/icons-material/SelectAllOutlined'; +export { default as UnzipIcon } from '@mui/icons-material/UnarchiveOutlined'; diff --git a/diagram-editor/frontend/nodes/index.ts b/diagram-editor/frontend/nodes/index.ts index 5d9215da..f506c7c0 100644 --- a/diagram-editor/frontend/nodes/index.ts +++ b/diagram-editor/frontend/nodes/index.ts @@ -18,14 +18,24 @@ export const NODE_TYPES = { export type NodeTypes = keyof typeof NODE_TYPES; -export type DiagramEditorNode = Node< - DiagramOperation | Record, +export type BuiltinNode = Node, NodeTypes>; + +export type OperationNode = Node< + DiagramOperation & { opId: string }, NodeTypes >; +export type DiagramEditorNode = BuiltinNode | OperationNode; + type JoinOperation = Extract< DiagramOperation, { type: 'join' } | { type: 'serialized_join' } >; export type JoinNode = Node; + +export function isOperationNode( + node: DiagramEditorNode, +): node is OperationNode { + return !node.id.startsWith('builtin:'); +} diff --git a/diagram-editor/frontend/nodes/input-output-node.tsx b/diagram-editor/frontend/nodes/input-output-node.tsx index 9b07893a..b792e173 100644 --- a/diagram-editor/frontend/nodes/input-output-node.tsx +++ b/diagram-editor/frontend/nodes/input-output-node.tsx @@ -2,15 +2,24 @@ import { Button, Paper } from '@mui/material'; import type { NodeProps } from '@xyflow/react'; import { Handle, Position } from '@xyflow/react'; -import type { DiagramEditorNode } from '.'; +import type { DiagramEditorNode, OperationNode } from '.'; +import { getIcon } from './icons'; + +function isOperationData( + data: DiagramEditorNode['data'], +): data is OperationNode['data'] { + return 'type' in data; +} export function InputOutputNode({ - id, + data, isConnectable, selected, sourcePosition = Position.Bottom, targetPosition = Position.Top, }: NodeProps) { + const IconComponent = isOperationData(data) ? getIcon(data) : null; + return ( = DEFAULT_OPTIONS, ): NodePositionChange[] { - const cellWidth = 200; - const cellHeight = 100; const map = new Map(nodes.map((node) => [node.id, node])); const getNode = (id: string) => { diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 5147381c..34ca4208 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -135,7 +135,7 @@ function buildGraph(diagram: Diagram): Graph { id: opId, type: 'inputOutput', position: { x: 0, y: 0 }, - data: op, + data: { opId, ...op }, }) satisfies DiagramEditorNode, ), ]; From d887a39834958a16ab4434c966306c42c290c676 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 4 Jun 2025 09:18:39 +0000 Subject: [PATCH 015/165] serve diagram editor from root to make url rewriting easier Signed-off-by: Teo Koon Peng --- diagram-editor/rsbuild.config.ts | 6 - diagram-editor/server/lib.rs | 180 ++++++++++-------------- examples/diagram/calculator/src/main.rs | 5 +- 3 files changed, 73 insertions(+), 118 deletions(-) diff --git a/diagram-editor/rsbuild.config.ts b/diagram-editor/rsbuild.config.ts index cffce1b6..3995a5b5 100644 --- a/diagram-editor/rsbuild.config.ts +++ b/diagram-editor/rsbuild.config.ts @@ -13,11 +13,5 @@ export default defineConfig({ viewport: 'width=device-width, initial-scale=1.0', }, }, - output: { - assetPrefix: '/diagram_editor', - }, - dev: { - assetPrefix: '/diagram_editor', - }, plugins: [pluginReact()], }); diff --git a/diagram-editor/server/lib.rs b/diagram-editor/server/lib.rs index 120b3d68..bfe8647b 100644 --- a/diagram-editor/server/lib.rs +++ b/diagram-editor/server/lib.rs @@ -9,14 +9,59 @@ use axum::{ use flate2::read::GzDecoder; use std::collections::HashMap; use std::io::Read; -use std::sync::LazyLock; use tar::Archive; // This will include the bytes of the dist.tar.gz file from the OUT_DIR // The path is constructed at compile time. const DIST_TAR_GZ: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/dist.tar.gz")); -static DIST: LazyLock>> = LazyLock::new(|| { +/// Create a new [`axum::Router`] with routes for the diagram editor. +pub fn new_router() -> Router { + let dist = load_dist(); + let index_html = dist + .get(std::path::Path::new("index.html")) + .expect("index.html not found in dist") + .clone(); + Router::new() + .route("/", get(move || handle_text_html(index_html))) + .route("/{*path}", get(move |path| handle_asset(dist, path))) +} + +async fn handle_text_html(html: Vec) -> impl IntoResponse { + let mime_type = "text/html"; + Response::builder() + .status(StatusCode::OK) + .header(header::CONTENT_TYPE, mime_type) + .body(Body::from(html)) + .unwrap_or_else(|_| internal_server_error_response()) +} + +async fn handle_asset( + dist: HashMap>, + Path(path_str): Path, +) -> impl IntoResponse { + let requested_file_path = std::path::PathBuf::from(path_str); + + // Attempt to serve the specific file + if let Some(file_bytes) = dist.get(&requested_file_path) { + let mime_type = mime_guess::from_path(&requested_file_path) + .first_or_octet_stream() + .to_string(); + + return Response::builder() + .status(StatusCode::OK) + .header(header::CONTENT_TYPE, mime_type) + .body(Body::from(file_bytes.clone())) + .unwrap_or_else(|_| internal_server_error_response()); + } + + return Response::builder() + .status(StatusCode::NOT_FOUND) + .body(Body::from("Not found")) + .unwrap_or_else(|_| internal_server_error_response()); +} + +fn load_dist() -> HashMap> { let mut archive = Archive::new(GzDecoder::new(DIST_TAR_GZ)); let mut files = HashMap::new(); @@ -42,7 +87,7 @@ static DIST: LazyLock>> = LazyLock::new(|| { ); } files -}); +} fn internal_server_error_response() -> Response { Response::builder() @@ -51,118 +96,16 @@ fn internal_server_error_response() -> Response { .unwrap() // Should not fail } -// Handles requests for assets, with SPA fallback logic. -async fn asset_request_handler(Path(path_str): Path) -> impl IntoResponse { - // Path is relative to the route, e.g., "main.js" or "some/spa/route". - // It does not start with a '/'. - let mut requested_file_path = std::path::PathBuf::from(path_str); - - // If the path is empty (e.g. from root_asset_handler), it means "index.html". - if requested_file_path.as_os_str().is_empty() { - requested_file_path = std::path::PathBuf::from("index.html"); - } - - // Attempt to serve the specific file - if let Some(file_bytes) = DIST.get(&requested_file_path) { - let mime_type = mime_guess::from_path(&requested_file_path) - .first_or_octet_stream() - .to_string(); - - return Response::builder() - .status(StatusCode::OK) - .header(header::CONTENT_TYPE, mime_type) - .body(Body::from(file_bytes.clone())) - .unwrap_or_else(|_| internal_server_error_response()); - } - - // If the specific file is not found: - // 1. If it has an extension, it's likely a request for a missing asset (e.g., /js/nonexistent.js). Return 404. - // 2. If it does not have an extension, it's likely an SPA route (e.g., /my-view). Serve index.html. - if requested_file_path.extension().is_some() { - return Response::builder() - .status(StatusCode::NOT_FOUND) - .body(Body::from(format!( - "Asset not found: {:?}", - requested_file_path - ))) - .unwrap_or_else(|_| internal_server_error_response()); - } - - // Fallback to serving index.html for SPA routing (path without extension not found) - if let Some(index_bytes) = DIST.get(&std::path::PathBuf::from("index.html")) { - let mime_type = mime_guess::from_path("index.html") // index.html always has this mime type - .first_or_octet_stream() - .to_string(); - - Response::builder() - .status(StatusCode::OK) // SPA fallback returns 200 with index.html content - .header(header::CONTENT_TYPE, mime_type) - .body(Body::from(index_bytes.clone())) - .unwrap_or_else(|_| internal_server_error_response()) - } else { - // This is a critical issue: index.html itself is missing from the embedded assets. - Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .body(Body::from( - "Fatal error: index.html not found in embedded assets.", - )) - .unwrap_or_else(|_| internal_server_error_response()) - } -} - -// Specific handler for the root of the mounted path, ensuring it serves index.html. -// It calls asset_request_handler with an empty path, which asset_request_handler interprets as "index.html". -async fn root_asset_handler() -> impl IntoResponse { - asset_request_handler(Path(String::new())).await -} - -/// Nests the diagram editor under `/diagram_editor`. -/// The router MUST be nested under `/diagram_editor` because it is fixed when the frontend is compiled. -pub fn nest_diagram_router(router: Router) -> Router { - router.nest( - "/diagram_editor", - Router::new() - .route("/", get(root_asset_handler)) - .route("/{*path}", get(asset_request_handler)), - ) -} - #[cfg(test)] mod tests { use super::*; use axum::{ - body::{to_bytes, Body}, + body::Body, http::{header, Request, StatusCode}, }; use tower::Service; - // Helper to get expected index.html content. - // Panics if index.html is not found in the embedded DIST assets, - // which would indicate an issue with the build process or frontend assets. - fn get_expected_index_html_content() -> Vec { - let index_html_path = std::path::PathBuf::from("index.html"); - DIST.get(&index_html_path) - .expect("index.html not found in DIST. Ensure build.rs ran successfully and pnpm build produced index.html.") - .clone() - } - - #[tokio::test] - async fn test_serves_index_html() { - let expected_content = get_expected_index_html_content(); - let public_path = "/diagram_editor"; - let mut app = nest_diagram_router(Router::new()); - - // Test request to "/diagram_editor" - let response = app - .call( - Request::builder() - .uri(format!("{}", public_path)) - .body(Body::empty()) - .unwrap(), - ) - .await - .unwrap(); - + fn assert_index_respoonse_headers(response: &Response) { assert_eq!(response.status(), StatusCode::OK); assert_eq!( response @@ -173,7 +116,26 @@ mod tests { .unwrap(), "text/html" ); - let body_bytes = to_bytes(response.into_body(), usize::MAX).await.unwrap(); - assert_eq!(body_bytes, expected_content); + } + + #[tokio::test] + async fn test_serves_index_html_with_root_url() { + let mut app = new_router(); + let response = app + .call(Request::builder().uri("/").body(Body::empty()).unwrap()) + .await + .unwrap(); + assert_index_respoonse_headers(&response); + } + + #[tokio::test] + async fn test_serves_index_html_with_direct_path() { + let path = "/index.html"; + let mut app = new_router(); + let response = app + .call(Request::builder().uri(path).body(Body::empty()).unwrap()) + .await + .unwrap(); + assert_index_respoonse_headers(&response); } } diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index 1f56c276..c82dbbf7 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -1,9 +1,8 @@ -use axum::Router; use bevy_impulse::{ Diagram, DiagramElementRegistry, DiagramError, ImpulsePlugin, NodeBuilderOptions, Promise, RequestExt, RunCommandsOnWorldExt, }; -use bevy_impulse_diagram_editor::nest_diagram_router; +use bevy_impulse_diagram_editor::new_router; use clap::Parser; use std::{error::Error, fs::File, str::FromStr}; @@ -82,7 +81,7 @@ fn run(args: RunArgs) -> Result<(), Box> { async fn serve(_args: ServeArgs) -> Result<(), Box> { println!("Serving diagram editor at http://localhost:3000/diagram_editor"); - let router = nest_diagram_router(Router::new()); + let router = new_router(); let listener = tokio::net::TcpListener::bind("localhost:3000") .await .unwrap(); From 7c67496843bb65227388d5b0a251b0f5793ba5f3 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 4 Jun 2025 09:35:42 +0000 Subject: [PATCH 016/165] update comment Signed-off-by: Teo Koon Peng --- examples/diagram/calculator/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index c82dbbf7..ba547486 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -79,7 +79,7 @@ fn run(args: RunArgs) -> Result<(), Box> { } async fn serve(_args: ServeArgs) -> Result<(), Box> { - println!("Serving diagram editor at http://localhost:3000/diagram_editor"); + println!("Serving diagram editor at http://localhost:3000"); let router = new_router(); let listener = tokio::net::TcpListener::bind("localhost:3000") From 4bb6b74fb508ee337bb7a49aa6637a838d5294bc Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 4 Jun 2025 09:40:17 +0000 Subject: [PATCH 017/165] fix uncaught error when base64 decode fails Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 29c957cd..7e7e241b 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -118,8 +118,8 @@ const DiagramEditor = () => { return; } - const decodedDiagram = atob(diagramParam); try { + const decodedDiagram = atob(diagramParam); loadDiagram(decodedDiagram); } catch (e) { if (e instanceof Error) { From a625906f5b1ab09bcbc7c2a74f100875703a0818 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 9 Jun 2025 05:33:49 +0000 Subject: [PATCH 018/165] support exporting diagram Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 37 +++++- .../frontend/export-diagram-dialog.tsx | 122 ++++++++++++++++++ diagram-editor/frontend/nodes/index.ts | 7 + .../frontend/utils/export-diagram.test.ts | 9 ++ .../frontend/utils/export-diagram.ts | 32 +++++ diagram-editor/package.json | 1 + pnpm-lock.yaml | 8 ++ 7 files changed, 210 insertions(+), 6 deletions(-) create mode 100644 diagram-editor/frontend/export-diagram-dialog.tsx create mode 100644 diagram-editor/frontend/utils/export-diagram.test.ts create mode 100644 diagram-editor/frontend/utils/export-diagram.ts diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 7e7e241b..0acb175d 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -1,4 +1,5 @@ import AutoLayoutIcon from '@mui/icons-material/Dashboard'; +import DownloadIcon from '@mui/icons-material/Download'; import UploadIcon from '@mui/icons-material/UploadFile'; import { Alert, @@ -21,19 +22,21 @@ import { applyNodeChanges, reconnectEdge, } from '@xyflow/react'; +import { inflateSync, strFromU8 } from 'fflate'; import React, { useEffect } from 'react'; import AddOperation from './add-operation'; import type { OperationFormProps } from './forms'; import NodeForm from './forms/node-form'; import { type DiagramEditorNode, - isOperationNode, NODE_TYPES, START_ID, TERMINATE_ID, + isOperationNode, } from './nodes'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson } from './utils/load-diagram'; +import ExportDiagramDialog from './export-diagram-dialog'; const VisuallyHiddenInput = styled('input')({ clip: 'rect(0 0 0 0)', @@ -60,7 +63,7 @@ function getOperationForm( } } -const NonIntrusivePopoverContainer = ({ +const NonCapturingPopoverContainer = ({ children, }: { children: React.ReactNode }) => <>{children}; @@ -119,8 +122,13 @@ const DiagramEditor = () => { } try { - const decodedDiagram = atob(diagramParam); - loadDiagram(decodedDiagram); + const binaryString = atob(diagramParam); + const byteArray = new Uint8Array(binaryString.length); + for (let i = 0; i < binaryString.length; i++) { + byteArray[i] = binaryString.charCodeAt(i); + } + const diagramJson = strFromU8(inflateSync(byteArray)); + loadDiagram(diagramJson); } catch (e) { if (e instanceof Error) { setErrorToast(`failed to load diagram: ${e.message}`); @@ -133,6 +141,8 @@ const DiagramEditor = () => { const [errorToast, setErrorToast] = React.useState(null); const [openErrorToast, setOpenErrorToast] = React.useState(false); + const [openExportDiagramDialog, setOpenExportDiagramDialog] = + React.useState(false); const handleMouseDown = React.useCallback(() => { mouseDownTime.current = new Date().getTime(); @@ -234,6 +244,15 @@ const DiagramEditor = () => { + + + {/* biome-ignore lint/a11y/useValidAriaRole: button used as a label, should have no role */} + + + + + + + + + ); +} + +export default ExportDiagramDialog; diff --git a/diagram-editor/frontend/nodes/index.ts b/diagram-editor/frontend/nodes/index.ts index f506c7c0..e825f896 100644 --- a/diagram-editor/frontend/nodes/index.ts +++ b/diagram-editor/frontend/nodes/index.ts @@ -39,3 +39,10 @@ export function isOperationNode( ): node is OperationNode { return !node.id.startsWith('builtin:'); } + +export function extractOperation(node: OperationNode): DiagramOperation { + const op: DiagramOperation = { ...node.data }; + const opIdKey = 'opId'; + delete op[opIdKey]; + return op; +} diff --git a/diagram-editor/frontend/utils/export-diagram.test.ts b/diagram-editor/frontend/utils/export-diagram.test.ts new file mode 100644 index 00000000..a554c0b0 --- /dev/null +++ b/diagram-editor/frontend/utils/export-diagram.test.ts @@ -0,0 +1,9 @@ +import { exportDiagram } from './export-diagram'; +import { loadDiagramJson } from './load-diagram'; +import testDiagram from './test-data/test-diagram.json'; + +test('export diagram', () => { + const { nodes, edges } = loadDiagramJson(JSON.stringify(testDiagram)); + const diagram = exportDiagram(nodes, edges); + expect(diagram).toEqual(testDiagram); +}); diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts new file mode 100644 index 00000000..c234783a --- /dev/null +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -0,0 +1,32 @@ +import type { Edge } from '@xyflow/react'; +import { + type DiagramEditorNode, + extractOperation, + isOperationNode, + START_ID, +} from '../nodes'; +import type { Diagram } from '../types/diagram'; + +export function exportDiagram(nodes: DiagramEditorNode[], edges: Edge[]) { + const diagram: Diagram = { + $schema: + 'https://raw.githubusercontent.com/open-rmf/bevy_impulse/refs/heads/main/diagram.schema.json', + version: '0.1.0', + start: '', + ops: {}, + }; + + for (const node of nodes) { + if (isOperationNode(node)) { + diagram.ops[node.id] = extractOperation(node); + } + } + + // only need to process the start edge, the diagram connections should always be in sync with the edges. + const startEdge = edges.find((edge) => edge.source === START_ID); + if (startEdge) { + diagram.start = startEdge.target; + } + + return diagram; +} diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 51e1e850..577225a1 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -21,6 +21,7 @@ "@xyflow/react": "^12.6.1", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", + "fflate": "^0.8.2", "react": "^19.1.0", "react-dom": "^19.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2112ba5c..266276f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: ajv-formats: specifier: ^3.0.1 version: 3.0.1(ajv@8.17.1) + fflate: + specifier: ^0.8.2 + version: 0.8.2 react: specifier: ^19.1.0 version: 19.1.0 @@ -1175,6 +1178,9 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -3352,6 +3358,8 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fflate@0.8.2: {} + filelist@1.0.4: dependencies: minimatch: 5.1.6 From 6a12ae258e0bcbdc66a45adfe7b393f5b37e893e Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 9 Jun 2025 09:44:36 +0000 Subject: [PATCH 019/165] wip syncing operation connection and react flow edges Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 37 ++- diagram-editor/frontend/nodes/index.ts | 38 ++- .../frontend/utils/connection.test.ts | 282 ++++++++++++++++++ diagram-editor/frontend/utils/connection.ts | 95 ++++++ diagram-editor/frontend/utils/exhaustive.ts | 19 ++ .../frontend/utils/load-diagram.test.ts | 12 +- diagram-editor/frontend/utils/load-diagram.ts | 15 +- 7 files changed, 481 insertions(+), 17 deletions(-) create mode 100644 diagram-editor/frontend/utils/connection.test.ts create mode 100644 diagram-editor/frontend/utils/connection.ts create mode 100644 diagram-editor/frontend/utils/exhaustive.ts diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 0acb175d..e0945e9f 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -12,7 +12,6 @@ import { styled, } from '@mui/material'; import { - type Edge, Panel, ReactFlow, type ReactFlowInstance, @@ -25,9 +24,11 @@ import { import { inflateSync, strFromU8 } from 'fflate'; import React, { useEffect } from 'react'; import AddOperation from './add-operation'; +import ExportDiagramDialog from './export-diagram-dialog'; import type { OperationFormProps } from './forms'; import NodeForm from './forms/node-form'; import { + type DiagramEditorEdge, type DiagramEditorNode, NODE_TYPES, START_ID, @@ -35,8 +36,8 @@ import { isOperationNode, } from './nodes'; import { autoLayout } from './utils/auto-layout'; +import { addConnection } from './utils/connection'; import { loadDiagramJson } from './utils/load-diagram'; -import ExportDiagramDialog from './export-diagram-dialog'; const VisuallyHiddenInput = styled('input')({ clip: 'rect(0 0 0 0)', @@ -68,8 +69,10 @@ const NonCapturingPopoverContainer = ({ }: { children: React.ReactNode }) => <>{children}; const DiagramEditor = () => { - const reactFlowInstance = - React.useRef | null>(null); + const reactFlowInstance = React.useRef | null>(null); const [nodes, setNodes] = React.useState(() => [ { @@ -87,7 +90,7 @@ const DiagramEditor = () => { data: {}, }, ]); - const [edges, setEdges] = React.useState([]); + const [edges, setEdges] = React.useState([]); const [openAddOpPopover, setOpenAddOpPopover] = React.useState(false); const [addOpAnchorPos, setAddOpAnchorPos] = React.useState({ @@ -164,10 +167,26 @@ const DiagramEditor = () => { onNodesChange={(changes) => setNodes((prev) => applyNodeChanges(changes, prev)) } - onEdgesChange={(changes) => - setEdges((prev) => applyEdgeChanges(changes, prev)) - } - onConnect={(params) => setEdges((prev) => addEdge(params, prev))} + onEdgesChange={(changes) => { + for (const change of changes) { + if (change.type === 'add' || change.type === 'replace') { + const source = nodes.find( + (node) => node.id === change.item.source, + ); + if (!source) { + throw new Error( + `failed to add connection: cannot find source node "${change.item.source}`, + ); + } + addConnection(source, change.item); + } + } + setEdges((prev) => applyEdgeChanges(changes, prev)); + // no need to apply node changes + }} + onConnect={(conn) => { + setEdges((prev) => addEdge(conn, prev)); + }} onReconnect={(oldEdge, newConnection) => setEdges((prev) => reconnectEdge(oldEdge, newConnection, prev)) } diff --git a/diagram-editor/frontend/nodes/index.ts b/diagram-editor/frontend/nodes/index.ts index e825f896..205cf8a0 100644 --- a/diagram-editor/frontend/nodes/index.ts +++ b/diagram-editor/frontend/nodes/index.ts @@ -1,7 +1,7 @@ import { StartNode } from './start-node'; import { TerminateNode } from './terminate-node'; -import type { Node } from '@xyflow/react'; +import type { Edge, Node } from '@xyflow/react'; import type { DiagramOperation } from '../types/diagram'; import { InputOutputNode } from './input-output-node'; import { OutputNode } from './output-node'; @@ -46,3 +46,39 @@ export function extractOperation(node: OperationNode): DiagramOperation { delete op[opIdKey]; return op; } + +export type BasicEdgeData = { + type: 'basic'; +}; + +export type UnzipEdgeData = { + type: 'unzip'; + seq: number; +}; + +export type ForkResultEdgeData = { + type: 'ok' | 'err'; +}; + +export type SplitKeyEdgeData = { + type: 'splitKey'; + key: string; +}; + +export type SplitSequentialEdgeData = { + type: 'splitSequential'; + seq: number; +}; + +export type SplitRemainingEdgeData = { + type: 'splitRemaining'; +}; + +export type SplitEdgeData = + | SplitKeyEdgeData + | SplitSequentialEdgeData + | SplitRemainingEdgeData; + +export type DiagramEditorEdge = Edge< + BasicEdgeData | UnzipEdgeData | ForkResultEdgeData | SplitEdgeData +>; diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts new file mode 100644 index 00000000..71fafee2 --- /dev/null +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -0,0 +1,282 @@ +import { + type DiagramEditorEdge, + type DiagramEditorNode, + START_ID, + TERMINATE_ID, +} from '../nodes'; +import type { DiagramOperation } from '../types/diagram'; +import { addConnection } from './connection'; + +describe('addConnection', () => { + let fromNode: DiagramEditorNode; + let edge: DiagramEditorEdge; + + beforeEach(() => { + // Reset nodes and edges for each test + fromNode = { + id: 'testNode', + type: 'inputOutput', + position: { x: 0, y: 0 }, + data: { + opId: 'testOp', + type: 'node', + builder: 'testBuilder', + next: '', + }, + }; + edge = { + id: 'testEdge', + source: 'testNode', + target: 'node2', + data: undefined, + }; + }); + + it('should throw an error if source node is "start"', () => { + fromNode.id = START_ID; + expect(() => addConnection(fromNode, edge)).toThrow( + 'source node cannot be "start"', + ); + }); + + it('should throw an error if source node is "terminate"', () => { + fromNode.id = TERMINATE_ID; + expect(() => addConnection(fromNode, edge)).toThrow( + 'source node cannot be "terminate"', + ); + }); + + it('should throw an error for "buffer" node type', () => { + fromNode.data = { opId: 'testOp', type: 'buffer' }; + expect(() => addConnection(fromNode, edge)).toThrow( + 'buffer operations cannot have connections', + ); + }); + + // Test cases for 'node', 'join', 'serialized_join', 'transform', 'buffer_access', 'listen' + for (const type of [ + 'node', + 'join', + 'serialized_join', + 'transform', + 'buffer_access', + 'listen', + ] as DiagramOperation['type'][]) { + it(`should set next for "${type}" node type`, () => { + // biome-ignore lint/suspicious/noExplicitAny: using any so we don't have to fully define the operations + fromNode.data = { opId: 'testOp', type, next: '' } as any; + addConnection(fromNode, edge); + expect(fromNode.data.next).toBe('node2'); + }); + + it(`should be idempotent for "${type}" node type`, () => { + // biome-ignore lint/suspicious/noExplicitAny: using any so we don't have to fully define the operations + fromNode.data = { type: type as any, next: 'node2' } as any; + addConnection(fromNode, edge); + expect(fromNode.data.next).toBe('node2'); + }); + } + + describe('fork_clone', () => { + let forkCloneData: Extract< + DiagramEditorNode['data'], + { type: 'fork_clone' } + >; + + beforeEach(() => { + forkCloneData = { opId: 'testOp', type: 'fork_clone', next: [] }; + fromNode.data = forkCloneData; + }); + + it('should add target to next array if not present', () => { + addConnection(fromNode, edge); + expect(forkCloneData.next).toEqual(['node2']); + }); + + it('should not add target if already present', () => { + fromNode.data.next = ['node2']; + addConnection(fromNode, edge); + expect(forkCloneData.next).toEqual(['node2']); + }); + + it('should add a different target', () => { + fromNode.data.next = ['node3']; + addConnection(fromNode, edge); + expect(forkCloneData.next).toEqual(['node3', 'node2']); + }); + }); + + describe('unzip', () => { + let unzipData: Extract; + + beforeEach(() => { + unzipData = { opId: 'testOp', type: 'unzip', next: [] }; + fromNode.data = unzipData; + }); + + it('should set target at specified sequence in next array for "unzip" edge data type', () => { + edge.data = { type: 'unzip', seq: 1 }; + addConnection(fromNode, edge); + expect(unzipData.next[1]).toBe('node2'); + expect(unzipData.next.length).toBe(2); // JS allows sparse arrays + }); + + it('should overwrite target at specified sequence', () => { + unzipData.next[1] = 'oldNode'; + edge.data = { type: 'unzip', seq: 1 }; + addConnection(fromNode, edge); + expect(unzipData.next[1]).toBe('node2'); + }); + + it('should do nothing if edge data type is not "unzip"', () => { + edge.data = { type: 'ok' }; + const originalNext = [...unzipData.next]; + addConnection(fromNode, edge); + expect(unzipData.next).toEqual(originalNext); + }); + + it('should do nothing if edge data is undefined', () => { + edge.data = undefined; + const originalNext = [...unzipData.next]; + addConnection(fromNode, edge); + expect(unzipData.next).toEqual(originalNext); + }); + }); + + describe('fork_result', () => { + let forkResultData: Extract< + DiagramEditorNode['data'], + { type: 'fork_result' } + >; + + beforeEach(() => { + forkResultData = { opId: 'testOp', type: 'fork_result', ok: '', err: '' }; + fromNode.data = forkResultData; + }); + + it('should set "ok" target for "ok" edge data type', () => { + edge.data = { type: 'ok' }; + addConnection(fromNode, edge); + expect(forkResultData.ok).toBe('node2'); + expect(forkResultData.err).toBe(''); + }); + + it('should set "err" target for "err" edge data type', () => { + edge.data = { type: 'err' }; + addConnection(fromNode, edge); + expect(forkResultData.err).toBe('node2'); + expect(forkResultData.ok).toBe(''); + }); + + it('should do nothing for other edge data types', () => { + edge.data = { type: 'unzip', seq: 0 }; + addConnection(fromNode, edge); + expect(forkResultData.ok).toBe(''); + expect(forkResultData.err).toBe(''); + }); + }); + + describe('split', () => { + let splitData: Extract; + + beforeEach(() => { + splitData = { + opId: 'testOp', + type: 'split', + }; + fromNode.data = splitData; + }); + + describe('splitKey', () => { + it('should initialize keyed and set target for "splitKey" edge data type', () => { + edge.data = { type: 'splitKey', key: 'myKey' }; + addConnection(fromNode, edge); + expect(splitData.keyed).toEqual({ myKey: 'node2' }); + expect(splitData.sequential).toBeUndefined(); + expect(splitData.remaining).toBeUndefined(); + }); + + it('should add to existing keyed object for "splitKey"', () => { + fromNode.data.keyed = { existingKey: 'node0' }; + edge.data = { type: 'splitKey', key: 'myKey' }; + addConnection(fromNode, edge); + expect(splitData.keyed).toEqual({ + existingKey: 'node0', + myKey: 'node2', + }); + }); + + it('should overwrite existing key for "splitKey"', () => { + fromNode.data.keyed = { myKey: 'oldNode' }; + edge.data = { type: 'splitKey', key: 'myKey' }; + addConnection(fromNode, edge); + expect(splitData.keyed).toEqual({ myKey: 'node2' }); + }); + }); + + describe('splitSequential', () => { + it('should initialize sequential and set target for "splitSequential" edge data type', () => { + edge.data = { type: 'splitSequential', seq: 0 }; + addConnection(fromNode, edge); + expect(splitData.sequential?.[0]).toBe('node2'); + expect(splitData.keyed).toBeUndefined(); + expect(splitData.remaining).toBeUndefined(); + }); + + it('should add to existing sequential array for "splitSequential"', () => { + fromNode.data.sequential = ['node0']; + edge.data = { type: 'splitSequential', seq: 1 }; + addConnection(fromNode, edge); + expect(splitData.sequential?.[0]).toBe('node0'); + expect(splitData.sequential?.[1]).toBe('node2'); + }); + + it('should overwrite existing sequence for "splitSequential"', () => { + fromNode.data.sequential = ['node0', 'oldNode']; + edge.data = { type: 'splitSequential', seq: 1 }; + addConnection(fromNode, edge); + expect(splitData.sequential?.[1]).toBe('node2'); + }); + + it('should handle non-sequential array indices for "splitSequential"', () => { + edge.data = { type: 'splitSequential', seq: 2 }; + addConnection(fromNode, edge); + expect(splitData.sequential?.[2]).toBe('node2'); + expect(splitData.sequential?.length).toBe(3); // JS allows sparse arrays + }); + }); + + describe('splitRemaining', () => { + it('should set remaining target for "splitRemaining" edge data type', () => { + edge.data = { type: 'splitRemaining' }; + addConnection(fromNode, edge); + expect(splitData.remaining).toBe('node2'); + expect(splitData.keyed).toBeUndefined(); + expect(splitData.sequential).toBeUndefined(); + }); + + it('should overwrite existing remaining target', () => { + fromNode.data.remaining = 'oldNode'; + edge.data = { type: 'splitRemaining' }; + addConnection(fromNode, edge); + expect(splitData.remaining).toBe('node2'); + }); + }); + + it('should do nothing for other edge data types', () => { + edge.data = { type: 'ok' }; + addConnection(fromNode, edge); + expect(splitData.keyed).toBeUndefined(); + expect(splitData.sequential).toBeUndefined(); + expect(splitData.remaining).toBeUndefined(); + }); + + it('should do nothing if edge data is undefined', () => { + edge.data = undefined; + addConnection(fromNode, edge); + expect(splitData.keyed).toBeUndefined(); + expect(splitData.sequential).toBeUndefined(); + expect(splitData.remaining).toBeUndefined(); + }); + }); +}); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts new file mode 100644 index 00000000..1cc56f0a --- /dev/null +++ b/diagram-editor/frontend/utils/connection.ts @@ -0,0 +1,95 @@ +import { + type DiagramEditorEdge, + type DiagramEditorNode, + START_ID, + TERMINATE_ID, +} from '../nodes'; +import { exhaustiveCheck } from './exhaustive'; + +/** + * Adds a connection to a node data. + * Nothing will be changed if the edge is invalid. But an error will be thrown if the source node is invalid. + * This is idempotent, if the connection exists, it will not do anything. + */ +export function addConnection( + fromNode: DiagramEditorNode, + edge: DiagramEditorEdge, +): void { + if (fromNode.id === START_ID) { + throw new Error('source node cannot be "start"'); + } + if (fromNode.id === TERMINATE_ID) { + throw new Error('source node cannot be "terminate"'); + } + + switch (fromNode.data.type) { + case 'node': + case 'join': + case 'serialized_join': + case 'transform': + case 'buffer_access': + case 'listen': { + fromNode.data.next = edge.target; + break; + } + case 'section': { + throw new Error('TODO'); + } + case 'fork_clone': { + if (!fromNode.data.next.includes(edge.target)) { + fromNode.data.next.push(edge.target); + } + break; + } + case 'unzip': { + if (edge.data?.type !== 'unzip') { + break; + } + fromNode.data.next[edge.data.seq] = edge.target; + break; + } + case 'fork_result': { + switch (edge.data?.type) { + case 'ok': { + fromNode.data.ok = edge.target; + break; + } + case 'err': { + fromNode.data.err = edge.target; + break; + } + } + break; + } + case 'split': { + switch (edge.data?.type) { + case 'splitKey': { + if (!fromNode.data.keyed) { + fromNode.data.keyed = {}; + } + fromNode.data.keyed[edge.data.key] = edge.target; + break; + } + case 'splitSequential': { + if (!fromNode.data.sequential) { + fromNode.data.sequential = []; + } + // this works because js allows non-sequential arrays + fromNode.data.sequential[edge.data.seq] = edge.target; + break; + } + case 'splitRemaining': { + fromNode.data.remaining = edge.target; + break; + } + } + break; + } + case 'buffer': { + throw new Error('buffer operations cannot have connections'); + } + default: { + exhaustiveCheck(fromNode.data); + } + } +} diff --git a/diagram-editor/frontend/utils/exhaustive.ts b/diagram-editor/frontend/utils/exhaustive.ts new file mode 100644 index 00000000..6ad8cb8b --- /dev/null +++ b/diagram-editor/frontend/utils/exhaustive.ts @@ -0,0 +1,19 @@ +/** + * A trick to make typescript checks that the `switch` statement covers all cases. + * + * This works by taking an argument of type `never`, which will only be true when all cases are covered. + * + * # Example + * + * ```ts + * switch (value) { + * case 'valueA': + * break; + * case 'valueB': + * break; + * default: + * exhaustiveCheck(type) + * } + * ``` + */ +export function exhaustiveCheck(_: never) {} diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index 2a88596c..4bbe16ed 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -1,10 +1,16 @@ +import { applyNodeChanges } from '@xyflow/react'; +import { autoLayout } from './auto-layout'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; -test('load diagram json', () => { - const { nodes, edges } = loadDiagramJson(JSON.stringify(testDiagram)); +test('load diagram json and auto layout', () => { + const graph = loadDiagramJson(JSON.stringify(testDiagram)); + const nodes = applyNodeChanges( + autoLayout(graph.startNodeId, graph.nodes), + graph.nodes, + ); expect(nodes.length).toBe(8); - expect(edges.length).toBe(8); + expect(graph.edges.length).toBe(8); const map = new Map(nodes.map((node) => [node.id, node])); const start = map.get('builtin:start'); diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 34ca4208..f81e45a1 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,9 +1,13 @@ import Ajv from 'ajv'; import addFormats from 'ajv-formats'; -import type { Edge } from '@xyflow/react'; import diagramSchema from '../diagram.schema.json'; -import { type DiagramEditorNode, START_ID, TERMINATE_ID } from '../nodes'; +import { + type DiagramEditorEdge, + type DiagramEditorNode, + START_ID, + TERMINATE_ID, +} from '../nodes'; import type { BufferSelection, Diagram, @@ -14,7 +18,7 @@ import type { export interface Graph { startNodeId: string; nodes: DiagramEditorNode[]; - edges: Edge[]; + edges: DiagramEditorEdge[]; } export function loadDiagramJson(jsonStr: string): Graph { @@ -140,7 +144,7 @@ function buildGraph(diagram: Diagram): Graph { ), ]; const startNodeId = getNodeId(diagram.start); - const edges: Edge[] = [ + const edges: DiagramEditorEdge[] = [ { id: `${START_ID}->${startNodeId}`, source: START_ID, @@ -156,6 +160,9 @@ function buildGraph(diagram: Diagram): Graph { }); } } + + // TODO: fill in the edge data + return { startNodeId, nodes, edges }; } From 4214105be19a45d9b6b94333816f65f4d530c29e Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 10 Jun 2025 04:35:13 +0000 Subject: [PATCH 020/165] add edge data when loading diagram Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 33 +- diagram-editor/frontend/diagram-editor.tsx | 19 +- .../frontend/export-diagram-dialog.tsx | 7 +- diagram-editor/frontend/nodes/index.ts | 41 ++- diagram-editor/frontend/utils/auto-layout.ts | 31 +- .../frontend/utils/connection.test.ts | 294 ++++++++---------- diagram-editor/frontend/utils/connection.ts | 183 +++++++++-- .../frontend/utils/export-diagram.ts | 15 +- .../frontend/utils/load-diagram.test.ts | 2 +- diagram-editor/frontend/utils/load-diagram.ts | 107 +------ diagram-editor/frontend/utils/operation.ts | 260 ++++++++++++++++ 11 files changed, 637 insertions(+), 355 deletions(-) create mode 100644 diagram-editor/frontend/utils/operation.ts diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 9c06b6d9..6296b432 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -36,10 +36,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_node', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'node', builder: '', next: { builtin: 'dispose' }, @@ -57,10 +58,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_fork_clone', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'fork_clone', next: [], }, @@ -76,10 +78,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_unzip', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'unzip', next: [], }, @@ -95,10 +98,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_fork_result', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'fork_result', err: '', ok: '', @@ -115,10 +119,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_split', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'split', }, }, @@ -133,10 +138,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_join', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'join', buffers: [], next: { builtin: 'dispose' }, @@ -153,10 +159,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_serialized_join', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'serialized_join', buffers: [], next: { builtin: 'dispose' }, @@ -173,10 +180,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_transform', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'transform', cel: '', next: { builtin: 'dispose' }, @@ -193,10 +201,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_buffer', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'buffer', }, }, @@ -211,10 +220,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_buffer_access', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'buffer_access', buffers: [], next: { builtin: 'dispose' }, @@ -231,10 +241,11 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_listen', + id: 'new_operation', type: 'inputOutput', position: { x: 0, y: 0 }, data: { + opId: 'new_operation', type: 'listen', buffers: [], next: { builtin: 'dispose' }, diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index e0945e9f..3cc2f9e0 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -36,7 +36,6 @@ import { isOperationNode, } from './nodes'; import { autoLayout } from './utils/auto-layout'; -import { addConnection } from './utils/connection'; import { loadDiagramJson } from './utils/load-diagram'; const VisuallyHiddenInput = styled('input')({ @@ -108,7 +107,7 @@ const DiagramEditor = () => { const loadDiagram = React.useCallback((jsonStr: string) => { const graph = loadDiagramJson(jsonStr); - const changes = autoLayout(graph.startNodeId, graph.nodes); + const changes = autoLayout(graph.startNodeId, graph.nodes, graph.edges); setNodes(applyNodeChanges(changes, graph.nodes)); setEdges(graph.edges); reactFlowInstance.current?.fitView(); @@ -168,21 +167,7 @@ const DiagramEditor = () => { setNodes((prev) => applyNodeChanges(changes, prev)) } onEdgesChange={(changes) => { - for (const change of changes) { - if (change.type === 'add' || change.type === 'replace') { - const source = nodes.find( - (node) => node.id === change.item.source, - ); - if (!source) { - throw new Error( - `failed to add connection: cannot find source node "${change.item.source}`, - ); - } - addConnection(source, change.item); - } - } setEdges((prev) => applyEdgeChanges(changes, prev)); - // no need to apply node changes }} onConnect={(conn) => { setEdges((prev) => addEdge(conn, prev)); @@ -253,7 +238,7 @@ const DiagramEditor = () => { const startEdge = edges.find((e) => e.source === START_ID); if (startEdge) { - const changes = autoLayout(startEdge.target, nodes, { + const changes = autoLayout(startEdge.target, nodes, edges, { rootPosition: startNode.position, }); setNodes((prev) => applyNodeChanges(changes, prev)); diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index ed9142a8..b4ba5f36 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -8,17 +8,16 @@ import { TextField, Typography, } from '@mui/material'; -import type { Edge } from '@xyflow/react'; import { deflateSync, strToU8 } from 'fflate'; -import type { DiagramEditorNode } from './nodes'; -import { exportDiagram } from './utils/export-diagram'; import React from 'react'; +import type { DiagramEditorEdge, DiagramEditorNode } from './nodes'; +import { exportDiagram } from './utils/export-diagram'; export interface ExportDiagramDialogProps { open: boolean; onClose: () => void; nodes: DiagramEditorNode[]; - edges: Edge[]; + edges: DiagramEditorEdge[]; } interface DialogData { diff --git a/diagram-editor/frontend/nodes/index.ts b/diagram-editor/frontend/nodes/index.ts index 205cf8a0..dfa8f54d 100644 --- a/diagram-editor/frontend/nodes/index.ts +++ b/diagram-editor/frontend/nodes/index.ts @@ -47,31 +47,53 @@ export function extractOperation(node: OperationNode): DiagramOperation { return op; } +export enum EdgeType { + Basic, + Unzip, + ForkResultOk, + ForkResultErr, + SplitKey, + SplitSequential, + SplitRemaining, + BufferKey, + BufferSeq, +} + export type BasicEdgeData = { - type: 'basic'; + type: EdgeType.Basic; }; export type UnzipEdgeData = { - type: 'unzip'; + type: EdgeType.Unzip; seq: number; }; export type ForkResultEdgeData = { - type: 'ok' | 'err'; + type: EdgeType.ForkResultOk | EdgeType.ForkResultErr; }; export type SplitKeyEdgeData = { - type: 'splitKey'; + type: EdgeType.SplitKey; key: string; }; export type SplitSequentialEdgeData = { - type: 'splitSequential'; + type: EdgeType.SplitSequential; seq: number; }; export type SplitRemainingEdgeData = { - type: 'splitRemaining'; + type: EdgeType.SplitRemaining; +}; + +export type BufferKeyEdgeData = { + type: EdgeType.BufferKey; + key: string; +}; + +export type BufferSeqEdgeData = { + type: EdgeType.BufferSeq; + seq: number; }; export type SplitEdgeData = @@ -80,5 +102,10 @@ export type SplitEdgeData = | SplitRemainingEdgeData; export type DiagramEditorEdge = Edge< - BasicEdgeData | UnzipEdgeData | ForkResultEdgeData | SplitEdgeData + | BasicEdgeData + | UnzipEdgeData + | ForkResultEdgeData + | SplitEdgeData + | BufferKeyEdgeData + | BufferSeqEdgeData >; diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index 5a41419a..eacbf675 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -1,7 +1,6 @@ import type { NodePositionChange } from '@xyflow/react'; -import type { DiagramEditorNode } from '../nodes'; -import { getNextIds } from './load-diagram'; +import type { DiagramEditorEdge, DiagramEditorNode } from '../nodes'; export interface AutoLayoutOptions { rootPosition: { x: number; y: number }; @@ -21,22 +20,38 @@ const DEFAULT_OPTIONS: AutoLayoutOptions = { export function autoLayout( start: string, nodes: DiagramEditorNode[], + edges: DiagramEditorEdge[], { rootPosition = DEFAULT_OPTIONS.rootPosition, cellWidth = DEFAULT_OPTIONS.cellWidth, cellHeight = DEFAULT_OPTIONS.cellHeight, }: Partial = DEFAULT_OPTIONS, ): NodePositionChange[] { - const map = new Map(nodes.map((node) => [node.id, node])); + interface WorkingData { + node: DiagramEditorNode; + nextIds: string[]; + } + + const map = new Map( + nodes.map((node) => [node.id, { node, nextIds: [] } as WorkingData]), + ); - const getNode = (id: string) => { - const node = map.get(id); - if (!node) { + const getWorkingData = (id: string) => { + const workingData = map.get(id); + if (!workingData) { throw new Error(`node ${id} not found`); } - return node; + return workingData; }; + for (const edge of edges) { + const source = getWorkingData(edge.source); + source.nextIds.push(edge.target); + } + + const getNode = (id: string) => getWorkingData(id).node; + const getNextIds = (id: string) => getWorkingData(id).nextIds; + const firstNode = getNode(start); const changes: NodePositionChange[] = [ { @@ -49,7 +64,7 @@ export function autoLayout( let maxX = firstNode.position.x; for (let ctx = fifo.shift(); ctx; ctx = fifo.shift()) { const { node, depth } = ctx; - const nextNodeIds = getNextIds(node, nodes); + const nextNodeIds = getNextIds(node.id); let currentX = node.position.x - ((nextNodeIds.length - 1) * cellWidth) / 2; for (const nextNodeId of nextNodeIds) { const nextNode = getNode(nextNodeId); diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index 71fafee2..bf4c55fe 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -1,56 +1,43 @@ -import { - type DiagramEditorEdge, - type DiagramEditorNode, - START_ID, - TERMINATE_ID, -} from '../nodes'; -import type { DiagramOperation } from '../types/diagram'; -import { addConnection } from './connection'; +import { type DiagramEditorEdge, EdgeType, TERMINATE_ID } from '../nodes'; +import type { Diagram, DiagramOperation } from '../types/diagram'; +import { syncEdge } from './connection'; -describe('addConnection', () => { - let fromNode: DiagramEditorNode; +describe('syncEdge', () => { + let diagram: Diagram; + let testOp1: DiagramOperation; let edge: DiagramEditorEdge; beforeEach(() => { - // Reset nodes and edges for each test - fromNode = { - id: 'testNode', - type: 'inputOutput', - position: { x: 0, y: 0 }, - data: { - opId: 'testOp', - type: 'node', - builder: 'testBuilder', - next: '', + testOp1 = { + type: 'node', + builder: 'testBuilder', + next: { builtin: 'dispose' }, + }; + diagram = { + start: 'testOp1', + version: '0.1.0', + ops: { + testOp1, + testOp2: { + type: 'node', + builder: 'testBuilder', + next: { builtin: 'terminate' }, + }, }, }; edge = { id: 'testEdge', - source: 'testNode', - target: 'node2', - data: undefined, + source: 'testOp1', + target: 'testOp2', + data: { + type: EdgeType.Basic, + }, }; }); - it('should throw an error if source node is "start"', () => { - fromNode.id = START_ID; - expect(() => addConnection(fromNode, edge)).toThrow( - 'source node cannot be "start"', - ); - }); - - it('should throw an error if source node is "terminate"', () => { - fromNode.id = TERMINATE_ID; - expect(() => addConnection(fromNode, edge)).toThrow( - 'source node cannot be "terminate"', - ); - }); - - it('should throw an error for "buffer" node type', () => { - fromNode.data = { opId: 'testOp', type: 'buffer' }; - expect(() => addConnection(fromNode, edge)).toThrow( - 'buffer operations cannot have connections', - ); + it('should throw an error if source is "terminate"', () => { + edge.source = TERMINATE_ID; + expect(() => syncEdge(diagram, edge)).toThrow(); }); // Test cases for 'node', 'join', 'serialized_join', 'transform', 'buffer_access', 'listen' @@ -63,220 +50,189 @@ describe('addConnection', () => { 'listen', ] as DiagramOperation['type'][]) { it(`should set next for "${type}" node type`, () => { - // biome-ignore lint/suspicious/noExplicitAny: using any so we don't have to fully define the operations - fromNode.data = { opId: 'testOp', type, next: '' } as any; - addConnection(fromNode, edge); - expect(fromNode.data.next).toBe('node2'); - }); - - it(`should be idempotent for "${type}" node type`, () => { - // biome-ignore lint/suspicious/noExplicitAny: using any so we don't have to fully define the operations - fromNode.data = { type: type as any, next: 'node2' } as any; - addConnection(fromNode, edge); - expect(fromNode.data.next).toBe('node2'); + testOp1.type = type; + syncEdge(diagram, edge); + expect(testOp1.next).toBe('testOp2'); + syncEdge(diagram, edge); + expect(testOp1.next).toBe('testOp2'); }); } describe('fork_clone', () => { - let forkCloneData: Extract< - DiagramEditorNode['data'], - { type: 'fork_clone' } - >; - beforeEach(() => { - forkCloneData = { opId: 'testOp', type: 'fork_clone', next: [] }; - fromNode.data = forkCloneData; + testOp1 = { type: 'fork_clone', next: [] }; + diagram.ops.testOp1 = testOp1; }); it('should add target to next array if not present', () => { - addConnection(fromNode, edge); - expect(forkCloneData.next).toEqual(['node2']); + syncEdge(diagram, edge); + expect(testOp1.next).toEqual(['testOp2']); }); it('should not add target if already present', () => { - fromNode.data.next = ['node2']; - addConnection(fromNode, edge); - expect(forkCloneData.next).toEqual(['node2']); + testOp1.next = ['testOp2']; + syncEdge(diagram, edge); + expect(testOp1.next).toEqual(['testOp2']); }); it('should add a different target', () => { - fromNode.data.next = ['node3']; - addConnection(fromNode, edge); - expect(forkCloneData.next).toEqual(['node3', 'node2']); + testOp1.next = ['node3']; + syncEdge(diagram, edge); + expect(testOp1.next).toEqual(['node3', 'testOp2']); }); }); describe('unzip', () => { - let unzipData: Extract; + let testOp1: Extract; beforeEach(() => { - unzipData = { opId: 'testOp', type: 'unzip', next: [] }; - fromNode.data = unzipData; + testOp1 = { type: 'unzip', next: [] }; + diagram.ops.testOp1 = testOp1; }); it('should set target at specified sequence in next array for "unzip" edge data type', () => { - edge.data = { type: 'unzip', seq: 1 }; - addConnection(fromNode, edge); - expect(unzipData.next[1]).toBe('node2'); - expect(unzipData.next.length).toBe(2); // JS allows sparse arrays + edge.data = { type: EdgeType.Unzip, seq: 1 }; + syncEdge(diagram, edge); + expect(testOp1.next[1]).toBe('testOp2'); + expect(testOp1.next.length).toBe(2); // JS allows sparse arrays }); it('should overwrite target at specified sequence', () => { - unzipData.next[1] = 'oldNode'; - edge.data = { type: 'unzip', seq: 1 }; - addConnection(fromNode, edge); - expect(unzipData.next[1]).toBe('node2'); + testOp1.next[1] = 'oldNode'; + edge.data = { type: EdgeType.Unzip, seq: 1 }; + syncEdge(diagram, edge); + expect(testOp1.next[1]).toBe('testOp2'); }); it('should do nothing if edge data type is not "unzip"', () => { - edge.data = { type: 'ok' }; - const originalNext = [...unzipData.next]; - addConnection(fromNode, edge); - expect(unzipData.next).toEqual(originalNext); - }); - - it('should do nothing if edge data is undefined', () => { - edge.data = undefined; - const originalNext = [...unzipData.next]; - addConnection(fromNode, edge); - expect(unzipData.next).toEqual(originalNext); + edge.data = { type: EdgeType.Basic }; + const originalNext = [...testOp1.next]; + syncEdge(diagram, edge); + expect(testOp1.next).toEqual(originalNext); }); }); describe('fork_result', () => { - let forkResultData: Extract< - DiagramEditorNode['data'], - { type: 'fork_result' } - >; + let testOp1: Extract; beforeEach(() => { - forkResultData = { opId: 'testOp', type: 'fork_result', ok: '', err: '' }; - fromNode.data = forkResultData; + testOp1 = { + type: 'fork_result', + ok: { builtin: 'dispose' }, + err: { builtin: 'dispose' }, + }; + diagram.ops.testOp1 = testOp1; }); it('should set "ok" target for "ok" edge data type', () => { - edge.data = { type: 'ok' }; - addConnection(fromNode, edge); - expect(forkResultData.ok).toBe('node2'); - expect(forkResultData.err).toBe(''); + edge.data = { type: EdgeType.ForkResultOk }; + syncEdge(diagram, edge); + expect(testOp1.ok).toBe('testOp2'); + expect(testOp1.err).toEqual({ builtin: 'dispose' }); }); it('should set "err" target for "err" edge data type', () => { - edge.data = { type: 'err' }; - addConnection(fromNode, edge); - expect(forkResultData.err).toBe('node2'); - expect(forkResultData.ok).toBe(''); + edge.data = { type: EdgeType.ForkResultErr }; + syncEdge(diagram, edge); + expect(testOp1.err).toBe('testOp2'); + expect(testOp1.ok).toEqual({ builtin: 'dispose' }); }); - it('should do nothing for other edge data types', () => { - edge.data = { type: 'unzip', seq: 0 }; - addConnection(fromNode, edge); - expect(forkResultData.ok).toBe(''); - expect(forkResultData.err).toBe(''); + it('should throw error for other edge data types', () => { + edge.data = { type: EdgeType.Basic }; + expect(() => syncEdge(diagram, edge)).toThrow(); }); }); describe('split', () => { - let splitData: Extract; + let testOp1: Extract; beforeEach(() => { - splitData = { - opId: 'testOp', + testOp1 = { type: 'split', }; - fromNode.data = splitData; + diagram.ops.testOp1 = testOp1; }); describe('splitKey', () => { it('should initialize keyed and set target for "splitKey" edge data type', () => { - edge.data = { type: 'splitKey', key: 'myKey' }; - addConnection(fromNode, edge); - expect(splitData.keyed).toEqual({ myKey: 'node2' }); - expect(splitData.sequential).toBeUndefined(); - expect(splitData.remaining).toBeUndefined(); + edge.data = { type: EdgeType.SplitKey, key: 'myKey' }; + syncEdge(diagram, edge); + expect(testOp1.keyed).toEqual({ myKey: 'testOp2' }); + expect(testOp1.sequential).toBeUndefined(); + expect(testOp1.remaining).toBeUndefined(); }); it('should add to existing keyed object for "splitKey"', () => { - fromNode.data.keyed = { existingKey: 'node0' }; - edge.data = { type: 'splitKey', key: 'myKey' }; - addConnection(fromNode, edge); - expect(splitData.keyed).toEqual({ + testOp1.keyed = { existingKey: 'node0' }; + edge.data = { type: EdgeType.SplitKey, key: 'myKey' }; + syncEdge(diagram, edge); + expect(testOp1.keyed).toEqual({ existingKey: 'node0', - myKey: 'node2', + myKey: 'testOp2', }); }); it('should overwrite existing key for "splitKey"', () => { - fromNode.data.keyed = { myKey: 'oldNode' }; - edge.data = { type: 'splitKey', key: 'myKey' }; - addConnection(fromNode, edge); - expect(splitData.keyed).toEqual({ myKey: 'node2' }); + testOp1.keyed = { myKey: 'oldNode' }; + edge.data = { type: EdgeType.SplitKey, key: 'myKey' }; + syncEdge(diagram, edge); + expect(testOp1.keyed).toEqual({ myKey: 'testOp2' }); }); }); describe('splitSequential', () => { it('should initialize sequential and set target for "splitSequential" edge data type', () => { - edge.data = { type: 'splitSequential', seq: 0 }; - addConnection(fromNode, edge); - expect(splitData.sequential?.[0]).toBe('node2'); - expect(splitData.keyed).toBeUndefined(); - expect(splitData.remaining).toBeUndefined(); + edge.data = { type: EdgeType.SplitSequential, seq: 0 }; + syncEdge(diagram, edge); + expect(testOp1.sequential?.[0]).toBe('testOp2'); + expect(testOp1.keyed).toBeUndefined(); + expect(testOp1.remaining).toBeUndefined(); }); it('should add to existing sequential array for "splitSequential"', () => { - fromNode.data.sequential = ['node0']; - edge.data = { type: 'splitSequential', seq: 1 }; - addConnection(fromNode, edge); - expect(splitData.sequential?.[0]).toBe('node0'); - expect(splitData.sequential?.[1]).toBe('node2'); + testOp1.sequential = ['node0']; + edge.data = { type: EdgeType.SplitSequential, seq: 1 }; + syncEdge(diagram, edge); + expect(testOp1.sequential?.[0]).toBe('node0'); + expect(testOp1.sequential?.[1]).toBe('testOp2'); }); it('should overwrite existing sequence for "splitSequential"', () => { - fromNode.data.sequential = ['node0', 'oldNode']; - edge.data = { type: 'splitSequential', seq: 1 }; - addConnection(fromNode, edge); - expect(splitData.sequential?.[1]).toBe('node2'); + testOp1.sequential = ['node0', 'oldNode']; + edge.data = { type: EdgeType.SplitSequential, seq: 1 }; + syncEdge(diagram, edge); + expect(testOp1.sequential?.[1]).toBe('testOp2'); }); it('should handle non-sequential array indices for "splitSequential"', () => { - edge.data = { type: 'splitSequential', seq: 2 }; - addConnection(fromNode, edge); - expect(splitData.sequential?.[2]).toBe('node2'); - expect(splitData.sequential?.length).toBe(3); // JS allows sparse arrays + edge.data = { type: EdgeType.SplitSequential, seq: 2 }; + syncEdge(diagram, edge); + expect(testOp1.sequential?.[2]).toBe('testOp2'); + expect(testOp1.sequential?.length).toBe(3); // JS allows sparse arrays }); }); - describe('splitRemaining', () => { + describe(EdgeType.SplitRemaining, () => { it('should set remaining target for "splitRemaining" edge data type', () => { - edge.data = { type: 'splitRemaining' }; - addConnection(fromNode, edge); - expect(splitData.remaining).toBe('node2'); - expect(splitData.keyed).toBeUndefined(); - expect(splitData.sequential).toBeUndefined(); + edge.data = { type: EdgeType.SplitRemaining }; + syncEdge(diagram, edge); + expect(testOp1.remaining).toBe('testOp2'); + expect(testOp1.keyed).toBeUndefined(); + expect(testOp1.sequential).toBeUndefined(); }); it('should overwrite existing remaining target', () => { - fromNode.data.remaining = 'oldNode'; - edge.data = { type: 'splitRemaining' }; - addConnection(fromNode, edge); - expect(splitData.remaining).toBe('node2'); + testOp1.remaining = 'oldNode'; + edge.data = { type: EdgeType.SplitRemaining }; + syncEdge(diagram, edge); + expect(testOp1.remaining).toBe('testOp2'); }); }); - it('should do nothing for other edge data types', () => { - edge.data = { type: 'ok' }; - addConnection(fromNode, edge); - expect(splitData.keyed).toBeUndefined(); - expect(splitData.sequential).toBeUndefined(); - expect(splitData.remaining).toBeUndefined(); - }); - - it('should do nothing if edge data is undefined', () => { - edge.data = undefined; - addConnection(fromNode, edge); - expect(splitData.keyed).toBeUndefined(); - expect(splitData.sequential).toBeUndefined(); - expect(splitData.remaining).toBeUndefined(); + it('should throw for other edge data types', () => { + edge.data = { type: EdgeType.Basic }; + expect(() => syncEdge(diagram, edge)).toThrow(); }); }); }); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 1cc56f0a..bf8bc3f0 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,87 +1,127 @@ import { type DiagramEditorEdge, - type DiagramEditorNode, + EdgeType, START_ID, TERMINATE_ID, } from '../nodes'; +import type { + BufferSelection, + Diagram, + DiagramOperation, +} from '../types/diagram'; import { exhaustiveCheck } from './exhaustive'; +import { + isArrayBufferSelection, + isKeyedBufferSelection, + nextOperationToNodeId, + nodeIdToNextOperation, +} from './operation'; /** * Adds a connection to a node data. * Nothing will be changed if the edge is invalid. But an error will be thrown if the source node is invalid. * This is idempotent, if the connection exists, it will not do anything. */ -export function addConnection( - fromNode: DiagramEditorNode, - edge: DiagramEditorEdge, -): void { - if (fromNode.id === START_ID) { - throw new Error('source node cannot be "start"'); +export function syncEdge(diagram: Diagram, edge: DiagramEditorEdge): void { + if (edge.source === START_ID) { + diagram.start = edge.target; + return; } - if (fromNode.id === TERMINATE_ID) { + if (edge.source === TERMINATE_ID) { throw new Error('source node cannot be "terminate"'); } + if (!edge.data) { + throw new Error('missing edge data'); + } - switch (fromNode.data.type) { + if ( + edge.data.type === EdgeType.BufferKey || + edge.data.type === EdgeType.BufferSeq + ) { + syncBufferSelection(diagram, edge); + return; + } + + const sourceOp = diagram.ops[edge.source]; + if (!sourceOp) { + throw new Error(`source operation "${edge.source}" not found`); + } + + switch (sourceOp.type) { case 'node': case 'join': case 'serialized_join': case 'transform': case 'buffer_access': case 'listen': { - fromNode.data.next = edge.target; + sourceOp.next = nodeIdToNextOperation(edge.target); break; } case 'section': { throw new Error('TODO'); } case 'fork_clone': { - if (!fromNode.data.next.includes(edge.target)) { - fromNode.data.next.push(edge.target); + const target = nodeIdToNextOperation(edge.target); + if ( + !sourceOp.next.some( + (next) => nextOperationToNodeId(next) === edge.target, + ) + ) { + sourceOp.next.push(target); } break; } case 'unzip': { - if (edge.data?.type !== 'unzip') { + if (edge.data.type !== EdgeType.Unzip) { break; } - fromNode.data.next[edge.data.seq] = edge.target; + sourceOp.next[edge.data.seq] = nodeIdToNextOperation(edge.target); break; } case 'fork_result': { switch (edge.data?.type) { - case 'ok': { - fromNode.data.ok = edge.target; + case EdgeType.ForkResultOk: { + sourceOp.ok = nodeIdToNextOperation(edge.target); break; } - case 'err': { - fromNode.data.err = edge.target; + case EdgeType.ForkResultErr: { + sourceOp.err = nodeIdToNextOperation(edge.target); break; } + default: { + throw new Error('fork_result operation must have "ok" or "err" edge'); + } } break; } case 'split': { switch (edge.data?.type) { - case 'splitKey': { - if (!fromNode.data.keyed) { - fromNode.data.keyed = {}; + case EdgeType.SplitKey: { + if (!sourceOp.keyed) { + sourceOp.keyed = {}; } - fromNode.data.keyed[edge.data.key] = edge.target; + sourceOp.keyed[edge.data.key] = nodeIdToNextOperation(edge.target); break; } - case 'splitSequential': { - if (!fromNode.data.sequential) { - fromNode.data.sequential = []; + case EdgeType.SplitSequential: { + if (!sourceOp.sequential) { + sourceOp.sequential = []; } // this works because js allows non-sequential arrays - fromNode.data.sequential[edge.data.seq] = edge.target; + sourceOp.sequential[edge.data.seq] = nodeIdToNextOperation( + edge.target, + ); break; } - case 'splitRemaining': { - fromNode.data.remaining = edge.target; + case EdgeType.SplitRemaining: { + sourceOp.remaining = nodeIdToNextOperation(edge.target); break; } + default: { + throw new Error( + 'split operation must have "SplitKey", "SplitSequential", or "SplitRemaining" edge', + ); + } } break; } @@ -89,7 +129,92 @@ export function addConnection( throw new Error('buffer operations cannot have connections'); } default: { - exhaustiveCheck(fromNode.data); + exhaustiveCheck(sourceOp); + } + } +} + +function syncBufferSelection(diagram: Diagram, edge: DiagramEditorEdge) { + if (!edge.data) { + throw new Error('missing edge data'); + } + + if ( + edge.data.type === EdgeType.BufferKey || + edge.data.type === EdgeType.BufferSeq + ) { + const targetOp = diagram.ops[edge.target]; + if (!targetOp) { + throw new Error(`target operation "${edge.target}" not found`); + } + const bufferSelection = getBufferSelection(targetOp); + + if ( + edge.data.type === EdgeType.BufferKey && + Array.isArray(bufferSelection) && + bufferSelection.length === 0 + ) { + // the array is empty so it is safe to change it to a keyed buffer selection + setBufferSelection(targetOp, {}); + } else if ( + edge.data.type === EdgeType.BufferSeq && + typeof bufferSelection === 'object' && + Object.keys(bufferSelection).length === 0 + ) { + // the dict is empty so it is safe to change it to an array of buffers + setBufferSelection(targetOp, []); + } + + // check that the buffer selection is compatible + if (edge.data.type === EdgeType.BufferSeq) { + if (!isArrayBufferSelection(bufferSelection)) { + throw new Error( + 'a sequential buffer edge must be assigned to an array of buffers', + ); + } + if (!bufferSelection.includes(edge.source)) { + bufferSelection[edge.data.seq] = edge.source; + } + } + if (edge.data.type === EdgeType.BufferKey) { + if (!isKeyedBufferSelection(bufferSelection)) { + throw new Error( + 'a keyed buffer edge must be assigned to a keyed buffer selection', + ); + } + bufferSelection[edge.data.key] = nodeIdToNextOperation(edge.source); + } + } +} + +function getBufferSelection(targetOp: DiagramOperation): BufferSelection { + switch (targetOp.type) { + case 'buffer_access': + case 'listen': + case 'join': + case 'serialized_join': { + return targetOp.buffers; + } + default: { + throw new Error(`"${targetOp.type}" operation does not accept a buffer`); + } + } +} + +function setBufferSelection( + targetOp: DiagramOperation, + bufferSelection: BufferSelection, +): void { + switch (targetOp.type) { + case 'buffer_access': + case 'listen': + case 'join': + case 'serialized_join': { + targetOp.buffers = bufferSelection; + break; + } + default: { + throw new Error(`"${targetOp.type}" operation does not accept a buffer`); } } } diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index c234783a..3a201a54 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -1,13 +1,16 @@ -import type { Edge } from '@xyflow/react'; import { + type DiagramEditorEdge, type DiagramEditorNode, extractOperation, isOperationNode, - START_ID, } from '../nodes'; import type { Diagram } from '../types/diagram'; +import { syncEdge } from './connection'; -export function exportDiagram(nodes: DiagramEditorNode[], edges: Edge[]) { +export function exportDiagram( + nodes: DiagramEditorNode[], + edges: DiagramEditorEdge[], +): Diagram { const diagram: Diagram = { $schema: 'https://raw.githubusercontent.com/open-rmf/bevy_impulse/refs/heads/main/diagram.schema.json', @@ -22,10 +25,8 @@ export function exportDiagram(nodes: DiagramEditorNode[], edges: Edge[]) { } } - // only need to process the start edge, the diagram connections should always be in sync with the edges. - const startEdge = edges.find((edge) => edge.source === START_ID); - if (startEdge) { - diagram.start = startEdge.target; + for (const edge of edges) { + syncEdge(diagram, edge); } return diagram; diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index 4bbe16ed..e8d87198 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -6,7 +6,7 @@ import testDiagram from './test-data/test-diagram.json'; test('load diagram json and auto layout', () => { const graph = loadDiagramJson(JSON.stringify(testDiagram)); const nodes = applyNodeChanges( - autoLayout(graph.startNodeId, graph.nodes), + autoLayout(graph.startNodeId, graph.nodes, graph.edges), graph.nodes, ); expect(nodes.length).toBe(8); diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index f81e45a1..50161d2e 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -8,12 +8,8 @@ import { START_ID, TERMINATE_ID, } from '../nodes'; -import type { - BufferSelection, - Diagram, - NamespacedOperation, - NextOperation, -} from '../types/diagram'; +import type { Diagram } from '../types/diagram'; +import { buildEdges, nextOperationToNodeId } from './operation'; export interface Graph { startNodeId: string; @@ -32,91 +28,6 @@ export function loadDiagramJson(jsonStr: string): Graph { return graph; } -export function getNodeId(next: NextOperation): string { - if (typeof next === 'string') { - return next; - } - if ('builtin' in next) { - return `builtin:${next.builtin}`; - } - const [namespace, opId] = Object.entries(next)[0]; - return `${namespace}:${opId}`; -} - -export function getBufferIds(buffer: BufferSelection): string[] { - if (typeof buffer === 'string') { - return [getNodeId(buffer)]; - } - if (Array.isArray(buffer)) { - return buffer.map((b) => getNodeId(b)); - } - return [getNodeId(buffer as NamespacedOperation)]; -} - -export function getNextIds( - node: DiagramEditorNode, - allNodes: DiagramEditorNode[], -): string[] { - switch (node.data.type) { - case 'buffer': { - const nextIds: string[] = []; - for (const joinNode of allNodes) { - if ( - joinNode.data.type === 'join' || - joinNode.data.type === 'serialized_join' - ) { - const buffers = getBufferIds(joinNode.data.buffers); - if (buffers.includes(node.id)) { - nextIds.push(joinNode.id); - } - } - } - return nextIds; - } - case 'buffer_access': - case 'join': - case 'listen': - case 'node': - case 'serialized_join': - case 'transform': { - return [getNodeId(node.data.next)]; - } - case 'fork_clone': - case 'unzip': { - return node.data.next.map((next) => getNodeId(next)); - } - case 'fork_result': { - return [getNodeId(node.data.ok), getNodeId(node.data.err)]; - } - case 'split': { - const nextIds: string[] = []; - if (node.data.keyed) { - nextIds.push( - ...Object.values(node.data.keyed).map((next) => getNodeId(next)), - ); - } - if (node.data.sequential) { - nextIds.push( - ...Object.values(node.data.sequential).map((next) => getNodeId(next)), - ); - } - if (node.data.remaining) { - nextIds.push(getNodeId(node.data.remaining)); - } - return nextIds; - } - case 'section': { - if (node.data.connect) { - return Object.values(node.data.connect).map((next) => getNodeId(next)); - } - return []; - } - default: { - return []; - } - } -} - function buildGraph(diagram: Diagram): Graph { const nodes: DiagramEditorNode[] = [ { @@ -143,7 +54,7 @@ function buildGraph(diagram: Diagram): Graph { }) satisfies DiagramEditorNode, ), ]; - const startNodeId = getNodeId(diagram.start); + const startNodeId = nextOperationToNodeId(diagram.start); const edges: DiagramEditorEdge[] = [ { id: `${START_ID}->${startNodeId}`, @@ -151,18 +62,10 @@ function buildGraph(diagram: Diagram): Graph { target: startNodeId, }, ]; - for (const node of nodes) { - for (const nextId of getNextIds(node, nodes)) { - edges.push({ - id: `${node.id}->${nextId}`, - source: node.id, - target: nextId, - }); - } + for (const [opId, op] of Object.entries(diagram.ops)) { + edges.push(...buildEdges(op, opId)); } - // TODO: fill in the edge data - return { startNodeId, nodes, edges }; } diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts new file mode 100644 index 00000000..0071ca19 --- /dev/null +++ b/diagram-editor/frontend/utils/operation.ts @@ -0,0 +1,260 @@ +import { EdgeType, type DiagramEditorEdge } from '../nodes'; +import type { + BufferSelection, + DiagramOperation, + NamespacedOperation, + NextOperation, +} from '../types/diagram'; + +/** + * Encodes a `NextOperation` into a node id for react flow. + */ +export function nextOperationToNodeId(next: NextOperation): string { + if (typeof next === 'string') { + return next; + } + if ('builtin' in next) { + return `builtin:${next.builtin}`; + } + const [namespace, opId] = Object.entries(next)[0]; + return `${namespace}:${opId}`; +} + +/** + * Decodes a node id from react flow to a `NextOperation`. + */ +export function nodeIdToNextOperation(nodeId: string): NextOperation { + if (nodeId.startsWith('builtin:')) { + return { builtin: nodeId.slice('builtin:'.length) }; + } + if (nodeId.includes(':')) { + const parts = nodeId.split(':', 2); + return { [parts[0]]: parts[1] }; + } + return nodeId; +} + +export function isKeyedBufferSelection( + bufferSelection: BufferSelection, +): bufferSelection is Record { + return typeof bufferSelection !== 'string' && !Array.isArray(bufferSelection); +} + +export function isArrayBufferSelection( + bufferSelection: BufferSelection, +): bufferSelection is NextOperation[] { + return Array.isArray(bufferSelection); +} + +/** + * Encodes a `BufferSelection` into an array of node ids. + */ +export function bufferSelectionToNodeIds(buffer: BufferSelection): string[] { + if (typeof buffer === 'string') { + return [nextOperationToNodeId(buffer)]; + } + if (Array.isArray(buffer)) { + return buffer.map((b) => nextOperationToNodeId(b)); + } + return [nextOperationToNodeId(buffer as NamespacedOperation)]; +} + +/** + * Decodes an array of node ids into a `BufferSelection` + */ +export function nodeIdsToBufferSelection(nodeIds: string[]): BufferSelection { + if (nodeIds.length === 0) { + return []; + } + if (nodeIds[0].includes(':')) { + const bufferSelection: Record = {}; + for (const nodeId of nodeIds) { + const parts = nodeId.split(':', 2); + bufferSelection[parts[0]] = parts[1]; + } + return bufferSelection; + } + return nodeIds.map((nodeId) => nodeIdToNextOperation(nodeId)); +} + +export function buildEdges( + op: DiagramOperation, + opId: string, +): DiagramEditorEdge[] { + switch (op.type) { + case 'buffer': { + return []; + // for (const joinNode of allNodes) { + // if ( + // joinNode.data.type === 'join' || + // joinNode.data.type === 'serialized_join' + // ) { + // const buffers = bufferSelectionToNodeIds(joinNode.data.buffers); + // if (buffers.includes(node.id)) { + // nextIds.push(joinNode.id); + // } + // } + // } + } + case 'buffer_access': + case 'join': + case 'serialized_join': + case 'listen': { + const edges: DiagramEditorEdge[] = []; + if (isArrayBufferSelection(op.buffers)) { + edges.push( + ...op.buffers.map((buffer, idx) => { + const source = nextOperationToNodeId(buffer); + return { + id: `${source}->${opId}-${idx}`, + source, + target: opId, + data: { type: EdgeType.BufferSeq, seq: idx }, + }; + }), + ); + } else if (isKeyedBufferSelection(op.buffers)) { + edges.push( + ...Object.entries(op.buffers).map( + ([key, buffer]) => { + const source = nextOperationToNodeId(buffer); + return { + id: `${source}->${opId}-${key}`, + source, + target: opId, + data: { type: EdgeType.BufferKey, key }, + }; + }, + ), + ); + } else { + const source = nextOperationToNodeId(op.buffers); + edges.push({ + id: `${source}->${opId}-0`, + source, + target: opId, + data: { type: EdgeType.BufferSeq, seq: 0 }, + }); + } + + const target = nextOperationToNodeId(op.next); + edges.push({ + id: `${opId}->${target}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }); + + return edges; + } + case 'node': + case 'transform': { + const target = nextOperationToNodeId(op.next); + return [ + { + id: `${opId}->${target}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }, + ]; + } + case 'fork_clone': { + return op.next.map((next, idx) => { + const target = nextOperationToNodeId(next); + return { + id: `${opId}->${target}-${idx}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }; + }); + } + case 'unzip': { + return op.next.map((next, idx) => { + const target = nextOperationToNodeId(next); + return { + id: `${opId}->${target}-${idx}`, + source: opId, + target, + data: { type: EdgeType.Unzip, seq: idx }, + }; + }); + } + case 'fork_result': { + const okTarget = nextOperationToNodeId(op.ok); + const errTarget = nextOperationToNodeId(op.err); + return [ + { + id: `${opId}->${okTarget}-ok`, + source: opId, + target: okTarget, + data: { type: EdgeType.ForkResultOk }, + }, + { + id: `${opId}->${okTarget}-err`, + source: opId, + target: errTarget, + data: { type: EdgeType.ForkResultErr }, + }, + ]; + } + case 'split': { + const edges: DiagramEditorEdge[] = []; + if (op.keyed) { + edges.push( + ...Object.entries(op.keyed).map(([key, next]) => { + const target = nextOperationToNodeId(next); + return { + id: `${opId}->${target}-${key}`, + source: opId, + target, + data: { type: EdgeType.SplitKey, key }, + }; + }), + ); + } + if (op.sequential) { + edges.push( + ...op.sequential.map((next, idx) => { + const target = nextOperationToNodeId(next); + return { + id: `${opId}->${target}-${idx}`, + source: opId, + target, + data: { type: EdgeType.SplitSequential, seq: idx }, + }; + }), + ); + } + if (op.remaining) { + const target = nextOperationToNodeId(op.remaining); + edges.push({ + id: `${opId}->${target}-remaining`, + source: opId, + target, + data: { type: EdgeType.SplitRemaining }, + }); + } + return edges; + } + case 'section': { + // TODO: support section + // if (op.connect) { + // return Object.values(op.connect).map((next) => { + // const target = nextOperationToNodeId(next); + // return { + // id: `${opId}->${target}`, + // source: opId, + // target, + // data: { type: EdgeType.Basic }, + // }; + // }); + // } + return []; + } + default: { + return []; + } + } +} From b2c282e63044f79c04fa9ee44e55c8bf112f795f Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 10 Jun 2025 05:13:04 +0000 Subject: [PATCH 021/165] fix loading empty diagram; add copy share link button Signed-off-by: Teo Koon Peng --- biome.json | 16 +++--- diagram-editor/frontend/diagram-editor.tsx | 24 ++------ .../frontend/export-diagram-dialog.tsx | 33 ++++++++++- diagram-editor/frontend/utils/auto-layout.ts | 16 ++---- .../frontend/utils/load-diagram.test.ts | 3 +- diagram-editor/frontend/utils/load-diagram.ts | 55 +++++++++++-------- 6 files changed, 83 insertions(+), 64 deletions(-) diff --git a/biome.json b/biome.json index 7310aee0..e6a034b5 100644 --- a/biome.json +++ b/biome.json @@ -1,9 +1,7 @@ { "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", "files": { - "include": [ - "diagram-editor" - ] + "include": ["diagram-editor"] }, "organizeImports": { "enabled": true @@ -29,15 +27,15 @@ "linter": { "enabled": true, "rules": { - "recommended": true + "recommended": true, + "style": { + "useEnumInitializers": "off" + } } }, "overrides": [ { - "include": [ - "*.test.ts", - "*.test.tsx" - ], + "include": ["*.test.ts", "*.test.tsx"], "linter": { "rules": { "style": { @@ -47,4 +45,4 @@ } } ] -} \ No newline at end of file +} diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 3cc2f9e0..609d8b73 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -32,11 +32,10 @@ import { type DiagramEditorNode, NODE_TYPES, START_ID, - TERMINATE_ID, isOperationNode, } from './nodes'; import { autoLayout } from './utils/auto-layout'; -import { loadDiagramJson } from './utils/load-diagram'; +import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; const VisuallyHiddenInput = styled('input')({ clip: 'rect(0 0 0 0)', @@ -73,22 +72,9 @@ const DiagramEditor = () => { DiagramEditorEdge > | null>(null); - const [nodes, setNodes] = React.useState(() => [ - { - id: START_ID, - type: 'start', - position: { x: 0, y: 0 }, - selectable: false, - data: {}, - }, - { - id: TERMINATE_ID, - type: 'terminate', - position: { x: 0, y: 400 }, - selectable: false, - data: {}, - }, - ]); + const [nodes, setNodes] = React.useState( + () => loadEmpty().nodes, + ); const [edges, setEdges] = React.useState([]); const [openAddOpPopover, setOpenAddOpPopover] = React.useState(false); @@ -107,7 +93,7 @@ const DiagramEditor = () => { const loadDiagram = React.useCallback((jsonStr: string) => { const graph = loadDiagramJson(jsonStr); - const changes = autoLayout(graph.startNodeId, graph.nodes, graph.edges); + const changes = autoLayout(START_ID, graph.nodes, graph.edges); setNodes(applyNodeChanges(changes, graph.nodes)); setEdges(graph.edges); reactFlowInstance.current?.fitView(); diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index b4ba5f36..2a23f4a7 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -1,5 +1,9 @@ +import CheckIcon from '@mui/icons-material/Check'; +import CopyIcon from '@mui/icons-material/ContentCopy'; +import DownloadIcon from '@mui/icons-material/Download'; import { Button, + ButtonGroup, Dialog, DialogActions, DialogContent, @@ -81,6 +85,8 @@ function ExportDiagramDialog({ URL.revokeObjectURL(url); }; + const [copiedShareLink, setCopiedShareLink] = React.useState(false); + return ( Share - + + + + Diagram JSON - diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index eacbf675..b3b3b595 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -22,7 +22,6 @@ export function autoLayout( nodes: DiagramEditorNode[], edges: DiagramEditorEdge[], { - rootPosition = DEFAULT_OPTIONS.rootPosition, cellWidth = DEFAULT_OPTIONS.cellWidth, cellHeight = DEFAULT_OPTIONS.cellHeight, }: Partial = DEFAULT_OPTIONS, @@ -52,16 +51,11 @@ export function autoLayout( const getNode = (id: string) => getWorkingData(id).node; const getNextIds = (id: string) => getWorkingData(id).nextIds; - const firstNode = getNode(start); - const changes: NodePositionChange[] = [ - { - id: firstNode.id, - type: 'position', - position: { x: rootPosition.x, y: rootPosition.y + cellHeight }, - }, - ]; - const fifo = [{ node: getNode(start), depth: 2 }]; - let maxX = firstNode.position.x; + const rootNode = getNode(start); + const rootPosition = { ...rootNode.position }; + const changes: NodePositionChange[] = []; + const fifo = [{ node: getNode(start), depth: 1 }]; + let maxX = rootNode.position.x; for (let ctx = fifo.shift(); ctx; ctx = fifo.shift()) { const { node, depth } = ctx; const nextNodeIds = getNextIds(node.id); diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index e8d87198..a78131da 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -1,4 +1,5 @@ import { applyNodeChanges } from '@xyflow/react'; +import { START_ID } from '../nodes'; import { autoLayout } from './auto-layout'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; @@ -6,7 +7,7 @@ import testDiagram from './test-data/test-diagram.json'; test('load diagram json and auto layout', () => { const graph = loadDiagramJson(JSON.stringify(testDiagram)); const nodes = applyNodeChanges( - autoLayout(graph.startNodeId, graph.nodes, graph.edges), + autoLayout(START_ID, graph.nodes, graph.edges), graph.nodes, ); expect(nodes.length).toBe(8); diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 50161d2e..4c4f6c84 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -12,7 +12,6 @@ import type { Diagram } from '../types/diagram'; import { buildEdges, nextOperationToNodeId } from './operation'; export interface Graph { - startNodeId: string; nodes: DiagramEditorNode[]; edges: DiagramEditorEdge[]; } @@ -28,22 +27,32 @@ export function loadDiagramJson(jsonStr: string): Graph { return graph; } +export function loadEmpty(): Graph { + return { + nodes: [ + { + id: START_ID, + type: 'start', + position: { x: 0, y: 0 }, + selectable: false, + data: {}, + }, + { + id: TERMINATE_ID, + type: 'terminate', + position: { x: 0, y: 400 }, + selectable: false, + data: {}, + }, + ], + edges: [], + }; +} + function buildGraph(diagram: Diagram): Graph { - const nodes: DiagramEditorNode[] = [ - { - id: START_ID, - type: 'start', - position: { x: 0, y: 0 }, - selectable: false, - data: {}, - }, - { - id: TERMINATE_ID, - type: 'terminate', - position: { x: 0, y: 0 }, - selectable: false, - data: {}, - }, + const graph = loadEmpty(); + const nodes = graph.nodes; + nodes.push( ...Object.entries(diagram.ops).map( ([opId, op]) => ({ @@ -53,20 +62,22 @@ function buildGraph(diagram: Diagram): Graph { data: { opId, ...op }, }) satisfies DiagramEditorNode, ), - ]; + ); + const edges = graph.edges; const startNodeId = nextOperationToNodeId(diagram.start); - const edges: DiagramEditorEdge[] = [ - { + // `start` may be empty for new empty diagram + if (diagram.start !== '') { + edges.push({ id: `${START_ID}->${startNodeId}`, source: START_ID, target: startNodeId, - }, - ]; + }); + } for (const [opId, op] of Object.entries(diagram.ops)) { edges.push(...buildEdges(op, opId)); } - return { startNodeId, nodes, edges }; + return graph; } const ajv = new Ajv(); From 9d8255d38a4a06e1d8347c420de9687b546e38bd Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 10 Jun 2025 07:40:39 +0000 Subject: [PATCH 022/165] nextOperationToNodeId returns null for dispose Signed-off-by: Teo Koon Peng --- .../frontend/utils/export-diagram.ts | 2 +- diagram-editor/frontend/utils/load-diagram.ts | 3 +- diagram-editor/frontend/utils/operation.ts | 242 +++++++++--------- 3 files changed, 116 insertions(+), 131 deletions(-) diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index 3a201a54..51d9c2de 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -15,7 +15,7 @@ export function exportDiagram( $schema: 'https://raw.githubusercontent.com/open-rmf/bevy_impulse/refs/heads/main/diagram.schema.json', version: '0.1.0', - start: '', + start: { builtin: 'dispose' }, ops: {}, }; diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 4c4f6c84..667e6ec7 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -65,8 +65,7 @@ function buildGraph(diagram: Diagram): Graph { ); const edges = graph.edges; const startNodeId = nextOperationToNodeId(diagram.start); - // `start` may be empty for new empty diagram - if (diagram.start !== '') { + if (startNodeId) { edges.push({ id: `${START_ID}->${startNodeId}`, source: START_ID, diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index 0071ca19..90985dfe 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -1,19 +1,23 @@ import { EdgeType, type DiagramEditorEdge } from '../nodes'; import type { BufferSelection, + BuiltinTarget, DiagramOperation, - NamespacedOperation, NextOperation, } from '../types/diagram'; /** * Encodes a `NextOperation` into a node id for react flow. + * Returns `null` if the operation is "dispose". */ -export function nextOperationToNodeId(next: NextOperation): string { +export function nextOperationToNodeId(next: NextOperation): string | null { if (typeof next === 'string') { return next; } - if ('builtin' in next) { + if (isBuiltin(next)) { + if (next.builtin === 'dispose') { + return null; + } return `builtin:${next.builtin}`; } const [namespace, opId] = Object.entries(next)[0]; @@ -46,37 +50,6 @@ export function isArrayBufferSelection( return Array.isArray(bufferSelection); } -/** - * Encodes a `BufferSelection` into an array of node ids. - */ -export function bufferSelectionToNodeIds(buffer: BufferSelection): string[] { - if (typeof buffer === 'string') { - return [nextOperationToNodeId(buffer)]; - } - if (Array.isArray(buffer)) { - return buffer.map((b) => nextOperationToNodeId(b)); - } - return [nextOperationToNodeId(buffer as NamespacedOperation)]; -} - -/** - * Decodes an array of node ids into a `BufferSelection` - */ -export function nodeIdsToBufferSelection(nodeIds: string[]): BufferSelection { - if (nodeIds.length === 0) { - return []; - } - if (nodeIds[0].includes(':')) { - const bufferSelection: Record = {}; - for (const nodeId of nodeIds) { - const parts = nodeId.split(':', 2); - bufferSelection[parts[0]] = parts[1]; - } - return bufferSelection; - } - return nodeIds.map((nodeId) => nodeIdToNextOperation(nodeId)); -} - export function buildEdges( op: DiagramOperation, opId: string, @@ -84,17 +57,6 @@ export function buildEdges( switch (op.type) { case 'buffer': { return []; - // for (const joinNode of allNodes) { - // if ( - // joinNode.data.type === 'join' || - // joinNode.data.type === 'serialized_join' - // ) { - // const buffers = bufferSelectionToNodeIds(joinNode.data.buffers); - // if (buffers.includes(node.id)) { - // nextIds.push(joinNode.id); - // } - // } - // } } case 'buffer_access': case 'join': @@ -102,139 +64,157 @@ export function buildEdges( case 'listen': { const edges: DiagramEditorEdge[] = []; if (isArrayBufferSelection(op.buffers)) { - edges.push( - ...op.buffers.map((buffer, idx) => { - const source = nextOperationToNodeId(buffer); - return { + for (const [idx, buffer] of op.buffers.entries()) { + const source = nextOperationToNodeId(buffer); + if (source) { + edges.push({ id: `${source}->${opId}-${idx}`, source, target: opId, data: { type: EdgeType.BufferSeq, seq: idx }, - }; - }), - ); + }); + } + } } else if (isKeyedBufferSelection(op.buffers)) { - edges.push( - ...Object.entries(op.buffers).map( - ([key, buffer]) => { - const source = nextOperationToNodeId(buffer); - return { - id: `${source}->${opId}-${key}`, - source, - target: opId, - data: { type: EdgeType.BufferKey, key }, - }; - }, - ), - ); + for (const [key, buffer] of Object.entries(op.buffers)) { + const source = nextOperationToNodeId(buffer); + if (source) { + edges.push({ + id: `${source}->${opId}-${key}`, + source, + target: opId, + data: { type: EdgeType.BufferKey, key }, + }); + } + } } else { const source = nextOperationToNodeId(op.buffers); - edges.push({ - id: `${source}->${opId}-0`, - source, - target: opId, - data: { type: EdgeType.BufferSeq, seq: 0 }, - }); + if (source) { + edges.push({ + id: `${source}->${opId}-0`, + source, + target: opId, + data: { type: EdgeType.BufferSeq, seq: 0 }, + }); + } } const target = nextOperationToNodeId(op.next); - edges.push({ - id: `${opId}->${target}`, - source: opId, - target, - data: { type: EdgeType.Basic }, - }); + if (target) { + edges.push({ + id: `${opId}->${target}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }); + } return edges; } case 'node': case 'transform': { const target = nextOperationToNodeId(op.next); - return [ - { - id: `${opId}->${target}`, - source: opId, - target, - data: { type: EdgeType.Basic }, - }, - ]; + return target + ? [ + { + id: `${opId}->${target}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }, + ] + : []; } case 'fork_clone': { - return op.next.map((next, idx) => { + const edges: DiagramEditorEdge[] = []; + for (const [idx, next] of op.next.entries()) { const target = nextOperationToNodeId(next); - return { - id: `${opId}->${target}-${idx}`, - source: opId, - target, - data: { type: EdgeType.Basic }, - }; - }); + if (target) { + edges.push({ + id: `${opId}->${target}-${idx}`, + source: opId, + target, + data: { type: EdgeType.Basic }, + }); + } + } + return edges; } case 'unzip': { - return op.next.map((next, idx) => { + const edges: DiagramEditorEdge[] = []; + for (const [idx, next] of op.next.entries()) { const target = nextOperationToNodeId(next); - return { - id: `${opId}->${target}-${idx}`, - source: opId, - target, - data: { type: EdgeType.Unzip, seq: idx }, - }; - }); + if (target) { + edges.push({ + id: `${opId}->${target}-${idx}`, + source: opId, + target, + data: { type: EdgeType.Unzip, seq: idx }, + }); + } + } + return edges; } case 'fork_result': { const okTarget = nextOperationToNodeId(op.ok); const errTarget = nextOperationToNodeId(op.err); - return [ - { + const edges: DiagramEditorEdge[] = []; + if (okTarget) { + edges.push({ id: `${opId}->${okTarget}-ok`, source: opId, target: okTarget, data: { type: EdgeType.ForkResultOk }, - }, - { - id: `${opId}->${okTarget}-err`, + }); + } + if (errTarget) { + edges.push({ + id: `${opId}->${errTarget}-err`, source: opId, target: errTarget, data: { type: EdgeType.ForkResultErr }, - }, - ]; + }); + } + return edges; } case 'split': { const edges: DiagramEditorEdge[] = []; if (op.keyed) { - edges.push( - ...Object.entries(op.keyed).map(([key, next]) => { - const target = nextOperationToNodeId(next); - return { + for (const [key, next] of Object.entries(op.keyed)) { + const target = nextOperationToNodeId(next); + if (target) { + edges.push({ id: `${opId}->${target}-${key}`, source: opId, target, data: { type: EdgeType.SplitKey, key }, - }; - }), - ); + }); + } + } } if (op.sequential) { - edges.push( - ...op.sequential.map((next, idx) => { - const target = nextOperationToNodeId(next); - return { + for (const [idx, next] of op.sequential.entries()) { + const target = nextOperationToNodeId(next); + if (target) { + edges.push({ id: `${opId}->${target}-${idx}`, source: opId, target, data: { type: EdgeType.SplitSequential, seq: idx }, - }; - }), - ); + }); + } + } } if (op.remaining) { const target = nextOperationToNodeId(op.remaining); - edges.push({ - id: `${opId}->${target}-remaining`, - source: opId, - target, - data: { type: EdgeType.SplitRemaining }, - }); + if (target) { + edges.push({ + id: `${opId}->${target}-remaining`, + source: opId, + target, + data: { type: EdgeType.SplitRemaining }, + }); + } } return edges; } @@ -258,3 +238,9 @@ export function buildEdges( } } } + +export function isBuiltin( + next: NextOperation, +): next is { builtin: BuiltinTarget } { + return typeof next === 'object' && 'builtin' in next; +} From 8901ebb3d1f0ca065120dce4b7304ff4225438ba Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 10 Jun 2025 07:42:36 +0000 Subject: [PATCH 023/165] use builtin dispose as default for new ops Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 6296b432..e3437e9c 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -104,8 +104,8 @@ function AddOperation({ onAdd }: AddOperationProps) { data: { opId: 'new_operation', type: 'fork_result', - err: '', - ok: '', + err: { builtin: 'dispose' }, + ok: { builtin: 'dispose' }, }, }, type: 'add', From 2780ce53483d3f2531eb7e82726fb0c9362a28a6 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 10 Jun 2025 07:46:32 +0000 Subject: [PATCH 024/165] use small textfield for share link Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/export-diagram-dialog.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index 2a23f4a7..7d0f02d6 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -8,6 +8,7 @@ import { DialogActions, DialogContent, DialogTitle, + Divider, Stack, TextField, Typography, @@ -104,6 +105,7 @@ function ExportDiagramDialog({ variant="outlined" value={dialogData?.shareLink} fullWidth + size="small" /> + + ); +} diff --git a/diagram-editor/frontend/nodes/input-output-node.tsx b/diagram-editor/frontend/nodes/input-output-node.tsx index b792e173..29188c8d 100644 --- a/diagram-editor/frontend/nodes/input-output-node.tsx +++ b/diagram-editor/frontend/nodes/input-output-node.tsx @@ -2,14 +2,9 @@ import { Button, Paper } from '@mui/material'; import type { NodeProps } from '@xyflow/react'; import { Handle, Position } from '@xyflow/react'; -import type { DiagramEditorNode, OperationNode } from '.'; +import type { DiagramEditorNode } from '.'; import { getIcon } from './icons'; - -function isOperationData( - data: DiagramEditorNode['data'], -): data is OperationNode['data'] { - return 'type' in data; -} +import { isOperationData } from './utils'; export function InputOutputNode({ data, diff --git a/diagram-editor/frontend/nodes/output-node.tsx b/diagram-editor/frontend/nodes/output-node.tsx index fa41b95d..081fdd90 100644 --- a/diagram-editor/frontend/nodes/output-node.tsx +++ b/diagram-editor/frontend/nodes/output-node.tsx @@ -3,17 +3,23 @@ import type { NodeProps } from '@xyflow/react'; import { Handle, Position } from '@xyflow/react'; import type { DiagramEditorNode } from '.'; +import { getIcon } from './icons'; +import { isOperationData } from './utils'; export function OutputNode({ + data, id, isConnectable, selected, sourcePosition = Position.Bottom, }: NodeProps) { + const IconComponent = isOperationData(data) ? getIcon(data) : null; + return ( + {(variant === 'output' || variant === 'inputOutput') && ( + + )} + + ); +} + +export default BaseNode; diff --git a/diagram-editor/frontend/nodes/buffer-access-node.tsx b/diagram-editor/frontend/nodes/buffer-access-node.tsx new file mode 100644 index 00000000..55593bf8 --- /dev/null +++ b/diagram-editor/frontend/nodes/buffer-access-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { BufferAccessIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function BufferAccessNode(props: NodeProps) { + return ( + } + label="Buffer Access" + variant="inputOutput" + /> + ); +} + +export default BufferAccessNode; diff --git a/diagram-editor/frontend/nodes/buffer-node.tsx b/diagram-editor/frontend/nodes/buffer-node.tsx new file mode 100644 index 00000000..73de832b --- /dev/null +++ b/diagram-editor/frontend/nodes/buffer-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { BufferIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function BufferNode(props: NodeProps) { + return ( + } + label="Buffer" + variant="inputOutput" + /> + ); +} + +export default BufferNode; diff --git a/diagram-editor/frontend/nodes/fork-clone-node.tsx b/diagram-editor/frontend/nodes/fork-clone-node.tsx new file mode 100644 index 00000000..fe9f4219 --- /dev/null +++ b/diagram-editor/frontend/nodes/fork-clone-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { ForkCloneIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function ForkCloneNode(props: NodeProps) { + return ( + } + label="Fork Clone" + variant="inputOutput" + /> + ); +} + +export default ForkCloneNode; diff --git a/diagram-editor/frontend/nodes/fork-result-node.tsx b/diagram-editor/frontend/nodes/fork-result-node.tsx new file mode 100644 index 00000000..8059efef --- /dev/null +++ b/diagram-editor/frontend/nodes/fork-result-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { ForkResultIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function ForkResultNode(props: NodeProps) { + return ( + } + label="Fork Result" + variant="inputOutput" + /> + ); +} + +export default ForkResultNode; diff --git a/diagram-editor/frontend/nodes/icons.tsx b/diagram-editor/frontend/nodes/icons.tsx index cee549fb..013121b4 100644 --- a/diagram-editor/frontend/nodes/icons.tsx +++ b/diagram-editor/frontend/nodes/icons.tsx @@ -65,11 +65,13 @@ export { export { default as ForkCloneIcon } from '@mui/icons-material/ContentCopyOutlined'; export { default as NodeIcon } from '@mui/icons-material/ExtensionOutlined'; export { default as SplitIcon } from '@mui/icons-material/ForkLeftOutlined'; -export { default as ForkResult } from '@mui/icons-material/ForkRightOutlined'; +export { default as ForkResultIcon } from '@mui/icons-material/ForkRightOutlined'; export { default as ListenIcon } from '@mui/icons-material/HearingOutlined'; export { default as JoinIcon, default as SerializedJoinIcon, } from '@mui/icons-material/MergeOutlined'; +export { default as StreamOutIcon } from '@mui/icons-material/Notes'; +export { default as ScopeIcon } from '@mui/icons-material/Rectangle'; export { default as SectionIcon } from '@mui/icons-material/SelectAllOutlined'; export { default as UnzipIcon } from '@mui/icons-material/UnarchiveOutlined'; diff --git a/diagram-editor/frontend/nodes/index.ts b/diagram-editor/frontend/nodes/index.ts deleted file mode 100644 index abca3c33..00000000 --- a/diagram-editor/frontend/nodes/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { DiagramOperation } from '../types/diagram'; -import { InputNode } from './input-node'; -import { InputOutputNode } from './input-output-node'; -import { StartNode } from './start-node'; -import { TerminateNode } from './terminate-node'; -import type { DiagramEditorNode, NodeTypes, OperationNode } from './types'; - -export type * from './types'; - -export const START_ID = 'builtin:start'; -export const TERMINATE_ID = 'builtin:terminate'; - -export const NODE_TYPES = { - start: StartNode, - terminate: TerminateNode, - node: InputOutputNode, - section: InputOutputNode, - fork_clone: InputOutputNode, - unzip: InputOutputNode, - fork_result: InputOutputNode, - split: InputOutputNode, - join: InputOutputNode, - serialized_join: InputOutputNode, - transform: InputOutputNode, - buffer: InputOutputNode, - buffer_access: InputOutputNode, - listen: InputOutputNode, - scope: InputOutputNode, - stream_out: InputNode, -} satisfies Record; - -export function isOperationNode( - node: DiagramEditorNode, -): node is OperationNode { - return !node.id.startsWith('builtin:'); -} - -export function extractOperation(node: OperationNode): DiagramOperation { - const op: DiagramOperation = { ...node.data }; - const opIdKey = 'opId'; - delete op[opIdKey]; - return op; -} diff --git a/diagram-editor/frontend/nodes/index.tsx b/diagram-editor/frontend/nodes/index.tsx new file mode 100644 index 00000000..f7d9b58e --- /dev/null +++ b/diagram-editor/frontend/nodes/index.tsx @@ -0,0 +1,55 @@ +import type { DiagramOperation } from '../types/diagram'; +import BufferAccessNode from './buffer-access-node'; +import BufferNode from './buffer-node'; +import ForkCloneNode from './fork-clone-node'; +import ForkResultNode from './fork-result-node'; +import JoinNode from './join-node'; +import ListenNode from './listen-node'; +import NodeNode from './node-node'; +import ScopeNode from './scope-node'; +import SectionNode from './section-node'; +import SerializedJoinNode from './serialized-join-node'; +import SplitNode from './split-node'; +import { StartNode } from './start-node'; +import StreamOutNode from './stream-out-node'; +import { TerminateNode } from './terminate-node'; +import TransformNode from './transform-node'; +import type { DiagramEditorNode, NodeTypes, OperationNode } from './types'; +import UnzipNode from './unzip-node'; + +export type * from './types'; + +export const START_ID = 'builtin:start'; +export const TERMINATE_ID = 'builtin:terminate'; + +export const NODE_TYPES = { + start: StartNode, + terminate: TerminateNode, + node: NodeNode, + section: SectionNode, + fork_clone: ForkCloneNode, + unzip: UnzipNode, + fork_result: ForkResultNode, + split: SplitNode, + join: JoinNode, + serialized_join: SerializedJoinNode, + transform: TransformNode, + buffer: BufferNode, + buffer_access: BufferAccessNode, + listen: ListenNode, + scope: ScopeNode, + stream_out: StreamOutNode, +} satisfies Record; + +export function isOperationNode( + node: DiagramEditorNode, +): node is OperationNode { + return !node.id.startsWith('builtin:'); +} + +export function extractOperation(node: OperationNode): DiagramOperation { + const op: DiagramOperation = { ...node.data }; + const opIdKey = 'opId'; + delete op[opIdKey]; + return op; +} diff --git a/diagram-editor/frontend/nodes/input-node.tsx b/diagram-editor/frontend/nodes/input-node.tsx deleted file mode 100644 index bfd5c06b..00000000 --- a/diagram-editor/frontend/nodes/input-node.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Button, Paper } from '@mui/material'; -import type { NodeProps } from '@xyflow/react'; -import { Handle, Position } from '@xyflow/react'; - -import type { DiagramEditorNode } from '.'; -import { getIcon } from './icons'; -import { isOperationData } from './utils'; - -export function InputNode({ - data, - isConnectable, - selected, - targetPosition = Position.Top, -}: NodeProps) { - const IconComponent = isOperationData(data) ? getIcon(data) : null; - - return ( - - - - - ); -} diff --git a/diagram-editor/frontend/nodes/input-output-node.tsx b/diagram-editor/frontend/nodes/input-output-node.tsx deleted file mode 100644 index 29188c8d..00000000 --- a/diagram-editor/frontend/nodes/input-output-node.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Button, Paper } from '@mui/material'; -import type { NodeProps } from '@xyflow/react'; -import { Handle, Position } from '@xyflow/react'; - -import type { DiagramEditorNode } from '.'; -import { getIcon } from './icons'; -import { isOperationData } from './utils'; - -export function InputOutputNode({ - data, - isConnectable, - selected, - sourcePosition = Position.Bottom, - targetPosition = Position.Top, -}: NodeProps) { - const IconComponent = isOperationData(data) ? getIcon(data) : null; - - return ( - - - - - - ); -} diff --git a/diagram-editor/frontend/nodes/join-node.tsx b/diagram-editor/frontend/nodes/join-node.tsx new file mode 100644 index 00000000..a94ea653 --- /dev/null +++ b/diagram-editor/frontend/nodes/join-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { JoinIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function JoinNode(props: NodeProps) { + return ( + } + label="Join" + variant="inputOutput" + /> + ); +} + +export default JoinNode; diff --git a/diagram-editor/frontend/nodes/listen-node.tsx b/diagram-editor/frontend/nodes/listen-node.tsx new file mode 100644 index 00000000..665d2472 --- /dev/null +++ b/diagram-editor/frontend/nodes/listen-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { ListenIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function ListenNode(props: NodeProps) { + return ( + } + label="Listen" + variant="inputOutput" + /> + ); +} + +export default ListenNode; diff --git a/diagram-editor/frontend/nodes/node-node.tsx b/diagram-editor/frontend/nodes/node-node.tsx new file mode 100644 index 00000000..811de6b4 --- /dev/null +++ b/diagram-editor/frontend/nodes/node-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { NodeIcon } from './icons'; +import type { OperationNode } from './types'; + +function NodeNode(props: NodeProps>) { + return ( + } + label={props.data.builder} + variant="inputOutput" + /> + ); +} + +export default NodeNode; diff --git a/diagram-editor/frontend/nodes/output-node.tsx b/diagram-editor/frontend/nodes/output-node.tsx deleted file mode 100644 index 081fdd90..00000000 --- a/diagram-editor/frontend/nodes/output-node.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Button, Paper } from '@mui/material'; -import type { NodeProps } from '@xyflow/react'; -import { Handle, Position } from '@xyflow/react'; - -import type { DiagramEditorNode } from '.'; -import { getIcon } from './icons'; -import { isOperationData } from './utils'; - -export function OutputNode({ - data, - id, - isConnectable, - selected, - sourcePosition = Position.Bottom, -}: NodeProps) { - const IconComponent = isOperationData(data) ? getIcon(data) : null; - - return ( - - - - - ); -} diff --git a/diagram-editor/frontend/nodes/scope-node.tsx b/diagram-editor/frontend/nodes/scope-node.tsx new file mode 100644 index 00000000..438b8114 --- /dev/null +++ b/diagram-editor/frontend/nodes/scope-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { ScopeIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function ScopeNode(props: NodeProps) { + return ( + } + label="Scope" + variant="inputOutput" + /> + ); +} + +export default ScopeNode; diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx new file mode 100644 index 00000000..d7a7f942 --- /dev/null +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -0,0 +1,18 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { SectionIcon } from './icons'; +import type { OperationNode } from './types'; + +function SectionNode(props: NodeProps>) { + const label = (props.data.builder || props.data.template) as string; + return ( + } + label={label} + variant="inputOutput" + /> + ); +} + +export default SectionNode; diff --git a/diagram-editor/frontend/nodes/serialized-join-node.tsx b/diagram-editor/frontend/nodes/serialized-join-node.tsx new file mode 100644 index 00000000..ca9156b4 --- /dev/null +++ b/diagram-editor/frontend/nodes/serialized-join-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { SerializedJoinIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function SerializedJoinNode(props: NodeProps) { + return ( + } + label="Serialized Join" + variant="inputOutput" + /> + ); +} + +export default SerializedJoinNode; diff --git a/diagram-editor/frontend/nodes/split-node.tsx b/diagram-editor/frontend/nodes/split-node.tsx new file mode 100644 index 00000000..64f7c0d0 --- /dev/null +++ b/diagram-editor/frontend/nodes/split-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { SplitIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function SplitNode(props: NodeProps) { + return ( + } + label="Split" + variant="inputOutput" + /> + ); +} + +export default SplitNode; diff --git a/diagram-editor/frontend/nodes/stream-out-node.tsx b/diagram-editor/frontend/nodes/stream-out-node.tsx new file mode 100644 index 00000000..6cc66224 --- /dev/null +++ b/diagram-editor/frontend/nodes/stream-out-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { StreamOutIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function StreamOutNode(props: NodeProps) { + return ( + } + label="StreamOut" + variant="input" + /> + ); +} + +export default StreamOutNode; diff --git a/diagram-editor/frontend/nodes/transform-node.tsx b/diagram-editor/frontend/nodes/transform-node.tsx new file mode 100644 index 00000000..66582501 --- /dev/null +++ b/diagram-editor/frontend/nodes/transform-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { TransformIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function TransformNode(props: NodeProps) { + return ( + } + label="Transform" + variant="inputOutput" + /> + ); +} + +export default TransformNode; diff --git a/diagram-editor/frontend/nodes/types.d.ts b/diagram-editor/frontend/nodes/types.d.ts index 7ef3bbd9..5eeaf831 100644 --- a/diagram-editor/frontend/nodes/types.d.ts +++ b/diagram-editor/frontend/nodes/types.d.ts @@ -15,6 +15,6 @@ export type Node< export type BuiltinNode = Node, BuiltinNodeTypes>; export type OperationNode = - Node & { opId: string }, K>; + Node, K>; export type DiagramEditorNode = BuiltinNode | OperationNode; diff --git a/diagram-editor/frontend/nodes/unzip-node.tsx b/diagram-editor/frontend/nodes/unzip-node.tsx new file mode 100644 index 00000000..0bbb0621 --- /dev/null +++ b/diagram-editor/frontend/nodes/unzip-node.tsx @@ -0,0 +1,17 @@ +import type { NodeProps } from '@xyflow/react'; +import BaseNode from './base-node'; +import { UnzipIcon } from './icons'; +import type { DiagramEditorNode } from './types'; + +function UnzipNode(props: NodeProps) { + return ( + } + label="Unzip" + variant="inputOutput" + /> + ); +} + +export default UnzipNode; From 30c5894e01b784b43da25d0b5e0b87bef96e21b5 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 02:42:37 +0000 Subject: [PATCH 047/165] refactor to avoid importing from outside a package Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 5 +- .../frontend/edges/buffer-key-edge.tsx | 8 +- .../frontend/edges/buffer-seq-edge.tsx | 8 +- .../frontend/edges/fork-result-err-edge.tsx | 6 +- .../frontend/edges/fork-result-ok-edge.tsx | 6 +- diagram-editor/frontend/edges/index.ts | 51 +--------- .../frontend/edges/split-key-edge.tsx | 8 +- .../frontend/edges/split-remaining-edge.tsx | 6 +- .../frontend/edges/split-seq-edge.tsx | 8 +- .../frontend/edges/stream-out-edge.tsx | 8 +- diagram-editor/frontend/edges/types.d.ts | 18 ---- diagram-editor/frontend/edges/unzip-edge.tsx | 8 +- .../frontend/export-diagram-dialog.tsx | 3 +- .../frontend/forms/buffer-edge-form.tsx | 2 +- diagram-editor/frontend/forms/buffer-form.tsx | 2 +- .../frontend/forms/edit-edge-form.stories.tsx | 2 +- .../frontend/forms/edit-edge-form.tsx | 10 +- .../frontend/forms/edit-node-form.tsx | 4 +- .../frontend/forms/fork-result-edge-form.tsx | 2 +- diagram-editor/frontend/forms/node-form.tsx | 2 +- diagram-editor/frontend/forms/op-id-form.tsx | 2 +- .../frontend/forms/split-edge-form.tsx | 2 +- .../frontend/forms/transform-form.tsx | 2 +- .../frontend/forms/unzip-edge-form.tsx | 2 +- diagram-editor/frontend/index.tsx | 5 + .../frontend/nodes/buffer-access-node.tsx | 2 +- diagram-editor/frontend/nodes/buffer-node.tsx | 2 +- .../frontend/nodes/fork-clone-node.tsx | 2 +- .../frontend/nodes/fork-result-node.tsx | 2 +- diagram-editor/frontend/nodes/icons.tsx | 4 +- diagram-editor/frontend/nodes/index.tsx | 10 +- diagram-editor/frontend/nodes/join-node.tsx | 2 +- diagram-editor/frontend/nodes/listen-node.tsx | 2 +- diagram-editor/frontend/nodes/node-node.tsx | 2 +- diagram-editor/frontend/nodes/scope-node.tsx | 2 +- .../frontend/nodes/section-node.tsx | 2 +- .../frontend/nodes/serialized-join-node.tsx | 2 +- diagram-editor/frontend/nodes/split-node.tsx | 2 +- diagram-editor/frontend/nodes/start-node.tsx | 2 +- .../frontend/nodes/stream-out-node.tsx | 2 +- .../frontend/nodes/terminate-node.tsx | 2 +- .../frontend/nodes/transform-node.tsx | 2 +- diagram-editor/frontend/nodes/types.d.ts | 20 ---- diagram-editor/frontend/nodes/unzip-node.tsx | 2 +- diagram-editor/frontend/nodes/utils.ts | 2 +- .../types/{diagram.d.ts => diagram.ts} | 0 diagram-editor/frontend/types/index.ts | 4 + diagram-editor/frontend/types/react-flow.ts | 93 +++++++++++++++++++ diagram-editor/frontend/utils/auto-layout.ts | 3 +- .../frontend/utils/connection.test.ts | 5 +- diagram-editor/frontend/utils/connection.ts | 6 +- .../frontend/utils/export-diagram.ts | 9 +- diagram-editor/frontend/utils/index.ts | 6 ++ .../frontend/utils/load-diagram.test.ts | 2 +- diagram-editor/frontend/utils/load-diagram.ts | 6 +- diagram-editor/frontend/utils/operation.ts | 4 +- 57 files changed, 178 insertions(+), 210 deletions(-) delete mode 100644 diagram-editor/frontend/edges/types.d.ts delete mode 100644 diagram-editor/frontend/nodes/types.d.ts rename diagram-editor/frontend/types/{diagram.d.ts => diagram.ts} (100%) create mode 100644 diagram-editor/frontend/types/index.ts create mode 100644 diagram-editor/frontend/types/react-flow.ts create mode 100644 diagram-editor/frontend/utils/index.ts diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index e46c2a68..65dee0b0 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -1,6 +1,5 @@ import { Button, ButtonGroup, styled } from '@mui/material'; import type { NodeAddChange } from '@xyflow/react'; -import type { DiagramEditorNode } from './nodes'; import { BufferAccessIcon, BufferIcon, @@ -14,6 +13,7 @@ import { TransformIcon, UnzipIcon, } from './nodes/icons'; +import type { DiagramEditorNode } from './types'; const StyledOperationButton = styled(Button)({ justifyContent: 'flex-start', diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 568aad71..92055da4 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -24,7 +24,7 @@ import { import { inflateSync, strFromU8 } from 'fflate'; import React, { type JSX, useEffect } from 'react'; import AddOperation from './add-operation'; -import { type DiagramEditorEdge, EDGE_TYPES } from './edges'; +import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; import { EditEdgeForm, @@ -32,7 +32,8 @@ import { edgeHasEditForm, nodeHasEditForm, } from './forms'; -import { type DiagramEditorNode, NODE_TYPES, START_ID } from './nodes'; +import { NODE_TYPES, START_ID } from './nodes'; +import type { DiagramEditorEdge, DiagramEditorNode } from './types'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; diff --git a/diagram-editor/frontend/edges/buffer-key-edge.tsx b/diagram-editor/frontend/edges/buffer-key-edge.tsx index b13d306c..86e8910c 100644 --- a/diagram-editor/frontend/edges/buffer-key-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-key-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type BufferKeyEdgeData = { - key: string; -}; - -export type BufferKeyEdge = Edge; +import type { BufferKeyEdge } from '..'; export type BufferKeyEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/buffer-seq-edge.tsx b/diagram-editor/frontend/edges/buffer-seq-edge.tsx index 47c798c4..e04943d0 100644 --- a/diagram-editor/frontend/edges/buffer-seq-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-seq-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type BufferSeqEdgeData = { - seq: number; -}; - -export type BufferSeqEdge = Edge; +import type { BufferSeqEdge } from '..'; export type BufferSeqEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/fork-result-err-edge.tsx b/diagram-editor/frontend/edges/fork-result-err-edge.tsx index f7bd627a..e3f032f9 100644 --- a/diagram-editor/frontend/edges/fork-result-err-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-err-edge.tsx @@ -1,9 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type ForkResultErrEdgeData = Record; - -export type ForkResultErrEdge = Edge; +import type { ForkResultErrEdge } from '..'; export type ForkResultErrEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx index 4fa1ed48..36e1cce1 100644 --- a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx @@ -1,9 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type ForkResultOkEdgeData = Record; - -export type ForkResultOkEdge = Edge; +import type { ForkResultOkEdge } from '..'; export type ForkResultOkEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index ff595d14..f9d2ae66 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -1,42 +1,14 @@ import { StepEdge } from '@xyflow/react'; -import type { BufferKeyEdge } from './buffer-key-edge'; +import type { EdgeTypes } from '..'; import BufferKeyEdgeComp from './buffer-key-edge'; -import type { BufferSeqEdge } from './buffer-seq-edge'; import BufferSeqEdgeComp from './buffer-seq-edge'; -import type { ForkResultErrEdge } from './fork-result-err-edge'; import ForkResultErrEdgeComp from './fork-result-err-edge'; -import type { ForkResultOkEdge } from './fork-result-ok-edge'; import ForkResultOkEdgeComp from './fork-result-ok-edge'; -import type { SplitKeyEdge } from './split-key-edge'; import SplitKeyEdgeComp from './split-key-edge'; -import SplitRemainingEdgeComp, { - type SplitRemainingEdge, -} from './split-remaining-edge'; -import type { SplitSeqEdge } from './split-seq-edge'; +import SplitRemainingEdgeComp from './split-remaining-edge'; import SplitSeqEdgeComp from './split-seq-edge'; -import StreamOutEdgeComp, { type StreamOutEdge } from './stream-out-edge'; -import type { Edge, EdgeTypes } from './types'; -import UnzipEdgeComp, { type UnzipEdge } from './unzip-edge'; - -export type { BufferKeyEdge, BufferKeyEdgeData } from './buffer-key-edge'; -export type { BufferSeqEdge, BufferSeqEdgeData } from './buffer-seq-edge'; -export type { - ForkResultErrEdge, - ForkResultErrEdgeData, -} from './fork-result-err-edge'; -export type { - ForkResultOkEdge, - ForkResultOkEdgeData, -} from './fork-result-ok-edge'; -export type { SplitKeyEdge, SplitKeyEdgeData } from './split-key-edge'; -export type { - SplitRemainingEdge, - SplitRemainingEdgeData, -} from './split-remaining-edge'; -export type { SplitSeqEdge, SplitSeqEdgeData } from './split-seq-edge'; -export type { StreamOutEdge, StreamOutEdgeData } from './stream-out-edge'; -export type { EdgeTypes } from './types'; -export type { UnzipEdge, UnzipEdgeData } from './unzip-edge'; +import StreamOutEdgeComp from './stream-out-edge'; +import UnzipEdgeComp from './unzip-edge'; export const EDGE_TYPES = { default: StepEdge, @@ -50,18 +22,3 @@ export const EDGE_TYPES = { bufferSeq: BufferSeqEdgeComp, streamOut: StreamOutEdgeComp, } satisfies Record; - -export type DefaultEdgeData = Record; -export type DefaultEdge = Edge; - -export type DiagramEditorEdge = - | DefaultEdge - | UnzipEdge - | ForkResultOkEdge - | ForkResultErrEdge - | SplitKeyEdge - | SplitSeqEdge - | SplitRemainingEdge - | BufferKeyEdge - | BufferSeqEdge - | StreamOutEdge; diff --git a/diagram-editor/frontend/edges/split-key-edge.tsx b/diagram-editor/frontend/edges/split-key-edge.tsx index 338b10bb..41e3678f 100644 --- a/diagram-editor/frontend/edges/split-key-edge.tsx +++ b/diagram-editor/frontend/edges/split-key-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type SplitKeyEdgeData = { - key: string; -}; - -export type SplitKeyEdge = Edge; +import type { SplitKeyEdge } from '..'; export type SplitKeyEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/split-remaining-edge.tsx b/diagram-editor/frontend/edges/split-remaining-edge.tsx index 6c8b4318..6186b2f9 100644 --- a/diagram-editor/frontend/edges/split-remaining-edge.tsx +++ b/diagram-editor/frontend/edges/split-remaining-edge.tsx @@ -1,9 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type SplitRemainingEdgeData = Record; - -export type SplitRemainingEdge = Edge; +import type { SplitRemainingEdge } from '..'; export type SplitRemainingEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/split-seq-edge.tsx b/diagram-editor/frontend/edges/split-seq-edge.tsx index 96c3784b..4881989b 100644 --- a/diagram-editor/frontend/edges/split-seq-edge.tsx +++ b/diagram-editor/frontend/edges/split-seq-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type SplitSeqEdgeData = { - seq: number; -}; - -export type SplitSeqEdge = Edge; +import type { SplitSeqEdge } from '..'; export type SplitSeqEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index f3ff9f95..e209d7fd 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type StreamOutEdgeData = { - name: string; -}; - -export type StreamOutEdge = Edge; +import type { StreamOutEdge } from '..'; export type StreamOutEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/types.d.ts b/diagram-editor/frontend/edges/types.d.ts deleted file mode 100644 index 58001511..00000000 --- a/diagram-editor/frontend/edges/types.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Edge as ReactFlowEdge } from '@xyflow/react'; - -export type EdgeTypes = - | 'default' - | 'unzip' - | 'forkResultOk' - | 'forkResultErr' - | 'splitKey' - | 'splitSeq' - | 'splitRemaining' - | 'bufferKey' - | 'bufferSeq' - | 'streamOut'; - -export type Edge< - D extends Record, - T extends EdgeTypes, -> = ReactFlowEdge & Pick, 'type' | 'data'>; diff --git a/diagram-editor/frontend/edges/unzip-edge.tsx b/diagram-editor/frontend/edges/unzip-edge.tsx index cb3f62ba..415475c5 100644 --- a/diagram-editor/frontend/edges/unzip-edge.tsx +++ b/diagram-editor/frontend/edges/unzip-edge.tsx @@ -1,11 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { Edge } from './types'; - -export type UnzipEdgeData = { - seq: number; -}; - -export type UnzipEdge = Edge; +import type { UnzipEdge } from '..'; export type UnzipEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index 1c1a55e1..c41f1c13 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -14,8 +14,7 @@ import { } from '@mui/material'; import { deflateSync, strToU8 } from 'fflate'; import React from 'react'; -import type { DiagramEditorEdge } from './edges'; -import type { DiagramEditorNode } from './nodes'; +import type { DiagramEditorEdge, DiagramEditorNode } from './types'; import { exportDiagram } from './utils/export-diagram'; export interface ExportDiagramDialogProps { diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index 74b8f5ac..1fd58722 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -11,7 +11,7 @@ import { TextField, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { BufferKeyEdge, BufferSeqEdge } from '../edges'; +import type { BufferKeyEdge, BufferSeqEdge } from '..'; export type BufferEdge = BufferKeyEdge | BufferSeqEdge; diff --git a/diagram-editor/frontend/forms/buffer-form.tsx b/diagram-editor/frontend/forms/buffer-form.tsx index 9c786065..f91c6871 100644 --- a/diagram-editor/frontend/forms/buffer-form.tsx +++ b/diagram-editor/frontend/forms/buffer-form.tsx @@ -6,7 +6,7 @@ import { Switch, } from '@mui/material'; import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '../nodes'; +import type { OperationNode } from '..'; export interface BufferFormProps { node: OperationNode<'buffer'>; diff --git a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx index f6a4aece..6559581b 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx @@ -10,7 +10,7 @@ import type { SplitRemainingEdge, SplitSeqEdge, UnzipEdge, -} from '../edges'; +} from '..'; import EditEdgeForm from './edit-edge-form'; const meta: Meta = { diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index a8d3e555..47a4ed38 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -1,12 +1,8 @@ import type { EdgeReplaceChange } from '@xyflow/react'; -import type { - DiagramEditorEdge, - ForkResultErrEdge, - ForkResultOkEdge, - UnzipEdge, -} from '../edges'; -import { exhaustiveCheck } from '../utils/exhaustive-check'; +import type { ForkResultErrEdge, ForkResultOkEdge, UnzipEdge } from '..'; +import type { DiagramEditorEdge } from '..'; +import { exhaustiveCheck } from '..'; import BufferEdgeForm, { type BufferEdge } from './buffer-edge-form'; import ForkResultEdgeForm from './fork-result-edge-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; diff --git a/diagram-editor/frontend/forms/edit-node-form.tsx b/diagram-editor/frontend/forms/edit-node-form.tsx index 82e8cedd..c8d7720e 100644 --- a/diagram-editor/frontend/forms/edit-node-form.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.tsx @@ -1,7 +1,7 @@ import type { NodeReplaceChange } from '@xyflow/react'; -import type { DiagramEditorNode, OperationNode } from '../nodes'; -import { exhaustiveCheck } from '../utils/exhaustive-check'; +import type { DiagramEditorNode, OperationNode } from '..'; +import { exhaustiveCheck } from '..'; import BufferForm from './buffer-form'; import NodeForm from './node-form'; import TransformForm from './transform-form'; diff --git a/diagram-editor/frontend/forms/fork-result-edge-form.tsx b/diagram-editor/frontend/forms/fork-result-edge-form.tsx index edb5ddcb..66b26ea3 100644 --- a/diagram-editor/frontend/forms/fork-result-edge-form.tsx +++ b/diagram-editor/frontend/forms/fork-result-edge-form.tsx @@ -8,7 +8,7 @@ import { Select, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { ForkResultErrEdge, ForkResultOkEdge } from '../edges'; +import type { ForkResultErrEdge, ForkResultOkEdge } from '..'; export type ForkResultEdge = ForkResultOkEdge | ForkResultErrEdge; diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx index b9d2061d..42fb8bab 100644 --- a/diagram-editor/frontend/forms/node-form.tsx +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -1,6 +1,6 @@ import { Card, CardContent, CardHeader, Stack, TextField } from '@mui/material'; import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '../nodes'; +import type { OperationNode } from '..'; export interface NodeFormProps { node: OperationNode<'node'>; diff --git a/diagram-editor/frontend/forms/op-id-form.tsx b/diagram-editor/frontend/forms/op-id-form.tsx index 547c9b8b..8fcf33cc 100644 --- a/diagram-editor/frontend/forms/op-id-form.tsx +++ b/diagram-editor/frontend/forms/op-id-form.tsx @@ -1,6 +1,6 @@ import { Card, CardContent, CardHeader, Stack, TextField } from '@mui/material'; import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '../nodes'; +import type { OperationNode } from '..'; export interface OpIdFormProps { node: OperationNode; diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index e3e475ec..1b94d288 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -11,7 +11,7 @@ import { TextField, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { SplitKeyEdge, SplitRemainingEdge, SplitSeqEdge } from '../edges'; +import type { SplitKeyEdge, SplitRemainingEdge, SplitSeqEdge } from '..'; export type SplitEdge = SplitKeyEdge | SplitSeqEdge | SplitRemainingEdge; diff --git a/diagram-editor/frontend/forms/transform-form.tsx b/diagram-editor/frontend/forms/transform-form.tsx index 09ebe253..9c96f8ed 100644 --- a/diagram-editor/frontend/forms/transform-form.tsx +++ b/diagram-editor/frontend/forms/transform-form.tsx @@ -1,6 +1,6 @@ import { Card, CardContent, CardHeader, TextField } from '@mui/material'; import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '../nodes'; +import type { OperationNode } from '..'; export interface TransformFormProps { node: OperationNode<'transform'>; diff --git a/diagram-editor/frontend/forms/unzip-edge-form.tsx b/diagram-editor/frontend/forms/unzip-edge-form.tsx index 8d603841..1c7b95b3 100644 --- a/diagram-editor/frontend/forms/unzip-edge-form.tsx +++ b/diagram-editor/frontend/forms/unzip-edge-form.tsx @@ -1,6 +1,6 @@ import { Card, CardContent, CardHeader, TextField } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { UnzipEdge } from '../edges'; +import type { UnzipEdge } from '..'; export interface UnzipEdgeFormProps { edge: UnzipEdge; diff --git a/diagram-editor/frontend/index.tsx b/diagram-editor/frontend/index.tsx index eacf2b2f..6dd022b0 100644 --- a/diagram-editor/frontend/index.tsx +++ b/diagram-editor/frontend/index.tsx @@ -11,3 +11,8 @@ if (rootEl) { , ); } + +export { default as diagramSchema } from './diagram.schema.json'; +export * from './nodes'; +export * from './types'; +export * from './utils'; diff --git a/diagram-editor/frontend/nodes/buffer-access-node.tsx b/diagram-editor/frontend/nodes/buffer-access-node.tsx index 55593bf8..c87466e3 100644 --- a/diagram-editor/frontend/nodes/buffer-access-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-access-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { BufferAccessIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function BufferAccessNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/buffer-node.tsx b/diagram-editor/frontend/nodes/buffer-node.tsx index 73de832b..c1955654 100644 --- a/diagram-editor/frontend/nodes/buffer-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { BufferIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function BufferNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/fork-clone-node.tsx b/diagram-editor/frontend/nodes/fork-clone-node.tsx index fe9f4219..8f144b90 100644 --- a/diagram-editor/frontend/nodes/fork-clone-node.tsx +++ b/diagram-editor/frontend/nodes/fork-clone-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { ForkCloneIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function ForkCloneNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/fork-result-node.tsx b/diagram-editor/frontend/nodes/fork-result-node.tsx index 8059efef..b8d923c4 100644 --- a/diagram-editor/frontend/nodes/fork-result-node.tsx +++ b/diagram-editor/frontend/nodes/fork-result-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { ForkResultIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function ForkResultNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/icons.tsx b/diagram-editor/frontend/nodes/icons.tsx index 013121b4..313c5bc4 100644 --- a/diagram-editor/frontend/nodes/icons.tsx +++ b/diagram-editor/frontend/nodes/icons.tsx @@ -18,8 +18,8 @@ import SectionIcon from '@mui/icons-material/SelectAllOutlined'; import UnzipIcon from '@mui/icons-material/UnarchiveOutlined'; import type React from 'react'; -import type { DiagramOperation } from '../types/diagram'; -import { exhaustiveCheck } from '../utils/exhaustive-check'; +import type { DiagramOperation } from '..'; +import { exhaustiveCheck } from '..'; export function getIcon(op: DiagramOperation): React.ComponentType { switch (op.type) { diff --git a/diagram-editor/frontend/nodes/index.tsx b/diagram-editor/frontend/nodes/index.tsx index f7d9b58e..d747bd7b 100644 --- a/diagram-editor/frontend/nodes/index.tsx +++ b/diagram-editor/frontend/nodes/index.tsx @@ -1,4 +1,9 @@ -import type { DiagramOperation } from '../types/diagram'; +import type { + DiagramEditorNode, + DiagramOperation, + NodeTypes, + OperationNode, +} from '../types'; import BufferAccessNode from './buffer-access-node'; import BufferNode from './buffer-node'; import ForkCloneNode from './fork-clone-node'; @@ -14,11 +19,8 @@ import { StartNode } from './start-node'; import StreamOutNode from './stream-out-node'; import { TerminateNode } from './terminate-node'; import TransformNode from './transform-node'; -import type { DiagramEditorNode, NodeTypes, OperationNode } from './types'; import UnzipNode from './unzip-node'; -export type * from './types'; - export const START_ID = 'builtin:start'; export const TERMINATE_ID = 'builtin:terminate'; diff --git a/diagram-editor/frontend/nodes/join-node.tsx b/diagram-editor/frontend/nodes/join-node.tsx index a94ea653..65005818 100644 --- a/diagram-editor/frontend/nodes/join-node.tsx +++ b/diagram-editor/frontend/nodes/join-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { JoinIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function JoinNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/listen-node.tsx b/diagram-editor/frontend/nodes/listen-node.tsx index 665d2472..c5a31c27 100644 --- a/diagram-editor/frontend/nodes/listen-node.tsx +++ b/diagram-editor/frontend/nodes/listen-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { ListenIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function ListenNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/node-node.tsx b/diagram-editor/frontend/nodes/node-node.tsx index 811de6b4..2e8dc3b5 100644 --- a/diagram-editor/frontend/nodes/node-node.tsx +++ b/diagram-editor/frontend/nodes/node-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { OperationNode } from '..'; import BaseNode from './base-node'; import { NodeIcon } from './icons'; -import type { OperationNode } from './types'; function NodeNode(props: NodeProps>) { return ( diff --git a/diagram-editor/frontend/nodes/scope-node.tsx b/diagram-editor/frontend/nodes/scope-node.tsx index 438b8114..ba05e0e0 100644 --- a/diagram-editor/frontend/nodes/scope-node.tsx +++ b/diagram-editor/frontend/nodes/scope-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { ScopeIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function ScopeNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx index d7a7f942..7460e3b0 100644 --- a/diagram-editor/frontend/nodes/section-node.tsx +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { OperationNode } from '..'; import BaseNode from './base-node'; import { SectionIcon } from './icons'; -import type { OperationNode } from './types'; function SectionNode(props: NodeProps>) { const label = (props.data.builder || props.data.template) as string; diff --git a/diagram-editor/frontend/nodes/serialized-join-node.tsx b/diagram-editor/frontend/nodes/serialized-join-node.tsx index ca9156b4..fe15426d 100644 --- a/diagram-editor/frontend/nodes/serialized-join-node.tsx +++ b/diagram-editor/frontend/nodes/serialized-join-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { SerializedJoinIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function SerializedJoinNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/split-node.tsx b/diagram-editor/frontend/nodes/split-node.tsx index 64f7c0d0..dd4a1ab0 100644 --- a/diagram-editor/frontend/nodes/split-node.tsx +++ b/diagram-editor/frontend/nodes/split-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { SplitIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function SplitNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/start-node.tsx b/diagram-editor/frontend/nodes/start-node.tsx index f85fb0c3..ecdfba8b 100644 --- a/diagram-editor/frontend/nodes/start-node.tsx +++ b/diagram-editor/frontend/nodes/start-node.tsx @@ -2,7 +2,7 @@ import { Button, Paper } from '@mui/material'; import type { NodeProps } from '@xyflow/react'; import { Handle, Position } from '@xyflow/react'; -import type { DiagramEditorNode } from '.'; +import type { DiagramEditorNode } from '..'; export function StartNode({ isConnectable, diff --git a/diagram-editor/frontend/nodes/stream-out-node.tsx b/diagram-editor/frontend/nodes/stream-out-node.tsx index 6cc66224..9cae0bdd 100644 --- a/diagram-editor/frontend/nodes/stream-out-node.tsx +++ b/diagram-editor/frontend/nodes/stream-out-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { StreamOutIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function StreamOutNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/terminate-node.tsx b/diagram-editor/frontend/nodes/terminate-node.tsx index 8bdc5453..8cdb7421 100644 --- a/diagram-editor/frontend/nodes/terminate-node.tsx +++ b/diagram-editor/frontend/nodes/terminate-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '.'; +import type { DiagramEditorNode } from '..'; import { Button, Paper } from '@mui/material'; import { Handle, Position } from '@xyflow/react'; diff --git a/diagram-editor/frontend/nodes/transform-node.tsx b/diagram-editor/frontend/nodes/transform-node.tsx index 66582501..8ba46502 100644 --- a/diagram-editor/frontend/nodes/transform-node.tsx +++ b/diagram-editor/frontend/nodes/transform-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { TransformIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function TransformNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/types.d.ts b/diagram-editor/frontend/nodes/types.d.ts deleted file mode 100644 index 5eeaf831..00000000 --- a/diagram-editor/frontend/nodes/types.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Node as ReactFlowNode } from '@xyflow/react'; -import type { DiagramOperation } from '../types/diagram'; - -export type BuiltinNodeTypes = 'start' | 'terminate'; - -export type OperationNodeTypes = DiagramOperation['type']; - -export type NodeTypes = BuiltinNodeTypes | OperationNodeTypes; - -export type Node< - D extends Record, - T extends NodeTypes, -> = ReactFlowNode; - -export type BuiltinNode = Node, BuiltinNodeTypes>; - -export type OperationNode = - Node, K>; - -export type DiagramEditorNode = BuiltinNode | OperationNode; diff --git a/diagram-editor/frontend/nodes/unzip-node.tsx b/diagram-editor/frontend/nodes/unzip-node.tsx index 0bbb0621..8f3c21c7 100644 --- a/diagram-editor/frontend/nodes/unzip-node.tsx +++ b/diagram-editor/frontend/nodes/unzip-node.tsx @@ -1,7 +1,7 @@ import type { NodeProps } from '@xyflow/react'; +import type { DiagramEditorNode } from '..'; import BaseNode from './base-node'; import { UnzipIcon } from './icons'; -import type { DiagramEditorNode } from './types'; function UnzipNode(props: NodeProps) { return ( diff --git a/diagram-editor/frontend/nodes/utils.ts b/diagram-editor/frontend/nodes/utils.ts index 1615f486..6f18c14d 100644 --- a/diagram-editor/frontend/nodes/utils.ts +++ b/diagram-editor/frontend/nodes/utils.ts @@ -1,4 +1,4 @@ -import type { DiagramEditorNode, OperationNode } from './types'; +import type { DiagramEditorNode, OperationNode } from '..'; export function isOperationData( data: DiagramEditorNode['data'], diff --git a/diagram-editor/frontend/types/diagram.d.ts b/diagram-editor/frontend/types/diagram.ts similarity index 100% rename from diagram-editor/frontend/types/diagram.d.ts rename to diagram-editor/frontend/types/diagram.ts diff --git a/diagram-editor/frontend/types/index.ts b/diagram-editor/frontend/types/index.ts new file mode 100644 index 00000000..8fbd5235 --- /dev/null +++ b/diagram-editor/frontend/types/index.ts @@ -0,0 +1,4 @@ +// This file should be a .d.ts but trying to make rsbuild resolve .d.ts causes it to try and resolve +// it across all packages, leading to build errors. +export * from './diagram'; +export * from './react-flow'; diff --git a/diagram-editor/frontend/types/react-flow.ts b/diagram-editor/frontend/types/react-flow.ts new file mode 100644 index 00000000..08c60d84 --- /dev/null +++ b/diagram-editor/frontend/types/react-flow.ts @@ -0,0 +1,93 @@ +import type { Node as ReactFlowNode } from '@xyflow/react'; +import type { DiagramOperation } from './diagram'; + +export type BuiltinNodeTypes = 'start' | 'terminate'; + +export type OperationNodeTypes = DiagramOperation['type']; + +export type NodeTypes = BuiltinNodeTypes | OperationNodeTypes; + +export type Node< + D extends Record, + T extends NodeTypes, +> = ReactFlowNode; + +export type BuiltinNode = Node, BuiltinNodeTypes>; + +export type OperationNode = + Node, K>; + +export type DiagramEditorNode = BuiltinNode | OperationNode; + +import type { Edge as ReactFlowEdge } from '@xyflow/react'; + +export type EdgeTypes = + | 'default' + | 'unzip' + | 'forkResultOk' + | 'forkResultErr' + | 'splitKey' + | 'splitSeq' + | 'splitRemaining' + | 'bufferKey' + | 'bufferSeq' + | 'streamOut'; + +export type Edge< + D extends Record, + T extends EdgeTypes, +> = ReactFlowEdge & Pick, 'type' | 'data'>; + +export type DefaultEdgeData = Record; +export type DefaultEdge = Edge; + +export type BufferKeyEdgeData = { + key: string; +}; +export type BufferKeyEdge = Edge; + +export type BufferSeqEdgeData = { + seq: number; +}; +export type BufferSeqEdge = Edge; + +export type ForkResultErrEdgeData = Record; +export type ForkResultErrEdge = Edge; + +export type ForkResultOkEdgeData = Record; +export type ForkResultOkEdge = Edge; + +export type SplitKeyEdgeData = { + key: string; +}; +export type SplitKeyEdge = Edge; + +export type SplitRemainingEdgeData = Record; +export type SplitRemainingEdge = Edge; + +export type SplitSeqEdgeData = { + seq: number; +}; +export type SplitSeqEdge = Edge; + +export type StreamOutEdgeData = { + name: string; +}; +export type StreamOutEdge = Edge; + +export type UnzipEdgeData = { + seq: number; +}; +export type UnzipEdge = Edge; + +export type DiagramEditorEdge = + | DefaultEdge + | UnzipEdge + | ForkResultOkEdge + | ForkResultErrEdge + | SplitKeyEdge + | SplitSeqEdge + | SplitRemainingEdge + | BufferKeyEdge + | BufferSeqEdge + | StreamOutEdge; diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index ad7058a6..5d05a573 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -1,7 +1,6 @@ import type { NodePositionChange } from '@xyflow/react'; -import type { DiagramEditorEdge } from '../edges'; -import type { DiagramEditorNode } from '../nodes'; +import type { DiagramEditorEdge, DiagramEditorNode } from '..'; export interface AutoLayoutOptions { rootPosition: { x: number; y: number }; diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index dd93e00a..c78de113 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -1,6 +1,5 @@ -import type { DiagramEditorEdge } from '../edges'; -import { TERMINATE_ID } from '../nodes'; -import type { Diagram, DiagramOperation } from '../types/diagram'; +import type { Diagram, DiagramEditorEdge, DiagramOperation } from '..'; +import { TERMINATE_ID } from '..'; import { syncEdge } from './connection'; describe('syncEdge', () => { diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 9d53aaff..e6d40956 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,10 +1,10 @@ -import type { DiagramEditorEdge } from '../edges'; -import { START_ID, TERMINATE_ID } from '../nodes'; import type { BufferSelection, Diagram, + DiagramEditorEdge, DiagramOperation, -} from '../types/diagram'; +} from '..'; +import { START_ID, TERMINATE_ID } from '..'; import { exhaustiveCheck } from './exhaustive-check'; import { isArrayBufferSelection, diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index f8d1e4f4..5f07c0d0 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -1,10 +1,5 @@ -import type { DiagramEditorEdge } from '../edges'; -import { - type DiagramEditorNode, - extractOperation, - isOperationNode, -} from '../nodes'; -import type { Diagram } from '../types/diagram'; +import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; +import { extractOperation, isOperationNode } from '..'; import { syncEdge } from './connection'; export function exportDiagram( diff --git a/diagram-editor/frontend/utils/index.ts b/diagram-editor/frontend/utils/index.ts new file mode 100644 index 00000000..115c82d8 --- /dev/null +++ b/diagram-editor/frontend/utils/index.ts @@ -0,0 +1,6 @@ +export * from './auto-layout'; +export * from './connection'; +export * from './exhaustive-check'; +export * from './export-diagram'; +export * from './load-diagram'; +export * from './operation'; diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index a78131da..0d9b41d5 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -1,5 +1,5 @@ import { applyNodeChanges } from '@xyflow/react'; -import { START_ID } from '../nodes'; +import { START_ID } from '..'; import { autoLayout } from './auto-layout'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 9fcc4379..3aea0b07 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,10 +1,8 @@ import Ajv from 'ajv'; import addFormats from 'ajv-formats'; -import diagramSchema from '../diagram.schema.json'; -import type { DiagramEditorEdge } from '../edges'; -import { type DiagramEditorNode, START_ID, TERMINATE_ID } from '../nodes'; -import type { Diagram } from '../types/diagram'; +import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; +import { START_ID, TERMINATE_ID, diagramSchema } from '..'; import { buildEdges, nextOperationToNodeId } from './operation'; export interface Graph { diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index 59991bc8..c769a928 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -1,10 +1,10 @@ -import type { DiagramEditorEdge } from '../edges'; import type { BufferSelection, BuiltinTarget, + DiagramEditorEdge, DiagramOperation, NextOperation, -} from '../types/diagram'; +} from '..'; import { exhaustiveCheck } from './exhaustive-check'; /** From 631ef2e3c952c3cefa5fbb2bbbf1171a4c13b953 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 03:28:56 +0000 Subject: [PATCH 048/165] use default export Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/nodes/index.tsx | 4 ++-- diagram-editor/frontend/nodes/start-node.tsx | 4 +++- diagram-editor/frontend/nodes/terminate-node.tsx | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/diagram-editor/frontend/nodes/index.tsx b/diagram-editor/frontend/nodes/index.tsx index d747bd7b..9cb53792 100644 --- a/diagram-editor/frontend/nodes/index.tsx +++ b/diagram-editor/frontend/nodes/index.tsx @@ -15,9 +15,9 @@ import ScopeNode from './scope-node'; import SectionNode from './section-node'; import SerializedJoinNode from './serialized-join-node'; import SplitNode from './split-node'; -import { StartNode } from './start-node'; +import StartNode from './start-node'; import StreamOutNode from './stream-out-node'; -import { TerminateNode } from './terminate-node'; +import TerminateNode from './terminate-node'; import TransformNode from './transform-node'; import UnzipNode from './unzip-node'; diff --git a/diagram-editor/frontend/nodes/start-node.tsx b/diagram-editor/frontend/nodes/start-node.tsx index ecdfba8b..7f6ae400 100644 --- a/diagram-editor/frontend/nodes/start-node.tsx +++ b/diagram-editor/frontend/nodes/start-node.tsx @@ -4,7 +4,7 @@ import { Handle, Position } from '@xyflow/react'; import type { DiagramEditorNode } from '..'; -export function StartNode({ +function StartNode({ isConnectable, sourcePosition = Position.Bottom, }: NodeProps) { @@ -21,3 +21,5 @@ export function StartNode({ ); } + +export default StartNode; diff --git a/diagram-editor/frontend/nodes/terminate-node.tsx b/diagram-editor/frontend/nodes/terminate-node.tsx index 8cdb7421..ca359524 100644 --- a/diagram-editor/frontend/nodes/terminate-node.tsx +++ b/diagram-editor/frontend/nodes/terminate-node.tsx @@ -4,7 +4,7 @@ import type { DiagramEditorNode } from '..'; import { Button, Paper } from '@mui/material'; import { Handle, Position } from '@xyflow/react'; -export function TerminateNode({ +function TerminateNode({ isConnectable, targetPosition = Position.Top, }: NodeProps) { @@ -21,3 +21,5 @@ export function TerminateNode({ ); } + +export default TerminateNode; From 7159c9a62a241cadd86ec98dc5498323148ef379 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 03:31:55 +0000 Subject: [PATCH 049/165] use correct schema version on ajv Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/index.tsx | 1 - diagram-editor/frontend/utils/load-diagram.ts | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/diagram-editor/frontend/index.tsx b/diagram-editor/frontend/index.tsx index 6dd022b0..90729255 100644 --- a/diagram-editor/frontend/index.tsx +++ b/diagram-editor/frontend/index.tsx @@ -12,7 +12,6 @@ if (rootEl) { ); } -export { default as diagramSchema } from './diagram.schema.json'; export * from './nodes'; export * from './types'; export * from './utils'; diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 3aea0b07..87dac4f8 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,8 +1,9 @@ -import Ajv from 'ajv'; +import Ajv from 'ajv/dist/2020'; import addFormats from 'ajv-formats'; import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; -import { START_ID, TERMINATE_ID, diagramSchema } from '..'; +import { START_ID, TERMINATE_ID } from '..'; +import diagramSchema from '../diagram.schema.json'; import { buildEdges, nextOperationToNodeId } from './operation'; export interface Graph { From ebe4d245a969fc9fe894429816f3d5e2d49d9506 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 03:37:17 +0000 Subject: [PATCH 050/165] use uuid as id for new nodes Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 34 ++++++++-------------- diagram-editor/frontend/diagram-editor.tsx | 6 ---- diagram-editor/package.json | 3 +- pnpm-lock.yaml | 9 ++++++ 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 65dee0b0..85d6c818 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -1,4 +1,5 @@ import { Button, ButtonGroup, styled } from '@mui/material'; +import { v4 as uuidv4 } from 'uuid'; import type { NodeAddChange } from '@xyflow/react'; import { BufferAccessIcon, @@ -36,11 +37,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'node', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'node', builder: '', next: { builtin: 'dispose' }, @@ -58,11 +58,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'fork_clone', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'fork_clone', next: [], }, @@ -78,11 +77,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'unzip', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'unzip', next: [], }, @@ -98,11 +96,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'fork_result', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'fork_result', err: { builtin: 'dispose' }, ok: { builtin: 'dispose' }, @@ -119,11 +116,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'split', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'split', }, }, @@ -138,11 +134,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'join', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'join', buffers: [], next: { builtin: 'dispose' }, @@ -159,11 +154,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'serialized_join', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'serialized_join', buffers: [], next: { builtin: 'dispose' }, @@ -180,11 +174,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'transform', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'transform', cel: '', next: { builtin: 'dispose' }, @@ -201,11 +194,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'buffer', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'buffer', }, }, @@ -220,11 +212,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'buffer_access', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'buffer_access', buffers: [], next: { builtin: 'dispose' }, @@ -241,11 +232,10 @@ function AddOperation({ onAdd }: AddOperationProps) { onClick={() => { onAdd?.({ item: { - id: 'new_operation', + id: uuidv4(), type: 'listen', position: { x: 0, y: 0 }, data: { - opId: 'new_operation', type: 'listen', buffers: [], next: { builtin: 'dispose' }, diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 92055da4..244bc94b 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -287,12 +287,6 @@ const DiagramEditor = () => { { const newNode = change.item; - let i = 1; - let newId = newNode.id; - while (nodes.findIndex((n) => n.id === newId) >= 0) { - newId = `${newNode.id}_${i++}`; - } - newNode.id = newId; const newPos = reactFlowInstance.current?.screenToFlowPosition({ x: addOpAnchorPos.left, y: addOpAnchorPos.top, diff --git a/diagram-editor/package.json b/diagram-editor/package.json index b7884b46..162ab6ca 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -25,7 +25,8 @@ "ajv-formats": "^3.0.1", "fflate": "^0.8.2", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "uuid": "^11.1.0" }, "devDependencies": { "@rsbuild/core": "^1.3.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b9a4bc4..9dc3b278 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) + uuid: + specifier: ^11.1.0 + version: 11.1.0 devDependencies: '@rsbuild/core': specifier: ^1.3.15 @@ -3108,6 +3111,10 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + v8-to-istanbul@9.3.0: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} @@ -6585,6 +6592,8 @@ snapshots: is-typed-array: 1.1.15 which-typed-array: 1.1.19 + uuid@11.1.0: {} + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 From 4b2c96a197d448f93debed686e5464e97c8def3e Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 06:56:29 +0000 Subject: [PATCH 051/165] implement delete button on all edit node forms Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 56 ++++++++++------- diagram-editor/frontend/forms/buffer-form.tsx | 59 +++++++----------- .../frontend/forms/edit-node-form.tsx | 61 ++++-------------- .../frontend/forms/edit-operation-form.tsx | 62 +++++++++++++++++++ diagram-editor/frontend/forms/node-form.tsx | 62 ++++++------------- diagram-editor/frontend/forms/op-id-form.tsx | 35 ----------- .../frontend/forms/transform-form.tsx | 61 +++++++++--------- diagram-editor/frontend/utils/load-diagram.ts | 2 +- 9 files changed, 186 insertions(+), 214 deletions(-) create mode 100644 diagram-editor/frontend/forms/edit-operation-form.tsx delete mode 100644 diagram-editor/frontend/forms/op-id-form.tsx diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 85d6c818..0a70f09d 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -1,6 +1,6 @@ import { Button, ButtonGroup, styled } from '@mui/material'; -import { v4 as uuidv4 } from 'uuid'; import type { NodeAddChange } from '@xyflow/react'; +import { v4 as uuidv4 } from 'uuid'; import { BufferAccessIcon, BufferIcon, diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 244bc94b..e0a4becb 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -26,14 +26,13 @@ import React, { type JSX, useEffect } from 'react'; import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; -import { - EditEdgeForm, - EditNodeForm, - edgeHasEditForm, - nodeHasEditForm, -} from './forms'; -import { NODE_TYPES, START_ID } from './nodes'; -import type { DiagramEditorEdge, DiagramEditorNode } from './types'; +import { EditEdgeForm, EditNodeForm, edgeHasEditForm } from './forms'; +import { NODE_TYPES, START_ID, isOperationNode } from './nodes'; +import type { + DiagramEditorEdge, + DiagramEditorNode, + OperationNode, +} from './types'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; @@ -149,9 +148,15 @@ const DiagramEditor = () => { onNodesChange={(changes) => setNodes((prev) => applyNodeChanges(changes, prev)) } + onNodesDelete={() => { + closeAllPopovers(); + }} onEdgesChange={(changes) => { setEdges((prev) => applyEdgeChanges(changes, prev)); }} + onEdgesDelete={() => { + closeAllPopovers(); + }} onConnect={(conn) => { setEdges((prev) => addEdge(conn, prev)); }} @@ -161,21 +166,28 @@ const DiagramEditor = () => { onNodeClick={(ev, node) => { ev.stopPropagation(); closeAllPopovers(); - if (nodeHasEditForm(node)) { - setRenderEditForm( - { - setNodes((prev) => applyNodeChanges([change], prev)); - }} - />, - ); - setEditOpFormPopoverProps({ - open: true, - anchorReference: 'anchorEl', - anchorEl: ev.currentTarget, - }); + + if (!isOperationNode(node)) { + return; } + + setRenderEditForm( + { + setNodes((prev) => applyNodeChanges([change], prev)); + }} + onDelete={(change) => { + setNodes((prev) => applyNodeChanges([change], prev)); + closeAllPopovers(); + }} + />, + ); + setEditOpFormPopoverProps({ + open: true, + anchorReference: 'anchorEl', + anchorEl: ev.currentTarget, + }); }} onEdgeClick={(ev, edge) => { ev.stopPropagation(); diff --git a/diagram-editor/frontend/forms/buffer-form.tsx b/diagram-editor/frontend/forms/buffer-form.tsx index f91c6871..5e560ece 100644 --- a/diagram-editor/frontend/forms/buffer-form.tsx +++ b/diagram-editor/frontend/forms/buffer-form.tsx @@ -1,41 +1,28 @@ -import { - Card, - CardContent, - CardHeader, - FormControlLabel, - Switch, -} from '@mui/material'; -import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '..'; +import { FormControlLabel, Switch } from '@mui/material'; +import EditOperationForm, { + type EditOperationFormProps, +} from './edit-operation-form'; -export interface BufferFormProps { - node: OperationNode<'buffer'>; - onChange: (change: NodeReplaceChange>) => void; -} - -export function BufferForm({ node, onChange }: BufferFormProps) { +export function BufferForm(props: EditOperationFormProps<'buffer'>) { return ( - - - - { - node.data.serialize = checked; - onChange?.({ - type: 'replace', - id: node.id, - item: { ...node }, - }); - }} - /> - } - label="Serialize" - /> - - + + { + props.node.data.serialize = checked; + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: { ...props.node }, + }); + }} + /> + } + label="Serialize" + /> + ); } diff --git a/diagram-editor/frontend/forms/edit-node-form.tsx b/diagram-editor/frontend/forms/edit-node-form.tsx index c8d7720e..084c0b14 100644 --- a/diagram-editor/frontend/forms/edit-node-form.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.tsx @@ -1,73 +1,36 @@ -import type { NodeReplaceChange } from '@xyflow/react'; +import type { NodeRemoveChange, NodeReplaceChange } from '@xyflow/react'; -import type { DiagramEditorNode, OperationNode } from '..'; -import { exhaustiveCheck } from '..'; +import type { DiagramEditorNode } from '..'; import BufferForm from './buffer-form'; +import EditOperationForm, { + type EditOperationFormProps, +} from './edit-operation-form'; import NodeForm from './node-form'; import TransformForm from './transform-form'; export interface EditNodeFormProps { node: DiagramEditorNode; onChange?: (change: NodeReplaceChange) => void; + onDelete?: (change: NodeRemoveChange) => void; } -function EditNodeForm({ node, onChange }: EditNodeFormProps) { - switch (node.data.type) { +function EditNodeForm(props: EditOperationFormProps) { + switch (props.node.data.type) { case 'node': { - return ( - } - onChange={(change) => onChange?.(change)} - /> - ); + return )} />; } case 'buffer': { - return ( - } - onChange={(change) => onChange?.(change)} - /> - ); + return )} />; } case 'transform': { return ( - } - onChange={(change) => onChange?.(change)} - /> + )} /> ); } default: { - return null; + return ; } } } export default EditNodeForm; - -export function nodeHasEditForm(node: DiagramEditorNode): boolean { - switch (node.data.type) { - case 'node': - case 'buffer': - case 'transform': { - return true; - } - case 'buffer_access': - case 'fork_clone': - case 'fork_result': - case 'join': - case 'listen': - case 'section': - case 'serialized_join': - case 'split': - case 'unzip': - case 'scope': - case 'stream_out': { - return false; - } - default: { - exhaustiveCheck(node.data); - throw new Error('unknown node'); - } - } -} diff --git a/diagram-editor/frontend/forms/edit-operation-form.tsx b/diagram-editor/frontend/forms/edit-operation-form.tsx new file mode 100644 index 00000000..9f3491f6 --- /dev/null +++ b/diagram-editor/frontend/forms/edit-operation-form.tsx @@ -0,0 +1,62 @@ +import DeleteIcon from '@mui/icons-material/Delete'; +import { + Button, + Card, + CardContent, + CardHeader, + DialogActions, + Stack, + TextField, +} from '@mui/material'; +import type { NodeRemoveChange, NodeReplaceChange } from '@xyflow/react'; +import type React from 'react'; +import type { OperationNode, OperationNodeTypes } from '../types'; + +export interface EditOperationFormProps< + NodeType extends OperationNodeTypes = OperationNodeTypes, +> { + node: OperationNode; + onChange?: (change: NodeReplaceChange) => void; + onDelete?: (change: NodeRemoveChange) => void; +} + +function EditOperationForm({ + node, + onChange, + onDelete, + children, +}: React.PropsWithChildren) { + return ( + + + + + { + onChange?.({ + type: 'replace', + id: node.id, + item: { ...node, id: ev.target.value }, + }); + }} + /> + {children} + + + + + + + ); +} + +export default EditOperationForm; diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx index 42fb8bab..d2a6a19f 100644 --- a/diagram-editor/frontend/forms/node-form.tsx +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -1,47 +1,25 @@ -import { Card, CardContent, CardHeader, Stack, TextField } from '@mui/material'; -import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '..'; +import { TextField } from '@mui/material'; +import EditOperationForm, { + type EditOperationFormProps, +} from './edit-operation-form'; -export interface NodeFormProps { - node: OperationNode<'node'>; - onChange?: (change: NodeReplaceChange>) => void; -} - -function NodeForm({ node, onChange }: NodeFormProps) { +function NodeForm(props: EditOperationFormProps<'node'>) { return ( - - - - - { - node.data.opId = ev.target.value; - onChange?.({ - type: 'replace', - id: node.id, - item: { ...node }, - }); - }} - /> - { - node.data.builder = ev.target.value; - onChange?.({ - type: 'replace', - id: node.id, - item: { ...node }, - }); - }} - /> - - - + + { + props.node.data.builder = ev.target.value; + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: { ...props.node }, + }); + }} + /> + ); } diff --git a/diagram-editor/frontend/forms/op-id-form.tsx b/diagram-editor/frontend/forms/op-id-form.tsx deleted file mode 100644 index 8fcf33cc..00000000 --- a/diagram-editor/frontend/forms/op-id-form.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Card, CardContent, CardHeader, Stack, TextField } from '@mui/material'; -import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '..'; - -export interface OpIdFormProps { - node: OperationNode; - onChange?: (change: NodeReplaceChange) => void; -} - -function OpIdForm({ node, onChange }: OpIdFormProps) { - return ( - - - - - { - node.data.opId = ev.target.value; - onChange?.({ - type: 'replace', - id: node.id, - item: { ...node }, - }); - }} - /> - - - - ); -} - -export default OpIdForm; diff --git a/diagram-editor/frontend/forms/transform-form.tsx b/diagram-editor/frontend/forms/transform-form.tsx index 9c96f8ed..e4b5eb36 100644 --- a/diagram-editor/frontend/forms/transform-form.tsx +++ b/diagram-editor/frontend/forms/transform-form.tsx @@ -1,33 +1,38 @@ -import { Card, CardContent, CardHeader, TextField } from '@mui/material'; -import type { NodeReplaceChange } from '@xyflow/react'; -import type { OperationNode } from '..'; +import { TextField } from '@mui/material'; +import EditOperationForm, { + type EditOperationFormProps, +} from './edit-operation-form'; -export interface TransformFormProps { - node: OperationNode<'transform'>; - onChange?: (change: NodeReplaceChange>) => void; -} - -function TransformForm({ node, onChange }: TransformFormProps) { +function TransformForm(props: EditOperationFormProps<'transform'>) { return ( - - - - { - node.data.cel = ev.target.value; - onChange?.({ - type: 'replace', - id: node.id, - item: { ...node }, - }); - }} - /> - - + + { + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: { ...props.node, id: ev.target.value }, + }); + }} + /> + { + props.node.data.cel = ev.target.value; + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: { ...props.node }, + }); + }} + /> + ); } diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 87dac4f8..9004778e 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,5 +1,5 @@ -import Ajv from 'ajv/dist/2020'; import addFormats from 'ajv-formats'; +import Ajv from 'ajv/dist/2020'; import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; import { START_ID, TERMINATE_ID } from '..'; From 107296c567993f79b7d7a207c488f8339dbff465 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 07:05:10 +0000 Subject: [PATCH 052/165] relax package private imports to allow sibliing modules Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 9 +++------ .../frontend/edges/buffer-key-edge.tsx | 2 +- .../frontend/edges/buffer-seq-edge.tsx | 2 +- .../frontend/edges/fork-result-err-edge.tsx | 2 +- .../frontend/edges/fork-result-ok-edge.tsx | 2 +- diagram-editor/frontend/edges/index.ts | 2 +- .../frontend/edges/split-key-edge.tsx | 2 +- .../frontend/edges/split-remaining-edge.tsx | 2 +- .../frontend/edges/split-seq-edge.tsx | 2 +- .../frontend/edges/stream-out-edge.tsx | 2 +- diagram-editor/frontend/edges/unzip-edge.tsx | 2 +- .../frontend/forms/buffer-edge-form.tsx | 2 +- .../frontend/forms/edit-edge-form.stories.tsx | 2 +- .../frontend/forms/edit-edge-form.tsx | 10 +++++++--- .../frontend/forms/edit-node-form.tsx | 2 +- .../frontend/forms/fork-result-edge-form.tsx | 2 +- .../frontend/forms/split-edge-form.tsx | 2 +- .../frontend/forms/unzip-edge-form.tsx | 2 +- diagram-editor/frontend/index.tsx | 4 ---- .../frontend/nodes/buffer-access-node.tsx | 2 +- diagram-editor/frontend/nodes/buffer-node.tsx | 2 +- .../frontend/nodes/fork-clone-node.tsx | 2 +- .../frontend/nodes/fork-result-node.tsx | 2 +- diagram-editor/frontend/nodes/icons.tsx | 4 ++-- diagram-editor/frontend/nodes/index.tsx | 20 +------------------ diagram-editor/frontend/nodes/join-node.tsx | 2 +- diagram-editor/frontend/nodes/listen-node.tsx | 2 +- diagram-editor/frontend/nodes/node-node.tsx | 2 +- diagram-editor/frontend/nodes/scope-node.tsx | 2 +- .../frontend/nodes/section-node.tsx | 2 +- .../frontend/nodes/serialized-join-node.tsx | 2 +- diagram-editor/frontend/nodes/split-node.tsx | 2 +- diagram-editor/frontend/nodes/start-node.tsx | 2 +- .../frontend/nodes/stream-out-node.tsx | 2 +- .../frontend/nodes/terminate-node.tsx | 2 +- .../frontend/nodes/transform-node.tsx | 2 +- diagram-editor/frontend/nodes/unzip-node.tsx | 2 +- diagram-editor/frontend/nodes/utils.ts | 2 +- diagram-editor/frontend/utils/auto-layout.ts | 2 +- .../frontend/utils/connection.test.ts | 4 ++-- diagram-editor/frontend/utils/connection.ts | 4 ++-- .../frontend/utils/export-diagram.ts | 4 ++-- .../frontend/utils/load-diagram.test.ts | 2 +- diagram-editor/frontend/utils/load-diagram.ts | 4 ++-- diagram-editor/frontend/utils/operation.ts | 17 +++++++++++++++- 45 files changed, 72 insertions(+), 78 deletions(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index e0a4becb..60b8a5f0 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -27,12 +27,9 @@ import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; import { EditEdgeForm, EditNodeForm, edgeHasEditForm } from './forms'; -import { NODE_TYPES, START_ID, isOperationNode } from './nodes'; -import type { - DiagramEditorEdge, - DiagramEditorNode, - OperationNode, -} from './types'; +import { NODE_TYPES, START_ID } from './nodes'; +import type { DiagramEditorEdge, DiagramEditorNode } from './types'; +import { isOperationNode } from './utils'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; diff --git a/diagram-editor/frontend/edges/buffer-key-edge.tsx b/diagram-editor/frontend/edges/buffer-key-edge.tsx index 86e8910c..dcefac38 100644 --- a/diagram-editor/frontend/edges/buffer-key-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-key-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { BufferKeyEdge } from '..'; +import type { BufferKeyEdge } from '../types'; export type BufferKeyEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/buffer-seq-edge.tsx b/diagram-editor/frontend/edges/buffer-seq-edge.tsx index e04943d0..9ac34857 100644 --- a/diagram-editor/frontend/edges/buffer-seq-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-seq-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { BufferSeqEdge } from '..'; +import type { BufferSeqEdge } from '../types'; export type BufferSeqEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/fork-result-err-edge.tsx b/diagram-editor/frontend/edges/fork-result-err-edge.tsx index e3f032f9..08d56e4d 100644 --- a/diagram-editor/frontend/edges/fork-result-err-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-err-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { ForkResultErrEdge } from '..'; +import type { ForkResultErrEdge } from '../types'; export type ForkResultErrEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx index 36e1cce1..6a576329 100644 --- a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { ForkResultOkEdge } from '..'; +import type { ForkResultOkEdge } from '../types'; export type ForkResultOkEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index f9d2ae66..53c6a271 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -1,5 +1,5 @@ import { StepEdge } from '@xyflow/react'; -import type { EdgeTypes } from '..'; +import type { EdgeTypes } from '../types'; import BufferKeyEdgeComp from './buffer-key-edge'; import BufferSeqEdgeComp from './buffer-seq-edge'; import ForkResultErrEdgeComp from './fork-result-err-edge'; diff --git a/diagram-editor/frontend/edges/split-key-edge.tsx b/diagram-editor/frontend/edges/split-key-edge.tsx index 41e3678f..c9a73fbd 100644 --- a/diagram-editor/frontend/edges/split-key-edge.tsx +++ b/diagram-editor/frontend/edges/split-key-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { SplitKeyEdge } from '..'; +import type { SplitKeyEdge } from '../types'; export type SplitKeyEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/split-remaining-edge.tsx b/diagram-editor/frontend/edges/split-remaining-edge.tsx index 6186b2f9..e43acfa1 100644 --- a/diagram-editor/frontend/edges/split-remaining-edge.tsx +++ b/diagram-editor/frontend/edges/split-remaining-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { SplitRemainingEdge } from '..'; +import type { SplitRemainingEdge } from '../types'; export type SplitRemainingEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/split-seq-edge.tsx b/diagram-editor/frontend/edges/split-seq-edge.tsx index 4881989b..dae1f48c 100644 --- a/diagram-editor/frontend/edges/split-seq-edge.tsx +++ b/diagram-editor/frontend/edges/split-seq-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { SplitSeqEdge } from '..'; +import type { SplitSeqEdge } from '../types'; export type SplitSeqEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index e209d7fd..c1f0bbf1 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { StreamOutEdge } from '..'; +import type { StreamOutEdge } from '../types'; export type StreamOutEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/unzip-edge.tsx b/diagram-editor/frontend/edges/unzip-edge.tsx index 415475c5..fa3d81bb 100644 --- a/diagram-editor/frontend/edges/unzip-edge.tsx +++ b/diagram-editor/frontend/edges/unzip-edge.tsx @@ -1,5 +1,5 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; -import type { UnzipEdge } from '..'; +import type { UnzipEdge } from '../types'; export type UnzipEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index 1fd58722..91fbaec7 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -11,7 +11,7 @@ import { TextField, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { BufferKeyEdge, BufferSeqEdge } from '..'; +import type { BufferKeyEdge, BufferSeqEdge } from '../types'; export type BufferEdge = BufferKeyEdge | BufferSeqEdge; diff --git a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx index 6559581b..ccf8b132 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx @@ -10,7 +10,7 @@ import type { SplitRemainingEdge, SplitSeqEdge, UnzipEdge, -} from '..'; +} from '../types'; import EditEdgeForm from './edit-edge-form'; const meta: Meta = { diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index 47a4ed38..c3b0cf69 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -1,8 +1,12 @@ import type { EdgeReplaceChange } from '@xyflow/react'; -import type { ForkResultErrEdge, ForkResultOkEdge, UnzipEdge } from '..'; -import type { DiagramEditorEdge } from '..'; -import { exhaustiveCheck } from '..'; +import type { + DiagramEditorEdge, + ForkResultErrEdge, + ForkResultOkEdge, + UnzipEdge, +} from '../types'; +import { exhaustiveCheck } from '../utils'; import BufferEdgeForm, { type BufferEdge } from './buffer-edge-form'; import ForkResultEdgeForm from './fork-result-edge-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; diff --git a/diagram-editor/frontend/forms/edit-node-form.tsx b/diagram-editor/frontend/forms/edit-node-form.tsx index 084c0b14..e052219b 100644 --- a/diagram-editor/frontend/forms/edit-node-form.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.tsx @@ -1,6 +1,6 @@ import type { NodeRemoveChange, NodeReplaceChange } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BufferForm from './buffer-form'; import EditOperationForm, { type EditOperationFormProps, diff --git a/diagram-editor/frontend/forms/fork-result-edge-form.tsx b/diagram-editor/frontend/forms/fork-result-edge-form.tsx index 66b26ea3..e74255e7 100644 --- a/diagram-editor/frontend/forms/fork-result-edge-form.tsx +++ b/diagram-editor/frontend/forms/fork-result-edge-form.tsx @@ -8,7 +8,7 @@ import { Select, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { ForkResultErrEdge, ForkResultOkEdge } from '..'; +import type { ForkResultErrEdge, ForkResultOkEdge } from '../types'; export type ForkResultEdge = ForkResultOkEdge | ForkResultErrEdge; diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index 1b94d288..f038786c 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -11,7 +11,7 @@ import { TextField, } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { SplitKeyEdge, SplitRemainingEdge, SplitSeqEdge } from '..'; +import type { SplitKeyEdge, SplitRemainingEdge, SplitSeqEdge } from '../types'; export type SplitEdge = SplitKeyEdge | SplitSeqEdge | SplitRemainingEdge; diff --git a/diagram-editor/frontend/forms/unzip-edge-form.tsx b/diagram-editor/frontend/forms/unzip-edge-form.tsx index 1c7b95b3..7ad843f2 100644 --- a/diagram-editor/frontend/forms/unzip-edge-form.tsx +++ b/diagram-editor/frontend/forms/unzip-edge-form.tsx @@ -1,6 +1,6 @@ import { Card, CardContent, CardHeader, TextField } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; -import type { UnzipEdge } from '..'; +import type { UnzipEdge } from '../types'; export interface UnzipEdgeFormProps { edge: UnzipEdge; diff --git a/diagram-editor/frontend/index.tsx b/diagram-editor/frontend/index.tsx index 90729255..eacf2b2f 100644 --- a/diagram-editor/frontend/index.tsx +++ b/diagram-editor/frontend/index.tsx @@ -11,7 +11,3 @@ if (rootEl) { , ); } - -export * from './nodes'; -export * from './types'; -export * from './utils'; diff --git a/diagram-editor/frontend/nodes/buffer-access-node.tsx b/diagram-editor/frontend/nodes/buffer-access-node.tsx index c87466e3..11fec824 100644 --- a/diagram-editor/frontend/nodes/buffer-access-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-access-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { BufferAccessIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/buffer-node.tsx b/diagram-editor/frontend/nodes/buffer-node.tsx index c1955654..242e0273 100644 --- a/diagram-editor/frontend/nodes/buffer-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { BufferIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/fork-clone-node.tsx b/diagram-editor/frontend/nodes/fork-clone-node.tsx index 8f144b90..58ffbfcd 100644 --- a/diagram-editor/frontend/nodes/fork-clone-node.tsx +++ b/diagram-editor/frontend/nodes/fork-clone-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { ForkCloneIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/fork-result-node.tsx b/diagram-editor/frontend/nodes/fork-result-node.tsx index b8d923c4..62a90425 100644 --- a/diagram-editor/frontend/nodes/fork-result-node.tsx +++ b/diagram-editor/frontend/nodes/fork-result-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { ForkResultIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/icons.tsx b/diagram-editor/frontend/nodes/icons.tsx index 313c5bc4..f98cdc3e 100644 --- a/diagram-editor/frontend/nodes/icons.tsx +++ b/diagram-editor/frontend/nodes/icons.tsx @@ -18,8 +18,8 @@ import SectionIcon from '@mui/icons-material/SelectAllOutlined'; import UnzipIcon from '@mui/icons-material/UnarchiveOutlined'; import type React from 'react'; -import type { DiagramOperation } from '..'; -import { exhaustiveCheck } from '..'; +import type { DiagramOperation } from '../types'; +import { exhaustiveCheck } from '../utils'; export function getIcon(op: DiagramOperation): React.ComponentType { switch (op.type) { diff --git a/diagram-editor/frontend/nodes/index.tsx b/diagram-editor/frontend/nodes/index.tsx index 9cb53792..169409a9 100644 --- a/diagram-editor/frontend/nodes/index.tsx +++ b/diagram-editor/frontend/nodes/index.tsx @@ -1,9 +1,4 @@ -import type { - DiagramEditorNode, - DiagramOperation, - NodeTypes, - OperationNode, -} from '../types'; +import type { NodeTypes } from '../types'; import BufferAccessNode from './buffer-access-node'; import BufferNode from './buffer-node'; import ForkCloneNode from './fork-clone-node'; @@ -42,16 +37,3 @@ export const NODE_TYPES = { scope: ScopeNode, stream_out: StreamOutNode, } satisfies Record; - -export function isOperationNode( - node: DiagramEditorNode, -): node is OperationNode { - return !node.id.startsWith('builtin:'); -} - -export function extractOperation(node: OperationNode): DiagramOperation { - const op: DiagramOperation = { ...node.data }; - const opIdKey = 'opId'; - delete op[opIdKey]; - return op; -} diff --git a/diagram-editor/frontend/nodes/join-node.tsx b/diagram-editor/frontend/nodes/join-node.tsx index 65005818..e5837f6f 100644 --- a/diagram-editor/frontend/nodes/join-node.tsx +++ b/diagram-editor/frontend/nodes/join-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { JoinIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/listen-node.tsx b/diagram-editor/frontend/nodes/listen-node.tsx index c5a31c27..c60cc534 100644 --- a/diagram-editor/frontend/nodes/listen-node.tsx +++ b/diagram-editor/frontend/nodes/listen-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { ListenIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/node-node.tsx b/diagram-editor/frontend/nodes/node-node.tsx index 2e8dc3b5..7578f57b 100644 --- a/diagram-editor/frontend/nodes/node-node.tsx +++ b/diagram-editor/frontend/nodes/node-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { OperationNode } from '..'; +import type { OperationNode } from '../types'; import BaseNode from './base-node'; import { NodeIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/scope-node.tsx b/diagram-editor/frontend/nodes/scope-node.tsx index ba05e0e0..a7ae35d6 100644 --- a/diagram-editor/frontend/nodes/scope-node.tsx +++ b/diagram-editor/frontend/nodes/scope-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { ScopeIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx index 7460e3b0..488ad7ee 100644 --- a/diagram-editor/frontend/nodes/section-node.tsx +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { OperationNode } from '..'; +import type { OperationNode } from '../types'; import BaseNode from './base-node'; import { SectionIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/serialized-join-node.tsx b/diagram-editor/frontend/nodes/serialized-join-node.tsx index fe15426d..699a5b10 100644 --- a/diagram-editor/frontend/nodes/serialized-join-node.tsx +++ b/diagram-editor/frontend/nodes/serialized-join-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { SerializedJoinIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/split-node.tsx b/diagram-editor/frontend/nodes/split-node.tsx index dd4a1ab0..2524df49 100644 --- a/diagram-editor/frontend/nodes/split-node.tsx +++ b/diagram-editor/frontend/nodes/split-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { SplitIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/start-node.tsx b/diagram-editor/frontend/nodes/start-node.tsx index 7f6ae400..cc15dec8 100644 --- a/diagram-editor/frontend/nodes/start-node.tsx +++ b/diagram-editor/frontend/nodes/start-node.tsx @@ -2,7 +2,7 @@ import { Button, Paper } from '@mui/material'; import type { NodeProps } from '@xyflow/react'; import { Handle, Position } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; function StartNode({ isConnectable, diff --git a/diagram-editor/frontend/nodes/stream-out-node.tsx b/diagram-editor/frontend/nodes/stream-out-node.tsx index 9cae0bdd..9b55160b 100644 --- a/diagram-editor/frontend/nodes/stream-out-node.tsx +++ b/diagram-editor/frontend/nodes/stream-out-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { StreamOutIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/terminate-node.tsx b/diagram-editor/frontend/nodes/terminate-node.tsx index ca359524..f71358c6 100644 --- a/diagram-editor/frontend/nodes/terminate-node.tsx +++ b/diagram-editor/frontend/nodes/terminate-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import { Button, Paper } from '@mui/material'; import { Handle, Position } from '@xyflow/react'; diff --git a/diagram-editor/frontend/nodes/transform-node.tsx b/diagram-editor/frontend/nodes/transform-node.tsx index 8ba46502..47540d9c 100644 --- a/diagram-editor/frontend/nodes/transform-node.tsx +++ b/diagram-editor/frontend/nodes/transform-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { TransformIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/unzip-node.tsx b/diagram-editor/frontend/nodes/unzip-node.tsx index 8f3c21c7..0d7ec415 100644 --- a/diagram-editor/frontend/nodes/unzip-node.tsx +++ b/diagram-editor/frontend/nodes/unzip-node.tsx @@ -1,5 +1,5 @@ import type { NodeProps } from '@xyflow/react'; -import type { DiagramEditorNode } from '..'; +import type { DiagramEditorNode } from '../types'; import BaseNode from './base-node'; import { UnzipIcon } from './icons'; diff --git a/diagram-editor/frontend/nodes/utils.ts b/diagram-editor/frontend/nodes/utils.ts index 6f18c14d..69d3fafb 100644 --- a/diagram-editor/frontend/nodes/utils.ts +++ b/diagram-editor/frontend/nodes/utils.ts @@ -1,4 +1,4 @@ -import type { DiagramEditorNode, OperationNode } from '..'; +import type { DiagramEditorNode, OperationNode } from '../types'; export function isOperationData( data: DiagramEditorNode['data'], diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index 5d05a573..2aaa49d0 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -1,6 +1,6 @@ import type { NodePositionChange } from '@xyflow/react'; -import type { DiagramEditorEdge, DiagramEditorNode } from '..'; +import type { DiagramEditorEdge, DiagramEditorNode } from '../types'; export interface AutoLayoutOptions { rootPosition: { x: number; y: number }; diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index c78de113..1f9001f0 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -1,5 +1,5 @@ -import type { Diagram, DiagramEditorEdge, DiagramOperation } from '..'; -import { TERMINATE_ID } from '..'; +import { TERMINATE_ID } from '../nodes'; +import type { Diagram, DiagramEditorEdge, DiagramOperation } from '../types'; import { syncEdge } from './connection'; describe('syncEdge', () => { diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index e6d40956..bbae9d83 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,10 +1,10 @@ +import { START_ID, TERMINATE_ID } from '../nodes'; import type { BufferSelection, Diagram, DiagramEditorEdge, DiagramOperation, -} from '..'; -import { START_ID, TERMINATE_ID } from '..'; +} from '../types'; import { exhaustiveCheck } from './exhaustive-check'; import { isArrayBufferSelection, diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index 5f07c0d0..e8be86db 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -1,5 +1,5 @@ -import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; -import { extractOperation, isOperationNode } from '..'; +import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; +import { extractOperation, isOperationNode } from '../utils'; import { syncEdge } from './connection'; export function exportDiagram( diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index 0d9b41d5..a78131da 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -1,5 +1,5 @@ import { applyNodeChanges } from '@xyflow/react'; -import { START_ID } from '..'; +import { START_ID } from '../nodes'; import { autoLayout } from './auto-layout'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 9004778e..75bc858c 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,9 +1,9 @@ import addFormats from 'ajv-formats'; import Ajv from 'ajv/dist/2020'; -import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '..'; -import { START_ID, TERMINATE_ID } from '..'; import diagramSchema from '../diagram.schema.json'; +import { START_ID, TERMINATE_ID } from '../nodes'; +import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; import { buildEdges, nextOperationToNodeId } from './operation'; export interface Graph { diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index c769a928..14c03edc 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -2,9 +2,11 @@ import type { BufferSelection, BuiltinTarget, DiagramEditorEdge, + DiagramEditorNode, DiagramOperation, NextOperation, -} from '..'; + OperationNode, +} from '../types'; import { exhaustiveCheck } from './exhaustive-check'; /** @@ -317,3 +319,16 @@ export function isBuiltin( ): next is { builtin: BuiltinTarget } { return typeof next === 'object' && 'builtin' in next; } + +export function isOperationNode( + node: DiagramEditorNode, +): node is OperationNode { + return !node.id.startsWith('builtin:'); +} + +export function extractOperation(node: OperationNode): DiagramOperation { + const op: DiagramOperation = { ...node.data }; + const opIdKey = 'opId'; + delete op[opIdKey]; + return op; +} From cb63e9b6386a9b0e78924e6c6162603cc2e7e397 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 07:13:13 +0000 Subject: [PATCH 053/165] add transform form story Signed-off-by: Teo Koon Peng --- .../frontend/forms/edit-node-form.stories.tsx | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/diagram-editor/frontend/forms/edit-node-form.stories.tsx b/diagram-editor/frontend/forms/edit-node-form.stories.tsx index 0c1d9a37..d641ef81 100644 --- a/diagram-editor/frontend/forms/edit-node-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.stories.tsx @@ -19,10 +19,9 @@ export const Node: Story = { type: 'node', position: { x: 0, y: 0 }, data: { - opId: 'opId', type: 'node', builder: 'builder', - next: '', + next: { builtin: 'dispose' }, }, }, }, @@ -46,7 +45,6 @@ export const Buffer: Story = { type: 'buffer', position: { x: 0, y: 0 }, data: { - opId: 'opId', type: 'buffer', serialize: false, }, @@ -64,3 +62,29 @@ export const Buffer: Story = { ); }, }; + +export const Transform: Story = { + args: { + node: { + id: 'transform-1', + type: 'transform', + position: { x: 0, y: 0 }, + data: { + type: 'transform', + cel: '', + next: { builtin: 'dispose' }, + }, + }, + }, + render: function Render(args) { + const [, updateArgs] = useArgs(); + return ( + { + updateArgs({ node: change.item }); + }} + /> + ); + }, +}; From 495d3df976255c2440d1f6bdba042a822111bc8a Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 08:33:00 +0000 Subject: [PATCH 054/165] implement edge forms Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 38 ++-- .../frontend/forms/buffer-edge-form.tsx | 100 +++------- .../frontend/forms/edit-edge-form.stories.tsx | 82 ++------ .../frontend/forms/edit-edge-form.tsx | 187 +++++++++++------- .../frontend/forms/edit-operation-form.tsx | 24 +-- .../frontend/forms/fork-result-edge-form.tsx | 52 ----- .../frontend/forms/split-edge-form.tsx | 107 +++------- .../frontend/forms/unzip-edge-form.tsx | 43 ++-- diagram-editor/frontend/types/react-flow.ts | 27 +-- diagram-editor/frontend/utils/connection.ts | 64 ++++++ 10 files changed, 315 insertions(+), 409 deletions(-) delete mode 100644 diagram-editor/frontend/forms/fork-result-edge-form.tsx diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 60b8a5f0..d56eb6af 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -26,10 +26,10 @@ import React, { type JSX, useEffect } from 'react'; import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; -import { EditEdgeForm, EditNodeForm, edgeHasEditForm } from './forms'; +import { EditEdgeForm, EditNodeForm } from './forms'; import { NODE_TYPES, START_ID } from './nodes'; import type { DiagramEditorEdge, DiagramEditorNode } from './types'; -import { isOperationNode } from './utils'; +import { allowEdges, isOperationNode } from './utils'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; @@ -189,21 +189,27 @@ const DiagramEditor = () => { onEdgeClick={(ev, edge) => { ev.stopPropagation(); closeAllPopovers(); - if (edgeHasEditForm(edge)) { - setRenderEditForm( - { - setEdges((prev) => applyEdgeChanges([change], prev)); - }} - />, - ); - setEditOpFormPopoverProps({ - open: true, - anchorReference: 'anchorPosition', - anchorPosition: { left: ev.clientX, top: ev.clientY }, - }); + + const sourceNode = nodes.find((n) => n.id === edge.source); + const targetNode = nodes.find((n) => n.id === edge.target); + if (!sourceNode || !targetNode) { + throw new Error('unable to find source or target node'); } + + setRenderEditForm( + { + setEdges((prev) => applyEdgeChanges([change], prev)); + }} + />, + ); + setEditOpFormPopoverProps({ + open: true, + anchorReference: 'anchorPosition', + anchorPosition: { left: ev.clientX, top: ev.clientY }, + }); }} onPaneClick={(ev) => { if (openAddOpPopover || editOpFormPopoverProps.open) { diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index 91fbaec7..a5ae15e0 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -1,15 +1,4 @@ -import { - Card, - CardContent, - CardHeader, - FormControl, - InputLabel, - MenuItem, - Select, - type SelectChangeEvent, - Stack, - TextField, -} from '@mui/material'; +import { TextField } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; import type { BufferKeyEdge, BufferSeqEdge } from '../types'; @@ -17,41 +6,16 @@ export type BufferEdge = BufferKeyEdge | BufferSeqEdge; export interface BufferEdgeFormProps { edge: BufferEdge; - onChange: (change: EdgeReplaceChange) => void; + onChange?: (change: EdgeReplaceChange) => void; } function BufferEdgeForm({ edge, onChange }: BufferEdgeFormProps) { - const handleTypeChange = (event: SelectChangeEvent) => { - const newType = event.target.value as BufferEdge['type']; - if (edge.type !== newType) { - let newEdge: BufferEdge; - if (newType === 'bufferKey') { - newEdge = { - ...edge, - type: newType, - data: { key: '' }, - }; - } else { - newEdge = { - ...edge, - type: newType, - data: { seq: 0 }, - }; - } - onChange({ - type: 'replace', - id: edge.id, - item: newEdge, - }); - } - }; - const handleDataChange = ( event: React.ChangeEvent, ) => { if (edge.type === 'bufferKey') { const newKey = event.target.value; - onChange({ + onChange?.({ type: 'replace', id: edge.id, item: { ...edge, data: { key: newKey } }, @@ -59,7 +23,7 @@ function BufferEdgeForm({ edge, onChange }: BufferEdgeFormProps) { } else if (edge.type === 'bufferSeq') { const newSeq = Number.parseInt(event.target.value, 10); if (!Number.isNaN(newSeq)) { - onChange({ + onChange?.({ type: 'replace', id: edge.id, item: { ...edge, data: { seq: newSeq } }, @@ -69,43 +33,25 @@ function BufferEdgeForm({ edge, onChange }: BufferEdgeFormProps) { }; return ( - - - - - - Type - - - - {edge.type === 'bufferKey' && ( - - )} - {edge.type === 'bufferSeq' && ( - - )} - - - + <> + {edge.type === 'bufferKey' && ( + + )} + {edge.type === 'bufferSeq' && ( + + )} + ); } diff --git a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx index ccf8b132..f7a9c3aa 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx @@ -1,16 +1,6 @@ import { useArgs } from '@storybook/preview-api'; import type { Meta, StoryObj } from 'storybook-react-rsbuild'; -import type { - BufferKeyEdge, - BufferSeqEdge, - ForkResultErrEdge, - ForkResultOkEdge, - SplitKeyEdge, - SplitRemainingEdge, - SplitSeqEdge, - UnzipEdge, -} from '../types'; import EditEdgeForm from './edit-edge-form'; const meta: Meta = { @@ -34,7 +24,7 @@ const render: Story['render'] = (args) => { ); }; -export const BufferKey: Story = { +export const BufferEdge: Story = { args: { edge: { id: 'edge-1', @@ -44,46 +34,22 @@ export const BufferKey: Story = { data: { key: 'testKey', }, - } as BufferKeyEdge, + }, + allowedEdgeTypes: ['bufferKey', 'bufferSeq'], }, render, }; -export const BufferSeq: Story = { - args: { - edge: { - id: 'edge-1', - source: 'a', - target: 'b', - type: 'bufferSeq', - data: { - seq: 1, - }, - } as BufferSeqEdge, - }, - render, -}; - -export const ForkResultOk: Story = { +export const ForkResult: Story = { args: { edge: { id: 'edge-1', source: 'a', target: 'b', type: 'forkResultOk', - } as ForkResultOkEdge, - }, - render, -}; - -export const ForkResultErr: Story = { - args: { - edge: { - id: 'edge-1', - source: 'a', - target: 'b', - type: 'forkResultErr', - } as ForkResultErrEdge, + data: {}, + }, + allowedEdgeTypes: ['forkResultOk', 'forkResultErr'], }, render, }; @@ -98,50 +64,38 @@ export const SplitKey: Story = { data: { key: 'splitTestKey', }, - } as SplitKeyEdge, + }, + allowedEdgeTypes: ['splitKey', 'splitSeq', 'splitRemaining'], }, render, }; -export const SplitSeq: Story = { +export const Unzip: Story = { args: { edge: { id: 'edge-1', source: 'a', target: 'b', - type: 'splitSeq', + type: 'unzip', data: { - seq: 2, + seq: 3, }, - } as SplitSeqEdge, + }, + allowedEdgeTypes: ['unzip'], }, render, }; -export const SplitRemaining: Story = { +export const Default: Story = { args: { edge: { id: 'edge-1', source: 'a', target: 'b', - type: 'splitRemaining', + type: 'default', data: {}, - } as SplitRemainingEdge, - }, - render, -}; - -export const Unzip: Story = { - args: { - edge: { - id: 'edge-1', - source: 'a', - target: 'b', - type: 'unzip', - data: { - seq: 3, - }, - } as UnzipEdge, + }, + allowedEdgeTypes: ['default'], }, render, }; diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index c3b0cf69..8e9ba356 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -1,87 +1,136 @@ -import type { EdgeReplaceChange } from '@xyflow/react'; +import DeleteIcon from '@mui/icons-material/Delete'; +import { + Card, + CardContent, + CardHeader, + FormControl, + IconButton, + InputLabel, + MenuItem, + Select, + Stack, +} from '@mui/material'; +import type { EdgeRemoveChange, EdgeReplaceChange } from '@xyflow/react'; +import React from 'react'; import type { DiagramEditorEdge, - ForkResultErrEdge, - ForkResultOkEdge, + EdgeData, + EdgeTypes, UnzipEdge, } from '../types'; -import { exhaustiveCheck } from '../utils'; import BufferEdgeForm, { type BufferEdge } from './buffer-edge-form'; -import ForkResultEdgeForm from './fork-result-edge-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; import UnzipEdgeForm from './unzip-edge-form'; +const EDGE_TYPES_NAME = { + bufferKey: 'Key', + bufferSeq: 'Sequence', + default: 'Data', + forkResultErr: 'Error', + forkResultOk: 'Ok', + splitKey: 'Key', + splitRemaining: 'Remaining', + splitSeq: 'Sequence', + streamOut: 'Stream Out', + unzip: 'Unzip', +} satisfies Record; + +const EDGE_DEFAULT_DATA = { + default: {}, + bufferKey: { key: '' }, + bufferSeq: { seq: 0 }, + forkResultOk: {}, + forkResultErr: {}, + splitKey: { key: '' }, + splitSeq: { seq: 0 }, + splitRemaining: {}, + streamOut: { name: '' }, + unzip: { seq: 0 }, +} satisfies { [k in EdgeTypes]: EdgeData[k] }; + export interface EditEdgeFormProps { edge: DiagramEditorEdge; + allowedEdgeTypes: EdgeTypes[]; onChange?: (change: EdgeReplaceChange) => void; + onDelete?: (change: EdgeRemoveChange) => void; } -function EditEdgeForm({ edge, onChange }: EditEdgeFormProps) { - switch (edge.type) { - case 'bufferKey': - case 'bufferSeq': { - return ( - onChange?.(change)} - /> - ); - } - case 'forkResultOk': - case 'forkResultErr': { - return ( - onChange?.(change)} - /> - ); - } - case 'splitKey': - case 'splitRemaining': - case 'splitSeq': { - return ( - onChange?.(change)} - /> - ); +function EditEdgeForm({ + edge, + allowedEdgeTypes, + onChange, + onDelete, +}: EditEdgeFormProps) { + const subForm = React.useMemo(() => { + switch (edge.type) { + case 'bufferKey': + case 'bufferSeq': { + return ; + } + case 'forkResultOk': + case 'forkResultErr': { + return null; + } + case 'splitKey': + case 'splitRemaining': + case 'splitSeq': { + return ; + } + case 'unzip': { + return ; + } + default: { + return null; + } } - case 'unzip': { - return ( - onChange?.(change)} - /> - ); - } - default: { - return null; - } - } -} + }, [edge, onChange]); -export default EditEdgeForm; + return ( + + onDelete?.({ type: 'remove', id: edge.id })} + > + + + } + /> + + + + Type + + -export function edgeHasEditForm(edge: DiagramEditorEdge): boolean { - switch (edge.type) { - case 'default': { - return false; - } - case 'bufferKey': - case 'bufferSeq': - case 'forkResultErr': - case 'forkResultOk': - case 'splitKey': - case 'splitRemaining': - case 'splitSeq': - case 'unzip': - case 'streamOut': { - return true; - } - default: { - exhaustiveCheck(edge); - throw new Error('unknown edge'); - } - } + {subForm} + + + + ); } + +export default EditEdgeForm; diff --git a/diagram-editor/frontend/forms/edit-operation-form.tsx b/diagram-editor/frontend/forms/edit-operation-form.tsx index 9f3491f6..5246b4ad 100644 --- a/diagram-editor/frontend/forms/edit-operation-form.tsx +++ b/diagram-editor/frontend/forms/edit-operation-form.tsx @@ -1,10 +1,9 @@ import DeleteIcon from '@mui/icons-material/Delete'; import { - Button, Card, CardContent, CardHeader, - DialogActions, + IconButton, Stack, TextField, } from '@mui/material'; @@ -28,7 +27,17 @@ function EditOperationForm({ }: React.PropsWithChildren) { return ( - + onDelete?.({ type: 'remove', id: node.id })} + > + + + } + /> - - - ); } diff --git a/diagram-editor/frontend/forms/fork-result-edge-form.tsx b/diagram-editor/frontend/forms/fork-result-edge-form.tsx deleted file mode 100644 index e74255e7..00000000 --- a/diagram-editor/frontend/forms/fork-result-edge-form.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { - Card, - CardContent, - CardHeader, - FormControl, - InputLabel, - MenuItem, - Select, -} from '@mui/material'; -import type { EdgeReplaceChange } from '@xyflow/react'; -import type { ForkResultErrEdge, ForkResultOkEdge } from '../types'; - -export type ForkResultEdge = ForkResultOkEdge | ForkResultErrEdge; - -export interface ForkResultEdgeFormProps { - edge: ForkResultEdge; - onChange: (change: EdgeReplaceChange) => void; -} - -function ForkResultEdgeForm({ edge, onChange }: ForkResultEdgeFormProps) { - return ( - - - - - Type - - - - - ); -} - -export default ForkResultEdgeForm; diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index f038786c..6f38e5ba 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -1,15 +1,4 @@ -import { - Card, - CardContent, - CardHeader, - FormControl, - InputLabel, - MenuItem, - Select, - type SelectChangeEvent, - Stack, - TextField, -} from '@mui/material'; +import { TextField } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; import type { SplitKeyEdge, SplitRemainingEdge, SplitSeqEdge } from '../types'; @@ -17,47 +6,16 @@ export type SplitEdge = SplitKeyEdge | SplitSeqEdge | SplitRemainingEdge; export interface SplitEdgeFormProps { edge: SplitEdge; - onChange: (change: EdgeReplaceChange) => void; + onChange?: (change: EdgeReplaceChange) => void; } function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { - const handleTypeChange = (event: SelectChangeEvent) => { - const newType = event.target.value as SplitEdge['type']; - if (edge.type !== newType) { - let newEdge: SplitEdge; - if (newType === 'splitKey') { - newEdge = { - ...edge, - type: newType, - data: { key: '' }, - }; - } else if (newType === 'splitSeq') { - newEdge = { - ...edge, - type: newType, - data: { seq: 0 }, - }; - } else { - newEdge = { - ...edge, - type: newType, - data: {}, - }; - } - onChange({ - type: 'replace', - id: edge.id, - item: newEdge, - }); - } - }; - const handleDataChange = ( event: React.ChangeEvent, ) => { if (edge.type === 'splitKey') { const newKey = event.target.value; - onChange({ + onChange?.({ type: 'replace', id: edge.id, item: { ...edge, data: { key: newKey } }, @@ -65,7 +23,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { } else if (edge.type === 'splitSeq') { const newSeq = Number.parseInt(event.target.value, 10); if (!Number.isNaN(newSeq)) { - onChange({ + onChange?.({ type: 'replace', id: edge.id, item: { ...edge, data: { seq: newSeq } }, @@ -75,44 +33,25 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { }; return ( - - - - - - Type - - - - {edge.type === 'splitKey' && ( - - )} - {edge.type === 'splitSeq' && ( - - )} - - - + <> + {edge.type === 'splitKey' && ( + + )} + {edge.type === 'splitSeq' && ( + + )} + ); } diff --git a/diagram-editor/frontend/forms/unzip-edge-form.tsx b/diagram-editor/frontend/forms/unzip-edge-form.tsx index 7ad843f2..ddbb8ff2 100644 --- a/diagram-editor/frontend/forms/unzip-edge-form.tsx +++ b/diagram-editor/frontend/forms/unzip-edge-form.tsx @@ -1,35 +1,32 @@ -import { Card, CardContent, CardHeader, TextField } from '@mui/material'; +import { TextField } from '@mui/material'; import type { EdgeReplaceChange } from '@xyflow/react'; import type { UnzipEdge } from '../types'; export interface UnzipEdgeFormProps { edge: UnzipEdge; - onChange: (change: EdgeReplaceChange) => void; + onChange?: (change: EdgeReplaceChange) => void; } function UnzipEdgeForm({ edge, onChange }: UnzipEdgeFormProps) { return ( - - - - { - const value = Number.parseInt(ev.target.value, 10); - if (!Number.isNaN(value) && edge.data) { - edge.data.seq = value; - onChange?.({ - type: 'replace', - id: edge.id, - item: edge, - }); - } - }} - /> - - + <> + { + const value = Number.parseInt(ev.target.value, 10); + if (!Number.isNaN(value) && edge.data) { + edge.data.seq = value; + onChange?.({ + type: 'replace', + id: edge.id, + item: edge, + }); + } + }} + /> + ); } diff --git a/diagram-editor/frontend/types/react-flow.ts b/diagram-editor/frontend/types/react-flow.ts index 08c60d84..8a787d74 100644 --- a/diagram-editor/frontend/types/react-flow.ts +++ b/diagram-editor/frontend/types/react-flow.ts @@ -21,18 +21,6 @@ export type DiagramEditorNode = BuiltinNode | OperationNode; import type { Edge as ReactFlowEdge } from '@xyflow/react'; -export type EdgeTypes = - | 'default' - | 'unzip' - | 'forkResultOk' - | 'forkResultErr' - | 'splitKey' - | 'splitSeq' - | 'splitRemaining' - | 'bufferKey' - | 'bufferSeq' - | 'streamOut'; - export type Edge< D extends Record, T extends EdgeTypes, @@ -80,6 +68,21 @@ export type UnzipEdgeData = { }; export type UnzipEdge = Edge; +export type EdgeData = { + default: DefaultEdgeData; + unzip: UnzipEdgeData; + forkResultOk: ForkResultOkEdgeData; + forkResultErr: ForkResultErrEdgeData; + splitKey: SplitKeyEdgeData; + splitSeq: SplitSeqEdgeData; + splitRemaining: SplitRemainingEdgeData; + bufferKey: BufferKeyEdgeData; + bufferSeq: BufferSeqEdgeData; + streamOut: StreamOutEdgeData; +}; + +export type EdgeTypes = keyof EdgeData; + export type DiagramEditorEdge = | DefaultEdge | UnzipEdge diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index bbae9d83..40b23312 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -3,7 +3,10 @@ import type { BufferSelection, Diagram, DiagramEditorEdge, + DiagramEditorNode, DiagramOperation, + EdgeTypes, + NodeTypes, } from '../types'; import { exhaustiveCheck } from './exhaustive-check'; import { @@ -229,3 +232,64 @@ function setBufferSelection( } } } + +const ALLOWED_OUTPUT_EDGES: Record> = { + buffer: new Set(['bufferKey', 'bufferSeq']), + buffer_access: new Set(['default']), + fork_clone: new Set(['default']), + fork_result: new Set(['forkResultOk', 'forkResultErr']), + join: new Set(['default']), + listen: new Set(['default']), + node: new Set(['default', 'streamOut']), + scope: new Set(['default', 'streamOut']), + section: new Set(['default']), + serialized_join: new Set(['default']), + split: new Set(['splitKey', 'splitSeq', 'splitRemaining']), + start: new Set(['default']), + stream_out: new Set([]), + terminate: new Set([]), + transform: new Set(['default']), + unzip: new Set(['unzip']), +}; + +const ALLOWED_INPUT_EDGES: Record> = { + buffer: new Set(['default']), + buffer_access: new Set(['default']), + fork_clone: new Set(['default']), + fork_result: new Set(['default']), + join: new Set(['bufferKey', 'bufferSeq']), + listen: new Set(['bufferKey', 'bufferSeq']), + node: new Set(['default']), + scope: new Set(['default']), + section: new Set(['default']), + serialized_join: new Set(['bufferKey', 'bufferSeq']), + split: new Set(['default']), + start: new Set([]), + stream_out: new Set(['streamOut']), + terminate: new Set(['default']), + transform: new Set(['default']), + unzip: new Set(['default']), +}; + +function setIntersection(a: Set, b: Set): Set { + const intersection = new Set(); + for (const elem of a) { + if (b.has(elem)) { + intersection.add(elem); + } + } + return intersection; +} + +export function allowEdges( + source: DiagramEditorNode, + target: DiagramEditorNode, +): EdgeTypes[] { + const allowed_output_edges = source.type + ? ALLOWED_OUTPUT_EDGES[source.type] + : new Set([]); + const allowed_input_edges = target.type + ? ALLOWED_INPUT_EDGES[target.type] + : new Set([]); + return Array.from(setIntersection(allowed_output_edges, allowed_input_edges)); +} From 5c46541b97ff16e902085fbcf58d5cd285942a23 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 08:40:07 +0000 Subject: [PATCH 055/165] handle exporting stream out edges for scope Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/utils/connection.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 40b23312..b172a9d2 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -7,6 +7,7 @@ import type { DiagramOperation, EdgeTypes, NodeTypes, + StreamOutEdge, } from '../types'; import { exhaustiveCheck } from './exhaustive-check'; import { @@ -16,6 +17,14 @@ import { nodeIdToNextOperation, } from './operation'; +function syncStreamOut( + sourceOp: Extract, + edge: StreamOutEdge, +) { + sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; + sourceOp.stream_out[edge.data.name] = nodeIdToNextOperation(edge.target); +} + /** * Adds a connection to a node data. * Nothing will be changed if the edge is invalid. But an error will be thrown if the source node is invalid. @@ -43,10 +52,7 @@ export function syncEdge(diagram: Diagram, edge: DiagramEditorEdge): void { switch (sourceOp.type) { case 'node': { if (edge.type === 'streamOut') { - sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; - sourceOp.stream_out[edge.data.name] = nodeIdToNextOperation( - edge.target, - ); + syncStreamOut(sourceOp, edge); } else if (edge.type === 'default') { sourceOp.next = nodeIdToNextOperation(edge.target); } @@ -140,8 +146,10 @@ export function syncEdge(diagram: Diagram, edge: DiagramEditorEdge): void { throw new Error('buffer operations cannot have connections'); } case 'scope': { - if (edge.type !== 'default') { - throw new Error('scope operation must have default edge'); + if (edge.type === 'streamOut') { + syncStreamOut(sourceOp, edge); + } else if (edge.type !== 'default') { + throw new Error('scope operation must have default or streamOut edge'); } sourceOp.next = nodeIdToNextOperation(edge.target); break; From 6219864d931ce0c6f2d97bfcfa9fa53d8bd5b042 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 08:42:00 +0000 Subject: [PATCH 056/165] handle deleting edges Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index d56eb6af..271d171e 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -203,6 +203,10 @@ const DiagramEditor = () => { onChange={(change) => { setEdges((prev) => applyEdgeChanges([change], prev)); }} + onDelete={(change) => { + setEdges((prev) => applyEdgeChanges([change], prev)); + closeAllPopovers(); + }} />, ); setEditOpFormPopoverProps({ From c5dfdfffd6e13cd2a3c4ea855f57a0fc3e7c2f68 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 19 Jun 2025 09:18:14 +0000 Subject: [PATCH 057/165] fix form not updating Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 152 ++++++++++++++---- .../frontend/forms/edit-edge-form.tsx | 6 +- .../frontend/forms/transform-form.tsx | 12 -- 3 files changed, 124 insertions(+), 46 deletions(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 271d171e..f72bc286 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -22,14 +22,18 @@ import { reconnectEdge, } from '@xyflow/react'; import { inflateSync, strFromU8 } from 'fflate'; -import React, { type JSX, useEffect } from 'react'; +import React, { useEffect } from 'react'; import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; -import { EditEdgeForm, EditNodeForm } from './forms'; +import { EditEdgeForm, EditNodeForm, defaultEdgeData } from './forms'; import { NODE_TYPES, START_ID } from './nodes'; -import type { DiagramEditorEdge, DiagramEditorNode } from './types'; -import { allowEdges, isOperationNode } from './utils'; +import type { + DiagramEditorEdge, + DiagramEditorNode, + OperationNode, +} from './types'; +import { allowEdges as getAllowEdges, isOperationNode } from './utils'; import { autoLayout } from './utils/auto-layout'; import { loadDiagramJson, loadEmpty } from './utils/load-diagram'; @@ -49,6 +53,12 @@ const NonCapturingPopoverContainer = ({ children, }: { children: React.ReactNode }) => <>{children}; +interface SelectedEdge { + sourceNode: DiagramEditorNode; + targetNode: DiagramEditorNode; + edge: DiagramEditorEdge; +} + const DiagramEditor = () => { const reactFlowInstance = React.useRef { 'open' | 'anchorReference' | 'anchorEl' | 'anchorPosition' > >({ open: false }); - const [renderEditForm, setRenderEditForm] = - React.useState(null); + + const [selectedNodeId, setSelectedNodeId] = React.useState( + null, + ); + const selectedNode = React.useMemo(() => { + if (!selectedNodeId) { + return null; + } + const node = nodes.find((n) => n.id === selectedNodeId); + if (!node) { + console.error(`cannot find node ${selectedNodeId}`); + return null; + } + if (!isOperationNode(node)) { + return null; + } + return node; + }, [selectedNodeId, nodes]); + + const [selectedEdgeId, setSelectedEdgeId] = React.useState( + null, + ); + const selectedEdge = React.useMemo(() => { + if (!selectedEdgeId) { + return null; + } + + const edge = edges.find((e) => e.id === selectedEdgeId); + if (!edge) { + console.error(`cannot find edge ${selectedEdgeId}`); + return null; + } + + const sourceNode = nodes.find((n) => n.id === edge.source); + if (!sourceNode) { + console.error(`cannot find node ${edge.source}`); + return null; + } + const targetNode = nodes.find((n) => n.id === edge.target); + if (!targetNode) { + console.error(`cannot find node ${edge.target}`); + return null; + } + + return { + edge, + sourceNode, + targetNode, + }; + }, [selectedEdgeId, nodes, edges]); const closeAllPopovers = React.useCallback(() => { + setSelectedNodeId(null); + setSelectedEdgeId(null); setOpenAddOpPopover(false); setEditOpFormPopoverProps({ open: false }); }, []); @@ -155,7 +215,27 @@ const DiagramEditor = () => { closeAllPopovers(); }} onConnect={(conn) => { - setEdges((prev) => addEdge(conn, prev)); + const sourceNode = nodes.find((n) => n.id === conn.source); + const targetNode = nodes.find((n) => n.id === conn.target); + if (!sourceNode || !targetNode) { + throw new Error('cannot find source or target node'); + } + + const allowedEdges = getAllowEdges(sourceNode, targetNode); + if (allowedEdges.length === 0) { + return; + } + + setEdges((prev) => + addEdge( + { + ...conn, + type: allowedEdges[0], + data: defaultEdgeData(allowedEdges[0]), + }, + prev, + ), + ); }} onReconnect={(oldEdge, newConnection) => setEdges((prev) => reconnectEdge(oldEdge, newConnection, prev)) @@ -167,19 +247,8 @@ const DiagramEditor = () => { if (!isOperationNode(node)) { return; } + setSelectedNodeId(node.id); - setRenderEditForm( - { - setNodes((prev) => applyNodeChanges([change], prev)); - }} - onDelete={(change) => { - setNodes((prev) => applyNodeChanges([change], prev)); - closeAllPopovers(); - }} - />, - ); setEditOpFormPopoverProps({ open: true, anchorReference: 'anchorEl', @@ -196,19 +265,8 @@ const DiagramEditor = () => { throw new Error('unable to find source or target node'); } - setRenderEditForm( - { - setEdges((prev) => applyEdgeChanges([change], prev)); - }} - onDelete={(change) => { - setEdges((prev) => applyEdgeChanges([change], prev)); - closeAllPopovers(); - }} - />, - ); + setSelectedEdgeId(edge.id); + setEditOpFormPopoverProps({ open: true, anchorReference: 'anchorPosition', @@ -328,7 +386,35 @@ const DiagramEditor = () => { // use a custom component to prevent the popover from creating an invisible element that blocks clicks component={NonCapturingPopoverContainer} > - {renderEditForm} + {selectedNode && ( + { + setNodes((prev) => applyNodeChanges([change], prev)); + }} + onDelete={(change) => { + setNodes((prev) => applyNodeChanges([change], prev)); + closeAllPopovers(); + }} + /> + )} + {selectedEdge && ( + { + console.log(change.item.type); + setEdges((prev) => applyEdgeChanges([change], prev)); + }} + onDelete={(change) => { + setEdges((prev) => applyEdgeChanges([change], prev)); + closeAllPopovers(); + }} + /> + )} { const newEdge = { ...edge }; newEdge.type = ev.target.value; - newEdge.data = EDGE_DEFAULT_DATA[newEdge.type]; + newEdge.data = defaultEdgeData(newEdge.type); onChange?.({ type: 'replace', id: edge.id, diff --git a/diagram-editor/frontend/forms/transform-form.tsx b/diagram-editor/frontend/forms/transform-form.tsx index e4b5eb36..35ace87a 100644 --- a/diagram-editor/frontend/forms/transform-form.tsx +++ b/diagram-editor/frontend/forms/transform-form.tsx @@ -6,18 +6,6 @@ import EditOperationForm, { function TransformForm(props: EditOperationFormProps<'transform'>) { return ( - { - props.onChange?.({ - type: 'replace', - id: props.node.id, - item: { ...props.node, id: ev.target.value }, - }); - }} - /> Date: Thu, 19 Jun 2025 09:20:24 +0000 Subject: [PATCH 058/165] cleanup Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index f72bc286..7b0b1e57 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -406,7 +406,6 @@ const DiagramEditor = () => { selectedEdge.targetNode, )} onChange={(change) => { - console.log(change.item.type); setEdges((prev) => applyEdgeChanges([change], prev)); }} onDelete={(change) => { From 5fc268946bbaf4d9d0f6c48b3629ef229f150e41 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 20 Jun 2025 06:02:58 +0000 Subject: [PATCH 059/165] more preprocessing for json-schema-to-typescript Signed-off-by: Teo Koon Peng --- .../frontend/diagram.preprocessed.schema.json | 853 ++++++++++++++++++ diagram-editor/frontend/diagram.schema.json | 752 --------------- .../frontend/forms/transform-form.stories.tsx | 1 - .../frontend/nodes/section-node.tsx | 5 +- .../types/{diagram.ts => diagram.d.ts} | 128 +-- diagram-editor/frontend/types/index.d.ts | 2 + diagram-editor/frontend/types/index.ts | 4 - .../types/{react-flow.ts => react-flow.d.ts} | 6 +- .../frontend/utils/export-diagram.ts | 4 +- diagram-editor/frontend/utils/load-diagram.ts | 4 +- diagram-editor/frontend/utils/operation.ts | 10 +- diagram-editor/scripts/generate-types.mjs | 95 +- 12 files changed, 996 insertions(+), 868 deletions(-) create mode 100644 diagram-editor/frontend/diagram.preprocessed.schema.json delete mode 100644 diagram-editor/frontend/diagram.schema.json rename diagram-editor/frontend/types/{diagram.ts => diagram.d.ts} (82%) create mode 100644 diagram-editor/frontend/types/index.d.ts delete mode 100644 diagram-editor/frontend/types/index.ts rename diagram-editor/frontend/types/{react-flow.ts => react-flow.d.ts} (94%) diff --git a/diagram-editor/frontend/diagram.preprocessed.schema.json b/diagram-editor/frontend/diagram.preprocessed.schema.json new file mode 100644 index 00000000..2cd08214 --- /dev/null +++ b/diagram-editor/frontend/diagram.preprocessed.schema.json @@ -0,0 +1,853 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Diagram", + "type": "object", + "properties": { + "on_implicit_error": { + "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled.", + "anyOf": [ + { + "$ref": "#/$defs/NextOperation" + }, + { + "type": "null" + } + ], + "default": null + }, + "ops": { + "description": "Operations that define the workflow", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/DiagramOperation" + } + }, + "start": { + "description": "Indicates where the workflow should start running.", + "$ref": "#/$defs/NextOperation" + }, + "templates": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SectionTemplate" + }, + "default": {} + }, + "version": { + "description": "Version of the diagram, should always be `0.1.0`.", + "type": "string" + } + }, + "required": [ + "version", + "start", + "ops" + ], + "$defs": { + "BufferAccessSchema": { + "type": "object", + "properties": { + "buffers": { + "$ref": "#/$defs/BufferSelection" + }, + "next": { + "$ref": "#/$defs/NextOperation" + } + }, + "required": [ + "next", + "buffers" + ] + }, + "BufferSchema": { + "type": "object", + "properties": { + "serialize": { + "description": "If true, messages will be serialized before sending into the buffer.", + "type": [ + "boolean", + "null" + ] + }, + "settings": { + "allOf": [ + { + "default": { + "retention": { + "keep_last": 1 + } + } + }, + { + "$ref": "#/$defs/BufferSettings" + } + ] + } + } + }, + "BufferSelection": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + } + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/NextOperation" + } + } + ] + }, + "BufferSettings": { + "description": "Settings to describe the behavior of a buffer.", + "type": "object", + "properties": { + "retention": { + "$ref": "#/$defs/RetentionPolicy" + } + }, + "required": [ + "retention" + ] + }, + "BuiltinTarget": { + "oneOf": [ + { + "description": "Use the output to terminate the current scope. The value passed into\n this operation will be the return value of the scope.", + "type": "string", + "const": "terminate" + }, + { + "description": "Dispose of the output.", + "type": "string", + "const": "dispose" + }, + { + "description": "When triggered, cancel the current scope. If this is an inner scope of a\n workflow then the parent scope will see a disposal happen. If this is\n the root scope of a workflow then the whole workflow will cancel.", + "type": "string", + "const": "cancel" + } + ] + }, + "DiagramOperation": { + "oneOf": [ + { + "allOf": [ + { + "description": "Create an operation that that takes an input message and produces an\n output message.\n\n The behavior is determined by the choice of node `builder` and\n optioanlly the `config` that you provide. Each type of node builder has\n its own schema for the config.\n\n The output message will be sent to the operation specified by `next`.\n\n TODO(@mxgrey): [Support stream outputs](https://github.com/open-rmf/bevy_impulse/issues/43)\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"cutting_board\",\n \"ops\": {\n \"cutting_board\": {\n \"type\": \"node\",\n \"builder\": \"chop\",\n \"config\": \"diced\",\n \"next\": \"bowl\"\n },\n \"bowl\": {\n \"type\": \"node\",\n \"builder\": \"stir\",\n \"next\": \"oven\"\n },\n \"oven\": {\n \"type\": \"node\",\n \"builder\": \"bake\",\n \"config\": {\n \"temperature\": 200,\n \"duration\": 120\n },\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "node" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/NodeSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Connect the request to a registered section.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"builder\": \"my_section_builder\",\n \"connect\": {\n \"my_section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Custom sections can also be created via templates\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"templates\": {\n \"my_template\": {\n \"inputs\": [\"section_input\"],\n \"outputs\": [\"section_output\"],\n \"buffers\": [],\n \"ops\": {\n \"section_input\": {\n \"type\": \"node\",\n \"builder\": \"my_node\",\n \"next\": \"section_output\"\n }\n }\n }\n },\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"template\": \"my_template\",\n \"connect\": {\n \"section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "section" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/SectionSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Create a scope which will function like its own encapsulated workflow\n within the paren workflow. Each message that enters a scope will trigger\n a new independent session for that scope to begin running with the incoming\n message itself being the input message of the scope. When multiple sessions\n for the same scope are running, they cannot see or interfere with each other.\n\n Once a session terminates, the scope will send the terminating message as\n its output. Scopes can use the `stream_out` operation to stream messages out\n to the parent workflow while running.\n\n Scopes have two common uses:\n * isolate - Prevent simultaneous runs of the same workflow components\n (especially buffers) from interfering with each other.\n * race - Run multiple branches simultaneously inside the scope and race\n them against each ohter. The first branch that reaches the scope's\n terminate operation \"wins\" the race, and only its output will continue\n on in the parent workflow. All other branches will be disposed.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"approach_door\",\n \"ops\": {\n \"approach_door\": {\n \"type\": \"scope\",\n \"start\": \"begin\",\n \"ops\": {\n \"begin\": {\n \"type\": \"fork_clone\",\n \"next\": [\n \"move_to_door\",\n \"detect_door_proximity\"\n ]\n },\n \"move_to_door\": {\n \"type\": \"node\",\n \"builder\": \"move\",\n \"config\": {\n \"place\": \"L1_north_lobby_outside\"\n },\n \"next\": { \"builtin\" : \"terminate\" }\n },\n \"detect_proximity\": {\n \"type\": \"node\",\n \"builder\": \"detect_proximity\",\n \"config\": {\n \"type\": \"door\",\n \"name\": \"L1_north_lobby\"\n },\n \"next\": { \"builtin\" : \"terminate\" }\n }\n },\n \"next\": { \"builtin\" : \"try_open_door\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "scope" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/ScopeSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Declare a stream output for the current scope. Outputs that you connect\n to this operation will be streamed out of the scope that this operation\n is declared in.\n\n For the root-level scope, make sure you use a stream pack that is\n compatible with all stream out operations that you declare, otherwise\n you may get a connection error at runtime.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"plan\",\n \"ops\": {\n \"progress_stream\": {\n \"type\": \"stream_out\",\n \"name\": \"progress\"\n },\n \"plan\": {\n \"type\": \"node\",\n \"builder\": \"planner\",\n \"next\": \"drive\",\n \"stream_out\" : {\n \"progress\": \"progress_stream\"\n }\n },\n \"drive\": {\n \"type\": \"node\",\n \"builder\": \"navigation\",\n \"next\": { \"builtin\": \"terminate\" },\n \"stream_out\": {\n \"progress\": \"progress_stream\"\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "stream_out" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/StreamOutSchema" + } + ] + }, + { + "allOf": [ + { + "description": "If the request is cloneable, clone it into multiple responses that can\n each be sent to a different operation. The `next` property is an array.\n\n This creates multiple simultaneous branches of execution within the\n workflow. Usually when you have multiple branches you will either\n * race - connect all branches to `terminate` and the first branch to\n finish \"wins\" the race and gets to the be output\n * join - connect each branch into a buffer and then use the `join`\n operation to reunite them\n * collect - TODO(@mxgrey): [add the collect operation](https://github.com/open-rmf/bevy_impulse/issues/59)\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"begin_race\",\n \"ops\": {\n \"begin_race\": {\n \"type\": \"fork_clone\",\n \"next\": [\n \"ferrari\",\n \"mustang\"\n ]\n },\n \"ferrari\": {\n \"type\": \"node\",\n \"builder\": \"drive\",\n \"config\": \"ferrari\",\n \"next\": { \"builtin\": \"terminate\" }\n },\n \"mustang\": {\n \"type\": \"node\",\n \"builder\": \"drive\",\n \"config\": \"mustang\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "fork_clone" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/ForkCloneSchema" + } + ] + }, + { + "allOf": [ + { + "description": "If the input message is a tuple of (T1, T2, T3, ...), unzip it into\n multiple output messages of T1, T2, T3, ...\n\n Each output message may have a different type and can be sent to a\n different operation. This creates multiple simultaneous branches of\n execution within the workflow. See [`DiagramOperation::ForkClone`] for\n more information on parallel branches.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"name_phone_address\",\n \"ops\": {\n \"name_phone_address\": {\n \"type\": \"unzip\",\n \"next\": [\n \"process_name\",\n \"process_phone_number\",\n \"process_address\"\n ]\n },\n \"process_name\": {\n \"type\": \"node\",\n \"builder\": \"process_name\",\n \"next\": \"name_processed\"\n },\n \"process_phone_number\": {\n \"type\": \"node\",\n \"builder\": \"process_phone_number\",\n \"next\": \"phone_number_processed\"\n },\n \"process_address\": {\n \"type\": \"node\",\n \"builder\": \"process_address\",\n \"next\": \"address_processed\"\n },\n \"name_processed\": { \"type\": \"buffer\" },\n \"phone_number_processed\": { \"type\": \"buffer\" },\n \"address_processed\": { \"type\": \"buffer\" },\n \"finished\": {\n \"type\": \"join\",\n \"buffers\": [\n \"name_processed\",\n \"phone_number_processed\",\n \"address_processed\"\n ],\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "unzip" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/UnzipSchema" + } + ] + }, + { + "allOf": [ + { + "description": "If the request is a [`Result`], send the output message down an\n `ok` branch or down an `err` branch depending on whether the result has\n an [`Ok`] or [`Err`] value. The `ok` branch will receive a `T` while the\n `err` branch will receive an `E`.\n\n Only one branch will be activated by each input message that enters the\n operation.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_result\",\n \"ops\": {\n \"fork_result\": {\n \"type\": \"fork_result\",\n \"ok\": { \"builtin\": \"terminate\" },\n \"err\": { \"builtin\": \"dispose\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "fork_result" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/ForkResultSchema" + } + ] + }, + { + "allOf": [ + { + "description": "If the input message is a list-like or map-like object, split it into\n multiple output messages.\n\n Note that the type of output message from the split depends on how the\n input message implements the [`Splittable`][1] trait. In many cases this\n will be a tuple of `(key, value)`.\n\n There are three ways to specify where the split output messages should\n go, and all can be used at the same time:\n * `sequential` - For array-like collections, send the \"first\" element of\n the collection to the first operation listed in the `sequential` array.\n The \"second\" element of the collection goes to the second operation\n listed in the `sequential` array. And so on for all elements in the\n collection. If one of the elements in the collection is mentioned in\n the `keyed` set, then the sequence will pass over it as if the element\n does not exist at all.\n * `keyed` - For map-like collections, send the split element associated\n with the specified key to its associated output.\n * `remaining` - Any elements that are were not captured by `sequential`\n or by `keyed` will be sent to this.\n\n [1]: crate::Splittable\n\n # Examples\n\n Suppose I am an animal rescuer sorting through a new collection of\n animals that need recuing. My home has space for three exotic animals\n plus any number of dogs and cats.\n\n I have a custom `SpeciesCollection` data structure that implements\n [`Splittable`][1] by allowing you to key on the type of animal.\n\n In the workflow below, we send all cats and dogs to `home`, and we also\n send the first three non-dog and non-cat species to `home`. All\n remaining animals go to the zoo.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"select_animals\",\n \"ops\": {\n \"select_animals\": {\n \"type\": \"split\",\n \"sequential\": [\n \"home\",\n \"home\",\n \"home\"\n ],\n \"keyed\": {\n \"cat\": \"home\",\n \"dog\": \"home\"\n },\n \"remaining\": \"zoo\"\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n If we input `[\"frog\", \"cat\", \"bear\", \"beaver\", \"dog\", \"rabbit\", \"dog\", \"monkey\"]`\n then `frog`, `bear`, and `beaver` will be sent to `home` since those are\n the first three animals that are not `dog` or `cat`, and we will also\n send one `cat` and two `dog` home. `rabbit` and `monkey` will be sent to the zoo.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "split" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/SplitSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Wait for exactly one item to be available in each buffer listed in\n `buffers`, then join each of those items into a single output message\n that gets sent to `next`.\n\n If the `next` operation is not a `node` type (e.g. `fork_clone`) then\n you must specify a `target_node` so that the diagram knows what data\n structure to join the values into.\n\n The output message type must be registered as joinable at compile time.\n If you want to join into a dynamic data structure then you should use\n [`DiagramOperation::SerializedJoin`] instead.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"begin_measuring\",\n \"ops\": {\n \"begin_measuring\": {\n \"type\": \"fork_clone\",\n \"next\": [\"localize\", \"imu\"]\n },\n \"localize\": {\n \"type\": \"node\",\n \"builder\": \"localize\",\n \"next\": \"estimated_position\"\n },\n \"imu\": {\n \"type\": \"node\",\n \"builder\": \"imu\",\n \"config\": \"velocity\",\n \"next\": \"estimated_velocity\"\n },\n \"estimated_position\": { \"type\": \"buffer\" },\n \"estimated_velocity\": { \"type\": \"buffer\" },\n \"gather_state\": {\n \"type\": \"join\",\n \"buffers\": {\n \"position\": \"estimate_position\",\n \"velocity\": \"estimate_velocity\"\n },\n \"next\": \"report_state\"\n },\n \"report_state\": {\n \"type\": \"node\",\n \"builder\": \"publish_state\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "join" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/JoinSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Same as [`DiagramOperation::Join`] but all input messages must be\n serializable, and the output message will always be [`serde_json::Value`].\n\n If you use an array for `buffers` then the output message will be a\n [`serde_json::Value::Array`]. If you use a map for `buffers` then the\n output message will be a [`serde_json::Value::Object`].\n\n Unlike [`DiagramOperation::Join`], the `target_node` property does not\n exist for this schema.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "serialized_join" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/SerializedJoinSchema" + } + ] + }, + { + "allOf": [ + { + "description": "If the request is serializable, transform it by running it through a [CEL](https://cel.dev/) program.\n The context includes a \"request\" variable which contains the input message.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"transform\",\n \"ops\": {\n \"transform\": {\n \"type\": \"transform\",\n \"cel\": \"request.name\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Note that due to how `serde_json` performs serialization, positive integers are always\n serialized as unsigned. In CEL, You can't do an operation between unsigned and signed so\n it is recommended to always perform explicit casts.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"transform\",\n \"ops\": {\n \"transform\": {\n \"type\": \"transform\",\n \"cel\": \"int(request.score) * 3\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "transform" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/TransformSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Create a [`Buffer`][1] which can be used to store and pull data within\n a scope.\n\n By default the [`BufferSettings`][2] will keep the single last message\n pushed to the buffer. You can change that with the optional `settings`\n property.\n\n Use the `\"serialize\": true` option to serialize the messages into\n [`JsonMessage`] before they are inserted into the buffer. This\n allows any serializable message type to be pushed into the buffer. If\n left unspecified, the buffer will store the specific data type that gets\n pushed into it. If the buffer inputs are not being serialized, then all\n incoming messages being pushed into the buffer must have the same type.\n\n [1]: crate::Buffer\n [2]: crate::BufferSettings\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_clone\",\n \"ops\": {\n \"fork_clone\": {\n \"type\": \"fork_clone\",\n \"next\": [\"num_output\", \"string_output\", \"all_num_buffer\", \"serialized_num_buffer\"]\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer_access\"\n },\n \"string_output\": {\n \"type\": \"node\",\n \"builder\": \"string_output\",\n \"next\": \"string_buffer\"\n },\n \"string_buffer\": {\n \"type\": \"buffer\",\n \"settings\": {\n \"retention\": { \"keep_last\": 10 }\n }\n },\n \"all_num_buffer\": {\n \"type\": \"buffer\",\n \"settings\": {\n \"retention\": \"keep_all\"\n }\n },\n \"serialized_num_buffer\": {\n \"type\": \"buffer\",\n \"serialize\": true\n },\n \"buffer_access\": {\n \"type\": \"buffer_access\",\n \"buffers\": [\"string_buffer\"],\n \"target_node\": \"with_buffer_access\",\n \"next\": \"with_buffer_access\"\n },\n \"with_buffer_access\": {\n \"type\": \"node\",\n \"builder\": \"with_buffer_access\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "buffer" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/BufferSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Zip a message together with access to one or more buffers.\n\n The receiving node must have an input type of `(Message, Keys)`\n where `Keys` implements the [`Accessor`][1] trait.\n\n [1]: crate::Accessor\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_clone\",\n \"ops\": {\n \"fork_clone\": {\n \"type\": \"fork_clone\",\n \"next\": [\"num_output\", \"string_output\"]\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer_access\"\n },\n \"string_output\": {\n \"type\": \"node\",\n \"builder\": \"string_output\",\n \"next\": \"string_buffer\"\n },\n \"string_buffer\": {\n \"type\": \"buffer\"\n },\n \"buffer_access\": {\n \"type\": \"buffer_access\",\n \"buffers\": [\"string_buffer\"],\n \"target_node\": \"with_buffer_access\",\n \"next\": \"with_buffer_access\"\n },\n \"with_buffer_access\": {\n \"type\": \"node\",\n \"builder\": \"with_buffer_access\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "buffer_access" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/BufferAccessSchema" + } + ] + }, + { + "allOf": [ + { + "description": "Listen on a buffer.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"num_output\",\n \"ops\": {\n \"buffer\": {\n \"type\": \"buffer\"\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer\"\n },\n \"listen\": {\n \"type\": \"listen\",\n \"buffers\": [\"buffer\"],\n \"target_node\": \"listen_buffer\",\n \"next\": \"listen_buffer\"\n },\n \"listen_buffer\": {\n \"type\": \"node\",\n \"builder\": \"listen_buffer\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "listen" + } + }, + "required": [ + "type" + ] + }, + { + "$ref": "#/$defs/ListenSchema" + } + ] + } + ] + }, + "ForkCloneSchema": { + "type": "object", + "properties": { + "next": { + "type": "array", + "items": { + "$ref": "#/$defs/NextOperation" + } + } + }, + "required": [ + "next" + ] + }, + "ForkResultSchema": { + "type": "object", + "properties": { + "err": { + "$ref": "#/$defs/NextOperation" + }, + "ok": { + "$ref": "#/$defs/NextOperation" + } + }, + "required": [ + "ok", + "err" + ] + }, + "InputRemapping": { + "description": "This defines how sections remap their inner operations (inputs and buffers)\n to expose them to operations that are siblings to the section.", + "anyOf": [ + { + "description": "Do a simple 1:1 forwarding of the names listed in the array", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "Rename an operation inside the section to expose it externally. The key\n of the map is what siblings of the section can connect to, and the value\n of the entry is the identifier of the input inside the section that is\n being exposed.\n\n This allows a section to expose inputs and buffers that are provided\n by inner sections.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + } + } + ] + }, + "JoinSchema": { + "type": "object", + "properties": { + "buffers": { + "$ref": "#/$defs/BufferSelection" + }, + "next": { + "$ref": "#/$defs/NextOperation" + } + }, + "required": [ + "next", + "buffers" + ] + }, + "ListenSchema": { + "type": "object", + "properties": { + "buffers": { + "$ref": "#/$defs/BufferSelection" + }, + "next": { + "$ref": "#/$defs/NextOperation" + }, + "target_node": { + "description": "The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation.", + "anyOf": [ + { + "$ref": "#/$defs/NextOperation" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "next", + "buffers" + ] + }, + "NamespacedOperation": { + "title": "NamespacedOperation", + "description": "Refer to an operation inside of a namespace, e.g. { \"\": \"\"", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1 + }, + "NextOperation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "builtin": { + "$ref": "#/$defs/BuiltinTarget" + } + }, + "required": [ + "builtin" + ] + }, + { + "$ref": "#/$defs/NamespacedOperation" + } + ] + }, + "NodeSchema": { + "type": "object", + "properties": { + "builder": { + "type": "string" + }, + "config": true, + "next": { + "$ref": "#/$defs/NextOperation" + }, + "stream_out": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + } + } + }, + "required": [ + "builder", + "next" + ] + }, + "RetentionPolicy": { + "description": "Describe how data within a buffer gets retained. Most mechanisms that pull\n data from a buffer will remove the oldest item in the buffer, so this policy\n is for dealing with situations where items are being stored faster than they\n are being pulled.\n\n The default value is KeepLast(1).", + "oneOf": [ + { + "description": "Keep the last N items that were stored into the buffer. Once the limit\n is reached, the oldest item will be removed any time a new item arrives.", + "type": "object", + "properties": { + "keep_last": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + }, + "additionalProperties": false, + "required": [ + "keep_last" + ] + }, + { + "description": "Keep the first N items that are stored into the buffer. Once the limit\n is reached, any new item that arrives will be discarded.", + "type": "object", + "properties": { + "keep_first": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + }, + "additionalProperties": false, + "required": [ + "keep_first" + ] + }, + { + "description": "Do not limit how many items can be stored in the buffer.", + "type": "string", + "const": "keep_all" + } + ] + }, + "ScopeSchema": { + "description": "The schema to define a scope within a diagram.", + "type": "object", + "properties": { + "next": { + "$ref": "#/$defs/NextOperation" + }, + "on_implicit_error": { + "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled.", + "anyOf": [ + { + "$ref": "#/$defs/NextOperation" + }, + { + "type": "null" + } + ], + "default": null + }, + "ops": { + "description": "Operations that exist inside this scope.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/DiagramOperation" + } + }, + "settings": { + "allOf": [ + { + "description": "Settings specific to the scope, e.g. whether it is interruptible.", + "default": { + "uninterruptible": false + } + }, + { + "$ref": "#/$defs/ScopeSettings" + } + ] + }, + "start": { + "$ref": "#/$defs/NextOperation" + }, + "stream_out": { + "description": "Where to connect streams that are coming out of this scope.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + }, + "default": {} + } + }, + "required": [ + "start", + "ops", + "next" + ] + }, + "ScopeSettings": { + "description": "Settings which determine how the top-level scope of the workflow behaves.", + "type": "object", + "properties": { + "uninterruptible": { + "description": "Should we prevent the scope from being interrupted (e.g. cancelled)?\n False by default, meaning by default scopes can be cancelled or\n interrupted.", + "type": "boolean" + } + }, + "required": [ + "uninterruptible" + ] + }, + "SectionSchema": { + "type": "object", + "properties": { + "config": { + "default": null + }, + "connect": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + }, + "default": {} + } + }, + "oneOf": [ + { + "type": "object", + "properties": { + "builder": { + "type": "string" + } + }, + "required": [ + "builder" + ] + }, + { + "type": "object", + "properties": { + "template": { + "type": "string" + } + }, + "required": [ + "template" + ] + } + ] + }, + "SectionTemplate": { + "type": "object", + "properties": { + "buffers": { + "allOf": [ + { + "description": "These are the buffers that the section is exposing for you to read,\n write, join, or listen to.", + "default": [] + }, + { + "$ref": "#/$defs/InputRemapping" + } + ] + }, + "inputs": { + "allOf": [ + { + "description": "These are the inputs that the section is exposing for its sibling\n operations to send outputs into.", + "default": [] + }, + { + "$ref": "#/$defs/InputRemapping" + } + ] + }, + "ops": { + "description": "Operations that define the behavior of the section.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/DiagramOperation" + } + }, + "outputs": { + "description": "These are the outputs that the section is exposing so you can connect\n them into siblings of the section.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + } + }, + "required": [ + "ops" + ] + }, + "SerializedJoinSchema": { + "type": "object", + "properties": { + "buffers": { + "$ref": "#/$defs/BufferSelection" + }, + "next": { + "$ref": "#/$defs/NextOperation" + } + }, + "required": [ + "next", + "buffers" + ] + }, + "SplitSchema": { + "type": "object", + "properties": { + "keyed": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + }, + "default": {} + }, + "remaining": { + "anyOf": [ + { + "$ref": "#/$defs/NextOperation" + }, + { + "type": "null" + } + ] + }, + "sequential": { + "type": "array", + "default": [], + "items": { + "$ref": "#/$defs/NextOperation" + } + } + } + }, + "StreamOutSchema": { + "type": "object", + "properties": { + "name": { + "description": "The name of the stream exiting the workflow or scope.", + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "TransformSchema": { + "type": "object", + "properties": { + "cel": { + "type": "string" + }, + "next": { + "$ref": "#/$defs/NextOperation" + }, + "on_error": { + "description": "Specify what happens if an error occurs during the transformation. If\n you specify a target for on_error, then an error message will be sent to\n that target. You can set this to `{ \"builtin\": \"dispose\" }` to simply\n ignore errors.\n\n If left unspecified, a failure will be treated like an implicit operation\n failure and behave according to `on_implicit_error`.", + "anyOf": [ + { + "$ref": "#/$defs/NextOperation" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "cel", + "next" + ] + }, + "UnzipSchema": { + "type": "object", + "properties": { + "next": { + "type": "array", + "items": { + "$ref": "#/$defs/NextOperation" + } + } + }, + "required": [ + "next" + ] + } + } +} \ No newline at end of file diff --git a/diagram-editor/frontend/diagram.schema.json b/diagram-editor/frontend/diagram.schema.json deleted file mode 100644 index 35a14220..00000000 --- a/diagram-editor/frontend/diagram.schema.json +++ /dev/null @@ -1,752 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "Diagram", - "type": "object", - "properties": { - "on_implicit_error": { - "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled.", - "anyOf": [ - { - "$ref": "#/$defs/NextOperation" - }, - { - "type": "null" - } - ], - "default": null - }, - "ops": { - "description": "Operations that define the workflow", - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/DiagramOperation" - } - }, - "start": { - "description": "Indicates where the workflow should start running.", - "$ref": "#/$defs/NextOperation" - }, - "templates": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/SectionTemplate" - }, - "default": {} - }, - "version": { - "description": "Version of the diagram, should always be `0.1.0`.", - "type": "string" - } - }, - "required": [ - "version", - "start", - "ops" - ], - "$defs": { - "BufferAccessSchema": { - "type": "object", - "properties": { - "buffers": { - "description": "Map of buffer keys and buffers.", - "$ref": "#/$defs/BufferSelection" - }, - "next": { - "$ref": "#/$defs/NextOperation" - } - }, - "required": [ - "next", - "buffers" - ] - }, - "BufferSchema": { - "type": "object", - "properties": { - "serialize": { - "description": "If true, messages will be serialized before sending into the buffer.", - "type": [ - "boolean", - "null" - ] - }, - "settings": { - "$ref": "#/$defs/BufferSettings", - "default": { - "retention": { - "keep_last": 1 - } - } - } - } - }, - "BufferSelection": { - "anyOf": [ - { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - } - }, - { - "type": "array", - "items": { - "$ref": "#/$defs/NextOperation" - } - } - ] - }, - "BufferSettings": { - "description": "Settings to describe the behavior of a buffer.", - "type": "object", - "properties": { - "retention": { - "$ref": "#/$defs/RetentionPolicy" - } - }, - "required": [ - "retention" - ] - }, - "BuiltinTarget": { - "oneOf": [ - { - "description": "Use the output to terminate the current scope. The value passed into\n this operation will be the return value of the scope.", - "type": "string", - "const": "terminate" - }, - { - "description": "Dispose of the output.", - "type": "string", - "const": "dispose" - }, - { - "description": "When triggered, cancel the current scope. If this is an inner scope of a\n workflow then the parent scope will see a disposal happen. If this is\n the root scope of a workflow then the whole workflow will cancel.", - "type": "string", - "const": "cancel" - } - ] - }, - "DiagramOperation": { - "oneOf": [ - { - "description": "Create an operation that that takes an input message and produces an\n output message.\n\n The behavior is determined by the choice of node `builder` and\n optioanlly the `config` that you provide. Each type of node builder has\n its own schema for the config.\n\n The output message will be sent to the operation specified by `next`.\n\n TODO(@mxgrey): [Support stream outputs](https://github.com/open-rmf/bevy_impulse/issues/43)\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"cutting_board\",\n \"ops\": {\n \"cutting_board\": {\n \"type\": \"node\",\n \"builder\": \"chop\",\n \"config\": \"diced\",\n \"next\": \"bowl\"\n },\n \"bowl\": {\n \"type\": \"node\",\n \"builder\": \"stir\",\n \"next\": \"oven\"\n },\n \"oven\": {\n \"type\": \"node\",\n \"builder\": \"bake\",\n \"config\": {\n \"temperature\": 200,\n \"duration\": 120\n },\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "node" - } - }, - "$ref": "#/$defs/NodeSchema", - "required": [ - "type" - ] - }, - { - "description": "Connect the request to a registered section.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"builder\": \"my_section_builder\",\n \"connect\": {\n \"my_section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Custom sections can also be created via templates\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"templates\": {\n \"my_template\": {\n \"inputs\": [\"section_input\"],\n \"outputs\": [\"section_output\"],\n \"buffers\": [],\n \"ops\": {\n \"section_input\": {\n \"type\": \"node\",\n \"builder\": \"my_node\",\n \"next\": \"section_output\"\n }\n }\n }\n },\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"template\": \"my_template\",\n \"connect\": {\n \"section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "section" - } - }, - "$ref": "#/$defs/SectionSchema", - "required": [ - "type" - ] - }, - { - "description": "Create a scope which will function like its own encapsulated workflow\n within the paren workflow. Each message that enters a scope will trigger\n a new independent session for that scope to begin running with the incoming\n message itself being the input message of the scope. When multiple sessions\n for the same scope are running, they cannot see or interfere with each other.\n\n Once a session terminates, the scope will send the terminating message as\n its output. Scopes can use the `stream_out` operation to stream messages out\n to the parent workflow while running.\n\n Scopes have two common uses:\n * isolate - Prevent simultaneous runs of the same workflow components\n (especially buffers) from interfering with each other.\n * race - Run multiple branches simultaneously inside the scope and race\n them against each ohter. The first branch that reaches the scope's\n terminate operation \"wins\" the race, and only its output will continue\n on in the parent workflow. All other branches will be disposed.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"approach_door\",\n \"ops\": {\n \"approach_door\": {\n \"type\": \"scope\",\n \"start\": \"begin\",\n \"ops\": {\n \"begin\": {\n \"type\": \"fork_clone\",\n \"next\": [\n \"move_to_door\",\n \"detect_door_proximity\"\n ]\n },\n \"move_to_door\": {\n \"type\": \"node\",\n \"builder\": \"move\",\n \"config\": {\n \"place\": \"L1_north_lobby_outside\"\n },\n \"next\": { \"builtin\" : \"terminate\" }\n },\n \"detect_proximity\": {\n \"type\": \"node\",\n \"builder\": \"detect_proximity\",\n \"config\": {\n \"type\": \"door\",\n \"name\": \"L1_north_lobby\"\n },\n \"next\": { \"builtin\" : \"terminate\" }\n }\n },\n \"next\": { \"builtin\" : \"try_open_door\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "scope" - } - }, - "$ref": "#/$defs/ScopeSchema", - "required": [ - "type" - ] - }, - { - "description": "Declare a stream output for the current scope. Outputs that you connect\n to this operation will be streamed out of the scope that this operation\n is declared in.\n\n For the root-level scope, make sure you use a stream pack that is\n compatible with all stream out operations that you declare, otherwise\n you may get a connection error at runtime.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"plan\",\n \"ops\": {\n \"progress_stream\": {\n \"type\": \"stream_out\",\n \"name\": \"progress\"\n },\n \"plan\": {\n \"type\": \"node\",\n \"builder\": \"planner\",\n \"next\": \"drive\",\n \"stream_out\" : {\n \"progress\": \"progress_stream\"\n }\n },\n \"drive\": {\n \"type\": \"node\",\n \"builder\": \"navigation\",\n \"next\": { \"builtin\": \"terminate\" },\n \"stream_out\": {\n \"progress\": \"progress_stream\"\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "stream_out" - } - }, - "$ref": "#/$defs/StreamOutSchema", - "required": [ - "type" - ] - }, - { - "description": "If the request is cloneable, clone it into multiple responses that can\n each be sent to a different operation. The `next` property is an array.\n\n This creates multiple simultaneous branches of execution within the\n workflow. Usually when you have multiple branches you will either\n * race - connect all branches to `terminate` and the first branch to\n finish \"wins\" the race and gets to the be output\n * join - connect each branch into a buffer and then use the `join`\n operation to reunite them\n * collect - TODO(@mxgrey): [add the collect operation](https://github.com/open-rmf/bevy_impulse/issues/59)\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"begin_race\",\n \"ops\": {\n \"begin_race\": {\n \"type\": \"fork_clone\",\n \"next\": [\n \"ferrari\",\n \"mustang\"\n ]\n },\n \"ferrari\": {\n \"type\": \"node\",\n \"builder\": \"drive\",\n \"config\": \"ferrari\",\n \"next\": { \"builtin\": \"terminate\" }\n },\n \"mustang\": {\n \"type\": \"node\",\n \"builder\": \"drive\",\n \"config\": \"mustang\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "fork_clone" - } - }, - "$ref": "#/$defs/ForkCloneSchema", - "required": [ - "type" - ] - }, - { - "description": "If the input message is a tuple of (T1, T2, T3, ...), unzip it into\n multiple output messages of T1, T2, T3, ...\n\n Each output message may have a different type and can be sent to a\n different operation. This creates multiple simultaneous branches of\n execution within the workflow. See [`DiagramOperation::ForkClone`] for\n more information on parallel branches.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"name_phone_address\",\n \"ops\": {\n \"name_phone_address\": {\n \"type\": \"unzip\",\n \"next\": [\n \"process_name\",\n \"process_phone_number\",\n \"process_address\"\n ]\n },\n \"process_name\": {\n \"type\": \"node\",\n \"builder\": \"process_name\",\n \"next\": \"name_processed\"\n },\n \"process_phone_number\": {\n \"type\": \"node\",\n \"builder\": \"process_phone_number\",\n \"next\": \"phone_number_processed\"\n },\n \"process_address\": {\n \"type\": \"node\",\n \"builder\": \"process_address\",\n \"next\": \"address_processed\"\n },\n \"name_processed\": { \"type\": \"buffer\" },\n \"phone_number_processed\": { \"type\": \"buffer\" },\n \"address_processed\": { \"type\": \"buffer\" },\n \"finished\": {\n \"type\": \"join\",\n \"buffers\": [\n \"name_processed\",\n \"phone_number_processed\",\n \"address_processed\"\n ],\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "unzip" - } - }, - "$ref": "#/$defs/UnzipSchema", - "required": [ - "type" - ] - }, - { - "description": "If the request is a [`Result`], send the output message down an\n `ok` branch or down an `err` branch depending on whether the result has\n an [`Ok`] or [`Err`] value. The `ok` branch will receive a `T` while the\n `err` branch will receive an `E`.\n\n Only one branch will be activated by each input message that enters the\n operation.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_result\",\n \"ops\": {\n \"fork_result\": {\n \"type\": \"fork_result\",\n \"ok\": { \"builtin\": \"terminate\" },\n \"err\": { \"builtin\": \"dispose\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "fork_result" - } - }, - "$ref": "#/$defs/ForkResultSchema", - "required": [ - "type" - ] - }, - { - "description": "If the input message is a list-like or map-like object, split it into\n multiple output messages.\n\n Note that the type of output message from the split depends on how the\n input message implements the [`Splittable`][1] trait. In many cases this\n will be a tuple of `(key, value)`.\n\n There are three ways to specify where the split output messages should\n go, and all can be used at the same time:\n * `sequential` - For array-like collections, send the \"first\" element of\n the collection to the first operation listed in the `sequential` array.\n The \"second\" element of the collection goes to the second operation\n listed in the `sequential` array. And so on for all elements in the\n collection. If one of the elements in the collection is mentioned in\n the `keyed` set, then the sequence will pass over it as if the element\n does not exist at all.\n * `keyed` - For map-like collections, send the split element associated\n with the specified key to its associated output.\n * `remaining` - Any elements that are were not captured by `sequential`\n or by `keyed` will be sent to this.\n\n [1]: crate::Splittable\n\n # Examples\n\n Suppose I am an animal rescuer sorting through a new collection of\n animals that need recuing. My home has space for three exotic animals\n plus any number of dogs and cats.\n\n I have a custom `SpeciesCollection` data structure that implements\n [`Splittable`][1] by allowing you to key on the type of animal.\n\n In the workflow below, we send all cats and dogs to `home`, and we also\n send the first three non-dog and non-cat species to `home`. All\n remaining animals go to the zoo.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"select_animals\",\n \"ops\": {\n \"select_animals\": {\n \"type\": \"split\",\n \"sequential\": [\n \"home\",\n \"home\",\n \"home\"\n ],\n \"keyed\": {\n \"cat\": \"home\",\n \"dog\": \"home\"\n },\n \"remaining\": \"zoo\"\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n If we input `[\"frog\", \"cat\", \"bear\", \"beaver\", \"dog\", \"rabbit\", \"dog\", \"monkey\"]`\n then `frog`, `bear`, and `beaver` will be sent to `home` since those are\n the first three animals that are not `dog` or `cat`, and we will also\n send one `cat` and two `dog` home. `rabbit` and `monkey` will be sent to the zoo.", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "split" - } - }, - "$ref": "#/$defs/SplitSchema", - "required": [ - "type" - ] - }, - { - "description": "Wait for exactly one item to be available in each buffer listed in\n `buffers`, then join each of those items into a single output message\n that gets sent to `next`.\n\n If the `next` operation is not a `node` type (e.g. `fork_clone`) then\n you must specify a `target_node` so that the diagram knows what data\n structure to join the values into.\n\n The output message type must be registered as joinable at compile time.\n If you want to join into a dynamic data structure then you should use\n [`DiagramOperation::SerializedJoin`] instead.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"begin_measuring\",\n \"ops\": {\n \"begin_measuring\": {\n \"type\": \"fork_clone\",\n \"next\": [\"localize\", \"imu\"]\n },\n \"localize\": {\n \"type\": \"node\",\n \"builder\": \"localize\",\n \"next\": \"estimated_position\"\n },\n \"imu\": {\n \"type\": \"node\",\n \"builder\": \"imu\",\n \"config\": \"velocity\",\n \"next\": \"estimated_velocity\"\n },\n \"estimated_position\": { \"type\": \"buffer\" },\n \"estimated_velocity\": { \"type\": \"buffer\" },\n \"gather_state\": {\n \"type\": \"join\",\n \"buffers\": {\n \"position\": \"estimate_position\",\n \"velocity\": \"estimate_velocity\"\n },\n \"next\": \"report_state\"\n },\n \"report_state\": {\n \"type\": \"node\",\n \"builder\": \"publish_state\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "join" - } - }, - "$ref": "#/$defs/JoinSchema", - "required": [ - "type" - ] - }, - { - "description": "Same as [`DiagramOperation::Join`] but all input messages must be\n serializable, and the output message will always be [`serde_json::Value`].\n\n If you use an array for `buffers` then the output message will be a\n [`serde_json::Value::Array`]. If you use a map for `buffers` then the\n output message will be a [`serde_json::Value::Object`].\n\n Unlike [`DiagramOperation::Join`], the `target_node` property does not\n exist for this schema.", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "serialized_join" - } - }, - "$ref": "#/$defs/SerializedJoinSchema", - "required": [ - "type" - ] - }, - { - "description": "If the request is serializable, transform it by running it through a [CEL](https://cel.dev/) program.\n The context includes a \"request\" variable which contains the input message.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"transform\",\n \"ops\": {\n \"transform\": {\n \"type\": \"transform\",\n \"cel\": \"request.name\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Note that due to how `serde_json` performs serialization, positive integers are always\n serialized as unsigned. In CEL, You can't do an operation between unsigned and signed so\n it is recommended to always perform explicit casts.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"transform\",\n \"ops\": {\n \"transform\": {\n \"type\": \"transform\",\n \"cel\": \"int(request.score) * 3\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "transform" - } - }, - "$ref": "#/$defs/TransformSchema", - "required": [ - "type" - ] - }, - { - "description": "Create a [`Buffer`][1] which can be used to store and pull data within\n a scope.\n\n By default the [`BufferSettings`][2] will keep the single last message\n pushed to the buffer. You can change that with the optional `settings`\n property.\n\n Use the `\"serialize\": true` option to serialize the messages into\n [`JsonMessage`] before they are inserted into the buffer. This\n allows any serializable message type to be pushed into the buffer. If\n left unspecified, the buffer will store the specific data type that gets\n pushed into it. If the buffer inputs are not being serialized, then all\n incoming messages being pushed into the buffer must have the same type.\n\n [1]: crate::Buffer\n [2]: crate::BufferSettings\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_clone\",\n \"ops\": {\n \"fork_clone\": {\n \"type\": \"fork_clone\",\n \"next\": [\"num_output\", \"string_output\", \"all_num_buffer\", \"serialized_num_buffer\"]\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer_access\"\n },\n \"string_output\": {\n \"type\": \"node\",\n \"builder\": \"string_output\",\n \"next\": \"string_buffer\"\n },\n \"string_buffer\": {\n \"type\": \"buffer\",\n \"settings\": {\n \"retention\": { \"keep_last\": 10 }\n }\n },\n \"all_num_buffer\": {\n \"type\": \"buffer\",\n \"settings\": {\n \"retention\": \"keep_all\"\n }\n },\n \"serialized_num_buffer\": {\n \"type\": \"buffer\",\n \"serialize\": true\n },\n \"buffer_access\": {\n \"type\": \"buffer_access\",\n \"buffers\": [\"string_buffer\"],\n \"target_node\": \"with_buffer_access\",\n \"next\": \"with_buffer_access\"\n },\n \"with_buffer_access\": {\n \"type\": \"node\",\n \"builder\": \"with_buffer_access\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "buffer" - } - }, - "$ref": "#/$defs/BufferSchema", - "required": [ - "type" - ] - }, - { - "description": "Zip a message together with access to one or more buffers.\n\n The receiving node must have an input type of `(Message, Keys)`\n where `Keys` implements the [`Accessor`][1] trait.\n\n [1]: crate::Accessor\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"fork_clone\",\n \"ops\": {\n \"fork_clone\": {\n \"type\": \"fork_clone\",\n \"next\": [\"num_output\", \"string_output\"]\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer_access\"\n },\n \"string_output\": {\n \"type\": \"node\",\n \"builder\": \"string_output\",\n \"next\": \"string_buffer\"\n },\n \"string_buffer\": {\n \"type\": \"buffer\"\n },\n \"buffer_access\": {\n \"type\": \"buffer_access\",\n \"buffers\": [\"string_buffer\"],\n \"target_node\": \"with_buffer_access\",\n \"next\": \"with_buffer_access\"\n },\n \"with_buffer_access\": {\n \"type\": \"node\",\n \"builder\": \"with_buffer_access\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "buffer_access" - } - }, - "$ref": "#/$defs/BufferAccessSchema", - "required": [ - "type" - ] - }, - { - "description": "Listen on a buffer.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"num_output\",\n \"ops\": {\n \"buffer\": {\n \"type\": \"buffer\"\n },\n \"num_output\": {\n \"type\": \"node\",\n \"builder\": \"num_output\",\n \"next\": \"buffer\"\n },\n \"listen\": {\n \"type\": \"listen\",\n \"buffers\": [\"buffer\"],\n \"target_node\": \"listen_buffer\",\n \"next\": \"listen_buffer\"\n },\n \"listen_buffer\": {\n \"type\": \"node\",\n \"builder\": \"listen_buffer\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())", - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "listen" - } - }, - "$ref": "#/$defs/ListenSchema", - "required": [ - "type" - ] - } - ] - }, - "ForkCloneSchema": { - "type": "object", - "properties": { - "next": { - "type": "array", - "items": { - "$ref": "#/$defs/NextOperation" - } - } - }, - "required": [ - "next" - ] - }, - "ForkResultSchema": { - "type": "object", - "properties": { - "err": { - "$ref": "#/$defs/NextOperation" - }, - "ok": { - "$ref": "#/$defs/NextOperation" - } - }, - "required": [ - "ok", - "err" - ] - }, - "InputRemapping": { - "description": "This defines how sections remap their inner operations (inputs and buffers)\n to expose them to operations that are siblings to the section.", - "anyOf": [ - { - "description": "Do a simple 1:1 forwarding of the names listed in the array", - "type": "array", - "items": { - "type": "string" - } - }, - { - "description": "Rename an operation inside the section to expose it externally. The key\n of the map is what siblings of the section can connect to, and the value\n of the entry is the identifier of the input inside the section that is\n being exposed.\n\n This allows a section to expose inputs and buffers that are provided\n by inner sections.", - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - } - } - ] - }, - "JoinSchema": { - "type": "object", - "properties": { - "buffers": { - "description": "Map of buffer keys and buffers.", - "$ref": "#/$defs/BufferSelection" - }, - "next": { - "$ref": "#/$defs/NextOperation" - } - }, - "required": [ - "next", - "buffers" - ] - }, - "ListenSchema": { - "type": "object", - "properties": { - "buffers": { - "description": "Map of buffer keys and buffers.", - "$ref": "#/$defs/BufferSelection" - }, - "next": { - "$ref": "#/$defs/NextOperation" - }, - "target_node": { - "description": "The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation.", - "anyOf": [ - { - "$ref": "#/$defs/NextOperation" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "next", - "buffers" - ] - }, - "NamespacedOperation": { - "title": "NamespacedOperation", - "description": "Refer to an operation inside of a namespace, e.g. { \"\": \"\"", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "maxProperties": 1, - "minProperties": 1 - }, - "NextOperation": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "builtin": { - "$ref": "#/$defs/BuiltinTarget" - } - }, - "required": [ - "builtin" - ] - }, - { - "description": "Refer to an \"inner\" operation of one of the sibling operations in a\n diagram. This can be used to target section inputs.", - "$ref": "#/$defs/NamespacedOperation" - } - ] - }, - "NodeSchema": { - "type": "object", - "properties": { - "builder": { - "type": "string" - }, - "config": true, - "next": { - "$ref": "#/$defs/NextOperation" - }, - "stream_out": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - } - } - }, - "required": [ - "builder", - "next" - ] - }, - "RetentionPolicy": { - "description": "Describe how data within a buffer gets retained. Most mechanisms that pull\n data from a buffer will remove the oldest item in the buffer, so this policy\n is for dealing with situations where items are being stored faster than they\n are being pulled.\n\n The default value is KeepLast(1).", - "oneOf": [ - { - "description": "Keep the last N items that were stored into the buffer. Once the limit\n is reached, the oldest item will be removed any time a new item arrives.", - "type": "object", - "properties": { - "keep_last": { - "type": "integer", - "format": "uint", - "minimum": 0 - } - }, - "additionalProperties": false, - "required": [ - "keep_last" - ] - }, - { - "description": "Keep the first N items that are stored into the buffer. Once the limit\n is reached, any new item that arrives will be discarded.", - "type": "object", - "properties": { - "keep_first": { - "type": "integer", - "format": "uint", - "minimum": 0 - } - }, - "additionalProperties": false, - "required": [ - "keep_first" - ] - }, - { - "description": "Do not limit how many items can be stored in the buffer.", - "type": "string", - "const": "keep_all" - } - ] - }, - "ScopeSchema": { - "description": "The schema to define a scope within a diagram.", - "type": "object", - "properties": { - "next": { - "description": "Where to connect the output of this scope.", - "$ref": "#/$defs/NextOperation" - }, - "on_implicit_error": { - "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled.", - "anyOf": [ - { - "$ref": "#/$defs/NextOperation" - }, - { - "type": "null" - } - ], - "default": null - }, - "ops": { - "description": "Operations that exist inside this scope.", - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/DiagramOperation" - } - }, - "settings": { - "description": "Settings specific to the scope, e.g. whether it is interruptible.", - "$ref": "#/$defs/ScopeSettings", - "default": { - "uninterruptible": false - } - }, - "start": { - "description": "Indicates which node inside the scope should receive the input into the\n scope.", - "$ref": "#/$defs/NextOperation" - }, - "stream_out": { - "description": "Where to connect streams that are coming out of this scope.", - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - }, - "default": {} - } - }, - "required": [ - "start", - "ops", - "next" - ] - }, - "ScopeSettings": { - "description": "Settings which determine how the top-level scope of the workflow behaves.", - "type": "object", - "properties": { - "uninterruptible": { - "description": "Should we prevent the scope from being interrupted (e.g. cancelled)?\n False by default, meaning by default scopes can be cancelled or\n interrupted.", - "type": "boolean" - } - }, - "required": [ - "uninterruptible" - ] - }, - "SectionSchema": { - "type": "object", - "properties": { - "config": { - "default": null - }, - "connect": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - }, - "default": {} - } - }, - "oneOf": [ - { - "type": "object", - "properties": { - "builder": { - "type": "string" - } - }, - "required": [ - "builder" - ] - }, - { - "type": "object", - "properties": { - "template": { - "type": "string" - } - }, - "required": [ - "template" - ] - } - ] - }, - "SectionTemplate": { - "type": "object", - "properties": { - "buffers": { - "description": "These are the buffers that the section is exposing for you to read,\n write, join, or listen to.", - "$ref": "#/$defs/InputRemapping", - "default": [] - }, - "inputs": { - "description": "These are the inputs that the section is exposing for its sibling\n operations to send outputs into.", - "$ref": "#/$defs/InputRemapping", - "default": [] - }, - "ops": { - "description": "Operations that define the behavior of the section.", - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/DiagramOperation" - } - }, - "outputs": { - "description": "These are the outputs that the section is exposing so you can connect\n them into siblings of the section.", - "type": "array", - "default": [], - "items": { - "type": "string" - } - } - }, - "required": [ - "ops" - ] - }, - "SerializedJoinSchema": { - "type": "object", - "properties": { - "buffers": { - "description": "Map of buffer keys and buffers.", - "$ref": "#/$defs/BufferSelection" - }, - "next": { - "$ref": "#/$defs/NextOperation" - } - }, - "required": [ - "next", - "buffers" - ] - }, - "SplitSchema": { - "type": "object", - "properties": { - "keyed": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - }, - "default": {} - }, - "remaining": { - "anyOf": [ - { - "$ref": "#/$defs/NextOperation" - }, - { - "type": "null" - } - ] - }, - "sequential": { - "type": "array", - "default": [], - "items": { - "$ref": "#/$defs/NextOperation" - } - } - } - }, - "StreamOutSchema": { - "type": "object", - "properties": { - "name": { - "description": "The name of the stream exiting the workflow or scope.", - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "TransformSchema": { - "type": "object", - "properties": { - "cel": { - "type": "string" - }, - "next": { - "$ref": "#/$defs/NextOperation" - }, - "on_error": { - "description": "Specify what happens if an error occurs during the transformation. If\n you specify a target for on_error, then an error message will be sent to\n that target. You can set this to `{ \"builtin\": \"dispose\" }` to simply\n ignore errors.\n\n If left unspecified, a failure will be treated like an implicit operation\n failure and behave according to `on_implicit_error`.", - "anyOf": [ - { - "$ref": "#/$defs/NextOperation" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "cel", - "next" - ] - }, - "UnzipSchema": { - "type": "object", - "properties": { - "next": { - "type": "array", - "items": { - "$ref": "#/$defs/NextOperation" - } - } - }, - "required": [ - "next" - ] - } - } -} \ No newline at end of file diff --git a/diagram-editor/frontend/forms/transform-form.stories.tsx b/diagram-editor/frontend/forms/transform-form.stories.tsx index dacd0c0f..b1b59f07 100644 --- a/diagram-editor/frontend/forms/transform-form.stories.tsx +++ b/diagram-editor/frontend/forms/transform-form.stories.tsx @@ -31,7 +31,6 @@ export const Default: Story = { type: 'transform', position: { x: 0, y: 0 }, data: { - opId: 'transform-op-1', type: 'transform', cel: 'request + 1', next: '', diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx index 488ad7ee..d2e57743 100644 --- a/diagram-editor/frontend/nodes/section-node.tsx +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -1,10 +1,13 @@ import type { NodeProps } from '@xyflow/react'; import type { OperationNode } from '../types'; +import { isSectionBuilder } from '../utils'; import BaseNode from './base-node'; import { SectionIcon } from './icons'; function SectionNode(props: NodeProps>) { - const label = (props.data.builder || props.data.template) as string; + const label = isSectionBuilder(props.data) + ? props.data.builder + : props.data.template; return ( , BuiltinNodeTypes>; +export type OperationNodeData< + K extends OperationNodeTypes = OperationNodeTypes, +> = Extract; + export type OperationNode = - Node, K>; + Node, K>; export type DiagramEditorNode = BuiltinNode | OperationNode; diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index e8be86db..29d459ce 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -1,5 +1,5 @@ import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; -import { extractOperation, isOperationNode } from '../utils'; +import { isOperationNode } from '../utils'; import { syncEdge } from './connection'; export function exportDiagram( @@ -16,7 +16,7 @@ export function exportDiagram( for (const node of nodes) { if (isOperationNode(node)) { - diagram.ops[node.id] = extractOperation(node); + diagram.ops[node.id] = node.data; } } diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 75bc858c..59750dd9 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,7 +1,7 @@ import addFormats from 'ajv-formats'; import Ajv from 'ajv/dist/2020'; -import diagramSchema from '../diagram.schema.json'; +import diagramSchema from '../diagram.preprocessed.schema.json'; import { START_ID, TERMINATE_ID } from '../nodes'; import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; import { buildEdges, nextOperationToNodeId } from './operation'; @@ -54,7 +54,7 @@ function buildGraph(diagram: Diagram): Graph { id: opId, type: op.type, position: { x: 0, y: 0 }, - data: { opId, ...op }, + data: op, }) satisfies DiagramEditorNode, ), ); diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index 14c03edc..4e4b7946 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -6,6 +6,7 @@ import type { DiagramOperation, NextOperation, OperationNode, + OperationNodeData, } from '../types'; import { exhaustiveCheck } from './exhaustive-check'; @@ -326,9 +327,8 @@ export function isOperationNode( return !node.id.startsWith('builtin:'); } -export function extractOperation(node: OperationNode): DiagramOperation { - const op: DiagramOperation = { ...node.data }; - const opIdKey = 'opId'; - delete op[opIdKey]; - return op; +export function isSectionBuilder( + nodeData: OperationNodeData<'section'>, +): nodeData is OperationNodeData<'section'> & { builder: string } { + return 'builder' in nodeData; } diff --git a/diagram-editor/scripts/generate-types.mjs b/diagram-editor/scripts/generate-types.mjs index bdfe26b7..2784d181 100644 --- a/diagram-editor/scripts/generate-types.mjs +++ b/diagram-editor/scripts/generate-types.mjs @@ -1,64 +1,77 @@ import { execSync } from 'node:child_process'; import crypto from 'node:crypto'; -import fs, { copyFileSync } from 'node:fs'; +import fs, { writeFileSync } from 'node:fs'; import { compile } from 'json-schema-to-typescript'; const schemaRaw = fs.readFileSync('../diagram.schema.json'); const hash = crypto.createHash('sha1').update(schemaRaw).digest('hex'); const schema = JSON.parse(schemaRaw); -function fixJsonSchema(schema) { - const combinations = new Set(['oneOf', 'allOf', 'anyOf']); - const inheritance = new Set([...combinations, '$ref']); - - for (const k of combinations) { - if (k in schema) { - for (const v of schema[k]) { - fixJsonSchema(v); - } - } +// preprocess the schema to workaround https://github.com/bcherny/json-schema-to-typescript/issues/637 and https://github.com/bcherny/json-schema-to-typescript/issues/613 +const workingSet = [...Object.values(schema.$defs)]; +while (workingSet.length > 0) { + const schema = workingSet.pop(); + if (typeof schema !== 'object') { + continue; } if ('properties' in schema) { - for (const propertyKey of Object.keys(schema.properties)) { - const propertyValue = schema.properties[propertyKey]; - // having other fields and $ref causes json-schema-to-typescript to inline it, workaround - // by removing all other fields. - if ( - typeof propertyValue === 'object' && - Object.keys(propertyValue).length > 1 && - '$ref' in propertyValue - ) { - schema.properties[propertyKey] = { $ref: propertyValue.$ref }; - } + for (const property of Object.values(schema.properties)) { + workingSet.push(property); + // if ( + // typeof property === 'object' && + // '$ref' in property && + // Object.keys(property).length > 1 + // ) { + // const $ref = property.$ref; + // for (const k of Object.keys(property)) { + // delete property[k]; + // } + // property.$ref = $ref; + // } } } - const keys = Object.keys(schema); - if (keys.length > 1 && keys.some((k) => inheritance.has(k))) { - const allOf = []; - const otherFields = {}; - for (const k of keys) { - if (inheritance.has(k)) { - allOf.push({ [k]: schema[k] }); - } else { - otherFields[k] = schema[k]; - } + if ('oneOf' in schema) { + workingSet.push(...Object.values(schema.oneOf)); + } + + if ('anyOf' in schema) { + workingSet.push(...Object.values(schema.anyOf)); + } + + // json schema draft-07 (used by json-schema-to-typescript) does not merge $ref, workaround + // by putting the $ref and other fields in a `allOf`. + if ('$ref' in schema && Object.keys(schema).length > 1) { + const $ref = schema.$ref; + const copy = { + ...schema, + }; + // biome-ignore lint/performance/noDelete: + delete copy.$ref; + + for (const k of Object.keys(schema)) { delete schema[k]; } - allOf.push(otherFields); - schema.allOf = allOf; - } -} -// preprocess the schema to workaround https://github.com/bcherny/json-schema-to-typescript/issues/637 and https://github.com/bcherny/json-schema-to-typescript/issues/613 -for (const def of Object.values(schema.$defs)) { - fixJsonSchema(def); + if (Object.keys(copy).some((k) => !['description', 'title'].includes(k))) { + // At least one field is not metadata only field. + const allOf = [copy, { $ref }]; + schema.allOf = allOf; + } else { + // All the remaining fields are metadata only fields. We cannot use `allOf` as the + // metadata only branch will allow any types. + schema.$ref = $ref; + } + } } -const output = await compile(schema, 'Diagram', {}); +const output = await compile(schema, 'Diagram'); const fd = fs.openSync('frontend/types/diagram.d.ts', 'w'); fs.writeSync(fd, `// Generated from diagram.schema.json (sha1:${hash})\n`); fs.writeSync(fd, output); execSync('biome format --write ./frontend/types/diagram.d.ts'); -copyFileSync('../diagram.schema.json', './frontend/diagram.schema.json'); +writeFileSync( + 'frontend/diagram.preprocessed.schema.json', + JSON.stringify(schema, undefined, 2), +); From 90d90d762c07db4387f1f00a07a836c36d8a13e5 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 24 Jun 2025 06:46:30 +0000 Subject: [PATCH 060/165] manage node id and op id separately to avoid ui glitches and unnecesarry re-renders Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 214 +++----- diagram-editor/frontend/diagram-editor.tsx | 21 +- .../frontend/export-diagram-dialog.tsx | 5 +- diagram-editor/frontend/forms/buffer-form.tsx | 7 +- .../frontend/forms/edit-node-form.stories.tsx | 28 +- .../frontend/forms/edit-node-form.tsx | 2 +- .../frontend/forms/edit-operation-form.tsx | 6 +- diagram-editor/frontend/forms/node-form.tsx | 7 +- .../frontend/forms/transform-form.stories.tsx | 10 +- .../frontend/forms/transform-form.tsx | 8 +- diagram-editor/frontend/node-manager.ts | 340 +++++++++++++ diagram-editor/frontend/nodes/node-node.tsx | 2 +- .../frontend/nodes/section-node.tsx | 6 +- .../frontend/types/{index.d.ts => index.ts} | 0 .../types/{react-flow.d.ts => react-flow.ts} | 17 +- diagram-editor/frontend/utils/auto-layout.ts | 18 +- .../frontend/utils/connection.test.ts | 464 ++++++++++++------ diagram-editor/frontend/utils/connection.ts | 243 +-------- .../frontend/utils/export-diagram.test.ts | 3 +- .../frontend/utils/export-diagram.ts | 16 +- .../frontend/utils/load-diagram.test.ts | 33 +- diagram-editor/frontend/utils/load-diagram.ts | 28 +- diagram-editor/frontend/utils/operation.ts | 454 +++++++++-------- diagram-editor/package.json | 1 + pnpm-lock.yaml | 3 + 25 files changed, 1094 insertions(+), 842 deletions(-) create mode 100644 diagram-editor/frontend/node-manager.ts rename diagram-editor/frontend/types/{index.d.ts => index.ts} (100%) rename diagram-editor/frontend/types/{react-flow.d.ts => react-flow.ts} (90%) diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 0a70f09d..4e301a69 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -14,7 +14,7 @@ import { TransformIcon, UnzipIcon, } from './nodes/icons'; -import type { DiagramEditorNode } from './types'; +import type { DiagramEditorNode, DiagramOperation } from './types'; const StyledOperationButton = styled(Button)({ justifyContent: 'flex-start', @@ -24,6 +24,24 @@ export interface AddOperationProps { onAdd?: (change: NodeAddChange) => void; } +function createNodeChange( + op: DiagramOperation, +): NodeAddChange { + return { + type: 'add', + item: { + id: uuidv4(), + type: op.type, + position: { x: 0, y: 0 }, + data: { + namespace: '', + opId: uuidv4(), + op, + }, + }, + }; +} + function AddOperation({ onAdd }: AddOperationProps) { return ( } onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onAdd?.( + createNodeChange({ type: 'node', - position: { x: 0, y: 0 }, - data: { - type: 'node', - builder: '', - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); + builder: '', + next: { builtin: 'dispose' }, + }), + ); }} > Node @@ -55,195 +67,111 @@ function AddOperation({ onAdd }: AddOperationProps) { {/* */} } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), - type: 'fork_clone', - position: { x: 0, y: 0 }, - data: { - type: 'fork_clone', - next: [], - }, - }, - type: 'add', - }); - }} + onClick={() => + onAdd?.(createNodeChange({ type: 'fork_clone', next: [] })) + } > Fork Clone } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), - type: 'unzip', - position: { x: 0, y: 0 }, - data: { - type: 'unzip', - next: [], - }, - }, - type: 'add', - }); - }} + onClick={() => onAdd?.(createNodeChange({ type: 'unzip', next: [] }))} > Unzip } onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onAdd?.( + createNodeChange({ type: 'fork_result', - position: { x: 0, y: 0 }, - data: { - type: 'fork_result', - err: { builtin: 'dispose' }, - ok: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); + err: { builtin: 'dispose' }, + ok: { builtin: 'dispose' }, + }), + ); }} > Fork Result } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), - type: 'split', - position: { x: 0, y: 0 }, - data: { - type: 'split', - }, - }, - type: 'add', - }); - }} + onClick={() => onAdd?.(createNodeChange({ type: 'split' }))} > Split } onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onAdd?.( + createNodeChange({ type: 'join', - position: { x: 0, y: 0 }, - data: { - type: 'join', - buffers: [], - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); + buffers: [], + next: { builtin: 'dispose' }, + }), + ); }} > Join } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onClick={() => + onAdd?.( + createNodeChange({ type: 'serialized_join', - position: { x: 0, y: 0 }, - data: { - type: 'serialized_join', - buffers: [], - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); - }} + buffers: [], + next: { builtin: 'dispose' }, + }), + ) + } > Serialized Join } onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onAdd?.( + createNodeChange({ type: 'transform', - position: { x: 0, y: 0 }, - data: { - type: 'transform', - cel: '', - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); + cel: '', + next: { builtin: 'dispose' }, + }), + ); }} > Transform } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), - type: 'buffer', - position: { x: 0, y: 0 }, - data: { - type: 'buffer', - }, - }, - type: 'add', - }); - }} + onClick={() => onAdd?.(createNodeChange({ type: 'buffer' }))} > Buffer } onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onAdd?.( + createNodeChange({ type: 'buffer_access', - position: { x: 0, y: 0 }, - data: { - type: 'buffer_access', - buffers: [], - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); + buffers: [], + next: { builtin: 'dispose' }, + }), + ); }} > Buffer Access } - onClick={() => { - onAdd?.({ - item: { - id: uuidv4(), + onClick={() => + onAdd?.( + createNodeChange({ type: 'listen', - position: { x: 0, y: 0 }, - data: { - type: 'listen', - buffers: [], - next: { builtin: 'dispose' }, - }, - }, - type: 'add', - }); - }} + buffers: [], + next: { builtin: 'dispose' }, + }), + ) + } > Listen diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 7b0b1e57..7fd447f3 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -13,6 +13,7 @@ import { styled, } from '@mui/material'; import { + type EdgeRemoveChange, Panel, ReactFlow, type ReactFlowInstance, @@ -27,6 +28,7 @@ import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; import { EditEdgeForm, EditNodeForm, defaultEdgeData } from './forms'; +import { NodeManager } from './node-manager'; import { NODE_TYPES, START_ID } from './nodes'; import type { DiagramEditorEdge, @@ -68,6 +70,7 @@ const DiagramEditor = () => { const [nodes, setNodes] = React.useState( () => loadEmpty().nodes, ); + const nodeManager = React.useMemo(() => new NodeManager(nodes), [nodes]); const [edges, setEdges] = React.useState([]); const [openAddOpPopover, setOpenAddOpPopover] = React.useState(false); @@ -202,9 +205,9 @@ const DiagramEditor = () => { onInit={(instance) => { reactFlowInstance.current = instance; }} - onNodesChange={(changes) => - setNodes((prev) => applyNodeChanges(changes, prev)) - } + onNodesChange={(changes) => { + setNodes((prev) => applyNodeChanges(changes, prev)); + }} onNodesDelete={() => { closeAllPopovers(); }} @@ -394,6 +397,16 @@ const DiagramEditor = () => { }} onDelete={(change) => { setNodes((prev) => applyNodeChanges([change], prev)); + const edgeChanges: EdgeRemoveChange[] = []; + for (const edge of edges) { + if (edge.source === change.id || edge.target === change.id) { + edgeChanges.push({ + type: 'remove', + id: edge.id, + }); + } + } + setEdges((prev) => applyEdgeChanges(edgeChanges, prev)); closeAllPopovers(); }} /> @@ -432,7 +445,7 @@ const DiagramEditor = () => { setOpenExportDiagramDialog(false)} - nodes={nodes} + nodes={nodeManager} edges={edges} /> diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index c41f1c13..9ceb2800 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -14,13 +14,14 @@ import { } from '@mui/material'; import { deflateSync, strToU8 } from 'fflate'; import React from 'react'; -import type { DiagramEditorEdge, DiagramEditorNode } from './types'; +import type { NodeManager } from './node-manager'; +import type { DiagramEditorEdge } from './types'; import { exportDiagram } from './utils/export-diagram'; export interface ExportDiagramDialogProps { open: boolean; onClose: () => void; - nodes: DiagramEditorNode[]; + nodes: NodeManager; edges: DiagramEditorEdge[]; } diff --git a/diagram-editor/frontend/forms/buffer-form.tsx b/diagram-editor/frontend/forms/buffer-form.tsx index 5e560ece..9e326700 100644 --- a/diagram-editor/frontend/forms/buffer-form.tsx +++ b/diagram-editor/frontend/forms/buffer-form.tsx @@ -9,13 +9,14 @@ export function BufferForm(props: EditOperationFormProps<'buffer'>) { { - props.node.data.serialize = checked; + const updatedNode = { ...props.node }; + updatedNode.data.op.serialize = checked; props.onChange?.({ type: 'replace', id: props.node.id, - item: { ...props.node }, + item: updatedNode, }); }} /> diff --git a/diagram-editor/frontend/forms/edit-node-form.stories.tsx b/diagram-editor/frontend/forms/edit-node-form.stories.tsx index d641ef81..1962d32d 100644 --- a/diagram-editor/frontend/forms/edit-node-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.stories.tsx @@ -19,9 +19,13 @@ export const Node: Story = { type: 'node', position: { x: 0, y: 0 }, data: { - type: 'node', - builder: 'builder', - next: { builtin: 'dispose' }, + namespace: '', + opId: 'testOpId', + op: { + type: 'node', + builder: 'builder', + next: { builtin: 'dispose' }, + }, }, }, }, @@ -45,8 +49,12 @@ export const Buffer: Story = { type: 'buffer', position: { x: 0, y: 0 }, data: { - type: 'buffer', - serialize: false, + namespace: '', + opId: 'testOpId', + op: { + type: 'buffer', + serialize: false, + }, }, }, }, @@ -70,9 +78,13 @@ export const Transform: Story = { type: 'transform', position: { x: 0, y: 0 }, data: { - type: 'transform', - cel: '', - next: { builtin: 'dispose' }, + namespace: '', + opId: 'testOpId', + op: { + type: 'transform', + cel: '', + next: { builtin: 'dispose' }, + }, }, }, }, diff --git a/diagram-editor/frontend/forms/edit-node-form.tsx b/diagram-editor/frontend/forms/edit-node-form.tsx index e052219b..04ab4e41 100644 --- a/diagram-editor/frontend/forms/edit-node-form.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.tsx @@ -15,7 +15,7 @@ export interface EditNodeFormProps { } function EditNodeForm(props: EditOperationFormProps) { - switch (props.node.data.type) { + switch (props.node.data.op.type) { case 'node': { return )} />; } diff --git a/diagram-editor/frontend/forms/edit-operation-form.tsx b/diagram-editor/frontend/forms/edit-operation-form.tsx index 5246b4ad..5c508303 100644 --- a/diagram-editor/frontend/forms/edit-operation-form.tsx +++ b/diagram-editor/frontend/forms/edit-operation-form.tsx @@ -43,12 +43,14 @@ function EditOperationForm({ { + const updatedNode = { ...node }; + updatedNode.data.opId = ev.target.value; onChange?.({ type: 'replace', id: node.id, - item: { ...node, id: ev.target.value }, + item: updatedNode, }); }} /> diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx index d2a6a19f..7cf7074b 100644 --- a/diagram-editor/frontend/forms/node-form.tsx +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -9,13 +9,14 @@ function NodeForm(props: EditOperationFormProps<'node'>) { { - props.node.data.builder = ev.target.value; + const updatedNode = { ...props.node }; + updatedNode.data.op.builder = ev.target.value; props.onChange?.({ type: 'replace', id: props.node.id, - item: { ...props.node }, + item: updatedNode, }); }} /> diff --git a/diagram-editor/frontend/forms/transform-form.stories.tsx b/diagram-editor/frontend/forms/transform-form.stories.tsx index b1b59f07..82355411 100644 --- a/diagram-editor/frontend/forms/transform-form.stories.tsx +++ b/diagram-editor/frontend/forms/transform-form.stories.tsx @@ -31,9 +31,13 @@ export const Default: Story = { type: 'transform', position: { x: 0, y: 0 }, data: { - type: 'transform', - cel: 'request + 1', - next: '', + namespace: '', + opId: 'testOpId', + op: { + type: 'transform', + cel: 'request + 1', + next: '', + }, }, }, }, diff --git a/diagram-editor/frontend/forms/transform-form.tsx b/diagram-editor/frontend/forms/transform-form.tsx index 35ace87a..519fc1bd 100644 --- a/diagram-editor/frontend/forms/transform-form.tsx +++ b/diagram-editor/frontend/forms/transform-form.tsx @@ -10,13 +10,15 @@ function TransformForm(props: EditOperationFormProps<'transform'>) { label="CEL" multiline fullWidth - defaultValue={props.node.data.cel} + defaultValue={props.node.data.op.cel} onChange={(ev) => { - props.node.data.cel = ev.target.value; + const updatedNode = { ...props.node }; + updatedNode.data.op.cel = ev.target.value; + props.node.data.op.cel = ev.target.value; props.onChange?.({ type: 'replace', id: props.node.id, - item: { ...props.node }, + item: updatedNode, }); }} /> diff --git a/diagram-editor/frontend/node-manager.ts b/diagram-editor/frontend/node-manager.ts new file mode 100644 index 00000000..12716b92 --- /dev/null +++ b/diagram-editor/frontend/node-manager.ts @@ -0,0 +1,340 @@ +import equal from 'fast-deep-equal'; +import { TERMINATE_ID } from './nodes'; +import type { + BufferSelection, + DiagramEditorEdge, + DiagramEditorNode, + DiagramOperation, + NextOperation, + StreamOutEdge, +} from './types'; +import { + exhaustiveCheck, + isArrayBufferSelection, + isBuiltin, + isBuiltinNode, + isKeyedBufferSelection, +} from './utils'; + +function joinNamespaceOpId(a: string, b: string) { + return `${a}:${b}`; +} + +function getBufferSelection(targetOp: DiagramOperation): BufferSelection { + switch (targetOp.type) { + case 'buffer_access': + case 'listen': + case 'join': + case 'serialized_join': { + return targetOp.buffers; + } + default: { + throw new Error(`"${targetOp.type}" operation does not accept a buffer`); + } + } +} + +function setBufferSelection( + targetOp: DiagramOperation, + bufferSelection: BufferSelection, +): void { + switch (targetOp.type) { + case 'buffer_access': + case 'listen': + case 'join': + case 'serialized_join': { + targetOp.buffers = bufferSelection; + break; + } + default: { + throw new Error(`"${targetOp.type}" operation does not accept a buffer`); + } + } +} + +export class NodeManager { + constructor(public nodes: DiagramEditorNode[]) { + // TODO: build a lookup map to improve performance + } + + getNode(nodeId: string): DiagramEditorNode { + const node = this.nodes.find((n) => n.id === nodeId); + if (!node) { + throw new Error(`cannot find node "${nodeId}"`); + } + return node; + } + + hasNode(nodeId: string): boolean { + try { + this.getNode(nodeId); + return true; + } catch { + return false; + } + } + + getNodeFromNamespaceOpId(namespace: string, opId: string): DiagramEditorNode { + const node = this.nodes.find( + (n) => n.data.namespace === namespace && n.data.opId === opId, + ); + if (!node) { + throw new Error( + `cannot find node for operation "${joinNamespaceOpId(namespace, opId)}"`, + ); + } + return node; + } + + getNodeFromRootOpId(opId: string): DiagramEditorNode { + return this.getNodeFromNamespaceOpId('', opId); + } + + getNodeFromNextOp( + fromNode: DiagramEditorNode, + nextOp: NextOperation, + ): DiagramEditorNode | null { + if (isBuiltin(nextOp)) { + switch (nextOp.builtin) { + case 'dispose': + case 'cancel': + return null; + case 'terminate': + return this.getNode(TERMINATE_ID); + } + } + + const [namespace, opId] = (() => { + if (typeof nextOp === 'object') { + const [namespace, opId] = Object.entries(nextOp)[0]; + return [joinNamespaceOpId(fromNode.data.namespace, namespace), opId]; + } + return [fromNode.data.namespace, nextOp]; + })(); + + const node = this.nodes.find( + (n) => n.data.namespace === namespace && n.data.opId === opId, + ); + if (!node) { + throw new Error( + `cannot find operation ${joinNamespaceOpId(namespace, opId)}`, + ); + } + return node; + } + + getTargetNextOp(edge: DiagramEditorEdge): NextOperation { + // TODO: Validate that the edge does not traverse namespaces + switch (edge.type) { + case 'bufferKey': + case 'bufferSeq': + case 'default': + case 'forkResultOk': + case 'forkResultErr': + case 'splitKey': + case 'splitSeq': + case 'splitRemaining': + case 'streamOut': + case 'unzip': { + const target = this.getNode(edge.target); + if (isBuiltinNode(target)) { + return { builtin: target.type }; + } + return target.data.opId; + } + // TODO: For section edges, return a `{ [target.data.opId]: edge.data.input }` + default: { + exhaustiveCheck(edge); + throw new Error('unknown edge'); + } + } + } + + private syncStreamOut( + sourceOp: Extract, + edge: StreamOutEdge, + ) { + sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; + sourceOp.stream_out[edge.data.name] = this.getTargetNextOp(edge); + } + + private syncBufferSelection(edge: DiagramEditorEdge) { + if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { + const targetNode = this.getNode(edge.target); + const targetOp = targetNode.data.op; + if (!targetOp) { + throw new Error(`target operation "${edge.target}" not found`); + } + const bufferSelection = getBufferSelection(targetOp); + + if ( + edge.type === 'bufferKey' && + Array.isArray(bufferSelection) && + bufferSelection.length === 0 + ) { + // the array is empty so it is safe to change it to a keyed buffer selection + setBufferSelection(targetOp, {}); + } else if ( + edge.type === 'bufferSeq' && + typeof bufferSelection === 'object' && + Object.keys(bufferSelection).length === 0 + ) { + // the dict is empty so it is safe to change it to an array of buffers + setBufferSelection(targetOp, []); + } + + const sourceNode = this.getNode(edge.source); + // check that the buffer selection is compatible + if (edge.type === 'bufferSeq') { + if (!isArrayBufferSelection(bufferSelection)) { + throw new Error( + 'a sequential buffer edge must be assigned to an array of buffers', + ); + } + if (!bufferSelection.includes(edge.source)) { + bufferSelection[edge.data.seq] = sourceNode.data.opId; + } + } + if (edge.type === 'bufferKey') { + if (!isKeyedBufferSelection(bufferSelection)) { + throw new Error( + 'a keyed buffer edge must be assigned to a keyed buffer selection', + ); + } + bufferSelection[edge.data.key] = sourceNode.data.opId; + } + } + } + + /** + * Update a node's data with the edge, this updates fields like `next` and `buffer` to be + * in sync with the edge data. + */ + syncEdge(edge: DiagramEditorEdge): void { + if (edge.source === TERMINATE_ID) { + throw new Error('source node cannot be "terminate"'); + } + + if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { + this.syncBufferSelection(edge); + return; + } + + const sourceNode = this.getNode(edge.source); + if (isBuiltinNode(sourceNode)) { + return; + } + const sourceOp = sourceNode.data.op; + + switch (sourceOp.type) { + case 'node': { + if (edge.type === 'streamOut') { + this.syncStreamOut(sourceOp, edge); + } else if (edge.type === 'default') { + sourceOp.next = this.getTargetNextOp(edge); + } + break; + } + case 'join': + case 'serialized_join': + case 'transform': + case 'buffer_access': + case 'listen': { + if (edge.type !== 'default') { + throw new Error('expected "default" edge'); + } + + sourceOp.next = this.getTargetNextOp(edge); + break; + } + case 'section': { + throw new Error('TODO'); + } + case 'fork_clone': { + if (edge.type !== 'default') { + throw new Error('expected "default" edge'); + } + + const newNextOp = this.getTargetNextOp(edge); + if (!sourceOp.next.some((next) => equal(next, newNextOp))) { + sourceOp.next.push(newNextOp); + } + break; + } + case 'unzip': { + if (edge.type !== 'unzip') { + throw new Error('expected "unzip" edge'); + } + sourceOp.next[edge.data.seq] = this.getTargetNextOp(edge); + break; + } + case 'fork_result': { + switch (edge.type) { + case 'forkResultOk': { + sourceOp.ok = this.getTargetNextOp(edge); + break; + } + case 'forkResultErr': { + sourceOp.err = this.getTargetNextOp(edge); + break; + } + default: { + throw new Error( + 'fork_result operation must have "ok" or "err" edge', + ); + } + } + break; + } + case 'split': { + switch (edge.type) { + case 'splitKey': { + if (!sourceOp.keyed) { + sourceOp.keyed = {}; + } + sourceOp.keyed[edge.data.key] = this.getTargetNextOp(edge); + break; + } + case 'splitSeq': { + if (!sourceOp.sequential) { + sourceOp.sequential = []; + } + // this works because js allows non-sequential arrays + sourceOp.sequential[edge.data.seq] = this.getTargetNextOp(edge); + break; + } + case 'splitRemaining': { + sourceOp.remaining = this.getTargetNextOp(edge); + break; + } + default: { + throw new Error( + 'split operation must have "SplitKey", "SplitSequential", or "SplitRemaining" edge', + ); + } + } + break; + } + case 'buffer': { + throw new Error('buffer operations cannot have connections'); + } + case 'scope': { + if (edge.type === 'streamOut') { + this.syncStreamOut(sourceOp, edge); + } else if (edge.type !== 'default') { + throw new Error( + 'scope operation must have default or streamOut edge', + ); + } + sourceOp.next = this.getTargetNextOp(edge); + break; + } + case 'stream_out': { + break; + } + default: { + exhaustiveCheck(sourceOp); + } + } + } +} diff --git a/diagram-editor/frontend/nodes/node-node.tsx b/diagram-editor/frontend/nodes/node-node.tsx index 7578f57b..24a0f900 100644 --- a/diagram-editor/frontend/nodes/node-node.tsx +++ b/diagram-editor/frontend/nodes/node-node.tsx @@ -8,7 +8,7 @@ function NodeNode(props: NodeProps>) { } - label={props.data.builder} + label={props.data.op.builder} variant="inputOutput" /> ); diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx index d2e57743..d10062d0 100644 --- a/diagram-editor/frontend/nodes/section-node.tsx +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -5,9 +5,9 @@ import BaseNode from './base-node'; import { SectionIcon } from './icons'; function SectionNode(props: NodeProps>) { - const label = isSectionBuilder(props.data) - ? props.data.builder - : props.data.template; + const label = isSectionBuilder(props.data.op) + ? props.data.op.builder + : props.data.op.template; return ( , T extends NodeTypes, -> = ReactFlowNode; +> = ReactFlowNode & { type: T }; export type BuiltinNode = Node, BuiltinNodeTypes>; export type OperationNodeData< - K extends OperationNodeTypes = OperationNodeTypes, -> = Extract; + out K extends OperationNodeTypes = OperationNodeTypes, +> = { + namespace: string; + opId: string; + op: DiagramOperation & { type: K }; +}; export type OperationNode = Node, K>; export type DiagramEditorNode = BuiltinNode | OperationNode; -import type { Edge as ReactFlowEdge } from '@xyflow/react'; - export type Edge< D extends Record, T extends EdgeTypes, diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index 2aaa49d0..ec6dc0eb 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -28,11 +28,11 @@ export function autoLayout( ): NodePositionChange[] { interface WorkingData { node: DiagramEditorNode; - nextIds: string[]; + outEdges: DiagramEditorEdge[]; } const map = new Map( - nodes.map((node) => [node.id, { node, nextIds: [] } as WorkingData]), + nodes.map((node) => [node.id, { node, outEdges: [] } as WorkingData]), ); const getWorkingData = (id: string) => { @@ -44,12 +44,12 @@ export function autoLayout( }; for (const edge of edges) { - const source = getWorkingData(edge.source); - source.nextIds.push(edge.target); + const data = getWorkingData(edge.source); + data.outEdges.push(edge); } const getNode = (id: string) => getWorkingData(id).node; - const getNextIds = (id: string) => getWorkingData(id).nextIds; + const getOutEdges = (id: string) => getWorkingData(id).outEdges; const rootNode = getNode(start); const rootPosition = { ...rootNode.position }; @@ -58,10 +58,10 @@ export function autoLayout( let maxX = rootNode.position.x; for (let ctx = fifo.shift(); ctx; ctx = fifo.shift()) { const { node, depth } = ctx; - const nextNodeIds = getNextIds(node.id); - let currentX = node.position.x - ((nextNodeIds.length - 1) * cellWidth) / 2; - for (const nextNodeId of nextNodeIds) { - const nextNode = getNode(nextNodeId); + const outEdges = getOutEdges(node.id); + let currentX = node.position.x - ((outEdges.length - 1) * cellWidth) / 2; + for (const edge of outEdges) { + const nextNode = getNode(edge.target); const position = { x: currentX, y: depth * cellHeight }; // If it is not in the initial position, that means that the node has multiple parents, // in that case, move it to the center of its parents. diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index 1f9001f0..0d994ea9 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -1,253 +1,435 @@ +import { v4 as uuidv4 } from 'uuid'; + +import { NodeManager } from '../node-manager'; import { TERMINATE_ID } from '../nodes'; -import type { Diagram, DiagramEditorEdge, DiagramOperation } from '../types'; -import { syncEdge } from './connection'; +import type { + Diagram, + DiagramEditorEdge, + DiagramEditorNode, + DiagramOperation, +} from '../types'; +import { loadDiagram } from './load-diagram'; + +function createNode(op: DiagramOperation): DiagramEditorNode { + return { + id: uuidv4(), + position: { x: 0, y: 0 }, + type: op.type, + data: { + op, + opId: uuidv4(), + namespace: '', + }, + }; +} describe('syncEdge', () => { - let diagram: Diagram; - let testOp1: DiagramOperation; - let edge: DiagramEditorEdge; + let nodes: DiagramEditorNode[]; beforeEach(() => { - testOp1 = { - type: 'node', - builder: 'testBuilder', - next: { builtin: 'dispose' }, - }; - diagram = { - start: 'testOp1', + const emptyDiagram = { + start: { builtin: 'dispose' }, version: '0.1.0', - ops: { - testOp1, - testOp2: { - type: 'node', - builder: 'testBuilder', - next: { builtin: 'terminate' }, - }, - }, - }; - edge = { + ops: {}, + } satisfies Diagram; + nodes = loadDiagram(emptyDiagram).nodes; + }); + + it('should throw an error if source is "terminate"', () => { + const edge: DiagramEditorEdge = { id: 'testEdge', - source: 'testOp1', - target: 'testOp2', + source: TERMINATE_ID, + target: TERMINATE_ID, type: 'default', data: {}, }; - }); - - it('should throw an error if source is "terminate"', () => { - edge.source = TERMINATE_ID; - expect(() => syncEdge(diagram, edge)).toThrow(); + const nodeManager = new NodeManager(nodes); + expect(() => nodeManager.syncEdge(edge)).toThrow(); }); // Test cases for 'node', 'join', 'serialized_join', 'transform', 'buffer_access', 'listen' - for (const type of [ - 'node', - 'join', - 'serialized_join', - 'transform', - 'buffer_access', - 'listen', - ] as DiagramOperation['type'][]) { - it(`should set next for "${type}" node type`, () => { - testOp1.type = type; - syncEdge(diagram, edge); - expect(testOp1.next).toBe('testOp2'); - syncEdge(diagram, edge); - expect(testOp1.next).toBe('testOp2'); + for (const op of [ + { + type: 'node', + builder: '', + next: { builtin: 'terminate' }, + }, + { + type: 'join', + buffers: [], + next: { builtin: 'terminate' }, + }, + { + type: 'serialized_join', + buffers: [], + next: { builtin: 'terminate' }, + }, + { + type: 'transform', + cel: '', + next: { builtin: 'terminate' }, + }, + { + type: 'buffer_access', + buffers: [], + next: { builtin: 'terminate' }, + }, + { + type: 'listen', + buffers: [], + next: { builtin: 'terminate' }, + }, + ] satisfies DiagramOperation[]) { + it(`should set next for "${op.type}"`, () => { + const node = createNode(op); + nodes.push(node); + const edge: DiagramEditorEdge = { + id: uuidv4(), + type: 'default', + source: node.id, + target: TERMINATE_ID, + data: {}, + }; + const nodeManager = new NodeManager(nodes); + nodeManager.syncEdge(edge); + expect(node.data.op.next).toEqual({ builtin: 'terminate' }); }); } describe('fork_clone', () => { + let forkCloneNode: DiagramEditorNode; + let forkCloneOp: DiagramOperation & { type: 'fork_clone' }; + let nodeManager: NodeManager; + beforeEach(() => { - testOp1 = { type: 'fork_clone', next: [] }; - diagram.ops.testOp1 = testOp1; + forkCloneOp = { + type: 'fork_clone', + next: [], + }; + forkCloneNode = createNode(forkCloneOp); + nodes.push(forkCloneNode); + + nodeManager = new NodeManager(nodes); }); it('should add target to next array if not present', () => { - syncEdge(diagram, edge); - expect(testOp1.next).toEqual(['testOp2']); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'default', + source: forkCloneNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(forkCloneOp.next).toEqual([{ builtin: 'terminate' }]); }); it('should not add target if already present', () => { - testOp1.next = ['testOp2']; - syncEdge(diagram, edge); - expect(testOp1.next).toEqual(['testOp2']); + forkCloneOp.next = [{ builtin: 'terminate' }]; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'default', + source: forkCloneNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(forkCloneOp.next).toEqual([{ builtin: 'terminate' }]); }); it('should add a different target', () => { - testOp1.next = ['node3']; - syncEdge(diagram, edge); - expect(testOp1.next).toEqual(['node3', 'testOp2']); + forkCloneOp.next = [{ builtin: 'dispose' }]; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'default', + source: forkCloneNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(forkCloneOp.next).toEqual([ + { builtin: 'dispose' }, + { builtin: 'terminate' }, + ]); }); it('should throw for other edge data types', () => { - edge.type = 'forkResultOk'; - expect(() => syncEdge(diagram, edge)).toThrow(); + expect(() => + nodeManager.syncEdge({ + id: uuidv4(), + type: 'forkResultOk', + source: forkCloneNode.id, + target: TERMINATE_ID, + data: {}, + }), + ).toThrow(); }); }); describe('unzip', () => { - let testOp1: Extract; + let unzipNode: DiagramEditorNode; + let unzipOp: DiagramOperation & { type: 'unzip' }; + let nodeManager: NodeManager; beforeEach(() => { - edge.type = 'unzip'; - testOp1 = { type: 'unzip', next: [] }; - diagram.ops.testOp1 = testOp1; + unzipOp = { + type: 'unzip', + next: [], + }; + unzipNode = createNode(unzipOp); + nodes.push(unzipNode); + + nodeManager = new NodeManager(nodes); }); it('should set target at specified sequence in next array for "unzip" edge data type', () => { - edge.data = { seq: 1 }; - syncEdge(diagram, edge); - expect(testOp1.next[1]).toBe('testOp2'); - expect(testOp1.next.length).toBe(2); // JS allows sparse arrays + nodeManager.syncEdge({ + id: uuidv4(), + type: 'unzip', + source: unzipNode.id, + target: TERMINATE_ID, + data: { seq: 1 }, + }); + expect(unzipOp.next[1]).toEqual({ builtin: 'terminate' }); }); it('should overwrite target at specified sequence', () => { - testOp1.next[1] = 'oldNode'; - edge.data = { seq: 1 }; - syncEdge(diagram, edge); - expect(testOp1.next[1]).toBe('testOp2'); + unzipOp.next[1] = 'oldNode'; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'unzip', + source: unzipNode.id, + target: TERMINATE_ID, + data: { seq: 1 }, + }); + expect(unzipOp.next[1]).toEqual({ builtin: 'terminate' }); }); it('should throw for other edge data types', () => { - edge.type = 'default'; - expect(() => syncEdge(diagram, edge)).toThrow(); + expect(() => + nodeManager.syncEdge({ + id: uuidv4(), + type: 'forkResultOk', + source: unzipNode.id, + target: TERMINATE_ID, + data: {}, + }), + ).toThrow(); }); }); describe('fork_result', () => { - let testOp1: Extract; + let forkResultNode: DiagramEditorNode; + let forkResultOp: DiagramOperation & { type: 'fork_result' }; + let nodeManager: NodeManager; beforeEach(() => { - testOp1 = { + forkResultOp = { type: 'fork_result', ok: { builtin: 'dispose' }, err: { builtin: 'dispose' }, }; - diagram.ops.testOp1 = testOp1; + forkResultNode = createNode(forkResultOp); + nodes.push(forkResultNode); + + nodeManager = new NodeManager(nodes); }); it('should set "ok" target for "ok" edge data type', () => { - edge.type = 'forkResultOk'; - syncEdge(diagram, edge); - expect(testOp1.ok).toBe('testOp2'); - expect(testOp1.err).toEqual({ builtin: 'dispose' }); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'forkResultOk', + source: forkResultNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(forkResultOp.ok).toEqual({ builtin: 'terminate' }); + expect(forkResultOp.err).toEqual({ builtin: 'dispose' }); }); it('should set "err" target for "err" edge data type', () => { - edge.type = 'forkResultErr'; - syncEdge(diagram, edge); - expect(testOp1.err).toBe('testOp2'); - expect(testOp1.ok).toEqual({ builtin: 'dispose' }); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'forkResultErr', + source: forkResultNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(forkResultOp.ok).toEqual({ builtin: 'dispose' }); + expect(forkResultOp.err).toEqual({ builtin: 'terminate' }); }); it('should throw error for other edge data types', () => { - edge.type = 'default'; - expect(() => syncEdge(diagram, edge)).toThrow(); + expect(() => + nodeManager.syncEdge({ + id: uuidv4(), + type: 'default', + source: forkResultNode.id, + target: TERMINATE_ID, + data: {}, + }), + ).toThrow(); }); }); describe('split', () => { - let testOp1: Extract; + let splitNode: DiagramEditorNode; + let splitOp: DiagramOperation & { type: 'split' }; + let nodeManager: NodeManager; beforeEach(() => { - testOp1 = { + splitOp = { type: 'split', }; - diagram.ops.testOp1 = testOp1; + splitNode = createNode(splitOp); + nodes.push(splitNode); + + nodeManager = new NodeManager(nodes); }); describe('splitKey', () => { - beforeEach(() => { - edge.type = 'splitKey'; - }); - it('should initialize keyed and set target for "splitKey" edge data type', () => { - edge.data = { key: 'myKey' }; - syncEdge(diagram, edge); - expect(testOp1.keyed).toEqual({ myKey: 'testOp2' }); - expect(testOp1.sequential).toBeUndefined(); - expect(testOp1.remaining).toBeUndefined(); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitKey', + source: splitNode.id, + target: TERMINATE_ID, + data: { key: 'testKey' }, + }); + expect(splitOp.keyed).toEqual({ testKey: { builtin: 'terminate' } }); + expect(splitOp.sequential).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); it('should add to existing keyed object for "splitKey"', () => { - testOp1.keyed = { existingKey: 'node0' }; - edge.data = { key: 'myKey' }; - syncEdge(diagram, edge); - expect(testOp1.keyed).toEqual({ - existingKey: 'node0', - myKey: 'testOp2', + splitOp.keyed = { existingKey: { builtin: 'terminate' } }; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitKey', + source: splitNode.id, + target: TERMINATE_ID, + data: { key: 'testKey' }, + }); + expect(splitOp.keyed).toEqual({ + existingKey: { builtin: 'terminate' }, + testKey: { builtin: 'terminate' }, }); + expect(splitOp.sequential).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); it('should overwrite existing key for "splitKey"', () => { - testOp1.keyed = { myKey: 'oldNode' }; - edge.data = { key: 'myKey' }; - syncEdge(diagram, edge); - expect(testOp1.keyed).toEqual({ myKey: 'testOp2' }); + splitOp.keyed = { testKey: { builtin: 'dispose' } }; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitKey', + source: splitNode.id, + target: TERMINATE_ID, + data: { key: 'testKey' }, + }); + expect(splitOp.keyed).toEqual({ + testKey: { builtin: 'terminate' }, + }); + expect(splitOp.sequential).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); }); describe('splitSeq', () => { - beforeEach(() => { - edge.type = 'splitSeq'; - }); - it('should initialize sequential and set target for "splitSequential" edge data type', () => { - edge.data = { seq: 0 }; - syncEdge(diagram, edge); - expect(testOp1.sequential?.[0]).toBe('testOp2'); - expect(testOp1.keyed).toBeUndefined(); - expect(testOp1.remaining).toBeUndefined(); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitSeq', + source: splitNode.id, + target: TERMINATE_ID, + data: { seq: 0 }, + }); + expect(splitOp.sequential?.[0]).toEqual({ builtin: 'terminate' }); + expect(splitOp.keyed).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); it('should add to existing sequential array for "splitSequential"', () => { - testOp1.sequential = ['node0']; - edge.data = { seq: 1 }; - syncEdge(diagram, edge); - expect(testOp1.sequential?.[0]).toBe('node0'); - expect(testOp1.sequential?.[1]).toBe('testOp2'); + splitOp.sequential = [{ builtin: 'terminate' }]; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitSeq', + source: splitNode.id, + target: TERMINATE_ID, + data: { seq: 1 }, + }); + expect(splitOp.sequential?.length).toBe(2); + expect(splitOp.sequential?.[0]).toEqual({ builtin: 'terminate' }); + expect(splitOp.sequential?.[1]).toEqual({ builtin: 'terminate' }); + expect(splitOp.keyed).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); it('should overwrite existing sequence for "splitSequential"', () => { - testOp1.sequential = ['node0', 'oldNode']; - edge.data = { seq: 1 }; - syncEdge(diagram, edge); - expect(testOp1.sequential?.[1]).toBe('testOp2'); + splitOp.sequential = [{ builtin: 'dispose' }]; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitSeq', + source: splitNode.id, + target: TERMINATE_ID, + data: { seq: 0 }, + }); + expect(splitOp.sequential?.[0]).toEqual({ builtin: 'terminate' }); + expect(splitOp.keyed).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); it('should handle non-sequential array indices for "splitSequential"', () => { - edge.data = { seq: 2 }; - syncEdge(diagram, edge); - expect(testOp1.sequential?.[2]).toBe('testOp2'); - expect(testOp1.sequential?.length).toBe(3); // JS allows sparse arrays + splitOp.sequential = []; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitSeq', + source: splitNode.id, + target: TERMINATE_ID, + data: { seq: 2 }, + }); + expect(splitOp.sequential?.[2]).toEqual({ builtin: 'terminate' }); + expect(splitOp.keyed).toBeUndefined(); + expect(splitOp.remaining).toBeUndefined(); }); }); describe('splitRemaining', () => { - beforeEach(() => { - edge.type = 'splitRemaining'; - }); - it('should set remaining target for "splitRemaining" edge data type', () => { - edge.type = 'splitRemaining'; - syncEdge(diagram, edge); - expect(testOp1.remaining).toBe('testOp2'); - expect(testOp1.keyed).toBeUndefined(); - expect(testOp1.sequential).toBeUndefined(); + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitRemaining', + source: splitNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(splitOp.remaining).toEqual({ builtin: 'terminate' }); + expect(splitOp.sequential).toBeUndefined(); + expect(splitOp.keyed).toBeUndefined(); }); it('should overwrite existing remaining target', () => { - testOp1.remaining = 'oldNode'; - edge.type = 'splitRemaining'; - syncEdge(diagram, edge); - expect(testOp1.remaining).toBe('testOp2'); + splitOp.remaining = { builtin: 'dispose' }; + nodeManager.syncEdge({ + id: uuidv4(), + type: 'splitRemaining', + source: splitNode.id, + target: TERMINATE_ID, + data: {}, + }); + expect(splitOp.remaining).toEqual({ builtin: 'terminate' }); + expect(splitOp.sequential).toBeUndefined(); + expect(splitOp.keyed).toBeUndefined(); }); }); it('should throw for other edge data types', () => { - edge.type = 'default'; - expect(() => syncEdge(diagram, edge)).toThrow(); + expect(() => + nodeManager.syncEdge({ + id: uuidv4(), + type: 'default', + source: splitNode.id, + target: TERMINATE_ID, + data: {}, + }), + ).toThrow(); }); }); }); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index b172a9d2..a2a9f1da 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,245 +1,4 @@ -import { START_ID, TERMINATE_ID } from '../nodes'; -import type { - BufferSelection, - Diagram, - DiagramEditorEdge, - DiagramEditorNode, - DiagramOperation, - EdgeTypes, - NodeTypes, - StreamOutEdge, -} from '../types'; -import { exhaustiveCheck } from './exhaustive-check'; -import { - isArrayBufferSelection, - isKeyedBufferSelection, - nextOperationToNodeId, - nodeIdToNextOperation, -} from './operation'; - -function syncStreamOut( - sourceOp: Extract, - edge: StreamOutEdge, -) { - sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; - sourceOp.stream_out[edge.data.name] = nodeIdToNextOperation(edge.target); -} - -/** - * Adds a connection to a node data. - * Nothing will be changed if the edge is invalid. But an error will be thrown if the source node is invalid. - * This is idempotent, if the connection exists, it will not do anything. - */ -export function syncEdge(diagram: Diagram, edge: DiagramEditorEdge): void { - if (edge.source === START_ID) { - diagram.start = edge.target; - return; - } - if (edge.source === TERMINATE_ID) { - throw new Error('source node cannot be "terminate"'); - } - - if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { - syncBufferSelection(diagram, edge); - return; - } - - const sourceOp = diagram.ops[edge.source]; - if (!sourceOp) { - throw new Error(`source operation "${edge.source}" not found`); - } - - switch (sourceOp.type) { - case 'node': { - if (edge.type === 'streamOut') { - syncStreamOut(sourceOp, edge); - } else if (edge.type === 'default') { - sourceOp.next = nodeIdToNextOperation(edge.target); - } - break; - } - case 'join': - case 'serialized_join': - case 'transform': - case 'buffer_access': - case 'listen': { - if (edge.type !== 'default') { - throw new Error('expected "default" edge'); - } - - sourceOp.next = nodeIdToNextOperation(edge.target); - break; - } - case 'section': { - throw new Error('TODO'); - } - case 'fork_clone': { - if (edge.type !== 'default') { - throw new Error('expected "default" edge'); - } - - const target = nodeIdToNextOperation(edge.target); - if ( - !sourceOp.next.some( - (next) => nextOperationToNodeId(next) === edge.target, - ) - ) { - sourceOp.next.push(target); - } - break; - } - case 'unzip': { - if (edge.type !== 'unzip') { - throw new Error('expected "unzip" edge'); - } - sourceOp.next[edge.data.seq] = nodeIdToNextOperation(edge.target); - break; - } - case 'fork_result': { - switch (edge.type) { - case 'forkResultOk': { - sourceOp.ok = nodeIdToNextOperation(edge.target); - break; - } - case 'forkResultErr': { - sourceOp.err = nodeIdToNextOperation(edge.target); - break; - } - default: { - throw new Error('fork_result operation must have "ok" or "err" edge'); - } - } - break; - } - case 'split': { - switch (edge.type) { - case 'splitKey': { - if (!sourceOp.keyed) { - sourceOp.keyed = {}; - } - sourceOp.keyed[edge.data.key] = nodeIdToNextOperation(edge.target); - break; - } - case 'splitSeq': { - if (!sourceOp.sequential) { - sourceOp.sequential = []; - } - // this works because js allows non-sequential arrays - sourceOp.sequential[edge.data.seq] = nodeIdToNextOperation( - edge.target, - ); - break; - } - case 'splitRemaining': { - sourceOp.remaining = nodeIdToNextOperation(edge.target); - break; - } - default: { - throw new Error( - 'split operation must have "SplitKey", "SplitSequential", or "SplitRemaining" edge', - ); - } - } - break; - } - case 'buffer': { - throw new Error('buffer operations cannot have connections'); - } - case 'scope': { - if (edge.type === 'streamOut') { - syncStreamOut(sourceOp, edge); - } else if (edge.type !== 'default') { - throw new Error('scope operation must have default or streamOut edge'); - } - sourceOp.next = nodeIdToNextOperation(edge.target); - break; - } - case 'stream_out': { - break; - } - default: { - exhaustiveCheck(sourceOp); - } - } -} - -function syncBufferSelection(diagram: Diagram, edge: DiagramEditorEdge) { - if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { - const targetOp = diagram.ops[edge.target]; - if (!targetOp) { - throw new Error(`target operation "${edge.target}" not found`); - } - const bufferSelection = getBufferSelection(targetOp); - - if ( - edge.type === 'bufferKey' && - Array.isArray(bufferSelection) && - bufferSelection.length === 0 - ) { - // the array is empty so it is safe to change it to a keyed buffer selection - setBufferSelection(targetOp, {}); - } else if ( - edge.type === 'bufferSeq' && - typeof bufferSelection === 'object' && - Object.keys(bufferSelection).length === 0 - ) { - // the dict is empty so it is safe to change it to an array of buffers - setBufferSelection(targetOp, []); - } - - // check that the buffer selection is compatible - if (edge.type === 'bufferSeq') { - if (!isArrayBufferSelection(bufferSelection)) { - throw new Error( - 'a sequential buffer edge must be assigned to an array of buffers', - ); - } - if (!bufferSelection.includes(edge.source)) { - bufferSelection[edge.data.seq] = edge.source; - } - } - if (edge.type === 'bufferKey') { - if (!isKeyedBufferSelection(bufferSelection)) { - throw new Error( - 'a keyed buffer edge must be assigned to a keyed buffer selection', - ); - } - bufferSelection[edge.data.key] = nodeIdToNextOperation(edge.source); - } - } -} - -function getBufferSelection(targetOp: DiagramOperation): BufferSelection { - switch (targetOp.type) { - case 'buffer_access': - case 'listen': - case 'join': - case 'serialized_join': { - return targetOp.buffers; - } - default: { - throw new Error(`"${targetOp.type}" operation does not accept a buffer`); - } - } -} - -function setBufferSelection( - targetOp: DiagramOperation, - bufferSelection: BufferSelection, -): void { - switch (targetOp.type) { - case 'buffer_access': - case 'listen': - case 'join': - case 'serialized_join': { - targetOp.buffers = bufferSelection; - break; - } - default: { - throw new Error(`"${targetOp.type}" operation does not accept a buffer`); - } - } -} +import type { DiagramEditorNode, EdgeTypes, NodeTypes } from '../types'; const ALLOWED_OUTPUT_EDGES: Record> = { buffer: new Set(['bufferKey', 'bufferSeq']), diff --git a/diagram-editor/frontend/utils/export-diagram.test.ts b/diagram-editor/frontend/utils/export-diagram.test.ts index a554c0b0..4cbd056b 100644 --- a/diagram-editor/frontend/utils/export-diagram.test.ts +++ b/diagram-editor/frontend/utils/export-diagram.test.ts @@ -1,9 +1,10 @@ +import { NodeManager } from '../node-manager'; import { exportDiagram } from './export-diagram'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; test('export diagram', () => { const { nodes, edges } = loadDiagramJson(JSON.stringify(testDiagram)); - const diagram = exportDiagram(nodes, edges); + const diagram = exportDiagram(new NodeManager(nodes), edges); expect(diagram).toEqual(testDiagram); }); diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index 29d459ce..bda1bdd2 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -1,9 +1,10 @@ -import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; +import type { NodeManager } from '../node-manager'; +import { START_ID } from '../nodes'; +import type { Diagram, DiagramEditorEdge } from '../types'; import { isOperationNode } from '../utils'; -import { syncEdge } from './connection'; export function exportDiagram( - nodes: DiagramEditorNode[], + nodeManager: NodeManager, edges: DiagramEditorEdge[], ): Diagram { const diagram: Diagram = { @@ -14,14 +15,17 @@ export function exportDiagram( ops: {}, }; - for (const node of nodes) { + for (const node of nodeManager.nodes) { if (isOperationNode(node)) { - diagram.ops[node.id] = node.data; + diagram.ops[node.data.opId] = node.data.op; } } for (const edge of edges) { - syncEdge(diagram, edge); + if (edge.source === START_ID) { + diagram.start = nodeManager.getNode(edge.target).data.opId; + } + nodeManager.syncEdge(edge); } return diagram; diff --git a/diagram-editor/frontend/utils/load-diagram.test.ts b/diagram-editor/frontend/utils/load-diagram.test.ts index a78131da..cae986e8 100644 --- a/diagram-editor/frontend/utils/load-diagram.test.ts +++ b/diagram-editor/frontend/utils/load-diagram.test.ts @@ -1,5 +1,6 @@ import { applyNodeChanges } from '@xyflow/react'; -import { START_ID } from '../nodes'; +import { NodeManager } from '../node-manager'; +import { START_ID, TERMINATE_ID } from '../nodes'; import { autoLayout } from './auto-layout'; import { loadDiagramJson } from './load-diagram'; import testDiagram from './test-data/test-diagram.json'; @@ -12,44 +13,44 @@ test('load diagram json and auto layout', () => { ); expect(nodes.length).toBe(8); expect(graph.edges.length).toBe(8); - const map = new Map(nodes.map((node) => [node.id, node])); + const nodeManager = new NodeManager(nodes); - const start = map.get('builtin:start'); + const start = nodeManager.getNode(START_ID); expect(start).toBeDefined(); expect(start!.position).toStrictEqual({ x: 0, y: 0 }); - const forkClone = map.get('fork_clone'); - expect(forkClone!.data).toMatchObject(testDiagram.ops.fork_clone); + const forkClone = nodeManager.getNodeFromRootOpId('fork_clone'); + expect(forkClone!.data.op).toMatchObject(testDiagram.ops.fork_clone); expect(forkClone!.position.x).toBe(start!.position.x); expect(forkClone!.position.y).toBeGreaterThan(start!.position.y); - const mul3 = map.get('mul3'); - expect(mul3!.data).toMatchObject(testDiagram.ops.mul3); + const mul3 = nodeManager.getNodeFromRootOpId('mul3'); + expect(mul3!.data.op).toMatchObject(testDiagram.ops.mul3); expect(mul3!.position.x).toBeLessThan(forkClone!.position.x); expect(mul3!.position.y).toBeGreaterThan(forkClone!.position.y); - const mul3Buffer = map.get('mul3_buffer'); - expect(mul3Buffer!.data).toMatchObject(testDiagram.ops.mul3_buffer); + const mul3Buffer = nodeManager.getNodeFromRootOpId('mul3_buffer'); + expect(mul3Buffer!.data.op).toMatchObject(testDiagram.ops.mul3_buffer); expect(mul3Buffer!.position.x).toBe(mul3!.position.x); expect(mul3Buffer!.position.y).toBeGreaterThan(mul3!.position.y); - const mul4 = map.get('mul4'); - expect(mul4!.data).toMatchObject(testDiagram.ops.mul4); + const mul4 = nodeManager.getNodeFromRootOpId('mul4'); + expect(mul4!.data.op).toMatchObject(testDiagram.ops.mul4); expect(mul4!.position.x).toBeGreaterThan(forkClone!.position.x); expect(mul4!.position.y).toBeGreaterThan(forkClone!.position.y); - const mul4Buffer = map.get('mul4_buffer'); - expect(mul4Buffer!.data).toMatchObject(testDiagram.ops.mul4_buffer); + const mul4Buffer = nodeManager.getNodeFromRootOpId('mul4_buffer'); + expect(mul4Buffer!.data.op).toMatchObject(testDiagram.ops.mul4_buffer); expect(mul4Buffer!.position.x).toBe(mul4!.position.x); expect(mul4Buffer!.position.y).toBeGreaterThan(mul4!.position.y); - const join = map.get('join'); - expect(join!.data).toMatchObject(testDiagram.ops.join); + const join = nodeManager.getNodeFromRootOpId('join'); + expect(join!.data.op).toMatchObject(testDiagram.ops.join); expect(join!.position.x).toBeGreaterThan(mul3Buffer!.position.x); expect(join!.position.x).toBeLessThan(mul4Buffer!.position.x); expect(join!.position.y).toBeGreaterThan(mul4Buffer!.position.y); - const terminate = map.get('builtin:terminate'); + const terminate = nodeManager.getNode(TERMINATE_ID); expect(terminate).toBeDefined(); expect(terminate!.position.x).toBe(join!.position.x); expect(terminate!.position.y).toBeGreaterThan(join!.position.y); diff --git a/diagram-editor/frontend/utils/load-diagram.ts b/diagram-editor/frontend/utils/load-diagram.ts index 59750dd9..bb51a024 100644 --- a/diagram-editor/frontend/utils/load-diagram.ts +++ b/diagram-editor/frontend/utils/load-diagram.ts @@ -1,16 +1,22 @@ import addFormats from 'ajv-formats'; import Ajv from 'ajv/dist/2020'; +import { v4 as uuidv4 } from 'uuid'; import diagramSchema from '../diagram.preprocessed.schema.json'; import { START_ID, TERMINATE_ID } from '../nodes'; import type { Diagram, DiagramEditorEdge, DiagramEditorNode } from '../types'; -import { buildEdges, nextOperationToNodeId } from './operation'; +import { buildEdges } from './operation'; export interface Graph { nodes: DiagramEditorNode[]; edges: DiagramEditorEdge[]; } +export function loadDiagram(diagram: Diagram): Graph { + const graph = buildGraph(diagram); + return graph; +} + export function loadDiagramJson(jsonStr: string): Graph { const diagram = JSON.parse(jsonStr); const valid = validate(diagram); @@ -18,8 +24,7 @@ export function loadDiagramJson(jsonStr: string): Graph { throw validate.errors; } - const graph = buildGraph(diagram); - return graph; + return loadDiagram(diagram); } export function loadEmpty(): Graph { @@ -51,27 +56,26 @@ function buildGraph(diagram: Diagram): Graph { ...Object.entries(diagram.ops).map( ([opId, op]) => ({ - id: opId, + id: uuidv4(), type: op.type, position: { x: 0, y: 0 }, - data: op, + // TODO: Support sections + data: { namespace: '', opId, op }, }) satisfies DiagramEditorNode, ), ); const edges = graph.edges; - const startNodeId = nextOperationToNodeId(diagram.start); - if (startNodeId) { + const startNode = nodes.find((n) => n.data.opId === diagram.start); + if (startNode) { edges.push({ - id: `${START_ID}->${startNodeId}`, + id: uuidv4(), type: 'default', source: START_ID, - target: startNodeId, + target: startNode.id, data: {}, }); } - for (const [opId, op] of Object.entries(diagram.ops)) { - edges.push(...buildEdges(op, opId)); - } + edges.push(...buildEdges(diagram, graph.nodes)); return graph; } diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index 4e4b7946..025f1aa8 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -1,47 +1,18 @@ +import { v4 as uuidv4 } from 'uuid'; + +import { NodeManager } from '../node-manager'; import type { BufferSelection, BuiltinTarget, + Diagram, DiagramEditorEdge, DiagramEditorNode, DiagramOperation, NextOperation, OperationNode, - OperationNodeData, } from '../types'; import { exhaustiveCheck } from './exhaustive-check'; -/** - * Encodes a `NextOperation` into a node id for react flow. - * Returns `null` if the operation is "dispose". - */ -export function nextOperationToNodeId(next: NextOperation): string | null { - if (typeof next === 'string') { - return next; - } - if (isBuiltin(next)) { - if (next.builtin === 'dispose') { - return null; - } - return `builtin:${next.builtin}`; - } - const [namespace, opId] = Object.entries(next)[0]; - return `${namespace}:${opId}`; -} - -/** - * Decodes a node id from react flow to a `NextOperation`. - */ -export function nodeIdToNextOperation(nodeId: string): NextOperation { - if (nodeId.startsWith('builtin:')) { - return { builtin: nodeId.slice('builtin:'.length) }; - } - if (nodeId.includes(':')) { - const parts = nodeId.split(':', 2); - return { [parts[0]]: parts[1] }; - } - return nodeId; -} - export function isKeyedBufferSelection( bufferSelection: BufferSelection, ): bufferSelection is Record { @@ -54,265 +25,276 @@ export function isArrayBufferSelection( return Array.isArray(bufferSelection); } -type StreamOutSupportedOperation = Extract< - DiagramOperation, - { type: 'node' | 'scope' } ->; +function createStreamOutEdges( + streamOuts: Record, + node: DiagramEditorNode, + nodeManager: NodeManager, +): DiagramEditorEdge[] { + const edges: DiagramEditorEdge[] = []; + for (const nextOp of Object.values(streamOuts)) { + const target = nodeManager.getNodeFromNextOp(node, nextOp)?.id; + if (target) { + edges.push({ + id: uuidv4(), + type: 'default', + source: node.id, + target, + data: {}, + }); + } + } + return edges; +} -function syncStreamOut(op: StreamOutSupportedOperation, opId: string) { +function createBufferEdges( + node: DiagramEditorNode, + buffers: BufferSelection, + nodeManager: NodeManager, +): DiagramEditorEdge[] { const edges: DiagramEditorEdge[] = []; - if (op.stream_out) { - for (const streamOut of Object.values(op.stream_out)) { - const target = nextOperationToNodeId(streamOut); - if (target) { + if (isArrayBufferSelection(buffers)) { + for (const [idx, buffer] of buffers.entries()) { + const source = nodeManager.getNodeFromNextOp(node, buffer)?.id; + if (source) { edges.push({ - id: `${opId}->${target}`, - type: 'default', - source: opId, - target, - data: {}, + id: uuidv4(), + type: 'bufferSeq', + source, + target: node.id, + data: { seq: idx }, }); } } + } else if (isKeyedBufferSelection(buffers)) { + for (const [key, buffer] of Object.entries(buffers)) { + const source = nodeManager.getNodeFromNextOp(node, buffer)?.id; + if (source) { + edges.push({ + id: uuidv4(), + type: 'bufferKey', + source, + target: node.id, + data: { key }, + }); + } + } + } else { + const source = nodeManager.getNodeFromNextOp(node, buffers)?.id; + if (source) { + edges.push({ + id: uuidv4(), + type: 'bufferSeq', + source, + target: node.id, + data: { seq: 0 }, + }); + } } + return edges; } export function buildEdges( - op: DiagramOperation, - opId: string, + diagram: Diagram, + nodes: DiagramEditorNode[], ): DiagramEditorEdge[] { - switch (op.type) { - case 'buffer': { - return []; - } - case 'buffer_access': - case 'join': - case 'serialized_join': - case 'listen': { - const edges: DiagramEditorEdge[] = []; - if (isArrayBufferSelection(op.buffers)) { - for (const [idx, buffer] of op.buffers.entries()) { - const source = nextOperationToNodeId(buffer); - if (source) { - edges.push({ - id: `${source}->${opId}-${idx}`, - type: 'bufferSeq', - source, - target: opId, - data: { seq: idx }, - }); - } - } - } else if (isKeyedBufferSelection(op.buffers)) { - for (const [key, buffer] of Object.entries(op.buffers)) { - const source = nextOperationToNodeId(buffer); - if (source) { - edges.push({ - id: `${source}->${opId}-${key}`, - type: 'bufferKey', - source, - target: opId, - data: { key }, - }); - } - } - } else { - const source = nextOperationToNodeId(op.buffers); - if (source) { + const edges: DiagramEditorEdge[] = []; + const nodeManager = new NodeManager(nodes); + for (const [opId, op] of Object.entries(diagram.ops)) { + const node = nodeManager.getNodeFromRootOpId(opId); + + switch (op.type) { + case 'buffer': { + break; + } + case 'buffer_access': + case 'join': + case 'serialized_join': + case 'listen': { + edges.push(...createBufferEdges(node, op.buffers, nodeManager)); + + const nextNodeId = nodeManager.getNodeFromNextOp(node, op.next)?.id; + if (nextNodeId) { edges.push({ - id: `${source}->${opId}-0`, - type: 'bufferSeq', - source, - target: opId, - data: { seq: 0 }, + id: uuidv4(), + type: 'default', + source: node.id, + target: nextNodeId, + data: {}, }); } - } - const target = nextOperationToNodeId(op.next); - if (target) { - edges.push({ - id: `${opId}->${target}`, - type: 'default', - source: opId, - target, - data: {}, - }); + break; } - - return edges; - } - case 'node': { - const edges: DiagramEditorEdge[] = []; - const target = nextOperationToNodeId(op.next); - if (target) { - edges.push({ - id: `${opId}->${target}`, - type: 'default', - source: opId, - target, - data: {}, - }); - } - edges.push(...syncStreamOut(op, opId)); - return edges; - } - case 'transform': { - const target = nextOperationToNodeId(op.next); - return target - ? [ - { - id: `${opId}->${target}`, - type: 'default', - source: opId, - target, - data: {}, - }, - ] - : []; - } - case 'fork_clone': { - const edges: DiagramEditorEdge[] = []; - for (const [idx, next] of op.next.entries()) { - const target = nextOperationToNodeId(next); + case 'node': { + const target = nodeManager.getNodeFromNextOp(node, op.next)?.id; if (target) { edges.push({ - id: `${opId}->${target}-${idx}`, + id: uuidv4(), type: 'default', - source: opId, + source: node.id, target, data: {}, }); } + if (op.stream_out) { + edges.push(...createStreamOutEdges(op.stream_out, node, nodeManager)); + } + break; } - return edges; - } - case 'unzip': { - const edges: DiagramEditorEdge[] = []; - for (const [idx, next] of op.next.entries()) { - const target = nextOperationToNodeId(next); + case 'transform': { + const target = nodeManager.getNodeFromNextOp(node, op.next)?.id; if (target) { edges.push({ - id: `${opId}->${target}-${idx}`, - type: 'unzip', - source: opId, + id: uuidv4(), + type: 'default', + source: node.id, target, - data: { seq: idx }, + data: {}, }); } + break; } - return edges; - } - case 'fork_result': { - const okTarget = nextOperationToNodeId(op.ok); - const errTarget = nextOperationToNodeId(op.err); - const edges: DiagramEditorEdge[] = []; - if (okTarget) { - edges.push({ - id: `${opId}->${okTarget}-ok`, - type: 'forkResultOk', - source: opId, - target: okTarget, - data: {}, - }); - } - if (errTarget) { - edges.push({ - id: `${opId}->${errTarget}-err`, - type: 'forkResultErr', - source: opId, - target: errTarget, - data: {}, - }); - } - return edges; - } - case 'split': { - const edges: DiagramEditorEdge[] = []; - if (op.keyed) { - for (const [key, next] of Object.entries(op.keyed)) { - const target = nextOperationToNodeId(next); + case 'fork_clone': { + for (const next of op.next.values()) { + const target = nodeManager.getNodeFromNextOp(node, next)?.id; if (target) { edges.push({ - id: `${opId}->${target}-${key}`, - type: 'splitKey', - source: opId, + id: uuidv4(), + type: 'default', + source: node.id, target, - data: { key }, + data: {}, }); } } + break; } - if (op.sequential) { - for (const [idx, next] of op.sequential.entries()) { - const target = nextOperationToNodeId(next); + case 'unzip': { + for (const [idx, next] of op.next.entries()) { + const target = nodeManager.getNodeFromNextOp(node, next)?.id; if (target) { edges.push({ - id: `${opId}->${target}-${idx}`, - type: 'splitSeq', - source: opId, + id: uuidv4(), + type: 'unzip', + source: node.id, target, data: { seq: idx }, }); } } + break; } - if (op.remaining) { - const target = nextOperationToNodeId(op.remaining); - if (target) { + case 'fork_result': { + const okTarget = nodeManager.getNodeFromNextOp(node, op.ok)?.id; + const errTarget = nodeManager.getNodeFromNextOp(node, op.err)?.id; + if (okTarget) { edges.push({ - id: `${opId}->${target}-remaining`, - type: 'splitRemaining', - source: opId, - target, + id: uuidv4(), + type: 'forkResultOk', + source: node.id, + target: okTarget, data: {}, }); } + if (errTarget) { + edges.push({ + id: uuidv4(), + type: 'forkResultErr', + source: node.id, + target: errTarget, + data: {}, + }); + } + break; } - return edges; - } - case 'section': { - const edges: DiagramEditorEdge[] = []; - if (op.connect) { - for (const next of Object.values(op.connect)) { - const target = nextOperationToNodeId(next); + case 'split': { + if (op.keyed) { + for (const [key, next] of Object.entries(op.keyed)) { + const target = nodeManager.getNodeFromNextOp(node, next)?.id; + if (target) { + edges.push({ + id: uuidv4(), + type: 'splitKey', + source: node.id, + target, + data: { key }, + }); + } + } + } + if (op.sequential) { + for (const [idx, next] of op.sequential.entries()) { + const target = nodeManager.getNodeFromNextOp(node, next)?.id; + if (target) { + edges.push({ + id: uuidv4(), + type: 'splitSeq', + source: node.id, + target, + data: { seq: idx }, + }); + } + } + } + if (op.remaining) { + const target = nodeManager.getNodeFromNextOp(node, op.remaining)?.id; if (target) { edges.push({ - id: `${opId}->${target}`, - type: 'default', - source: opId, + id: uuidv4(), + type: 'splitRemaining', + source: node.id, target, data: {}, }); } } + break; } - return edges; - } - case 'scope': { - const edges: DiagramEditorEdge[] = []; - const target = nextOperationToNodeId(op.next); - if (target) { - edges.push({ - id: `${opId}->${target}`, - type: 'default', - source: opId, - target, - data: {}, - }); + case 'section': { + if (op.connect) { + for (const next of Object.values(op.connect)) { + const target = nodeManager.getNodeFromNextOp(node, next)?.id; + if (target) { + edges.push({ + id: uuidv4(), + type: 'default', + source: node.id, + target, + data: {}, + }); + } + } + } + break; + } + case 'scope': { + const target = nodeManager.getNodeFromNextOp(node, op.next)?.id; + if (target) { + edges.push({ + id: uuidv4(), + type: 'default', + source: node.id, + target, + data: {}, + }); + } + if (op.stream_out) { + edges.push(...createStreamOutEdges(op.stream_out, node, nodeManager)); + } + break; + } + case 'stream_out': { + break; + } + default: { + exhaustiveCheck(op); + throw new Error('unknown op'); } - edges.push(...syncStreamOut(op, opId)); - return edges; - } - case 'stream_out': { - return []; - } - default: { - exhaustiveCheck(op); - throw new Error('unknown op'); } } + + return edges; } export function isBuiltin( @@ -321,14 +303,20 @@ export function isBuiltin( return typeof next === 'object' && 'builtin' in next; } +export function isBuiltinNode(node: DiagramEditorNode) { + return ['start', 'terminate'].includes(node.type); +} + export function isOperationNode( node: DiagramEditorNode, ): node is OperationNode { - return !node.id.startsWith('builtin:'); + return !['start', 'terminate'].includes(node.type); } export function isSectionBuilder( - nodeData: OperationNodeData<'section'>, -): nodeData is OperationNodeData<'section'> & { builder: string } { + nodeData: Extract, +): nodeData is Extract & { + builder: string; +} { return 'builder' in nodeData; } diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 162ab6ca..9378113f 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -23,6 +23,7 @@ "@xyflow/react": "^12.6.1", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", "fflate": "^0.8.2", "react": "^19.1.0", "react-dom": "^19.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9dc3b278..b534a223 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: ajv-formats: specifier: ^3.0.1 version: 3.0.1(ajv@8.17.1) + fast-deep-equal: + specifier: ^3.1.3 + version: 3.1.3 fflate: specifier: ^0.8.2 version: 0.8.2 From 78fa3efc9e834dc495328f38006276cf2fa25703 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 25 Jun 2025 05:57:01 +0000 Subject: [PATCH 061/165] update deps Signed-off-by: Teo Koon Peng --- biome.json | 18 +- diagram-editor/frontend/app.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 18 +- .../frontend/forms/edit-edge-form.tsx | 6 +- .../frontend/nodes/terminate-node.tsx | 5 +- diagram-editor/frontend/utils/load-diagram.ts | 2 +- diagram-editor/package.json | 3 +- diagram-editor/scripts/generate-types.mjs | 1 - package.json | 3 +- pnpm-lock.yaml | 525 ++++++++++++++---- 10 files changed, 458 insertions(+), 125 deletions(-) diff --git a/biome.json b/biome.json index ed1155f9..1f0dfe95 100644 --- a/biome.json +++ b/biome.json @@ -1,12 +1,16 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json", "files": { - "include": ["*.tsx", "*.ts", "*.mjs", "*.cjs", "*.json"], - "ignore": ["*.schema.json"] - }, - "organizeImports": { - "enabled": true + "includes": [ + "**/*.tsx", + "**/*.ts", + "**/*.mjs", + "**/*.cjs", + "**/*.json", + "!**/*.schema.json" + ] }, + "assist": { "actions": { "source": { "organizeImports": "on" } } }, "vcs": { "enabled": true, "clientKind": "git", @@ -33,7 +37,7 @@ }, "overrides": [ { - "include": ["*.test.ts", "*.test.tsx"], + "includes": ["**/*.test.ts", "**/*.test.tsx"], "linter": { "rules": { "style": { diff --git a/diagram-editor/frontend/app.tsx b/diagram-editor/frontend/app.tsx index 42cd9bc7..8062d047 100644 --- a/diagram-editor/frontend/app.tsx +++ b/diagram-editor/frontend/app.tsx @@ -3,7 +3,7 @@ import '@fontsource/roboto/400.css'; import '@fontsource/roboto/500.css'; import '@fontsource/roboto/700.css'; import '@xyflow/react/dist/style.css'; -import { CssBaseline, ThemeProvider, createTheme } from '@mui/material'; +import { CssBaseline, createTheme, ThemeProvider } from '@mui/material'; import './app.css'; import DiagramEditor from './diagram-editor'; diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 7fd447f3..d3edbb98 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -9,17 +9,17 @@ import { type PopoverPosition, type PopoverProps, Snackbar, - Tooltip, styled, + Tooltip, } from '@mui/material'; import { + addEdge, + applyEdgeChanges, + applyNodeChanges, type EdgeRemoveChange, Panel, ReactFlow, type ReactFlowInstance, - addEdge, - applyEdgeChanges, - applyNodeChanges, reconnectEdge, } from '@xyflow/react'; import { inflateSync, strFromU8 } from 'fflate'; @@ -27,7 +27,7 @@ import React, { useEffect } from 'react'; import AddOperation from './add-operation'; import { EDGE_TYPES } from './edges'; import ExportDiagramDialog from './export-diagram-dialog'; -import { EditEdgeForm, EditNodeForm, defaultEdgeData } from './forms'; +import { defaultEdgeData, EditEdgeForm, EditNodeForm } from './forms'; import { NodeManager } from './node-manager'; import { NODE_TYPES, START_ID } from './nodes'; import type { @@ -53,7 +53,9 @@ const VisuallyHiddenInput = styled('input')({ const NonCapturingPopoverContainer = ({ children, -}: { children: React.ReactNode }) => <>{children}; +}: { + children: React.ReactNode; +}) => <>{children}; interface SelectedEdge { sourceNode: DiagramEditorNode; @@ -189,7 +191,7 @@ const DiagramEditor = () => { React.useState(false); const handleMouseDown = React.useCallback(() => { - mouseDownTime.current = new Date().getTime(); + mouseDownTime.current = Date.now(); }, []); return ( @@ -283,7 +285,7 @@ const DiagramEditor = () => { } // filter out erroneous click after connecting an edge - const now = new Date().getTime(); + const now = Date.now(); if (now - mouseDownTime.current > 200) { return; } diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index db4311c5..73452dd2 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -90,6 +90,8 @@ function EditEdgeForm({ } }, [edge, onChange]); + const typeLabelId = React.useId(); + return ( - Type + Type + Index + Key + + + {edge.data.input === undefined || + (edge.data.input?.type === 'bufferSeq' && ( + + ))} + {edge.data.input?.type === 'bufferKey' && ( - )} - {edge.type === 'bufferSeq' && ( - @@ -54,5 +84,3 @@ function BufferEdgeForm({ edge, onChange }: BufferEdgeFormProps) { ); } - -export default BufferEdgeForm; diff --git a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx index 4abf8d74..7007756f 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx @@ -32,12 +32,16 @@ export const BufferEdge: Story = { id: 'edge-1', source: 'a', target: 'b', - type: 'bufferKey', + type: 'buffer', data: { - key: 'testKey', + output: {}, + input: { + type: 'bufferKey', + key: 'testKey', + }, }, }, - allowedEdgeTypes: ['bufferKey', 'bufferSeq'], + allowedEdgeTypes: ['buffer'], }, render, }; @@ -64,7 +68,9 @@ export const SplitKey: Story = { target: 'b', type: 'splitKey', data: { - key: 'splitTestKey', + output: { + key: 'splitTestKey', + }, }, }, allowedEdgeTypes: ['splitKey', 'splitSeq', 'splitRemaining'], @@ -80,7 +86,9 @@ export const Unzip: Story = { target: 'b', type: 'unzip', data: { - seq: 3, + output: { + seq: 3, + }, }, }, allowedEdgeTypes: ['unzip'], @@ -95,7 +103,7 @@ export const Default: Story = { source: 'a', target: 'b', type: 'default', - data: {}, + data: { output: {} }, }, allowedEdgeTypes: ['default'], }, diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index 4d26e278..74469058 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -12,19 +12,19 @@ import { import type { EdgeChange, EdgeRemoveChange } from '@xyflow/react'; import React from 'react'; import type { + BufferEdge, DiagramEditorEdge, - EdgeData, + EdgeOutputData, EdgeTypes, UnzipEdge, } from '../edges'; import { MaterialSymbol } from '../nodes'; -import BufferEdgeForm, { type BufferEdge } from './buffer-edge-form'; +import { BufferEdgeInputForm } from './buffer-edge-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; import UnzipEdgeForm from './unzip-edge-form'; const EDGE_TYPES_NAME = { - bufferKey: 'Key', - bufferSeq: 'Sequence', + buffer: 'Buffer', default: 'Data', forkResultErr: 'Error', forkResultOk: 'Ok', @@ -33,12 +33,12 @@ const EDGE_TYPES_NAME = { splitSeq: 'Sequence', streamOut: 'Stream Out', unzip: 'Unzip', + // section: 'Section', } satisfies Record; const EDGE_DEFAULT_DATA = { default: {}, - bufferKey: { key: '' }, - bufferSeq: { seq: 0 }, + buffer: {}, forkResultOk: {}, forkResultErr: {}, splitKey: { key: '' }, @@ -46,9 +46,12 @@ const EDGE_DEFAULT_DATA = { splitRemaining: {}, streamOut: { name: '' }, unzip: { seq: 0 }, -} satisfies Record>; + // section: { output: '' }, +} satisfies Record; -export function defaultEdgeData(type: EdgeTypes): EdgeData { +export function defaultEdgeOutputData( + type: EdgeTypes, +): EdgeOutputData { return { ...EDGE_DEFAULT_DATA[type] }; } @@ -67,9 +70,10 @@ function EditEdgeForm({ }: EditEdgeFormProps) { const subForm = React.useMemo(() => { switch (edge.type) { - case 'bufferKey': - case 'bufferSeq': { - return ; + case 'buffer': { + return ( + + ); } case 'forkResultOk': case 'forkResultErr': { @@ -113,9 +117,14 @@ function EditEdgeForm({ label="Type" value={edge.type} onChange={(ev) => { - const newEdge = { ...edge }; + const newEdge: DiagramEditorEdge = { + ...edge, + }; newEdge.type = ev.target.value; - newEdge.data = defaultEdgeData(newEdge.type); + newEdge.data = { + ...edge.data, + output: { ...defaultEdgeOutputData(newEdge.type) }, + }; onChange?.({ type: 'replace', id: edge.id, @@ -130,7 +139,6 @@ function EditEdgeForm({ ))} - {subForm} diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index 57a45bb3..d1493de3 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -18,7 +18,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { onChange?.({ type: 'replace', id: edge.id, - item: { ...edge, data: { key: newKey } }, + item: { ...edge, data: { ...edge.data, output: { key: newKey } } }, }); } else if (edge.type === 'splitSeq') { const newSeq = Number.parseInt(event.target.value, 10); @@ -26,7 +26,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { onChange?.({ type: 'replace', id: edge.id, - item: { ...edge, data: { seq: newSeq } }, + item: { ...edge, data: { ...edge.data, output: { seq: newSeq } } }, }); } } diff --git a/diagram-editor/frontend/node-manager.ts b/diagram-editor/frontend/node-manager.ts index ffc9b908..4bc13a4a 100644 --- a/diagram-editor/frontend/node-manager.ts +++ b/diagram-editor/frontend/node-manager.ts @@ -107,8 +107,7 @@ export class NodeManager { getTargetNextOp(edge: DiagramEditorEdge): NextOperation { // TODO: Validate that the edge does not traverse namespaces switch (edge.type) { - case 'bufferKey': - case 'bufferSeq': + case 'buffer': case 'default': case 'forkResultOk': case 'forkResultErr': diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index 4526dea2..e83b89a5 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -1,6 +1,5 @@ import { - createBufferKeyEdge, - createBufferSeqEdge, + createBufferEdge, createDefaultEdge, createForkResultErrEdge, createForkResultOkEdge, @@ -104,7 +103,8 @@ describe('validate edges', () => { } { - const edge = createBufferSeqEdge(buffer.id, join.id, { + const edge = createBufferEdge(buffer.id, join.id, { + type: 'bufferSeq', seq: 0, }); const reactFlow = new MockReactFlowAccessor([buffer, join], [edge]); @@ -113,7 +113,8 @@ describe('validate edges', () => { } { - const edge = createBufferKeyEdge(buffer.id, join.id, { + const edge = createBufferEdge(buffer.id, join.id, { + type: 'bufferKey', key: 'test', }); const reactFlow = new MockReactFlowAccessor([buffer, join], [edge]); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 7ee6ed3f..7bb2ba0b 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -10,8 +10,7 @@ enum EdgeCategory { } const EDGE_CATEGORIES: Record = { - bufferKey: EdgeCategory.Buffer, - bufferSeq: EdgeCategory.Buffer, + buffer: EdgeCategory.Buffer, forkResultOk: EdgeCategory.Data, forkResultErr: EdgeCategory.Data, splitKey: EdgeCategory.Data, @@ -20,10 +19,11 @@ const EDGE_CATEGORIES: Record = { default: EdgeCategory.Data, streamOut: EdgeCategory.Stream, unzip: EdgeCategory.Data, + // section: EdgeCategory.Data, }; const ALLOWED_OUTPUT_EDGES: Record = { - buffer: ['bufferKey', 'bufferSeq'], + buffer: ['buffer', 'buffer'], buffer_access: ['default'], fork_clone: ['default'], fork_result: ['forkResultOk', 'forkResultErr'], @@ -34,7 +34,7 @@ const ALLOWED_OUTPUT_EDGES: Record = { section: ['default'], sectionInput: ['default'], sectionOutput: [], - sectionBuffer: ['bufferKey', 'bufferSeq'], + sectionBuffer: ['buffer'], serialized_join: ['default'], split: ['splitKey', 'splitSeq', 'splitRemaining'], start: ['default'], diff --git a/diagram-editor/frontend/utils/export-diagram.test.ts b/diagram-editor/frontend/utils/export-diagram.test.ts index 47ab59c0..a58d60bb 100644 --- a/diagram-editor/frontend/utils/export-diagram.test.ts +++ b/diagram-editor/frontend/utils/export-diagram.test.ts @@ -83,21 +83,21 @@ test('export diagram with templates', () => { type: 'default', source: nodes[0].id, target: nodes[3].id, - data: {}, + data: { output: {} }, }, { id: uuidv4(), type: 'default', source: nodes[2].id, target: nodes[4].id, - data: {}, + data: { output: {} }, }, { id: uuidv4(), type: 'default', source: nodes[3].id, target: nodes[1].id, - data: {}, + data: { output: {} }, }, ]; const template = exportTemplate(new NodeManager(nodes), edges); diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index 2c5d8d78..ebe32a9e 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -45,7 +45,8 @@ function syncStreamOut( edge: StreamOutEdge, ) { sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; - sourceOp.stream_out[edge.data.name] = nodeManager.getTargetNextOp(edge); + sourceOp.stream_out[edge.data.output.name] = + nodeManager.getTargetNextOp(edge); } function getBufferSelection(targetOp: DiagramOperation): BufferSelection { @@ -84,7 +85,7 @@ function syncBufferSelection( nodeManager: NodeManager, edge: DiagramEditorEdge, ) { - if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { + if (edge.type === 'buffer') { const targetNode = nodeManager.getNode(edge.target); if (!isOperationNode(targetNode)) { throw new Error('expected operation node'); @@ -96,7 +97,7 @@ function syncBufferSelection( let bufferSelection = getBufferSelection(targetOp); if ( - edge.type === 'bufferKey' && + edge.data.input?.type === 'bufferKey' && Array.isArray(bufferSelection) && bufferSelection.length === 0 ) { @@ -104,7 +105,7 @@ function syncBufferSelection( bufferSelection = {}; setBufferSelection(targetOp, bufferSelection); } else if ( - edge.type === 'bufferSeq' && + edge.data.input?.type === 'bufferSeq' && typeof bufferSelection === 'object' && !Array.isArray(bufferSelection) && Object.keys(bufferSelection).length === 0 @@ -119,21 +120,21 @@ function syncBufferSelection( throw new Error('expected source to be a buffer node'); } // check that the buffer selection is compatible - if (edge.type === 'bufferSeq') { + if (edge.type === 'buffer' && edge.data.input?.type === 'bufferSeq') { if (!isArrayBufferSelection(bufferSelection)) { throw new Error( 'a sequential buffer edge must be assigned to an array of buffers', ); } - bufferSelection[edge.data.seq] = sourceNode.data.opId; + bufferSelection[edge.data.input.seq] = sourceNode.data.opId; } - if (edge.type === 'bufferKey') { + if (edge.type === 'buffer' && edge.data.input?.type === 'bufferKey') { if (!isKeyedBufferSelection(bufferSelection)) { throw new Error( 'a keyed buffer edge must be assigned to a keyed buffer selection', ); } - bufferSelection[edge.data.key] = sourceNode.data.opId; + bufferSelection[edge.data.input.key] = sourceNode.data.opId; } } } @@ -147,7 +148,7 @@ function syncEdge( root: SubOperations, edge: DiagramEditorEdge, ): void { - if (edge.type === 'bufferKey' || edge.type === 'bufferSeq') { + if (edge.type === 'buffer') { syncBufferSelection(nodeManager, edge); return; } @@ -196,7 +197,7 @@ function syncEdge( if (edge.type !== 'unzip') { throw new Error('expected "unzip" edge'); } - sourceOp.next[edge.data.seq] = nodeManager.getTargetNextOp(edge); + sourceOp.next[edge.data.output.seq] = nodeManager.getTargetNextOp(edge); break; } case 'fork_result': { @@ -223,7 +224,8 @@ function syncEdge( if (!sourceOp.keyed) { sourceOp.keyed = {}; } - sourceOp.keyed[edge.data.key] = nodeManager.getTargetNextOp(edge); + sourceOp.keyed[edge.data.output.key] = + nodeManager.getTargetNextOp(edge); break; } case 'splitSeq': { @@ -231,7 +233,7 @@ function syncEdge( sourceOp.sequential = []; } // this works because js allows non-sequential arrays - sourceOp.sequential[edge.data.seq] = + sourceOp.sequential[edge.data.output.seq] = nodeManager.getTargetNextOp(edge); break; } diff --git a/diagram-editor/frontend/utils/operation.ts b/diagram-editor/frontend/utils/operation.ts index 48e9fbfd..b7761f82 100644 --- a/diagram-editor/frontend/utils/operation.ts +++ b/diagram-editor/frontend/utils/operation.ts @@ -1,6 +1,5 @@ import { - createBufferKeyEdge, - createBufferSeqEdge, + createBufferEdge, createDefaultEdge, createForkResultErrEdge, createForkResultOkEdge, @@ -69,7 +68,9 @@ function createBufferEdges( buffer, )?.id; if (source) { - edges.push(createBufferSeqEdge(source, node.id, { seq: idx })); + edges.push( + createBufferEdge(source, node.id, { type: 'bufferSeq', seq: idx }), + ); } } } else if (isKeyedBufferSelection(buffers)) { @@ -79,7 +80,9 @@ function createBufferEdges( buffer, )?.id; if (source) { - edges.push(createBufferKeyEdge(source, node.id, { key })); + edges.push( + createBufferEdge(source, node.id, { type: 'bufferKey', key }), + ); } } } else { @@ -88,7 +91,9 @@ function createBufferEdges( buffers, )?.id; if (source) { - edges.push(createBufferSeqEdge(source, node.id, { seq: 0 })); + edges.push( + createBufferEdge(source, node.id, { type: 'bufferSeq', seq: 0 }), + ); } } @@ -241,17 +246,21 @@ export function buildEdges(nodes: DiagramEditorNode[]): DiagramEditorEdge[] { break; } case 'section': { - if (op.connect) { - for (const next of Object.values(op.connect)) { - const target = nodeManager.getNodeFromNextOp( - node.data.namespace, - next, - )?.id; - if (target) { - edges.push(createDefaultEdge(node.id, target)); - } - } - } + // if (op.connect) { + // for (const [outputId, next] of Object.entries(op.connect)) { + // const target = nodeManager.getNodeFromNextOp( + // node.data.namespace, + // next, + // )?.id; + // if (target) { + // edges.push( + // createSectionEdge(node.id, target, { + // output: outputId, + // }), + // ); + // } + // } + // } break; } case 'scope': { From fc47a7f2623d574018b53d01815bcb17661f9aee Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 5 Aug 2025 05:46:30 +0000 Subject: [PATCH 129/165] implemented forms for connecting section buffers Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 4 +- diagram-editor/frontend/edges/buffer-edge.tsx | 12 ++- diagram-editor/frontend/edges/create-edge.ts | 15 +-- .../frontend/edges/fork-result-err-edge.tsx | 7 +- .../frontend/edges/fork-result-ok-edge.tsx | 4 +- diagram-editor/frontend/edges/index.ts | 35 ++++--- .../frontend/edges/section-edge.tsx | 9 +- .../frontend/edges/split-key-edge.tsx | 6 +- .../frontend/edges/split-remaining-edge.tsx | 4 +- .../frontend/edges/split-seq-edge.tsx | 5 +- .../frontend/edges/stream-out-edge.tsx | 8 +- diagram-editor/frontend/edges/unzip-edge.tsx | 5 +- .../frontend/forms/buffer-edge-form.tsx | 91 +++++++++++++------ .../frontend/forms/edit-edge-form.stories.tsx | 6 +- .../frontend/forms/edit-edge-form.tsx | 39 ++++---- diagram-editor/frontend/node-manager.ts | 29 +++--- diagram-editor/frontend/types/react-flow.ts | 6 +- diagram-editor/frontend/utils/connection.ts | 2 +- .../frontend/utils/export-diagram.test.ts | 6 +- .../frontend/utils/export-diagram.ts | 11 ++- 20 files changed, 183 insertions(+), 121 deletions(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 950bea77..7223d41a 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -37,7 +37,7 @@ import { EditorModeProvider, } from './editor-mode'; import ExportDiagramDialog from './export-diagram-dialog'; -import { defaultEdgeOutputData, EditEdgeForm, EditNodeForm } from './forms'; +import { defaultEdgeData, EditEdgeForm, EditNodeForm } from './forms'; import EditScopeForm from './forms/edit-scope-form'; import { NodeManager } from './node-manager'; import { @@ -562,7 +562,7 @@ function DiagramEditor() { const newEdge = { ...createBaseEdge(conn.source, conn.target), type: validEdges[0], - data: defaultEdgeOutputData(validEdges[0]), + data: defaultEdgeData(validEdges[0]), } as DiagramEditorEdge; const validationResult = validateEdgeSimple( diff --git a/diagram-editor/frontend/edges/buffer-edge.tsx b/diagram-editor/frontend/edges/buffer-edge.tsx index 026a8ad8..cd91f01c 100644 --- a/diagram-editor/frontend/edges/buffer-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { SectionBufferSlotData } from './section-edge'; export type BufferKeySlotData = { type: 'bufferKey'; @@ -12,9 +12,13 @@ export type BufferSeqSlotData = { seq: number; }; -export type BufferOutputData = { [k: string]: unknown }; -// TODO: support section buffer -export type BufferEdge = Edge, 'buffer'>; +export type BufferOutputData = Record; + +export type BufferEdge = Edge< + BufferOutputData, + BufferKeySlotData | BufferSeqSlotData | SectionBufferSlotData, + 'buffer' +>; export type BufferEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/create-edge.ts b/diagram-editor/frontend/edges/create-edge.ts index e32f6e6d..c21e57ec 100644 --- a/diagram-editor/frontend/edges/create-edge.ts +++ b/diagram-editor/frontend/edges/create-edge.ts @@ -26,7 +26,7 @@ export function createDefaultEdge( return { ...createBaseEdge(source, target), type: 'default', - data: { output: {} }, + data: { output: {}, input: { type: 'default' } }, }; } @@ -40,6 +40,7 @@ export function createUnzipEdge( type: 'unzip', data: { output: data, + input: { type: 'default' }, }, }; } @@ -51,7 +52,7 @@ export function createForkResultOkEdge( return { ...createBaseEdge(source, target), type: 'forkResultOk', - data: {}, + data: { output: {}, input: { type: 'default' } }, }; } @@ -62,7 +63,7 @@ export function createForkResultErrEdge( return { ...createBaseEdge(source, target), type: 'forkResultErr', - data: {}, + data: { output: {}, input: { type: 'default' } }, }; } @@ -74,7 +75,7 @@ export function createSplitKeyEdge( return { ...createBaseEdge(source, target), type: 'splitKey', - data: { output: data }, + data: { output: data, input: { type: 'default' } }, }; } @@ -86,7 +87,7 @@ export function createSplitSeqEdge( return { ...createBaseEdge(source, target), type: 'splitSeq', - data: { output: data }, + data: { output: data, input: { type: 'default' } }, }; } @@ -97,7 +98,7 @@ export function createSplitRemainingEdge( return { ...createBaseEdge(source, target), type: 'splitRemaining', - data: {}, + data: { output: {}, input: { type: 'default' } }, }; } @@ -121,7 +122,7 @@ export function createStreamOutEdge( return { ...createBaseEdge(source, target), type: 'streamOut', - data: { output: data }, + data: { output: data, input: { type: 'default' } }, }; } diff --git a/diagram-editor/frontend/edges/fork-result-err-edge.tsx b/diagram-editor/frontend/edges/fork-result-err-edge.tsx index 7457a92e..28d54b97 100644 --- a/diagram-editor/frontend/edges/fork-result-err-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-err-edge.tsx @@ -1,9 +1,12 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; +import type { DataEdge } from '.'; export type ForkResultErrOutputData = Record; -export type ForkResultErrEdge = Edge; +export type ForkResultErrEdge = DataEdge< + ForkResultErrOutputData, + 'forkResultErr' +>; export type ForkResultErrEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx index a4b43ba2..fee07a02 100644 --- a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx @@ -1,9 +1,9 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; +import type { DataEdge } from '.'; export type ForkResultOkOutputData = Record; -export type ForkResultOkEdge = Edge; +export type ForkResultOkEdge = DataEdge; export type ForkResultOkEdgeProps = Exclude< EdgeProps, diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index 13fa7891..b9bb0363 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -1,16 +1,17 @@ import { StepEdge } from '@xyflow/react'; import type { Edge } from '../types/react-flow'; -import BufferEdgeComp, { - type BufferEdge, - type BufferKeySlotData, - type BufferSeqSlotData, -} from './buffer-edge'; +import BufferEdgeComp, { type BufferEdge } from './buffer-edge'; import ForkResultErrEdgeComp, { type ForkResultErrEdge, } from './fork-result-err-edge'; import ForkResultOkEdgeComp, { type ForkResultOkEdge, } from './fork-result-ok-edge'; +import { + type SectionEdge, + type SectionInputSlotData, + SectionOutputEdgeComp, +} from './section-edge'; import SplitKeyEdgeComp, { type SplitKeyEdge } from './split-key-edge'; import SplitRemainingEdgeComp, { type SplitRemainingEdge, @@ -27,13 +28,15 @@ export type { SplitSeqEdge } from './split-seq-edge'; export type { StreamOutEdge } from './stream-out-edge'; export type { UnzipEdge } from './unzip-edge'; -export type EdgeData> = { - output: O; - input?: BufferKeySlotData | BufferSeqSlotData; -}; +export type DefaultOutputData = Record; +export type DefaultInputData = { type: 'default' }; + +export type DataEdge< + O extends Record, + S extends string, +> = Edge; -export type DefaultOutputData = { [k: string]: unknown }; -export type DefaultEdge = Edge, 'default'>; +export type DefaultEdge = DataEdge; export type EdgeMapping = { default: DefaultEdge; @@ -45,13 +48,15 @@ export type EdgeMapping = { splitRemaining: SplitRemainingEdge; buffer: BufferEdge; streamOut: StreamOutEdge; - // section: SectionEdge; + section: SectionEdge; }; export type EdgeTypes = keyof EdgeMapping; -export type EdgeOutputData = - EdgeMapping[K]['data']['output']; +export type EdgeData = EdgeMapping[K]['data']; + +export type EdgeOutputData = + EdgeData['output']; export const EDGE_TYPES = { default: StepEdge, @@ -63,7 +68,7 @@ export const EDGE_TYPES = { splitRemaining: SplitRemainingEdgeComp, buffer: BufferEdgeComp, streamOut: StreamOutEdgeComp, - // section: SectionOutputEdgeComp, + section: SectionOutputEdgeComp, } satisfies Record; export type DiagramEditorEdge = EdgeMapping[T]; diff --git a/diagram-editor/frontend/edges/section-edge.tsx b/diagram-editor/frontend/edges/section-edge.tsx index 23a84cc0..4d17311a 100644 --- a/diagram-editor/frontend/edges/section-edge.tsx +++ b/diagram-editor/frontend/edges/section-edge.tsx @@ -1,13 +1,12 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { DataEdge } from '.'; export type SectionOutputData = { output: string; }; -export type SectionEdge = Edge, 'section'>; +export type SectionEdge = DataEdge; export type SectionOutputEdgeProps = Exclude, 'label'>; @@ -17,10 +16,10 @@ export const SectionOutputEdgeComp = memo((props: SectionOutputEdgeProps) => { export type SectionInputSlotData = { type: 'sectionInput'; - input: string; + inputId: string; }; export type SectionBufferSlotData = { type: 'sectionBuffer'; - input: string; + inputId: string; }; diff --git a/diagram-editor/frontend/edges/split-key-edge.tsx b/diagram-editor/frontend/edges/split-key-edge.tsx index 8fbfb927..6989a661 100644 --- a/diagram-editor/frontend/edges/split-key-edge.tsx +++ b/diagram-editor/frontend/edges/split-key-edge.tsx @@ -1,12 +1,12 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { DataEdge } from '.'; export type SplitKeyOutputData = { key: string; }; -export type SplitKeyEdge = Edge, 'splitKey'>; + +export type SplitKeyEdge = DataEdge; export type SplitKeyEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/split-remaining-edge.tsx b/diagram-editor/frontend/edges/split-remaining-edge.tsx index 92c1cd02..65dd1e73 100644 --- a/diagram-editor/frontend/edges/split-remaining-edge.tsx +++ b/diagram-editor/frontend/edges/split-remaining-edge.tsx @@ -1,9 +1,9 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; +import type { DataEdge } from '.'; export type SplitRemainingOutputData = Record; -export type SplitRemainingEdge = Edge< +export type SplitRemainingEdge = DataEdge< SplitRemainingOutputData, 'splitRemaining' >; diff --git a/diagram-editor/frontend/edges/split-seq-edge.tsx b/diagram-editor/frontend/edges/split-seq-edge.tsx index d192a6e4..1d6e68e5 100644 --- a/diagram-editor/frontend/edges/split-seq-edge.tsx +++ b/diagram-editor/frontend/edges/split-seq-edge.tsx @@ -1,13 +1,12 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { DataEdge } from '.'; export type SplitSeqOutputData = { seq: number; }; -export type SplitSeqEdge = Edge, 'splitSeq'>; +export type SplitSeqEdge = DataEdge; export type SplitSeqEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index 19a7a52e..0834b7f2 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -1,13 +1,17 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { DefaultInputData } from '.'; export type StreamOutOutputData = { name: string; }; -export type StreamOutEdge = Edge, 'streamOut'>; +export type StreamOutEdge = Edge< + StreamOutOutputData, + DefaultInputData, + 'streamOut' +>; export type StreamOutEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/edges/unzip-edge.tsx b/diagram-editor/frontend/edges/unzip-edge.tsx index 220f7eb5..72acdf7f 100644 --- a/diagram-editor/frontend/edges/unzip-edge.tsx +++ b/diagram-editor/frontend/edges/unzip-edge.tsx @@ -1,13 +1,12 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { Edge } from '../types/react-flow'; -import type { EdgeData } from '.'; +import type { DataEdge } from '.'; export type UnzipOutputData = { seq: number; }; -export type UnzipEdge = Edge, 'unzip'>; +export type UnzipEdge = DataEdge; export type UnzipEdgeProps = Exclude, 'label'>; diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index 9750b813..f5fd7f37 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -5,9 +5,11 @@ import { Select, TextField, } from '@mui/material'; -import type { EdgeChange } from '@xyflow/react'; +import { type EdgeChange, useReactFlow } from '@xyflow/react'; import { useId } from 'react'; -import type { BufferEdge } from '../edges'; +import type { BufferEdge, DiagramEditorEdge } from '../edges'; +import type { DiagramEditorNode } from '../nodes'; +import { exhaustiveCheck } from '../utils/exhaustive-check'; export interface BufferEdgeInputFormProps { edge: BufferEdge; @@ -23,60 +25,95 @@ export function BufferEdgeInputForm({ const handleDataChange = ( event: React.ChangeEvent, ) => { - if (edge.data.input?.type === 'bufferKey') { - const newKey = event.target.value; - onChange?.({ - type: 'replace', - id: edge.id, - item: { - ...edge, - data: { ...edge.data, input: { type: 'bufferKey', key: newKey } }, - }, - }); - } else { - const newSeq = Number.parseInt(event.target.value, 10); - if (!Number.isNaN(newSeq)) { + switch (edge.data.input.type) { + case 'bufferKey': { + const newKey = event.target.value; onChange?.({ type: 'replace', id: edge.id, item: { ...edge, - data: { ...edge.data, input: { type: 'bufferSeq', seq: newSeq } }, + data: { ...edge.data, input: { type: 'bufferKey', key: newKey } }, }, }); + break; + } + case 'bufferSeq': { + const newSeq = Number.parseInt(event.target.value, 10); + if (!Number.isNaN(newSeq)) { + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { ...edge.data, input: { type: 'bufferSeq', seq: newSeq } }, + }, + }); + } + break; + } + case 'sectionBuffer': { + const newBufferId = event.target.value; + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { + ...edge.data, + input: { type: 'sectionBuffer', inputId: newBufferId }, + }, + }, + }); + break; + } + default: { + exhaustiveCheck(edge.data.input); + throw new Error('unknown edge input'); } } }; const labelId = useId(); + const reactFlow = useReactFlow(); + const targetNode = reactFlow.getNode(edge.target); + const targetIsSection = targetNode?.type === 'section'; + return ( <> Slot - + {!targetIsSection && Index} + {!targetIsSection && Key} + {targetIsSection && ( + Section Buffer + )} {edge.data.input === undefined || - (edge.data.input?.type === 'bufferSeq' && ( + (edge.data.input.type === 'bufferSeq' && ( ))} - {edge.data.input?.type === 'bufferKey' && ( + {edge.data.input.type === 'bufferKey' && ( + )} + {edge.data.input.type === 'sectionBuffer' && ( + diff --git a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx index 7007756f..3180905a 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.stories.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.stories.tsx @@ -53,7 +53,7 @@ export const ForkResult: Story = { source: 'a', target: 'b', type: 'forkResultOk', - data: {}, + data: { output: {}, input: { type: 'default' } }, }, allowedEdgeTypes: ['forkResultOk', 'forkResultErr'], }, @@ -71,6 +71,7 @@ export const SplitKey: Story = { output: { key: 'splitTestKey', }, + input: { type: 'default' }, }, }, allowedEdgeTypes: ['splitKey', 'splitSeq', 'splitRemaining'], @@ -89,6 +90,7 @@ export const Unzip: Story = { output: { seq: 3, }, + input: { type: 'default' }, }, }, allowedEdgeTypes: ['unzip'], @@ -103,7 +105,7 @@ export const Default: Story = { source: 'a', target: 'b', type: 'default', - data: { output: {} }, + data: { output: {}, input: { type: 'default' } }, }, allowedEdgeTypes: ['default'], }, diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index 74469058..dff7ab04 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -14,7 +14,7 @@ import React from 'react'; import type { BufferEdge, DiagramEditorEdge, - EdgeOutputData, + EdgeData, EdgeTypes, UnzipEdge, } from '../edges'; @@ -33,26 +33,24 @@ const EDGE_TYPES_NAME = { splitSeq: 'Sequence', streamOut: 'Stream Out', unzip: 'Unzip', - // section: 'Section', + section: 'Section', } satisfies Record; -const EDGE_DEFAULT_DATA = { - default: {}, - buffer: {}, - forkResultOk: {}, - forkResultErr: {}, - splitKey: { key: '' }, - splitSeq: { seq: 0 }, - splitRemaining: {}, - streamOut: { name: '' }, - unzip: { seq: 0 }, - // section: { output: '' }, -} satisfies Record; +const EDGE_DEFAULT_OUTPUT_DATA = { + default: { output: {}, input: { type: 'default' } }, + buffer: { output: {}, input: { type: 'bufferSeq', seq: 0 } }, + forkResultOk: { output: {}, input: { type: 'default' } }, + forkResultErr: { output: {}, input: { type: 'default' } }, + splitKey: { output: { key: '' }, input: { type: 'default' } }, + splitSeq: { output: { seq: 0 }, input: { type: 'default' } }, + splitRemaining: { output: {}, input: { type: 'default' } }, + streamOut: { output: { name: '' }, input: { type: 'default' } }, + unzip: { output: { seq: 0 }, input: { type: 'default' } }, + section: { output: { output: '' }, input: { type: 'default' } }, +} satisfies { [K in EdgeTypes]: EdgeData }; -export function defaultEdgeOutputData( - type: EdgeTypes, -): EdgeOutputData { - return { ...EDGE_DEFAULT_DATA[type] }; +export function defaultEdgeData(type: EdgeTypes): EdgeData { + return { ...EDGE_DEFAULT_OUTPUT_DATA[type] }; } export interface EditEdgeFormProps { @@ -121,10 +119,7 @@ function EditEdgeForm({ ...edge, }; newEdge.type = ev.target.value; - newEdge.data = { - ...edge.data, - output: { ...defaultEdgeOutputData(newEdge.type) }, - }; + newEdge.data = defaultEdgeData(newEdge.type); onChange?.({ type: 'replace', id: edge.id, diff --git a/diagram-editor/frontend/node-manager.ts b/diagram-editor/frontend/node-manager.ts index 4bc13a4a..2ad6f719 100644 --- a/diagram-editor/frontend/node-manager.ts +++ b/diagram-editor/frontend/node-manager.ts @@ -106,16 +106,10 @@ export class NodeManager { getTargetNextOp(edge: DiagramEditorEdge): NextOperation { // TODO: Validate that the edge does not traverse namespaces - switch (edge.type) { - case 'buffer': - case 'default': - case 'forkResultOk': - case 'forkResultErr': - case 'splitKey': - case 'splitSeq': - case 'splitRemaining': - case 'streamOut': - case 'unzip': { + switch (edge.data.input.type) { + case 'bufferKey': + case 'bufferSeq': + case 'default': { const target = this.getNode(edge.target); if (isBuiltinNode(target)) { return { builtin: target.type }; @@ -128,10 +122,19 @@ export class NodeManager { } throw new Error('unknown node type'); } - // TODO: For section edges, return a `{ [target.data.opId]: edge.data.input }` + case 'sectionBuffer': + case 'sectionInput': { + const target = this.getNode(edge.target); + if (target.type !== 'section') { + throw new Error( + 'edge is connecting to a section input slot but target is not a section', + ); + } + return { [target.data.opId]: edge.data.input.inputId }; + } default: { - exhaustiveCheck(edge); - throw new Error('unknown edge'); + exhaustiveCheck(edge.data.input); + throw new Error('unknown edge input'); } } } diff --git a/diagram-editor/frontend/types/react-flow.ts b/diagram-editor/frontend/types/react-flow.ts index ff46b67e..b369e88f 100644 --- a/diagram-editor/frontend/types/react-flow.ts +++ b/diagram-editor/frontend/types/react-flow.ts @@ -9,6 +9,8 @@ export type Node< > = ReactFlowNode & Pick, 'type' | 'data'>; export type Edge< - D extends Record, + O extends Record, + I extends { type: string }, T extends string, -> = ReactFlowEdge & Pick, 'type' | 'data'>; +> = ReactFlowEdge<{ output: O; input: I }, T> & + Pick, 'type' | 'data'>; diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 7bb2ba0b..82b36ece 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -19,7 +19,7 @@ const EDGE_CATEGORIES: Record = { default: EdgeCategory.Data, streamOut: EdgeCategory.Stream, unzip: EdgeCategory.Data, - // section: EdgeCategory.Data, + section: EdgeCategory.Data, }; const ALLOWED_OUTPUT_EDGES: Record = { diff --git a/diagram-editor/frontend/utils/export-diagram.test.ts b/diagram-editor/frontend/utils/export-diagram.test.ts index a58d60bb..c4b29ef4 100644 --- a/diagram-editor/frontend/utils/export-diagram.test.ts +++ b/diagram-editor/frontend/utils/export-diagram.test.ts @@ -83,21 +83,21 @@ test('export diagram with templates', () => { type: 'default', source: nodes[0].id, target: nodes[3].id, - data: { output: {} }, + data: { output: {}, input: { type: 'default' } }, }, { id: uuidv4(), type: 'default', source: nodes[2].id, target: nodes[4].id, - data: { output: {} }, + data: { output: {}, input: { type: 'default' } }, }, { id: uuidv4(), type: 'default', source: nodes[3].id, target: nodes[1].id, - data: { output: {} }, + data: { output: {}, input: { type: 'default' } }, }, ]; const template = exportTemplate(new NodeManager(nodes), edges); diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index ebe32a9e..d8f18f0f 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -180,7 +180,16 @@ function syncEdge( break; } case 'section': { - throw new Error('TODO'); + if (edge.type !== 'section') { + throw new Error('expected section edge'); + } + + if (!sourceOp.connect) { + sourceOp.connect = {}; + } + sourceOp.connect[edge.data.output.output] = + nodeManager.getTargetNextOp(edge); + break; } case 'fork_clone': { if (edge.type !== 'default') { From 5fdc12fbf0613c64e5746dc2e6003975458a1966 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 6 Aug 2025 05:16:06 +0000 Subject: [PATCH 130/165] added support for editing section edges Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 103 +++++++++++------- diagram-editor/frontend/edges/buffer-edge.tsx | 18 ++- diagram-editor/frontend/edges/create-edge.ts | 25 +++-- .../frontend/edges/default-edge.tsx | 22 ++++ diagram-editor/frontend/edges/index.ts | 35 +++++- .../frontend/edges/section-edge.tsx | 2 +- .../frontend/forms/buffer-edge-form.tsx | 62 +++++++++-- .../frontend/forms/data-input-form.tsx | 84 ++++++++++++++ .../frontend/forms/edit-edge-form.tsx | 18 ++- diagram-editor/frontend/forms/node-form.tsx | 2 +- .../frontend/forms/section-form.tsx | 67 +++++++++++- diagram-editor/frontend/nodes/utils.ts | 6 + .../frontend/utils/connection.test.ts | 20 ++-- diagram-editor/frontend/utils/connection.ts | 53 +++++---- 15 files changed, 410 insertions(+), 109 deletions(-) create mode 100644 diagram-editor/frontend/edges/default-edge.tsx create mode 100644 diagram-editor/frontend/forms/data-input-form.tsx diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 042188e5..4be711c8 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -334,7 +334,7 @@ function AddOperation({ parentId, newNodePosition, onAdd }: AddOperationProps) { ) } > - Scope + Section ); diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 7223d41a..dd142b51 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -15,6 +15,7 @@ import { applyEdgeChanges, applyNodeChanges, Background, + type Connection, type EdgeChange, type EdgeRemoveChange, type NodeChange, @@ -30,7 +31,12 @@ import React from 'react'; import AddOperation from './add-operation'; import CommandPanel from './command-panel'; import type { DiagramEditorEdge } from './edges'; -import { createBaseEdge, EDGE_TYPES } from './edges'; +import { + createBaseEdge, + EDGE_CATEGORIES, + EDGE_TYPES, + EdgeCategory, +} from './edges'; import { EditorMode, type EditorModeContext, @@ -497,6 +503,54 @@ function DiagramEditor() { mouseDownTime.current = Date.now(); }, []); + const tryCreateEdge = React.useCallback( + (conn: Connection, id?: string): DiagramEditorEdge | null => { + if (!reactFlowInstance.current) { + return null; + } + + const sourceNode = reactFlowInstance.current.getNode(conn.source); + const targetNode = reactFlowInstance.current.getNode(conn.target); + if (!sourceNode || !targetNode) { + throw new Error('cannot find source or target node'); + } + + const validEdges = getValidEdgeTypes(sourceNode, targetNode); + if (validEdges.length === 0) { + showErrorToast( + `cannot connect "${sourceNode.type}" to "${targetNode.type}"`, + ); + return null; + } + + const newEdge = { + ...createBaseEdge(conn.source, conn.target, id), + type: validEdges[0], + data: defaultEdgeData(validEdges[0]), + } as DiagramEditorEdge; + + if (targetNode.type === 'section') { + if (EDGE_CATEGORIES[newEdge.type] === EdgeCategory.Buffer) { + newEdge.data.input = { type: 'sectionBuffer', inputId: '' }; + } else if (EDGE_CATEGORIES[newEdge.type] === EdgeCategory.Data) { + newEdge.data.input = { type: 'sectionInput', inputId: '' }; + } + } + + const validationResult = validateEdgeSimple( + newEdge, + reactFlowInstance.current, + ); + if (!validationResult.valid) { + showErrorToast(validationResult.error); + return null; + } + + return newEdge; + }, + [showErrorToast], + ); + return ( { - if (!reactFlowInstance.current) { - return; - } - - const sourceNode = reactFlowInstance.current?.getNode(conn.source); - const targetNode = reactFlowInstance.current?.getNode(conn.target); - if (!sourceNode || !targetNode) { - throw new Error('cannot find source or target node'); + const newEdge = tryCreateEdge(conn); + if (newEdge) { + setEdges((prev) => addEdge(newEdge, prev)); } - - const validEdges = getValidEdgeTypes(sourceNode, targetNode); - if (validEdges.length === 0) { - showErrorToast( - `cannot connect "${sourceNode.type}" to "${targetNode.type}"`, - ); - return; - } - - const newEdge = { - ...createBaseEdge(conn.source, conn.target), - type: validEdges[0], - data: defaultEdgeData(validEdges[0]), - } as DiagramEditorEdge; - - const validationResult = validateEdgeSimple( - newEdge, - reactFlowInstance.current, - ); - if (!validationResult.valid) { - showErrorToast(validationResult.error); - return; - } - - setEdges((prev) => addEdge(newEdge, prev)); }} isValidConnection={(conn) => { const sourceNode = reactFlowInstance.current?.getNode(conn.source); @@ -586,9 +610,14 @@ function DiagramEditor() { const allowedEdges = getValidEdgeTypes(sourceNode, targetNode); return allowedEdges.length > 0; }} - onReconnect={(oldEdge, newConnection) => - setEdges((prev) => reconnectEdge(oldEdge, newConnection, prev)) - } + onReconnect={(oldEdge, newConnection) => { + const newEdge = tryCreateEdge(newConnection, oldEdge.id); + if (newEdge) { + oldEdge.type = newEdge.type; + oldEdge.data = newEdge.data; + setEdges((prev) => reconnectEdge(oldEdge, newConnection, prev)); + } + }} onNodeClick={(ev, node) => { ev.stopPropagation(); closeAllPopovers(); diff --git a/diagram-editor/frontend/edges/buffer-edge.tsx b/diagram-editor/frontend/edges/buffer-edge.tsx index cd91f01c..281e6d6c 100644 --- a/diagram-editor/frontend/edges/buffer-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-edge.tsx @@ -1,6 +1,7 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import type { Edge } from '../types/react-flow'; import type { SectionBufferSlotData } from './section-edge'; +import { memo } from 'react'; export type BufferKeySlotData = { type: 'bufferKey'; @@ -20,8 +21,17 @@ export type BufferEdge = Edge< 'buffer' >; -export type BufferEdgeProps = Exclude, 'label'>; +export type BufferEdgeCompProps = Exclude, 'label'>; -const BufferEdgeComp = StepEdge; - -export default BufferEdgeComp; +export const BufferEdgeComp = memo((props: BufferEdgeCompProps) => { + return ( + + ); +}); diff --git a/diagram-editor/frontend/edges/create-edge.ts b/diagram-editor/frontend/edges/create-edge.ts index c21e57ec..1d6de9de 100644 --- a/diagram-editor/frontend/edges/create-edge.ts +++ b/diagram-editor/frontend/edges/create-edge.ts @@ -6,9 +6,10 @@ import type { BufferKeySlotData, BufferSeqSlotData } from './buffer-edge'; export function createBaseEdge( source: string, target: string, + id?: string, ): Pick { return { - id: uuidv4(), + id: id || uuidv4(), source, target, markerEnd: { @@ -126,14 +127,14 @@ export function createStreamOutEdge( }; } -// export function createSectionEdge( -// source: string, -// target: string, -// data: EdgeOutputData<'section'>, -// ): DiagramEditorEdge<'section'> { -// return { -// ...createBaseEdge(source, target), -// type: 'section', -// data: { output: data }, -// }; -// } +export function createSectionEdge( + source: string, + target: string, + data: EdgeOutputData<'section'>, +): DiagramEditorEdge<'section'> { + return { + ...createBaseEdge(source, target), + type: 'section', + data: { output: data, input: { type: 'default' } }, + }; +} diff --git a/diagram-editor/frontend/edges/default-edge.tsx b/diagram-editor/frontend/edges/default-edge.tsx new file mode 100644 index 00000000..23e66dd7 --- /dev/null +++ b/diagram-editor/frontend/edges/default-edge.tsx @@ -0,0 +1,22 @@ +import { type EdgeProps, StepEdge } from '@xyflow/react'; +import { memo } from 'react'; +import type { DataEdge } from '.'; + +export type DefaultOutputData = Record; + +export type DefaultEdge = DataEdge; + +export type DefaultEdgeCompProps = Omit, 'label'>; + +export const DefaultEdgeComp = memo((props: DefaultEdgeCompProps) => { + return ( + + ); +}); diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index b9bb0363..54ec3878 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -1,6 +1,6 @@ -import { StepEdge } from '@xyflow/react'; import type { Edge } from '../types/react-flow'; -import BufferEdgeComp, { type BufferEdge } from './buffer-edge'; +import { type BufferEdge, BufferEdgeComp } from './buffer-edge'; +import { type DefaultEdge, DefaultEdgeComp } from './default-edge'; import ForkResultErrEdgeComp, { type ForkResultErrEdge, } from './fork-result-err-edge'; @@ -22,13 +22,13 @@ import UnzipEdgeComp, { type UnzipEdge } from './unzip-edge'; export type { BufferEdge } from './buffer-edge'; export * from './create-edge'; +export type { SectionEdge } from './section-edge'; export type { SplitKeyEdge } from './split-key-edge'; export type { SplitRemainingEdge } from './split-remaining-edge'; export type { SplitSeqEdge } from './split-seq-edge'; export type { StreamOutEdge } from './stream-out-edge'; export type { UnzipEdge } from './unzip-edge'; -export type DefaultOutputData = Record; export type DefaultInputData = { type: 'default' }; export type DataEdge< @@ -36,8 +36,6 @@ export type DataEdge< S extends string, > = Edge; -export type DefaultEdge = DataEdge; - export type EdgeMapping = { default: DefaultEdge; unzip: UnzipEdge; @@ -59,7 +57,7 @@ export type EdgeOutputData = EdgeData['output']; export const EDGE_TYPES = { - default: StepEdge, + default: DefaultEdgeComp, unzip: UnzipEdgeComp, forkResultOk: ForkResultOkEdgeComp, forkResultErr: ForkResultErrEdgeComp, @@ -72,3 +70,28 @@ export const EDGE_TYPES = { } satisfies Record; export type DiagramEditorEdge = EdgeMapping[T]; + +export enum EdgeCategory { + Data, + Buffer, + Stream, +} + +export const EDGE_CATEGORIES: Record = { + buffer: EdgeCategory.Buffer, + forkResultOk: EdgeCategory.Data, + forkResultErr: EdgeCategory.Data, + splitKey: EdgeCategory.Data, + splitSeq: EdgeCategory.Data, + splitRemaining: EdgeCategory.Data, + default: EdgeCategory.Data, + streamOut: EdgeCategory.Stream, + unzip: EdgeCategory.Data, + section: EdgeCategory.Data, +}; + +export function isDataEdge( + edge: DiagramEditorEdge, +): edge is DiagramEditorEdge & DataEdge, T> { + return EDGE_CATEGORIES[edge.type] === EdgeCategory.Data; +} diff --git a/diagram-editor/frontend/edges/section-edge.tsx b/diagram-editor/frontend/edges/section-edge.tsx index 4d17311a..803f8ebc 100644 --- a/diagram-editor/frontend/edges/section-edge.tsx +++ b/diagram-editor/frontend/edges/section-edge.tsx @@ -11,7 +11,7 @@ export type SectionEdge = DataEdge; export type SectionOutputEdgeProps = Exclude, 'label'>; export const SectionOutputEdgeComp = memo((props: SectionOutputEdgeProps) => { - return ; + return ; }); export type SectionInputSlotData = { diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index f5fd7f37..46d579cb 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -1,4 +1,5 @@ import { + Autocomplete, FormControl, InputLabel, MenuItem, @@ -6,11 +7,25 @@ import { TextField, } from '@mui/material'; import { type EdgeChange, useReactFlow } from '@xyflow/react'; -import { useId } from 'react'; +import { useId, useMemo } from 'react'; import type { BufferEdge, DiagramEditorEdge } from '../edges'; import type { DiagramEditorNode } from '../nodes'; +import { useRegistry } from '../registry-provider'; +import { useTemplates } from '../templates-provider'; +import type { SectionTemplate } from '../types/api'; import { exhaustiveCheck } from '../utils/exhaustive-check'; +function getTemplateBuffers(template: SectionTemplate): string[] { + if (!template.buffers) { + return []; + } + if (Array.isArray(template.buffers)) { + return template.buffers; + } else { + return Object.keys(template.buffers); + } +} + export interface BufferEdgeInputFormProps { edge: BufferEdge; onChange?: (changes: EdgeChange) => void; @@ -20,8 +35,6 @@ export function BufferEdgeInputForm({ edge, onChange, }: BufferEdgeInputFormProps) { - // TODO: check if target is a section and add support for connection section buffer slots. - const handleDataChange = ( event: React.ChangeEvent, ) => { @@ -79,6 +92,25 @@ export function BufferEdgeInputForm({ const reactFlow = useReactFlow(); const targetNode = reactFlow.getNode(edge.target); const targetIsSection = targetNode?.type === 'section'; + const registry = useRegistry(); + const [templates, _setTemplates] = useTemplates(); + + const sectionBuffers = useMemo(() => { + if (!targetNode || targetNode.type !== 'section') { + return []; + } + if (typeof targetNode.data.op.builder === 'string') { + const sectionRegistration = registry.sections[targetNode.data.op.builder]; + return sectionRegistration + ? Object.keys(sectionRegistration.metadata.buffers) + : []; + } else if (typeof targetNode.data.op.template === 'string') { + const template = templates[targetNode.data.op.template]; + return template ? getTemplateBuffers(template) : []; + } else { + return []; + } + }, [targetNode, registry, templates]); return ( <> @@ -111,11 +143,27 @@ export function BufferEdgeInputForm({ /> )} {edge.data.input.type === 'sectionBuffer' && ( - { + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { + output: edge.data.output, + input: { type: 'sectionBuffer', inputId: value || '' }, + }, + } as BufferEdge, + }); + }} + renderInput={(params) => ( + + )} /> )} diff --git a/diagram-editor/frontend/forms/data-input-form.tsx b/diagram-editor/frontend/forms/data-input-form.tsx new file mode 100644 index 00000000..242b98d5 --- /dev/null +++ b/diagram-editor/frontend/forms/data-input-form.tsx @@ -0,0 +1,84 @@ +import { Autocomplete, TextField } from '@mui/material'; +import { type EdgeChange, useReactFlow } from '@xyflow/react'; +import { useMemo } from 'react'; +import { type DiagramEditorEdge, isDataEdge } from '../edges'; +import { type DiagramEditorNode, isSectionNode } from '../nodes'; +import { useRegistry } from '../registry-provider'; +import { useTemplates } from '../templates-provider'; +import type { SectionTemplate } from '../types/api'; + +function getTemplateInputs(template: SectionTemplate): string[] { + if (!template.inputs) { + return []; + } + if (Array.isArray(template.inputs)) { + return template.inputs; + } else { + return Object.keys(template.inputs); + } +} + +export interface DataInputEdgeFormProps { + edge: DiagramEditorEdge; + onChange?: (changes: EdgeChange) => void; +} + +export function DataInputForm({ edge, onChange }: DataInputEdgeFormProps) { + const reactFlow = useReactFlow(); + const registry = useRegistry(); + const [templates, _setTemplates] = useTemplates(); + const targetNode = reactFlow.getNode(edge.target); + + const inputs = useMemo(() => { + if (!targetNode || !isSectionNode(targetNode)) { + return []; + } + + if (typeof targetNode.data.op.builder === 'string') { + const sectionBuilder = registry.sections[targetNode.data.op.builder]; + return Object.keys(sectionBuilder?.metadata.inputs || {}); + } else if (typeof targetNode.data.op.template === 'string') { + const template = templates[targetNode.data.op.template]; + return template ? getTemplateInputs(template) : []; + } else { + return []; + } + }, [targetNode, registry, templates]); + + if (!isDataEdge(edge)) { + return null; + } + + return ( + <> + {targetNode?.type === 'section' && ( + { + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { + output: edge.data.output, + input: { type: 'sectionInput', inputId: value || '' }, + }, + } as DiagramEditorEdge, + }); + }} + renderInput={(params) => ( + + )} + /> + )} + + ); +} diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index dff7ab04..ae443547 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -16,16 +16,20 @@ import type { DiagramEditorEdge, EdgeData, EdgeTypes, + SectionEdge, UnzipEdge, } from '../edges'; import { MaterialSymbol } from '../nodes'; +import { exhaustiveCheck } from '../utils/exhaustive-check'; import { BufferEdgeInputForm } from './buffer-edge-form'; +import { DataInputForm } from './data-input-form'; +import { SectionEdgeForm } from './section-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; import UnzipEdgeForm from './unzip-edge-form'; const EDGE_TYPES_NAME = { buffer: 'Buffer', - default: 'Data', + default: 'Default', forkResultErr: 'Error', forkResultOk: 'Ok', splitKey: 'Key', @@ -73,8 +77,11 @@ function EditEdgeForm({ ); } + case 'default': + case 'streamOut': case 'forkResultOk': case 'forkResultErr': { + // these edges have no extra options return null; } case 'splitKey': @@ -85,8 +92,14 @@ function EditEdgeForm({ case 'unzip': { return ; } + case 'section': { + return ( + + ); + } default: { - return null; + exhaustiveCheck(edge); + throw new Error('unknown edge type'); } } }, [edge, onChange]); @@ -134,6 +147,7 @@ function EditEdgeForm({ ))} + {subForm} diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx index ac970bbf..3ac2d2b1 100644 --- a/diagram-editor/frontend/forms/node-form.tsx +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -27,7 +27,7 @@ function NodeForm(props: NodeFormProps) { }); }} renderInput={(params) => ( - + )} /> diff --git a/diagram-editor/frontend/forms/section-form.tsx b/diagram-editor/frontend/forms/section-form.tsx index 2ae3eaee..145b15fd 100644 --- a/diagram-editor/frontend/forms/section-form.tsx +++ b/diagram-editor/frontend/forms/section-form.tsx @@ -7,9 +7,17 @@ import { Stack, TextField, } from '@mui/material'; -import type { NodeChange, NodeRemoveChange } from '@xyflow/react'; -import type { PropsWithChildren } from 'react'; import { + type EdgeChange, + type NodeChange, + type NodeRemoveChange, + useReactFlow, +} from '@xyflow/react'; +import { type PropsWithChildren, useMemo } from 'react'; +import type { DiagramEditorEdge, SectionEdge } from '../edges'; +import { + type DiagramEditorNode, + isSectionNode, MaterialSymbol, type SectionBufferNode, type SectionInputNode, @@ -197,3 +205,58 @@ export function SectionForm(props: SectionFormProps) { ); } + +export interface SectionEdgeFormProps { + edge: SectionEdge; + onChange?: (changes: EdgeChange) => void; +} + +export function SectionEdgeForm({ edge, onChange }: SectionEdgeFormProps) { + const reactFlow = useReactFlow(); + const registry = useRegistry(); + const [templates, _setTemplates] = useTemplates(); + const sourceNode = reactFlow.getNode(edge.source); + + const outputs = useMemo(() => { + if (sourceNode && isSectionNode(sourceNode)) { + if (typeof sourceNode.data.op.builder === 'string') { + const sectionBuilder = registry.sections[sourceNode.data.op.builder]; + return Object.keys(sectionBuilder?.metadata.outputs || {}); + } else if (typeof sourceNode.data.op.template === 'string') { + const template = templates[sourceNode.data.op.template]; + return template?.outputs || []; + } else { + return []; + } + } else { + console.error('source node of a section edge is not a section node'); + return []; + } + }, [sourceNode, registry, templates]); + + return ( + option} + value={edge.data.output.output} + onChange={(_, value) => { + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { + ...edge.data, + output: { output: value || '' }, + }, + }, + }); + }} + renderInput={(params) => ( + + )} + /> + ); +} diff --git a/diagram-editor/frontend/nodes/utils.ts b/diagram-editor/frontend/nodes/utils.ts index c55e6640..ee1e4475 100644 --- a/diagram-editor/frontend/nodes/utils.ts +++ b/diagram-editor/frontend/nodes/utils.ts @@ -60,3 +60,9 @@ export function isSectionInterfaceNode( node.type === 'sectionBuffer' ); } + +export function isSectionNode( + node: DiagramEditorNode, +): node is OperationNode<'section'> { + return node.type === 'section'; +} diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index e83b89a5..a0b7c04d 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -97,9 +97,8 @@ describe('validate edges', () => { { const validEdges = getValidEdgeTypes(buffer, join); - expect(validEdges.length).toBe(2); - expect(validEdges).toContain('bufferKey'); - expect(validEdges).toContain('bufferSeq'); + expect(validEdges.length).toBe(1); + expect(validEdges).toContain('buffer'); } { @@ -153,9 +152,8 @@ describe('validate edges', () => { } { const validEdges = getValidEdgeTypes(bufferNode, bufferAccessNode); - expect(validEdges.length).toBe(2); - expect(validEdges).toContain('bufferKey'); - expect(validEdges).toContain('bufferSeq'); + expect(validEdges.length).toBe(1); + expect(validEdges).toContain('buffer'); } }); @@ -197,9 +195,8 @@ describe('validate edges', () => { } { const validEdges = getValidEdgeTypes(bufferNode, targetNode); - expect(validEdges.length).toBe(2); - expect(validEdges).toContain('bufferKey'); - expect(validEdges).toContain('bufferSeq'); + expect(validEdges.length).toBe(1); + expect(validEdges).toContain('buffer'); } } }); @@ -265,9 +262,8 @@ describe('validate edges', () => { { const validEdges = getValidEdgeTypes(sectionBuffer, listen); - expect(validEdges.length).toBe(2); - expect(validEdges).toContain('bufferKey'); - expect(validEdges).toContain('bufferSeq'); + expect(validEdges.length).toBe(1); + expect(validEdges).toContain('buffer'); } }); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 82b36ece..cdb23ad3 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,29 +1,15 @@ import type { ReactFlowInstance } from '@xyflow/react'; -import type { DiagramEditorEdge, EdgeTypes } from '../edges'; +import { + type DiagramEditorEdge, + EDGE_CATEGORIES, + EdgeCategory, + type EdgeTypes, +} from '../edges'; import type { DiagramEditorNode, NodeTypes } from '../nodes'; import { exhaustiveCheck } from './exhaustive-check'; -enum EdgeCategory { - Data, - Buffer, - Stream, -} - -const EDGE_CATEGORIES: Record = { - buffer: EdgeCategory.Buffer, - forkResultOk: EdgeCategory.Data, - forkResultErr: EdgeCategory.Data, - splitKey: EdgeCategory.Data, - splitSeq: EdgeCategory.Data, - splitRemaining: EdgeCategory.Data, - default: EdgeCategory.Data, - streamOut: EdgeCategory.Stream, - unzip: EdgeCategory.Data, - section: EdgeCategory.Data, -}; - const ALLOWED_OUTPUT_EDGES: Record = { - buffer: ['buffer', 'buffer'], + buffer: ['buffer'], buffer_access: ['default'], fork_clone: ['default'], fork_result: ['forkResultOk', 'forkResultErr'], @@ -31,7 +17,7 @@ const ALLOWED_OUTPUT_EDGES: Record = { listen: ['default'], node: ['default', 'streamOut'], scope: ['default', 'streamOut'], - section: ['default'], + section: ['section'], sectionInput: ['default'], sectionOutput: [], sectionBuffer: ['buffer'], @@ -53,7 +39,7 @@ const ALLOWED_INPUT_EDGE_CATEGORIES: Record = { listen: [EdgeCategory.Buffer], node: [EdgeCategory.Data], scope: [EdgeCategory.Data], - section: [EdgeCategory.Data], + section: [EdgeCategory.Data, EdgeCategory.Buffer], sectionInput: [], sectionOutput: [EdgeCategory.Data], sectionBuffer: [], @@ -178,10 +164,29 @@ export function validateEdgeSimple( } const sourceNode = reactFlow.getNode(edge.source); - if (!sourceNode) { + const targetNode = reactFlow.getNode(edge.target); + if (!sourceNode || !targetNode) { return createValidationError('cannot find source or target node'); } + if (targetNode.type === 'section') { + if ( + EDGE_CATEGORIES[edge.type] === EdgeCategory.Buffer && + edge.data.input.type !== 'sectionBuffer' + ) { + return createValidationError( + 'target is a section but there is no input slot', + ); + } else if ( + EDGE_CATEGORIES[edge.type] === EdgeCategory.Data && + edge.data.input.type !== 'sectionInput' + ) { + return createValidationError( + 'target is a section but there is no input slot', + ); + } + } + // Check if the source supports emitting multiple outputs. // NOTE: All nodes supports "Many" inputs so we don't need to check that. const outputCardinality = getOutputCardinality(sourceNode.type); From d31a114a85b16f69ade2e04c98b860d868b9badf Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 7 Aug 2025 02:54:59 +0000 Subject: [PATCH 131/165] add more connection tests Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/edges/buffer-edge.tsx | 2 +- diagram-editor/frontend/edges/create-edge.ts | 11 ++- .../frontend/edges/default-edge.tsx | 4 +- diagram-editor/frontend/edges/index.ts | 4 +- .../frontend/edges/stream-out-edge.tsx | 4 +- .../frontend/utils/connection.test.ts | 81 +++++++++++++++++++ 6 files changed, 95 insertions(+), 11 deletions(-) diff --git a/diagram-editor/frontend/edges/buffer-edge.tsx b/diagram-editor/frontend/edges/buffer-edge.tsx index 281e6d6c..94732815 100644 --- a/diagram-editor/frontend/edges/buffer-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-edge.tsx @@ -1,7 +1,7 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; +import { memo } from 'react'; import type { Edge } from '../types/react-flow'; import type { SectionBufferSlotData } from './section-edge'; -import { memo } from 'react'; export type BufferKeySlotData = { type: 'bufferKey'; diff --git a/diagram-editor/frontend/edges/create-edge.ts b/diagram-editor/frontend/edges/create-edge.ts index 1d6de9de..a243d804 100644 --- a/diagram-editor/frontend/edges/create-edge.ts +++ b/diagram-editor/frontend/edges/create-edge.ts @@ -2,6 +2,8 @@ import { MarkerType } from '@xyflow/react'; import { v4 as uuidv4 } from 'uuid'; import type { DiagramEditorEdge, EdgeOutputData } from '.'; import type { BufferKeySlotData, BufferSeqSlotData } from './buffer-edge'; +import type { DefaultEdge } from './default-edge'; +import type { SectionBufferSlotData } from './section-edge'; export function createBaseEdge( source: string, @@ -14,8 +16,8 @@ export function createBaseEdge( target, markerEnd: { type: MarkerType.ArrowClosed, - width: 24, - height: 24, + width: 20, + height: 20, }, }; } @@ -23,11 +25,12 @@ export function createBaseEdge( export function createDefaultEdge( source: string, target: string, + inputSlot?: DefaultEdge['data']['input'], ): DiagramEditorEdge<'default'> { return { ...createBaseEdge(source, target), type: 'default', - data: { output: {}, input: { type: 'default' } }, + data: { output: {}, input: inputSlot || { type: 'default' } }, }; } @@ -106,7 +109,7 @@ export function createSplitRemainingEdge( export function createBufferEdge( source: string, target: string, - data: BufferKeySlotData | BufferSeqSlotData, + data: BufferKeySlotData | BufferSeqSlotData | SectionBufferSlotData, ): DiagramEditorEdge<'buffer'> { return { ...createBaseEdge(source, target), diff --git a/diagram-editor/frontend/edges/default-edge.tsx b/diagram-editor/frontend/edges/default-edge.tsx index 23e66dd7..19bd7d02 100644 --- a/diagram-editor/frontend/edges/default-edge.tsx +++ b/diagram-editor/frontend/edges/default-edge.tsx @@ -2,9 +2,9 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; import type { DataEdge } from '.'; -export type DefaultOutputData = Record; +export type DefaultEdgeOutputData = Record; -export type DefaultEdge = DataEdge; +export type DefaultEdge = DataEdge; export type DefaultEdgeCompProps = Omit, 'label'>; diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index 54ec3878..2c300d25 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -29,12 +29,12 @@ export type { SplitSeqEdge } from './split-seq-edge'; export type { StreamOutEdge } from './stream-out-edge'; export type { UnzipEdge } from './unzip-edge'; -export type DefaultInputData = { type: 'default' }; +export type DefaultInputSlotData = { type: 'default' }; export type DataEdge< O extends Record, S extends string, -> = Edge; +> = Edge; export type EdgeMapping = { default: DefaultEdge; diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index 0834b7f2..53acbae2 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -1,7 +1,7 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; import type { Edge } from '../types/react-flow'; -import type { DefaultInputData } from '.'; +import type { DefaultInputSlotData } from '.'; export type StreamOutOutputData = { name: string; @@ -9,7 +9,7 @@ export type StreamOutOutputData = { export type StreamOutEdge = Edge< StreamOutOutputData, - DefaultInputData, + DefaultInputSlotData, 'streamOut' >; diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index a0b7c04d..31f85a2f 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -411,4 +411,85 @@ describe('validate edges', () => { expect(result.valid).toBe(false); } }); + + test('buffer edges connecting to a section must have "sectionBuffer" input', () => { + const bufferNode = createOperationNode( + ROOT_NAMESPACE, + undefined, + { x: 0, y: 0 }, + { + type: 'buffer', + }, + 'test_op_buffer', + ); + const sectionNode = createOperationNode( + ROOT_NAMESPACE, + undefined, + { x: 0, y: 0 }, + { type: 'section', builder: 'test_section' }, + 'test_op_section', + ); + + { + const reactFlow = new MockReactFlowAccessor( + [bufferNode, sectionNode], + [], + ); + const edge = createBufferEdge(bufferNode.id, sectionNode.id, { + type: 'bufferSeq', + seq: 0, + }); + const result = validateEdgeSimple(edge, reactFlow); + expect(result.valid).toBe(false); + } + { + const reactFlow = new MockReactFlowAccessor( + [bufferNode, sectionNode], + [], + ); + const edge = createBufferEdge(bufferNode.id, sectionNode.id, { + type: 'sectionBuffer', + inputId: 'test', + }); + const result = validateEdgeSimple(edge, reactFlow); + expect(result.valid).toBe(true); + } + }); + + test('data edges connecting to a section must have "sectionInput" input', () => { + const nodeNode = createOperationNode( + ROOT_NAMESPACE, + undefined, + { x: 0, y: 0 }, + { + type: 'node', + builder: 'test_builder', + next: { builtin: 'dispose' }, + }, + 'test_op_node', + ); + const sectionNode = createOperationNode( + ROOT_NAMESPACE, + undefined, + { x: 0, y: 0 }, + { type: 'section', builder: 'test_section' }, + 'test_op_section', + ); + + { + const reactFlow = new MockReactFlowAccessor([nodeNode, sectionNode], []); + const edge = createDefaultEdge(nodeNode.id, sectionNode.id); + const result = validateEdgeSimple(edge, reactFlow); + expect(result.valid).toBe(false); + } + { + const reactFlow = new MockReactFlowAccessor([nodeNode, sectionNode], []); + const edge = createDefaultEdge(nodeNode.id, sectionNode.id, { + type: 'sectionInput', + inputId: 'test', + }); + const result = validateEdgeSimple(edge, reactFlow); + expect(result.valid).toBe(true); + } + }); }); From bc73def4226354ac657c9cc73589ad981671657a Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 7 Aug 2025 04:54:00 +0000 Subject: [PATCH 132/165] refactor Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/edges/buffer-edge.tsx | 18 ++++------- diagram-editor/frontend/edges/create-edge.ts | 12 +++++-- diagram-editor/frontend/edges/data-edge.ts | 10 ++++++ .../frontend/edges/default-edge.tsx | 2 +- .../frontend/edges/fork-result-err-edge.tsx | 2 +- .../frontend/edges/fork-result-ok-edge.tsx | 2 +- diagram-editor/frontend/edges/index.ts | 31 +++++++++---------- diagram-editor/frontend/edges/input-slots.ts | 21 +++++++++++++ .../frontend/edges/section-edge.tsx | 12 +------ .../frontend/edges/split-key-edge.tsx | 2 +- .../frontend/edges/split-remaining-edge.tsx | 2 +- .../frontend/edges/split-seq-edge.tsx | 2 +- .../frontend/edges/stream-out-edge.tsx | 2 +- diagram-editor/frontend/edges/unzip-edge.tsx | 2 +- 14 files changed, 70 insertions(+), 50 deletions(-) create mode 100644 diagram-editor/frontend/edges/data-edge.ts create mode 100644 diagram-editor/frontend/edges/input-slots.ts diff --git a/diagram-editor/frontend/edges/buffer-edge.tsx b/diagram-editor/frontend/edges/buffer-edge.tsx index 94732815..fc7c5847 100644 --- a/diagram-editor/frontend/edges/buffer-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-edge.tsx @@ -1,23 +1,17 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; import type { Edge } from '../types/react-flow'; -import type { SectionBufferSlotData } from './section-edge'; - -export type BufferKeySlotData = { - type: 'bufferKey'; - key: string; -}; - -export type BufferSeqSlotData = { - type: 'bufferSeq'; - seq: number; -}; +import type { + BufferKeyInputSlotData, + BufferSeqInputSlotData, + SectionBufferInputSlotData, +} from './input-slots'; export type BufferOutputData = Record; export type BufferEdge = Edge< BufferOutputData, - BufferKeySlotData | BufferSeqSlotData | SectionBufferSlotData, + BufferKeyInputSlotData | BufferSeqInputSlotData | SectionBufferInputSlotData, 'buffer' >; diff --git a/diagram-editor/frontend/edges/create-edge.ts b/diagram-editor/frontend/edges/create-edge.ts index a243d804..9f78662b 100644 --- a/diagram-editor/frontend/edges/create-edge.ts +++ b/diagram-editor/frontend/edges/create-edge.ts @@ -1,9 +1,12 @@ import { MarkerType } from '@xyflow/react'; import { v4 as uuidv4 } from 'uuid'; import type { DiagramEditorEdge, EdgeOutputData } from '.'; -import type { BufferKeySlotData, BufferSeqSlotData } from './buffer-edge'; import type { DefaultEdge } from './default-edge'; -import type { SectionBufferSlotData } from './section-edge'; +import type { + BufferKeyInputSlotData, + BufferSeqInputSlotData, + SectionBufferInputSlotData, +} from './input-slots'; export function createBaseEdge( source: string, @@ -109,7 +112,10 @@ export function createSplitRemainingEdge( export function createBufferEdge( source: string, target: string, - data: BufferKeySlotData | BufferSeqSlotData | SectionBufferSlotData, + data: + | BufferKeyInputSlotData + | BufferSeqInputSlotData + | SectionBufferInputSlotData, ): DiagramEditorEdge<'buffer'> { return { ...createBaseEdge(source, target), diff --git a/diagram-editor/frontend/edges/data-edge.ts b/diagram-editor/frontend/edges/data-edge.ts new file mode 100644 index 00000000..91fe10ba --- /dev/null +++ b/diagram-editor/frontend/edges/data-edge.ts @@ -0,0 +1,10 @@ +import type { Edge } from '../types/react-flow'; +import type { DefaultInputSlotData, SectionInputSlotData } from './input-slots'; + +/** + * A specialization of `Edge` that enforces the edge input slot data is valid for data edges. + */ +export type DataEdge< + O extends Record, + S extends string, +> = Edge; diff --git a/diagram-editor/frontend/edges/default-edge.tsx b/diagram-editor/frontend/edges/default-edge.tsx index 19bd7d02..2d1d33cb 100644 --- a/diagram-editor/frontend/edges/default-edge.tsx +++ b/diagram-editor/frontend/edges/default-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type DefaultEdgeOutputData = Record; diff --git a/diagram-editor/frontend/edges/fork-result-err-edge.tsx b/diagram-editor/frontend/edges/fork-result-err-edge.tsx index 28d54b97..f774123e 100644 --- a/diagram-editor/frontend/edges/fork-result-err-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-err-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type ForkResultErrOutputData = Record; export type ForkResultErrEdge = DataEdge< diff --git a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx index fee07a02..d252cab6 100644 --- a/diagram-editor/frontend/edges/fork-result-ok-edge.tsx +++ b/diagram-editor/frontend/edges/fork-result-ok-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type ForkResultOkOutputData = Record; export type ForkResultOkEdge = DataEdge; diff --git a/diagram-editor/frontend/edges/index.ts b/diagram-editor/frontend/edges/index.ts index 2c300d25..ba2f8b79 100644 --- a/diagram-editor/frontend/edges/index.ts +++ b/diagram-editor/frontend/edges/index.ts @@ -1,5 +1,5 @@ -import type { Edge } from '../types/react-flow'; import { type BufferEdge, BufferEdgeComp } from './buffer-edge'; +import type { DataEdge } from './data-edge'; import { type DefaultEdge, DefaultEdgeComp } from './default-edge'; import ForkResultErrEdgeComp, { type ForkResultErrEdge, @@ -7,11 +7,7 @@ import ForkResultErrEdgeComp, { import ForkResultOkEdgeComp, { type ForkResultOkEdge, } from './fork-result-ok-edge'; -import { - type SectionEdge, - type SectionInputSlotData, - SectionOutputEdgeComp, -} from './section-edge'; +import { type SectionEdge, SectionOutputEdgeComp } from './section-edge'; import SplitKeyEdgeComp, { type SplitKeyEdge } from './split-key-edge'; import SplitRemainingEdgeComp, { type SplitRemainingEdge, @@ -22,6 +18,7 @@ import UnzipEdgeComp, { type UnzipEdge } from './unzip-edge'; export type { BufferEdge } from './buffer-edge'; export * from './create-edge'; +export type * from './input-slots'; export type { SectionEdge } from './section-edge'; export type { SplitKeyEdge } from './split-key-edge'; export type { SplitRemainingEdge } from './split-remaining-edge'; @@ -29,14 +26,7 @@ export type { SplitSeqEdge } from './split-seq-edge'; export type { StreamOutEdge } from './stream-out-edge'; export type { UnzipEdge } from './unzip-edge'; -export type DefaultInputSlotData = { type: 'default' }; - -export type DataEdge< - O extends Record, - S extends string, -> = Edge; - -export type EdgeMapping = { +type EdgeMapping = { default: DefaultEdge; unzip: UnzipEdge; forkResultOk: ForkResultOkEdge; @@ -56,6 +46,9 @@ export type EdgeData = EdgeMapping[K]['data']; export type EdgeOutputData = EdgeData['output']; +export type EdgeInputData = + EdgeData['input']; + export const EDGE_TYPES = { default: DefaultEdgeComp, unzip: UnzipEdgeComp, @@ -77,7 +70,7 @@ export enum EdgeCategory { Stream, } -export const EDGE_CATEGORIES: Record = { +export const EDGE_CATEGORIES = { buffer: EdgeCategory.Buffer, forkResultOk: EdgeCategory.Data, forkResultErr: EdgeCategory.Data, @@ -88,7 +81,13 @@ export const EDGE_CATEGORIES: Record = { streamOut: EdgeCategory.Stream, unzip: EdgeCategory.Data, section: EdgeCategory.Data, -}; +} satisfies Record; + +export type DataEdgeTypes = { + [K in EdgeTypes]: (typeof EDGE_CATEGORIES)[K] extends EdgeCategory.Data + ? K + : never; +}[EdgeTypes]; export function isDataEdge( edge: DiagramEditorEdge, diff --git a/diagram-editor/frontend/edges/input-slots.ts b/diagram-editor/frontend/edges/input-slots.ts new file mode 100644 index 00000000..c3547ddf --- /dev/null +++ b/diagram-editor/frontend/edges/input-slots.ts @@ -0,0 +1,21 @@ +export type DefaultInputSlotData = { type: 'default' }; + +export type SectionInputSlotData = { + type: 'sectionInput'; + inputId: string; +}; + +export type BufferKeyInputSlotData = { + type: 'bufferKey'; + key: string; +}; + +export type BufferSeqInputSlotData = { + type: 'bufferSeq'; + seq: number; +}; + +export type SectionBufferInputSlotData = { + type: 'sectionBuffer'; + inputId: string; +}; diff --git a/diagram-editor/frontend/edges/section-edge.tsx b/diagram-editor/frontend/edges/section-edge.tsx index 803f8ebc..524f3e51 100644 --- a/diagram-editor/frontend/edges/section-edge.tsx +++ b/diagram-editor/frontend/edges/section-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type SectionOutputData = { output: string; @@ -13,13 +13,3 @@ export type SectionOutputEdgeProps = Exclude, 'label'>; export const SectionOutputEdgeComp = memo((props: SectionOutputEdgeProps) => { return ; }); - -export type SectionInputSlotData = { - type: 'sectionInput'; - inputId: string; -}; - -export type SectionBufferSlotData = { - type: 'sectionBuffer'; - inputId: string; -}; diff --git a/diagram-editor/frontend/edges/split-key-edge.tsx b/diagram-editor/frontend/edges/split-key-edge.tsx index 6989a661..63ec9de7 100644 --- a/diagram-editor/frontend/edges/split-key-edge.tsx +++ b/diagram-editor/frontend/edges/split-key-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type SplitKeyOutputData = { key: string; diff --git a/diagram-editor/frontend/edges/split-remaining-edge.tsx b/diagram-editor/frontend/edges/split-remaining-edge.tsx index 65dd1e73..c53ce5a5 100644 --- a/diagram-editor/frontend/edges/split-remaining-edge.tsx +++ b/diagram-editor/frontend/edges/split-remaining-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type SplitRemainingOutputData = Record; export type SplitRemainingEdge = DataEdge< diff --git a/diagram-editor/frontend/edges/split-seq-edge.tsx b/diagram-editor/frontend/edges/split-seq-edge.tsx index 1d6e68e5..bd2e75ee 100644 --- a/diagram-editor/frontend/edges/split-seq-edge.tsx +++ b/diagram-editor/frontend/edges/split-seq-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type SplitSeqOutputData = { seq: number; diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index 53acbae2..ff9defa7 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -1,7 +1,7 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; import type { Edge } from '../types/react-flow'; -import type { DefaultInputSlotData } from '.'; +import type { DefaultInputSlotData } from './input-slots'; export type StreamOutOutputData = { name: string; diff --git a/diagram-editor/frontend/edges/unzip-edge.tsx b/diagram-editor/frontend/edges/unzip-edge.tsx index 72acdf7f..c19c31fc 100644 --- a/diagram-editor/frontend/edges/unzip-edge.tsx +++ b/diagram-editor/frontend/edges/unzip-edge.tsx @@ -1,6 +1,6 @@ import { type EdgeProps, StepEdge } from '@xyflow/react'; import { memo } from 'react'; -import type { DataEdge } from '.'; +import type { DataEdge } from './data-edge'; export type UnzipOutputData = { seq: number; From 2ef857e0417314a9f4813d2234b6d7704a980baa Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 7 Aug 2025 08:18:35 +0000 Subject: [PATCH 133/165] cleanup Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index dd142b51..90381ada 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -293,8 +293,6 @@ function DiagramEditor() { }, }); } - // changePosition.x -= Math.round(calculatedBounds.x); - // changePosition.y -= Math.round(calculatedBounds.y); } } From a6a96b5444adb7debaede7e4eeb0d08330880126 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 03:03:07 +0000 Subject: [PATCH 134/165] color code buffer handles; join node no longer allows data edges Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/app.css | 11 ++++- diagram-editor/frontend/nodes/base-node.tsx | 42 ++++++++++++++++++- diagram-editor/frontend/nodes/buffer-node.tsx | 2 + diagram-editor/frontend/nodes/join-node.tsx | 2 + .../frontend/utils/connection.test.ts | 5 +-- diagram-editor/frontend/utils/connection.ts | 4 +- 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/diagram-editor/frontend/app.css b/diagram-editor/frontend/app.css index e5bb07a5..20f19c2a 100644 --- a/diagram-editor/frontend/app.css +++ b/diagram-editor/frontend/app.css @@ -23,8 +23,15 @@ top: -100%; } .react-flow__handle.connectingto { - background: var(--mui-palette-error-main); + background-color: var(--mui-palette-error-main); } .react-flow__handle.valid { - background: var(--mui-palette-success-main); + background-color: var(--mui-palette-success-main); } +.react-flow__handle.handle-buffer { + background-color: var(--mui-palette-secondary-main); +} +/* Some operations can output either Data or Stream so we cannot color code Stream handles. */ +/* .react-flow__handle.handle-stream { + background-color: var(--mui-palette-warning-main); +} */ diff --git a/diagram-editor/frontend/nodes/base-node.tsx b/diagram-editor/frontend/nodes/base-node.tsx index 5242cfbe..01ebd9b3 100644 --- a/diagram-editor/frontend/nodes/base-node.tsx +++ b/diagram-editor/frontend/nodes/base-node.tsx @@ -1,6 +1,8 @@ import { Box, Button, type ButtonProps, Paper } from '@mui/material'; import { Handle, type NodeProps, Position } from '@xyflow/react'; -import React from 'react'; +import { memo, useCallback } from 'react'; +import { EdgeCategory } from '../edges'; +import { exhaustiveCheck } from '../utils/exhaustive-check'; import { LAYOUT_OPTIONS } from '../utils/layout'; export interface BaseNodeProps extends NodeProps { @@ -8,6 +10,14 @@ export interface BaseNodeProps extends NodeProps { icon?: React.JSX.Element | string; label: string; variant: 'input' | 'output' | 'inputOutput'; + /** + * defaults to `EdgeCateogry.Data`. + */ + inputHandleType?: EdgeCategory; + /** + * defaults to `EdgeCateogry.Data`. + */ + outputHandleType?: EdgeCategory; } function BaseNode({ @@ -15,6 +25,8 @@ function BaseNode({ icon: materialIconOrSymbol, label, variant, + inputHandleType = EdgeCategory.Data, + outputHandleType = EdgeCategory.Data, isConnectable, selected, sourcePosition = Position.Bottom, @@ -26,6 +38,30 @@ function BaseNode({ ) : ( materialIconOrSymbol ); + + const handleClassName = useCallback((handleType?: EdgeCategory) => { + if (handleType === undefined) { + return undefined; + } + + switch (handleType) { + case EdgeCategory.Data: { + // use the default style + return undefined; + } + case EdgeCategory.Buffer: { + return 'handle-buffer'; + } + case EdgeCategory.Stream: { + return undefined; + } + default: { + exhaustiveCheck(handleType); + throw new Error('unknown edge category'); + } + } + }, []); + return ( {(variant === 'input' || variant === 'inputOutput') && ( @@ -33,6 +69,7 @@ function BaseNode({ type="target" position={targetPosition} isConnectable={isConnectable} + className={handleClassName(inputHandleType)} /> )} {(variant === 'output' || variant === 'inputOutput') && ( ) { icon={} label="Section Input" variant="output" + caption={props.data.remappedId} /> ); } @@ -74,6 +75,7 @@ export function SectionOutputNodeComp(props: NodeProps) { icon={} label="Section Output" variant="input" + caption={props.data.outputId} /> ); } @@ -86,6 +88,7 @@ export function SectionBufferNodeComp(props: NodeProps) { icon={} label="Section Buffer" variant="output" + caption={props.data.remappedId} /> ); } From 9b1ea9e860c1052a9d4a72e8ead855bd4f975f07 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 03:14:25 +0000 Subject: [PATCH 136/165] add script to check typescript Signed-off-by: Teo Koon Peng --- diagram-editor/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/diagram-editor/package.json b/diagram-editor/package.json index 20ceb1b2..41f1f469 100644 --- a/diagram-editor/package.json +++ b/diagram-editor/package.json @@ -8,6 +8,7 @@ "generate-types": "node scripts/generate-types.mjs", "test": "jest --watch", "check": "biome check --write", + "check:ts": "tsc --noEmit", "dev": "rsbuild dev --open", "dev:backend": "cargo run --manifest-path ../examples/diagram/calculator/Cargo.toml --no-default-features -F api -- serve --port 3001", "format": "biome format --write", From b038c376b0ddbfd7ea1c46385b6ccda452ee99a7 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 05:07:15 +0000 Subject: [PATCH 137/165] color code nodes with multiple output and input types Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 14 +++++++ diagram-editor/frontend/app.css | 30 ++++++++++----- diagram-editor/frontend/nodes/base-node.tsx | 37 +++++++++++++------ .../frontend/nodes/buffer-access-node.tsx | 3 +- diagram-editor/frontend/nodes/join-node.tsx | 5 +-- diagram-editor/frontend/nodes/node-node.tsx | 3 +- .../frontend/nodes/stream-out-node.tsx | 3 +- 7 files changed, 67 insertions(+), 28 deletions(-) diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 4be711c8..bebe041b 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -32,6 +32,7 @@ import { type SectionOutputNode, SerializedJoinIcon, SplitIcon, + StreamOutIcon, TransformIcon, UnzipIcon, } from './nodes'; @@ -308,6 +309,19 @@ function AddOperation({ parentId, newNodePosition, onAdd }: AddOperationProps) { > Listen + } + onClick={() => + onAdd?.( + createNodeChange(namespace, parentId, newNodePosition, { + type: 'stream_out', + name: '', + }), + ) + } + > + Stream Out + } onClick={() => diff --git a/diagram-editor/frontend/app.css b/diagram-editor/frontend/app.css index 20f19c2a..3cdf9ce0 100644 --- a/diagram-editor/frontend/app.css +++ b/diagram-editor/frontend/app.css @@ -22,16 +22,26 @@ left: -150%; top: -100%; } -.react-flow__handle.connectingto { - background-color: var(--mui-palette-error-main); -} -.react-flow__handle.valid { - background-color: var(--mui-palette-success-main); +.react-flow__handle.handle-data { + background-color: var(--xy-handle-background-color-default); } .react-flow__handle.handle-buffer { - background-color: var(--mui-palette-secondary-main); + background-color: var(--mui-palette-secondary-dark); +} +.react-flow__handle.handle-stream { + background-color: var(--mui-palette-warning-dark); +} +.react-flow__handle.handle-data-buffer { + background: linear-gradient( + -45deg, + var(--mui-palette-secondary-dark) 50%, + var(--xy-handle-background-color-default) 50% + ); +} +.react-flow__handle.handle-data-stream { + background: linear-gradient( + -45deg, + var(--mui-palette-warning-dark) 50%, + var(--xy-handle-background-color-default) 50% + ); } -/* Some operations can output either Data or Stream so we cannot color code Stream handles. */ -/* .react-flow__handle.handle-stream { - background-color: var(--mui-palette-warning-main); -} */ diff --git a/diagram-editor/frontend/nodes/base-node.tsx b/diagram-editor/frontend/nodes/base-node.tsx index 0ec8b76f..29a20689 100644 --- a/diagram-editor/frontend/nodes/base-node.tsx +++ b/diagram-editor/frontend/nodes/base-node.tsx @@ -8,23 +8,30 @@ import { } from '@mui/material'; import { Handle, type NodeProps, Position } from '@xyflow/react'; import { memo, useCallback } from 'react'; -import { EdgeCategory } from '../edges'; import { exhaustiveCheck } from '../utils/exhaustive-check'; import { LAYOUT_OPTIONS } from '../utils/layout'; +export enum HandleType { + Data, + Buffer, + Stream, + DataBuffer, + DataStream, +} + export interface BaseNodeProps extends NodeProps { color?: ButtonProps['color']; icon?: React.JSX.Element | string; label: string; variant: 'input' | 'output' | 'inputOutput'; /** - * defaults to `EdgeCateogry.Data`. + * defaults to `HandleType.Data`. */ - inputHandleType?: EdgeCategory; + inputHandleType?: HandleType; /** - * defaults to `EdgeCateogry.Data`. + * defaults to `HandleType.Data`. */ - outputHandleType?: EdgeCategory; + outputHandleType?: HandleType; caption?: string; } @@ -33,8 +40,8 @@ function BaseNode({ icon: materialIconOrSymbol, label, variant, - inputHandleType = EdgeCategory.Data, - outputHandleType = EdgeCategory.Data, + inputHandleType = HandleType.Data, + outputHandleType = HandleType.Data, caption, isConnectable, selected, @@ -48,21 +55,27 @@ function BaseNode({ materialIconOrSymbol ); - const handleClassName = useCallback((handleType?: EdgeCategory) => { + const handleClassName = useCallback((handleType?: HandleType) => { if (handleType === undefined) { return undefined; } switch (handleType) { - case EdgeCategory.Data: { + case HandleType.Data: { // use the default style return undefined; } - case EdgeCategory.Buffer: { + case HandleType.Buffer: { return 'handle-buffer'; } - case EdgeCategory.Stream: { - return undefined; + case HandleType.Stream: { + return 'handle-stream'; + } + case HandleType.DataBuffer: { + return 'handle-data-buffer'; + } + case HandleType.DataStream: { + return 'handle-data-stream'; } default: { exhaustiveCheck(handleType); diff --git a/diagram-editor/frontend/nodes/buffer-access-node.tsx b/diagram-editor/frontend/nodes/buffer-access-node.tsx index f60b0a27..f354b3fa 100644 --- a/diagram-editor/frontend/nodes/buffer-access-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-access-node.tsx @@ -1,6 +1,6 @@ import type { NodeProps } from '@xyflow/react'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { BufferAccessIcon } from './icons'; function BufferAccessNodeComp( @@ -12,6 +12,7 @@ function BufferAccessNodeComp( icon={} label="Buffer Access" variant="inputOutput" + inputHandleType={HandleType.DataBuffer} /> ); } diff --git a/diagram-editor/frontend/nodes/join-node.tsx b/diagram-editor/frontend/nodes/join-node.tsx index 5e0ae932..65408e59 100644 --- a/diagram-editor/frontend/nodes/join-node.tsx +++ b/diagram-editor/frontend/nodes/join-node.tsx @@ -1,7 +1,6 @@ import type { NodeProps } from '@xyflow/react'; -import { EdgeCategory } from '../edges'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { JoinIcon } from './icons'; function JoinNodeComp(props: NodeProps>) { @@ -11,7 +10,7 @@ function JoinNodeComp(props: NodeProps>) { icon={} label="Join" variant="inputOutput" - inputHandleType={EdgeCategory.Buffer} + inputHandleType={HandleType.Buffer} /> ); } diff --git a/diagram-editor/frontend/nodes/node-node.tsx b/diagram-editor/frontend/nodes/node-node.tsx index b7f55267..1373681f 100644 --- a/diagram-editor/frontend/nodes/node-node.tsx +++ b/diagram-editor/frontend/nodes/node-node.tsx @@ -1,6 +1,6 @@ import type { NodeProps } from '@xyflow/react'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { NodeIcon } from './icons'; function NodeNodeComp(props: NodeProps>) { @@ -10,6 +10,7 @@ function NodeNodeComp(props: NodeProps>) { icon={} label={props.data.op.builder ?? ''} variant="inputOutput" + outputHandleType={HandleType.DataStream} /> ); } diff --git a/diagram-editor/frontend/nodes/stream-out-node.tsx b/diagram-editor/frontend/nodes/stream-out-node.tsx index b502a4d0..34b5c547 100644 --- a/diagram-editor/frontend/nodes/stream-out-node.tsx +++ b/diagram-editor/frontend/nodes/stream-out-node.tsx @@ -1,6 +1,6 @@ import type { NodeProps } from '@xyflow/react'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { StreamOutIcon } from './icons'; function StreamOutNodeComp(props: NodeProps>) { @@ -10,6 +10,7 @@ function StreamOutNodeComp(props: NodeProps>) { icon={} label="StreamOut" variant="input" + inputHandleType={HandleType.Stream} /> ); } From 98dcaa5ef777be98baf71dddb6f309f7585d1891 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 05:12:11 +0000 Subject: [PATCH 138/165] add color coding to other nodes Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/nodes/listen-node.tsx | 3 ++- diagram-editor/frontend/nodes/scope-node.tsx | 1 + diagram-editor/frontend/nodes/section-node.tsx | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/diagram-editor/frontend/nodes/listen-node.tsx b/diagram-editor/frontend/nodes/listen-node.tsx index 9c4f82a9..da549d70 100644 --- a/diagram-editor/frontend/nodes/listen-node.tsx +++ b/diagram-editor/frontend/nodes/listen-node.tsx @@ -1,6 +1,6 @@ import type { NodeProps } from '@xyflow/react'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { ListenIcon } from './icons'; function ListenNodeComp(props: NodeProps>) { @@ -10,6 +10,7 @@ function ListenNodeComp(props: NodeProps>) { icon={} label="Listen" variant="inputOutput" + inputHandleType={HandleType.Buffer} /> ); } diff --git a/diagram-editor/frontend/nodes/scope-node.tsx b/diagram-editor/frontend/nodes/scope-node.tsx index 3ebb17d0..3bf00e7b 100644 --- a/diagram-editor/frontend/nodes/scope-node.tsx +++ b/diagram-editor/frontend/nodes/scope-node.tsx @@ -33,6 +33,7 @@ function ScopeNodeComp({ type="source" position={sourcePosition} isConnectable={isConnectable} + className="handle-data-stream" /> ); diff --git a/diagram-editor/frontend/nodes/section-node.tsx b/diagram-editor/frontend/nodes/section-node.tsx index e137bddb..d21d1f6b 100644 --- a/diagram-editor/frontend/nodes/section-node.tsx +++ b/diagram-editor/frontend/nodes/section-node.tsx @@ -3,7 +3,7 @@ import type { NextOperation } from '../types/api'; import type { Node } from '../types/react-flow'; import { isSectionBuilder } from '../utils/operation'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { SectionBufferIcon, SectionIcon, @@ -43,6 +43,7 @@ export function SectionNodeComp(props: NodeProps>) { icon={} label={label} variant="inputOutput" + inputHandleType={HandleType.DataBuffer} /> ); } @@ -89,6 +90,7 @@ export function SectionBufferNodeComp(props: NodeProps) { label="Section Buffer" variant="output" caption={props.data.remappedId} + outputHandleType={HandleType.Buffer} /> ); } From 031c86c4bd740822acbeb6424ed2992ac7164ff8 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 08:02:15 +0000 Subject: [PATCH 139/165] cleanup Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/nodes/scope-node.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/diagram-editor/frontend/nodes/scope-node.tsx b/diagram-editor/frontend/nodes/scope-node.tsx index 3bf00e7b..91062e1f 100644 --- a/diagram-editor/frontend/nodes/scope-node.tsx +++ b/diagram-editor/frontend/nodes/scope-node.tsx @@ -23,7 +23,6 @@ function ScopeNodeComp({ opacity: 0.2, backgroundColor: theme.palette.secondary.main, borderRadius: 4, - borderColor: 'red', width, height, cursor: 'pointer', From 4543a32ed73b13e6808b21501f599377d7f62a96 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 08:48:51 +0000 Subject: [PATCH 140/165] add README Signed-off-by: Teo Koon Peng --- diagram-editor/README.md | 57 +++++++++++++++--- .../docs/assets/diagram-editor-preview.webp | Bin 0 -> 60560 bytes 2 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 diagram-editor/docs/assets/diagram-editor-preview.webp diff --git a/diagram-editor/README.md b/diagram-editor/README.md index 5fc0306f..9251de71 100644 --- a/diagram-editor/README.md +++ b/diagram-editor/README.md @@ -1,4 +1,8 @@ -# Rsbuild project +# bevy_impulse_diagram_editor + +![](./docs/assets/diagram-editor-preview.webp) + +This contains a SPA React web app to create and edit a `bevy_impulse` diagram and an axum router to serve it. ## Setup @@ -8,22 +12,59 @@ Install the dependencies: pnpm install ``` -## Get started +## Embedding the Diagram Editor into a `bevy_impulse` app + +The frontend is built using `rsbuild` and embedded inside the crate. The library exposes an axum router that can be used to serve both the frontend and backend: + +```rs +use bevy_impulse_diagram_editor::{new_router, ServerOptions}; + +fn main() { + let mut registry = DiagramElementRegistry::new(); + // register node builders, section builders etc. -Start the dev server: + let mut app = bevy_app::App::new(); + app.add_plugins(ImpulseAppPlugin::default()); + let router = new_router(&mut app, registry, ServerOptions::default()); + let listener = tokio::net::TcpListener::bind(("localhost", 3000)) + .await + .unwrap(); + axum::serve(listener, router).await?; +} +``` + +To omit the frontend and serve only the backend API, disable the default features: + +```toml +[dependencies] +bevy_impulse_diagram_editor = { version = "0.0.1", default-features = false } +``` + +See the [calculator demo](../examples/diagram/calculator) for more examples. + +## Local development server + +Normally the web stack is not required by using this crate as a dependency, but it is required when developing the frontend. + +Requirements: + +* nodejs +* pnpm + +First start the `dev` backend server: ```bash -pnpm dev +pnpm dev:backend ``` -Build the app for production: +then in another terminal, start the frontend `dev` server: ```bash -pnpm build +pnpm dev ``` -Preview the production build locally: +When there are breaking changes in `bevy_impulse`, the typescript definitions need to be regenerated: ```bash -pnpm preview +pnpm generate-types ``` diff --git a/diagram-editor/docs/assets/diagram-editor-preview.webp b/diagram-editor/docs/assets/diagram-editor-preview.webp new file mode 100644 index 0000000000000000000000000000000000000000..988a56fc2ebb7a8883827a77bb817e7099c2b36d GIT binary patch literal 60560 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 WrG8P@-aB=WU_bx>000000001c(Kej` literal 0 HcmV?d00001 From 10aaf4604e27c5cdc6489815a6b9a594d29e2471 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 08:53:22 +0000 Subject: [PATCH 141/165] test png Signed-off-by: Teo Koon Peng --- .../docs/assets/diagram-editor-preview.png | Bin 0 -> 117336 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagram-editor/docs/assets/diagram-editor-preview.png diff --git a/diagram-editor/docs/assets/diagram-editor-preview.png b/diagram-editor/docs/assets/diagram-editor-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebaa4bbfeb6c64464881a256f149ad3bb5b7484 GIT binary patch literal 117336 zcmeFZ2UL^k);5geC^p2gp`hT5qc9d?1*FB%Q5;Y}Kv7y$5R?`=NJ(&17(qm3kU>gB z1`!b=A~l4d2#8280TL2AQbP#|r2hL!@XUMG_x|Vq&idE-*80|Yv(6bwdG6;f``-K7 z*S_xOuBows+zQ1NGBPr9zn=QVOh!f?{*-;Q>>Kze?`@1X{Ikg0%;19@{4@AIU5aEk3JByQ^01XVGzn*J4){=R2m6&HwRC zbD?K$Li%;Zs$aKIGpiU51iw-3DUCD9u2)q3=(Q*F=!d*w+TUC;^0Tjg?9jNjLg((v zyDNW|Iaqcnv;(~}^3B@4XMb24J``R*B(HZ+HvAS>^&3?Ejj1FRv!tY?@1TPVucK@K z>Qn#v2LA0fTz+)%-|z2!FC+K&yC1`34*mV^!KQB-{(g7#%Ci4}3mq0FtG(!Dt22Fv z4AEv+>`T3m8iTtBVhd{)A=BZvV$n6^-%C2|`}BRdDy492srTIAak-*n^a0nHdX-dZdlFdp zNGmQ`N0A2^&UuRdl1?3c{q0kvsZgF`>AWdS1I>AEBQ^-RSZ3suj3V;yi#X>ztE}@% zUU%TO`PSn!^u#XY^U!_&e+|s{Y}WZc^+mtO>m%*Sv>ex%KsFvU9XIrlj~{v{W|L}W zhKT+BjWi6mPCocq%6^QvSn`wnTU#YPm)Z8~eSOg+LCmE1-5DP0oEJ}}vWS0Jj@n43 zuS_FnvBc8XJeSpO8Rz~xPKgQk-x9ciLDP|r{nt-XUZC*(kLLO2?l6h3VhynPaqsAmfhiO& z+fR3*N%G^+z1yUl_1l34dGTD2L8;a}-8@=vuA@p>;5y#jaMM~|I2m1KYqjbmT#ue( z;$WZUm$&4k)A)Wv3A9q`^4&%&73z}4nfN|V+Y+SJvbJ@hOOZc*GwW&(;G@MS4~YI<6#>cp;*3AVoq|1*VG4P#`@PqGG|SlI=< zclI2X*B7kIb&3{~G4ok^RLZXViUqV!(-jJLZ%HD_k58mly5af@3 z{k?nLNasFfDvid%D#0!|>^15tt@M zL<%WjZ1CTU3|q$9WML6M#mMWeIdN7aj;MDg&8+B{_xckidhDZ@7JZS$^GoA&hraaT zXXm5E?~RfU3i9GYoIc=5mECI^qG209G zH(Y;07Q-E^y(Nng52{5Z&+`bxJ(zoW+9TKc2amHv-Kt8{XW%w->~Nf`TiT`*jh%*` zRnG}7O7`ML1M#poQ(#CxA#wJu`*oyYxhG({hQPc)eCszGO`m3_X3Lhc7{T7iLaC|* zcJoCO(Un%+Z2?6}8vd(SiP@@@x%Yjl$vj>FcTaY+_mjc2|T2HGZ*&6JwQ9yHZxR#$Xk5juiT>Jn!cs3fJxlxF(f-OYgxAO`7 z!Q*(rsCcwq(1ywP<5b%IgiJ-*#@7qcJdQ1sBCZ??xdzQ&XVKQ3Xk3RW zMn4~EH%w0!K^t>eLhzTFIN_I4YgQmv7TwX(Ha{Vc^I~TC+j0_BRd@pAHzs<*T5ZeX zGt;$hEM5hZj;Fcc*~cj{Sa+Ik^7U)MRFr7&CJSG#gBSHR)gwJQy6@|vT(Y+pR-^Fx z5zlTBgJ!Op6hau&W5-9Mr_%W1wji8Ftf5=bO>0&-uJ;ysdtAo~o(MlP6Pau7Y2hQc zxoEz@1V8=GD7EaJ68wFYTWsv~2I<4S)E|)hga&>m^)SagU=La+CK#tR%i_ED#_9Du z4#Lf))CUK9y7T4=DEZ=iQUSRvi>l+*_3@pKT|i07eg%Ug)Wof^IEjmDKl>HYyk3$V z{N<)v1gFc($=Z^6)#MtBW=m7yW)O8>kGD$9L&mytwKTT%##%-&L)a9lec&E8Ble-1 z9Lydj>dpD%rY#j`&d@Gwv)+?rXmIwem5uIH3l-C``_)DTO^mE$1P%)$Sj(EU6vHNK ze}FCSnV`)4klw{E))aQ&=RS5CPQiC$ZJH$^N-G^A}=w zd!2e)SkOg=Y3<9Fc$cSkZ`|D66i{~eNcW1bUAwkv%a+fMx#s5PH8nM!apnqV&YTGe z2~ko~YHn`cy?ZzE(fIf{BnfF|*ZutRZPcr5jctAW{r!D>KG)Y{3O!QHGCsgZt5&bh z&(AkLbH=tLAjc}J(zdRx#^J#6BvR1T zt5^N}{CsEU(Ysb3hem^f`0wAp7YKr1$T?lQ^fWJTmR{t&a^=dOH4=Ta$wAx+8+FYi zM~dFQUGIOy_hHSz(xpqyGFqU;42uX-V(~RMxABPy^|+dY2M@v>v$M1B-@hNJfU2vn zCuU_;KsVW3Zb4pN5*m-YeEG7y{q_m3e7jw-o#Y^YbMxkoT&KnET0)_4*e5VBu=v8B zO1R?f+qY~s`&CvJT%_L;*4)w2(b$;t_U$1}O$F!j;n7iAo(uK!=g-h@9xsqS&{C1C z7xW|{p*~rUR9Lvlf3I(2d%M=YeGjS~o;iFLVdn1!+OhYa zUCS#B=&<3(Uf8SdUTWOC>0bD|OS&>k`!4U>B!BB&fXu4O@=N=aWo}LF`}?ae@ERMl zv9n7~NFcQhT6EOa)m2nfY-9cQrekb!(nC8*ePd+GeOnkpczC#_rDa@P-0`g>A0MB4 z_wIeJt=)@4VO*GK>#MLnL?SAoR(F`Jc@-CbSx z#2O+!c=9AHJbZWTr|D_07v2n8l3&!ldwbN?m(o38dBVcNo~NhBJ$`&_D`}OSoUflB za^c>+OO6bkNpIf1efxZH>4iOEogQ9A^p77uR#u+OxvKc)TW&bRwRmrKN2ndO+lX&bYfH(@}RrNl_6xld86&um>z+mArhM zVOpVLU3dFC7Jdf(rQ;yykrQWZE1nfX(4J*uutv6~3XAPEPnR2K{?!_djcrj@PEJZ9FCDVzFfG8tQrp|x`}t|aRNvP2zWeNjjXE_Szbx>jo#8jnZa zN~yDPmUDt8$HL%Zt%C>GP3CLog_&nq{D#$%laqU=nK(N;8%p$W4jTDZ5R<#L$wS?y z@O4hkcO&WwXV*h62s^<>UBRRLqP2BGQc~9W%tcHM*m7V`8zU=T6MOxRm1hVwyJ?k0 zMMY*A>n9VP!Lz`8#v0z~@^HpSdmc`ti8(q%L4UHIz2(~2(#OJSVZBXHd;x=>Z_Ns^ zPO7;~ieiY0HA}cd$|2p{$3yj$HueZ5Zc{y)rr>8&Z5 z5Bi&!OY>-zD;3mjT!x3#BFtdnQy5Fqnumk+3Dpjd!HjI}cg9o?&9pk_S?sz~TnYAN zqh64ozj3mCM_kQe4UOzquWs`mzv@KY&FuRAcAx^7_=-Efg~j+N8gH7O54N}OL+sT5 z=M0NognH^=Neb>@8_cxZ)0FI-HjiDghGpIitMZGsw&bO(-|`K?OAUA}(o9r~SaIiA zyIi^-?N8%$WUtxUYb4YT&5VwYE{e8QR8sOTvVkS!?}7_9L{@}4b=*0Yl9RK)o6yF3 z5EfH2prN60{``3j>V+WFtn>KU$YxK4O$icOL08FtLr#t$sYHMgzALrZb&eF%)oH1b zzM_0}y!qyPs!3t%!eCifRmRj^(p@EW8=>z4Hm#~${Q9_J-AdWMn?;Y6j9=#F9-NRQ z@u4!yk4BbRiHz-V!UeMDD^^7UnT$-K+5ZLy)N*21Yy|1sZH_$2HKy_lSzJg~*5h7v zY2;oOE=>|lF{*^%LlbL5-F&C-8Z3OfEdC!~CeK+Re8b2`JU_C~NYdWld`51xh&m+V z8F^YRa*c6P5%xCAx?_ITsrt6g7)*`=qp|F6>XJd`iH8nIK z;mWhhL+!c!lGC+UC~3-du{2qHIsx$8YUi8$#cxBNe!nU1Bq5D}OkAkjLVoBP?xSs+ zbzW2RX8wjlw^d^e=i4OsDgUN)>Rz9*+jRe}{GlJ86dpwGy=LV?7OK${gS?k1tBJi& zlKdt8Pw4I)|3m%#Js(WjUS3{dO-AIz#6(U`4!}OMjJKtwK<4`90NQA5Y&^X)_syF(5KG~s z{o2UON$@|%lg{a6g!U9kWc_wL=>*Vm_~rj2NbkW)=Ej)vF0doa-3 zogUNk0_Yu&&j+Loi2-ztqPg?y{Qz0YkA${^Om8_4OHzjo(cszAPw!q~g%nkyZfECk+e$iIjQ2 zg!vQlxy0;jKyp$zi^TK)F6aZ&m3~#Vo9sf(E_8Vj=c=KzZ(jr8l+I2?|Gl$jYU`on zIyyQDPoDH(bk6W4Kr^9U{{iZ1nrEuOL`nQ%wn-dMmqCcERlHixcF3h zb6!|8OcXTrsD6mgQ67?NTSybGcj?D4@s>wnk+5r{#%rnOu5mYHC420b~X#Dc>WP!<)>^%+%EF zEnzW+X@EwYEj^Lj6xpcHg*DUZbQ+D;(UH;fqm_w?$@mJ@?##l@4aPx1LG(Kuhf?44CSLJScBtHgi{o#Y?k{&vkX`d-mKe zUjECjSS!GY$;k+mF17zD$r#oX7FnYu%sc_35Lt2e?s7R*z=$n89uGz)$^XD+4ATzi z>A?)GcP{@m%`7i$9o!16BG1b9;>9CD99Nh%t1P>cfGNnNAl*}oXroexB(KGGeXzJi z-a`nmb9)Khu~9cUefoBBtYz(|PoLrsI=y$-GBPrPBo|;BY){Bi0UJVk1IVv)L*4w$ zkb;6jxw{smu8XifXKC&n_HZ-Yqw^fSsi~>I-{A%GUY_;KJ9qAYb%jzdWLP*lI{rp5 zhxB=gZu-kEjpQTVJ6n##O3)NClVM2>V84r{M!K(MX?(Y{U5mM=3i zcXuysY-lhgbwq*@{+iwlU>tUFOUK2%e-UaOsZ{E5H+J5ciwELQr9ei%z0kityBl;&I?M+vGV07A#VV5*=7NQ$;;G|Qym7>4{5R$sg`yu@9=RP+T&7^R{HMLs{eos?|ns`_*8^Z`9_9mEVhs-;I`mibuv*09xVU-(no?Y>=r5^qyv}W3B*Fjr=ZuVM zy1Os!iiLCrw$Fgqk%*sS;ia z`tt)ag-5#}`vteE77 zfE6+$yJHQ1MI!?()A+Zy$nU^o228PjkuEP zHn3~WE+6w0Q?1~+NjlvIh|3cO232!&0cmD8CW?mC?MgNw$a3Gl*H~sL#KtXXT#3al zghK@!hrf31%V&t9^~rnVB($-tyz=yO<1N?~EZSbNTu9OSk+aL<&Kl&p#oXjh zrw4d1Y++BBs|Nq`!Fu4n7l`oas3@Ri?5m&@xmPkfz#>E2L*PMuM_N98GDIk0DP%TD z)Y`v)|Je)+WYq5D**5UhKyOS7=4SxeDcm`B8Q?Q8e7tjpV-Vc|*8ze{G5t6+Garnz zw@+I~!PO*a# z0l-#|bGd#ULD$#e_E;GC!`T33q;tO3e;yN|$ zfnHt!;%R2!z>93M^YRWOaJCJyl3)NikafZJ1Xvlk9=_8=UU;I)F4?EKxw&l~c2g!( zL{FW+dVtLC_bLJpj1aqh|**P3?=#7 z30>YFmU49f79|wF->LHDIOD5db04GtuuA9hJ_f+j_V!I4q0oI+XWs6yF!NCj=q3!p zlR6z74^y>`xmfYU**vSg8=*pCr|Ug<`hm3#m81XD#z>g06!$&|)SaDH5Mz^*SI>rI zpIr~g0`?CubZjM_MvW{ik0XP8=8*Sf^@yn|H^`MGGoM z>(;Gen{`V=scx#T>bUS&R&55bY`bDt%(=u~U~@PO zubRCm{XpaNX2|AXx`yhKNbI@N5Wbz~PF8<)Ox)HzP(B)`6|kDN$Dej|b{^S*@qkUV zVn!QKI(R1-V*+0ZiV?8<7|(I>Er4OBT=o?{OgJ)q>gsK!x!F5sod0RT08jr@H6Sc$ z-zJQmT`6Q#;7x!L&gy~vRQLJwZOBf}(ZQh|o=bR$NcTLcrUrRaS6*N)9B$hb+O2Rc z>fP%~nQtjaT~>u14*NdVa0#U>X)^9w)S~w9T~^_4>hz%YcOQ1ocDZ!v5;fZv9C#Gz zhxd)(A6Ke^+8gX=6MqVn;W;s z?feV;0ELrBY<2!JF;P196kuAAw@xN3c*oNjsH4I7BB@I)p*s2E@%M#18J|h9*2L{4 zR`&Z|?U#9nYEZm&IqLGh^cA6p!!C!v+CR5s;x^?MmsO#ME7jVW)8^iCA{D0Be>WX- zhnGrcX6d%MC05%@u0V2>5Z`T>Ha*uDjmECK56IOTOU^S@Ye}By$Q^QK6MUi`*3k)??ynx&3eK%$;IXxa ze;`aFxLz>Fv+HX=f40$}+o-Kqmph746ot89CdD2LYbEIsGQd^uh%lmm8teYzXPBQP zc)INHj)YqG=QmT;v~NuJuf#9ufo!y(bT+Ft>xp?r3*^)zmSz|Xb5Okw_Hdjsg{Odu zt6}om3JlYl1|Nz*o0Z|F7pEYVFX{7M+)dc}$Xq+1qK$_BF-!ex(-@SXcHVR4; zUP&WRQ2|OMuL?3r=n<5j6N-kw5!ULmTh%s3CPaG|(OW6oB(44Wqm*HOpev!eu!G4} zm6d=)3OD5f#Hi>VB}R2c2FmA#zzvj7~e1%I#v|3V;b1aH@6`^G}n2C>zL> zUYyGxEPBNnS1)EY$x`{nZQ>pcmvfb6q2WJW)If|H}rFDmgiM{PZzk|2C|+ z)7cjr8#_Ng-`VFqROgoLef=0O79o>{hdY9`H8uTXQIf?xdh9B(TOy8;$vy!P$*meBri&d5B9Eo)J8)p_iL*sE&~S2mJQVMs|Gs0yemM zbznmYPCbrBg8Ygcq-ov-P8Yh#i0G6|!zpDczz_Xa$8W41>g6IKALuLfuGylT98aiJ z0|59b*3ckYIqAuhm*$H)T=QW|&J2I}@L{kIJQu`ffGSWm%V_ED?#{8VvYTE~C3#`` zZ$p)k6+EN^3v6ktBU#A1e|#++WE3y(l9Uuu zK^SexFh_9Yx%DfN4j)~%z&rf*rldqb_paZn7wE&C=mJVEfp$<{UcMfjZ*8qx&yX{` zuvm!=*%h|3Av~(bW$Gz!+7wVN!$zDO?G(fZH(Ug`M}UOqcEx5{OIARpdb`xP*F1$D z0_p_wpq30CPT2efewrnB6sTld-dhSqTu~2pQtgb4mbAAn0fy|bCg z#1DRs-!0w_a*iukuD~Gk(r?|m1^XPLIVu;l>+pL2@ay{7f#8G65xZcq_=g9fB&DH( zbzef>QA{GizO50Oqcjf!N&th<(2S~cI3QLD;wogTmi1w-J>FFU?)jE2s zxM&5kzcBj1e_7hy7$A0fL2L(HPOgeIM3fFzS&VrF=R=BAA_g3N0BaaxRBNUskhJJy zH78SEKl_~etVU^hPF2ERzi}N=M@JB2i7nI4BUnXwT`MgcXE8YeB*O8Hs4kK2Xp-Tt#yR=+*^an)N(>x4GU@!~2 zQx$pPzf^X)bEgMtfKcbpwx*}2bCp45(>gjU&lC;TCIl_|0^QobKj+OGFH6kSNNXmH z5kwhWHUKFkBu$ihNN%zgwbfs`N$8R81wq42X|M!WeSK%k3+N06Zno8uXh$x_V2W+j zVK1`u$T4a&BO@dH<4xeO$TU=^djS*2A15OeI^Yw3zC?2-^KID*2_GY~JU=IAY8;Cv z*{H)teq1wfEX8zJY;hMi7Jkg<@{5#P!^E-4Ooi{gO(ij;C(%gz_j#)U^festh~mykCLlFp|nM<*xP zIsh#IYOX&)Mk8Yl#ht3Mm5g5cpRyz=pSSSQe<0cUFS(0fOJUjwW#cXIbnbi*02VjplLf zGW|Odi#|&E3hGwh2_!3@IIB+pr0z-mCWQTAor&&ji@Ch+WEqr~Bw}q)8ezmdD&__p zcrm)A|7mC@C`%c+@fS@g=FnP3rh8{ttPS010ge~V^+t0Wj?0t9C}4Ay@q(!;6}(`U ziV^oJQ05pxtP0C*?6X+1_f|K*rv@c@t89*G?$if_$|)+k@jC5iCS)m4*Nn}(rU8bK&^s*i@ucT32n5PitqLGkc z;e73y8f4fL6P30KV+jOd2O(s-T9xHc^YGzA_X7T40+vHj(^>{UgnFx~8ok)p#ooSr zTH4yah1O(;z+D1~t4APvD z*}zG;^bXgszZ{`n_>)%TE!3EO13C)DGD*o_8Y-gbE5EMx+OHN%mBGawhpqm2XCk}Z*c0d@tj2KTod@f!FP>(2}+=x_yg5TiT&aXZ9mrf|X^ z#BP1rX{d;b-g0?#VzmRp<}wnUeSLiaCu^u#wk%D&o3N}BG#eA377Lu>`~ zmTj?X_$|}ylo?bU%k5MC){;LS~pDWp5F+KZMRYD#KbyUcB*EolI`}nZO zI&xd1Vf@Il2m<6CgjR*aA&#N360lK`X211-`XW z2cj6{&oI$C9R=XR%Ey1j#${R(l?D5O^w5o~0bYya<(ebbWOAz@8FhEhrj2v-uYDJ! zCk%l3iQaOgsYZqS{+%r5IJk^MisZ-1#_8Oqdj4!}r$l%7mHb-$YdO%*ux1OwWkk*~ zCRe$*^f1^xcsx6zEZu`Mv6)p)t89T9`~$+G@g!@oruks~mL1taQKg`>p^bwvm_~a7 z!R6ramsJ)hc)@R#mzRSU9X7}6+3mnp0?e0Ny&9CuOXfE>Ff_*?fj^e=8k7bjcc0V` zL2a#oM)n;&|Dx)Gq|}*pp4Q&JY<5#PkPqSE)V4M-@E27exzX0rYUjuH!a6BPT|6j` zi+xO4ej%V_iFgK^-_)e#N)E^aMrHx~2f{`0($y`=$$?Xg$Mq^f;&AAY&&*)$$<*)s z_l7jOXr-AA^JYg8V|gC~48PqARcB()A;l<2!%d@sJq0C>tGoNe*x2pBd!TZLQ9=Al z$v)Rs6T5o#YVb{aK`>J52xHJl0MtK`^n$#7+>aDA$p7kq$UjX*s zM_W%z3mo)f(S%A+c?Z9G)NZ1PJ2My}xcllK-uQ354oFNFmU`3b@=L+6^@O*kCbxvi zI2G9_D=PzMT_hha&Va=zbV1@==<&Zaf1n$oDPogTi4ahM24T)cF$*)vxLHfQ@Ad0H zwP05KI?154&y*6S0!jMaOL1KYV-w16=Etq>s?js5dkB?amm4?cAyomcxuo1y9aCCT zQbKpm`$n`QYs*q;Y+tioidTMr$G2|)w8PDAbsm_RSHJ{M)h%v7mCjwk8Z5f@$apbw z9wfBT0XD5v+EDg=EU%_lU3S8%fL7~p0LtP(_Ep{A%6~}1kGo*_({U8Im10!o&GpOp zzcx!dcUzh)cH_P`HdqTO6I7K1GxZ89?x-dQ^d8R-9*DI}#*5||>UDm|Ovp^cFJzZ< zr@(_ign=JCsT~|{PKN@wtj4uNiug%c{A3y`AS3>^53;hNz z^FaJ(AYDbkygD7&JnV%0LWUD3%{L`)Wd37Ll*>&gw*RdKkPcqveUPz7zxB(=p-CSLdm5AT~uFhaMlOFzH?qN z{xHr0paz6oWVD%D|5`Np4}t2`r$hkxE-t$#4)C6tswJZFBB&;Tb`w}L1Z+Z+kWL>> zGwWb5AmSh&L7l{@E)mioC^17eg(Mk}8A0e8^CQ7WDI8w73J%Uw!CXQ;r3)M4fq~Qw zP&)_)SWxW5VnLdKfzw*LbKSQfn0qm^_1O3{S$?WzbQU06KRM8Z)WzuPA~TE2MSu!HRW_$-U#4Oi@$5zO@S%iS zU{E}ev=|cS7U#Tjk9(IfJ#VeDtg=9EJ$x9lmd$?U*AFRP)@)^LFa`}n^YCqmi>KGg#UbQMyTbGt3_py?}4k7no2`u-`y@n%)fZ z0YJR4<=`Eh?K+>CqTC0hPmv9SPG2?aolTD3Bfn}D5E{E%SRLW%JwBu^s00B-HC2Oz zv~6@2s?$;!e(BP-?&u`wV1`9;2;c98<}tv^0RdWsdM0x9I#~48a&kb=NFgrO1F#Z@ z<0k>6fxB;jZ7r3Rg>)K_=`rEW5MmE#Mx@9ZNQ(4k38>!`Bq1n@ziqKA2kFCdU%h<0 za>&8JgQa9wwOLycFYH11_LSroP`3xtW{g%Dtd9ox?p^>Q5kTS~X4cZW07wym_7~LS z;D(&5#)pp_nP)ef7@TD{8KJs>y&jVRR7EA%deVr zP(y9>mp(k_+W|0039Gdx^q=*x^#9SrN@T4I5a{2b!9P|m@acCC?caYyUw`Vj7_=Ry zPoF+<)~EMF#?(}`3jL|6+So*!x?OOt_^PC~vgS!kd;5h2iSmPePzIY<757v1dm{xr zqS#ydWD}W*^V$oKlsT2$)zxW$e;7#4QIS5r!{fhX0x}Qwfdm$+FTe>E4_VHUnS4!R zDbI;-C4u5H;lC}QTW)V}#Y#|&ZPC;Amgkr9Mhb8&uIP+Pgrrm3g1;86w`G9pVr5N@ z=7b;7pGoG7>L6`?^bt{Q0ZytwFmCSzV*M~6lb3x)ukqerEUIm9C} zV5#B#*b0Tr*xgt?A)9$B%?$0;2OK3zJU|KHcDcx!Ni@DPmlrA#-Py!eJA@V&fs-_lF7EA} zpn(3G%&ch{C1J_4!gPX2X_zgh@PGjoS&Bz6KzOWoxh}Dx+Y74k(2(5X;^LyBsdoEl zmarDMW*Sq($;{a(Io5a7^y`CQj+%?V`8dTp0sJXckpcm!hLcPAQw zcm!#~+;k1f=|H?6$(BgfNiwEaNapN;>v`!e=-v*OK`IsT%mmMCCd_|!0#As3{SIio zIEr9^7(4*XH5^#=BW*QLla9AroMb5JUzr}PFkBmJs0U0odgdS+xFx(tLa@FV_&gvV zLq@HcpB!_u&hNf&D9PiN-TrEx*`{g^2jU6hd4jlK6+Pc$4F~7}`r(Fjm~aqd<4uVq zqC0uv2&G3fFvuyU0ljxs_4yt3jA{-DDWFga3MTgg8U!)%63MXEJpJnI9#}w@81alC zs3w%m*aj+b{Ul}(8nkeFu}lv-W&qqFP?$+9FVJ{xH@Lq5hCS*RY^Bfu!pP;zJ?>nq z3m0Il!VHP3B6RYiy<`G-JD6PV%$&zUtvI>Fz%^en2DlPeUi3 zxgz@ns*ve^*uS97g$Bw`$;IIdiRg!Im|ZAcL4V8p#c3&q^t>`X=QbBS=e>8-$v&hJ zFOj+UT(;?m$@K>RysTL+qjZwv!gOu%>&=!}!s@LHRgh~{bs=Nyb?D?ehf$pbO%%Q$ z{|2eGWOUh2bor+E&mcMPn#e0DNvw0o7R^(6=Ihy(8gVGO=yT7bRq*}mW`^|rhGWsV zp(u1DNex+QEgR`PbRX55yi52K&HaU3>^n}vV2T32pYZBVEe6sUA|{9jx4KjE@_eDJ z3SxAI$c|uiOY}rnR3_MNk|g|)E*oZm3ht|rKCLYD_>bnh=H+f7H}E)WtS_p*V~}ix zDdmyTLU~#Nw$gU>ShQJ&4`-}Hhdw7So|LC>^%|XynRXTCO>?-PVym}D4w+?K8?V%X zBe6&;;U^Y+XZPz(Ny+G`c2$ViC6jsLcITEpby-gBN>m9DZ$7Hlz{Zg$->(!Bm#sdP zd6oh{DGcEc-mTIRurKQeA6Vm+{azRt)F9H>wCnAz_&CLi*Ni`Vo%MEpSbfvAfqf5d?Rw zSvDn}!#cnK@v$KxLX@Z%1#YOastW&QDd;2x@K~8zq*`8PbgR^*CEw_H>bjZq$HZXb zMPh~RYNXk(u9*issIuNv!v{gN3o#@$KX0S|kp=~b5a3cQ;iTS*JMSU*XeZr&_M+99 zJXNWLDw%xG5>2pxvIL67V%G-$v&Dwjfn7NC};s zfZl~tm$Zzw37)?Y9}h{Gq-+KioKKSR+r$J^XON=ojEM)Z`{$o8 zsG~rN0+56Xg03$8+95dqh}1z~4}#_biU5Zc;d{_aLplb${k22d;PT;n&|=(I)&m&> zRD9skBaV*G{g=bDMd0R;3c_hpNCG+$4D96S2pM;or4}T0?=%xLGBThcaBU;!;IV_C zY|``UKLy`{jvRy^ASDMivU(g`1aeOJ7&1-JOTghyWJF;Hj~uzd{sNC#gCnM(OsuOj zHZg(eFeUav0stM_8BM5-Ghl@D4S;8OiW*c7d{dlLEND}L1mFKeNImMGB**^?>J2O3 zw~3IHv{gk#zOZN2s#Q?Cfvfm>&mRszY2{-L1xDYtL*`iGW#IQ=(;q$X52E2RD2V^tau*zAOjQF? z222mA4d?|!&mJDH0}53Lo+4MR4$!a{x_p5%6S<|OVB^P=ia=QBssUvVC@Q~@gJ*jI z{Q(kr?gytIVf~>RO&ebd+zlxL64T32D{-@jX#|!frrOobZAtKk0_g1I z1I>tMek5{E&O@xmK~KwXj{flfJzH>tASYLP9@~i6Gd3}?6r}%|t?n>f2%(fT0_X_f z>~%Oi{lhpNjy4nJp|%8-sSA4~oVeo1{=u1f2DWQOp#iKo2%1%J$F8V=bsbAtGieK| zBgIXd05(DlNGaWXFdh!Ftso%<^(#5;t{S(nT8oJNIaH`!uaq!rK%p;T!gFXk5j#aP z+*ao$x>mbDfVAP_H_ChA*a@7L0UAMA_dHmif-FzMehIY?W&DvqR~A+al+}>7Lx~(n z|L(j`fpY1lYHS>Pt^Zy=kv0w%2Fk(-EY8uD)31pWuY{O=6cgN=ODUPItH4s`_{e5o ziT{_I-QyHed2gEiCK1*F>Pzr6rE$Nk^DCjl-Y@yNJ^!Wr@LQ`=Aj}hmvyPCY>jyz( zn+1Q96zS^Qd`+<=5kY3+kN;~60SnPt=6CaKEe|$3b=Y-cd#UlRh{q_(d0GkCL|QbF zK_^N_=nWMNZ^dNO2ebd*Sbk)z~?0XT)LQqVOFu> z;e^qU$MM^paFlft}Z*e&xxs<+ugS$=VNE8myy8@sGo=ryw zv9hRr>O&0SG%Hxuau0K!Lz#^<8GpqbaXK*tpgtWvWnQIx!+GSx@#B34M&+qdoqlfK zZheD!Moht{G@_VE(oyoHO7+y3g%lzDePi=bP*KmZ>-#3G=3Wfeg$SzfQ`DXJlWvGH z8)bJ_y!-U!bMJc$KLJ0=688~t@Px#96UsVFl%%h0qp!But-eQJR3I9~^CdzwelBZnM3OdK5-;RdKeonNiu+r| zqmiDLo*qrZpH0NmLvQA*_N=1-QNu9b$+uNGu=ZudGb9Rk?@L zh{|tNzxcT1shAwuXg zIxIXQtXP!(ha_)~;C>^7^3)uV# z9*>gfS5X}HTtPHQSdGP>*t3x!zD)h(YrC5&haUQLJencQlPAy4-K#;pr;L(I~xIH}E}mVSw1>E|7p%doy_6sCToX9g!s zn#qNg810lVz0vcKs7Q9jY3q6RPfo}tU+Kw_WeIxX(EHKW%oeYcat)Ew>a*Cw$={qr zr%Tl5n^8L+$<^~I;sBOj!PYMR#rPEY@8-BGa ztu7<_kUAV^Ga-+P!5OBzEqTMkQx0CiOnbC|b2EIxD&NncD-Gq2DJ^C@?@4awJi?Urti$te=h?9< z{Ry4I5^l1!3T5$X;%=ieLvk4$f>0nho?Xl?qCk z$prG3tCY3}&ZsjgDm33dG-YUc4O0*=zsinHPrli6>PItbgU?hf1vlfQKk1+(eotb0 zOg>cE`{T#w`Pr7_QNp0Vo@R`wmw@q|{_^h5tDu(-_A>$>je{Z2Gf@pclo}29g;O{^ z1Ti2v+$rdxZ@T^I)pfVnh z{a7UflYLxtN2UQs_Yk^^-ncHZV#rB#^@RTTu9$Gn#+7%j?b&$umuHRFM&HC5_@M*T zzspBqLPlIe%tu~n#wPt*Z=z~EtYr5~Y+xL&gv-gEAHKGS6GR~MGvcBvugspwif8v1 zu_WyF)8em==sam+j;NE(Z#nk(71mwPS0f=F_hyH;_d#DdH101?`Lpi16jdJ$bo{4M zqxs;8d(^up6|PbxQ`K6rPI|87y{6ucv6hZ}#<{-eE`D=l-d^j?QNsRrn}_@QhDt|+ zC^Hp&tYA7*L`9!SZ9Mhk8;E>P^Brqo_cwaeSs_eelcs27YY>i2CQ)WtGw70j1x6wCBc z`OZP7f>L%I;Y!cVEcE8?>g}=zhO6(4Ju_pORnPTtVKEb|mZET?XRaHO3D~BqC>_7^ z`(zSD6RkI0V);0^O7N|9pA?3;@@ie;E$e7uAT}>8@`}Bl}q8?{N+v0J&ki8 zhbHDZhi7uj>*tF$D4~vwKiV4N0zn5pil*a)@403V{WBZ_r@!=c$$zf5_qsqZhthYK`Qw+UFR1(tFm(5=6Z1|elh~XPgULHF+a-aJh;#12|U;cE%=1q z)62+>AI1t=bwJb_EK@JcL+dt2(WhEX>dp}MoPiy=o5^X6-5#fZIUbfCCz2OuXQyNw zvi>-Pn;W2D=G1rb)yD;uPDAN&nAfvcu|?XCUj)5B5GQ!Agqg1rPev4oYfUH;V%2o} z+OPIDbGf%{f|fnso{Jmi8s;isZnTcL)aDPdSGy%+0s!ggzTv;C zkh=teTo&9YpUk#2%(b?g=7nSVl`z4S$-SqyDv9gT8T^Bk8HKbC#5IbCDPxQqGr=#C zcDMaM?7at2Rok{Lid)>MC@3f((d|}IL@p5u~!wPo7Qd)GrTkEJYz`S$@j^JO4%N9B? z$9GwlbGfS3#S96I7zd$7fiP<3um=eocQXI_yL+~a{x(U{+FZH=W|w~Xe`U_IpTM6C1_ht6TblcpaL$C>RGjWK`Gk{qxt?c^uc!CO zamOXuJNdmPf|}!#ac9FCze>CuP)GKD@6C6dt>Yn!d6Ok&qggSI4wMZ}dEpJfD?cyF zBJZYXFKLvdoHJIEIHHof(p2m6v2JT)!f|q?hSlb3pYuN_T_z4VjOHF>@W@$;=js?6 z3OKXNC!}+(YO@PDsxM=CbFFg=vY4@hoBtU5#_imf>A6inPJqv0`W5}C-LINK2`(VJ zKIi+jh`02b{daFgUnw~ie#~b;JrDD_#>}vNEt_*riw-GxHFJw9)OXdIczrfRC@25e zVGK-n*qm>StsOgcj41*{RCBlg*|Oz!h~$q4X7<1E%&tcMX)!-}`Nthb;)Ya0e*d}< zyoFA3^B}#bWuK1m*teB)`PS21Ls^rhCEs^ajvcH2XWqWnp&NDX(jxcqD+;gPtZS3) zYN{XQNGdsje;#B5@gQHb?^uYcQM=C|Inf0PMyO*syYpGP`_~)9 zI@fR$@+lC+f&Lt1^(uRa6Q`!9<2AAc;SC%Klw+(35-@CfuY&IYtb#9RDdfq|>7A&S zey1^3aZMNrGL#8w=?PI$$QOWkog!Kcd2gsN7~H-Mw)6%85=1RPt^p+;SzmIsKOmTn zKmy=*ki4F4;AZlKY(>0gt}s+*?3tRsd_fv%1Gs5WgElC-ZD*kWas>(|MYdGiN{e4ZU+}^Bp?%2cxh_hzvHQ9l3%%6A zZKcieYQSTeO^a?D8*`v3CMLCng0-NvjScdp!KmRYJQ}PFPF$q!z5rX%Je`uqAhRRW z@?zOlzEvfA^fNl#&nr?L5`;(`A%s!DXzEw4AXE^MzYB#IPH!b)e{*E$Yo!^fAniYM z+j2m%t!M}I>f75nOs_(+cZi||`P?*C70F~EHA9$3Lqj7{cYi=$UY=g1zm=usC!Omn zk)F!DX=nv<_FWle@S4XqL`6pGfqIUk(IBE77dJ%Vo?Z9rTU*(zi#*Oo98gMtcG7JV zlSE729;i2H347AcB_H;?=*P#lRz?UZ{)ODZxW_t|7G>e${$IbMEqC@@RZ?nhZGClV z?*WeWRE^zAwjGS^B<0}XU{Uj*pRXDwXz^n3$?anou{P4t+122X zteXUil!)aoIpGkxX|G6IQE}wXx{z1!`avZ;8-eM9AXWI@;OEH1W*2u98oF<>G&c@m z2-mWgl|2Zjg2fhnL4ea6NnRlQ%bEB*IU9jSyeJ2&?}7cIcE5BX0$d1|$WYVPadCwO1#J`{ebPxnCK|*^%?$$^zEFj$e&UuqKpBfH z8@n52{xu~3W3)bG-T#E9vtWnEY2-qCbBeKA7o9-gVP2Ie$OI^x_38L<;Nf`bzin$`r*| z3p_WysQ0CdQ6@UzDHyG+Pn#MWpNfw%XI)Fko}T22w>(YdTcVffJV_FxZ?{|StIb`L z^*;<7%s?8+5T4(|M(Qaslnj(;H$+)7;lJErwfu#ZrKh85Wc#xtUA=>!BdW2)0&%K> zl1I;t1hc7AihpbrDhW6*bUpgPea4w-*$ZPExQ7hyF>K)8l={pxxMbaHrkWqSgAbh- zTC;CYuj91W>r)R?s zt-0=bR`=_zkIMTLgemZS^ahXL@W5YKB=HUzJZ{u+!>*Bvwd(zOI`W>I`F^La?(w;G z%<5kn8@GF$M%Z{^te76G*LmGFZVk^2LS&~^$%N7Mx^2~>E|@=LcY~L~n; z78Y{8$$K;_u`Wqc#i%oH+1SLP6@rkwOd`{L2yjD`U>(10A;gtthg#$_sluQ9$)EEk zFQzAyEnoF>-U@fC|~P;q}MOu}K*tmp&!NCJAr%hMh3j1#s>t5H=5_oQ8 zZp5*OV!T#VtQteFb9!HqCR#H48Os)%o?0ic2Zf3T1qQvhy!AmybMbpK-KI^vH_C4v z`~KyNX&Hx&uf#qfuI~Z#??KJ-$XdwGpX@0w*5xEq`mfJ@)kG9>k>O;k4HoT4zheQr zJ2~9$PVWuDqZ<9MyMh~>}fD{F2<=Rg-=dVmVifh%pemxY_nyvIyJq=du505Nd zmrK{XO@6?kY1QoOJNX+-k(|3&ZAzK?BM!gLaeF5a%t$EX*^06Xa!on(Cj#u`U+}Q_?3CGL^nTm%sAH3*if2uxZgp#o&ME*U^ z?5qYNr24YMtZJ@ALOe@2ByV}9mEhy7OE6y?P6w|WtG8!K1v`hYPZQ`V?|& zqS8((2{Q>fz`#VhG4zDgY}Zaf#!yN1%GzU%GJg<*()FSTL?o^WQ>b^*SH6-H>PQ7D zNaDO0Rj-z2WcPiK#AIM?n^_qLI3x3pD>?W7^t@0`V30&dzc9QvF$LVmv+Eg!_{VSOv`2nY*j!6AV+g0>@j3YRR{ zpg%p(h(soki@S~nZ)Oujt00@{9%Kq03Zy8G8-0TmvXq#op@G5o9J|R_#W+fedkos} zwY^;oNnP-Z#`L<8>yNxD$lnmg{DwZ<_S?tX@^Bm=^}cN*@epZ7Ek{H}+2O(6y7eu` z&LUS@uaN3pW9qKD*RPt4x0M{mMM@;D7|!JA7W z&-QR=9R36q2SN!kh%gf2IR5!BZ|Aq;_#amK>Q_qF-h+Wuci2~2loP54s1gO;bixsX z4FI|4Rn=-94(UutX@D?`^#Lvz;UDJaiuqkkg-n0t;UtVU$Q?l< zw2OF&V2S|^_(Mhr4jyut;BLaH{_Sys=~FBt6iIIY-rBbfQAFLIlnjg~cnOeb-w+jx zrcs1R6yaAAH)Ud|N!F`GH>j$r5{>e$F-8C4G6(Ph?moy@&_!JrYzlW48eh;5I1>0C zeq&ur%Z?=#_5MvnWi`SnfLqtUi5qSvyj>nMYMh{|dQnMnO>+#=)-PJc%GH|oGRhPL zCPndX_yjpQsa)E(Scj{s z2#F|1N72t}gYaee0-)cv1OD2}m+P&bL}n*JvX5(^T@+pp0E?=sp^jXU1_wK7T}Z|L zgv=)35nTF3IWDsFC0r_;^GW1kf6hzW2Uw&x^cCD)i!8yqB;QJuQozZOtvi*Q3I_?2 zsvsl-vDhC%x+EjRNw~20l6+0+xWpYHDJ)lpq(IOh={QA&1O#v`!`&q4SwM1?CK!aZ zD(Iy_pZ64p?tT(H#GeoWChmJQSjwF)MAYs`!(o4h8lr7ZlBaGzfzybjW!q?)ZpRP< za4ad`g3$=)l3}1wNGl54+9stvZV3I+O=~Os zJNEH=2#23#@G7!RmH*dQAAD)MS9epnvyp5yr^IY8+Js^YQ)Pi!qi#S`yDQe`FcO#K z@)dbDh?5$MSPXw^zxO%(=hDge2ltYgN|i-ubPql`+(mD2ko`&Op|b%`;g}I;+&VUp zoD_RO=(_T!!wDMM)({{73_FrN>O7QG#P$U{-%jI46RE_>u9+YbT>(j5p7Ij5|1urdDul?iibPsDEAaPm|SRb zsp{NoR$Ug1KzN#Xx?>PGbs_F;NV;e6;Xi9W>)?-T7iL7=36*i2R*C$u!`D02D*^<&hl5m<_0@!DYbZ%j7$E)A#c zYe2HHiGV(^Rxo&gW=z>}*t_~S)6**nQ*12deXEv;LLd#7;|ClsDJN+3O|GBfM0RcZ z^!swFW=p}TRaa~E6V-nmhxor6^t%V}>woc9B&oe0{=)@WJ@|id;Q!8-XMcN%1>VN3 z)?b4J?nOCajG4g{034g0ZPQ))HB56Sr#GNvey4s~$V4sq{2}QV6Bn2L<8dGM!O)pT z3~B(Z=XcjNG#oj4bh4iI?bU;*XtXk7Lyp7IXhuPOJ;f_6c>ck>C$^KkOrB*wZaz0g zGI1JY^W3(T>VEfpt;^Rz&DjG89*>QEmd{y$9vG+4p|of-!Wk@Rd8D{%;y(f!wiYs> zV)j4P(_oO;4BK0d@A|{l6nV|dh|{X4p`_6_QgOE@GbKGMIM)`KW27$88LsD(lru*2 z9MVl(?uc?qWFK@Ku?TBV>UQ_!V5YjSZEmguCC^HKWBqh{!B@)#G#w%kD*X1l0jp+z z!By;R9wqp8tp_jVd8rWc=+#5csP zQ&uA$u6urB$AXBr8?9jQSJiB5u>~J*b@-$eOhgmD)93viaO}#TFJfL<&RZPOn45UTYc01-u<{%a zB*YW*Da5gYtKEPw@xyz?8+tce~d}t5eBMBi(_^aqMoN zsJ;X5%#>_7Hfa~~BKgRx>d*kn`P$*Dp6!R9Kh0YlM&`fH3@gEXj?$cf+xN|Bw%sD{ z2byu|61xPD&oj(o-7(CsLaK9Sb6vy_n=Lt(P#%Rgk`n!Kjl6~at_^Ju(3lyzb!_2A zrMkpBxIo&AoO%2StKMhR$ZNHi<_nWKrz>fHt_Ljca-8#H_!53EKz*XB4z~T& zV#h2q-gC62I`J%H3jY>b4OIZ#Ue>+5d;mrz5)FmLrU6z!w+0%Q{a^4%fX@&ZabAA- z?p-ff>RkmZK-&Q;@iHCYpfF-Y_y6viD}bv5FEuqT&lT2=+ln%I>ZP>QK{^hY08~5Q z9R5Qx^>JA@)VV;#Ife@0O8d6;x+EdQm6>_Mcy-8K{s+H|B4YEbth;t7k4uNX+(n1Cl`-N@EC z-sxxoUkbu%T5JB0+>UvS{1X$G#a4I&VfN*KSrB(@HOUua^0Zq|K|ZDbx!^NfQKLm!Fq+6(hlCO9=4*K z0}*BjBf$?j##((d1wBMWPkEW}nh!8}B6GIkaB27W>0MAD#LJBK4miKt*>U%uOY5KB zII`pES&Piz`|`OLH{iz9qNP`hK&?d5DC~MB1{uP)NlbniWZL_}pnxUI*T*P*wPvqV1xbop675#1k;70*@88gOZIAZxJ-X5e+d#am z2nX~IXbR^DnX!_QvHr7YyI2rztf&|`IR76J|eMWG-cHZhO{qgVmC~5y*a=4 zMQfVz0lfxeigDM+waVQ6V{(N4PlL(-RkcfI`L8c5I zpVEw5F$Ce{N9&v6c*K`ip$LTW{tb#~ZN)`VYYET+mI0*Ggg(h$i3p_95KY6kP`C2c#Q0pH*XFW6LJ5ECy&#$G?SbJa?a{TqrF3y|GaMKZv~d zn^x%HPEZOoGBDUEM0yX5yZ+r}EJaG61b0J-G%Qls*I>nPwe954Z*83QD9Da0#Y0q-Bcvo|xbv zwY4R$=fv*+R}4Gar)UlnYkO&&Dni)^HbcO(?dw<6v69L)QU}0~7xC@EIFuprZXal{ zbmAo-DGaY2U5CiBC)`?eM1pE6Pgi9rI`5!bnx&N$T>oqFsscxjT;+MfpZaIbX+)Wc z@V7E=Q$qt({!qP!fC{ixgF#T+w|1q~qWng(W&PCxU87sK9+l`sI@te4JCHpzR><=7 zEJQM-I}a%$27ZCEcmaTl%&xuXdui|Bz(A1KjK8bhQ=LtcY8Ucyj~wK%4|6#~cYH2q{o^_XPK*C3xlC z?VU-m-PMAey0#|&s+-ML@tdbx7cfXldwW9@E;)6YMr(!Q$=~w@4#~!!j~CxMkUq_^ zyo_K|^%=1cZkeI%#ojupTQ%qV&5f#i^&6wUS1@*;xUly{yqFm1i-%HmR9*mM4&&79SJ2rzs?6P$OR%@y%UVKKC7wf5F(j$W1q_;aeS=O3a6QuTO~; z?{~Te6%>^)(#P2Z1Ff_-e>H;jgq@AS=n&R=IPweGc~Zk`G1^NN zc$&nromHp@V0^69H4gCd!P-B8VSHg(JoxY zR@51#c@Bw3SN_>V|3v+Jo}*Rd+PfALAV=vak|%6(2Q~CRHVHJVTMVZ*-?x+(ciMg^MNg#`HUBR@Lv7Osu{d z_CLnF^X3x?iTOCq>DZ&H}y&b6Gn2P$V*X!~r3c-~_8gT(&?$Pw>( zed3{&dKgxK@Q{>_*bCDD3o2rw>pd8`v0ebgLjU4rU@fyWL9*@l6n$AN!#?LNt*!Sm zc)*>yzi{%PfN8IJCNQgq!kA^fNR=nlr9|z_W1b#HuAxdl!F+YKNbR2p(?}u}p`%yk zmKk-k>locFEDC25wx&5+^Kp8+Kp;{mA~gZ}C5Q~|eO|bt!dZm5!KxYy~c=}v5% zNw82xU&pJ&SK?+lb!Owbm*YA9uC=pUoIvsTz~bzYS3)24k!o;CylQc2gC^462b?+l2Zp9v+)vUe$#nuK4`6fP*w#yt8e*G z+a>#nFCDqF9a#obD$8tqS#yzz`Q2<}|4>oY{(?ux(ycV6o;M4={a(tMqdO|r$xppN zvpr_Nh|NeaVsDXGY1N&PjT_nLu^=YxS5aMk^W9$W5r-Q?cRAwH)$??UA6RX^EMk)J zu8!hc_U-OK%0K#dg-Dg+R?_IBB{$SbPX}4r)U|I=$r8D{W#_Y7>({@zmvL7}_z0i3 zy8g(o?Oax+?SrBzwq=3(*SMOuhCC1%5#IGT-OgP*&q`jqyYtzWWPVHi{;9lcip`T{ zX5ZEQUw%>u3$7oX<+2Nj6>pqZxVkK&*tsyZACd=i@j_%jTK|w#lR^HpHXG^dI=lly zraIuOY1)z=oXecte7x<0-Q;0M-xI+fAqQHJr!hb7V<#;eR&QSs%FX2^ytR;4bK3v= ziG!`qE8V$lT%s-Fq^(|Rdtazzn)h58S!zslo(8){Ploy^Pt3ie ze}`*7d@?mme=*WdTIsEPzf`+OgxArygKCq{n`->B36^up5n+#HyUE^qS&7`p$e!kr zc{pKXP%kNea^G!7U2|?k0tBXXdkR*>bfuQBlo9@zm%K0~(XqgcsApL#%D>)C!@GmS zib-fZZ+X}xQ7eDt^P*8}+VDVJVrb0iLl!flX5?Rzqt8>CB2%_s(GSe6Yk9m!Kc0=_ zSNr6rG{jUffuQdayza`ovNA){?3KF{;1qRFxq!Qj_s?sc`-H4r^0l;C4YO15~_KPjfyHN^FxUpsBEA$SHz4MNW`N*^-w4?h{@WE zZff)N4B{2h-BrQ}ALI^JHF<4!2+eSr`;r&kUEp#2@L@BeVn|~n{1oxUI9P1WnhwK= zDKnqJ+O_ma`LdM!_u=#XnCr>ulg0dFKqXS>`WA_r6-Cy4_L~bb)UI2tUOuwZl*+5BK5BU-V_D-#UEo5 zy9Rd3@xfBm0$t)xW{*GOvwSdkN7^z0-~b+hv6izqk`4c&)f1FyO(M0B0X3t}=C z^$)o1+}Fz;QS-;v^@ASIj7o}bq`j$&5MzLhj@lI!UZKy=9hr9Aj2hEZ5LP3dBhJ&g z`0wo2N1NCE8?d`mkkWMGF#NcFlXFEl-t{FEd9IwJ(tfA1r2oXlz*Xh*527k)Qp75m zgK{j@r-%Q}1Kz^+pR#a`_N}ILtsa^b{@*9A_5|@?$^Y7&(-KXI4oI3W&DJj88gcV7 zT|B2m9@mvvxzpf5wev3n)>oZY)w%V|f!!N)?)>sg==NcaZm>Mb4kiT)%G7ycKRB_ zpY?HaUA~{;E#akw4ly-*L5XBilgX@T>R(xwR9j5+H62TmEwu7}y`MY~YhJI!H2GpN zT_VY*zLqPmzfvk!%;!%c5aG%qPYh|QmsTzfJ|KGdK25ts=42+C!Uuo zDZpzL0zNwMhCCy|zu2W8mbmPg;U&PIJHeHguU$fWb2l^9C(Sd8BbQy~t7$tX?)Di; zNE8n!k<$;5R~E9~%^zhTfE+4@63Svrb<;;FXECuhXU-;ypN?awWBOP7Vwyz9WJ82| zXh)v*e2Z~q?H#o=gYp*Un>;-Cc77H(rZGOAxU?9SW7nBhwrevT6?b-p`Y@Zsc=bHT zfvCim{ACa9er@T~Nh495fh;>j^?EYnHT2UCN;rJoF<8XWYZE$Nnm^auEU}PPo<#cP zM!b5-rPaw>#bl^8Thl)?*`P4)^D5sN%&+igVJ|zbmp#n3Hp)1#-Ys)jT5I`Sn30;Z z^%m-u$FY?X6Auzyex{eXFGf_Z90<=ZDl`KXf2T4*GWw>yWj?8up93v--0 z*D37iUOn5EGavfu-cDuvnFooswVh1@sehh46y;Q|$2C_qyRyKsHPZQ=jiZ@Uan3r@ zj70uq5lL#%Kh%j-0q(R_OYDOG%-v9p#WbbAsz_7L&j*Q4WyGT`w~O%Ex0YSg znsKNXX-NOroc__~y$Q=NY_={%du5y!tV-9~I7<(0&2xX;SH z+Vn}U%{I%eT)97fNX(@i<;&Z(-VGx>v+E#N#-dtSXkpGdy*rC_N_l;w{=rU#Qv%hV z{>S-M^CtErcCL)cn#?WQ=<~$!Igz8HM(3vJqBKlfvJP}OEo+gz?=Cy+svvfA$)d>B zUA^GaTzop&F5^m-tTWjpQTWuN-FKFKwbRQO(wdqLh{a`*x z>iu{yZ)!QrzC}c0+^v$_b;9OzW3AIP*NW5`tLi7a*X=AH2SK$R(s^-kwxNbU4Ui@ERd9I`~-x0If*rVi7QCUNg$ z_|;0ged59(ID!c?m|(KvBC)h|?s&VE)OB;mg}C?-{RI1Yj7t{rkE4CZms;t?Ckrvw zd%tysYqjTu_g8h=OPy|6bKZ*)jND zoeEz`$o0M~<5iM4E+L-PpTK594j@n0CoZ=qXti0)Db?CF`c3-3U+<<(p5Y!@X^JwL zFDeUNYN3Dk_(4AhUf#*c{grRlQ(nl#Z!=4>C1hMnpmU^}zLT8mBD}x`bMTeKV)y}x z`LOMZnF_+~NegedNAqHg4tt{v4DjjER>#_EQVDmHOX6~aMZ(-9zmh_;%;@B&g+Uj` zYVN(~+}(D5vuxfxt2JBFx$J3Dbz6LN^RCDAk_>N;w$y7{s$?url5^hm z#cV$3(u%ow2M=S_zbLVt`sC!B9zTI;(wf2DhsE2-@#MazPO>KS{Ni)VE@FL(N}5Yv z-duULvMa-hoLT(`NHg6w>gm6#CN;_2QIjfpDeH4n~_4Jq@_bSjuK0e6z>0*zXe z6-hG>)$;7#A0Hj;NU|tyC(XP$+7$B3GT*0KVzJP2@kB%JypOR2xqPZ*oV3!KHx=a` zQ2x-~fiu55yPo+KlXZ=PGS&0jq<;P?1%-#L68R(-uEA=&?&4pPCbkT}Y6STAOBHm_ zrkJ=`XDzea|8&>l694G3@MFfkNj5!93QmH}tnTb(EhCkWj%S|}k-9^JtNW^Ckw6+> z5Z}$|5%JKJLo-(7xLN0ms_}%U~Y46fGQ*uh;&}hqvTqo1M-c!y$ zc8IWl&o;KtKBA=c&WNgt0W`7Ygi zRQK0nXvfw&RT^K$MO@6Q54We;)cPmpkQ<2$rWgH8WUY;vvT&qQb=EPm7g19b00H~_ zyP#5k)9$g(f)jh4+C^GrH8`jXldTe!(?+(JS+;7m&5Wiy_se>Zj*5wwEd89a<_WQz zp?gq1-al-lIDM&y=q7DzJ1-ko{DbQJ^MUWBrn-(9#D0pIy1Q*|Ofut&#&K>W-?MjKhtb2xv5|^F2a~JqmXVsH zW9Rjn@s2IT^>4--H4x`g?Mw8@Tdr?4uDoXK@{7A{fkRcKX8rLQQD?G^_(~IF5FOPI zW1}&-jISSG9}S6r$@9~DTBJ%Xc~@J;Xja@PCZMdPBypYdJM}3R%K40y(2(xpWzx)& zmtWa9M-VfX79*#z8AjI4R62?Jl@X+~JRx_6MJJU_LTj#J<}lnbS!t=}7N)R@cfX*R z{lk~icGdAxeUhy8KX;DC zzId2fbA_hNesVIwR+cA(&P_Wyy|19=vfg@IhW(ekWKE*#0?(%qP2FO$YUG!vliWMk zA7|}7m@zl(;yiWyeN|)bf>T(`*=rJTSg0w=#jt3@ATH{Yw+#kr5|^D$ z91Z2A8*UNK&0VPLlqQ3QEs9mbnteK-lPcxYS|mbZDw{4oCyz6e!Y7+6t|@3NtjN04 z1SN&%Ev|HX>Ur(R#R3#X4tLwBjE#hjY#{u?snKC2A?uFJwy%`->{xA&3hA8IQnv?L zIDNc_Yhj62YjNi9(J;eXSxZu3T4p4ESzSBwY~IIiACXF~qxK?PxrX)*GOa(-SBj?z zYj$E%%c^5EZ#Ld#mWw&RyW8j8+O8YNP6%5L2CRHk;8}N4PDP&VpPzYWJeHYbelHgD zx%`zGSW@tWUk34X%#};9i+?nEH*xlMGyh0nhvxkA=H(gkQXS@!(DIwkykEv#4vWmr zj+gps36oe`u<|Tr=(q-c=}Z|cm0kWiNd6gQDJ*|Q!{TeJc-m5qQpZvz{p{?J{Y*_| ztwYbA(WTP~;rnwk2AOBumg8k>ZGYYpwO+Jo&LxSZTBsIzqD{6X+2p+ga#X=Xp;@#3 zGzsKB3oRGLE!5N1#wK$q{1RqmRuU_nE`eNJPNkv!mc2R0S4f$O4*J4sTQx04ZN&2z z#~0t6=eQfzIc9=;qUPB~e(QKAmFDjOXD}yW(a&93wdfC8-^o~X4V z{dZZ7Wg4>WVtB3^{m?f{?Y?)g+9rjs)r^Yjc0Au+Ki#=={hu?#dE+l!SZ3~}Yj-r1zzkepmS0m;ynN}>X^se91ho($K`{fAJOblfSVl$R+BES_~jV;vifGg?2%wOlF4A*{iNah z7b0|Zl{q*zHWrw&qqu~yFlr3H@sejE0#gD4Af@1^T+A{72Ck`2B5Qh}%O+qaiP z>rg1Zsks?y{0Pue^9z9uifF=(8@pR*Yv$(WfE8X1D`{+QR#H?%W1(27W~yUgUx-o% zG6R)oZPPB>tmuy>R42}V>FeeDwLbB->bJ&^9|k|t@;THj&)#tydnlV{<9I{+rtVoI zY<|wm5s4zhZk68y!s?Uf8en;USjg$GAv=yOlCuWcx#b2Ak6Lz(!Lab){EW-b-bC_TQ2xu7Ctn@97FSS5DF?bX$iS$Ss)``d7X6k-m%-fjL-K~XUkVOzXl@EAr~)AJ41O%ZnPy7w#kNMOyK4fP*04OG^?Ue2J zM0Ga=q)d=hiweBlt&E9`&?E&BQ!t=XZ2S|Wn3x!G6bknotrbmC;4ucL8;~mTx7CVn z$bKc_swj_!J0uykB%kqQnx2{h*;N;uRN`+2jj<>RLBu6-2M_iz=vzV$Hy!*fR9plN zns{*J8zmyTxZVw=fR1R=%FOZPDe#2YkL=-yt8w`Cj$ii4Zi~a=@0)T-WbxVQQTv(~ z?Czxx7o1nZn%iKr2DPXcB)-p^GJdf1v%PuQ0;@^qgM+i3wxv7tKc=OPAWIra7#Eym zbx=XWqPL3Rt50q&jq*-m&LM@gJg#te8Ef39!(bxtw3<0@x|mp}x6brC*e@b&{ipw; z^RauGu39m%#>y5gqb4p>9o4g)*7v(nSqiF`+|arte%&jy{o|9(A?GPoH8okW=?2VL zL<=`<+C5oChnNw{?TLdWHZ$A`;(G+9q<)B16YBaB3YH+Qy`8y8R@Efm5 zm(P2X7ewQgq3KgX-B|{DHZRkQ1<#!Dt1*bp0_JoZ)!jmk%Xl~%ABtDt*)x|uAO(E1 zeC7Hk=EfV8GxlwJzL0YQc?8HUeUTeo^L!n5Vg656#9G0PZka`ah21N^!sga-uXp>z zFGPA1)J6V;xOTD&3u*mG_J}7vxy!J!IajA8O9{5(mHKZA8prkLzO0ZsM%IcPA8w!P zVnp_j@ZX2(f$x9%bb6Qc(Rv2*CifSGfVRC8R=OSXCNt~#GT!S}OAo$kHSGKNwyqxz zs}xP>NXvp}yLWr`a(LKj4n`p!V#>1hD*Q8#uNNMMOpMAAmaxsWrVO1?K-E1Y7Jymf zt>D?Pj((DmD-L*ig=T-EqqvK?xcp`C3U^Q2T|gSKg#QnWac+{t@`fu=p4ZZn5D;iY zW$%VXWdxO#l#Yvwiyt}i93R1aS5p%?bm&=E4;g)uk}~hlyps)_iN|-$WBYSHBSQ`T?yB zf)`+mKVOjC%!~qQ?Z{wAT>Q1^3k;&Fur*nTqL zufD4wi!ACzP#>cFx`AJ=b9ANNni*Z#r;tqYwxdj)56r9M=!dR6XLJh!kH}WID)Ejt zSiZ5L0c5e=(-IH?MKx$df3a#_znh}Wi$ulUcz|^^2$jD0kQj!Q^|3JFW0-CNM19jE zkY5t;^C4+=J&MOBbo)1GfFp<>(~tiXAba&Iz${XfbAEsP-$20s`^42A_@9Oc{x9kr z*9=sqr9Szr{Mu;_YS-lR`aF*j#o2!|Q78OajnL;mcFWHl;c>h`aP&T15nPS4C4m@# zV9I*8q{6(N>w$K|MT($X*OPjq{P_b~W)zqQs|k!4kc_d4qexw}#mOCTw0JC1-Lq`& zGb7gB;BnJai$mXifwk{obaX`zcj+6tb$Y(#H^A^|>gdqK^x$P8inolkXQQ?eE@0Pq zOi(uet$8q-;wp5N5{1ba=*-9Z38a*6G-Rj2|&ztKmDH(d6>*|SZ_T?08Z>DVfaK0{(8%N*&mnCl zDxXV96{qC;R^LP|+)Rl0(~RUFe|$^Mn!`|2RZ*V&P1a-|(?pCyMc{t@j&Ea;3a+-5`1p>63=Y3`~2folqIDNf)_4d0X zg_mw?Im<{@y0y!S3Y`#Su<~y)G&j02%SbQyk@pt9LMWFS8r3KSl3jbEuURyW96M7# zDr#u@?o?sb1}(`4{O^cPd1+3eKt75b+olKZVROxGgb@QTM*ivKcyvQDM#XGSpV+w$ z{dRADI=9zxNrw*kI8SLeUOICx*--Uc>QGyN_vUFa%fZyhI)#ibk)u7EXvu{RVI4`@ zEj!>au?$NH2{tfW?Gw7Lxq?EB6Ml)J6XGPZnWdR=5$is>Cwez|Sbf{y9IZ7}v$mdX zDoYccf}tcKLWzhDQLuW+rAzr@VHYE3M%&tQO#1;KC}w6Au62->FNv-%+%QJ4Hov|( zbMD(;MtTqYYxg_q=`KI{>6WZ!`h6fFHDKGs3-7j>_N4F?)0pOppzHPIuE@HEg2Ius z8b89hful4q>>}c!qn0LbF zL`%v*ez`i3Z4dap%Ssp5lt|ZeE~{utNJ-xACtq^vx(;fqo#EK*)tTKfop7nwPFB#) z_5i{P3l%Z1(we7ag-+}_>>n2_r@39SNhz#Ar5Xm-xI)f-CdtuKR|F>-jrwQM4y}ag{Y%e zm*b5qYgF?_6cLG9v@x>()npj;cwHGGLi{Lo72t90-kNtoi^mW4(O(ktlUz>v;}y)7 z?}c4R{f5k;d4lWRVor$#*We6TdLS;Aprg)88qe7~jYfdi-9x%3xjhchQdv_yy7Jek9itosK%iw31j zPBrWxy?nZv(|#(=MXSN;`_>t|8M8DVd4oVT2_f;+g+`MD7LxlsEoTB`dC$?%i`kKl zvqR_XworQ!K+P7L-_!+YV=M5$tcEEO;w_OeIZmS{(;w8Dm*FfU{qD_?0ZUWS2}a$( z(#+b~Mg*s5PRjXJ(473zntSy45rrB{Ii?bw>yEas6ZL2FIAkAkzYV^lcZS0_O=L+Z zd%Qy}%(2U>DKe_sSWQ8r`DOXb1V#zndjNQanmUhcbbGx^qeAw{wDl;jzVN;P9cS}s zvbNT20{9gV4YRw6#qdW%sjt==6R_0fZV3-4=dowc}hxJ3&GKsSh@{gR)y>{##ho#dD$_foEE*ACup?pOMbS#IQ=I`MM* zAYRjsV%MNC(I(EPmbHxDiJ_(c;+3-do*p5D`@HZy0kbfinhw0N4+`<8NM0f%$eFGG z`Z0O$;}{pmw}b@u{>++m#F-X zaP{{;ajj>&V?g{`-B$_{Vf3lvKuI6Tf3C-22qC|b;ylvE-UG- z%nN_Xc2DNYOqnlpFhFBr6+bDXc2$Pogd^d*dUHmL>UZ4GZEUa@vF_^_m|eEioIP)? zqf^u$M!>s5Ex+U0+!13-z9+Y+HyvJR4JqbVJ>+x2uZUl)L(Q&!CMeO!=q1lO6qE*) zZ{P#fmZLDtu@3Yrj5$QnYc?IWKRe0q;uo!aae1gecGM&;`?ka7E!5(=#2s8;tRl8l z+)&n%S5XNpzu|0m_~pe&H=SpEer`M0BXw0g%tq!Sm5?}O1>U^bC0g_D>dCz?dHiq$ zUA`(W6L^i#*KasXT(0ZHYSh;BYUNS@MdKb18ZL)7$fH6v_KMc~1E}f1hOfqqt!H~I zyqZ^$c!@8-lVW94i6&AU!MNC1&6(r?P;wy21&71GCVIV-$l046Id(5zytq=f&lBZMK<8{|ICkQM$|@EH2{Je< zK$dU>G)jO`5R6jPpv2p$?TdQ%jsVQySAjR}@xra|s|`cC3S@>FR4R78 zDE|no<@j+~8JWG);(+;5LF;X9=C&<_LkHp``naNR@we;mAtU_2lBI#X^%1Q#vFXYq8IQ55?kOtfeephuxy6a za!;tB%nCHfWM|wkq*|Jq1W~3F#{lBPli|M`GzpF^u7gQN@!h*%9(M&i#kZ)=DKSAg z4SCwsg>VoT78mseyG&x=ymPG(|RcHc%*7c+p#A21Wq`)1vE9|o1tX3|AdVE21r(a{ezkWSKS*ovapy0|9n^T zqsNaQgKTRgD01S&36vwP;#@&FNaO~J| zVL&(o_9-0Mo$H@xb)nQME;JU{0}Pcw-{9$jNDi>Vw(z!r0gU5;(NQ?y=La5rh>tf0 z;09?n@X{_gnPO(pVLj4@%z~hXwddeX2ywCR*x?~8t#W^O7wpUIKKwCmJAVxgy-!T!XY#xdBEN$I zSpD-Nexq1b4-4l2Ny(n**>-PS`RKoVf0XUKArwf{-ST#2jQZpu3@{X1mx+3@P|Qeu zGF*;@h2>>%@TCEI*)7yqF_4!5sFu5xzIMYgWJPp#N{EUEe-5AlKoSlU1y0pzI=g#2 z_xWAKVW6QG(#nX3(Yr9b$nAmv0|3Q6(=irXsL_=kS_D!JSLA4*WH;n4;>NMMc%w!P7v1e2B$C9$QUf`GjRsvNhp}wcW(wTrR?%usi zO-~aQR)QnBtv<8m-PO2q#b-$03<%8zXC?T9lP$v zQ@pQ%lD#L!@U(D9LQD*Z@uce_Sb==1Z$ha9%)ha?mWqlBB(Zd9iO{-aCuC&_x5(xI zCP7l#;^N|qtS-PnC~|{o0@$g6tJJh`gH}BjAdFczS?_JmuBv+1tp)IQV@8-tVK?FvFf8NYnsha`Wbwdq{)c*N~;e?67tpSg@>Nh!0t zC0+MEld}&0QujyX!N|2E2O}ew*Q6gjxNW2QogD`w-ha7jt$bnq{VnVNy78Q}n{zx( zuQH9d^1E=p1fAk#Yxc@AVP`RN*SOfZPKzn=lMA5{i4wvD&E(&Io*mjpi9`Rt`x}hT z6L%#gM_A0ln+H8TJz<6{JG&fW@fDF#e|hO0%C12$DZi6zr=qjT=veKkFO~5Rq2DmHHjmXlql??@Vks zi4xJ7xPU<_k8QyPSy_HQKEc3C;$gBeYh@t#Yi5>oHev(y9~U`Hafywzw8bRTom;k? zxiTUoB^&Y8*Vp%FPtSha0_b(_*|TTIjvX60O?jE55n0CO(>Y4-UTj|GLF-<8ML_|Y zHGkZ7y-L%#w6p}P@%-)|vy0nLbVVz~K7amvX~}UNz0idV7jP9icd0@yHtcPnpHO~tgX{f%8+G~xxNQ; zc6(?@h;gcFs%kuOFdT#f2P$=vq7`^DQ$9U78&O_c%e8r}S25{O;3XU%fW-3PV0M%T zJjU8n!@ytXs+-cXO|%QH>eqJi#{&;DqT~LpAOGoA^zwGs|MYE7(p$yq@+1!_d{i|SVz(9!(M(i|=~S*W zNJVMH)KtZowO$Av-a6)-uT@C=6LW>rJ1QbV3SXR!*m@=jd4Z_pNcrS(dRLumL<5_~ zFH7Ou1>^IM=zd!G%8dq?lhV?jS83Ss(yqlVE-VDgaIcm5fx946FCwD2dmP=p!Mzv` z2d0ycl3ATA4y z?eqB-3n7=~D=b^`DdWf{@~646&NV^5NA1~S(d~@g8w>Ewljm#BZ9B8Kl#vxfp7_I| z!wFQEo*XDXAIhQxNFb7K3qqiY&C>ay?;3O)C@nQQv+1HVKjE+^wKMh@@e~Y`c z?8*Mcac>i0KQ+G8w6vvK^3u&{zR*AxCD*Tqy70)Gs^s@m5tE)Z;RlPU@5ymWI|@Yo zjywsq<3aa)KhJ5Za4k-8gd&9sct$&2WF)h1MZT>Z1c&KDn$gWyc2QCJc0V~@U>wT3dzr1=k*R5{<4}0$&)MVGajmCl%g-1~kL9ifAigc+e3QCpUi3-wt z3mt5rAfO^3H3}lqh0qZK(nLz66M7YCp@iOYRsf&({btVh$C*=R&dl!~MnkyE-uvEr z?NzRIt-ZThIj?A-1UC`F%1^u7C#OB8viwhNbjKnPF#%8(@t5?nM~T9^_1h}q_+uXK zMNIC0w#)?R(c6R_;7`2U0%_KT+p!;LKk~?deHt1br@8e%X`(B&mXV%w&mjlAnjhFs zQ$jFwE7H!)S2CFdQMLL&3qDUC=90Qc|M!SwXCP3v#Lq zvxe{@{(BME&!?m=kB!lSEQ`BO0&vPkAdgGsHJa_K5OxlKch<5OjI%uEhp#lbMcEa<;7Gu`j8!cVd!Ca=C}U;uP8a35Uqxp1)z^i*MLu z0FIGoH)!r&vc<+&3HO*8C@*>tasc4#ME4TFAz@5$8p-OiQv-7gTZ2^C#nm-`iES?% z1gAY|wsEF_xqCLhz6mdv_?t`op>=y|X6eFQ&E)703WVaLB(i1mf#SxUpyv`}y;esHx7SdVb}fG|=eho%xv-Q=NRpz4kxW#^OBO zC);t4j_ke_1}2Ja0u-30O%|4^nCxug{JfE6SC{Tg@l42|opw7+1h#S@MlflNiGBMp zAboWt^cW9zLs{qVB&)gc?<6aV70XwS7OF7j1I7nCk%bzmEnxVUB|xq#+YJ$hKEM!v zf1V^C*wCOzCFzP3pbrzVRg z&xV5RniJp+1#BFUwPz{^-1`26`HT9*JvO@I{;P?*y?SM=Tlm*{k^S6e5&HHmc%hgN zt*)*@!FnL0K%pQEC>m{%+!(AoGBQfgO@0a0N917o`S=1~1)6vCK~Q=^p>L$SKph zlZXTNF{DAJH<*a&=0nwoG$?#<;^m5G>EN+Li0ga#>4WHle#baAuKpIry5&f6M@+tC zjqAjiQVITjyN?BA5>)<5u`(Y}1flOxyIs$w5EPVEItifZfi?nfCeTP;I&r4@6+~iE zK7G2BuIT{+kIWcT^Cui=^=ym|33q}U^8(R+%Q$>Tjy?~&XeO&enmT+3n?%Li?OaY+ zXe$3MkNr)cndG_y=+*w$&n6Gd0L@ zSLh8~y0@EQ==;yDluX^P_sd_}s)GL}BBG{&eGfu}yTlM35uv4`Vm}mphxO6F0xJH$ zu1nVh0>-ZCrO>XFv^0e-AsYZ2-*IhzsVZt7Cj!b_WMu8#?Q%~D#Kj~19os2u*K2R7 zyc64N=Ky5-GBVY*HmACub%>t`luLXowpZz}(eV>a1C1DPh|!9lI6g)WFCq{$uXb1R zyNcHj8@baJa2&i*>AGHTd+dG7JD1w~588*^H4jZ5(>KXBsbZz2mTkJz*+1rj63Fk+ zC=}Bj34WR&hZ!?I9g&20JoZ^2*AMS}DXugl&+BX-LywzgVtb7DsN!5LMWvPq-Rz=^ zbG~3s`_z($$7t}*r1m?Ymb2Xww#PCFjQqq`PXZ#FA7Z;lm!0YukI+%3OC}eue?pc3 zcIOH6t()f!SMS`iNat>gGOw-YiQ!GcWEHvBi7H2^5$>%7sHYm$FSPK_*Bp96eVD?_ zOQOl{4&h$e-N0uzvqFF09VZalCqhMPFWfL+JfLTo%$4a>|B9b}$tt67HA~d8i$GoMAv*CeISn;6 zN7ZN`9|DZi4QdykS%)5nJ#&feX6c12k%^&4I83@60$jXjb&)9lo{!t(RL0))pS{ty zTwV#Igmg%}Dp=xOO;6hM|Ft0n1P z2|qc71&}6iUsheCp+?5jO{0oMj}u<{NiW6E1%J0^3_5so54s1YDI8@3$)mgL>3}j# z)lZ5s7MAD~DZQ3#+flWJShz#^&wsHyKqJ_f<>ED&gv6ASS>HL0J!S+h~DMQ1(^irktLf=`X z=-b7y1vqRct0NFkYZ!Mn|2yjOY^OCF>p9Ww*|wZ*xO?xfGyeiM9HZ)2!%Jjp8NkKD zZq2K3bIaQY8B$`W|MqHPx($!BzXK@e54W1tQ-{kwYm_iHz^(mM<>loa930He$L&2N z0euQ?%8C<5=q_(c#L}lX8fu?AzUC3r5JS$FhDCet?_?^wd_@$QuBm0M%^sjqh(SmL zsIGR@0Th{OIxnE8S^R#Khti1c{`(d2UiQ<)B_Gl@?`!<%=Rw7&{CsD_BxQS7%h9@p zpy*(_$FGkT=?TVT^{X?EuOyYl=PJpF)K?#U9}JCK)zb4{t$N#3Fy^=`S^m?6*SAy@ zavy~$MD`mNrxqtF5k#)*1M#nlZAHaCd4Ov4gg>is`8Kip}$!RwhsuP(v=9^!fSTN?ZSHscp-U2Le-esa zrr)wNljlm?S+%rlERBBq9&brDZf9>GE?r39)lbWq6Y-AwZ~U>geJgf|S{6cDA>#8t zfYk{E^|VW|ZaQInJQ*S&7HjiiJOS}NXC4>WgWrJr;@h6I>u%kJw){^q)7K?{KC{N z_aN-7U`@Yk(2LTO?0p>-_s)thDqVJRoal7$+c|7faiK-sR?tiypU!b235!m7l3NwG&TYn7Lt zrX-7+9l(kj3Ky#Hnj&qoP2z^U>z88KO#~}aHb1jo}Hs1Geg;}1G==wZ7 zzXcN*%5~-m8(|%?pP9a`&c@wVI~~rWAEzVQWQA*EIkT^?Ps`hfG5^<&%~bY}%C4^a z`u^J%D^t?Iaw0!1(_B;gX7^c?twnOz5OHDuy2RtHKHrX$M^+RxWmV;LRUJ~AV&cTS zO}t0b>YHEsTj_}}<_sk#wOJV!|8DAD>&ZuoA06EqSmLl>?AhMwV|$RuvhK69 z?i*ebe(waNEp%10bfc%O$(MT0&BRcgM|Bp;bAJ^W3NhUV?Cw@1}6EqM4#SkGcz?MzQH4U zVbHrkk*L+Q3-2cD8o0-j90^mYieJ2^SAIg~YxJCW(Wl$4+*yAQbEdhCb3TM0#k zhX=$1!oRz_n-gyHwR;-;)evn5PR$(`I%q0DJO&h)VWI=C&I)s1yqNI$bM?3r7-ogT zloCNQYG9f~MHSihOGd~?3IY+FdHwsV;N<-LSq5D4;O_w6I#6AfKRpPM-BAbtfISP& zWu+txgovpR{Q!S|buif*W5mOzMa_+RNO)r=q+vQwuLE$<7UrTYW7ZtBs& z+Rn(@x{B%zzq`SaUo_Azi>dp3E?e@1=z_&HpYJi43=&hAu9q3kj?H_{cTfwQ{$XK| z6acAgr;o4`MpME}?6<2GXm)Yxza<{4V8=DDgIbUD8;UeE>6I8*So z=ptgHqAa!*F;&&Ks!2fTEDxa?ycM{~$&m#}(}N&_d6~)xQ#csXy*3esS#n&y?URdH zdt{SaxG#sYOGp?bs-B@d0O1r9Od%GF1gDL2obbhq;PSbGT^-J zLAIzvwc^RsSJ0#eQrBjA-QkQR;<-n}Mn>(;p6;gXnPFjrpo3TNxBVByiCrY& zuWN;C7(v14j;ORqE)Bh*e<)uEwpl>V&Cj?b2N4DkFh}C(YLef>*7LXxSK61ciT;Lh zY>*1pT=uk@&Moe;L|MD9K9IdTT8ZK2j4p0{AH^*pF!_Dv;95^KlGOd{k<@un>1;0B zSMbApNDa4{*NtD;8b-BS8_*^tMXv{;Dbu`dQu}mD%$%$b?_WP54-tcRg*?T%+`XF$z4bOoMn|S&<1eCyk zMR{P+y#(SK(G8c|)SxmXTP{MBpI;3aUK>mj8v&jyTHJf?xIa_~R6Y73ac?6KG$u5C zY29mwUA*)a(upQ)Q?C3c-qbD32jXI(Q=6nG+H!@I@-Ap9*Gn76b?j_Kmfn#GH4LQ zk%r>CxR{(;wFE(c-52(Fuo@!|vmj%$n{g7oYE)BR(%>NsJ_{;04(7`qQzK>q%>}5y zg@*m(SbG+ODxeDG%-ys@5ls>uEo3ti;#}*~q8}2OD=hgT+DqKTUMOR0}ZHsnhlW2zRw&R%RFo8|lPg7?lGgyTC66E>hrc;jDmd+PjMy2NEXv|EB6rk?s-yPFe5qEymdVF;q zx#6QVtxpVT^xHg!w0c#8rDATH2+gkhypSV2M_2~W(+(D(Fv>E-J`N(S#vHu1B8?EUyEVY$9zW z1h^9O^YcN*(%gm^*b`>pt%dYdVD^0@be-}e%o++GCV6+Nyqp|1k1~jk2QUHDKSW?X zd0-C&4!fsaI6cbjML{^n9+9jz6G(yRDIKMdpdhhlUqLxdPQ^H)ZBy%ON3A)r+-k=sLUBSvun%8o?$eqmd>NG62Gz&!}J=ux& z{&$F-4g%il-!rE6)J(g0h@X2zB?99Ken&tUd~!>HmjK^DWRx6R)O*6QPM5gH)cAM` z`1~s)o**?&sL))Kp}4m+`odU%Az=vlC1DVvlEL-@-_FQZT;a%w`qvGWzuD)Q5W=?&`U12mValzZE$@=6yM&T}5S zT$hNFwB)%Gak>tugg`p4l}K+S#Q5!buH%)ll;F(&S;xrQ7I$y!>As5%W(D8R9IJUz zeiz3coC{WraFd;D&BUpio}o{QIu06XYdX~XEtP7o7E?X`fc4qLpqNU%!Ip?~tT0g3 zOK(#Yot$4r7dV=sMXTOkwQFi=a>$93A^J38q&*(&iz#ZF&4Qi`n~AK4_!+5h9ChC5 zYOtR$d?!fVVKZ0$;N278Y&tuc`Ku{^-Gja-6IDs3e5|HDIjLI<)f=2Pd^-Hf zUO2Z?7$s7pwbtf%&{US%L(bfyPip<_ zB`;AG@b0i91+Q*&DD5i3J0pmjmqxUkH_9^jx%zP-xYm%0~)Vue5?`Iwo zVPUjCtjm%KYgAK=V`{#U-W1+opetl+E>m6rMlKfD+v4)oyQZdC$`wCsA-3VB#-EK{ z{^OoJJvr?T&$ygwv{WTbqiA59HwK#bLZTSfs~&o^eZ2bXbwyl?Yv0#>Fnsp3vYxuQ z^&3ENnucOr@-a3jkA@7eNf#C=);!jWV%!sI-x|EPsN*vodC!;4c>7fF(A+*Bd+!h7 zDO}e^Tm0wDf)!}0%tSsljbrr{p6T8EY)Tuu`Lv(vn@%owtr@Ql14~#-V{ws1#ZSSI zp3_HGg0uY9^_Jc;^-i-TzdOAsqqd>84^bMQnQA~&1^vr;|JDZWR=&v3Qy@7qGh@}+ zp}Bc`a?9GQw~+^j@hb7o6yxHT61>!4+UB3 z!v`Kt|GBeyrbYT)y$G@1(l*4a`0g4u^sNn!QOdFXw$#d0n5>l7I8RNdzUiIDE3vLk z)*&_Ak15%IuO#hQ@YnVKbx61hiKA?NY&%|MB86?X+;k08t-PWx@-(~=c4_Q5kcE5Q zU+mGF+TG{gbw9h(CgaLQkERvvMGW&H#)GNGL5`l_gVA?b?|1flm*C8X{Mr*P{QEi5 zkp4JDaJ%W;GJ&_-@nFVFneWoEG!S@|NMGdX^Bx^>EWP$FF%ApU5*!+xMtd zoGO2IhxpoL!t{+);VYyW(%BUXUZw1v`S3FEue;~jh=usq36ggfA-P{!g!ne#HZA29 zBT*f$^*qArY;MUUl4^B5@n+w7MbSG%9+FPlbXsq3kx%!%=~d_qhhQmbrJ6?Guhn~# zz|?AGDE76x+FBnGmEQC3~}cU$kb& zOy>uFx|(|N;``0w<|QR&8=%^)ffPT-)qTDV_k{UHQ)K}sD}t>)xQ){#&F~HKn#cTG z&ZDdi%Jfs|PhgrZc6Zo%EMGI7CVXrZaRoocr~csAQ?AQ}=X(mBmU2czO4hdWjX0TB zs#l~_f;yx;me)*YPVXPwK$9NTPdR=H1JBUnU<-<|R2iH}Ety-e3*ft3K&RIr_TgIi zj&htfcpay9B^~YBE_|HOX?K6PShh}RmeACUQ;g}#+5rGu7y26{z4X;LA6560H9yU> z`F=JHxK*^Sablcqrf}65J2Mz@Dw|p=dq{gM(jF@o5}Ls?99i+ZI{y)@n%ip1>p!E? zo&>aT|DYGs(WN}NnY!hWsxYq9T7R_Ew3ho_*A4VC8e14YJYZ;Uzb=MrC>)U`ZW-Vt z9?T^&Ni4G_w{N^SZli~tjx{ZgvIGT@#$=E0H+t|o^_1MDewKDMbe^@omJ1yhrxx>; z@at@dJJtu=F+FZIZINQ0vG(o3SartlsKKC(Q}pReuS3%`Bi?CU^JvER-?J>;II7a- z7v}FtVYXj%II6$WoA!H~`esOX=|8hea)Hsv^~nxfue6nZ|7%98f;DWur*D&6cy7f> z10|oHpX8{Wy%XJJ=KhNwxwqE`i32a>RR4;Sm7=am>9vcp3CaQKFZb`0m_7y^T9JI` z@b6f(U}J7;I=8s!QsRv}2JVH5vlAm<1iO;Qyv6bgR&%k{DQFgS=|aSic_8Ssa$%;A z93u!@1EUuSDNDp<s22E+_4$Vrg3zuFzb^Yj**J9plO-DXZS?Mz3J|TQR{eNI z=rXOn`TcRwjLgLcg%}3e@mEz@c^DgIkd*#TvmU)c#lk_6&UrcS;nl(37gCU#5~5kn z56s=L0inS{!=tk)NX1ET;D5XT+-~4lcY;;&tuDGJ|d<@i9JRf`>^RbN3L$7DtRqD z6eyajB8Bn%wx?4x&su`*G`4i3xQ1YR=W31AP9z&)T)i6sMesg(CjGd&H(JtXb8gJX z{z2Lh-nbzK+|MJyF6wvLS+#zp34gBS0y?OgAsgGYuCESlNSof-jgqV|3{PRXvGb3p zNo}R2K!94NaD_PXfKp1!A0qbj(9Y(F`x)I0#8)7-H&DQLtp`bo+1wb zReqE9YYwcUDWQ_Ml--CLf(@%H*3rfx z^A{^(Ee*fmzb&<*w6p#^`N_{y3&s!4xSxy&jh$Gum7CG0s@7Llg(n%q`ddy~`fPkh z3zuxXNVDIWYrGf!-BQ22GMU^}85hMQZMuj$!x_qYOV$#}5;O`?5y)$-nGa0}D`)Hj zuenyM%cn6OSvjC7Rb!(IDL!)PXO_&6O*&Yfc2F%J@#=sVyQXI^;xz&y1{`sDU-AM;#~jP)z}srHk!b+J7#vxB9y$hsV18L_a>-TS`ka;}I<=t% zf8scWk)FBpUGvD*%a)(7U1Sx!C}ue|Qn5TWZk4|3ISpd$*l-hr#&|vEp>;^A^MJIZ zvQ}EUYO1xHk-lQvKCv&kq9s?|v>zThn4caZbI~GKhI)T`AMaT6*$#=t;)>$rwx}ny zL@FCSDRH2Jcsgt${;SvBu09QucpD>O`hBSG@|98r>Sr0hbx|HqyYa34E#u=>i$x^j zQA&<5QI_5}WIfI}sWZD76WGk)=0CGhR*mAqKL-V(!u7grxSC|Iv2*3=-szxyOpLBA zk1!WWvrG@@8s8G0iU}z|ltGo;pR1V0j4i8%!QNLUmbxb1-H#b7PVYb@5qy7&k4iO{1NZw zR{H60bv~NB=7v^^o53LmUH(iutgX9Ke&(_LM}qi$2D|5(ZE=U;LQ9=sM zucHN{FDVw4n}m4;8}7lSCYCc;m*HNJ|K1zlH=_-`U0t8-K`2#6u;RD+GK2|*=P}0L z!3wIU=QqDkWoh$LFyGkD!*=E2Fo>oO{8tj$p~)0bko4V9yL6=5<6+>NdtV0wl@GYs zo$EPk8J!jk6Tdfisj4%IM!s67pEPav{FH@Iy1iKRLyA#(?~SC6EmyA=0`9<4mN9J{ ziRce@Kj%!z+`v+ZAJ^HPwJ>sX7p8apJGf_&Li;rY7`j%5NH#vpg)akn7{$gcO*}H1 ztQadLOC(|mOMZYG>M0?FeZYy$p3l`3zEvKQ=-PGWvZbb#N~&;Y;LqvX!;97LI)9pp z2K9JTUDK1D4*z36@T>YTQyXs$L$E?9NHiz;hCP+S5prTF%jniq-Yg&=r{`v zofdgGPaE9B5<|f#klyl^ZCa^C7OMsbkOHFhgVs}}JZwdVVGPTBl(L^N=X4Ns?I)`! zLVqhtjzz=VNzS_xq~w$BK}q51m66xJPs}CFz0{esBw{RiyyX09j_u~dfhYl4Lz%&X zg_xnooXego7T9h4#rV`!gpg(zq>t}n3Vure z9pJshMHjE72_tmL+IyfD3{5oq`2?bCFub+l=5jdkPlrTK9C7y$6^~8#>QzE{7`vk4Dvu#;&|P^*o|cUmqeaJrB?McjI&B zm4&@GX+!>mswE1-sKAf^a@v|1OB)W@)ahNko4*q4^e&o4DAuOF2PflI9Sns10@@zj zxqG$~KQ>Nq%w2RwxfXYco?Q~2TFb$BqZP`rpZG7~R@R(r2rX^;7{UySF4YOZm6b)UT76-hI?3)9GyR*P}Y2e(6MX<&DE#W^c)#!Z-R zPd(qJzfukHe0F(J-P#ocE^6uA3NsM_^!Vf-KX^lP(AJu`#}6sm}xNph)meb9wQ zSxf@7hF9PDp4MIncnCU?m}Yt>_$7$8ZmzDFqY~D~GB=ir!8`WzH&;Vy%%i+9mLxo2 zQj;*b?nDpdw`FC#Ed@kSN1p&Z>|8`mTbKKNS#UN*FWX4!Dyz^S*DIE*8<62*-tH#j zxAeBO4c=a5IKt4g)bzXKoMkW8Yi-`r4};L9e)hCm%6-1Z6yo*ze4DS*vO>XHPmH!h zG4vGs42y|%Y_xQA3&yzZ^pN@Dzp4Z5sI6yI{fOg3Ib;4AQGDvfFyP7d%bzbwE>ueh zGkA2@WJG&hP|gBXDj!^6FJ&zs0>L;1s?_Vx`pBIskhn+TQ zs?K(gv(W4gq6iRh%zt&_*Sr9HyD0dR_DV51+^K{)HoXP=G>g<$%PV50#K<@TaqnAr zO1hVU(hX{-yVZ3*q>y=vI=>C}pS0ZAd4kqrEhI&|dWfDyd5MlF@8A~@uTK1nH6FNS zt+Q$jySZB!X8#SgIG45Ma|YO%(EOz|kKDn)prnGac=n^5N?5b|Sz0hh&?WPK*kunO zn6EzDTiWKcT6G)iCP%$L_WWoMx>ssB8$G36@(@?l0qRClwkhbq_H&7$jfLN>a6#$% z#2=YYBxmmJ-<3Wx|9O+Of%!gPb{0%e zo5C7DH}P%fsbyw=WzO}RM^?csTlrN@%LE?&Fa@auyPw~m9Cidn_U?4$*tktsZnDj~ ztYCCMY&TV00Bbq?8Kh_ak}V{_gFiz4Gg?K&t+b@zW_o+f%DGCjRyR9k&~Ya7ygOAF z3)uqZ>dBO|aJ=IFtA1X}^Uk;ISm&8`C$Ze1h7QW(*oAcX)vmaNw!L|4qpVbSM+tM7 zLj&90*55KXJwD}_>){~^gPZZY3!tB)!BmK{A1nb6>q^tXjbo#2kAxKo9%b17-#Pi$ zPTa{7QN418ecUAh-!)Wzpss47Qa3BBzKhsY8ex5&N zUK(2AvC?Cp#+MUP)E4z|}S>^d&N!VKaj0>MaF|C`?#*`ErBy@>b(A!Dz znSDN%lU+sb{a=JD5d+Fz2bF}-}oW2jan z%b4X%$jPet3w7BcSL(7asRpuGe7vPXQ-18y9_pi6`${xX&M0f*$4007s_}@gskR;6 z*#3iYDFlyH5>N43vIpATj*~z$spV{cKDMDIcCV&h%aqil^rS$Fvm7~-#wp%u8yW07 z8G7fE?o;;BWO)@D=jD)hnK2<^G?@uh;;;ov^45Lz4h33|ob$>VDy7)P8q-}*oT z1{os8oTE}|${btUsAyo(>#W$Wf!Poh6LvPgU(xP~yZ*@J0^!~-nS=8AOdKVivi2z3 z6zsV+9v%Y`QJ;~I<28}v_|_{ zzxU8=1YhCz;BF)nib4DCOSU)4r~8V=Y2mU!+rreZ%dEns5&==Er;ce#^M&EPCk^UY z)eOn7`VZ2HfYsX?_aRAR|FA`^sknY<3M5Qg&Q= zztx`WbC8Tz?bfBsIq)uja*c-b^~G0j>^Cj?iv?(Xb5IgEpiMBE_<7RoxV)*y0a@9+ z8Tmy17FwmM*rS^D5(!dyNv;FBc?@+nMFmcTjiJaT|0iv)e;O~B{`Qc6dN$5&mY-Hh zeAJnonIjsphnz+E$4aX)w%+McjmtT@9==lb$kcj;%Gg7iWmG{W&dmHyL1%3nW>z*T zOL9%p8$N!R4%nzC6t})@P~q@i9GU&?JE=xn4<=_V=*T zejW|(NYZ!%)^oZWl_XE4n_py1aq#v!25_222bf4R7b(O5>G$NliBT5L-&77>o%U&3~ z!le_+P%-EEe0`r*sr^hU7G*OrKY|}7szq3~-Dc8KV&zcQ{~=iHa%#!2!%*0nX`{Mc z%fnBYl)oX`Z6#1T-?ZHC z*|BVmN6C_^8P&#=m5?GOyka_;tFp9CaVD6nj^p);y$3TbGYy`XRH-lDe3dY7;X1oO`jZ=`!Ffg?Pja-13lHRM}U^0Wa ziOFxEw{diIw68G_oQAAaphBO*W0I6&kK_(O@j)Lbm_D9_mh@P%dTra8)H1GTTav5J zA+gkH6v1skzR^3m#Le|(C?kGRHdsMPiQE>TH>#pWM5*hUMeRBa@VpdWtli;n7PwJYMg*(+=TuuKEzeLc`6NVo%)y%0gf zI?I_nIQfP}PUCn}^f4HAJjN8>dQAwEl;dxOT-_iTWd>0vv-|f4W(O;1x%FR&$?E~x zEwtCg*;xX{1*mLa!b!jzMZVVFelF4!QvM>z-&p}^98i}5KOx*NQ=P-UW>vO%)l-r{ zIsH~H5s)>Li|#ZAj4NC|i3)dtxdgbnh&qam z^Oiu@_U6uheJE^x3xz^q@Kon2_`-D z(Eel%yS>~gFK@-?R)0OJ^zojyzCL9Enb{1ex(f>EW>tW<>CeQ(k>UYJeg%ejPe~@b za)6bZZwd`VlK@n$eTAEg%h{$J;L+)v*YgRDI0eb2=UAVGt&qhaD~^TZpZN@`9%ca+ zPcyZlzCJBCyi#s_W`>6bs6mbb-NwhI>#{O3x;0lAuC6thT8stMsDx z(?tXmB`rRHrnXRdaku53#!2u;)&rMYLeu-m$ipj630SPu)RPt{8gT_!J7^*AQqx7G z0RKhHB*}z3Hl3Rb>Hr(_6^e)D{*9_*#miN?ys?8}V)i z*|qxVMXoDEpM2H3x+f0Ase7pGfL0nV%Iw%D`5j(0y!iAeOuM`N zOQ1!&*MChuQ58th;9FB%+_CJ;R(G3Yl$5QLi}DfN6mDl`+M~Ha@QpgSxx0(D3Iaz8 z9EPQy*IMQE^WE_<3Q5Z7u9acmn8cpRK1P_LicCaiy8m3-}RDjwMr;j{uNmBOLwS$R%;J^Wx#b21z zo89wEp*lU#tdJ{P3qr9l;N+{Vt%a)V_c}y)d4ILEI0A{_Js!q)cP;@xUO?3l8t z5{XnWxqqKIOb&`3XC$D%q|c@!)nGmw%46_ANd}aaFb^9WT^8t(wt+x#`%<2%bY@-_CRqD#Qlc@R&NiQK zS<+dcvw&@Oa?$sw5_beA%@LrdV5BfzjU8?m6HO;&Y<1Vd005{J#zx;VXzCQC?12+c zDOS`uC}=JfX&ONl&^{k39;x7hLM64BQzRwi9%=mk{br)7PPrhgc%Y~eK3+0f?4LQK z+c+aRXRB1t7#*Wqo2rr*JOuLmOOkrJ+OVgj&+7arx%I>sFbF}*!r@5eh_SfLO=nFb zaZ38(Jv(xbPM~@pwSv*cZID<%R0rk5IkhrCQ_w6oH&B70URqvWURa2c@{t5Zp(jby zZQl3`1#7Gl)$!xd7GNguTf1d_%&y%cw=ROmzo;5AOySkwp}=)yWNuz{Wm(zv9nCJ{ zQ=5%;oOkIO_Ln`GKQwh#%!5R9o?b*MLt&nIVc^#jCyw93ovjZT?ZSO~0V9#Q{BYC;ETP%cmnxGNx#z zO6YhSe^jYuA$Anh!9_fR;S-DQWlW;=?)MkS>gisi?bO1(_KS2*Jvsx`093aUTCb{A zMy?|kHcu`KCYYpa^1r{Gq*m6E-9Dm^!7o_G1E)%^lc*P|(#w{iXpA1UIy91`C*~fT z*up+QZueVtNuP95B{}b1d;J7SyT^W@2!PTv6eee7QJxPJhL@B9t*&rDsZ*T8Y`^fl_viz|fUbD1opiPE0itBE<=N9H* zzOqK%DY1*rRPfr`G~F83FZotbpq<(_^x`lg7KEu#bc1g8+OLHOx$(G$LTjF$&+Td6 z8_oWtrJ;ifCh9t0AlpP_yG~tM{>bhFZiAeIO;0shKYKR2Pb+B0Vq{TMYpV?nGYYAf zbhQ~Q{Bnlt3io^O1HO}CN=c4*{dX^fMuf=5p`JICsl)btK^hj>Ic@#u_>BGb>wV@n zMOKi^MZ#C;3u4yuz;=$Yb}^{UmqQ_ahG(O_xmh(=*I7{xQE(O1?9f_(^Onr&fl9s2 zFChYiA>>go-JTl0x!hrLFovFz{Y88Wz=a9>H>7$qQzxriSXrexCyvP_@`;H}ZW|T8 zg4~QK@?#MzLNL)d!itEEVhL=b4kIs;uOPH<0FJ)6c>Qy=rxO$!`G<$C_{ zwFD`kmw%_KTVJS3N+Vk-jTVW4R`LZQDW{mDr?Dp}A=CX+as*?!*4P2s1o{#@ z9=H@BdkJ*R13Gq~`+t=7&$GhA`>5MCyyMk5dOg9bRZ#)=1`6RFRvh>vWa>c&s-UtK z)MX1*N`lkVH3Pw5oPvizU9ntUYqC*+!5j0r{rU9~TmuL7?Z8~LEnWQ$_i-o`my%*4 zw~n5^3ldC~m6gjVOzXnApzqTY6F`d#$!28Z7V5PC+c0E4aYsD80&F?GF5TAP&tQwF z`?!=0?DkywJ$z7?MojFiMfn*zIuW~p>qtn$^-9q!2eu2Kmi%}+rneXs5)vXD-4M~2 zq>I`2E5FB~4oWPHjg3ijiTuaFhIjhE+B5(Cr{SZ(8bcv-jKU= zVh@QwBK+2ctehMgWB!LaV8>`{A6j|Yb;7gUTqqi*#54Dv9=If>%_5=c(E2jn#NDav zcKUr=EHWys+xfJ64UH!EYCT{Ygt@O-{!;AD*=qqut98XxkoK_cPYLD)+dbh)0iMhU zv@y3Xs3fcJ*JgZltX77aVFc%{kL^FM^C00~0-yfgC`KdOT(=*S{dJ2-(rHMbJ- z82tYH9{Nk9!snzU);D+b3msTm1@k1wGl8)YOx&XCn;(A_y_Nk!3P%+V=#wqI;~+Y~ zJ^&hb|Fv6+NiEPQ7<$O>1mpi+M<<5}h-a{zpbhFAJA~!F{_>!*A9?;AoMAUNS@PCE zo1B;*t=n$q#Nt|OtNIs9D=*hIVDp5`)}7BF4CH6jU`hWk5*hi?m-B;$T_aj5^J-t= z|7I5XR=a{F^LK)!jaIup1iNpSt7`wFhT}UdY1F>P|MKXOC3{BL|7b`5ceEp!{~Bed zxZdJroBq<_Xzx@=f6LEj4Tv8fkAx{=Th#FU=ol5#mP|DN_AX8RVJ9dAK5TJR|7NVM zM>npt^5ANV)TS+ZYr%_ihxgET@xqxM{TLyNo0_VZ_jz4d_*2e!d+WaMwX@SB%A7s^ zd_0JDpQw$PKjcp(wNbVYsa<$$d*e={-O=X}1^-~zi?I^ITBTWDrY4_#NXtI9iQAQ$ z5ns7?73KjM$QDMGOvWy{Z@Qz>Iwoh_JH*Zg$#`sQ_z3C(bxCx{js=BaG=K2XVW<+5 z>E33UVVT)a+9a*FCZDuEy3HPUeSmUjzS#|P>x-ZpOhC*!26g*v4Eroc;yhCtcGUMn zI()mxSEoGeMjaJ{6clpI6L*=4B>$EpwS#^*FaKZqN@KXfWzqoE)@+rOgPl#rMk;nq z3X%Xdb{G<``|9uT3i?K*G?{I*+isd9sF2#vw)QV(prX9D&4PhM`H~fiYum#!pbM_f z*lWa|SXAkJwD)q!jMwtqu&kEE4&ZptPE-g{_EQ8!uu@i@31$>SFE1+ltf`?lMrt1J z5CC2`duzV~AYo?knP;65^I98eLtb;9s6=m#uMf#@M=-COodAk{`yDVBGsC#k8hR6h zMC$4W#IuFgZupaCXTV_HCB-`Azq=|mWjMlql6_liZe;#EFr+~@dbf=@@ckf;J$7un z7ag3y+laxp{~`7bHHaN8Ugwuqp;6T2VM6=-PA;rz9(PLD)YI1olhfXR`}KUl>?(5u zEMVb*xAo1PZ{L;$`>!o*Rv0AUx(Aw@pDQD`iVr4XfhG_%frO?P?CjgmI)7)BxLUx! z{rOipgsu1@HwLrNYjJOwI6fC43vOI(^Ku+tQY{**Evx`>ubW=|&q?yxzSsZGvg$_| zJop1}e?s~NXAO8tN5eOQA)K`U^__3UgYB((ef#b=Ltlw)e?Y`S3m)-BdiCai^Bz#_ z$ljbh*q4*J4l@CiuP*eqzUs^Sw@U}0C=*)%;hZNicc!_kAot?-O?nXfc7PB)A3%>o zpJCvcDqb?EKDxff|Mah7e2jlrLp~;VIaJRZisWCC;R}Y8L{}vEZs$3Y&Y@S@Q$3Tm8BimtHX;OHf6&elsbX5~p7t zuom_h-B=w~j&UEd3|ez09VXui!SiNkmS|g_MKLj8hmYZJqDu0dMhg>&En4)s7Cj#a zWG;m!*R>t(DDD`Ycy7$+{QHOW^kItWFa^^iB~Kv?io$M)<((@a{*gvYtk);l15O{_ z)Z(srk(M&ojm#fz?`ThzXFa#ovzp*fR<~acuv`;bZoQfCR^D(jH-?rz%*avswu;kI za%TQD`W%%DZ|KfqAJsKvirRJP9ZB3uK$1LrUXojUpYiS}QSt#b`LkwiUi1vKnt-nx zi(A>~SBRB51##0eRZh!G8!Lh~8_#Q%r6iVJqfeGwuqo>oc&?2T9yc|`9-L^a8V@ub zQrcctlec#z$XCM!O6yL?F;s)HGQ;Y3S=up^q2PU-zx(8wB2yIg>%!G?UwZI(ecFVG z;+4h*@+o6UtV=zs1`^U|;Y@OqCZF#P=rJJA9{Z>ztKu{?h-(XnXwW`R^Q^3u$NWC6 zFD7_ObuOm(4AlGRSY64`x9v!Em{Y&B&yI8BKyA# zmz8@^;Iu0=F2!2%2E^AUavlwm>w%!I?r4d|1bGkgb=h4p(`{Bl32Z+{j;PRZY5cUW zdEEB(*OwTi$jRF({1)U`zI5uhd^w1rI{mZF#cP(jtA;Rpg5?yckaPLtgIF^e#THx| zry`Wq;(E<)*SCK|I8pwe{?Qr~-r-J(ix?|*jOLx+ zeqH^4>5r;V)P!tXfI+5|1hE__^aG?eWZ4d8YIFls(}CK+@M~rVIidFd0eltSK zIcJ}}_t|@0*SgkP;G}?`AhOoAGH{r@e*GG}5pad>n~-_@#O4Sv*X2dSW9sHRdV$d? ztKO2bc(LVoEx<{DK3A?>2?!_vAGp2O)0+N|A3s8YmR2hhxHvc@AcF|Nn7s*Gp|C6z z-p;ju>ozt%j@0-`YWzX9dElmPYV%D!aEx8Je*L{){pxGS0Yj;+Sp&wmvaC2QR2%_c z82HC*Y-msxcf+%V1>JxVm#C-!Dhdhjg|s`+D(DBfN5ad?>!R?;w+n1v8$6&eh4+<% ziW$#I6dwt1IqU&``-3Y~61Qp1|2Ovik5CCQa_@4!tk#AGjE*kiZ3Hk0<mW7H$FjR8nyKz-$F_xX)d=0QGxDMdc zBQ`clcrPfVly|l94fqCNK=Lq*E(U`*Gt>ZyhSt(yKdq{+b`X~xLkjRfp;63EHF@_- zBoY9UwEB82aJ|kUb5qkIC_TMMRbNj}?{<(;@uk{GNO}W#lSt-)K522oX@Bki4d8n` z4QN(C68O0}79O4->JcNnwXfl zzg!2wU1AGX7rFS19<&)ePvFcyzHvqGk{@@w&iRM`jV^$NI1f-7Tvt#<=3P|)^Q+8* zyt-wd3m%UL#|@-J0hS)=ZkP{Hh!sfn(xfnWFaWz#eFi?2mzUd{c^tkM6a;AkUpD~Q z241;I=k$sLK=wH5Lk)$y_5-gs+CvH>@S?=TEaEhqBJt;tDu4Mk#rKy81h81@*HcU`27x&ub9GA_{xG8luO5_+}N&3$ETX6Uui_gRnw zho64JdenF|p0wF6HL>^TkGrk@Zyoe5_2zPa7jxdLl<)paB>-^twAO;0_tvT1^UU8+ ztHOJiL5C!?`~{vfy;Y6FGYBG7at7zw8NIyC2j03t;RA4;=+zr6_QAkZ3kX zj@)Up2Sx!XEvSCw$9ih>kDk9k)w8_`nOZ;BgTGnLywPD3TmVuV zAwEZ)Yrvi@yAR`W3<^?Sv?mp<#Fqg<_XAbu35_|;7lBK+6mt`Nc1)i_aG}lP?}zmZ z92O)Ro7ia)tnP0WG>{a0*N{!!ut0Hm^g@<-UloyF8s|EcrOmVgUeX zZ|+U`hEW=7{a?Xq{#Upl{xF?`R-;W8R7uyQUCE{gukKk2C^YdTCW8<{mpnrkPb(22 ziKi=70@!psKZ79O8w-Azvxwy{|6g|7|K|@6R?AuA5YDTe?|a6j{OMXOYQ_O$A?Deg zo|w$n2&n8tO~;Ve#gO=)$XqdseXS`)m)9*j+q+-pF1&j!MM@0jPRs^7-T8XMSTs?~ z;sc>6`_h+HbC7ny9y`i&_L?)4cItWDT(sg9)j7-H_PONk*nUZPo+mxkI=n-8qd*RJ zzpNUT>kR?a@q`R1lZGF7CRWFqiwDAO;>^}yHDniQE1xqKdIAP-*i>oC5O>JzcRcvw zSngev?K9mljRtWM{5fzFD^h%B3W+za5^>iE-^gYW#VYYQ!4oS>zN_(Ux9p3xmg`1+?EuYmHfXyE~VN0`+G=J@Gg|e#@!L={> zCBxOqa-!nh*|}NOJ2@0g^d35bdQ!8}^Bm*rm%DUv6K0Gs5Q7q;rFESsaeWvLL+x1& zR=<^H*6F*!jENlfp-V;f`6OI#D)JoJsSZX_i^X|#u?m|9N!?Z+Xh@GDGV9H{yhI7K zu2z*76kdmtv^hLVNB=#`a>9-sEN<`eu67{gK_prG5g6DzQ%%;+GMuEKYcR(Fh4@{Y z>bOr8Fc|)lp&oU@ZRKK&xQ4+`joL28_q4tyiZh7*y`Qt-la=qi+2amNN?!RDAI}Kx zwV)C>GrlVh0EiRy*bvU~S#c=dB4bgGgvAhlnws&gjgn45?!;g|YhpIWlUF92?pJi} zI##nlT7KYzrS7^01x*;U>8dsN!Y3X!KX3y7> zC4dh()jd}wOmnbzvKlqZmPWls7h?Ik)zsN&s<;z9GBnKG_`qmv*L%EhrVq`3(+^{!ynHyTuultBxMtYH$awg~9!@cY;Q{&Or zu9W7>IZ;w!L;}pOJe0hYf?Md^)O@rvaF#bUo;XUmq)28^TF0XTQGyM)RV9Lw8V#7^eSgNnzEZpm<_ zsLeFPdP6!(vG9{L^?!4<`%O;O#C@1srF8pXXq+g)6UBu0#ERKes_>IGe_+y#QGn<2 z=+d6RVw8Nr{ZIClgTkaq^3m zv^H;F#?{VxKQ5Ug6?|;S=rT4Agv|{WK_l$~-@sasI@W6Axzqk2z#<7Mu;MSpT~UYM zyxQ0XLQGO1H@KQIo4muu@}%18PJH*ub_~wxw^0VaOy6reN5;>}=|VUA@ARi*>i9ipT%!{v@QJcNb*jz`J*%1ee28x; zl`#09(9)zo(gbNn&rPvY8B&f7ijzo{o>tc=lwwf4bW*`oM*~LC3FaavTs*1N#Ygy` z(;K(Trlw}qN|~TT!L(vf5!*GbF5MJ;$e=DN95wSz)iZPaiyMVYk~pt8K%6E@Y;-{S zuCeAdoT^eq)a63re>svNmcYvT4(slgg)w<@@beMpBA{Y)EV;(j+M=0!vd=WoLehRZ zYnK;SWxPPlO4w3de6K2H(e#d}`q;p!gmql$IDEy<%}~~$cL(kRR+2M_yE9+ZT^^<8 zlP9h2=CcC3_p$Gr{UX)Ian&}^ofr!xP2^OzUG6`WPfwfE)U(|)@85X7UeRn{h{BG? zW0u9g?zmWbG49CJ;x*aP7YCyUevQ)Hd+=P4r>^)% z-km3YcBu{{)_#6=es*-qTczCo=x7aN`ipqflqzXCev>@?nrJsB zA{rItOS{aDqGrFCp#<14lw`OL)n)vCnnRuJaZg`*pkb=FgG3Rp)Qw0yGhIG7_0?E9 zRp=6K!K<_ZNASi6YEl_jyK~?7hu-n2nY25~F0wW(9L+VbG|6V)4OLM-;>;Cb8Esck z8Kvr{q@#i$uT3k@W^-hCPTX4L0F2Q_WRBwNDN zq55I)vVzqLFAG=5M}1jeYd)--3|#d!KmHo+w6v2LX=lE6@B~YlCa?3NZY5{T*ZvtV zY9W*O;uuobjr6pWY&>I&4St$hDW{tijQ)}r^W0r-PF75l7gs7BOpr5DkIloDT=z&+ zJJ4Y7aY~3N#S}v7_RXF6336gAg&jHawbzv))or86CW5=xw>eA9D>|MxNEGH^DL#ce z)v@wzuhoP#ckXlF4=|eR4%y+mFUX5>%U(cI`MH+JU#|a8Wf32*{_lL?AD2P@Tw7b~ zU47*NKs!rIOB0iVk`l+X(?Afdfa+%;1_u}h-+*kxzz0157d-GSP+wbCc@326D*%au zjuzPV6Upz=(keBRHvItt11l@L(|~&qb)0>H5Km!Y9t?^__l-s7Wi(%1+Qj;Bwb zMvjNm!|`w_xJbg1*ewouAioDJ7@~ym1)zZkxdY5+`lxsHS)zubU)-IoU2-S+bFj{KpSyqrCk5@USr8giZm!pmY>!^FouYt!r1Bcx3~x243Mk^?yOt zVBpmbB@Qx~phW5Le(?&b_fDp`fr3y*^BietZZH;N4dTX zxIYja178IffNa)d^>7|}gu)7_O%6BJe9ezQpg8JR!?*);13dy&yWvawG)=(egiNlB z+o2^1&UN6NBm?#b$u=-3ADd5@#%ZltQ^TD8K_&J=Rx5A38}URdCgtS#!sx(PU__vh zG?XQ-y9{iaqLxV*Bc#5r?k96Epd<}f-ZH`md? zTP|V3bOp|;N~QW3-4$wCjE{~wI5|PuW$M?{)}xo;o1mH3)B9Xk2b>G2xjSaZ+d-4x zu}9(HeCYI@tNI3fcJV5CAYXZlOF5FgT3bu2YklZsCimp3zCW?v+q5Q-f!hZI$Lm>* z{B2_@8!V-@QMHElV?U^xKr-=rGWHRnxwd%C&dfmlYEXorZz$@(6kay+(k7`9xE3gZ zf(WrG*`SOLBY#Dx24NX^%?>33y}}$E+$%m0suy_hK&lIT;jNOrf4$mBqGh~$2X)Ce zbl-sT&yi74G>#Ek?=G?0$m7#050^Vs1oQ~P&h%N z=9%F}7zB5t;(`Lu)oYHV7F3mjKpaJs;9C`4L12IW{I5+nY&WieCl;=bD0LK*yqO^( zN=Ly%IN$^F4O?4Vcy_@jb~Fjv`lFT!XiOixl1UbneA4*eNB_C-~oJV=%m8jBwy8cJ`+g2$^Zqus)}>Kx7KB@rVaQ2QyFu<8`8bc z!+(PSmOG17(@U}I{sGc?ujbOQ)R)&yHAgNv_X%}KH2Ns#7}hn6O{${h98(JJQ}XZA zE?elgz=&`T2qIwMMpDzON`W8xfjZJ=u9$Q>^^V|;ucFRkxByVCRdv7Y3nun&ScB;K zNi;hkFAXlKE9wBrEutAZYaoIZ=rOz{=};nc`aX;5D(ExRpKGv@mqD0Q=;(RrQf29% z?=zK-lASS4w`QqR%H(}!R7tW*6>v~*0)}IV{En<@Em3b$OCoaj3b+*6-Ip#by}a5) z-U0hsahpRY&q1f0f3`Tb?pSxnVnybs4%@^a9Imfkw%3$h)AI-NHNlP?cIuM18jdT&DLP8@dk6x1MLtZxcfMWbEd@CQ*?#<7j& zoM{jcjihD}Ds`Q=85;TtW`=n`?p+?Hi4U~K(bsXiPB|pMIk8Ee7&YY02^r`O2|MPH zoaZ;Y_#sQ5cEq3#4bHN6IZ-A3za#1{l~W{A%CU_dUKPqZ@I3jAG*$g^>&>WU*RB%C zNfM41HuW(cy*em2fL?5wLoW-^uNPwbZxqw7-$mT9869v}fp)DY$6 zlhg9^?Tr6^yuvKV-%NuzPeaiH>{oNyzc$*61gsQGd zShQ5-?rcfG6cl@cmFVm%UgF-Ko8dZo<@Euj z`#C2zX$KFn0DCZnAK+gBmfDWWGqbzmadhXE^oUPio1TToTTXR8v!cWWJt*)+AYkd` zIjd6r*N8)gEQL;<3)vYJ*x#M-GEyuClutb7}RZ1)-0e&db+PDx@qisK1 zKm=U?#m3z{(O#ebN#}mNJ(h5deRl3XAI{xptoAjOv1B!NV*wt_LaRp_ffO3(=0A>% zq?B)5$k~_ZIxf?ivL4$o}{?LQCwr1o>`#3#vzga?%?A3H~xcp}+$GN|9%c zdzL3#BE-P%hw`Sboo|!2r#kK@eFj*83C9XX(~I@V3c++ItYQ3Hg(F|rbiArG0~S1%mrr@{3tJ6Fj^z4y%M5(8#W?1 zPie&7xJT_r zmR0>oW7k*M@EHv0J|zuHJTI@^vslO~cFRSq&%<(fv|v9XL!1-Gt#?j1_Hn@H_zGne z6?8DC8G@6JuYlM*a|y2x>N)=P>I#&EK9T%EQ!ZoqU@IrZ&IQ9R<)}}8y9d?$N%jNv zJ`WcneW9@6kkK6ZKJS8uM;cNdE&|+pV6|_25Rad#0Vj%lf+;Nh`}-cT;K=3(aH+x% zIC;J0)z;ST{O=50{s&>K|1C|u2(~ta14F?33V z$k8LjG(*%OFa}ZIkz`g@7A&{dP03IXJuhz+HulZ)=g(WoI4pR-{Sd(` z8OH_Zv68u$si`T5biu0*AOPeC&z?Pl3KU>}fz%q#0O7Ik-=BooCcu(VJDKz0!v}aG zAZ&>29Bx)G0Q>>6Yw}1+DztsCW(ojJ9H_dB{6^s`i6x z(6_S^P$N`Q0a zp$$MnXTyeaEfXX@{rU5^^ie=;;El#|S)I^yXbXfo0}_DS1GO;JXNMZ(U?c-ZiF^M1 z3Ya}nwdYkp_0K6+Ittba#MrJl009zkq0y+xJ1=5mJD?q;zqKkAEM zjf^}n+m~~3do&xeJ3k6)QU0q!v$YFED12bz|ScV{K8|>VKV^n zf!9qx6Nh_yONYnC9-3L_fKsALHx>#z6y)r*hKmx3L^vU0P+8~foPQKH_)B zrs@KyIh3fTsMB3rg||dOoGGkfU0qtx3@GdbP;PW+2*w8@1Pq;f`au{7Cxo-Pbi+Nu z-?bn$fVEhWa0j4~TEirvqLHogjt+QI0lj8IXgF8E6wnFwee@k%14y}s{wCh zu36PrrV?A1vs#7FedeJ~9J~!Xh`bq4ger9MANUBs34B=*0VleF+v1_FaT9mykK^yN zvjJ5h(WHqhX>@C{Gela0OrKdFw}=y`ALeV0WpyCY#~AI0AkIq#;11EYFzZ5S-hqL9 zU=|W6jlV}6f;i*(C@(-;0HpzN!Mp$sBH%D2uEE!RaqJG)dL+g}sUFl5d&%pp`zjp@ z9WA|k_rFzih4~GXfTt%5L6d|X>1k=O-NBjV}aNC%a;LE+NPaO0=T(qm8=N^{WZ@Ly5_x_tSfl`{yJn7KSo_+ zumow%?Vv|twN>3pM-xx%f?EX7f2$(1DcROQblTZ&O!K7yD_O7VSuM~StNMNbYzKhZ za>ovrZShy&bt?dBcKIHr`Nd|bn=)q3*tOl5uW86ck zv~6RnaHetf7q`nOlCr8JXJt~;MScsM&8uO1*Y#MC{@UHht$TeZAS$RR?De$1bm4AD zyphz%3F<8UbEl$?0(8XA`i9a!i|V#|$zl!{^6WUXC(pMojtUz!@q#DAvt$w?YglA% z7f7l7elA$DI96e`iR_uHtx|Bmd!sLV+v530Wk|Jq-nku%5wZr}cClF*Qn&SFMt^P9 z<3%#-OW{NBgDrA@-_nrp8?S7~R`?$Q&g4z~pG0o{Z`pYNtGVVUVRKsO`!m^5WC%K_ z-C@}TMDF(O%MKiOaBwYjBviS;QpKVOYjfMKJ##^Xyb4Rzev-*872@;V(hFx*iIaoc zfvx@h6lTDTh#!p!9xd~$lMD8FU%zYE0|^tibbwMpe`IV$p|Df^lN`B({apUAHz zw%?Y2^EPeHd@nc*K@Vuu)JJSQJ4Y+9-z=XYA@0;@|fF*>QxWV1BB_f6-|K7Pv4=OLn zV)CJ$apsAuJu}0$bhPxVc3^*6K4Ahlq0Yzh2F|mdizZMVf$zX}3^jlWk6eIW$UzIf zN(*l!$nJQ7?RWRi?d}Z8$ntQ@Al^4EC`w;J5;W-;8_DnEyqs775j3!YDuf9YS62gb zaYA(TF!BPzq&4QiL)aWmH0t7=HFHCy1OwHRl1YwG$+!I*Zr?Ayle!m+DSlF37fuM}nR4W*0z-n1(8d+0##zsbhxWx=I zQ7UmYbH9Fl20~a>%qMoIf%NbiCn(ru?g3ab_WxsVFOlKTWSw_q0* zFynDwhu_D{&75y?$g5Cr7^2@vG^(IELvo+QyKlV3x6 zQ#AC|P!eGzNngAv?3TKXOq(83`xrK3Z`UiYuA9cyT>R0p8cA~jIf@=jiJ&iqE5t1+ ze5Wl^P4Qh^0Yqn*??bbL%h#lwUm(#?j@=4dT>xUE(Q{Dhm%LH-Iwr;``t?K^&Ud z-`uUNs)51*TysVbim}3EJ(0Wu#^8#Z8zh;5#Tgt0O}b>57VbtcmTI%53x%hkEF3@- zD3Snx528AOqDgIrpiEgTw9F3&a^Y=Wd&NJU2h^h<<>ui*-p+8Q>Vu^ZlOBf?f+|<; zKlS(bhpU` zdQCTSJcP567rb$!=W4t8*55ACPp2^B19;mBPmSWY6S}Ln7m5b%k`F8P^}#kNI%mV= zPuGYa;g&$g9qh%6Fa{-G7(0wrksHNe*lHT@PN&-CdUSSMr&NVX+eQurO3FJ5pII-; zIU-Ow`|#ecJZtb+eD_t#@#lY-228N$Uwfw=hg3-VUPki)GXnKxXaB^)5N78{dp#_! zfZr01nIK4p{UfB+0y+#L5w2a^{P9w7-_HpU)(D=x`ue*;k6_qg5k-KN-;+)r(u37d z<2U0y_Qt!Ys#0(=?t=LXvlI?-&LCOfjG8c2;5>sp#-|XEgy7OZh@4tnj02q06tjD$ zry2d*x4^0Xnq!RGn4?J$B@a(YxTe{vky7wcLOURW7W`xhgao7c^;1(*pFbad%WMU) zcV}lXoDOEg$S&}df>B`iiv-HiZ-Py+OdZRk)UX?Ewl8f`><%l0%sVm)yBSU8-Dn^>8yy zM@rivj>Lw@t5V0{h3yPUNj&dKIKH0(yPqV?7=!;ot)<~kqgA-YR9Lc(wgZ= z7$TJ4y!jU6OpuTW0s_Eg>U5R)d<4n; zfKaCj?)o^i46&j?S2BJ%G^tE#a+PBUyDqtcBB_4il z6>hZa7x&xEpT2&ctj;bJMNV3H#97$dSgK)VTGm!Q`5u1mmV0}lG-Y4LbIaMGJ=~?r;2@Lb z76rdqf!u53ew$U+lbRm*ExKCUlGuB&JN~>|U+hCK*=Fmmn)ySBHOvo+W-Hl)odlWC3@z6#|#)X?hry=s{&B4SI z5Cc3xr%E^{lACzhz*hllMFm60vv@o&BY4~mEIZc2FM6EZwo+dFlxXbEj%s|ejPlR9 zH0R-q+3R43S#cmVhY2Adbtf|DFfV|!8wbODpNgU2WtigHgJF|ht2xNL+ntj*ci4?o z@M#2D#2D=72(INW!)jbfcXi*DYPr0m`P%O(^c?NTJ{*$~?;#sfK!;+baPIXQ3G%_0?;WW5OeSV7q*AK<8EW0aXZ2h>EFk0c(?3~=MTTw_0#NB%Py+{nJ>sd7=F zt*w>zE+1*sBT*+Y%wV1DF!vL4&JZbSlyQCfLs-U|)r@I(rG5u9LG=dsZ?)& z;T}a0MiYG-uGVgAeJ;OZ;M^4`o?``}X&|R_O|!nlS$4%Z!5Ptk1Dmua0i^ z=j6S|!X2xjX8O$1gD+*hh715FH|LHD?8b{Erx+#EuhINgb`@6U!-jQXj#Y?hV`&Sm zkn`86wyO~x)AWhc_2HI0es~n~GGXZBKxHBPxA6h!5W9PDmg)x@K1!k}V@!gdu-`9C zF&)>5YA+fs)s(U#6ZzBX1TFJh*G+TSI?|f@DA7sA$7ao7hsNl!@|j^2j(G%Gm*fb> z(Ng}notqA-l=4OmB+=Greww8ICxJmfQ>F%-qe3|3U794Ebjc!W$*WbO~bU zWERQD(m73^!6`!%MQ-STs&%1pWYjdvfhr&|uv0jqbjC`B$f?(%Oy+0sBe-ZzFA3OM zGIqk1F|A7C)#ZPVHTn8aKUGj;_4QlFfCYCSis+GBlG$}X-2|)zWsqlj6sw58Fx_;U zpD#n!OodF(?+nLZWnD2{URh#CQ{wD$>1YfoP2ADe%=Kl9YsZ(8EOb0Wwe@kKSZ%=TFg{L_ARqo7ij2IB_;M z+)&OijQ$~~D_R}DMvu7>IO1qW%LlKn1@<&jr$cEi1Xh>PY$Q>rI!<;_Bbtkv&7>LO zq8O&6R$J1mgS+SNENnxAyK|;A+zI{)=+4Pc6K=xy)rY@njMf%hw6>y4NcibW6oHA6 z1_hp<9i}-sB&Xxzb&t^_dqTBQGk2u#bZj>Cx%Cf zVm4_!^UiQ1XlQG3n4pRr%`b)~QvxDin!<7thG!yki}#(*ev)Z*yzI`YrBP3Qxu~()yQ;8$sGws_#%pKJ$iu#$ z^-;un$EGr;^BO<>^5N2o$44F;K3=+P?ZR(Gjl+pS$>}30!s_#FMlru$PdbsrV5<^i zQv|2unCs*2rGU{l-Zs2N(ZVS>j%J?2qWI-IF>?8nxm zfQZ9&{6hBYt5J3K9t$Ra{tloQ297DboFJGqR2x{2MG0=*q+S2?>di&f|C`NDyXAUBCDe?^w;CO) zU<*}DBNq1++i7iliT`U*1J}EYIBgK-I~Y#QNp$(sy87vWYe}A~un{Gk66U`n3%d*FgOEdNfA%cI|1PNR-JViP6t+W0_f#$sfJ-a9 zVh@|%=^q^6=+wSd`cIT(#7!z<6S1rD;Nv*ePrRyU=I533-1)Xo(L$b z$#`B6`aB@acU3IkPJ4|tN@>qlf)(?WtCQ#ju_P#CW;!5kI+7wGqHWE{18b9>`;INl zz)9_9g}>FDpMcSU>mZ9`FR6LS|UH^$tZ0tYt+5jV%^z}OFE?Ke9~$XLF-vcGKz~q1%6GH^hQ7y zoylS5w#kdlp$uNUn2;sg;tm`7%e5(Q9vpD1U!oEpIM&s%n?YH0l)!NqB=Nqwp=JX4 zI+owH0In`vQNJ%65Ll1p7vyF{TeJl=r`SRLstkq~y$-`0!rGfg&fDWv4-q=_F7H`N zM&582I({a_7A^dw>IqH{-2yK$6xUXqVfg3wfyxnz?rnsB^2rLoG>QZTBWUd*vFBjK-iji_o9>(!Zh7Mn_l4KH$3 zl1zWEVEx605D%F;k4Tm~O>b zP4i*up9z?%O-XUPwf1dF`Yw13D1%PSu*J$6q93K*v`mvCcD9$>czu!cB=i`vtP zqDQ2Xp4W_ca{uj#cvzA+XA}gxc5(cO7OTp&hK2=QN(QWNlIsD}JtQK=el*q?KZfgx z?BQ(5LGzN>JdU9@>SL;fpEQljm&yKg5My_Sh6^(FoW~1xbwmWZ2b;%V ziNlWFa3%tsXJZMq!o?b!A1-DP`wU%-t0mW}nha@bW?k8{tVxxXR*Se@6V2o5S_`D= zYb?8~J}VuMsMjE}5?zcj(!r#vue1b8y$4m$R$b+pZaUhVMSjK2g{MW*O-c`#!cs>% z3kTK?GiBf564i*bb8OZoGe^UXYp*%%q%82h>`TJc>FG`cpCG{ViR>vouc>OQ{vih%}m;1 z{_(IIzRPaw*`PcW8HQq3_+>ekG4-J{Ut{QgWkdOH8|IlaC6r6`H%`y8yC`h!qud=a zRge1aU)*eKW=V(}@7k7UF`bgrmFdwL+(#P8xH=m*NSb6HR!fWbFL`gflKAt0bzt5z{73W)S^LNzi z=ZcGm+C)5FOtW935)P~VX&BiZ6kZ*YB`8*SzU*33{v%B;)}tL;HWN*&^1yo7uh;8drDHY@K$0Y--Dx>9DrkdnmCtK`+J<*Y(gP(se{V73!%*Ly`uqd3)Xv z1g$sspBmW}XG{{_I(Yq*=?+T;@+_6`B~SG2pa34=_MOJht#kz*ftR zj^3BIIE%m5O1<$Hcni)z4D&X(2Jci_;mkL+RcSABuQU&1g4nxl=(Erw(Z@J-R!QK? zq|r#qdN4 zJ*19K*ylA1%RbNe$*_^sd6~x_JLULC&Z-Q;WTMn}Y;f=%gy7RrV;v)g`EjD5nJ(WhjUbBeiHhkv9DW@H?$IRo;@TWpAZ?PA5 zsyLc&FCfkE%ff7obQ*^hx2O}Vo|KLGTF9ZsvpwG@m%ubXOp|U{_t~G_;a0X|l#QO8 zqQhCz^$xylYG6HM-K=94Lc-(?ys1#$3v+984o)1#S6V zk~A9>JxX(gy~ZpZ^TO}trAGV9;hHL3b|7m&#u0Cw{MVv*aP^uo72_>S6u$`d&k%*m zJ%5xp=PJ8N`aSxzU*raGNciqlqM!le`o=JfO02HBSAGjI!>BrSO{ikZUTlabigm}O znkyL^$!=K&)^3h?*orVIcI)DN%B7Zgj@AF9Lmu1ee2xAl*QMGwDo(>@j9C0QZ>7O% zv#zY+Clw}g*t-1aT;FXrB?al3BZidF@&!%Vf|tX-Tb)EB%7(oGv0!74{jSO? zzC5|8ehqH&MDk3NIA5zumc>lrx!2rdcrt6U3w>8l6m8v})$)Xv%aN@@J zgYn`#V*1r9@eik29Xug9l1cKanmMb9+cI>9BTP$H!WFCZt++)lrgsu5TI(96A~MVb zb?QsXrCDofucC`FsX!Rn73Z*|Z$Gk7C>%EVm&GBCQLnf)yV7korbBbAQ~WHo%ff&9 zKvc=-6s;5A5sl#uG;5y)jB^`%cg@g9+uf{7W=7@(jK(dy#v^*lY`F}h1iE*>IlmYk zrkP>M{R$wXfv-cEdA|H8+HdyvC?~&0Sn$jU-g>RL(4mSvSWb;l*R28^PdWM4RA)H& zwN#!OKD=}uY`HZVgj#FKn0D1FOc9&9gsqoP5HJ76a_aHEY~L7T=_l4@1P+Y&8aTnz zS060YF({tW;nd}nTiwgCpi%}&B<>~oI<)QSzjpZH&cej$VLvcq=kM|A{fX!;%(o=7 zUnFT2j7J)X`@UgtM&oU;8lNSKvvMQ?mp=OY>w5ggaDq^%jqjV-&Aw3|@u^AQOk6&} zyI+in9qU@Wzo&Gwv2#5 z2UHOJ50;{&(~MQblA4v+E}mscdZ?miHwm5EY*@G8S&KCqU-nfMoypD~Me*}s*S?39 zvj`hvifGG&+!vCh*oSat6EUW0Udx zJzoG?PMTqY2&bazU>(oZmgInu$L2O5*4e11bh5SXP2r*q6HPF0sM8dBxJMfq4P(oT z{Tj>=0p`xO zw#&n-q1Fjxe=MwxUICFB&uTyn34w}x6OOTbHXM*C{2=QP?hC&q@SebXyt8V|MZ4`lm%hl_8Ti zTm;$$7l9&|Zf>b5DIh5PtpiaS>a7a(sz^>rNl8zS|5+I#)|fuKl#_f8PFv%(nOt7<0`)s4z$g9S> zvU}{%!d3!Fecm3JH_x0ogA=@ZHj%J5qx<0Kw=90UbkycF$+rf~n1-FMdx|{Uz}|$F zZ>)!eE*4J;?MS}Et&uezx-Eyt;DN_70tU?3d>YZoZ%} zZWQYtFah&5P!i_-HbZz%Tbc^1t~>0lu3PL4)BKL=tzwVjFEiidf>}R}tlu}&=f^AF zn!K`gb-053S4i>~uf-!aSse`Lc*`g%#Wd( z*bZ;dYJ^@4f193e*>ih2^dF-00k6AH)Q(LrVqzfIGUz>w-CHvur#SLnTYEc`Mq+?A z!@I8v0&kG_9zhkWUA}|vokf1rgLUAT?HD-xV7ZNXR&w%Hv4BG}pZ?s?qNKCmG){Jn z)KsW?+<@puU@kSZwie*|Q{Z&3)+UyK7Zo`c~b0vs!Rkzqf6s)mlM=MlTLf$LCvk0WkptObhR((5x z2c6@dwv`a;jMWpt=th60Pv4;>R`1>TN)!u?`;w zIRekWj*VE zE2lp{yaCcH{)WE+1&&Ipt{5YW&&CzMiMXqcAO?DMkK1BK&wfhsAAW7yH$VsyvLw8^ zgXwzJ>D4$!4S;cZdr18;rzaab6d53_)ou-=lA`x^?=$Vc_;2R zSsm_QuuUtx`a%}W_XWg+yUNU=Slizr{Q4x713Gt*#b7X)lf)r&jRH_dL8!o6$(O*T z^I)ZosRJbhq}uhNZ$Aq$;o0BDASeB6!9M1mr4XDCUxxW&<@d^Ia|A4jp!GsN>Y>@+ zR@O;DUDujd2JsF?F`W?Na1vX%;O04~M-fv8CHZvapF)5-e46EAwVpVHAJasF4xknI zcRlc|=(H&#;RD6RW+}yvhm-H-z@xRm1_$AYpe;e#8cSHRcrlFre$Ku6TWdcur_bAl zjp(boXserlG=9TyJ_pRa&0<>O+*OD@W;ZSP!CM&Dq9XJAp;w{#v@)+{Ig zs?=x6BWKJhyq{b#5XOLJ?ohHf4?bO8t4}1p+N{YEi^M8UL66BKTCgx_RmLtea{`aa zC}!WyI9k6_!746qrQ3WQmfbotG|l*-4c5QKRqIOO*PHs-Pv=Trt$Aow(R9^he&5PE z*=MiMKUiFagEC-dX0=YW7Z)nVf=~SZ2zY&DEe|h8+pcm0sSH-eLM}bqGXa&b;=Ec8 zq-k2Sie?uLr2pkw=j8wCfOgS__;)|wJhu}yHBA(Ex1q(|yF+2Y=ICgP+5o__gD0LU zCX#FoIT^tWYQ2;Hp#a~}*IY+#56WQG>oq}&vz(iuU0sFzNg>gHd|E{=UsQ_vcyaqc zy390sg_$j1nX6pqA7U9agY_7NJplHETWkN)Sr&TKLN_8ACn#&@7Mrw_krQ`dE9_MM zCV0l~kSc5QTORUjD`K2tw5hChQ7fmObhfN$rO%s7$D!ev-678$@^|%Xs-))_n#*Sw zZ9ZiSWYM1)LB2rJ5rXTgjZxRDDWUl&NhtxnJ|fv+T9B_vtWP}EY}jMrpj9|(MZ&j# zJm&wjRwf1r+4M=S2lZOt`h#GoDW`8(8Ozu%y}cu4RPE;4w{czBqK9;(AF@o^=!Jgo zAEQ3{sxyIu7uBNq^|a3poLBp^H*PbkVuNDmy` zR!!>K`r1P@itO<%8PeKkT!uZxTGrhmo4y0Ukw5Ov_Y_v?Xcr8tCsBvV)<Z{^>24~Jrk2qYW8`7>l zZ!n4-uVHmXk9U2e;)L~K;qQcXVe4**2h!ykuij|PWxNu%=3X67KjK#FBp>C>{D49^ z#+BKE3MMD#S}J?FyK?UG@((xPoy-3udwFczJb4xx*{hHTzseOK@~@s;EWe=q)yoSD z?s^gcgF36Szk%;`s za3Y@DiH%Cue}28uwNBklrXDK2XbsU~K6KewHyF3JcV>}|7qclDaXOj8BcAH&d_ zyPw@9^0jXF%$+|Al)0U4^jxw><%^a;>sqH@4*wIOYZp(H@b6_$iKc1jLZ5+tyLnbe zM@tgHc%Sj}V0baoT$E+`8^5<`YhhKn7s%Ip(2U3GYG>XLjul$lY{oimJzsCZ?fBDv zu~i|wVGr+jd?~GuIodiuAiTKkEZ2A+1MkOk8dqJ5#1IUSgmi)AAqB3S>ODm zwDj?I^19C!)fcwOAIInJH9qncp+WU-57&-lYes$K0U9rLk za^u|bp)a7FO+Hg1)uDeTp`?YD-jMbI=88_qRQ8z;%%*>))-S8MXu5pfo-7kV|1GS! zKb_{1wOb%dJn(3}{E{Yns}g$;g?Dmts@XzL>>XV-SHGsiZih~uipV!IS>G&S>B(VWPNjZrF^mQTL0lfmY32{ z7Vg0vQKTOia~4Z1*meDE>aB`j!mFWVr=_W>z>&1tavoNedL=B$2OIBOTd;QjV`Z9;(bc;2@4*s>YL1pp~NG5 zLHA$3$X4W#b*_4fU|k`0qqZ_860(G9K+rD08vv;g9e0oSHy~5M0IEO#boKb=CZ6WY zL=tj>mwNJLv->YK?WgLYme%#h6J&)JNtKqD!QNk({h_eq>M($>;3PbKu?D} zsoSwK0PCktHD_O{)u)Q4plC4*TL)c)$o{RggLfj}x^SJdT*%chw-1y~%kqqzG}l70 zOQxM?Ua8i>fny1P*u;az)WYF6F;K=75>SC9dRAAq8@=pZDBmWw{s85{p5K728*&RJ zCjP$QCWN_yvUu%+@)-yx*@%rsZb#vy`P?S6;V>Y6NMF4Fx5Iluzz@cBL&Na~S%w6K z4TnJc{&%swX5eqX9X5x#A%3`{{!He%vPYU`kdPfJuoaHVV`NOf)2FiYD|8>5Ymofq zf4hC_;7(&>h~e>x+O`R99^y0sN6PBFB483Chau1bB5NV@yQ!%?!rTB}mIcb_ulN}N zDuO}*I>48J_1U-rRs)3ZLCSg6)j{O>adGwYgX;m(LDsKz3@=!efms3U3GV=dGtI}J zRIh)3wedHG7w`f==)jZEuMYW&9^fm0GqO$SfyO~iCdeG$e76w@A;>r0xAM3TU;=LXcA*Evb16pQ4tjp zkWFnBl?W0kG+Qv z_uhKMMU1Ek7YPy&AUhL?5I_>wOyTR@y0Y_@qT<3r0<Bw zo7t}wQ}%Ad(^Wtjh~Z;4Wlj!B_wYKCMJatl07o~ zjJme?@}t2M*3ALznmJR;_3_?ITZFPs&`b{!2 zI+n9&g79Xy5x7{~NMMGmir8Nto)X@E`setkMM%G`;T4VA7z~9X6v6M~k7mV}vW@dMNGj;yy5N1r;-DXt1YmYp9Bj?q#WNBdfBAB)nBMTi)sn4p zSa`(>jJ$wp>HPW6Lz?F_jm)lcg|q_~*=#pC{Ke$?|sH8M|m)5bXrMRhm^B(2Rvt3f9Q^6_g-zH zAu@DcEg6PO5rLKFyOEJ!@ZBc6LOefGKe(J@3I*67M}QL_C@JN{v^zzu{PNX~gn2^p z&j9?NWDuqvhZKDzXbf;1@L9N1e#_H${E?TaYnC1hWQef;?7jFgefHrku#?cKinl;p zHNFT(m%Dtm=o2X^F?v>=d3iXP&z~>1vr{j1-wt02xVh+izolP)t(x+TWC^)Ptt$^I zFL4L-Vv#+(sFWthd@e*WAiz<;H7DNeAJFc*}uFK#*2XsN^fdu zQC3otrFy*DAV_S+J%aOSE+P@oh2mW`cq9p)me+Vshbj8{Lvs9%&-)b8C58;4_>D0# zpX}K)(m}B7zynn3m(6p?&K_LqH;LR4grej+88z}?79ul&f0d*Cc=p^?!GTr+Y;S21 z5>!7tTL0=v@Nk2WvpQN6zCFJv_&G<(%?*08k$J&GdX*6>@4P(Qw%IKsWJ+LQAlVm& zS>qU~DC-p~=Ej#E*jX$jO8l1E+m~czO~5fL^&6bA8{}T_TiZ+zb20elLjvw2wt9Bk z4Sg%_gPodGh2SDP{xYOA#IVo4hnbO#IZd8Wv!>f+{JLrD);BVy;p)1&V_U?(5Uw5> zF=^kZ*SsW8d+Aa@J(&F8M!kFR|JqXj_Fno}!9$ssf#-ur6Kq2SeixNSck~D%OcW+_ zua9r0$|J@LDP#KXJB<*m#xeX9t&5X_M)hGPBUi<$B51+IA^8L14=L>d)r{M>r@@tE z5FA)N^~X_ta53;)p(rgY zdJ55k&WY-`Z;w`gZ@3k4=(WfuTZJZ&X(g3PltU&*NZb(Nb2>@FSs~wqD}tZ7>wEP% z@3|hX?QV+!6MgzXdE@j$A(=HSr!M59>EnqS;8Hd*Q7iR3{$wN1hOEWWo1fJ6>?a+8 zM9NJ&r*|Okj&k&b6Z4sWvv$21WI)1Rm@ch;len-PN2qG6T#a8S zK?qHnu8-8|hcA8?lKvBaA%r`eRt`o|x^?u$+zX|%X66Yk{$otsB6(;RFCqd??5T1r zjq{MkcN0UI2eH)Ml1C6OaN<_aE^W2Mg+FmT?39pnl1}hba?trLl1KSlWV2m|gOA(p z1q*7tH5Z**LY&xt%-nV_OQgc7YDkgXzvSn4^mR+G(b55e4bTtSbh6)09bs%D{QYFP z@-frIhyA{o7~$WXHb*{!@}bj9;3#w6PTvjjD0}4W)1DYs8Q@vkU({Jt_cr*n zzwFJEI)4HQzK#-`9`duEeQQYAuA*HfiRDKNw4$_ShaKHrnB^;uTPtomdUV~!%&?u`)zl?a zUa9k}R6TAhCl|3Arspn8f+$$u)bnZW4}sd0pHA>Qp{-ia(p!EfvwrE$3}h}a6Q#a; zY^kKUUO8p!no)ZzPKaO?n0rxPsvG_VHtMmRtX56o#5S6W4{I4Dy`HUi`2IKTc8k9p zX5OA}sa7^8OLm1W1G_T=3w_~rQywtjvdyjzZ%yE%=mdB~j(S+hJ~r$7?voE*mwi4k zDr%Ck@vGWhQfKd-NYbXYq+562$QU_%cKg6?Nh$HS(Uoi0HoplAR250ehDU=+Y>1L& zLVRC;7nCSFutNA4QKnBw>NB+O91E3f{Rlw-|-p(3)E zEsGr0=UwX$#Oc~Y*2{AwC$;|sUZ)MgX0sw#%sr<=+#TOO2gVF46!<#wbuz~83SBuH zrN379B{#w>B35|cS}F2*u{i?xqyaRJ;WAub-cPvhY4-yT2D`}a z;C5->?95Bcqi%J)OIOz43DI0vi;uMBkj5UEt<&XTTfOI}T=t){ddWdmbCE~cVWz-T z<%upC>nG|lxeeLGDWhPyeL3vdRyq1MYi>7uuCVwHfDj?+mH0CMnX5eS4_yHi$#!Dt zEyK1IX8qj#fDQ=-Io3LM9;FA_)DK-xxp}ksZhyTmPt0doAGeolOJ#M#oVVAa)7s$C z@t#%lJ_2f9J*)=W^Ao$Vy2st=C!>WZ7XnjcZk}36JEm*Z?--(AcFE@KzzxlE(z)iNA-cB0(dtqtjsa&@gVOfvgx>?d#o#d=qWy!9{ELUGDEfc3C+qa1QG?UkFM19CY|AJ2OYXORyDW62 zn_AZU*6Q85M`l)ql(($>!|`3tA$zv@9SMS8H06x(kL-n;yu3_14k*l^ttB!*TL#4a> zind>VEy&B0bhX!&_(Mba&eRPDQtxGEAjS_R=PEX`{LMe5?8&AnUQ#fff+C znEd?1;hXY?3J04e=^o-SQ{ZHeE3m_Hbo<1m?QKaa^43iL-FMBT&Cb$hJ?T3=&1>3{ zc|z$FmGhBTtt4eoK=)3!EN*XJ>|*dr|o=wX@clwh=i|rL$+vqvKlA zj!bEXrnEtGrjAlCkthOT)U#@ zhY^{=YPp@ZzPp#-LNwGxw$xMxj{SR%_wYZ`!Jl>~I29L1=c>B(Rq)(;%3OA;pSmrB z@IvAHe`bRJnKb^-2b6v9-!J~(Jvi%wpS*%yT6pxIML4ft{|Ci)I6TKR%>|_1ZOVsM zk=DBQDTTFeNFo$(iS@I~n6_}?!rwA7oSdCgy*u|%1eI5zcn?7Wu;RFQ;fD;C(VHE; z${qx&qM*W|2E>*^X^X@wp$Uu_7#qdJkZ%zmU2(-0vx)=WKekjq_z8?ML=3sn_HhNZ zYl9{Y1Va~LG2t&;xsnut3YW9J_C@TRvklZbVMYLi*9PruoA}FbgzLy|LQz6`;t-dJ zH;)n~Q7!34E>xM*ZPFjf@tordfY%jcOOaAoxM&e%qex)95v*v)xA8kF=EvlF0$@LW zJU^~L-EB&QUZ{mnbG`%S@|cDxTa&6VB3}-RwoAn1iA?w2jE$Ylts5ZV>bJuBb{K{AgP2sq#ADzVF>y+QYt<5glS#|t zy#B~Q&{nU!Yf;N(Bc{hjxE zxkAP}=j`^5vGzWlO++&7&l&}H0v7u})^W$4WIsI;v#UC)EPag6_!60?c2wwT{g#IA zhh|s(p{^%&DeX@1u!in}h08~B$j9i+!@*ZxcXrl`m61bfXwJDLShlvVw63yLMTd|( z9x94(z>e3z|5i{zpkCI+#fbwt^)))63`*gn$czfamR#JQ~8* z<=lfD8HL$aeN~HFOCl8${iX}G%*T(Ts6tLDFII8>nZ<%ZUVaIhVc{jLZM@9c!rT;J z*{~QTU)8`lQOhAX7GA=T>==u}MgW^etRls$VW&<(oY%uJXT}*9vJ+6~>74MhOFzvn zbYCfAv9@C3&(l%WVR}MZx1!VEbQOnSZ-`pHAVS>nYk;dUv_y7M%Rh7ygqpdq6Z1cN z>9>@evftqPn0R)&P5L}kfr2Tq6mAQ1F?)(|C4`L~3uA3{l{o<^0X_gN9`jUqkE@8u zzih3;&Me$gO#Ts7i`#mtC*VSH zqd>USlD`egz5OwFo#FL$V(+_E+0i;Q)ZC}*nY5qLu3qJ9c>t7!{`G9es~qV~VI9wA ztx^B|4KGzQaBm7-KJfN~-y>gLbUyXk;*sA_Vf57~X3 z`cC@4=PgAgcs-i{@@~xaOtsvB*($c3b zTlG*!k}ugW=akl0!>6v+4Qdx_c0EmPEpjhm;6=8TRK&ujSS%^Cm$v01_#~%>{22)9{{6p|$$MYu*8tCRuJoq)Ie=4OEoH zBX;MjG%wKEd2#$EqqRn3cIqf;Rb^y^%ol$J?lV3l)NkGRuuTrXmiE+q+3}OAg~3aQ zPq){5<}FhM7PPuO&diO0cIkb@>r_#x>n`I^U(xah`<#s&evRB>)Z?kk2d7I9Oc(c^ zS+6{YM={buWnb!p_|l%{52lQPERSuazA@VVmTQ${Nm^=rX5Zy2RtS1Vcb0XQl>*S9 zP*NS8t>$ySxv;QsYNmmysn-sLTUnbF-iN;|Y{N6C&V>UPL| z*ANsn$62m!_Sn2RQnV&4B*e4833v(O(Bd$W$TC9e{;<$e)#oHAZI{CrY?!3`r9a0c zUt7|I8W&Tq-Ow_An*36|x`C2AU}v4R^y1tNW0XPX8{Ez<*a^Yt zt!{8|&7m_siEPqfsZGwSQ@u?AJL>b<^(cr*D%ujuV`jTEAHZB5d*ZRPuB@!fx3s$? zw9j(92WL%trM61O1444?D?Q!YCRCch&{<1(k5w*-uWnQgGu;dCWLfQ2gZ6v}kym}> zQ9WtWjT`SDJSfl|C|thptcNLS&=&Bc_>{mHeSw0Mf+|-mq4~=j3`v@0f&I(Y;WTtG z`GuTGjjpAIg_%eF>D(Iil1h(F9_VM8Re#uTZ}949cWGB=YI|a8z|I`DQ~(whd1^DV z^{*rcTlN>R#F%DB<1$01wg4=!3uKR#4#$Zb?0ua!D25C`@wB||>A+k$j<)6@3Ss<| zG#8O`khVoj+m>mm;Zk|v#sv&-AFGdQSqfb%2WEn#MCX2OW8=RxgH?b%XVXY)!4WxP zh}DCblAf2Mp{LmfvD;L{NbSp^s}oELP<^!VBM2!C+NBXCJf2#&sl~HkVsp- z)_A~5kyEGh!;LWl3-8)PMA%epK9dbwl5+P{U7tu7PN1rxMc$c$+Ah2*t!RCAEKZjm zq}QHqf-IV*@-(yoK9KOD8=7OhbTkI)jD66;)OCJZ34|QBqM&)2qr#s0$=d_9Rn_WN~)A?8eM=x`Rr^ zeDNV=42;=#lTsOV(;&;EA3klUMsy7}|Jhdh7!cfbqng642IcCcWth8d0dth^vKPWr z+F?lj!c_OSo{dio>vq3kY5MG4x2`;JS9C#bGt|nlHi3FBZf?zR8%Ef5NsTcc5C)jU zH_DKqkVW0A>k$WLDz_QZ<%S;^=df`j-ZGeW@$MhB{mTNGoq%NbcfY1S!brh%(xmKT zQ}w?5@}6qvZ|_H8Fi)?JPVb{%I% z!+sjg=v`ecsmB^0=WlI(5$kB)`96E9JvkDk_ZT&~}IG%War1BZNX7uGnb( zKwKR%MSJkbC9iOs_$k?KeKt#bNWact930U{(%F=NWo=5z{6!YNOI#IMK=Mf5AB&c$ zofcq7nT5MXj(rc~6Z6&W9d~cscwUB`NL~@U_?T9eA5y#< z?iaB2{t-$?Nlbo6tk3;>_huQ?h~-3IKi;#J6|j!d$8m_ZPfa1L@!Yv(OEuL{7^Kcj zSj{!l&Qs8c3`EC$x5VUIw~SBz=#x)^6q|WW>#F5=Q&R|=%LL6ybEK|1he%YZvoi0@ zHit9VXp|Xq3D<1tI2rin+vB>N|7n_Un3>m$V^YM=2oLRdNm#u;RTW0sA@k3n-(ZpW zoBQ7Pud}FYYJW3j^5mQn_^`dcZo`#j`v9l2H<24VOHsFEuixdYO)SHZq)bc!+eEu4 zCcBErW%TO%dbNq)TFnOP0# zyr|%+b7Btwi;j-2tF7(4_<=<_1g-pFsr$AQLNv#* z1-AD*ZQlMSX5r`A<{c0~M_AWMAFrQ?`|4TgL|{8ehC(WM_*AWxS0LY>=9*X}+k2kZ zG?jn*%H3w=%Ga*OY0hD8-=^NRH1BjxI%x>kDPx(MaQ*u4wQiPXYk}tM>}pFwPMyNP z{mEYjQ?0ow2k#X2HSyd)%DSEa10+eWfhlg^KB1U+7_0xGcD)zY+mrdTI+_Iukp6gy$7C-Pfm-H5lpJ+ zr#cDd+P8;)xOTCTi3!ya=wdQQUE0c;HR9UJpU8R>RC>yN1BnX3DT1VQQS0{f%^n`t z5}zY82K&3)J2Yn|78Ms1u(#!Jb<2xYa5+UzKhl~ik3SO#-IZEqKLU%f5kxINWY98wJh0i1yIm7)!PeC0*DUa0Y^f>6B}|?*kjK-B<06&xu)xGJCRvQ9ew(a zgbuN?`Q^)(1*8%fD$c10YIXMar5BVO*wV1SzzzaTD&YCxl7xk%ijurL+c-Yhh5+-W zNXh~b#ezs5BaKBBz)H3=5~euqLa4b|HG|lgcF?ohw-8idvk`8Grp==G?Pqhgn0j}_ z=WJ1uLz9nzSlP_N%zZSrh!Y582+wf5@G16frSBe9#df>o)lzaiK|w*?7$|-f?WXM9 z+j*+Mw6kLJlXf?5Of2$dJLCZfXA_!@k~{97GVne*@IO4l+u6e+kZ>uYK^~4lLLdylJ@(H#YZo3pbPcOd|d;R)#6pc;VJSn9l z?ENn!>Q9vLzW~JXAqVeBhTD7okXh-|(U8W`gfrr4P&30=vPDtEG*TF5!g4Mc7naT9 zMv)V+t#r&(1B08W_r96fi)1_!A5L*!!`QDh4MkLR9{{Q7#Hh~O;OctAT8DYhpAQ&U zMp^4H+iZ1lde-Jn)P|ciC>^XQTzjOZrn#}P4x(m9?LhNlZ2%5r$v6RmLiB*|s;jC( ze2wDl|a4Avgz09(G zA&qmao^8_SY^tjLcVz^pS0D}9)#V*&-EUXM*Ru5mBtK$AUtZ}3vC4@1K!|yDDTj+H zbeR#_2t-3)5{lZPjR;fNM7e>xCzakH#=AsHnlC`$;1-y=49lZG62O>9;7o?g$iN4A zc`Gp|g@vHtc!LZF-vPZK+!RI~5los{*+=>O^ec*BH5)f>1fWBCW@hKP1s%P9EHwz> zvu=s%b8WJ#-dCL$DLvS~cDx4VDt|rVzi>#g%lTgAXL_BcM2Gnuu8odDkIXUv-Nd4d z%0`img7K-7C;Pk`@l}Upvq3OutANkH3v6mAkHFX^7A+2HI4TuuXlgpg+JMKMS-p-M z%&nmm9iW|8K&s0x0mSubGIWsX-GndJ7F@NLe%YJ!0cr*LYWHVLBK6J8QqVPsPBRby zdz&ac8;{N5i=(gQZzX{D4H_^%A{)qnr7?aq9)0 zdNY-@2M@Rf-1e&*w`)nH&OgbT5zUTz%*wMg*OU(SwJd44A7<$#XCZ#+wf>Nu%>IXr zOA8uMTN(CQrNWQ1-^)M?zwTBqzn310d)V6QKhc-fN2my}NVe`n7Bnbk27ULrQlybVI)4up#>fDI4JZV)_fSO6(RWMpz{1TP516p9Ux zKkDfj$cOl^fB53M3q;t9waF~6jvih;d5)F7vGGVZq0Mcig+hjfP@q`k^H*|088Ny|H*?CXc#;~^h; zscKPZok{Nx@1&M;5dio@`hBFQdi?DX{gA7b*0LO%P`#`m{BNr8zpTF!HX%PuSyun& zyON)Jm;XYFnyq(j(1d~9jsP7};BqPF1^$MRW{%EH#eZaL-x7jJ6**4Z z+e!`~?#Q*0;0B?gK}X2t(_Br0`UJvRPDWIoCs5~&YjQzJEBHy*Tldre(OtGT_AjA3 z6*vvyFQ+)c;S9muB(Eh)mF^U(zRaa2LFrs;w+AVrW1B?%)KCkgfZh#7!7_!Lj&;n% zWx1fI3OO_qw)maNF)@Ry(;sY%X}v$(9;5|NlA3CE?J^);;ULt`-&U#woE3RBuZk;B ziY%uC3ZO>Wj37iu9Sgb%M6&`0t?`Gido*?lEPN6xm=4eH-6 zG)HwT4_o;8B;i{$URe!s7Shv?Ds}*IkYp>|DI}ehne04E4-XYjaTWPGsTvqu$9P4_ zNM@n6r+5O{#QYIQdUvGy$@0izmtn7%*@Dk5UbV^S zPU=>D;eRKWj*un&6&%i#B4pmM>6>pxKWj-qMru!TSb7DK%05q#qsirHYaOs2BFblu zEGzQ+)NJqFJN22P8vdoKD%EiPcQyEWSpAH&*VU_n5)vs3M7GRC{3tgah0=-)dc9Hv z>CoC*O2`iG38YwWNhEaw2il(B;+s1XkUNt^CfB~X0Vah%r9FhWZ$|Q2`W&{zj+~tZ zBzhs2zCC0K!2m&Hd8HeK6Cq(#B3sy3Y)s6C&G00p|(t zB%j6kM`{_@7w8YqPlmSwTd}GZM^A7vB1L{iS7TuG4~un9fCQ?`j1X?>nPRJQzwBDK z+~?0{BtO8BoPTamw3=G=WE?UAaPrwa=b&_8t6t@gHvH#;ihsn-(r~8Ls^4pl8~Br(5@n z{b>5*g$@NpHyYJ1Cn;qa)>T%f8~rBUrLGi{?C|-{mR06&W90;l3e&R3%ONKD_30~h zr(0w%|6hA^(>B+?#Ui(*Ge1AR*|l%rAASBl`v0eH_`f@ONzlAci^;4>-Vv(-GXWq$ zS9geD-zUX)8_CwLcj89UCqTeU6(q6H20O@FAei0T{FsR3WYgd$-knXkpl=|lzbw?C-U8i4($~~D)4VRE zi#1cg%c#G&bLS34v@ie&g=};$oLI5?u(PSl%iC0-Q5#sI4GZ8pL?yvuDWFCpoF;vQ zSTi!fHd1I=uo^;lO>$RTjo@M60)=ZEQ*B4_f3c6WGg0(w#cI!4^7$$JzTFv)PvRer z_TB8P$fXe!91F=m#^@>uiTb`m3bmPLrH zl$*3Jbq9#|jsf>P8otTf+bqXJ!^D>Ps&?zdeV+`$LQqd%BdlU7?SQWmv%IQ+fijg?cY&NbB)7S6VM zUlyQO?3KxWPQ4DfR#=H3rGOCN24a_K-bXdBqk?+#=CG1hA?fZ^C>i^aEwB){Z9@g~ z-@NeD!q34oQd?gI*E$LbZnY`D=i~^GB^9jrlC7<+Y|ie*yB(-I0Xn>N$1QaBZq&g}|+0Va2Fs3cj3gA%pe(RE78YWxM`P^WF%o>c6hdrXM&DP0ZC7KzF^W{=F;I{gyz$GX-}K4GncIx;mPon5*|=EyK$`~c zEYVG#k{}Bi7w5iV!#N<(7lO_^U3Wn5=a%%nUJ6r-`c$_YadEglw1LeDS~`5Y7#&2Y z5-0*=;J`FpgqHtRc6LhfrF1uPPvD#QG}Rl+A#I_Qj<5lM7OI9F7dPf2omfzic=IOC z&WtCKWkL<*zRbuS2_b8ecANH5nv1`4$3vlK`PzX;dQX$RQ0ZCTW8jfP)8+5H%?#PH zw@U)P&%L|%J|psOt12qFPvOpx*%20@H1feyag2Nf+!m_NNgtP-n)fMFj9V&eEhib0 znn$=Nm?3GSSJ_uJiF#>iKd-j6rT8=-{aDIpg3`$~uv)le3PPl>zJhn9>+vU%!Kix| zl!_10*uW5tv|EtO)Q34h-N@xMh5DIUju=iQviPs3tRQ>w&*vX+zQ4hvOF{`TXD{kH%X}_h zH^W{Uglg=L1T}Qn9zFz^^_*hX+}PYm^ao1?F&rJsuEw3r2WgA>BPJ_AC{-V|j@Usq zKo-l8*=%R3YHCy;hloVS!e3L&M|wtc#E90WTzhGU^|&){Uk&nEMh2=!-9z-=_!>zj zd(ma*Im9j-Hf$i0dD#+w?HYCQ6hZATG@m$3s!}H^vVEIi6UDS6j+kkxwxG~upYuiK z8A4g`iTNA0Z5#K}FNQDaoSe;ZaqKys;s@*AHzO zr62OrP}R_oQkKX2DfY{7A^vOD(JlU!{;VES701{Y*bAVE)urU8fHSy`5512uw(*f> zea5OWoMmfF-h@<7&--=Ik=`$-Z!+4~pwQ=mcoenSU=zyo#C^SEth$$14lif*pH6#ZatNkwDphrI_-KwVpsDm@pp`h_=T7KNCh@?+*8 z*bvRK1rWG(5ZzZZlSpip1Rv_EiVz)Dn=+BC-|Q?(4@l(*UwB|heV?taA@vO;&LqB1 ziKDP!Qa1(TRhM#R6#Y)j$JT-b^4Xf{6i~2Z@7|3fvi_}~_pGwFM_F1(y)0ca#|k}Y z8v_2qgu(SCF=Q2Jsr>op8Fn5yTVg@rwTFOTWHZ-4D{iH`irNWb9&a}T(O=3f%htB5<>m?_Ci;@dpE4`Uk4N?VV)cFKTs<@&kGdaRbBAa;O{HF% zcu&cJ^1!Tv&(et~6KuT)j)XUc6s@rE%Z6IqcKD8R^bH$6>zdF@t?5CqHL}}IuAejw ziY^0xLh+atb3JtF(182GB{lTZA_lLt=ID@W-SKD~B(s43X>G`Dqrx4D`AcQ34f8)8 zL`#MJ%9WDNmXdNu0oLe{G!UVd;I^>akr_OU8}jB_+O5RIRNNaXni#dKS6$G|h9QiM z?|VEcc6XuM9jwXN(9oR%Gk_g(j6~XW?B7#WCpS!*4|_wl@K*cWw#pA~QcZ?kpm;59 z8NM5bdjCjEL{y(hn;)*h&AR-Ok`ipc*ORADp8^+AjwkJC9^6ATMo#!8+u`q0b3D>+ z#+X=rIrE!*@Apl8{CD^8slMXh`ri~KL`_*iVSyyJP+4tW7 Dtx!&B literal 0 HcmV?d00001 From d66435a20f7d9591f2289eb3cce71525c34dc9f4 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 08:55:35 +0000 Subject: [PATCH 142/165] try webp Signed-off-by: Teo Koon Peng --- diagram-editor/docs/assets/foo.webp | Bin 0 -> 60560 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagram-editor/docs/assets/foo.webp diff --git a/diagram-editor/docs/assets/foo.webp b/diagram-editor/docs/assets/foo.webp new file mode 100644 index 0000000000000000000000000000000000000000..988a56fc2ebb7a8883827a77bb817e7099c2b36d GIT binary patch literal 60560 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 WrG8P@-aB=WU_bx>000000001c(Kej` literal 0 HcmV?d00001 From 6c9942ad75cd59049972e148ee62ca7a948896e6 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 8 Aug 2025 08:57:39 +0000 Subject: [PATCH 143/165] remoev test Signed-off-by: Teo Koon Peng --- .../docs/assets/diagram-editor-preview.png | Bin 117336 -> 0 bytes diagram-editor/docs/assets/foo.webp | Bin 60560 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 diagram-editor/docs/assets/diagram-editor-preview.png delete mode 100644 diagram-editor/docs/assets/foo.webp diff --git a/diagram-editor/docs/assets/diagram-editor-preview.png b/diagram-editor/docs/assets/diagram-editor-preview.png deleted file mode 100644 index 8ebaa4bbfeb6c64464881a256f149ad3bb5b7484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117336 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 Dtx!&B diff --git a/diagram-editor/docs/assets/foo.webp b/diagram-editor/docs/assets/foo.webp deleted file mode 100644 index 988a56fc2ebb7a8883827a77bb817e7099c2b36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60560 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 WrG8P@-aB=WU_bx>000000001c(Kej` From 9397cf3f35bb385ace71aded92dd1c81552ff6f2 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Tue, 12 Aug 2025 01:11:18 +0000 Subject: [PATCH 144/165] setup pnpm Signed-off-by: Teo Koon Peng --- .github/workflows/ci_linux.yaml | 8 ++++++++ diagram-editor/build.rs | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/.github/workflows/ci_linux.yaml b/.github/workflows/ci_linux.yaml index ba3a0358..56f38eed 100644 --- a/.github/workflows/ci_linux.yaml +++ b/.github/workflows/ci_linux.yaml @@ -31,6 +31,14 @@ jobs: - name: Setup rust run: rustup default ${{ matrix.rust-version }} + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Setup nodejs + run: pnpm env use --global lts + - name: Build default features run: cargo build --workspace - name: Test default features diff --git a/diagram-editor/build.rs b/diagram-editor/build.rs index 3901a679..670e36d3 100644 --- a/diagram-editor/build.rs +++ b/diagram-editor/build.rs @@ -19,6 +19,16 @@ mod frontend { println!("cargo:rerun-if-changed=rsbuild.config.ts"); println!("cargo:rerun-if-changed=frontend"); + let status = Command::new("pnpm") + .arg("install") + .arg("--frozen-lockfile") + .status() + .expect("Failed to execute pnpm install"); + + if !status.success() { + panic!("pnpm install failed with status: {:?}", status); + } + let status = Command::new("pnpm") .arg("build") .status() From b6bfba80d9e56aba67a6116a074c6499629cb1f2 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Wed, 13 Aug 2025 03:57:43 +0000 Subject: [PATCH 145/165] wip trace backend Signed-off-by: Teo Koon Peng --- diagram-editor/Cargo.toml | 20 +- .../frontend/api.preprocessed.schema.json | 24 +- diagram-editor/frontend/nodes/buffer-node.tsx | 5 +- diagram-editor/frontend/types/api.d.ts | 11 +- diagram-editor/server/api/executor.rs | 254 +++++++++++++++--- diagram-editor/server/bin/print_schema.rs | 5 +- 6 files changed, 258 insertions(+), 61 deletions(-) diff --git a/diagram-editor/Cargo.toml b/diagram-editor/Cargo.toml index 76517f7c..ae57b5cd 100644 --- a/diagram-editor/Cargo.toml +++ b/diagram-editor/Cargo.toml @@ -7,16 +7,22 @@ license = "Apache-2.0" description = "Frontend for bevy_impulse diagrams" readme = "README.md" repository = "https://github.com/open-rmf/bevy_impulse" -keywords = ["reactive", "workflow", "behavior", "agent", "bevy", "frontend", "diagram"] +keywords = [ + "reactive", + "workflow", + "behavior", + "agent", + "bevy", + "frontend", + "diagram", +] categories = [ "science::robotics", "asynchronous", "concurrency", "game-development", ] -exclude = [ - "/build.rs" -] +exclude = ["/build.rs"] [lib] path = "server/lib.rs" @@ -25,7 +31,10 @@ path = "server/lib.rs" axum = { version = "0.8.4", features = ["ws"] } bevy_app = "0.12.1" bevy_ecs = "0.12.1" -bevy_impulse = { version = "0.0.2", path = "..", features = ["diagram"] } +bevy_impulse = { version = "0.0.2", path = "..", features = [ + "diagram", + "trace", +] } flate2 = { version = "1.1.1", optional = true } futures-util = "0.3.31" indexmap = { version = "2.10.0", optional = true, features = ["serde"] } @@ -56,4 +65,3 @@ json_schema = ["dep:schemars", "dep:indexmap"] name = "print_schema" path = "server/bin/print_schema.rs" required-features = ["json_schema"] - diff --git a/diagram-editor/frontend/api.preprocessed.schema.json b/diagram-editor/frontend/api.preprocessed.schema.json index cf370a96..b14429b3 100644 --- a/diagram-editor/frontend/api.preprocessed.schema.json +++ b/diagram-editor/frontend/api.preprocessed.schema.json @@ -121,22 +121,38 @@ { "additionalProperties": false, "properties": { - "Ok": true + "ok": true }, "required": [ - "Ok" + "ok" ], "type": "object" }, { "additionalProperties": false, "properties": { - "Err": { + "err": { "type": "string" } }, "required": [ - "Err" + "err" + ], + "type": "object" + } + ] + }, + "DebugSessionFeedback": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "operationStarted": { + "type": "string" + } + }, + "required": [ + "operationStarted" ], "type": "object" } diff --git a/diagram-editor/frontend/nodes/buffer-node.tsx b/diagram-editor/frontend/nodes/buffer-node.tsx index 3879e09f..0d084af5 100644 --- a/diagram-editor/frontend/nodes/buffer-node.tsx +++ b/diagram-editor/frontend/nodes/buffer-node.tsx @@ -1,7 +1,6 @@ import type { NodeProps } from '@xyflow/react'; -import { EdgeCategory } from '../edges'; import type { OperationNode } from '.'; -import BaseNode from './base-node'; +import BaseNode, { HandleType } from './base-node'; import { BufferIcon } from './icons'; function BufferNodeComp(props: NodeProps>) { @@ -11,7 +10,7 @@ function BufferNodeComp(props: NodeProps>) { icon={} label="Buffer" variant="inputOutput" - outputHandleType={EdgeCategory.Buffer} + outputHandleType={HandleType.Buffer} /> ); } diff --git a/diagram-editor/frontend/types/api.d.ts b/diagram-editor/frontend/types/api.d.ts index 4a914166..114c9c68 100644 --- a/diagram-editor/frontend/types/api.d.ts +++ b/diagram-editor/frontend/types/api.d.ts @@ -60,11 +60,18 @@ export type RetentionPolicy = */ export type DebugSessionEnd = | { - Ok: unknown; + ok: unknown; } | { - Err: string; + err: string; }; +/** + * This interface was referenced by `DiagramEditorApi`'s JSON-Schema + * via the `definition` "DebugSessionFeedback". + */ +export type DebugSessionFeedback = { + operationStarted: string; +}; /** * This interface was referenced by `DiagramEditorApi`'s JSON-Schema * via the `definition` "DiagramOperation". diff --git a/diagram-editor/server/api/executor.rs b/diagram-editor/server/api/executor.rs index c579bdb8..5e765199 100644 --- a/diagram-editor/server/api/executor.rs +++ b/diagram-editor/server/api/executor.rs @@ -5,28 +5,37 @@ use axum::{ State, }, http::StatusCode, + response::{self, Response}, routing::{self, post}, Json, Router, }; -use bevy_ecs::{ - event::EventWriter, - system::{ResMut, Resource}, -}; -use bevy_impulse::{Diagram, DiagramElementRegistry, Promise, RequestExt}; +use bevy_impulse::{trace, Diagram, DiagramElementRegistry, OperationStarted, Promise, RequestExt}; use futures_util::StreamExt; use serde::{Deserialize, Serialize}; use std::{ + error::Error, sync::{Arc, Mutex}, time::Duration, }; use tokio::sync::mpsc::error::TryRecvError; -use tracing::error; +use tracing::{error, warn}; + +type BroadcastRecvError = tokio::sync::broadcast::error::RecvError; + +type WorkflowResponseResult = Result, Box>; +type WorkflowResponseSender = tokio::sync::oneshot::Sender; + +type WorkflowFeedback = OperationStarted; + +#[derive(bevy_ecs::component::Component)] +struct FeedbackSender(tokio::sync::broadcast::Sender); struct Context { diagram: Diagram, request: serde_json::Value, registry: Arc>, - response_tx: tokio::sync::oneshot::Sender>, + response_tx: WorkflowResponseSender, + feedback_tx: Option, } #[derive(Clone)] @@ -48,7 +57,7 @@ pub struct PostRunRequest { async fn post_run( state: State, Json(body): Json, -) -> Result, StatusCode> { +) -> response::Result> { let (response_tx, response_rx) = tokio::sync::oneshot::channel(); if let Err(err) = state .send_chan @@ -57,24 +66,35 @@ async fn post_run( diagram: body.diagram, request: body.request, response_tx, + feedback_tx: None, }) .await { error!("{}", err); - return Err(StatusCode::INTERNAL_SERVER_ERROR); + return Err(StatusCode::INTERNAL_SERVER_ERROR.into()); } let response = tokio::time::timeout( state.response_timeout, - (async || { - let response_promise = response_rx - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - response_promise - .await - .available() - .ok_or(StatusCode::INTERNAL_SERVER_ERROR) + (async || -> response::Result { + let workflow_response = match response_rx.await { + Ok(response) => response, + Err(err) => { + error!("{}", err); + return Err(StatusCode::INTERNAL_SERVER_ERROR.into()); + } + }; + + match workflow_response { + Ok(promise) => match promise.await.available() { + Some(result) => Ok(result), + None => Err(StatusCode::INTERNAL_SERVER_ERROR.into()), + }, + Err(err) => Err(Response::builder() + .status(StatusCode::UNPROCESSABLE_ENTITY) + .body(err.to_string()) + .map_or(StatusCode::INTERNAL_SERVER_ERROR.into(), |e| e.into())), + } })(), ) .await @@ -86,11 +106,26 @@ async fn post_run( #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[cfg_attr(test, derive(serde::Deserialize))] #[derive(Serialize)] +#[serde(rename_all = "camelCase")] pub enum DebugSessionEnd { Ok(serde_json::Value), Err(String), } +impl DebugSessionEnd { + fn err_from_status_code(status_code: StatusCode) -> Self { + Self::Err(status_code.to_string()) + } +} + +#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] +#[cfg_attr(test, derive(serde::Deserialize))] +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub enum DebugSessionFeedback { + OperationStarted(String), +} + /// Start a debug session. async fn ws_debug(mut write: W, mut read: R, state: State) where @@ -103,42 +138,142 @@ where return; }; - // TODO: bevy_impulse does not support debugging yet, for now just run the diagram to terminate. - let response = post_run(state, Json(req)).await; - match response { - Ok(resp) => { - write.send_json(&DebugSessionEnd::Ok(resp.0)).await; - return; - } - Err(status_code) => { - write - .send_json(&DebugSessionEnd::Err(status_code.to_string())) - .await; - return; - } + let (response_tx, response_rx) = tokio::sync::oneshot::channel(); + let (feedback_tx, mut feedback_rx) = tokio::sync::broadcast::channel(10); + if let Err(err) = state + .send_chan + .send(Context { + registry: state.registry.clone(), + diagram: req.diagram, + request: req.request, + response_tx, + feedback_tx: Some(FeedbackSender(feedback_tx)), + }) + .await + { + error!("{}", err); + write + .send_json(&DebugSessionEnd::err_from_status_code( + StatusCode::INTERNAL_SERVER_ERROR, + )) + .await; + return; } + + let write = tokio::sync::Mutex::new(write); + + let process_response = async || { + let response_result = response_rx.await; + + let workflow_response = match response_result { + Ok(response) => response, + Err(err) => { + error!("{}", err); + write + .lock() + .await + .send_json(&DebugSessionEnd::err_from_status_code( + StatusCode::INTERNAL_SERVER_ERROR, + )) + .await; + return; + } + }; + + match workflow_response { + // type annotations needed on `promise.await` + Ok(promise) => match promise.await.available() { + Some(result) => { + write + .lock() + .await + .send_json(&DebugSessionEnd::Ok(result)) + .await; + } + None => { + write + .lock() + .await + .send_json(&DebugSessionEnd::err_from_status_code( + StatusCode::INTERNAL_SERVER_ERROR, + )) + .await; + return; + } + }, + Err(err) => { + write + .lock() + .await + .send_json(&DebugSessionEnd::Err(err.to_string())) + .await; + return; + } + }; + }; + + let mut process_feedback = async || loop { + let feedback = feedback_rx.recv().await; + + match feedback { + Ok(feedback) => { + let op_id = if let Some(id) = feedback.info.id() { + id.to_string() + } else { + "[unknown]".to_string() + }; + + write + .lock() + .await + .send_json(&DebugSessionFeedback::OperationStarted(op_id)) + .await; + } + Err(e) => match e { + BroadcastRecvError::Closed => { + break; + } + BroadcastRecvError::Lagged(_) => { + warn!("{}", e); + break; + } + }, + } + }; + + tokio::select! { + _ = process_response() => {}, + _ = process_feedback() => {}, + }; } -#[derive(Resource)] +#[derive(bevy_ecs::system::Resource)] struct RequestReceiver(tokio::sync::mpsc::Receiver); /// Receives a request from executor service and schedules the workflow. fn execute_requests( - mut rx: ResMut, + mut rx: bevy_ecs::system::ResMut, mut cmds: bevy_ecs::system::Commands, - mut app_exit_events: EventWriter, + mut app_exit_events: bevy_ecs::event::EventWriter, ) { let rx = &mut rx.0; match rx.try_recv() { Ok(ctx) => { - let workflow = ctx - .diagram - .spawn_io_workflow(&mut cmds, &*ctx.registry.lock().unwrap()) - .unwrap(); - let promise: Promise = - cmds.request(ctx.request, workflow).take_response(); + let registry = &*ctx.registry.lock().unwrap(); + let maybe_promise = match ctx.diagram.spawn_io_workflow(&mut cmds, registry) { + Ok(workflow) => { + if let Some(feedback_tx) = ctx.feedback_tx { + // FIXME: the provider id is different from the session id, there doesn't seem to be possible to get the session id + cmds.entity(workflow.provider()).insert(feedback_tx); + } + let promise: Promise = + cmds.request(ctx.request, workflow).take_response(); + Ok(promise) + } + Err(err) => Err(err.into()), + }; // assuming that workflows are automatically cancelled when the promise is dropped. - if let Err(_) = ctx.response_tx.send(promise) { + if let Err(_) = ctx.response_tx.send(maybe_promise) { error!("failed to send response") } } @@ -151,6 +286,24 @@ fn execute_requests( } } +fn debug_feedback( + mut op_started: bevy_ecs::event::EventReader, + feedback_query: bevy_ecs::system::Query<&FeedbackSender>, +) { + for ev in op_started.read() { + match feedback_query.get(ev.session) { + Ok(feedback_tx) => { + if let Err(e) = feedback_tx.0.send(ev.clone()) { + error!("{}", e); + } + } + Err(_) => { + // the session has no feedback channel + } + } + } +} + #[non_exhaustive] pub struct ExecutorOptions { pub response_timeout: Duration, @@ -172,6 +325,7 @@ fn setup_bevy_app( let (request_tx, request_rx) = tokio::sync::mpsc::channel::(10); app.insert_resource(RequestReceiver(request_rx)); app.add_systems(bevy_app::Update, execute_requests); + app.add_systems(bevy_app::Update, debug_feedback); ExecutorState { registry: Arc::new(Mutex::new(registry)), send_chan: request_tx, @@ -233,7 +387,7 @@ mod tests { let (send_stop, mut recv_stop) = tokio::sync::oneshot::channel::<()>(); app.add_systems( bevy_app::Update, - move |mut app_exit: EventWriter| { + move |mut app_exit: bevy_ecs::event::EventWriter| { if let Ok(_) = recv_stop.try_recv() { app_exit.send_default(); } @@ -323,7 +477,7 @@ mod tests { let (send_stop, mut recv_stop) = tokio::sync::oneshot::channel::<()>(); app.add_systems( bevy_app::Update, - move |mut app_exit: EventWriter| { + move |mut app_exit: bevy_ecs::event::EventWriter| { if let Ok(_) = recv_stop.try_recv() { app_exit.send_default(); } @@ -357,7 +511,8 @@ mod tests { cleanup_test, } = setup_ws_test(); - let diagram = new_add7_diagram(); + let mut diagram = new_add7_diagram(); + diagram.default_trace = bevy_impulse::TraceToggle::On; let request_body = PostRunRequest { diagram, @@ -378,6 +533,17 @@ mod tests { .await .unwrap(); + // there should be 2 feedback messages + for _ in 0..2 { + let feedback_msg = test_rx.next().await.unwrap(); + let feedback: DebugSessionFeedback = + serde_json::from_slice(feedback_msg.into_text().unwrap().as_bytes()).unwrap(); + assert!(matches!( + feedback, + DebugSessionFeedback::OperationStarted(_) + )); + } + let resp_msg = test_rx.next().await.unwrap(); let resp_text = resp_msg.into_text().unwrap(); let resp: DebugSessionEnd = serde_json::from_slice(resp_text.as_bytes()).unwrap(); diff --git a/diagram-editor/server/bin/print_schema.rs b/diagram-editor/server/bin/print_schema.rs index 5d4809ea..6ab862f9 100644 --- a/diagram-editor/server/bin/print_schema.rs +++ b/diagram-editor/server/bin/print_schema.rs @@ -1,5 +1,5 @@ use bevy_impulse_diagram_editor::api::{ - executor::{DebugSessionEnd, PostRunRequest}, + executor::{DebugSessionEnd, DebugSessionFeedback, PostRunRequest}, RegistryResponse, }; use indexmap::IndexMap; @@ -8,8 +8,9 @@ use schemars::SchemaGenerator; fn main() { let mut schema_generator = SchemaGenerator::default(); schema_generator.subschema_for::(); - schema_generator.subschema_for::(); schema_generator.subschema_for::(); + schema_generator.subschema_for::(); + schema_generator.subschema_for::(); // using `IndexMap` to preserve ordering let schema: IndexMap<&'static str, serde_json::Value> = IndexMap::from_iter([ From e4c869b660883fe2d242cb07b0ad368707925c30 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 14 Aug 2025 08:13:57 +0000 Subject: [PATCH 146/165] run workflow ui Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 9 +- .../frontend/api-client-provider.tsx | 8 + diagram-editor/frontend/api-client.ts | 56 ++++++ diagram-editor/frontend/command-panel.tsx | 2 + .../frontend/export-diagram-dialog.tsx | 2 +- .../frontend/forms/buffer-edge-form.tsx | 8 +- .../frontend/forms/data-input-form.tsx | 7 +- .../frontend/forms/section-form.tsx | 13 +- diagram-editor/frontend/registry-provider.tsx | 35 ++-- diagram-editor/frontend/run-button.tsx | 173 ++++++++++++++++++ diagram-editor/frontend/use-react-flow.ts | 7 + diagram-editor/server/api/error_responses.rs | 30 +++ diagram-editor/server/api/executor.rs | 26 ++- diagram-editor/server/api/mod.rs | 1 + examples/diagram/calculator/src/main.rs | 3 +- 15 files changed, 327 insertions(+), 53 deletions(-) create mode 100644 diagram-editor/frontend/api-client-provider.tsx create mode 100644 diagram-editor/frontend/api-client.ts create mode 100644 diagram-editor/frontend/run-button.tsx create mode 100644 diagram-editor/frontend/use-react-flow.ts create mode 100644 diagram-editor/server/api/error_responses.rs diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index bebe041b..b151debf 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -1,9 +1,5 @@ import { Button, ButtonGroup, styled } from '@mui/material'; -import { - type NodeAddChange, - useReactFlow, - type XYPosition, -} from '@xyflow/react'; +import type { NodeAddChange, XYPosition } from '@xyflow/react'; import React from 'react'; import { v4 as uuidv4 } from 'uuid'; import { EditorMode, useEditorMode } from './editor-mode'; @@ -37,6 +33,7 @@ import { UnzipIcon, } from './nodes'; import type { DiagramOperation } from './types/api'; +import { useReactFlow } from './use-react-flow'; import { joinNamespaces, ROOT_NAMESPACE } from './utils/namespace'; const StyledOperationButton = styled(Button)({ @@ -111,7 +108,7 @@ function createNodeChange( function AddOperation({ parentId, newNodePosition, onAdd }: AddOperationProps) { const [editorMode] = useEditorMode(); - const reactFlow = useReactFlow(); + const reactFlow = useReactFlow(); const namespace = React.useMemo(() => { const parentNode = parentId && reactFlow.getNode(parentId); if (!parentNode || !isOperationNode(parentNode)) { diff --git a/diagram-editor/frontend/api-client-provider.tsx b/diagram-editor/frontend/api-client-provider.tsx new file mode 100644 index 00000000..9d31dc5f --- /dev/null +++ b/diagram-editor/frontend/api-client-provider.tsx @@ -0,0 +1,8 @@ +import { createContext, useContext } from 'react'; +import { ApiClient } from './api-client'; + +const ApiClientContext = createContext(new ApiClient()); + +export const useApiClient = () => { + return useContext(ApiClientContext); +}; diff --git a/diagram-editor/frontend/api-client.ts b/diagram-editor/frontend/api-client.ts new file mode 100644 index 00000000..255eaca0 --- /dev/null +++ b/diagram-editor/frontend/api-client.ts @@ -0,0 +1,56 @@ +import { from, type Observable } from 'rxjs'; +import type { + Diagram, + DiagramElementRegistry, + PostRunRequest, +} from './types/api'; +import { getSchema } from './utils/ajv'; + +const validateRegistry = getSchema( + 'DiagramElementRegistry', +); + +async function getErrorMessage(response: Response) { + const text = await response.text(); + return text || `${response.status} ${response.statusText}`; +} + +export class ApiClient { + getRegistry(): Observable { + return from( + (async () => { + const response = await fetch('/api/registry'); + if (!response.ok) { + throw new Error(await getErrorMessage(response)); + } + const data = await response.json(); + if (!validateRegistry(data)) { + throw validateRegistry.errors; + } + return data; + })(), + ); + } + + postRunWorkflow(diagram: Diagram, request: unknown): Observable { + return from( + (async () => { + const body: PostRunRequest = { + diagram, + request, + }; + const response = await fetch('/api/executor/run', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + if (!response.ok) { + throw new Error(await getErrorMessage(response)); + } + return response.json(); + })(), + ); + } +} diff --git a/diagram-editor/frontend/command-panel.tsx b/diagram-editor/frontend/command-panel.tsx index fc01f422..9b5bbda1 100644 --- a/diagram-editor/frontend/command-panel.tsx +++ b/diagram-editor/frontend/command-panel.tsx @@ -6,6 +6,7 @@ import EditTemplatesDialog from './edit-templates-dialog'; import { EditorMode, useEditorMode } from './editor-mode'; import type { DiagramEditorNode } from './nodes'; import { MaterialSymbol } from './nodes'; +import RunButton from './run-button'; export interface CommandPanelProps { onNodeChanges: (changes: NodeChange[]) => void; @@ -38,6 +39,7 @@ function CommandPanel({ <> + {editorMode.mode === EditorMode.Normal && ( + + setOpenPopover(false)} + anchorEl={buttonRef.current} + anchorOrigin={{ + vertical: 'bottom', + horizontal: 'center', + }} + transformOrigin={{ + vertical: 'top', + horizontal: 'center', + }} + slotProps={{ + paper: { + sx: { + overflow: 'visible', + mt: 0.5, + backgroundColor: theme.palette.background.paper, + border: `1px solid ${theme.palette.divider}`, + '&:before': { + content: '""', + position: 'absolute', + top: 0, + left: '50%', + transform: 'translateY(-50%) translateX(-50%) rotate(45deg)', + width: 16, + height: 16, + backgroundColor: theme.palette.background.paper, + backgroundImage: 'inherit', + borderTop: `1px solid ${theme.palette.divider}`, + borderLeft: `1px solid ${theme.palette.divider}`, + }, + }, + }, + }} + > + Run Workflow + + + + Request: + setRequestJson(e.target.value)} + error={requestError} + sx={{ backgroundColor: theme.palette.background.paper }} + /> + Response: + + + + + + + + + ); +} + +export default RunButton; diff --git a/diagram-editor/frontend/use-react-flow.ts b/diagram-editor/frontend/use-react-flow.ts new file mode 100644 index 00000000..9357a71e --- /dev/null +++ b/diagram-editor/frontend/use-react-flow.ts @@ -0,0 +1,7 @@ +import { useReactFlow as _useReactFlow } from '@xyflow/react'; +import type { DiagramEditorEdge } from './edges'; +import type { DiagramEditorNode } from './nodes'; + +export function useReactFlow() { + return _useReactFlow(); +} diff --git a/diagram-editor/server/api/error_responses.rs b/diagram-editor/server/api/error_responses.rs new file mode 100644 index 00000000..6f035208 --- /dev/null +++ b/diagram-editor/server/api/error_responses.rs @@ -0,0 +1,30 @@ +use axum::{ + http::StatusCode, + response::{IntoResponse, Response}, +}; +use bevy_impulse::{Cancellation, CancellationCause}; + +pub(super) struct WorkflowCancelledResponse<'a>(pub(super) &'a Cancellation); + +impl<'a> IntoResponse for WorkflowCancelledResponse<'a> { + fn into_response(self) -> Response { + let msg = match *self.0.cause { + CancellationCause::TargetDropped(_) => "target dropped", + CancellationCause::Unreachable(_) => "unreachable", + CancellationCause::Filtered(_) => "filtered", + CancellationCause::Triggered(_) => "triggered", + CancellationCause::Supplanted(_) => "supplanted", + CancellationCause::InvalidSpan(_) => "invalid span", + CancellationCause::CircularCollect(_) => "circular collect", + CancellationCause::Undeliverable => "undeliverable", + CancellationCause::PoisonedMutexInPromise => "poisoned mutex in promise", + CancellationCause::Broken(_) => "broken", + }; + Response::builder() + .status(StatusCode::UNPROCESSABLE_ENTITY) + .body(format!("workflow cancelled: {}", msg)) + .map_or(StatusCode::INTERNAL_SERVER_ERROR.into_response(), |resp| { + resp.into_response() + }) + } +} diff --git a/diagram-editor/server/api/executor.rs b/diagram-editor/server/api/executor.rs index 5e765199..bd4e3a54 100644 --- a/diagram-editor/server/api/executor.rs +++ b/diagram-editor/server/api/executor.rs @@ -1,3 +1,5 @@ +use crate::api::error_responses::WorkflowCancelledResponse; + use super::websocket::{WebsocketSinkExt, WebsocketStreamExt}; use axum::{ extract::{ @@ -86,14 +88,28 @@ async fn post_run( }; match workflow_response { - Ok(promise) => match promise.await.available() { - Some(result) => Ok(result), - None => Err(StatusCode::INTERNAL_SERVER_ERROR.into()), - }, + Ok(promise) => { + let promise_state = promise.await; + if promise_state.is_available() { + if let Some(result) = promise_state.available() { + Ok(result) + } else { + Err(StatusCode::INTERNAL_SERVER_ERROR.into()) + } + } else if promise_state.is_cancelled() { + if let Some(cancellation) = promise_state.cancellation() { + Err(WorkflowCancelledResponse(cancellation).into()) + } else { + Err(StatusCode::INTERNAL_SERVER_ERROR.into()) + } + } else { + Err(StatusCode::INTERNAL_SERVER_ERROR.into()) + } + } Err(err) => Err(Response::builder() .status(StatusCode::UNPROCESSABLE_ENTITY) .body(err.to_string()) - .map_or(StatusCode::INTERNAL_SERVER_ERROR.into(), |e| e.into())), + .map_or(StatusCode::INTERNAL_SERVER_ERROR.into(), |resp| resp.into())), } })(), ) diff --git a/diagram-editor/server/api/mod.rs b/diagram-editor/server/api/mod.rs index ff17ee80..7b1864fd 100644 --- a/diagram-editor/server/api/mod.rs +++ b/diagram-editor/server/api/mod.rs @@ -7,6 +7,7 @@ use axum::{ use bevy_impulse::DiagramElementRegistry; use mime_guess::mime; +mod error_responses; pub mod executor; mod websocket; diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index 70d0b8f0..d4d1dee2 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -22,7 +22,7 @@ use bevy_impulse::{ }; use bevy_impulse_diagram_editor::{new_router, ServerOptions}; use clap::Parser; -use std::{error::Error, fs::File, str::FromStr}; +use std::{error::Error, fs::File, str::FromStr, thread}; #[derive(Parser, Debug)] #[clap( @@ -87,6 +87,7 @@ async fn serve(args: ServeArgs, registry: DiagramElementRegistry) -> Result<(), let mut app = bevy_app::App::new(); app.add_plugins(ImpulseAppPlugin::default()); let router = new_router(&mut app, registry, ServerOptions::default()); + thread::spawn(move || app.run()); let listener = tokio::net::TcpListener::bind(("localhost", args.port)) .await .unwrap(); From 289d80cd5f9b3b69cc2b715342c4cdbb84ea473b Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Thu, 14 Aug 2025 08:22:31 +0000 Subject: [PATCH 147/165] add config field to node form Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/forms/node-form.tsx | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/diagram-editor/frontend/forms/node-form.tsx b/diagram-editor/frontend/forms/node-form.tsx index 3ac2d2b1..fa423841 100644 --- a/diagram-editor/frontend/forms/node-form.tsx +++ b/diagram-editor/frontend/forms/node-form.tsx @@ -1,4 +1,5 @@ import { Autocomplete, TextField } from '@mui/material'; +import { useMemo, useState } from 'react'; import { useRegistry } from '../registry-provider'; import BaseEditOperationForm, { type BaseEditOperationFormProps, @@ -9,6 +10,21 @@ export type NodeFormProps = BaseEditOperationFormProps<'node'>; function NodeForm(props: NodeFormProps) { const registry = useRegistry(); const nodes = Object.keys(registry.nodes); + const [configValue, setConfigValue] = useState(() => + props.node.data.op.config ? JSON.stringify(props.node.data.op.config) : '', + ); + const configError = useMemo(() => { + if (configValue === '') { + return false; + } + try { + JSON.parse(configValue); + return false; + } catch { + return true; + } + }, [configValue]); + return ( )} /> + { + setConfigValue(ev.target.value); + try { + const updatedNode = { ...props.node }; + updatedNode.data.op.config = JSON.parse(ev.target.value); + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: updatedNode, + }); + } catch {} + }} + error={configError} + slotProps={{ + htmlInput: { + sx: { fontFamily: 'monospace', whiteSpace: 'nowrap' }, + }, + }} + /> ); } From c396b6df7964c95f40d4dd1dff16cc6e908b2f57 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 15 Aug 2025 04:31:37 +0000 Subject: [PATCH 148/165] empty request by default Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/run-button.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diagram-editor/frontend/run-button.tsx b/diagram-editor/frontend/run-button.tsx index be840041..ceea26de 100644 --- a/diagram-editor/frontend/run-button.tsx +++ b/diagram-editor/frontend/run-button.tsx @@ -25,7 +25,7 @@ function RunButton() { const [openPopover, setOpenPopover] = useState(false); const buttonRef = useRef(null); const theme = useTheme(); - const [requestJson, setRequestJson] = useState('{}'); + const [requestJson, setRequestJson] = useState(''); const [responseContent, setResponseContent] = useState({ raw: '', }); From 1694585f589df0a9c1fa6723e6d2fa262aeb3cd7 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 15 Aug 2025 04:42:56 +0000 Subject: [PATCH 149/165] ignore wip test Signed-off-by: Teo Koon Peng --- diagram-editor/server/api/executor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/diagram-editor/server/api/executor.rs b/diagram-editor/server/api/executor.rs index bd4e3a54..866c1a5e 100644 --- a/diagram-editor/server/api/executor.rs +++ b/diagram-editor/server/api/executor.rs @@ -519,6 +519,7 @@ mod tests { } } + #[ignore = "blocked on bevy_impulse https://github.com/open-rmf/bevy_impulse/issues/100"] #[tokio::test] #[test_log::test] async fn test_ws_debug() { From 9d646d55a49c5c8a9f5cb4e31537d2a8a57cbac2 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Fri, 15 Aug 2025 08:05:01 +0000 Subject: [PATCH 150/165] styling Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/run-button.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/diagram-editor/frontend/run-button.tsx b/diagram-editor/frontend/run-button.tsx index ceea26de..a33fad18 100644 --- a/diagram-editor/frontend/run-button.tsx +++ b/diagram-editor/frontend/run-button.tsx @@ -161,6 +161,7 @@ function RunButton() { variant="contained" onClick={handleRunClick} loading={running} + startIcon={} > Run From 0552be9922bc8d75e3afb00ab6a8faadba97b1ac Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Sun, 17 Aug 2025 17:46:15 +0800 Subject: [PATCH 151/165] Make calculator operations more flexible Signed-off-by: Michael X. Grey --- examples/diagram/calculator/src/main.rs | 163 +++++++++++++++++++++++- 1 file changed, 158 insertions(+), 5 deletions(-) diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index d4d1dee2..9393ed87 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -18,11 +18,12 @@ use bevy_app; use bevy_impulse::{ Diagram, DiagramElementRegistry, DiagramError, ImpulseAppPlugin, NodeBuilderOptions, Promise, - RequestExt, RunCommandsOnWorldExt, + RequestExt, RunCommandsOnWorldExt, JsonMessage, }; use bevy_impulse_diagram_editor::{new_router, ServerOptions}; use clap::Parser; use std::{error::Error, fs::File, str::FromStr, thread}; +use serde_json::{Value, Number}; #[derive(Parser, Debug)] #[clap( @@ -99,19 +100,89 @@ fn create_registry() -> DiagramElementRegistry { let mut registry = DiagramElementRegistry::new(); registry.register_node_builder( NodeBuilderOptions::new("add").with_default_display_text("Add"), - |builder, config: f64| builder.create_map_block(move |req: f64| req + config), + |builder, config: Option| { + builder.create_map_block(move |req: JsonMessage| { + let input = match req { + JsonMessage::Array(array) => { + let mut sum: f64 = 0.0; + for item in array.iter().filter_map(Value::as_number).filter_map(Number::as_f64) { + sum += item; + } + sum + } + JsonMessage::Number(number) => number.as_f64().unwrap_or(0.0), + _ => 0.0, + }; + + input + config.unwrap_or(0.0) + }) + }, ); + registry.register_node_builder( NodeBuilderOptions::new("sub").with_default_display_text("Subtract"), - |builder, config: f64| builder.create_map_block(move |req: f64| req - config), + |builder, config: Option| { + builder.create_map_block(move |req: JsonMessage| { + let input = match req { + JsonMessage::Array(array) => { + let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut input = iter.next().unwrap_or(0.0); + for item in iter { + input -= item; + } + input + } + JsonMessage::Number(number) => number.as_f64().unwrap_or(0.0), + _ => 0.0, + }; + + input - config.unwrap_or(0.0) + }) + }, ); + registry.register_node_builder( NodeBuilderOptions::new("mul").with_default_display_text("Multiply"), - |builder, config: f64| builder.create_map_block(move |req: f64| req * config), + |builder, config: Option| { + builder.create_map_block(move |req: JsonMessage| { + let input = match req { + JsonMessage::Array(array) => { + let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut input = iter.next().unwrap_or(0.0); + for item in iter { + input *= item; + } + input + }, + JsonMessage::Number(number) => number.as_f64().unwrap_or(0.0), + _ => 0.0, + }; + + input * config.unwrap_or(1.0) + }) + }, ); + registry.register_node_builder( NodeBuilderOptions::new("div").with_default_display_text("Divide"), - |builder, config: f64| builder.create_map_block(move |req: f64| req / config), + |builder, config: Option| { + builder.create_map_block(move |req: JsonMessage| { + let input = match req { + JsonMessage::Array(array) => { + let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut input = iter.next().unwrap_or(0.0); + for item in iter { + input /= item; + } + input + } + JsonMessage::Number(number) => number.as_f64().unwrap_or(0.0), + _ => 0.0, + }; + + input / config.unwrap_or(1.0) + }) + }, ); registry } @@ -129,3 +200,85 @@ async fn main() -> Result<(), Box> { Commands::Serve(args) => serve(args, registry).await, } } + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + #[test] + fn test_split() { + let diagram = Diagram::from_json(json!( + { + "$schema": "https://raw.githubusercontent.com/open-rmf/bevy_impulse/refs/heads/main/diagram.schema.json", + "version": "0.1.0", + "templates": {}, + "start": "62746cc5-19e4-456f-a94f-d49619ccd2c0", + "ops": { + "1283dab4-aec4-41d9-8dd3-ee04b2dc4c2b": { + "type": "node", + "builder": "mul", + "next": "49939e88-eefb-4dcc-8185-c880abe43cc6", + "config": 10 + }, + "2115dca9-fa22-406a-b4d1-6755732f9e4d": { + "type": "node", + "builder": "mul", + "next": "aa4fdf7b-a554-4683-82de-0bfbf3752d1d", + "config": 100 + }, + "62746cc5-19e4-456f-a94f-d49619ccd2c0": { + "type": "split", + "sequential": [ + "1283dab4-aec4-41d9-8dd3-ee04b2dc4c2b", + "2115dca9-fa22-406a-b4d1-6755732f9e4d" + ] + }, + "49939e88-eefb-4dcc-8185-c880abe43cc6": { + "type": "buffer" + }, + "aa4fdf7b-a554-4683-82de-0bfbf3752d1d": { + "type": "buffer" + }, + "f26502a3-84ec-4c4d-9367-15c099248640": { + "type": "node", + "builder": "add", + "next": { + "builtin": "terminate" + } + }, + "c3f84b5f-5f09-4dc7-b937-bd1cdf504bf9": { + "type": "join", + "buffers": [ + "49939e88-eefb-4dcc-8185-c880abe43cc6", + "aa4fdf7b-a554-4683-82de-0bfbf3752d1d" + ], + "next": "f26502a3-84ec-4c4d-9367-15c099248640" + } + } + } + )) + .unwrap(); + + let request = json!([1, 2]); + + let mut app = bevy_app::App::new(); + app.add_plugins(ImpulseAppPlugin::default()); + let registry = create_registry(); + + let mut promise = + app.world + .command(|cmds| -> Result, DiagramError> { + let workflow = diagram.spawn_io_workflow(cmds, ®istry)?; + Ok(cmds.request(request, workflow).take_response()) + }) + .unwrap(); + + while promise.peek().is_pending() { + app.update(); + } + + let result = promise.take().available().unwrap().as_f64().unwrap(); + assert_eq!(result, 210.0); + } +} From a87cbb1a8a101836312aefeeb161ffe5ae8e1e7a Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Sun, 17 Aug 2025 17:46:32 +0800 Subject: [PATCH 152/165] Make config error more clear Signed-off-by: Michael X. Grey --- src/diagram.rs | 7 +++++-- src/diagram/registration.rs | 2 +- src/diagram/workflow_builder.rs | 7 ++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/diagram.rs b/src/diagram.rs index d5e9d58c..565eb7f0 100644 --- a/src/diagram.rs +++ b/src/diagram.rs @@ -866,8 +866,11 @@ pub enum DiagramErrorCode { #[error("one or more operation is missing inputs")] IncompleteDiagram, - #[error(transparent)] - JsonError(#[from] serde_json::Error), + #[error("the config of the operation has an error: {0}")] + ConfigError(serde_json::Error), + + #[error("failed to create trace info for the operation: {0}")] + TraceInfoError(serde_json::Error), #[error(transparent)] ConnectionError(#[from] SplitConnectionError), diff --git a/src/diagram/registration.rs b/src/diagram/registration.rs index b2bb6775..4622edf0 100644 --- a/src/diagram/registration.rs +++ b/src/diagram/registration.rs @@ -181,7 +181,7 @@ impl<'a, DeserializeImpl, SerializeImpl, Cloneable> .schema_generator .subschema_for::(), create_node_impl: RefCell::new(Box::new(move |builder, config| { - let config = serde_json::from_value(config)?; + let config = serde_json::from_value(config).map_err(DiagramErrorCode::ConfigError)?; Ok(f(builder, config).into()) })), }; diff --git a/src/diagram/workflow_builder.rs b/src/diagram/workflow_builder.rs index 12187cd8..27a0619d 100644 --- a/src/diagram/workflow_builder.rs +++ b/src/diagram/workflow_builder.rs @@ -1262,8 +1262,13 @@ impl TraceInfo { construction: impl Serialize, trace: Option, ) -> Result { + let construction = Some(Arc::new( + serde_json::to_value(construction) + .map_err(DiagramErrorCode::TraceInfoError)? + )); + Ok(Self { - construction: Some(Arc::new(serde_json::to_value(construction)?)), + construction, trace, }) } From ef832c934884b06c4ad9fa9dd616247fd6da4169 Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Sun, 17 Aug 2025 17:50:40 +0800 Subject: [PATCH 153/165] fix formatting Signed-off-by: Michael X. Grey --- examples/diagram/calculator/src/main.rs | 43 ++++++++++++++++--------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/examples/diagram/calculator/src/main.rs b/examples/diagram/calculator/src/main.rs index 9393ed87..a02c73fb 100644 --- a/examples/diagram/calculator/src/main.rs +++ b/examples/diagram/calculator/src/main.rs @@ -17,13 +17,13 @@ use bevy_app; use bevy_impulse::{ - Diagram, DiagramElementRegistry, DiagramError, ImpulseAppPlugin, NodeBuilderOptions, Promise, - RequestExt, RunCommandsOnWorldExt, JsonMessage, + Diagram, DiagramElementRegistry, DiagramError, ImpulseAppPlugin, JsonMessage, + NodeBuilderOptions, Promise, RequestExt, RunCommandsOnWorldExt, }; use bevy_impulse_diagram_editor::{new_router, ServerOptions}; use clap::Parser; +use serde_json::{Number, Value}; use std::{error::Error, fs::File, str::FromStr, thread}; -use serde_json::{Value, Number}; #[derive(Parser, Debug)] #[clap( @@ -105,7 +105,11 @@ fn create_registry() -> DiagramElementRegistry { let input = match req { JsonMessage::Array(array) => { let mut sum: f64 = 0.0; - for item in array.iter().filter_map(Value::as_number).filter_map(Number::as_f64) { + for item in array + .iter() + .filter_map(Value::as_number) + .filter_map(Number::as_f64) + { sum += item; } sum @@ -125,7 +129,10 @@ fn create_registry() -> DiagramElementRegistry { builder.create_map_block(move |req: JsonMessage| { let input = match req { JsonMessage::Array(array) => { - let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut iter = array + .iter() + .filter_map(Value::as_number) + .filter_map(Number::as_f64); let mut input = iter.next().unwrap_or(0.0); for item in iter { input -= item; @@ -147,13 +154,16 @@ fn create_registry() -> DiagramElementRegistry { builder.create_map_block(move |req: JsonMessage| { let input = match req { JsonMessage::Array(array) => { - let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut iter = array + .iter() + .filter_map(Value::as_number) + .filter_map(Number::as_f64); let mut input = iter.next().unwrap_or(0.0); for item in iter { input *= item; } input - }, + } JsonMessage::Number(number) => number.as_f64().unwrap_or(0.0), _ => 0.0, }; @@ -169,7 +179,10 @@ fn create_registry() -> DiagramElementRegistry { builder.create_map_block(move |req: JsonMessage| { let input = match req { JsonMessage::Array(array) => { - let mut iter = array.iter().filter_map(Value::as_number).filter_map(Number::as_f64); + let mut iter = array + .iter() + .filter_map(Value::as_number) + .filter_map(Number::as_f64); let mut input = iter.next().unwrap_or(0.0); for item in iter { input /= item; @@ -266,13 +279,13 @@ mod tests { app.add_plugins(ImpulseAppPlugin::default()); let registry = create_registry(); - let mut promise = - app.world - .command(|cmds| -> Result, DiagramError> { - let workflow = diagram.spawn_io_workflow(cmds, ®istry)?; - Ok(cmds.request(request, workflow).take_response()) - }) - .unwrap(); + let mut promise = app + .world + .command(|cmds| -> Result, DiagramError> { + let workflow = diagram.spawn_io_workflow(cmds, ®istry)?; + Ok(cmds.request(request, workflow).take_response()) + }) + .unwrap(); while promise.peek().is_pending() { app.update(); From eb178666740cb8874385eb2dff916d1ab137173d Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Sun, 17 Aug 2025 17:51:36 +0800 Subject: [PATCH 154/165] fix formatting Signed-off-by: Michael X. Grey --- src/diagram/registration.rs | 3 ++- src/diagram/workflow_builder.rs | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/diagram/registration.rs b/src/diagram/registration.rs index 4622edf0..8ae425f1 100644 --- a/src/diagram/registration.rs +++ b/src/diagram/registration.rs @@ -181,7 +181,8 @@ impl<'a, DeserializeImpl, SerializeImpl, Cloneable> .schema_generator .subschema_for::(), create_node_impl: RefCell::new(Box::new(move |builder, config| { - let config = serde_json::from_value(config).map_err(DiagramErrorCode::ConfigError)?; + let config = + serde_json::from_value(config).map_err(DiagramErrorCode::ConfigError)?; Ok(f(builder, config).into()) })), }; diff --git a/src/diagram/workflow_builder.rs b/src/diagram/workflow_builder.rs index 27a0619d..7dfc4feb 100644 --- a/src/diagram/workflow_builder.rs +++ b/src/diagram/workflow_builder.rs @@ -1263,8 +1263,7 @@ impl TraceInfo { trace: Option, ) -> Result { let construction = Some(Arc::new( - serde_json::to_value(construction) - .map_err(DiagramErrorCode::TraceInfoError)? + serde_json::to_value(construction).map_err(DiagramErrorCode::TraceInfoError)?, )); Ok(Self { From 4807ac64e9c1990d653ffc063a3db9bcc619295a Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 03:11:27 +0000 Subject: [PATCH 155/165] fix type generation Signed-off-by: Teo Koon Peng --- .../frontend/{ => api-client}/api-client.ts | 24 +- .../frontend/api-client/debug-session.ts | 28 ++ diagram-editor/frontend/api-client/index.ts | 2 + .../frontend/api.preprocessed.schema.json | 327 ++++++++++-------- diagram-editor/frontend/types/api.d.ts | 255 ++++---------- diagram-editor/frontend/utils/ajv.ts | 6 +- diagram-editor/scripts/generate-types.mjs | 54 +++ diagram-editor/server/api/executor.rs | 37 +- diagram-editor/server/api/websocket.rs | 19 +- diagram-editor/server/bin/print_schema.rs | 5 +- 10 files changed, 381 insertions(+), 376 deletions(-) rename diagram-editor/frontend/{ => api-client}/api-client.ts (71%) create mode 100644 diagram-editor/frontend/api-client/debug-session.ts create mode 100644 diagram-editor/frontend/api-client/index.ts diff --git a/diagram-editor/frontend/api-client.ts b/diagram-editor/frontend/api-client/api-client.ts similarity index 71% rename from diagram-editor/frontend/api-client.ts rename to diagram-editor/frontend/api-client/api-client.ts index 255eaca0..efec7e96 100644 --- a/diagram-editor/frontend/api-client.ts +++ b/diagram-editor/frontend/api-client/api-client.ts @@ -3,8 +3,9 @@ import type { Diagram, DiagramElementRegistry, PostRunRequest, -} from './types/api'; -import { getSchema } from './utils/ajv'; +} from '../types/api'; +import { getSchema } from '../utils/ajv'; +import { DebugSession } from './debug-session'; const validateRegistry = getSchema( 'DiagramElementRegistry', @@ -53,4 +54,23 @@ export class ApiClient { })(), ); } + + async wsDebugWorkflow( + diagram: Diagram, + request: unknown, + ): Promise { + const ws = new WebSocket('/api/executor/debug'); + await new Promise((resolve, reject) => { + ws.onopen = () => { + const body: PostRunRequest = { + diagram, + request, + }; + ws.send(JSON.stringify(body)); + resolve(ws); + }; + ws.onerror = reject; + }); + return new DebugSession(ws); + } } diff --git a/diagram-editor/frontend/api-client/debug-session.ts b/diagram-editor/frontend/api-client/debug-session.ts new file mode 100644 index 00000000..102262c5 --- /dev/null +++ b/diagram-editor/frontend/api-client/debug-session.ts @@ -0,0 +1,28 @@ +import { type Observable, Subject } from 'rxjs'; +import type { DebugSessionMessage } from '../types/api'; +import { getSchema } from '../utils/ajv'; + +const validateDebugSessionMessage = getSchema( + 'DebugSessionMessage', +); + +export class DebugSession { + debugFeedback$: Observable; + + constructor(ws: WebSocket) { + const debugFeedbackSubject$ = new Subject(); + ws.onmessage = (ev) => { + try { + const msg = JSON.parse(ev.data); + if (!validateDebugSessionMessage(msg)) { + console.error(validateDebugSessionMessage.errors); + return; + } + debugFeedbackSubject$.next(msg); + } catch (e) { + console.error((e as Error).message); + } + }; + this.debugFeedback$ = debugFeedbackSubject$; + } +} diff --git a/diagram-editor/frontend/api-client/index.ts b/diagram-editor/frontend/api-client/index.ts new file mode 100644 index 00000000..2404e084 --- /dev/null +++ b/diagram-editor/frontend/api-client/index.ts @@ -0,0 +1,2 @@ +export * from './api-client'; +export * from './debug-session'; diff --git a/diagram-editor/frontend/api.preprocessed.schema.json b/diagram-editor/frontend/api.preprocessed.schema.json index b14429b3..fbe2a406 100644 --- a/diagram-editor/frontend/api.preprocessed.schema.json +++ b/diagram-editor/frontend/api.preprocessed.schema.json @@ -25,8 +25,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ @@ -63,8 +62,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "type": "object" @@ -116,45 +114,78 @@ } ] }, - "DebugSessionEnd": { + "DebugSessionMessage": { "oneOf": [ { - "additionalProperties": false, - "properties": { - "ok": true - }, - "required": [ - "ok" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "err": { - "type": "string" + "allOf": [ + { + "oneOf": [ + { + "properties": { + "operationStarted": { + "type": "string" + } + }, + "required": [ + "operationStarted" + ], + "type": "object" + } + ] + }, + { + "properties": { + "type": { + "const": "feedback", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" } - }, - "required": [ - "err" - ], - "type": "object" - } - ] - }, - "DebugSessionFeedback": { - "oneOf": [ + ] + }, { - "additionalProperties": false, - "properties": { - "operationStarted": { - "type": "string" + "allOf": [ + { + "oneOf": [ + { + "properties": { + "ok": true + }, + "required": [ + "ok" + ], + "type": "object" + }, + { + "properties": { + "err": { + "type": "string" + } + }, + "required": [ + "err" + ], + "type": "object" + } + ] + }, + { + "properties": { + "type": { + "const": "finish", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" } - }, - "required": [ - "operationStarted" - ], - "type": "object" + ] } ] }, @@ -171,9 +202,7 @@ { "type": "null" } - ], - "default": null, - "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled." + ] }, "ops": { "additionalProperties": { @@ -245,6 +274,9 @@ "oneOf": [ { "allOf": [ + { + "$ref": "#/$defs/NodeSchema" + }, { "properties": { "type": { @@ -256,14 +288,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/NodeSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/SectionSchema" + }, { "properties": { "type": { @@ -275,14 +307,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/SectionSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/ScopeSchema" + }, { "properties": { "type": { @@ -294,14 +326,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/ScopeSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/StreamOutSchema" + }, { "properties": { "type": { @@ -313,14 +345,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/StreamOutSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/ForkCloneSchema" + }, { "properties": { "type": { @@ -332,14 +364,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/ForkCloneSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/UnzipSchema" + }, { "properties": { "type": { @@ -351,14 +383,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/UnzipSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/ForkResultSchema" + }, { "properties": { "type": { @@ -370,14 +402,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/ForkResultSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/SplitSchema" + }, { "properties": { "type": { @@ -389,14 +421,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/SplitSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/JoinSchema" + }, { "properties": { "type": { @@ -408,14 +440,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/JoinSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/SerializedJoinSchema" + }, { "properties": { "type": { @@ -427,14 +459,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/SerializedJoinSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/TransformSchema" + }, { "properties": { "type": { @@ -446,14 +478,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/TransformSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/BufferSchema" + }, { "properties": { "type": { @@ -465,14 +497,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/BufferSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/BufferAccessSchema" + }, { "properties": { "type": { @@ -484,14 +516,14 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/BufferAccessSchema" } ] }, { "allOf": [ + { + "$ref": "#/$defs/ListenSchema" + }, { "properties": { "type": { @@ -503,9 +535,6 @@ "type" ], "type": "object" - }, - { - "$ref": "#/$defs/ListenSchema" } ] } @@ -535,8 +564,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ @@ -568,8 +596,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ @@ -594,8 +621,7 @@ "description": "Rename an operation inside the section to expose it externally. The key\n of the map is what siblings of the section can connect to, and the value\n of the entry is the identifier of the input inside the section that is\n being exposed.\n\n This allows a section to expose inputs and buffers that are provided\n by inner sections.", "type": "object" } - ], - "description": "This defines how sections remap their inner operations (inputs and buffers)\n to expose them to operations that are siblings to the section." + ] }, "JoinSchema": { "description": "Wait for exactly one item to be available in each buffer listed in\n `buffers`, then join each of those items into a single output message\n that gets sent to `next`.\n\n If the `next` operation is not a `node` type (e.g. `fork_clone`) then\n you must specify a `target_node` so that the diagram knows what data\n structure to join the values into.\n\n The output message type must be registered as joinable at compile time.\n If you want to join into a dynamic data structure then you should use\n [`DiagramOperation::SerializedJoin`] instead.\n\n # Examples\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"begin_measuring\",\n \"ops\": {\n \"begin_measuring\": {\n \"type\": \"fork_clone\",\n \"next\": [\"localize\", \"imu\"]\n },\n \"localize\": {\n \"type\": \"node\",\n \"builder\": \"localize\",\n \"next\": \"estimated_position\"\n },\n \"imu\": {\n \"type\": \"node\",\n \"builder\": \"imu\",\n \"config\": \"velocity\",\n \"next\": \"estimated_velocity\"\n },\n \"estimated_position\": { \"type\": \"buffer\" },\n \"estimated_velocity\": { \"type\": \"buffer\" },\n \"gather_state\": {\n \"type\": \"join\",\n \"buffers\": {\n \"position\": \"estimate_position\",\n \"velocity\": \"estimate_velocity\"\n },\n \"next\": \"report_state\"\n },\n \"report_state\": {\n \"type\": \"node\",\n \"builder\": \"publish_state\",\n \"next\": { \"builtin\": \"terminate\" }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", @@ -630,8 +656,7 @@ { "type": "null" } - ], - "description": "The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation." + ] } }, "required": [ @@ -801,8 +826,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ @@ -825,7 +849,6 @@ "type": "object" }, "RetentionPolicy": { - "description": "Describe how data within a buffer gets retained. Most mechanisms that pull\n data from a buffer will remove the oldest item in the buffer, so this policy\n is for dealing with situations where items are being stored faster than they\n are being pulled.\n\n The default value is KeepLast(1).", "oneOf": [ { "additionalProperties": false, @@ -884,9 +907,7 @@ { "type": "null" } - ], - "default": null, - "description": "To simplify diagram definitions, the diagram workflow builder will\n sometimes insert implicit operations into the workflow, such as implicit\n serializing and deserializing. These implicit operations may be fallible.\n\n This field indicates how a failed implicit operation should be handled.\n If left unspecified, an implicit error will cause the entire workflow to\n be cancelled." + ] }, "ops": { "additionalProperties": { @@ -1011,62 +1032,67 @@ "type": "object" }, "SectionSchema": { - "description": "Connect the request to a registered section.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"builder\": \"my_section_builder\",\n \"connect\": {\n \"my_section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Custom sections can also be created via templates\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"templates\": {\n \"my_template\": {\n \"inputs\": [\"section_input\"],\n \"outputs\": [\"section_output\"],\n \"buffers\": [],\n \"ops\": {\n \"section_input\": {\n \"type\": \"node\",\n \"builder\": \"my_node\",\n \"next\": \"section_output\"\n }\n }\n }\n },\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"template\": \"my_template\",\n \"connect\": {\n \"section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", - "oneOf": [ + "allOf": [ { - "properties": { - "builder": { - "type": "string" + "oneOf": [ + { + "properties": { + "builder": { + "type": "string" + } + }, + "required": [ + "builder" + ], + "type": "object" + }, + { + "properties": { + "template": { + "type": "string" + } + }, + "required": [ + "template" + ], + "type": "object" } - }, - "required": [ - "builder" - ], - "type": "object" + ] }, { + "description": "Connect the request to a registered section.\n\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"builder\": \"my_section_builder\",\n \"connect\": {\n \"my_section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```\n\n Custom sections can also be created via templates\n ```\n # bevy_impulse::Diagram::from_json_str(r#\"\n {\n \"version\": \"0.1.0\",\n \"templates\": {\n \"my_template\": {\n \"inputs\": [\"section_input\"],\n \"outputs\": [\"section_output\"],\n \"buffers\": [],\n \"ops\": {\n \"section_input\": {\n \"type\": \"node\",\n \"builder\": \"my_node\",\n \"next\": \"section_output\"\n }\n }\n }\n },\n \"start\": \"section_op\",\n \"ops\": {\n \"section_op\": {\n \"type\": \"section\",\n \"template\": \"my_template\",\n \"connect\": {\n \"section_output\": { \"builtin\": \"terminate\" }\n }\n }\n }\n }\n # \"#)?;\n # Ok::<_, serde_json::Error>(())\n ```", "properties": { - "template": { - "type": "string" + "config": { + "default": null + }, + "connect": { + "additionalProperties": { + "$ref": "#/$defs/NextOperation" + }, + "default": {}, + "type": "object" + }, + "display_text": { + "description": "Override for text that should be displayed for an operation within an\n editor.", + "type": [ + "string", + "null" + ] + }, + "trace": { + "anyOf": [ + { + "$ref": "#/$defs/TraceToggle" + }, + { + "type": "null" + } + ] } }, - "required": [ - "template" - ], - "type": "object" - } - ], - "properties": { - "config": { - "default": null - }, - "connect": { - "additionalProperties": { - "$ref": "#/$defs/NextOperation" - }, - "default": {}, "type": "object" - }, - "display_text": { - "description": "Override for text that should be displayed for an operation within an\n editor.", - "type": [ - "string", - "null" - ] - }, - "trace": { - "anyOf": [ - { - "$ref": "#/$defs/TraceToggle" - }, - { - "type": "null" - } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." } - }, - "type": "object" + ] }, "SectionTemplate": { "properties": { @@ -1155,8 +1181,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "type": "object" @@ -1217,9 +1242,7 @@ { "type": "null" } - ], - "default": null, - "description": "Specify what happens if an error occurs during the transformation. If\n you specify a target for on_error, then an error message will be sent to\n that target. You can set this to `{ \"builtin\": \"dispose\" }` to simply\n ignore errors.\n\n If left unspecified, a failure will be treated like an implicit operation\n failure and behave according to `on_implicit_error`." + ] }, "trace": { "anyOf": [ @@ -1229,8 +1252,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ @@ -1263,8 +1285,7 @@ { "type": "null" } - ], - "description": "Set what the tracing behavior should be for this operation. If this is\n left unspecified then the default trace setting of the diagram will be\n used." + ] } }, "required": [ diff --git a/diagram-editor/frontend/types/api.d.ts b/diagram-editor/frontend/types/api.d.ts index 114c9c68..bc683fe7 100644 --- a/diagram-editor/frontend/types/api.d.ts +++ b/diagram-editor/frontend/types/api.d.ts @@ -36,13 +36,6 @@ export type BuiltinTarget = 'terminate' | 'dispose' | 'cancel'; */ export type TraceToggle = 'off' | 'on' | 'messages'; /** - * Describe how data within a buffer gets retained. Most mechanisms that pull - * data from a buffer will remove the oldest item in the buffer, so this policy - * is for dealing with situations where items are being stored faster than they - * are being pulled. - * - * The default value is KeepLast(1). - * * This interface was referenced by `DiagramEditorApi`'s JSON-Schema * via the `definition` "RetentionPolicy". */ @@ -56,143 +49,104 @@ export type RetentionPolicy = | 'keep_all'; /** * This interface was referenced by `DiagramEditorApi`'s JSON-Schema - * via the `definition` "DebugSessionEnd". + * via the `definition` "DebugSessionMessage". */ -export type DebugSessionEnd = - | { - ok: unknown; - } - | { - err: string; - }; -/** - * This interface was referenced by `DiagramEditorApi`'s JSON-Schema - * via the `definition` "DebugSessionFeedback". - */ -export type DebugSessionFeedback = { - operationStarted: string; -}; +export type DebugSessionMessage = + | ({ + operationStarted: string; + [k: string]: unknown; + } & { + type: 'feedback'; + [k: string]: unknown; + }) + | (( + | { + ok: unknown; + [k: string]: unknown; + } + | { + err: string; + [k: string]: unknown; + } + ) & { + type: 'finish'; + [k: string]: unknown; + }); /** * This interface was referenced by `DiagramEditorApi`'s JSON-Schema * via the `definition` "DiagramOperation". */ export type DiagramOperation = - | ({ + | (NodeSchema & { type: 'node'; [k: string]: unknown; - } & NodeSchema) - | ({ + }) + | (SectionSchema & { type: 'section'; [k: string]: unknown; - } & SectionSchema) - | ({ + }) + | (ScopeSchema & { type: 'scope'; [k: string]: unknown; - } & ScopeSchema) - | ({ + }) + | (StreamOutSchema & { type: 'stream_out'; [k: string]: unknown; - } & StreamOutSchema) - | ({ + }) + | (ForkCloneSchema & { type: 'fork_clone'; [k: string]: unknown; - } & ForkCloneSchema) - | ({ + }) + | (UnzipSchema & { type: 'unzip'; [k: string]: unknown; - } & UnzipSchema) - | ({ + }) + | (ForkResultSchema & { type: 'fork_result'; [k: string]: unknown; - } & ForkResultSchema) - | ({ + }) + | (SplitSchema & { type: 'split'; [k: string]: unknown; - } & SplitSchema) - | ({ + }) + | (JoinSchema & { type: 'join'; [k: string]: unknown; - } & JoinSchema) - | ({ + }) + | (SerializedJoinSchema & { type: 'serialized_join'; [k: string]: unknown; - } & SerializedJoinSchema) - | ({ + }) + | (TransformSchema & { type: 'transform'; [k: string]: unknown; - } & TransformSchema) - | ({ + }) + | (BufferSchema & { type: 'buffer'; [k: string]: unknown; - } & BufferSchema) - | ({ + }) + | (BufferAccessSchema & { type: 'buffer_access'; [k: string]: unknown; - } & BufferAccessSchema) - | ({ + }) + | (ListenSchema & { type: 'listen'; [k: string]: unknown; - } & ListenSchema); + }); /** - * Connect the request to a registered section. - * - * ``` - * # bevy_impulse::Diagram::from_json_str(r#" - * { - * "version": "0.1.0", - * "start": "section_op", - * "ops": { - * "section_op": { - * "type": "section", - * "builder": "my_section_builder", - * "connect": { - * "my_section_output": { "builtin": "terminate" } - * } - * } - * } - * } - * # "#)?; - * # Ok::<_, serde_json::Error>(()) - * ``` - * - * Custom sections can also be created via templates - * ``` - * # bevy_impulse::Diagram::from_json_str(r#" - * { - * "version": "0.1.0", - * "templates": { - * "my_template": { - * "inputs": ["section_input"], - * "outputs": ["section_output"], - * "buffers": [], - * "ops": { - * "section_input": { - * "type": "node", - * "builder": "my_node", - * "next": "section_output" - * } - * } - * } - * }, - * "start": "section_op", - * "ops": { - * "section_op": { - * "type": "section", - * "template": "my_template", - * "connect": { - * "section_output": { "builtin": "terminate" } - * } - * } - * } - * } - * # "#)?; - * # Ok::<_, serde_json::Error>(()) - * ``` - * * This interface was referenced by `DiagramEditorApi`'s JSON-Schema * via the `definition` "SectionSchema". */ -export type SectionSchema = { +export type SectionSchema = ( + | { + builder: string; + [k: string]: unknown; + } + | { + template: string; + [k: string]: unknown; + } +) & { config?: { [k: string]: unknown; }; @@ -204,27 +158,10 @@ export type SectionSchema = { * editor. */ display_text?: string | null; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; -} & SectionSchema1; -export type SectionSchema1 = - | { - builder: string; - [k: string]: unknown; - } - | { - template: string; - [k: string]: unknown; - }; +}; /** - * This defines how sections remap their inner operations (inputs and buffers) - * to expose them to operations that are siblings to the section. - * * This interface was referenced by `DiagramEditorApi`'s JSON-Schema * via the `definition` "InputRemapping". */ @@ -306,11 +243,6 @@ export interface BufferAccessSchema { */ display_text?: string | null; next: NextOperation; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -409,11 +341,6 @@ export interface BufferSchema { */ serialize?: boolean | null; settings?: BufferSettings; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -433,15 +360,6 @@ export interface BufferSettings { */ export interface Diagram { default_trace?: TraceToggle; - /** - * To simplify diagram definitions, the diagram workflow builder will - * sometimes insert implicit operations into the workflow, such as implicit - * serializing and deserializing. These implicit operations may be fallible. - * - * This field indicates how a failed implicit operation should be handled. - * If left unspecified, an implicit error will cause the entire workflow to - * be cancelled. - */ on_implicit_error?: NextOperation | null; /** * Operations that define the workflow @@ -518,11 +436,6 @@ export interface NodeSchema { stream_out?: { [k: string]: NextOperation; }; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -594,15 +507,6 @@ export interface NodeSchema { */ export interface ScopeSchema { next: NextOperation; - /** - * To simplify diagram definitions, the diagram workflow builder will - * sometimes insert implicit operations into the workflow, such as implicit - * serializing and deserializing. These implicit operations may be fallible. - * - * This field indicates how a failed implicit operation should be handled. - * If left unspecified, an implicit error will cause the entire workflow to - * be cancelled. - */ on_implicit_error?: NextOperation | null; /** * Operations that exist inside this scope. @@ -740,11 +644,6 @@ export interface ForkCloneSchema { */ display_text?: string | null; next: NextOperation[]; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -815,11 +714,6 @@ export interface UnzipSchema { */ display_text?: string | null; next: NextOperation[]; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -861,11 +755,6 @@ export interface ForkResultSchema { display_text?: string | null; err: NextOperation; ok: NextOperation; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -950,11 +839,6 @@ export interface SplitSchema { }; remaining?: NextOperation | null; sequential?: NextOperation[]; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -1096,21 +980,7 @@ export interface TransformSchema { */ display_text?: string | null; next: NextOperation; - /** - * Specify what happens if an error occurs during the transformation. If - * you specify a target for on_error, then an error message will be sent to - * that target. You can set this to `{ "builtin": "dispose" }` to simply - * ignore errors. - * - * If left unspecified, a failure will be treated like an implicit operation - * failure and behave according to `on_implicit_error`. - */ on_error?: NextOperation | null; - /** - * Set what the tracing behavior should be for this operation. If this is - * left unspecified then the default trace setting of the diagram will be - * used. - */ trace?: TraceToggle | null; [k: string]: unknown; } @@ -1154,9 +1024,6 @@ export interface TransformSchema { export interface ListenSchema { buffers: BufferSelection; next: NextOperation; - /** - * The id of an operation that this operation is for. The id must be a `node` operation. Optional if `next` is a node operation. - */ target_node?: NextOperation | null; [k: string]: unknown; } diff --git a/diagram-editor/frontend/utils/ajv.ts b/diagram-editor/frontend/utils/ajv.ts index c9c81f33..18ece46c 100644 --- a/diagram-editor/frontend/utils/ajv.ts +++ b/diagram-editor/frontend/utils/ajv.ts @@ -1,5 +1,5 @@ import Ajv from 'ajv/dist/2020'; -import type { AnyValidateFunction } from 'ajv/dist/core'; +import type { ValidateFunction } from 'ajv/dist/core'; import addFormats from 'ajv-formats'; import apiSchema from '../api.preprocessed.schema.json'; @@ -11,8 +11,8 @@ ajv.compile(apiSchema); export function getSchema( key: keyof (typeof apiSchema)['$defs'], -): AnyValidateFunction { - const validate = ajv.getSchema(`#/$defs/${key}`); +): ValidateFunction { + const validate = ajv.getSchema(`#/$defs/${key}`) as ValidateFunction; if (!validate) { throw new Error(`cannot validate ${key}`); } diff --git a/diagram-editor/scripts/generate-types.mjs b/diagram-editor/scripts/generate-types.mjs index c5df95d5..31ef4963 100644 --- a/diagram-editor/scripts/generate-types.mjs +++ b/diagram-editor/scripts/generate-types.mjs @@ -2,6 +2,58 @@ import { execSync } from 'node:child_process'; import fs, { writeFileSync } from 'node:fs'; import { compile } from 'json-schema-to-typescript'; +const MERGE_FIELDS = ['$ref', 'oneOf', 'allOf', 'anyOf']; + +/** + * json schema draft-07 (used by json-schema-to-typescript) does not merge certain fields like `$ref` and `oneOf`. + * Workaround by putting them in a `allOf`. + */ +function moveIntoAllOf(source) { + let needMove = false; + for (const k of MERGE_FIELDS) { + if (k in source) { + needMove = true; + break; + } + } + if (!needMove) { + return; + } + + const allOf = []; + + for (const k of MERGE_FIELDS) { + if (!(k in source)) { + continue; + } + const obj = {}; + obj[k] = source[k]; + delete source[k]; + allOf.push(obj); + } + + const remaining = {}; + for (const k of Object.keys(source)) { + if (k === 'allOf') { + continue; + } + remaining[k] = source[k]; + delete source[k]; + } + if ('type' in remaining) { + allOf.push(remaining); + } + + // don't need "allOf" if there is only one item in it. + if (allOf.length === 1) { + for (const k of Object.keys(allOf[0])) { + source[k] = allOf[0][k]; + } + } else { + source.allOf = allOf; + } +} + async function generate(name, schema, outputPath, preprocessedOutputPath) { // preprocess the schema to workaround https://github.com/bcherny/json-schema-to-typescript/issues/637 and https://github.com/bcherny/json-schema-to-typescript/issues/613 const workingSet = [...Object.values(schema.$defs)]; @@ -25,6 +77,8 @@ async function generate(name, schema, outputPath, preprocessedOutputPath) { workingSet.push(...Object.values(schema.anyOf)); } + moveIntoAllOf(schema); + // json schema draft-07 (used by json-schema-to-typescript) does not merge $ref, workaround // by putting the $ref and other fields in a `allOf`. if ('$ref' in schema && Object.keys(schema).length > 1) { diff --git a/diagram-editor/server/api/executor.rs b/diagram-editor/server/api/executor.rs index 866c1a5e..d9a7386d 100644 --- a/diagram-editor/server/api/executor.rs +++ b/diagram-editor/server/api/executor.rs @@ -142,11 +142,20 @@ pub enum DebugSessionFeedback { OperationStarted(String), } +#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] +#[cfg_attr(test, derive(serde::Deserialize))] +#[derive(Serialize)] +#[serde(rename_all = "camelCase", tag = "type")] +pub enum DebugSessionMessage { + Feedback(DebugSessionFeedback), + Finish(DebugSessionEnd), +} + /// Start a debug session. async fn ws_debug(mut write: W, mut read: R, state: State) where - W: WebsocketSinkExt, - R: WebsocketStreamExt, + W: WebsocketSinkExt, + R: WebsocketStreamExt, { let req: PostRunRequest = if let Some(req) = read.next_json().await { req @@ -169,8 +178,8 @@ where { error!("{}", err); write - .send_json(&DebugSessionEnd::err_from_status_code( - StatusCode::INTERNAL_SERVER_ERROR, + .send_json(&DebugSessionMessage::Finish( + DebugSessionEnd::err_from_status_code(StatusCode::INTERNAL_SERVER_ERROR), )) .await; return; @@ -188,8 +197,8 @@ where write .lock() .await - .send_json(&DebugSessionEnd::err_from_status_code( - StatusCode::INTERNAL_SERVER_ERROR, + .send_json(&DebugSessionMessage::Finish( + DebugSessionEnd::err_from_status_code(StatusCode::INTERNAL_SERVER_ERROR), )) .await; return; @@ -203,15 +212,17 @@ where write .lock() .await - .send_json(&DebugSessionEnd::Ok(result)) + .send_json(&DebugSessionMessage::Finish(DebugSessionEnd::Ok(result))) .await; } None => { write .lock() .await - .send_json(&DebugSessionEnd::err_from_status_code( - StatusCode::INTERNAL_SERVER_ERROR, + .send_json(&DebugSessionMessage::Finish( + DebugSessionEnd::err_from_status_code( + StatusCode::INTERNAL_SERVER_ERROR, + ), )) .await; return; @@ -221,7 +232,9 @@ where write .lock() .await - .send_json(&DebugSessionEnd::Err(err.to_string())) + .send_json(&DebugSessionMessage::Finish(DebugSessionEnd::Err( + err.to_string(), + ))) .await; return; } @@ -242,7 +255,9 @@ where write .lock() .await - .send_json(&DebugSessionFeedback::OperationStarted(op_id)) + .send_json(&DebugSessionMessage::Feedback( + DebugSessionFeedback::OperationStarted(op_id), + )) .await; } Err(e) => match e { diff --git a/diagram-editor/server/api/websocket.rs b/diagram-editor/server/api/websocket.rs index 4fb27fbb..f807d622 100644 --- a/diagram-editor/server/api/websocket.rs +++ b/diagram-editor/server/api/websocket.rs @@ -4,13 +4,10 @@ use serde::{de::DeserializeOwned, Serialize}; use std::fmt::Display; use tracing::debug; -pub(super) trait WebsocketStreamExt { +pub(super) trait WebsocketStreamExt { async fn next_text(&mut self) -> Option; - async fn next_json(&mut self) -> Option - where - T: DeserializeOwned, - { + async fn next_json(&mut self) -> Option { let text = self.next_text().await?; match serde_json::from_slice(text.as_bytes()) { Ok(value) => Some(value), @@ -22,9 +19,10 @@ pub(super) trait WebsocketStreamExt { } } -impl WebsocketStreamExt for S +impl WebsocketStreamExt for S where S: Stream> + Unpin, + T: DeserializeOwned, { async fn next_text(&mut self) -> Option { let msg = if let Some(msg) = self.next().await { @@ -49,16 +47,17 @@ where } } -pub(super) trait WebsocketSinkExt { - async fn send_json(&mut self, value: &T) -> Option<()>; +pub(super) trait WebsocketSinkExt { + async fn send_json(&mut self, value: &T) -> Option<()>; } -impl WebsocketSinkExt for S +impl WebsocketSinkExt for S where S: Sink + Unpin, S::Error: Display, + T: Serialize, { - async fn send_json(&mut self, value: &T) -> Option<()> { + async fn send_json(&mut self, value: &T) -> Option<()> { let json_str = match serde_json::to_string(value).into() { Ok(json_str) => json_str, Err(err) => { diff --git a/diagram-editor/server/bin/print_schema.rs b/diagram-editor/server/bin/print_schema.rs index 6ab862f9..1d839835 100644 --- a/diagram-editor/server/bin/print_schema.rs +++ b/diagram-editor/server/bin/print_schema.rs @@ -1,5 +1,5 @@ use bevy_impulse_diagram_editor::api::{ - executor::{DebugSessionEnd, DebugSessionFeedback, PostRunRequest}, + executor::{DebugSessionMessage, PostRunRequest}, RegistryResponse, }; use indexmap::IndexMap; @@ -9,8 +9,7 @@ fn main() { let mut schema_generator = SchemaGenerator::default(); schema_generator.subschema_for::(); schema_generator.subschema_for::(); - schema_generator.subschema_for::(); - schema_generator.subschema_for::(); + schema_generator.subschema_for::(); // using `IndexMap` to preserve ordering let schema: IndexMap<&'static str, serde_json::Value> = IndexMap::from_iter([ From 1ebf670de07920c5dd3713a50b29c896bb4f856c Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:04:06 +0000 Subject: [PATCH 156/165] fix ui bugs Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 8 +- diagram-editor/frontend/command-panel.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 120 ++++++++++-------- diagram-editor/frontend/edges/buffer-edge.tsx | 23 ++-- .../frontend/export-diagram-dialog.tsx | 19 +-- .../frontend/forms/buffer-edge-form.tsx | 6 +- .../frontend/forms/data-input-form.tsx | 6 +- .../frontend/forms/edit-edge-form.tsx | 8 +- .../frontend/forms/section-form.tsx | 6 +- .../frontend/forms/split-edge-form.tsx | 5 +- diagram-editor/frontend/node-manager.ts | 11 +- diagram-editor/frontend/run-button.tsx | 15 +-- diagram-editor/frontend/use-edges.ts | 10 ++ diagram-editor/frontend/utils/change.ts | 8 ++ .../frontend/utils/connection.test.ts | 106 +++++----------- diagram-editor/frontend/utils/connection.ts | 39 ++---- 16 files changed, 184 insertions(+), 208 deletions(-) create mode 100644 diagram-editor/frontend/use-edges.ts create mode 100644 diagram-editor/frontend/utils/change.ts diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index b151debf..22fbdb2d 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -3,6 +3,7 @@ import type { NodeAddChange, XYPosition } from '@xyflow/react'; import React from 'react'; import { v4 as uuidv4 } from 'uuid'; import { EditorMode, useEditorMode } from './editor-mode'; +import { useNodeManager } from './node-manager'; import type { DiagramEditorNode } from './nodes'; import { BufferAccessIcon, @@ -33,7 +34,6 @@ import { UnzipIcon, } from './nodes'; import type { DiagramOperation } from './types/api'; -import { useReactFlow } from './use-react-flow'; import { joinNamespaces, ROOT_NAMESPACE } from './utils/namespace'; const StyledOperationButton = styled(Button)({ @@ -108,14 +108,14 @@ function createNodeChange( function AddOperation({ parentId, newNodePosition, onAdd }: AddOperationProps) { const [editorMode] = useEditorMode(); - const reactFlow = useReactFlow(); + const nodeManager = useNodeManager(); const namespace = React.useMemo(() => { - const parentNode = parentId && reactFlow.getNode(parentId); + const parentNode = parentId && nodeManager.getNode(parentId); if (!parentNode || !isOperationNode(parentNode)) { return ROOT_NAMESPACE; } return joinNamespaces(parentNode.data.namespace, parentNode.data.opId); - }, [parentId, reactFlow.getNode]); + }, [parentId, nodeManager]); return ( []) => void; diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 90381ada..052f3175 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -41,11 +41,12 @@ import { EditorMode, type EditorModeContext, EditorModeProvider, + type UseEditorModeContext, } from './editor-mode'; import ExportDiagramDialog from './export-diagram-dialog'; import { defaultEdgeData, EditEdgeForm, EditNodeForm } from './forms'; import EditScopeForm from './forms/edit-scope-form'; -import { NodeManager } from './node-manager'; +import { NodeManager, NodeManagerProvider } from './node-manager'; import { type DiagramEditorNode, isBuiltinNode, @@ -54,7 +55,9 @@ import { type OperationNode, } from './nodes'; import { useTemplates } from './templates-provider'; +import { EdgesProvider } from './use-edges'; import { autoLayout } from './utils/auto-layout'; +import { isRemoveChange } from './utils/change'; import { getValidEdgeTypes, validateEdgeSimple } from './utils/connection'; import { exhaustiveCheck } from './utils/exhaustive-check'; import { exportTemplate } from './utils/export-diagram'; @@ -78,12 +81,12 @@ interface EditingEdge { * Returns null if the change does not result in any position changes. */ function getChangeParentIdAndPosition( - reactFlow: ReactFlowInstance, + nodeManager: NodeManager, change: NodeChange, ): [string, string | null, XYPosition] | null { switch (change.type) { case 'position': { - const changedNode = reactFlow.getNode(change.id); + const changedNode = nodeManager.getNode(change.id); if (!changedNode) { return null; } @@ -105,6 +108,27 @@ function getChangeParentIdAndPosition( } } +interface ProvidersProps { + editorModeContext: UseEditorModeContext; + nodeManager: NodeManager; + edges: DiagramEditorEdge[]; +} + +function Providers({ + editorModeContext, + nodeManager, + edges, + children, +}: React.PropsWithChildren) { + return ( + + + {children} + + + ); +} + function DiagramEditor() { const reactFlowInstance = React.useRef( () => loadEmpty().nodes, ); + const nodeManager = React.useMemo(() => new NodeManager(nodes), [nodes]); const savedNodes = React.useRef([]); const [edges, setEdges] = React.useState([]); @@ -196,15 +221,11 @@ function DiagramEditor() { const handleNodeChanges = React.useCallback( (changes: NodeChange[]) => { - const reactFlow = reactFlowInstance.current; - if (!reactFlow) { - return; - } const transitiveChanges: NodeChange[] = []; // resize and reposition scope for (const change of changes) { - const changeIdPos = getChangeParentIdAndPosition(reactFlow, change); + const changeIdPos = getChangeParentIdAndPosition(nodeManager, change); if (!changeIdPos) { continue; } @@ -213,13 +234,13 @@ function DiagramEditor() { continue; } - const scopeNode = reactFlow.getNode(changeParentId); + const scopeNode = nodeManager.getNode(changeParentId); if (!scopeNode) { continue; } - const scopeChildren = reactFlow - .getNodes() - .filter((n) => n.parentId === changeParentId && n.id !== changeId); + const scopeChildren = nodeManager.nodes.filter( + (n) => n.parentId === changeParentId && n.id !== changeId, + ); const calculatedBounds = calculateScopeBounds([ ...scopeChildren.map((n) => n.position), { @@ -299,12 +320,12 @@ function DiagramEditor() { // remove children nodes of a removed parent const removedNodes = new Set( changes - .filter((change) => change.type === 'remove') + .filter((change) => isRemoveChange(change)) .map((change) => change.id), ); while (true) { let newChanges = false; - for (const node of reactFlow.getNodes()) { + for (const node of nodeManager.nodes) { if ( node.parentId && removedNodes.has(node.parentId) && @@ -325,7 +346,7 @@ function DiagramEditor() { // clean up dangling edges when a node is removed. const edgeChanges: EdgeRemoveChange[] = []; - for (const edge of reactFlowInstance.current?.getEdges() || []) { + for (const edge of edges) { if (removedNodes.has(edge.source) || removedNodes.has(edge.target)) { edgeChanges.push({ type: 'remove', @@ -339,7 +360,7 @@ function DiagramEditor() { applyNodeChanges([...changes, ...transitiveChanges], prev), ); }, - [handleEdgeChanges], + [handleEdgeChanges, nodeManager, edges], ); const handleNodeChange = React.useCallback( @@ -363,7 +384,7 @@ function DiagramEditor() { return { x: 0, y: 0 }; } const parentNode = addOperationPopover.parentId - ? reactFlowInstance.current.getNode(addOperationPopover.parentId) + ? nodeManager.getNode(addOperationPopover.parentId) : null; const parentPosition = parentNode?.position @@ -375,28 +396,32 @@ function DiagramEditor() { y: addOperationPopover.popOverPosition.top - parentPosition.y, }) || { x: 0, y: 0 } ); - }, [addOperationPopover.parentId, addOperationPopover.popOverPosition]); + }, [ + nodeManager, + addOperationPopover.parentId, + addOperationPopover.popOverPosition, + ]); const [editingNodeId, setEditingNodeId] = React.useState(null); const [editingEdgeId, setEditingEdgeId] = React.useState(null); - const editingEdge = React.useMemo(() => { - if (!reactFlowInstance.current || !editingEdgeId) { + const editingEdge: EditingEdge | null = (() => { + if (!editingEdgeId) { return null; } - const edge = reactFlowInstance.current.getEdge(editingEdgeId); + const edge = edges.find((e) => e.id === editingEdgeId); if (!edge) { console.error(`cannot find edge ${editingEdgeId}`); return null; } - const sourceNode = reactFlowInstance.current.getNode(edge.source); + const sourceNode = nodeManager.getNode(edge.source); if (!sourceNode) { console.error(`cannot find node ${edge.source}`); return null; } - const targetNode = reactFlowInstance.current.getNode(edge.target); + const targetNode = nodeManager.getNode(edge.target); if (!targetNode) { console.error(`cannot find node ${edge.target}`); return null; @@ -407,7 +432,7 @@ function DiagramEditor() { sourceNode, targetNode, }; - }, [editingEdgeId]); + })(); const closeAllPopovers = React.useCallback(() => { setEditingNodeId(null); @@ -424,10 +449,7 @@ function DiagramEditor() { >({ open: false }); const renderEditForm = React.useCallback( (nodeId: string) => { - if (!reactFlowInstance.current) { - return null; - } - const node = reactFlowInstance.current.getNode(nodeId); + const node = nodeManager.getNode(nodeId); if (!node || isBuiltinNode(node)) { return null; } @@ -455,13 +477,14 @@ function DiagramEditor() { } return ( ); }, - [handleNodeChange, closeAllPopovers], + [nodeManager, editingNodeId, handleNodeChange, closeAllPopovers], ); const mouseDownTime = React.useRef(0); @@ -475,10 +498,6 @@ function DiagramEditor() { const loadDiagram = React.useCallback( (jsonStr: string) => { - if (!reactFlowInstance.current) { - return; - } - try { const [diagram, graph] = loadDiagramJson(jsonStr); const changes = autoLayout(graph.nodes, graph.edges, LAYOUT_OPTIONS); @@ -503,12 +522,8 @@ function DiagramEditor() { const tryCreateEdge = React.useCallback( (conn: Connection, id?: string): DiagramEditorEdge | null => { - if (!reactFlowInstance.current) { - return null; - } - - const sourceNode = reactFlowInstance.current.getNode(conn.source); - const targetNode = reactFlowInstance.current.getNode(conn.target); + const sourceNode = nodeManager.getNode(conn.source); + const targetNode = nodeManager.getNode(conn.target); if (!sourceNode || !targetNode) { throw new Error('cannot find source or target node'); } @@ -535,10 +550,7 @@ function DiagramEditor() { } } - const validationResult = validateEdgeSimple( - newEdge, - reactFlowInstance.current, - ); + const validationResult = validateEdgeSimple(newEdge, nodeManager, edges); if (!validationResult.valid) { showErrorToast(validationResult.error); return null; @@ -546,11 +558,15 @@ function DiagramEditor() { return newEdge; }, - [showErrorToast], + [showErrorToast, nodeManager, edges], ); return ( - + { - const sourceNode = reactFlowInstance.current?.getNode(conn.source); - const targetNode = reactFlowInstance.current?.getNode(conn.target); + const sourceNode = nodeManager.getNode(conn.source); + const targetNode = nodeManager.getNode(conn.target); if (!sourceNode || !targetNode) { throw new Error('cannot find source or target node'); } @@ -695,10 +711,7 @@ function DiagramEditor() { aria-label="Save" sx={{ position: 'absolute', right: 64, bottom: 64 }} onClick={() => { - const exportedTemplate = exportTemplate( - new NodeManager(nodes), - edges, - ); + const exportedTemplate = exportTemplate(nodeManager, edges); setTemplates((prev) => ({ ...prev, [editorMode.templateId]: exportedTemplate, @@ -738,6 +751,7 @@ function DiagramEditor() { {editingNodeId && renderEditForm(editingNodeId)} {editingEdge && ( setOpenExportDiagramDialog(false)} - nodes={nodes} - edges={edges} /> - + ); } diff --git a/diagram-editor/frontend/edges/buffer-edge.tsx b/diagram-editor/frontend/edges/buffer-edge.tsx index fc7c5847..4abdd999 100644 --- a/diagram-editor/frontend/edges/buffer-edge.tsx +++ b/diagram-editor/frontend/edges/buffer-edge.tsx @@ -18,14 +18,19 @@ export type BufferEdge = Edge< export type BufferEdgeCompProps = Exclude, 'label'>; export const BufferEdgeComp = memo((props: BufferEdgeCompProps) => { - return ( - { + switch (props.data.input.type) { + case 'bufferKey': { + return props.data.input.key; } - /> - ); + case 'bufferSeq': { + return props.data.input.seq.toString(); + } + case 'sectionBuffer': { + return props.data.input.inputId; + } + } + })(); + + return ; }); diff --git a/diagram-editor/frontend/export-diagram-dialog.tsx b/diagram-editor/frontend/export-diagram-dialog.tsx index 49552736..c7fbfb7f 100644 --- a/diagram-editor/frontend/export-diagram-dialog.tsx +++ b/diagram-editor/frontend/export-diagram-dialog.tsx @@ -11,18 +11,15 @@ import { } from '@mui/material'; import { deflateSync, strToU8 } from 'fflate'; import React from 'react'; -import type { DiagramEditorEdge } from './edges'; -import { NodeManager } from './node-manager'; -import type { DiagramEditorNode } from './nodes'; +import { useNodeManager } from './node-manager'; import { MaterialSymbol } from './nodes'; import { useTemplates } from './templates-provider'; +import { useEdges } from './use-edges'; import { exportDiagram } from './utils/export-diagram'; export interface ExportDiagramDialogProps { open: boolean; onClose: () => void; - nodes: DiagramEditorNode[]; - edges: DiagramEditorEdge[]; } interface DialogData { @@ -30,12 +27,9 @@ interface DialogData { diagramJson: string; } -function ExportDiagramDialog({ - open, - onClose, - nodes, - edges, -}: ExportDiagramDialogProps) { +function ExportDiagramDialog({ open, onClose }: ExportDiagramDialogProps) { + const nodeManager = useNodeManager(); + const edges = useEdges(); const [dialogData, setDialogData] = React.useState(null); const [templates] = useTemplates(); @@ -46,7 +40,6 @@ function ExportDiagramDialog({ return; } - const nodeManager = new NodeManager(nodes); const diagram = exportDiagram(nodeManager, edges, templates); const diagramJsonMin = JSON.stringify(diagram); // Compress the JSON string to Uint8Array @@ -68,7 +61,7 @@ function ExportDiagramDialog({ }; setDialogData(dialogData); - }, [open, nodes, edges, templates]); + }, [open, nodeManager, edges, templates]); const handleDownload = () => { if (!dialogData) { diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index fb30dfb4..c3b16554 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -9,10 +9,10 @@ import { import type { EdgeChange } from '@xyflow/react'; import { useId, useMemo } from 'react'; import type { BufferEdge } from '../edges'; +import { useNodeManager } from '../node-manager'; import { useRegistry } from '../registry-provider'; import { useTemplates } from '../templates-provider'; import type { SectionTemplate } from '../types/api'; -import { useReactFlow } from '../use-react-flow'; import { exhaustiveCheck } from '../utils/exhaustive-check'; function getTemplateBuffers(template: SectionTemplate): string[] { @@ -89,8 +89,8 @@ export function BufferEdgeInputForm({ const labelId = useId(); - const reactFlow = useReactFlow(); - const targetNode = reactFlow.getNode(edge.target); + const nodeManager = useNodeManager(); + const targetNode = nodeManager.getNode(edge.target); const targetIsSection = targetNode?.type === 'section'; const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); diff --git a/diagram-editor/frontend/forms/data-input-form.tsx b/diagram-editor/frontend/forms/data-input-form.tsx index 3bb81ce6..2ecadf62 100644 --- a/diagram-editor/frontend/forms/data-input-form.tsx +++ b/diagram-editor/frontend/forms/data-input-form.tsx @@ -2,11 +2,11 @@ import { Autocomplete, TextField } from '@mui/material'; import type { EdgeChange } from '@xyflow/react'; import { useMemo } from 'react'; import { type DiagramEditorEdge, isDataEdge } from '../edges'; +import { useNodeManager } from '../node-manager'; import { isSectionNode } from '../nodes'; import { useRegistry } from '../registry-provider'; import { useTemplates } from '../templates-provider'; import type { SectionTemplate } from '../types/api'; -import { useReactFlow } from '../use-react-flow'; function getTemplateInputs(template: SectionTemplate): string[] { if (!template.inputs) { @@ -25,10 +25,10 @@ export interface DataInputEdgeFormProps { } export function DataInputForm({ edge, onChange }: DataInputEdgeFormProps) { - const reactFlow = useReactFlow(); + const nodeManager = useNodeManager(); const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); - const targetNode = reactFlow.getNode(edge.target); + const targetNode = nodeManager.getNode(edge.target); const inputs = useMemo(() => { if (!targetNode || !isSectionNode(targetNode)) { diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index ae443547..fa3d1f6a 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -60,8 +60,8 @@ export function defaultEdgeData(type: EdgeTypes): EdgeData { export interface EditEdgeFormProps { edge: DiagramEditorEdge; allowedEdgeTypes: EdgeTypes[]; - onChange?: (changes: EdgeChange) => void; - onDelete?: (change: EdgeRemoveChange) => void; + onChange: (changes: EdgeChange) => void; + onDelete: (change: EdgeRemoveChange) => void; } function EditEdgeForm({ @@ -113,7 +113,7 @@ function EditEdgeForm({ action={ onDelete?.({ type: 'remove', id: edge.id })} + onClick={() => onDelete({ type: 'remove', id: edge.id })} > @@ -133,7 +133,7 @@ function EditEdgeForm({ }; newEdge.type = ev.target.value; newEdge.data = defaultEdgeData(newEdge.type); - onChange?.({ + onChange({ type: 'replace', id: edge.id, item: newEdge, diff --git a/diagram-editor/frontend/forms/section-form.tsx b/diagram-editor/frontend/forms/section-form.tsx index ff1c27ab..7cea47c4 100644 --- a/diagram-editor/frontend/forms/section-form.tsx +++ b/diagram-editor/frontend/forms/section-form.tsx @@ -10,6 +10,7 @@ import { import type { EdgeChange, NodeChange, NodeRemoveChange } from '@xyflow/react'; import { type PropsWithChildren, useMemo } from 'react'; import type { SectionEdge } from '../edges'; +import { useNodeManager } from '../node-manager'; import { isSectionNode, MaterialSymbol, @@ -20,7 +21,6 @@ import { } from '../nodes'; import { useRegistry } from '../registry-provider'; import { useTemplates } from '../templates-provider'; -import { useReactFlow } from '../use-react-flow'; import BaseEditOperationForm, { type BaseEditOperationFormProps, } from './base-edit-operation-form'; @@ -207,10 +207,10 @@ export interface SectionEdgeFormProps { } export function SectionEdgeForm({ edge, onChange }: SectionEdgeFormProps) { - const reactFlow = useReactFlow(); + const nodeManager = useNodeManager(); const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); - const sourceNode = reactFlow.getNode(edge.source); + const sourceNode = nodeManager.getNode(edge.source); const outputs = useMemo(() => { if (sourceNode && isSectionNode(sourceNode)) { diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index d1493de3..9cacfdc8 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -14,6 +14,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { event: React.ChangeEvent, ) => { if (edge.type === 'splitKey') { + console.log(edge.data.output); const newKey = event.target.value; onChange?.({ type: 'replace', @@ -37,7 +38,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { {edge.type === 'splitKey' && ( @@ -46,7 +47,7 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { diff --git a/diagram-editor/frontend/node-manager.ts b/diagram-editor/frontend/node-manager.ts index 2ad6f719..9c0b4b84 100644 --- a/diagram-editor/frontend/node-manager.ts +++ b/diagram-editor/frontend/node-manager.ts @@ -1,3 +1,4 @@ +import { createContext, useContext } from 'react'; import type { DiagramEditorEdge } from './edges'; import { type DiagramEditorNode, @@ -14,7 +15,7 @@ export class NodeManager { private nodeIdMap: Map = new Map(); private namespacedOpIdMap: Map = new Map(); - constructor(nodes: DiagramEditorNode[]) { + constructor(public nodes: DiagramEditorNode[]) { for (const node of nodes) { this.nodeIdMap.set(node.id, node); if (isOperationNode(node)) { @@ -139,3 +140,11 @@ export class NodeManager { } } } + +const NodeManagerContext = createContext(new NodeManager([])); + +export const NodeManagerProvider = NodeManagerContext.Provider; + +export function useNodeManager() { + return useContext(NodeManagerContext); +} diff --git a/diagram-editor/frontend/run-button.tsx b/diagram-editor/frontend/run-button.tsx index a33fad18..a9e88671 100644 --- a/diagram-editor/frontend/run-button.tsx +++ b/diagram-editor/frontend/run-button.tsx @@ -13,15 +13,17 @@ import { } from '@mui/material'; import { useMemo, useRef, useState } from 'react'; import { useApiClient } from './api-client-provider'; -import { NodeManager } from './node-manager'; +import { useNodeManager } from './node-manager'; import { MaterialSymbol } from './nodes'; import { useTemplates } from './templates-provider'; -import { useReactFlow } from './use-react-flow'; +import { useEdges } from './use-edges'; import { exportDiagram } from './utils/export-diagram'; type ResponseContent = { raw: string } | { err: string }; -function RunButton() { +export function RunButton() { + const nodeManager = useNodeManager(); + const edges = useEdges(); const [openPopover, setOpenPopover] = useState(false); const buttonRef = useRef(null); const theme = useTheme(); @@ -30,7 +32,6 @@ function RunButton() { raw: '', }); const apiClient = useApiClient(); - const reactFlow = useReactFlow(); const [templates, _setTemplates] = useTemplates(); const [running, setRunning] = useState(false); @@ -58,9 +59,7 @@ function RunButton() { const handleRunClick = () => { try { const request = JSON.parse(requestJson); - const nodes = reactFlow.getNodes(); - const edges = reactFlow.getEdges(); - const diagram = exportDiagram(new NodeManager(nodes), edges, templates); + const diagram = exportDiagram(nodeManager, edges, templates); apiClient.postRunWorkflow(diagram, request).subscribe({ next: (response) => { setResponseContent({ raw: JSON.stringify(response, null, 2) }); @@ -170,5 +169,3 @@ function RunButton() { ); } - -export default RunButton; diff --git a/diagram-editor/frontend/use-edges.ts b/diagram-editor/frontend/use-edges.ts new file mode 100644 index 00000000..8397f47a --- /dev/null +++ b/diagram-editor/frontend/use-edges.ts @@ -0,0 +1,10 @@ +import { createContext, useContext } from 'react'; +import type { DiagramEditorEdge } from './edges'; + +const EdgesContext = createContext([]); + +export const EdgesProvider = EdgesContext.Provider; + +export function useEdges() { + return useContext(EdgesContext); +} diff --git a/diagram-editor/frontend/utils/change.ts b/diagram-editor/frontend/utils/change.ts new file mode 100644 index 00000000..2f01ff04 --- /dev/null +++ b/diagram-editor/frontend/utils/change.ts @@ -0,0 +1,8 @@ +import type { NodeChange, NodeRemoveChange } from '@xyflow/react'; +import type { DiagramEditorNode } from '../nodes'; + +export function isRemoveChange( + change: NodeChange, +): change is NodeRemoveChange { + return change.type === 'remove'; +} diff --git a/diagram-editor/frontend/utils/connection.test.ts b/diagram-editor/frontend/utils/connection.test.ts index b28c68b5..89966809 100644 --- a/diagram-editor/frontend/utils/connection.test.ts +++ b/diagram-editor/frontend/utils/connection.test.ts @@ -5,56 +5,21 @@ import { createForkResultOkEdge, type DiagramEditorEdge, } from '../edges'; +import { NodeManager } from '../node-manager'; import { createOperationNode, createSectionBufferNode, createSectionInputNode, createSectionOutputNode, createTerminateNode, - type DiagramEditorNode, } from '../nodes'; import { getValidEdgeTypes, - type NodesAndEdgesAccessor, validateEdgeQuick, validateEdgeSimple, } from './connection'; import { ROOT_NAMESPACE } from './namespace'; -class MockReactFlowAccessor implements NodesAndEdgesAccessor { - nodesMap: Record; - edgesMap: Record; - - constructor(nodes: DiagramEditorNode[], edges: DiagramEditorEdge[]) { - this.nodesMap = nodes.reduce( - (map, node) => { - map[node.id] = node; - return map; - }, - {} as Record, - ); - this.edgesMap = edges.reduce( - (map, edge) => { - map[edge.id] = edge; - return map; - }, - {} as Record, - ); - } - - getNode(id: string): DiagramEditorNode | undefined { - return this.nodesMap[id]; - } - - getNodes(): DiagramEditorNode[] { - return Object.values(this.nodesMap); - } - - getEdges(): DiagramEditorEdge[] { - return Object.values(this.edgesMap); - } -} - describe('validate edges', () => { test('"buffer" can only connect to operations that accepts a buffer', () => { const node = createOperationNode( @@ -90,8 +55,8 @@ describe('validate edges', () => { // "buffer" does not output data ("default" edge) const edge = createDefaultEdge(buffer.id, join.id); - const reactFlow = new MockReactFlowAccessor([buffer, join], [edge]); - const result = validateEdgeQuick(edge, reactFlow); + const nodeManager = new NodeManager([buffer, join]); + const result = validateEdgeQuick(edge, nodeManager); expect(result.valid).toBe(false); } @@ -106,8 +71,8 @@ describe('validate edges', () => { type: 'bufferSeq', seq: 0, }); - const reactFlow = new MockReactFlowAccessor([buffer, join], [edge]); - const result = validateEdgeQuick(edge, reactFlow); + const nodeManager = new NodeManager([buffer, join]); + const result = validateEdgeQuick(edge, nodeManager); expect(result.valid).toBe(true); } @@ -116,8 +81,8 @@ describe('validate edges', () => { type: 'bufferKey', key: 'test', }); - const reactFlow = new MockReactFlowAccessor([buffer, join], [edge]); - const result = validateEdgeQuick(edge, reactFlow); + const nodeManager = new NodeManager([buffer, join]); + const result = validateEdgeQuick(edge, nodeManager); expect(result.valid).toBe(true); } }); @@ -322,17 +287,19 @@ describe('validate edges', () => { ); const existingEdge = createDefaultEdge(nodeNode.id, forkCloneNode.id); - const reactFlow = new MockReactFlowAccessor( - [nodeNode, forkCloneNode], - [existingEdge], - ); + const nodeManager = new NodeManager([ + nodeNode, + forkCloneNode, + forkCloneNode2, + ]); + const edges = [existingEdge]; { - const result = validateEdgeSimple(existingEdge, reactFlow); + const result = validateEdgeSimple(existingEdge, nodeManager, edges); expect(result.valid).toBe(true); } { const newEdge = createDefaultEdge(nodeNode.id, forkCloneNode2.id); - const result = validateEdgeSimple(newEdge, reactFlow); + const result = validateEdgeSimple(newEdge, nodeManager, edges); expect(result.valid).toBe(false); } }); @@ -351,14 +318,11 @@ describe('validate edges', () => { createDefaultEdge(forkCloneNode.id, terminateNode.id), createDefaultEdge(forkCloneNode.id, terminateNode.id), ]; - const reactFlow = new MockReactFlowAccessor( - [forkCloneNode, terminateNode], - edges, - ); + const nodeManager = new NodeManager([forkCloneNode, terminateNode]); { const newEdge = createDefaultEdge(forkCloneNode.id, terminateNode.id); - const result = validateEdgeSimple(newEdge, reactFlow); + const result = validateEdgeSimple(newEdge, nodeManager, edges); expect(result.valid).toBe(true); } }); @@ -376,20 +340,17 @@ describe('validate edges', () => { 'test_fork_result', ); const terminateNode = createTerminateNode(ROOT_NAMESPACE, { x: 0, y: 0 }); + const nodeManager = new NodeManager([forkResultNode, terminateNode]); { const existingEdges = [ createForkResultOkEdge(forkResultNode.id, terminateNode.id), ]; - const reactFlow = new MockReactFlowAccessor( - [forkResultNode, terminateNode], - existingEdges, - ); const newEdge = createForkResultErrEdge( forkResultNode.id, terminateNode.id, ); - const result = validateEdgeSimple(newEdge, reactFlow); + const result = validateEdgeSimple(newEdge, nodeManager, existingEdges); expect(result.valid).toBe(true); } @@ -398,15 +359,11 @@ describe('validate edges', () => { createForkResultOkEdge(forkResultNode.id, terminateNode.id), createForkResultErrEdge(forkResultNode.id, terminateNode.id), ]; - const reactFlow = new MockReactFlowAccessor( - [forkResultNode, terminateNode], - existingEdges, - ); const newEdge = createForkResultErrEdge( forkResultNode.id, terminateNode.id, ); - const result = validateEdgeSimple(newEdge, reactFlow); + const result = validateEdgeSimple(newEdge, nodeManager, existingEdges); expect(result.valid).toBe(false); } }); @@ -428,29 +385,22 @@ describe('validate edges', () => { { type: 'section', builder: 'test_section' }, 'test_op_section', ); + const nodeManager = new NodeManager([bufferNode, sectionNode]); { - const reactFlow = new MockReactFlowAccessor( - [bufferNode, sectionNode], - [], - ); const edge = createBufferEdge(bufferNode.id, sectionNode.id, { type: 'bufferSeq', seq: 0, }); - const result = validateEdgeSimple(edge, reactFlow); + const result = validateEdgeSimple(edge, nodeManager, []); expect(result.valid).toBe(false); } { - const reactFlow = new MockReactFlowAccessor( - [bufferNode, sectionNode], - [], - ); const edge = createBufferEdge(bufferNode.id, sectionNode.id, { type: 'sectionBuffer', inputId: 'test', }); - const result = validateEdgeSimple(edge, reactFlow); + const result = validateEdgeSimple(edge, nodeManager, []); expect(result.valid).toBe(true); } }); @@ -476,18 +426,20 @@ describe('validate edges', () => { ); { - const reactFlow = new MockReactFlowAccessor([nodeNode, sectionNode], []); + const nodeManager = new NodeManager([nodeNode, sectionNode]); + const edges: DiagramEditorEdge[] = []; const edge = createDefaultEdge(nodeNode.id, sectionNode.id); - const result = validateEdgeSimple(edge, reactFlow); + const result = validateEdgeSimple(edge, nodeManager, edges); expect(result.valid).toBe(false); } { - const reactFlow = new MockReactFlowAccessor([nodeNode, sectionNode], []); + const nodeManager = new NodeManager([nodeNode, sectionNode]); + const edges: DiagramEditorEdge[] = []; const edge = createDefaultEdge(nodeNode.id, sectionNode.id, { type: 'sectionInput', inputId: 'test', }); - const result = validateEdgeSimple(edge, reactFlow); + const result = validateEdgeSimple(edge, nodeManager, edges); expect(result.valid).toBe(true); } }); diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 94478d94..b3ac29dd 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -1,10 +1,10 @@ -import type { ReactFlowInstance } from '@xyflow/react'; import { type DiagramEditorEdge, EDGE_CATEGORIES, EdgeCategory, type EdgeTypes, } from '../edges'; +import type { NodeManager } from '../node-manager'; import type { DiagramEditorNode, NodeTypes } from '../nodes'; import { exhaustiveCheck } from './exhaustive-check'; @@ -112,15 +112,6 @@ function createValidationError(error: string): EdgeValidationResult { return { valid: false, error }; } -/** - * A minimal type for only the required accessor methods in `ReactFlowInstance`. - * This is mostly so that tests can be written without rendering a `ReactFlow` instance. - */ -export type NodesAndEdgesAccessor = Pick< - ReactFlowInstance, - 'getNode' | 'getNodes' | 'getEdges' ->; - /** * Perform a quick check if an edge is valid. * This only checks if the edge type is valid, does not check for conflicting edges, data correctness etc. @@ -129,10 +120,10 @@ export type NodesAndEdgesAccessor = Pick< */ export function validateEdgeQuick( edge: DiagramEditorEdge, - reactFlow: NodesAndEdgesAccessor, + nodeManager: NodeManager, ): EdgeValidationResult { - const sourceNode = reactFlow.getNode(edge.source); - const targetNode = reactFlow.getNode(edge.target); + const sourceNode = nodeManager.getNode(edge.source); + const targetNode = nodeManager.getNode(edge.target); if (!sourceNode || !targetNode) { return createValidationError('cannot find source or target node'); @@ -156,15 +147,16 @@ export function validateEdgeQuick( */ export function validateEdgeSimple( edge: DiagramEditorEdge, - reactFlow: NodesAndEdgesAccessor, + nodeManager: NodeManager, + edges: DiagramEditorEdge[], ): EdgeValidationResult { - const quickCheck = validateEdgeQuick(edge, reactFlow); + const quickCheck = validateEdgeQuick(edge, nodeManager); if (!quickCheck.valid) { return quickCheck; } - const sourceNode = reactFlow.getNode(edge.source); - const targetNode = reactFlow.getNode(edge.target); + const sourceNode = nodeManager.getNode(edge.source); + const targetNode = nodeManager.getNode(edge.target); if (!sourceNode || !targetNode) { return createValidationError('cannot find source or target node'); } @@ -192,18 +184,14 @@ export function validateEdgeSimple( const outputCardinality = getOutputCardinality(sourceNode.type); switch (outputCardinality) { case CardinalityType.Single: { - if ( - reactFlow - .getEdges() - .some((e) => e.source === sourceNode.id && edge.id !== e.id) - ) { + if (edges.some((e) => e.source === sourceNode.id && edge.id !== e.id)) { return createValidationError('source node already has an edge'); } break; } case CardinalityType.Pair: { let count = 0; - for (const e of reactFlow.getEdges()) { + for (const e of edges) { if (e.source === sourceNode.id && edge.id !== e.id) { count++; } @@ -234,9 +222,10 @@ export function validateEdgeSimple( */ export async function validateEdgeFull( edge: DiagramEditorEdge, - reactFlow: NodesAndEdgesAccessor, + nodeManager: NodeManager, + edges: DiagramEditorEdge[], ): Promise { - const simpleCheck = validateEdgeSimple(edge, reactFlow); + const simpleCheck = validateEdgeSimple(edge, nodeManager, edges); if (!simpleCheck.valid) { return simpleCheck; } From 1a37bee60c0366a95f962d2944c5746e75145585 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:17:43 +0000 Subject: [PATCH 157/165] fix buffer input slot not updating Signed-off-by: Teo Koon Peng --- .../frontend/forms/buffer-edge-form.tsx | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index c3b16554..97688ba0 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -26,6 +26,25 @@ function getTemplateBuffers(template: SectionTemplate): string[] { } } +function defaultInputData( + inputType: BufferEdge['data']['input']['type'], +): BufferEdge['data']['input'] { + switch (inputType) { + case 'bufferKey': { + return { type: 'bufferKey', key: '' }; + } + case 'bufferSeq': { + return { type: 'bufferSeq', seq: 0 }; + } + case 'sectionBuffer': { + return { type: 'sectionBuffer', inputId: '' }; + } + default: + exhaustiveCheck(inputType); + throw new Error('unknown buffer edge input type'); + } +} + export interface BufferEdgeInputFormProps { edge: BufferEdge; onChange?: (changes: EdgeChange) => void; @@ -116,7 +135,24 @@ export function BufferEdgeInputForm({ <> Slot - { + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { + ...edge.data, + input: defaultInputData(ev.target.value), + }, + } as BufferEdge, + }); + }} + > {!targetIsSection && Index} {!targetIsSection && Key} {targetIsSection && ( From dabc71117ae9e8cd5066bb6527aa4f0bd82af841 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:22:35 +0000 Subject: [PATCH 158/165] update icons Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/nodes/icons.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/diagram-editor/frontend/nodes/icons.tsx b/diagram-editor/frontend/nodes/icons.tsx index e3b84ef9..d10f55cd 100644 --- a/diagram-editor/frontend/nodes/icons.tsx +++ b/diagram-editor/frontend/nodes/icons.tsx @@ -39,11 +39,13 @@ export function BufferAccessIcon(): React.JSX.Element { } export function SplitIcon(): React.JSX.Element { - return ; + return ( + + ); } export function ForkResultIcon(): React.JSX.Element { - return ; + return ; } export function ListenIcon(): React.JSX.Element { From 71f8bde559b4239f197f7df00364fbb25299b12b Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:26:44 +0000 Subject: [PATCH 159/165] fix after merge Signed-off-by: Teo Koon Peng --- diagram-editor/server/api/executor.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/diagram-editor/server/api/executor.rs b/diagram-editor/server/api/executor.rs index d9a7386d..98aabdaa 100644 --- a/diagram-editor/server/api/executor.rs +++ b/diagram-editor/server/api/executor.rs @@ -322,7 +322,13 @@ fn debug_feedback( feedback_query: bevy_ecs::system::Query<&FeedbackSender>, ) { for ev in op_started.read() { - match feedback_query.get(ev.session) { + let session = match ev.session_stack.last() { + Some(session) => session, + None => { + continue; + } + }; + match feedback_query.get(*session) { Ok(feedback_tx) => { if let Err(e) = feedback_tx.0.send(ev.clone()) { error!("{}", e); From 1a206b87ee5963e203725148492281abd06bb642 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:36:55 +0000 Subject: [PATCH 160/165] fix uncaught exceptions Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/add-operation.tsx | 2 +- diagram-editor/frontend/diagram-editor.tsx | 20 +++++++++---------- .../frontend/forms/buffer-edge-form.tsx | 2 +- .../frontend/forms/data-input-form.tsx | 2 +- .../frontend/forms/section-form.tsx | 2 +- diagram-editor/frontend/node-manager.ts | 6 +++++- diagram-editor/frontend/utils/auto-layout.ts | 2 +- diagram-editor/frontend/utils/connection.ts | 8 ++++---- 8 files changed, 24 insertions(+), 20 deletions(-) diff --git a/diagram-editor/frontend/add-operation.tsx b/diagram-editor/frontend/add-operation.tsx index 22fbdb2d..d8f64ec8 100644 --- a/diagram-editor/frontend/add-operation.tsx +++ b/diagram-editor/frontend/add-operation.tsx @@ -110,7 +110,7 @@ function AddOperation({ parentId, newNodePosition, onAdd }: AddOperationProps) { const [editorMode] = useEditorMode(); const nodeManager = useNodeManager(); const namespace = React.useMemo(() => { - const parentNode = parentId && nodeManager.getNode(parentId); + const parentNode = parentId && nodeManager.tryGetNode(parentId); if (!parentNode || !isOperationNode(parentNode)) { return ROOT_NAMESPACE; } diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 052f3175..975e2c5d 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -86,7 +86,7 @@ function getChangeParentIdAndPosition( ): [string, string | null, XYPosition] | null { switch (change.type) { case 'position': { - const changedNode = nodeManager.getNode(change.id); + const changedNode = nodeManager.tryGetNode(change.id); if (!changedNode) { return null; } @@ -234,7 +234,7 @@ function DiagramEditor() { continue; } - const scopeNode = nodeManager.getNode(changeParentId); + const scopeNode = nodeManager.tryGetNode(changeParentId); if (!scopeNode) { continue; } @@ -384,7 +384,7 @@ function DiagramEditor() { return { x: 0, y: 0 }; } const parentNode = addOperationPopover.parentId - ? nodeManager.getNode(addOperationPopover.parentId) + ? nodeManager.tryGetNode(addOperationPopover.parentId) : null; const parentPosition = parentNode?.position @@ -416,12 +416,12 @@ function DiagramEditor() { return null; } - const sourceNode = nodeManager.getNode(edge.source); + const sourceNode = nodeManager.tryGetNode(edge.source); if (!sourceNode) { console.error(`cannot find node ${edge.source}`); return null; } - const targetNode = nodeManager.getNode(edge.target); + const targetNode = nodeManager.tryGetNode(edge.target); if (!targetNode) { console.error(`cannot find node ${edge.target}`); return null; @@ -449,7 +449,7 @@ function DiagramEditor() { >({ open: false }); const renderEditForm = React.useCallback( (nodeId: string) => { - const node = nodeManager.getNode(nodeId); + const node = nodeManager.tryGetNode(nodeId); if (!node || isBuiltinNode(node)) { return null; } @@ -522,8 +522,8 @@ function DiagramEditor() { const tryCreateEdge = React.useCallback( (conn: Connection, id?: string): DiagramEditorEdge | null => { - const sourceNode = nodeManager.getNode(conn.source); - const targetNode = nodeManager.getNode(conn.target); + const sourceNode = nodeManager.tryGetNode(conn.source); + const targetNode = nodeManager.tryGetNode(conn.target); if (!sourceNode || !targetNode) { throw new Error('cannot find source or target node'); } @@ -615,8 +615,8 @@ function DiagramEditor() { } }} isValidConnection={(conn) => { - const sourceNode = nodeManager.getNode(conn.source); - const targetNode = nodeManager.getNode(conn.target); + const sourceNode = nodeManager.tryGetNode(conn.source); + const targetNode = nodeManager.tryGetNode(conn.target); if (!sourceNode || !targetNode) { throw new Error('cannot find source or target node'); } diff --git a/diagram-editor/frontend/forms/buffer-edge-form.tsx b/diagram-editor/frontend/forms/buffer-edge-form.tsx index 97688ba0..c6c07c4b 100644 --- a/diagram-editor/frontend/forms/buffer-edge-form.tsx +++ b/diagram-editor/frontend/forms/buffer-edge-form.tsx @@ -109,7 +109,7 @@ export function BufferEdgeInputForm({ const labelId = useId(); const nodeManager = useNodeManager(); - const targetNode = nodeManager.getNode(edge.target); + const targetNode = nodeManager.tryGetNode(edge.target); const targetIsSection = targetNode?.type === 'section'; const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); diff --git a/diagram-editor/frontend/forms/data-input-form.tsx b/diagram-editor/frontend/forms/data-input-form.tsx index 2ecadf62..a5d8ed54 100644 --- a/diagram-editor/frontend/forms/data-input-form.tsx +++ b/diagram-editor/frontend/forms/data-input-form.tsx @@ -28,7 +28,7 @@ export function DataInputForm({ edge, onChange }: DataInputEdgeFormProps) { const nodeManager = useNodeManager(); const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); - const targetNode = nodeManager.getNode(edge.target); + const targetNode = nodeManager.tryGetNode(edge.target); const inputs = useMemo(() => { if (!targetNode || !isSectionNode(targetNode)) { diff --git a/diagram-editor/frontend/forms/section-form.tsx b/diagram-editor/frontend/forms/section-form.tsx index 7cea47c4..4dd8f76c 100644 --- a/diagram-editor/frontend/forms/section-form.tsx +++ b/diagram-editor/frontend/forms/section-form.tsx @@ -210,7 +210,7 @@ export function SectionEdgeForm({ edge, onChange }: SectionEdgeFormProps) { const nodeManager = useNodeManager(); const registry = useRegistry(); const [templates, _setTemplates] = useTemplates(); - const sourceNode = nodeManager.getNode(edge.source); + const sourceNode = nodeManager.tryGetNode(edge.source); const outputs = useMemo(() => { if (sourceNode && isSectionNode(sourceNode)) { diff --git a/diagram-editor/frontend/node-manager.ts b/diagram-editor/frontend/node-manager.ts index 9c0b4b84..bd32abb4 100644 --- a/diagram-editor/frontend/node-manager.ts +++ b/diagram-editor/frontend/node-manager.ts @@ -37,8 +37,12 @@ export class NodeManager { } } + tryGetNode(nodeId: string): DiagramEditorNode | null { + return this.nodeIdMap.get(nodeId) || null; + } + getNode(nodeId: string): DiagramEditorNode { - const node = this.nodeIdMap.get(nodeId); + const node = this.tryGetNode(nodeId); if (!node) { throw new Error(`cannot find node "${nodeId}"`); } diff --git a/diagram-editor/frontend/utils/auto-layout.ts b/diagram-editor/frontend/utils/auto-layout.ts index 89d3fcea..95afb02d 100644 --- a/diagram-editor/frontend/utils/auto-layout.ts +++ b/diagram-editor/frontend/utils/auto-layout.ts @@ -30,7 +30,7 @@ export function autoLayout( const scopeChildrens: Record = {}; for (const node of nodes) { const parentNode = node.parentId - ? nodeManager.getNode(node.parentId) + ? nodeManager.tryGetNode(node.parentId) : null; if (parentNode?.id) { if (!scopeChildrens[parentNode.id]) { diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index b3ac29dd..13614bdf 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -122,8 +122,8 @@ export function validateEdgeQuick( edge: DiagramEditorEdge, nodeManager: NodeManager, ): EdgeValidationResult { - const sourceNode = nodeManager.getNode(edge.source); - const targetNode = nodeManager.getNode(edge.target); + const sourceNode = nodeManager.tryGetNode(edge.source); + const targetNode = nodeManager.tryGetNode(edge.target); if (!sourceNode || !targetNode) { return createValidationError('cannot find source or target node'); @@ -155,8 +155,8 @@ export function validateEdgeSimple( return quickCheck; } - const sourceNode = nodeManager.getNode(edge.source); - const targetNode = nodeManager.getNode(edge.target); + const sourceNode = nodeManager.tryGetNode(edge.source); + const targetNode = nodeManager.tryGetNode(edge.target); if (!sourceNode || !targetNode) { return createValidationError('cannot find source or target node'); } From c422eaf00d114474721625a662dbfd4b786aef4e Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 05:41:38 +0000 Subject: [PATCH 161/165] add instructions to install pnpm Signed-off-by: Teo Koon Peng --- diagram-editor/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/diagram-editor/README.md b/diagram-editor/README.md index 9251de71..d46da96f 100644 --- a/diagram-editor/README.md +++ b/diagram-editor/README.md @@ -6,6 +6,13 @@ This contains a SPA React web app to create and edit a `bevy_impulse` diagram an ## Setup +Install pnpm and nodejs: + +```bash +curl -fsSL https://get.pnpm.io/install.sh | bash - +pnpm env use --global lts +``` + Install the dependencies: ```bash From ad476322bd3694d05efeda5ed71f8328f54c056d Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 07:48:13 +0000 Subject: [PATCH 162/165] proper stream out forms Signed-off-by: Teo Koon Peng --- .../frontend/edges/stream-out-edge.tsx | 6 ++-- .../forms/base-edit-operation-form.tsx | 1 + .../frontend/forms/edit-edge-form.tsx | 10 ++++-- .../frontend/forms/edit-node-form.tsx | 4 +++ .../frontend/forms/split-edge-form.tsx | 1 - .../frontend/forms/stream-out-edge-form.tsx | 35 +++++++++++++++++++ .../frontend/forms/stream-out-form.tsx | 28 +++++++++++++++ diagram-editor/frontend/utils/connection.ts | 2 +- .../frontend/utils/export-diagram.ts | 2 +- 9 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 diagram-editor/frontend/forms/stream-out-edge-form.tsx create mode 100644 diagram-editor/frontend/forms/stream-out-form.tsx diff --git a/diagram-editor/frontend/edges/stream-out-edge.tsx b/diagram-editor/frontend/edges/stream-out-edge.tsx index ff9defa7..efb76683 100644 --- a/diagram-editor/frontend/edges/stream-out-edge.tsx +++ b/diagram-editor/frontend/edges/stream-out-edge.tsx @@ -4,7 +4,7 @@ import type { Edge } from '../types/react-flow'; import type { DefaultInputSlotData } from './input-slots'; export type StreamOutOutputData = { - name: string; + streamId: string; }; export type StreamOutEdge = Edge< @@ -16,7 +16,9 @@ export type StreamOutEdge = Edge< export type StreamOutEdgeProps = Exclude, 'label'>; function StreamOutEdgeComp(props: StreamOutEdgeProps) { - return ; + return ( + + ); } export default memo(StreamOutEdgeComp); diff --git a/diagram-editor/frontend/forms/base-edit-operation-form.tsx b/diagram-editor/frontend/forms/base-edit-operation-form.tsx index c51bd872..409387c5 100644 --- a/diagram-editor/frontend/forms/base-edit-operation-form.tsx +++ b/diagram-editor/frontend/forms/base-edit-operation-form.tsx @@ -43,6 +43,7 @@ function BaseEditOperationForm({ { const updatedNode = { ...node }; diff --git a/diagram-editor/frontend/forms/edit-edge-form.tsx b/diagram-editor/frontend/forms/edit-edge-form.tsx index fa3d1f6a..ece42cc6 100644 --- a/diagram-editor/frontend/forms/edit-edge-form.tsx +++ b/diagram-editor/frontend/forms/edit-edge-form.tsx @@ -17,6 +17,7 @@ import type { EdgeData, EdgeTypes, SectionEdge, + StreamOutEdge, UnzipEdge, } from '../edges'; import { MaterialSymbol } from '../nodes'; @@ -26,6 +27,7 @@ import { DataInputForm } from './data-input-form'; import { SectionEdgeForm } from './section-form'; import SplitEdgeForm, { type SplitEdge } from './split-edge-form'; import UnzipEdgeForm from './unzip-edge-form'; +import { StreamOutEdgeForm } from './stream-out-edge-form'; const EDGE_TYPES_NAME = { buffer: 'Buffer', @@ -48,7 +50,7 @@ const EDGE_DEFAULT_OUTPUT_DATA = { splitKey: { output: { key: '' }, input: { type: 'default' } }, splitSeq: { output: { seq: 0 }, input: { type: 'default' } }, splitRemaining: { output: {}, input: { type: 'default' } }, - streamOut: { output: { name: '' }, input: { type: 'default' } }, + streamOut: { output: { streamId: '' }, input: { type: 'default' } }, unzip: { output: { seq: 0 }, input: { type: 'default' } }, section: { output: { output: '' }, input: { type: 'default' } }, } satisfies { [K in EdgeTypes]: EdgeData }; @@ -77,8 +79,12 @@ function EditEdgeForm({ ); } + case 'streamOut': { + return ( + + ); + } case 'default': - case 'streamOut': case 'forkResultOk': case 'forkResultErr': { // these edges have no extra options diff --git a/diagram-editor/frontend/forms/edit-node-form.tsx b/diagram-editor/frontend/forms/edit-node-form.tsx index 2eb87023..617ba61d 100644 --- a/diagram-editor/frontend/forms/edit-node-form.tsx +++ b/diagram-editor/frontend/forms/edit-node-form.tsx @@ -17,6 +17,7 @@ import { SectionInputForm, SectionOutputForm, } from './section-form'; +import { StreamOutForm, type StreamOutFormProps } from './stream-out-form'; import TransformForm, { type TransformFormProps } from './transform-form'; interface EditOperationNodeFormProps { @@ -42,6 +43,9 @@ function EditOperationNodeForm(props: EditOperationNodeFormProps) { case 'transform': { return ; } + case 'stream_out': { + return ; + } default: { return ; } diff --git a/diagram-editor/frontend/forms/split-edge-form.tsx b/diagram-editor/frontend/forms/split-edge-form.tsx index 9cacfdc8..2ab1bcde 100644 --- a/diagram-editor/frontend/forms/split-edge-form.tsx +++ b/diagram-editor/frontend/forms/split-edge-form.tsx @@ -14,7 +14,6 @@ function SplitEdgeForm({ edge, onChange }: SplitEdgeFormProps) { event: React.ChangeEvent, ) => { if (edge.type === 'splitKey') { - console.log(edge.data.output); const newKey = event.target.value; onChange?.({ type: 'replace', diff --git a/diagram-editor/frontend/forms/stream-out-edge-form.tsx b/diagram-editor/frontend/forms/stream-out-edge-form.tsx new file mode 100644 index 00000000..f20006c3 --- /dev/null +++ b/diagram-editor/frontend/forms/stream-out-edge-form.tsx @@ -0,0 +1,35 @@ +import { TextField } from '@mui/material'; +import type { EdgeChange } from '@xyflow/react'; +import type { StreamOutEdge } from '../edges'; + +export interface StreamOutEdgeFormProps { + edge: StreamOutEdge; + onChange?: (change: EdgeChange) => void; +} + +export function StreamOutEdgeForm({ edge, onChange }: StreamOutEdgeFormProps) { + const handleDataChange = ( + event: React.ChangeEvent, + ) => { + const newStreamId = event.target.value; + onChange?.({ + type: 'replace', + id: edge.id, + item: { + ...edge, + data: { ...edge.data, output: { streamId: newStreamId } }, + }, + }); + }; + + return ( + <> + + + ); +} diff --git a/diagram-editor/frontend/forms/stream-out-form.tsx b/diagram-editor/frontend/forms/stream-out-form.tsx new file mode 100644 index 00000000..bb7f899f --- /dev/null +++ b/diagram-editor/frontend/forms/stream-out-form.tsx @@ -0,0 +1,28 @@ +import { TextField } from '@mui/material'; +import BaseEditOperationForm, { + type BaseEditOperationFormProps, +} from './base-edit-operation-form'; + +export type StreamOutFormProps = BaseEditOperationFormProps<'stream_out'>; + +export function StreamOutForm(props: StreamOutFormProps) { + return ( + + { + const updatedNode = { ...props.node }; + updatedNode.data.op.name = ev.target.value; + props.onChange?.({ + type: 'replace', + id: props.node.id, + item: updatedNode, + }); + }} + /> + + ); +} diff --git a/diagram-editor/frontend/utils/connection.ts b/diagram-editor/frontend/utils/connection.ts index 13614bdf..d778ef9a 100644 --- a/diagram-editor/frontend/utils/connection.ts +++ b/diagram-editor/frontend/utils/connection.ts @@ -72,6 +72,7 @@ enum CardinalityType { function getOutputCardinality(type: NodeTypes): CardinalityType { switch (type) { + case 'node': case 'fork_clone': case 'unzip': case 'buffer': @@ -82,7 +83,6 @@ function getOutputCardinality(type: NodeTypes): CardinalityType { case 'fork_result': { return CardinalityType.Pair; } - case 'node': case 'buffer_access': case 'join': case 'serialized_join': diff --git a/diagram-editor/frontend/utils/export-diagram.ts b/diagram-editor/frontend/utils/export-diagram.ts index d8f18f0f..baaadd29 100644 --- a/diagram-editor/frontend/utils/export-diagram.ts +++ b/diagram-editor/frontend/utils/export-diagram.ts @@ -45,7 +45,7 @@ function syncStreamOut( edge: StreamOutEdge, ) { sourceOp.stream_out = sourceOp.stream_out ? sourceOp.stream_out : {}; - sourceOp.stream_out[edge.data.output.name] = + sourceOp.stream_out[edge.data.output.streamId] = nodeManager.getTargetNextOp(edge); } From 3de5243968f1ee2f0675ac75a212ca5b7996b9d2 Mon Sep 17 00:00:00 2001 From: Teo Koon Peng Date: Mon, 18 Aug 2025 08:54:46 +0000 Subject: [PATCH 163/165] separate stream out to another handle Signed-off-by: Teo Koon Peng --- diagram-editor/frontend/diagram-editor.tsx | 17 ++++- diagram-editor/frontend/handles.tsx | 64 +++++++++++++++++++ diagram-editor/frontend/nodes/base-node.tsx | 52 +++------------ .../frontend/nodes/buffer-access-node.tsx | 3 +- diagram-editor/frontend/nodes/buffer-node.tsx | 3 +- diagram-editor/frontend/nodes/join-node.tsx | 3 +- diagram-editor/frontend/nodes/listen-node.tsx | 3 +- diagram-editor/frontend/nodes/node-node.tsx | 14 +++- diagram-editor/frontend/nodes/scope-node.tsx | 11 +++- .../frontend/nodes/section-node.tsx | 3 +- .../frontend/nodes/stream-out-node.tsx | 3 +- diagram-editor/frontend/types/react-flow.ts | 6 +- .../frontend/utils/connection.test.ts | 39 +++++++---- diagram-editor/frontend/utils/connection.ts | 34 ++++++++-- 14 files changed, 183 insertions(+), 72 deletions(-) create mode 100644 diagram-editor/frontend/handles.tsx diff --git a/diagram-editor/frontend/diagram-editor.tsx b/diagram-editor/frontend/diagram-editor.tsx index 975e2c5d..56bf0073 100644 --- a/diagram-editor/frontend/diagram-editor.tsx +++ b/diagram-editor/frontend/diagram-editor.tsx @@ -46,6 +46,7 @@ import { import ExportDiagramDialog from './export-diagram-dialog'; import { defaultEdgeData, EditEdgeForm, EditNodeForm } from './forms'; import EditScopeForm from './forms/edit-scope-form'; +import type { HandleId } from './handles'; import { NodeManager, NodeManagerProvider } from './node-manager'; import { type DiagramEditorNode, @@ -528,7 +529,12 @@ function DiagramEditor() { throw new Error('cannot find source or target node'); } - const validEdges = getValidEdgeTypes(sourceNode, targetNode); + const validEdges = getValidEdgeTypes( + sourceNode, + conn.sourceHandle as HandleId, + targetNode, + conn.targetHandle as HandleId, + ); if (validEdges.length === 0) { showErrorToast( `cannot connect "${sourceNode.type}" to "${targetNode.type}"`, @@ -621,7 +627,12 @@ function DiagramEditor() { throw new Error('cannot find source or target node'); } - const allowedEdges = getValidEdgeTypes(sourceNode, targetNode); + const allowedEdges = getValidEdgeTypes( + sourceNode, + conn.sourceHandle as HandleId, + targetNode, + conn.targetHandle as HandleId, + ); return allowedEdges.length > 0; }} onReconnect={(oldEdge, newConnection) => { @@ -755,7 +766,9 @@ function DiagramEditor() { edge={editingEdge.edge} allowedEdgeTypes={getValidEdgeTypes( editingEdge.sourceNode, + editingEdge.edge.sourceHandle, editingEdge.targetNode, + editingEdge.edge.targetHandle, )} onChange={handleEdgeChange} onDelete={(changes) => { diff --git a/diagram-editor/frontend/handles.tsx b/diagram-editor/frontend/handles.tsx new file mode 100644 index 00000000..0c25ed1d --- /dev/null +++ b/diagram-editor/frontend/handles.tsx @@ -0,0 +1,64 @@ +import { + Handle as ReactFlowHandle, + type HandleProps as ReactFlowHandleProps, +} from '@xyflow/react'; +import { exhaustiveCheck } from './utils/exhaustive-check'; + +export type HandleId = 'stream' | null | undefined; + +export enum HandleType { + Data, + Buffer, + Stream, + DataBuffer, + DataStream, +} + +export interface HandleProps extends Omit { + variant: HandleType; +} + +function variantClassName(handleType?: HandleType): string | undefined { + if (handleType === undefined) { + return undefined; + } + + switch (handleType) { + case HandleType.Data: { + // use the default style + return undefined; + } + case HandleType.Buffer: { + return 'handle-buffer'; + } + case HandleType.Stream: { + return 'handle-stream'; + } + case HandleType.DataBuffer: { + return 'handle-data-buffer'; + } + case HandleType.DataStream: { + return 'handle-data-stream'; + } + default: { + exhaustiveCheck(handleType); + throw new Error('unknown edge category'); + } + } +} + +export function Handle({ variant, className, ...baseProps }: HandleProps) { + const handleId = variant === HandleType.Stream ? 'stream' : undefined; + + const prependClassName = className + ? `${variantClassName(variant)} ${className} ` + : variantClassName(variant); + + return ( + + ); +} diff --git a/diagram-editor/frontend/nodes/base-node.tsx b/diagram-editor/frontend/nodes/base-node.tsx index 29a20689..dffe268d 100644 --- a/diagram-editor/frontend/nodes/base-node.tsx +++ b/diagram-editor/frontend/nodes/base-node.tsx @@ -6,19 +6,11 @@ import { Stack, Typography, } from '@mui/material'; -import { Handle, type NodeProps, Position } from '@xyflow/react'; -import { memo, useCallback } from 'react'; -import { exhaustiveCheck } from '../utils/exhaustive-check'; +import { type NodeProps, Position } from '@xyflow/react'; +import { memo } from 'react'; +import { Handle, type HandleProps, HandleType } from '../handles'; import { LAYOUT_OPTIONS } from '../utils/layout'; -export enum HandleType { - Data, - Buffer, - Stream, - DataBuffer, - DataStream, -} - export interface BaseNodeProps extends NodeProps { color?: ButtonProps['color']; icon?: React.JSX.Element | string; @@ -33,6 +25,7 @@ export interface BaseNodeProps extends NodeProps { */ outputHandleType?: HandleType; caption?: string; + extraHandles?: HandleProps[]; } function BaseNode({ @@ -43,6 +36,7 @@ function BaseNode({ inputHandleType = HandleType.Data, outputHandleType = HandleType.Data, caption, + extraHandles, isConnectable, selected, sourcePosition = Position.Bottom, @@ -55,35 +49,6 @@ function BaseNode({ materialIconOrSymbol ); - const handleClassName = useCallback((handleType?: HandleType) => { - if (handleType === undefined) { - return undefined; - } - - switch (handleType) { - case HandleType.Data: { - // use the default style - return undefined; - } - case HandleType.Buffer: { - return 'handle-buffer'; - } - case HandleType.Stream: { - return 'handle-stream'; - } - case HandleType.DataBuffer: { - return 'handle-data-buffer'; - } - case HandleType.DataStream: { - return 'handle-data-stream'; - } - default: { - exhaustiveCheck(handleType); - throw new Error('unknown edge category'); - } - } - }, []); - return ( {(variant === 'input' || variant === 'inputOutput') && ( @@ -91,7 +56,7 @@ function BaseNode({ type="target" position={targetPosition} isConnectable={isConnectable} - className={handleClassName(inputHandleType)} + variant={inputHandleType} /> )}

`bBo-aN%K4e@xC zt>nJSy*^!mrQ^gK8jGGOD%AHy=6kCH|N8CT5KL>#NDWiS4@J&Wya{9eQJ^N$o$@Zp z!C+1g-(zwg8G?6t*)?au(lFOz49%vIPvvJgIn)u&4|=gt(owSal5tV_q-+>J*<`Vy zLJ&KkfeR4Bs2VKOG91YPM}F;33*3|%c2oHy1!CJbzy;gK2CcTQOhe-w82}h4K_Ss3 z5}8P3fKZHaR>x2}Q;rO*N|!lpLr!;S=&>n!dr4DZ8pX|7uVuAlGq9ra~v5gl2JujIsA)Hv@%E#&Jw(z_$H)o>#0P6&nMjNM4y% zL<_yBmZIFI3;4C0^~uIuzGkRO@+lM;ZX#MtYp6IBh}Vwuh}fy;`P;0avZu1wNaTv# zOfSKd1Jge+$%K5p>k?q)sH4OgGnBx3FRk^?OqT7`q{7rxA$-k6mMyv{l%wSYW>JrW z9K1G@NWS^&r}I|M@6WO{Dz3`w^ZsjRx$)CagNC5i0!is6Ju2@UnPa51Cd&K!!~S^s z+fM*9MhXVdE-VmW04$&gs9qxikUR@Obc})w5UKnpMadRxQuMTkS?&oPTaV{l<1aqV zA11qo&f>Cne?b&`<`gZU_pe(si`{SfTAvKX1_8^4^yI$T*s6*<71WZ`-@Gf9*Ir}U zhA(pICp6|`6NHK)FP?SdR0h%+*#LFb!n+jSXFT=474~o;1}?kqX=&x?zk-n{O_^RQX=FR>vUGGnS{K zK+})ef`|g|hBiVh@%}*QRo9c1L~0?JP5XbH+~);+7+TXGPNe~mfS|w_gh|0=ANly2 zX*Yc`=}~H}3zwVCQnp$PYOp4M_9ZvCD}2q~dM~A_V16tyvbP@#V1IN*PFDivSxf%Z zlcADs-z4sG9tjtPu)2rGTGxEAhmE9krg)!Ruzj1fYVmn~Dzo2uor|k_`TFzQJJ+%X zmLq|LnCM4WI-WWSLwF89m22!-~OXbW~?Q|mN|Ck6= zM_QRv76ONNCkb)YbvfOgMC`DwM81~5K`U@R&0x-L-n>gA&O8b($3Z!N{mf;or^+uy zV(Ygu|8_+M$>Fn#5{|XgNMX9^CP?j6DM9~&`o4t)4Svq%p0Mk@Rajh>D?)1I;Y+!> z1u(tN4McKS=L(R1Q|j?fd^Hw*&Avl)BS+eM+9ID4h4>c2mHeE4=v6Z1fNZJ9(yzK9 z8`Iij>#uW*jGuf>vTcBzF$$SYB~v)X>$6HVoQgo9M}1O^Cb4^TnUMyOQS1^<^azV} zZ@gwfONNu~aFfOCp@LzNLZHT16Ic^92{;S<2p5FO<^jMNfR(ivF^L$8#NUTAnZTKH z4qS2eIRzhr%wkS~W?)Bi1IZb7A-E$C5L+S`Vi<#1qU>N~LjsXSQ8GmM0$rge?s5w~ z@$UEOAWq1!%Fy`^BugekHB7@Vu~k_90kk9#@+q3jhy2?eVc{5!WojOFVDKjx5`uC2 ztgy4M=kU3FPNEmu(vbplU*ZTG0Go-0W8j_|o-)bds~+Yea}=eKYX}f(jfR;C^7%<7 zY%44K4Wafxaw`gX9)&akC7_$~V*#%JQA%LuzK zOdqg=B=JAia0d=xc=eLONX@4dk6PM8-vO1M>mt|-Qi;%Xq>>>FAk#}#r$zad}7Taff6vr0T&3)XUu z*jA6zMQN9GSP6ep-SudCcih}>*#_8EzKgQ>TjZF%2__L`xm#whd)+GOzH`;@_bi)7 z%6czli=OCjZaF^N*xb?W0}u3NIc^@xc`_Q=C!=-A<5hLNh<71o&t~ZW+J0YGqboyp zGvu%Wey$kh9|Yy;TAXf~OXqo+E0GI4LbL02=iwb6hvE^A@Jhd`e;)dMDcKUOvfuT( zKr$RrvzTl~syH9fXfzwFhsi5fnrdQvR7AA}^M&Y`?BfSgT@{CCK}h-}!zM(Mxsj47 zLa4$r0-2)>GyGNDt;SXotdrN=3e01au*=gz^!JFKh~>9@+npzn8F`7*DOaQ|4z&oq zMiRv}%61{O6e##oCWPh?g6v*HNC6CiK%H+r6QTUv=Gk{1yKGLA_ZmT#X&{Y z1z%V_17o7<^mW8hs-c9z69mzIZjeZ&6R31bXgIxmQF?TWCzLaotOSv`2c_S|R#-i% zDdcaxH4dpVmDZyx_zc!mc4aq`>5Tyz8zQb=kFI!XLEpQTmbwl;lG}0Bp43f(Dmvnf zwRn?>bFuaa8%2WiF$B+qI1YsE!u5M8%$p$1`jB_7r{CM-MlIH+u-Rx*pu(b!7iTAf z$B~eLeCVZ_q-iOr1Bs%zCAr55GHgsFg4AM$3-lTXUbo_#64D=OQb5$;7iO4tQ&!1A z&muMXHXD;)dt)N?xP6H&{$e~Kl;|ZfMw`qHh>~U$PvY*&)>SmJ57l8jNsIstzC-FD zH#&Ys7uyRGYLFBL7kBZR$WYpeh|Vg%h^Yv#c$fu23KpZ5h29g9G*bAH6#=M}$&NIF z+$uq~w7DqBY7aOYY6>RNx%O^YS#3tvo@@I?#OLt`9(edy7fs$fI++&vmP>la ziyufP)>4|!p97P4J}H&`NEDCfd5DfvF`>#`+nsIrd)^YP$5?3JXg!nGFoJY*DO-?l!udBNOd1aeV0eQVT+6SKd;JWIJ z^99?ba3&8;`6wY7bY=3jRPNzNCaM!WvXk$5kWTjFnizpjAmDk}7LEsvOe1o)nD^hJ!l+_x z%pSF9fo(ag^1kxk%@Lz9yN4$pfPxW_g4U`SEYJkkb#Q|0pq~;(Vict1L_{x~*HRl;C9KOOLXasK4q+P?L3$m2Tt8A~F}pr@s5 zKh;qN=KBT>@ANW+qG$YxDHc=WS0aAbLs8^qO~8_cEgn(gPYlAdx#g2hA*21^fSLBQ zoCzRizv&XGs=B+_n<%it7KQj0NedSIoy)?{x~n?QCwLJMaUZN&7qEJF#{qjX z>p(-m7E{_#3ta9#K5uFT#s|X21!$Xn;htJSxdLJPbqDYZa2jm^p_z*UXx2IfW()LZ zX$PrtZRgtzsO9D+L<#i2oPn0{2MGTqr1DRfQW*&jiViWN#uncLiiEv)XW5Mem)}s- zCwRb_0P~C}yx;SHZ$b`Lf7dP;TR3D8mg6|=wgVOP)TlT1PUKE7 znjCzf(VHOmfb_t8uYNGCO2s@{{LNp)xom5`zWw8)_-~p~(!3P)#?il8a_)A0e7ag% z5KO875EU0N%pKKp%jIhJwZYV?pjTPsLC3Ip8xHF0wcft}!v#^-TiUoT+vdNR@#Nr> zM}2sj`8Gx(@~7!f0~x1bWH(>=!dGpd88%ckwc=I#Uu!kgo-$=tfI81pR|_^ONUfvH!=00jE>~HrXe*#*T-ZdO(x4j?I4u{qRC=`ngTe2{ zqd>mDS0EAzlzQ!0v@e{;G4t}NHOk$x;5oHYg0VSQoWEBA{eXIYdUkTHZgOg+rG?$q z%i9ZAj$Bu4mBZGSmeytLSWg{XHq~O)id09e%MDcJA~Yy>9@?^`S;NM2PW>M~E+kvJ zD+gr}cD1or=IG57DSO}FnTwF=(X369 zZy$ZOi*b-ooU>!NTB#{jw4m`zvjf*J=1et5yz_k~P}RyuOKW|sw|gu6cF(`303S;zuz!4m0q zVObN=1CDP)kI4yHL$vs8qB{}$i(SXUe9!Jg=2cu}vh@SmHS&^*9TY7%+Q%R?FvE3X z5DK>b%HkZ03L=)Oum>YU5*2Sm_h~ri>JWf1PSm8>ubfE>YV@sm=QfeAA(s`b7V4wf@~3w7 z%qhD8n2JM%fhW1Wqll~TNWXtu9&;ce3JYg4%4Wfq?xZ=qb#=+J26Q$eAAe$`$_Io#pK}1Q^^arz zyyh;ITT{90+~tk)Mxnz3{MH~Y;ZB;Q46{e&r?U3YAnlF%pz0&P7R&B^%r+LZs)&yU+`Iwh#GV37+P?)M>|FH-cFv`XbXuxI zFPlWzmYRD7+Ew&f%wartJR!wv%-qh%WzG525bkR!?u-ti-0ixih@A;7btMt%nx3GL z`MXkAbt5YEg8GSff9beVC5TqLemE>=`f5D5ANPOALCdFy00oE4mCX2`)Vngs9G50z&-> z0gFZ;j2s4(wv%i?)cTcz)Uvs1xMQjB-g~s+`VP$+s4(O;*;uvkkH8Fvik6uLf4(Eo zsh9@-*xMhc(lLI8$KDS7QOTyDX%WU=R}|Ihm{Qq#ub zByUQR-hE;z3wp5vf`Rgs=H=U`{ThnCFaZr|uRGc=MyBh9251r@NMXQL2i7Q?mqVm?ML z1acKVk1AGsd+{QyU-$wQm(!N1{Q^Dtg@Bf()5479q zRHTU)11v@pCsJrO+TnyRs=2E+IpRKnif9Pp1mh1BO(_Jp_Mk)g!B_(nXub>w^}Jz@MHG2 zunH_DV5(F8NR`UMRKzeQnI-j#CsaZgL|%VBLewV*o`7E~*Vr6mIwZQU_jKfgxx5O~ ztzGj;T<9zhy^X&TtJ<$R8mt8n!XBa-l@mij21GLXc8m&!3;J5r7=MQVIC2!dWFx{U z9;pXeu*!~^WikcHP*~=8kMl1Gktk|<7m1V_>x3J$C(ApK9;voil%?S&d|L~2epL0* zXb7atH`Cpa%Z6oO$3Q_CRM+8HYMtJz5a)}wdQ2t)`#YVzG*{Qh<;-A8-VeWp8o>5p z$-KV~HZQ7zWs^EaDVOr+nt_>)y%FZEW=B`}L&b7m;5a>H);GRc=m2@)wu0xEB z8cLkzU&pw3E}@6ZCGc+>tqig)+59p4++9t^Cgb#DH@2mLy|4OgOyD!u--n?yh$f;I; ze&8Rtrab%HWgI4FmyQl0~={wq7 z5PM_HijxezC^<3=$yx{IWRX~&eu{1l8BiUb;!CIz-a?cFMXlcp3op-|JX(meNe1)q zk?SVKmP@dM7X@DFCCcHBGnoNeQ~g#N@_z~<933*tE3S)i@;Eo`=k5y+lv4^`$@6(z zEo+pVBrHqQtj*7xiOP3x7>PzacPhw}KO7jLllUo6M2jperB;7?tkkR&FDf>zXCz@C z)yZ5KauAC*FY611OEx1)u9=&*9g$sfEK6g9lFe=CxTL6yP+;pCGG-$HUTc+6Sm$Z} zC~I|zQs*cxB#MErc4SW6iy3vAQV|4QNi2NTQ;Jab`zF=&0h3?)Jbt}h4YwRQkNc8JLGI!t zf1p{!9lGRNThk%qO>D^C@8bD+1&%}82-J14trWx!AR8GM^NDZpih$DGcU(s0xmMa6 zSIvi{{R6rOD1Cd2$NJ&>X#?tcmKMO2^)~u}TQ4V8=yiSf{j65oF)ORqro5PglkXrx{ici!? zj+Dc{Q>z8N`hxT8uMNA<_tz*f{HH(Fr7Y}@L3lIucycg1`0y`0cB4#P&iP##VGlId53s_kD#t&eaYRu5Z0K=)A=7aM)*Llh(tsq!2$^oy;T(R!#w$gpnIv#obvE$ zo#k>9K$rJhr7tSx3jhm{aU4IN&BtdungsFmQHy^fv@ijlGU5`Q=%F1M6UyFVZlu?a zd-qsY(SxN4shQ0N$5AcZ+LlY!(OgUmS^0(L1#DGYVh2!M0XRdGr`A6a(_JZz6Ce}2 zFOGBvue)j~m4yGMiV&<7Y3YJIEuEgfgN;2iZtwTiqPa#!Z~g6O+~SKNmjx~Bd~;I~ zZkFI_)gGY)gBF`Goy|v|kE& z_{ohvY1E0^MJY7z`*TV{p;1pFOFzHo}CT`Mz;r*c{B%G*ymGsn!pgf|R-Lxy!M^(xGkN zpRZ|6b7(25g@N8Egb7?KWI)TZBLs4gIkRqH7+}z>_`XXwu*Ww)HeP2o4ffiDB(BGRQAcXrhx|JHRqfQeZr8f*_5!q288O^ z)+~qGP#8@=k%1YS##frrFZ1f-?^Tj;uCWAlVWjav(YQ55=J|Sl=_8eee(P!A>k^Ny zg#i{6PG#zIUcG?0_%t-mrNeCx7FRV+VH^w1k!Xct!cpoX5#_hwleVz9;jAk$N;5PZ zW|?b#PetrE!zL+_Y~;(C&sov9RQd)~P~Dd!KzB=c(Bh8aE7Q7V4SYt3f$6Z;m%}%b zaHDrSr;guN?vhyROjLu-QN-0%l(HX};P@3B(CSQG0FLo`RjO>u67I3zlfZiPhd%S% zV6b4?%VJEk+xKXacIij)S}9hxIIG}s`xP}6@@x8u?vhy{0v02Pn1^GaK`q%_AGA^A zHrH+ef~^qjY{MPkq{HZa%v9ldD@G28-c8J(GqK^DF!L$CJVVBz_H^Kmqa)Ph$_u_DkSvD?mAXDU=bMqMM4K=1 z9w3nvX7adc6E*FH9L~2~pmzPSkS5Hg{E=As(_#U2ddQPS06-M3v@;|V%w|G6T}4O0 zZ586n+CZHe5sHssRVM%|+U>%wdh(PTtIfsA}q-CYgog6j$EJ=^+36< zZOzK1ZVQmqT5Hecc9LE-18i==cQAQB^V!Kgz%JA3cq5QN@ex9t0`=&R?~cHi}n`ELqs@_gCh=LHmTgTzEcmnc(LF1 zPm|m3c3XVfy)U}J>jJ4W`dck~W%<4#d=SgXcbXNYZzX0PQp6dWt^0kz=$8Od=xssv;e#`TL(>+Q)en3z zDwl&|*nlKUT-r>GhZw1BkHv!YQy2Km!wb2GT%fnM&7iYl4ckWGMa%@7(xc&1>|-^Z5By4P)OL~@^M7x>$t5{U}74@HZz&4o+IkdG!V z=X6@D;96cggy>R?6pcdpz;X#=X(>}WF;0_YfSn+ zFlpZ=!E(tXGrE&Nnu0&bEL)@$Vb36Wd`8 zJoh%?w#VBPnuW3RcZybSD_VA5OIN$PN*5-r&9vY#eSyVs9Mg#m)^3MUHD1%NRBvq1 zZnxq?qpqM#qiD8{eQBw9tO)T7`SLFmY6I%YMiV`}vULKS_VviS9G$}R!%Gylv9D2Ot zIhM@*`KwY~SO!M2oaun4&d~^D|2`3Q(vPeV=PJMF>$mo*68%SuJK1K0$zd8UQ+{*0 z=5BldZ!xS^5l!r7nJwFnP{?bY*F`6%=P+Lcy+N-tOrnmN#5@dEYuG6*$tJsQ+V!~H zBL6pF!O;aG=FFNY=Wh#`lTH6TbrBeJQ<`xR7#A)19M`l%^6D5zKCIJNtZbn2MgVau z6-vr9F$QZg+BbG@GU@A1o*BGZE`RppYMB3hEx=vzC7qmLdaa+=7Mb7Db^QnK|I;C<>?#&t#t;ZtXg@LQo=30DCpl3 zyfPiZA>c!7n|+queDS{#TpZ0@jX9z~tqDsm#mct)S_>@+HK6i_9D=33T@w0`5U|2` ziw~Yx4Ni9=#nV0oD=rwHeH2-vr*FS)R(}$$Ay@@!7;Xh)Nk={chWO*&xKwkkK0b8K zH`KhD9(v#wC9@s&Lh5Zet&tbFI?W9&z+)CDljFB@f-9)t1Fmwv-IA`CaH~r%YgQa9 z#;v;D#h2Gz#7(-}76u14X++Q_wRLR|RZ}-<-n`Iudz_i~9{YsjEdMlevcv9PK%KZh zbD@NmiOZvA;Gsco$u6uIP=GLN6A7lFS-^!q7v43p!md%rCM0QVt%Bw} zgFJ-997w#U>@9B<^sedxlJWDnv+eUS4IT=W^!8AkZ?8vBorRC$`?$Kl?k7eEt>!rq zOOtKljqC_naBIpp=kcemVQ)q+cpfaAr~26;^{Z0rQ)O}TEzU3vMn;X` z&3X^-q7>N?GmRd|O;E2PLa5I8T#aIvvHMWF&IuW4ZJOt;KH$d&)?bUg(nnNbR&!! z9lny!$#$eD3kaJE7QnmaLwW={9I_x^=d!)t$qySt28!6<1x=2N_}F3ypSjV8lzhn@ zWvK*!jR_18&2QK%KUYwb&N6}e8A~z6-DXEGPREqIjhbv4fUtQ`UIr{SRSLsqodI)1 zQx>*WX=n8)!8>cK6xPW9>#`DZbDEhEznABfl702EN@fank`7yErvP;B?S>v6zPP z3p)`Q`J3DQhVJ664dKrZ(D#~AH17HitH`J6pLkj%s4DyTmCx&13w7oJS9pVP| z$Dr#nPEhh@QchI1X~}1R=i*b$<4BQJ-)~D{W@GBX>3A*THrp###BF!I|L`gL{wkC* z)wJy_ceEM&wU6n*tn8w@6Vo0-r!D=Dp4?e9Y!R3FV%R*tEK~pLc9>Wwd^S>Bw};+A zkX#@*ST3bzjm(yUqUOdNk1Te=3M|f=jSCu~nZSpiS2PZyigy(=IMN3JtD38;LZY z2#q6lXajfi$ySaFYU=wb}$e}WfeoQ&p9cS*Sz(taj1#-8H z+QgMKziSJh>kiudOEe?xGapZVf@bnGnu>FwB@%CETJf|@I-mut(SVsctqbPO-ypW< z#A8>|7D>5F*-~t=`6*9(Kq`>FUckOuXskeoV55S~Jp8inFS(QYbN+O3KD`h3%R(g{ z7yklw9R2Xp>^@#S(r({p#TzMevKt=?iw~7?HDQXvvNNyK8%=lc*IzeQ4FC9A(j1C{2q69F4Sm7!<}wS zpD!Vz2SJMGs95@*`-Yr>-D<^&Wm3jDH??WxqkOSvmKkO816R*2tf|Pe`iuy?@z+BQ%Qy>Qv0fKwyDJYHmUx3YtpYUd-L{$2 zig9>DFzeXp&3ehf5oVTpTqgQ}QTYm^N__xZ>BNWmo_e!^klr zo0~d6B%qsfNLl2T>O2m9apJ#M$up$PlzWgl9NUz2xT&Ibj8*#hw3 z&fwhle2_dNIO)6bA>ycB5kizztE=cH@ode!LqlJU@UqN-xpVf0u;JfCxw(%laK z$T@7lTN-8HT!8@KKmZG%tyQaD0jxq@)hP_)Z~>xMt_hUM!mHXzL&IhjbL@hE_@X7Nr49*>6@cx~o98S?#<;wJ zsATUx`VBk0%_=N^t(CiTxh&=6y=0aC<;=h`qxlwb3#%)XZHO6F?7IiBQ&DtvBfBXm@+5iah20UAyEH>P;2eB z_L*Rt4vyB5NhTea$0*CL1(AL9EMO!iPVE(#A<#N>O94^N3nH-fe8s{L4yqe{ImFj2 z1Lh%i$g|BOUjP(?%0AUIyz`MiM>W9LKaa)?_~Cq~(Jd+ZOrrq&#hq6iXgi$_FnsZH z4Sh(bW&@H9c_l++=|mBI#l_h}_ZeO12j9ts1{{bU=Yi6$jZXov&b zP;MxC3l3GShe}72a5hg<(*ZFtCUdA_!Aw>7p)?yle9Z(_GfZ`lZb62J0TXsyc}e}g zTth=MnjZ9*RG`8Bu<9N>Yk=zvgph;ql`cO*dN*M0QXt_qJpkgZH=?pFD!-N!@g%U4 zYuCV)xwlomSa2#sZE#iN`~uKZyTwagmkd1&B=~Pym{#ksBaz6F@-4E+yZANR!)J9v;WlOr6+^wXk&u>&mgW{I*Ky0bCAE8F zIanc(>p|;L1Y_T#1It5ZQ{N;ct#gb{0(6k)S&{f|$HNW{)t00*3U<@DNIpggAoL?6 z*Up;F2T7yh<@bH#Osh*8b{5 z(YpgAIH(FqUDoztIuhN0pz9K7hr!}d7N-k~3ayx1wTN0Rcr z71obB5m>l{kuni@LM%mVi_^1e%Rsqd!X~z;)CZ%VRXR4p1Xd0atfVMhLAGMe#hE$H zwohEj{_CWUc*!-Y+xPPn;NDd;yeP$5BIm< z399pyHG-u1gTl&VU7F&65Gq9pROwUl00n6=$$LM5Dx2Q|gZ1HeKuZ%HcqxKQ;W}p; zl=_asq7AV9^(S47p3t#_)wq1)6k&UdZU*@=dh*4LH$!t=-kvr9%Ki`s^1r_+KYEtI z%&)1=Q==+QTkA-YOr+G^?RP=Qb^vMPn`s8Xc3v^ia_gMX$lkzhPvbM?m=`5uUuNe_-o^n7 zwOpD+@%RbjNxTNl0o;FhW{W&oAul{X@yI{fTaatDF3;Wx1UWCnHrr& z-mUK~lw&a?SQHlb(!2lq43683`||@V@B38s3Od`X_f>W{Hnh7Mw+0&boU;%<+i9hL zXgTO!e$w@-Tz%wi-gnuFtGbf$U)j{6&T(;I)`GYR)+LKj}iPW-~& zDJCX~LZiY=)JXf>?8f>-n#|$ghkcrM7@gIo$1$RvA%$M_B7pWNUNkHVcd_qw|MotObe>GY`Tj=;v4{*&ou% zo@iT|i%n5-J2NyG=IR&`w9*J63&2@oerO2P5G(%3jTT*O{;x$=wCHB+aaqfx6SCqc zMx{bG?2ELV!)bVasPohJ$IhcGNL=PLQkz$1SSk9fE$V_pPh7+Mp%Kcq*OD5-qXiba z9mVIRCdo>fwgXQo&WR-v#0Jf9WpHHwoOU34vXbu$WT(s;c%)F}cB2)wEr8(zo`mo0 zbUwqIUY>j;9P`u5S18e6$(^k|6g^ zr!S=4ea#cMSY$iy11(fHxT6U}b_78wzA8LFp4=?XG3&ZC2hJ5H)4>}-TOP*QK^tqs zL|1#9NvlI6=JQ(*rr@{wwmQ>7zW-E#1G)i8oG(BfONz<^p{BVvWs+rY7|}Zz zj+RP!2NaobX}Jsog%*Fgq1zEut)191$c6T^13Mh6kHVM>EFf>k^;KkqRJyQd6HC}1 z*Uz+Y^)9zU)yf;o9qK0y9WdN@PV}}Q&|g|yXvUVM!JL+;h76-vXbelwb5#TCys=|- z^Z4T9P1@*jgEpVL-nY_%)WDqd9DrLs7=x9WLhDu^fjw%$YGF>gkES=DjO_0L8xZAe zrg=^Ugy$aK%Durelu{aVJu8~1;)Z7JVzUxX1ssp=nM0yE(L+guY8bAc;7n`bRw%jgMrK>lg&rhR#c&E4;Xy zphMd*EUQXBg{?_`s-JpP7;b3}+PyMm%&W#DoY4$DVq)9Z1K9{B9UXt#%Pznl70n3f zd?_Sq$z?aPN5Fqf&q@nMt8d{r$%bK@JTnJlj*LXM0a$-q>niNULP9{$UmR+*=EzY@>M7fENyDcQPCu1-szp7#%2^&s|Iqbb2HRfE_qZB@bJ}V6;RZS-Mt6Ab+$%ui%G$H3hOx6XDY4Bu2TpdyM!XLvOP_@Z2YG;x!YdZey6l3TGCHsZXz1vy}v)Vc`rs0X%-2^ zr@g-_($xu~pm(}{w-|4-zXCW-y+y4ZZqO`##k3Q?W*4nS#K)y)$QQlOwCad8rn=-0 zn*4Q?E(L1}bZ=M&obr{`T>idYz)v5yP-~*Kk7c*d|*w3mq(k4>EVDj6H41-ZG){kR25hw zb+;24bJ(Pa+que^G}7X^D2^g2gLDR{GQz}M=fxFJ5P@HWGa*K3fuMhZjN&U?yT3!0 z3tn}z5RmQ-M7l9NVD-$}3A56Xz0WLbe7P1os46RaNiedHw(KC3aY$0bXzN;8IJUx%a~9v`@Jh#d|!W2^$HM>Cp`UlyojPR2-Tn~~LLu<5*YMDC+o z7wV*Ug$~vDQ#2Iag_Yy_%AQ3((IF1)II?U`9iVYUr4vT0q$+I1q^y-CVFg@xk0bq1 zo?vO-;PfIl2fJ55&X`n-R2WGaPlJb7r@*7&Zm+tQF1j0Q5NqQeuSphsN;Rf1BJOXM z^o@hWF9i2}$XSZRHZJ^r?XZeR6G1!9_bLvWj4yam*w<6x6z)sXIqs6d@5gjv_lR)+ zyWBQeriAUs-(Yk%*lG5wEo7?9PPAyJ7u>bEx|vG|43hn*^wlZt+va}De=4u3fn4#j zZzNB+6uh9C1~3wZfAhtTjL)O+ZDN>cZl;vNNB@_PjpCEobSsb~~TlL2;=M zcWWBBfTr72%&di-Ii*)VB6)afZ=n4!TVd<6TtJ%8na}?rz(lNgp(H*#k}t6=3d(9c z7uwht#-OKiPuk}2;{G7lGK7zw9DS&JIN%%CK^^9jx);KIeI6|n*o5YnxWGC*h8pj- z(RrAKmh!UNrn5@N3_L65F?G&o>LSCR#CrV|?E9nwVa?kEPUE31fA=OORa)HJqZ+nY z#NEQTP4DX&Saba9$&R_f?hN<+26^zVqD?@z|JotT;Jw@GqkCWKwB{hXz{WFAYOL)1 zRQG(^fS{M4*gLu2zkwCc}G12)?W4_{0}1 zav*&7l%gEF5|$`s#I|ZT55$H1lf`p}u8`4L=m$LgDKjDuA5il|5Ii6o{7S@dwh<^$ z=liU04h(cBP6P45%X58*1@VyNjw5veES`m#y#JXe8$2Jv{*S$2*_k+aF0llQaGx6>*o~! zmbKUQB1duL4cZ^k=tq+$C1hTbo=fCQ;Ez*}`&<#oyDS%5b=Zh>?D++hbO zS04BxwxjZ<{PQBfvkWhy<;)OwnU0%jYf0&X@;TX4iuai3cvFl6>32N<<&I4xDM9n- zc?~W3BuXKg+rXYe=3U8R_;dha#E?QaoakUL8_~geW}-aMYZfg1=-FvnrYJiLmAu_e z8!~>vv5_Tlv#3Hj2}@DQQqrcJ9QN21lN8sa%sK6rRC3RA6Nqf2MLWX1d0qK2q#Yv= zIrs?HZKN^~`5ubxfG$H(ITF%A@AS=5z|%aQP1&8*dpO~g=tlDL7ev6S{P~*9=56Q8 z2aC>jCVb|?ZMI9$7;}>+CRhoRe!|ke<^1ugk*xDWrDHvJl`GHe2oZcW_sj=|3MY`Z zGX)cEJw9eK=d8TW@UB>{xgIO*YGnAqJ-gnBDv?*7{XtVy?hc~=7%~NHh;Xd|8#1b# z27B_lq>vMTpJqx<-WYgo*)hpS)l{wb54+Ys(KOEd0MXY>{y_?c3fG^y9oam#VXaL* zotYN3J{x%%zQUh5E0>C>o$Zv5F)Gl8@`yJ>5Bmfw1}Yv%k_k3TJNTsq=(SL&Y!yn%2V)8~~4^Kp6+X z-D9ULa1%|8t=6O6=Vo&4G3FsX$>b1u$Mw@UOl~w!7WXb(vV|5cN~Vd7*%tX+_WhyaYx_HOuVWvq)1Xmkust#IK9Kwv6I0tBtGPJRcY)&{jo*gWiPvRC- zj>Q-K@94L2M`LPHo)24R<%gz|lZVAtFpYg?WORAVM4dFJdp6X4#WhrQIC6Nb_vsJs z^Va3*E2>u^Nxu&O;?2B{_D;keBx{&56+FnS-C*D24U`ja8W4IpKwENmB!(uMA|TER z%Pb5B+aY8^?XK5c(sw0YF}ee%;( zbU=X%b_vawSuWR2<%D(G5eudGmR42$CHV?1R&@)QVxuIdzuhsypAV^g7~!xzmTtc? z4ykHP1I5cJT~;>4Gslw36wi1wworaT2e+llR)n0BT2g`g#2PeRrp)iNMhAb`arwyLBd zDBS~v=bRiW2pCEhkZ$1+4lXX@_L^$h*ey$fZ1VKPnw^iPc)y=l`uCsDlZzerV(gz8 z4lnIslHX7AY8wccAuk#dQx{Nzkw~E>*Xo2qennZi<0RzGw2~g}C7V8E=UWHRVAZbk zwGK-@Ad^T)Jq8JM3lG#uN1Y-yaRM#i*SHx?y225fgz@&W;y3ukDf679bi~o|UIRCW zl2_tz|>?Stm=a4@DY5O}leWO@uq!WZt1f;*nSQ zvO-7E7ZA)~5Q1t_4GLtAfJhM`mJB7`m5Nx*ZVL_+q5K00@iGyU#fov#EhE*N zTBlF3M+Q@7g;LWU7(}T=4r;NRbSv#nbV<_y(SK2JL@Mi5Vf;`LkFv}AovW-PxX4?P za^3G3-TpjBW$bDET`=drfY=&<^7W?QIw@gw)K`daLJ(iPW*ncLDPByF&T}e%q_(`e ziVo(~)bf$Nb&k)TALSB7j+DA4n!ppRS-B(~L>g-{P2Qaos%~+r(8hnFGUnNL#!p3y zLOnYS3nmQ=n4Zi$Qd;?Pks$<24QEt2}+)^=z@Xm$+WR;0+zD@qj2iO%v2Rnlzlh9TfR~}>qP1hzQdjT zi}I1ZS8MR+F0mQcL~Uf_I1$YlLx*HaP1srsankm>p*4%F-G&4ZOP+_wFA==lnun&n zBHFH$XJ$)zGKwN7uOpKxNgBs`aQc}V)P!-W$%J%IFk(=x z6Q~gy)mklq7y@tgZVa<1IA!{ovw&LwkZ#Cs(~~B*DNAf_WNdKid9|gL140-%8*qGx z41L;TYmz4f;fQWOXQeLCNeMp1?i+G#7!)%qGH_vPdeAFWssA79c8h;HvR-_zweoc= zc^4R)oj4(@H$CKhWWg2vP{YE#zxAsym@ML^)zTmsUCDzXQutMrDaLn=9-6HWH!wat zb)oXXGClKLG%hxz1DS_lDPy=9GZdh^y>~o6HCpM9mfYYt?TPp(HShPQH<`&tjUkat zXWQK) zDP8srsMXCA?F;pFU2_a6xv#EHOExH5wQA^%YmATl5wz0QO$%cpSP`pDdimHd7>16- zwZL_9G%!Fh=`kNrPXcdGOG1SWLa8QJjNLKEb<&UP7L1N#Gy-LOOP4qV?(<1FJS-?8 zwP?$2s4OT_5&v4CbvK{NwfOu>e$nvr8md=Qt6_x<<{ni7)X_d}dGOS8%^x>(dE_3Q zO1o|`flFL~k$d4B17G?#E*E-$f`amJ3Zh1Lm<}SE`z*{ob?4c6d*Z27iDrqZU{B~i zzn!hQ#EuzktBYU1H(IC!h;%3pX!#7O$=UVxklI%Bl)uezAD>OGZh_>5Fp%Rsq1xa+ z2WG2XxqH2y(*vBDWEm&*{n>+yk|j10yW4T-GD15M+_5<{6|#)@?EnoBaHF z87J2QP2~T2W7M~y8GG)z_?ysJxZui~!g~!oQpY4l5W1JQ{iXbkk5K8Vt@;od=M$8mfGWB~DQ%^*X_W33JsIGYWj38k z><VAh&c=eE z%n+M{_WV`QHn2F+3r2TiL@mN?;i+}Vo%@9FLYSr)zUxhSP1j?<_mk+=%I)YJVYHv7(VihE4UPGCsV?FPquKtaJ(=YVc@z-0T_+CNDIq@zMT+YZGgV~g?c1ht{#^4(ND zs`rCo5suZhP#JV`i-RMuq1C6Yv{(2!xyvN9>j;>y%>b{g@APAt`MSvjz1lTfXQ5QH zk=eP)RP{yr2t95}yd5kT_jT_7g}r}{nk{(x#j(e>ZQHhO+qP}nwr%^I$F^S0_8?OBRy0xd)?5?Tajn&iB(_Qr`7lV6)VeUJ zt!`jFRLGi3FX%$G(ys}=FsY)QOLg_-h34VwsKTu@&{f@RcTH?T)uLrAX4 zTMez=CR5xNI}$s$pG=a`0;A4$6*}HO>-QmP#Y*za??q%hIGz>8IFImijP?@37!wKt zU}Ok`q+F=qY8qb3cf)9Iz1=AbeR|foYGWnD3>19wJ~5*JAVU-|am+9=ab|lZZFVyMPd~@?Zreci;vosfg;8XFn=kPjmBu1`C1-A&|K2`un0r_N=N9N9sWLGn)2Esw z8 z^2DFV-AXR~Ak4qiwf1>5cyHDm>sj|*?svU8=vl}4PW$=UaIe;cW2GG$KQ@|iLH&^x zC+cw2wa!?*Ft<8XVox_7S{s(LGG6+LmL| zu3%aVR51@E?LweQvx*=|3VDDDlsc%k<53(rem8)d?Ml*Ss|TVcV_e4yPMMEHX6b@b zxyTA4d0+`;Aw?W*jY>&J?X#&$PfrbStdLk!B4;S|DUfy#mR3|wfFO$6mm7#$8w*ED z1l}OPPJ#|2NEVbzL;;@J;z&peTwz+c-*b^M>OqPO-D?SHU3zOxd7Dm3EI<)eM#?Wb z3o?%TaW2QL=ly7v+OI3P?9P$L-`LsY zy~QUDIOK1L@$ef`$^sAwsB5X(5*6f&i{iZ@$C+3Bw*~SCdy)O+Q2)y+e4FAkwF27k z7w#@MRal?-sUxs`8HRW|j$~*SIiKG*$TgPO2RA7n#&5!h$O`MX2-i%<|GsJM1t`)& z^H{a9_V3WTlyJ|J#-iyM$|eA-@1Ps~m?U}oVz+HASeH zst^DGh{!*=`#*V%-%EC~yfQr#003yuzkJgF*dS>i9Q8l=fdBwt{{fN~{>NH+ZvyMa zwuTP>WHSHKrvEsFI9I~j+|c}{8`wzo}=}TJt6aJI^D+d7YACtfVfM#3Rx_JCc{;M+}$3Gt0@FnrIu{Zvw zhhOtg=jcBS(gj0cYv}Q>T!MuE(Ov?8Ab?IgL)(A#BKW5VNdK>GP6FD-@ecOR|DHv- z^-l-+KYG8m04D#{gE0T2wwpTz zG1i-I*h{ch>=m|~ZQFIW({f4r)-&0eoO#j0ASsfI1GQ!%qxha1k}ZUJ43;B5EnNF^ z%yLDzjL%bYI4~l6czW;>saSxDOwj-+gR1+fcY02G9b{W5c97PC==<#s>K+7^D0osE zq{4r{?nFH3c*Jvb!~%{|xwdn3fdHn9(VlEe{R=r)Ix|!V``0J@slM&25`gEB06w8; zSBYqs%)8J8ZqJzt67fvA?`E!rpa;4t7JiGNMBN~0jnNxDyU^@^Tv^h6VfZm;hPDWw z+Vxgjy)^kZZs*~%xYN$%+r+VW!_YGLSNAI3P0ob_?7`GDvvWUN zpWpm{#Iw|`g^YCBinNzyNl`}b7$IncjtA$rX_<9Dxy;}oBbYIxsG;P*b@ zb6NMP|4Iqr`pV(wGYRoCOz?^7C(kWL_D=1X={t9vE8bq1zOa2}4NgZ81>%rSu#|(^ zT1azq%|*_*lx9DIGX*Ke81h&;Wr;GE^5~az`#nZJp8Z!2;pzPoi0@I0Y10_z(QL+N zN3gjeNJ!i>$*i3^vL|O&Q-(o{5eRkakq#~9I7mJ0L}LI(Q!F6BfHBo{qF4uL3mAYB z9xWnSWUPeZARbHtzydsgy|n7MQvzs!CGadQ=u}J8Jv4=DJ>6>if2-&g97-s;NrV6l z^bDIkvk?Jd0!KKM+I892AWcPp|H4#GKvP5r>2L3g4h!+u3+0~g?C$>j4(k?6-@8d7 zfJ8z{CYO+j<6dWEeZH%%y~$(WXvH8HCPR8B8*7dho^l9+-cs-&HD#sE!P@C1ovys6 zEndu#g14J|2=XAwo@}tUncQPwUr0U-#!>Vu@FCCL&NCFVfF6Ay%2_9yBIOylgQx~l zY#zE`Qt1>e@EYyQ*YG7oWr<2*wRRt#h--r8cndLLUZVq{hlK8yQYNFavqGe^rjohu zZ0i&2sB4hzsO(egD6Q10!r+76fzpHKJGjG(htWi9fLLAW+q?#xn$ddgvyccGWJc1m zEX-uvI4?-1>pK6l&j{K3@Bb90?-TO?fiTRWL;U*@rg;)&nPjqI3=L=Rg@b4naZFP} zL`I0`)arzhkSoFlzcKGuqVwq(r@u#T5qz*AD4em&8QOZyDh|x_Q-By@G^>*h2`&l7 zrOB22?FElKFI=@Hf}S`r9re+(v7o^Q3_w1mzQVtLCmpWF6fgh)82Hpz!B&tdkVKkC zJ7EZ?oGM%weSxgY$vM5FNGXO1dEwt~i-0g7pJxS_?4l$4sD5Z#77qdNq#@@z2Zl_7 z3jg;k&_9iUfPg5V4L$w^p<0j_Pyj9lj=(xZMg@OFf@42$cUMDpk3Zl#d);SK7MPh( zRZij}68wHFQYL^x(EJO*ZT<@@+Q0zF$cz9DFe%0$E3^<$Vv+#@K-6P^$^#PxBL%Ys zg9ft*qY49!f`W3SGVkLTpCX*bdSGuX0U|9HY&=Nj^Y{8U`8WP&_uc>dH}tpsC*PyM z?e@DCtpMiV^o>}Kult|*6!71C3IPD|`wIZ?vC*mtu7fS!+`pY1;s`iNFb*mSK?oTn z7=V>TffPX%b%v`fGrAYWxVPhgcXJ_yS`aZLJ z9_Izz1$5FV%Md{gE3!qc( z1zj*)qiN?wne|KU58Cyj2(t(lAtTK zmb72+Wn8cga(jTy5VuJo0_rcE7w#*53ce^P2nCFemN2!*765+M&J)>Z5uD{WUQYB9 z*UP%PTRvYTz91l~yIZl;%gIeQ)jEEb0>md~V!P=Bc3jRU4QbI*Kp?>!{G@P^MXp?S z1ZyKw)`@kog=Yjl+8r=y3mF@t^ARO>oLdUc62sjF+w5Ml8wXi~^|v24KlbpOL{)HoBW%RB=Py=|MG;w->5cU1*BVI(Egd&v zP%WM5K*kR83Oq)TocYztb4wK55wTmyhi)^imoq(b6;J@%A_-^>st_hzDG{z(rAl~z z4guySW>6)Y|mAGi<2)b(+A?wmdkzGh5bI?3~K{%$qNPBT{4 zLR$KIV()6{`}fSY8GpKAbAuQk0TDqP#&BRLAXl&cPDAkE=fx|4xZ8C!$RSgp$jwj8 z*ZGR-eq@B%NIQRN+-h&S^)K5pRn-oA71KG7Hm+oSfQ z>nYo6`u22snGiT8vk4JJ&R;jMZ!ch$+v3?Yu??MXUJct~88HGID8S*dC2Qb89tEVy zgt9mQwob~&F?E~oE%(PotywqDCSO^m^yT~c7ooIQW{e7S#}?!wdW8$?s|Lsr6h|r{ zU8#zeCI;+7)+x@N6uyu@TJSkj(Ug#vzsIHCpWGPtrn=iY-}T+gT1ZJ!Fh`rNcu7l= z;wc?Q(>DhPR;9#}tFge{He70fV=rR2Ain2PrnPNFXe9WgT3;=yK+FSLf(+ynRI-05 zf;jYfekj}x?@9xOxMYR&zbE3|^W_-{8HwOCp7bSHW4LMib+XO1I@yQ+BqQY&!U| z2w@rJX5v0PA>8aY>y{6vzs!y+@FSBhu=B6$-ic;4&=$0}f zMkyTXen%OW1^V(G=%>Vl#V-+zDB}#XJ4v;BVaNG^RBM8~?Fo)r|CFE_5$uTV1ha91 zpkW8$1yx~a#rT+bV^TPN{WEbme>aC*7Ip4%eE69`Kkv>PZ!1qr358%W=-jlb%QuuK zEI3RZ+lYJhGYhRYJX%Zj8_12L>RwTK(BQQa!wGF{SJQDZ&*c-ajEQY~UOS@9xICVz zs@~wbCn~##uMa#yb#SVzCp&-&CF%rUfv58P^m^C~?uWPY{sa3S%C5Key!X2KJ!)QN zV@bQNf>b!MtFY3?i<-OZZK=G?_)_M|-bil6uFI#;OuW6|Z{(_f+9+$;R*T|h`AcTO zAFjnw%N z>f5v{M2J3%v&R{2qHS>g?&w6eaDFJmMQ47)$+N@Y2Xd4f>bmds%d9x?(@2$6IPDI`_OefR7iofrro$U(OK@nhS~hgn6@bDyt{ z|LKMNd%9kUjV;}tO1HA4tE;wPnLFAS*l(}{S1(=77k5S+D;&Y6*ZVS^yUtrVo-Nju z?Txo%f*KA^uug1e*-2EC>wU9|;JF|Ea=?3dI3-2yp3#ZA8WenOv;u_rgb~!Qy`Sbb zt9YhH?kMoe{d~m!RPKNc0J{g;C#I5>g>kof_!2#{0^(D#KPB`kaaN(Zu-i1IwV1bZN?Zi}_BiEB&@CVYt54yMi1VVy^UCwV1 zH8>TNjvE??G5(cYdiF6>ifJcg7BzkA;m-{2Z%=Q}Rh$3K+WVi{QaRV-w!eRAQ|ITG zwV|ThR4Obd7>DBGmzHA*b`p#s9OYM+bIo%3QJ?sl=B>8hBKw%c$-S)H+Bd1J4!H>SKtaQD2#;&$s_aTseR zW_Hm{ZL04L|>m?YA@J0PbIYCR|7+&0Suc;&1DpToowYmuDcD7a+NTXJC zv>Ip)S5dq_di!U6>n}edosE|VMTC|^p+bljxel~6g){gbRX@kc#G;xu@Hd^VPs)*J z>CPt`+|(NSAH&i6n%y=LI~qo3Y@Y0CoTz?fmr~Puivq3f!YOuxKd}X^6l79Gy_m5E z`dGy!8zhG0(Z%*?-V6|F?S z$1QOiPpp)r)W(Wi6EDhuIXdWF)@d{8NSL@}zNXl;0^YA*jV6W*!< zS1YHNO&U@|_>BR9iA!ELrUE|a7}XrKClQ(9I(6>jkgi}0M3V18e>(bby|h$(*SD>L8*YQ z6#+Uq)yEu|?@Vp>qv98M@;!;X1}G5(#3~@)ZIDkmqeb!X%;EhY{)GK}kH1npduJh^ zee8W_#-}IR$#sseZ_p&8IWhXNGR$P4UEA`JZN-c z>;u^^=rIL=cN#DX!w#RMoq&QmAU+0#sRq%@bYB^Xb^^_l-xv4fAP~<>a=?q)E<=t? zFoSox_@+J*Pi$M>513N6EujHN zSWW$oCg08f7sB`crz+_h)vCLaf@%uQ@Vs&!9p<@tp@tRFSrw9{%S^DPmV}pvaA6kz zNCzGd0oDu|F&=X6&QQaC8(6PesmiBk7(SAKj}l+vt`0x8$%NLnvsAX+y1%k>J`a)k zlgH1iuaIk5i4^t2nC6B;u9AsnPjTwf@sHH#A9Qa}UV5Af^)Ry6JF1H*2~nn% ziNfTok1pDqWiVc-h)Mu@rrGcCWuTSp^o;X($Js~TZ{l7^$X;S!?L6H;{xVnTBxdVp zqQb%#Ki9;<=bw=S>pWdL{huw?;py^~;nmEk*h^)D?G*#CZQKIxyoGJvI0*_OP zg4@zyPpL{g@i^t`F{Qv9L++yp7Dn)@zT;3vhKzOyp61f^Ong7Xr6ppLg3UxFt}^D%rOzfXfLMS=$LAsKms3ZXUo^04p*L ziE|dNS1kFX!+TZ08l}0#V(~bYoo+4`*%4?JdZwdL{VoxG&aEc9inY~OLppMv)ioxW zp8f#ZlPR#+l$7_^Oi|Oj64YF9y=|1UJkdBo{#a&Q=fdA$;KQ zn+{V^pRWgPZ0&0`R%{YE4I^5%vmrkp%h+M9Y=Zraocw_YHkR2Y^5vvC-JIfNq^<7l zHVDS%R66L8iRrU1p~6jo0$+O3`9q#4i}*4j04E@js?Ga-yjIL6=X4IX)u9;CG!iXr z6K6AD_?zzz*-9N9_BGJ+0~b5h4mPJe10x^}K&bBlTl`nusIsqZSEO3f1SlX#42!|F zEtzUk>Pe$%kjnhi421+j=EZ{9v4Fnh*G9J%Vvyr9gk}M*a0>ATcyA@q5J8dFN$$6aj%%d%InuReD zNtLH>q~_u)db@wt?ulk=pW1Hhe$?SQiaPmh^^{xjg;<-J5vYP5NwV%@FT(d>ayqzxXgHw`wXqN zZ)$y=Y_svt^*+bYvTY{^>nXn4GZvKFzLk58{x zi)LzH91bWli(+P{W5r6dE0fqax8ktI&^|0B=h^VWc7l9<@!5Abv5DJS^fy+{=b^BE z{F%bY_O)D`#{HNtc(bB5x%PA(x)xPS>Qo83L5D-9Amthv=j|sV6v=G=E&T@iJn<3^ zQR+y5jg^nLCh(jDWHLw)Jk#qQ5b%ev3=aEsSG?|DGx5JaF&*ic$<9vSNG|@~HBLes zRu{w>jWGWNSJ$p#Jt1gAE5>N7+H0V8ffqO%p~qKWFbC1h#y&tH^m=M#5Wo~1a`0y6 zlf43f%|DOGWokjl9}$`k8p5)i+nS&CVZdEUr(bfY!FS?#*driC9%8gTa7b!41E`nD z2%Q0-$GrnueS5v+l3{SKx7jkq?L*km&~Iv|oLOSj;J%ZYv=E78Wz;8)pq0JhSIchr zXe$NRxBE^?UZ`kK6D1U_;N)TuNZ&S+zNwp2gIf_@TdoorE`sPBvN!x0>56GBov#%> zru2031e$j|Ib!#KWe?Tb+c|$ofgrLU27|;dqushs(V*5xI1VTA%=#;fIXGC1v&i7A zU1NtAk9Ysfe0%mccW^BI8C*39*+e`2Q>E&yM9bF@NFYEM_DBP z87Ij+q7>(pi}}7=TlRve%%Z^U?_TL4{`N1c_x;srex514gG>xRo~h40{mkh-#^LD= zZKz{k(57bH4vFtP%NOx=wSABqaYBP%r$^#9CTe3jC)tbF(v;6+j_~$XszxYq!LQAV zoIk*KXx@(>i)0;@yAvx0Le}TAI7D;j&papfWAHTeyiB8gk1(_Rj2&3u(3^2NO--2w zdo+7c!&;I4Uq*z=2f?cHfJ=NTk&ntqUyhvjj2Y7%uZM9#pYw6+3<9Ct0PuT;SHvim zGB<}~LjN`0^nXm_`A60tF50@=CzGpRF+;IaG}|{T765AoHc_;NzU`NM0HP7IWHn1 zKEClv(NF5DZfbc`5{=}evp`N-%7P+mPrjZd_x)<=}D{ke_!H?gBZjK z3P6cwP!`dx;vHOD{9K@7WcnhwoB2rl22wM7_BowMPmWl>_$*(#D{RJpF?YNu&IiO@5-k+t|)2R@e@$nD8 zOW)R4++TQnqZJtr8U^F)3NDBriJeizVO}g-LT-iy8G z#g8YPHEB&0>aFUl?(UWO1}kqsb+C(li0>y|hET|TJ=g*ED5#&eY6(sK^8qz7k!b$3 zw2J!B6t1#)L~gytnv?I3#aC`KpT_=l?7sy^BJ4dcW*GG%S-&cI{bzC^AKZZ#a<-%n zG1G^@ILC?Ubb&JdXlM3&ghri2cre^D;Kw>Oh3k;;BxaMx>vb?kc-Oz2z=iBT)R+*;UIV9)S`4mABng*Ww zpOGKQSI^9ft7GGxgJT{R78TgB&4n|d>AKZ^bBBOul)-1Nxk&FGsCP7$EFd)TUi>$! zMfPjnAwHi63wY8GFDF;JrB9MMMXi>~$*x{1xKVJ|{ek2%8kzY!`PLTW5ire{F_wZQ zX(5hcX9#z(60?yBrvec$Y_`=RGSFr6YdRtt6nUy`v@U;O3=;^u9XjXxnwz}r{iJpi z!Gos_p@bcrd^{F-;BcKJY!xy=z6>@uus;@=-P_O7@Xwc;jZ9^n8n!U3WK#akjdm!< z3+^9F;QRwSuOw3ynk@y9E9s``;h4}cd=%&IHxg!bIuA*1gLY;+FTA>*sco-gMdwLJOQujHr$8Auh(s8S zjE!^~n&JK7Q(=s7#pRhlyu3r+0^gIYJdFglz;ocGeB>DqB`4kr-jRf@Sw4~yZ zzY=h+k9ICSmE_t9zIEWOeBe0`K$WI>Wzle-u}5j)EqBilfA3ba7gJLI-k*y9iSo3D z5oc1n&BTAI0=6sHAzxya14O^oWO2AJEx6`o4||bWc*$E7@}-^hw$CATjU%vr?$>ss3X%Vh)*3NQ|^1qcVI2j~mf z4Fn5B0OSia4Ris_0Bi}I3|tNT2LuQN8-x->8pI033nT}m1>^;k0MrUJ2lNW`7mOH; z6HE)t2P_q=1{?rf6x756wDhe39Kz_8|)$MGaL<^Gh71P5Ih7t zHoOab2mBxS3HU|$E%;;j8~9iFUj%RjECix|7Zm~%0vCc1f)s)hf);|&{}?+ICJrVB z#uUZ|;ExCanSqD^xY~d`9vi+1qza*eC}RDm9{K4%LEYMawp$Nox3PW4o(hW-@y-Kx zypN`uI;JLgy?yITz_!PT)7!E95@@x54<5;#0TZ{!t=0M8gTXBNy-QS{lS!?l@_k$qMHaclV3j32rWf z${l-0vN!vS`9}WpnXi0TnRLq^o&7UUF}iJ9hPuFKLk=%KmKKiQ32!@eie*hkWoYAK zMDY%^Xr#;Z|5ohQ|CRlZ%|D6V|F!iG3x}yGgQ*e6{}%y3|DW6curjbS{NLOEFt9NF zZ~LGB1L%Lo|5P0K@A#i(G5_vW|JU(9F|f-da1vbpNBmDMfMB8j8UJ&}A+XH~I#lDo z<9|lefDnL&qWyRLPv!{}q7GUwV%q`P6;&Kn(4-){Znii1yn zW4qMWPM(wtf{j5CpyBJ57<@<-+9Sqt6eAv!*#tOMV9mn0Khlu9>wgSAF9{f0TqB@t z&eJSxSHMBA3BLR7>-036jx&-V;pq3Wr+@fGMNrSzcBvU~y!)Q-vLaxfnrlB-o*tDq zPj3)!O1Z`Z8_S-4)rA3G@fSRVU&Kq#I^tN)vrY@@VFDrS_$ak%_K;JZF9E7Ij(+@= z`76cTceHk!C3$u&Wd|rjC>=7B;|hK)Y`)*+Z>_tF&yFZSZN)83KiAG}t*Dp6UX z4gjPeivT_Pmt|eUq&1+q5Yhe3bUETYT9xj)#FbXBJTw2jGWcs0FdRgZ1Oy;uF3{6J zFzgM20;mHZDIM=5tEwr7Nd<*fsBbO(o*d*U#?ytFxP#?3D!fF`y)1)KSVW zbADK>P=g9}9#l&=Qj`e*#sD&RQe_-wCV_aP$;}eU7R!d0ce;7|>gsmLRzU*Bvygoz z$bz&$kabg(P97;?p`WDrc|F(1=eJO+< z6e-gXm1^qVsZZ?;;HrIJwJBgaeUz^5H)8fHsG&15AtET^2}CsVa?1)d2sYUNOvq3* z^)3uVBKUA5c#;K8sQ^H!45n!aYSOx#;JPBnMiFkK1X`&EzgmQQQe~a6DH&{pp-%xg z9!$XDz_iCVLxaRsL! zws~AfgN+J|E}v|+dEKx`=Us&UjWK}G(Sd-6$3moyvQ9c@W*UP-#?29vvca>WbqpT= z!mt7-&htC~#=B7(3n+K^y(Yi>)ceCj)`x(N#-(RfHH&#`>lD|Gfx#XAvvSD0Fu1*F z-Tjr>V>a?|#@JPhELgYhF3-lq>oP}t_~rLnk~8o*+Vgu`-;ol!N`D$}HKw}pxx+8n zt6XzDk`a5?h~Gw6se9eJjr>sZM8IoTI~9BTDU|-2>1Q{L`%Uv+6TiCZm13o>0NUHX z%UZtySM#GY`u8@Fe(W&Z=lYG2&at6FC$Nmv1$5m?)XV(#qR8$VXiocs!Xam8qnM*M z6k4maJBt!`PCV(`{?oDlrqDv4tslmFJDIN2`)%54-OsWqc62b7t^*)J;T*6AhMM6j z7CsL8yhMLB<8b7V;~kjd@G1H0OFtlS^~a{LwszltY4k(z)l=IPZ1YL-GR|o{n;hWc z)ZYkwy&th6HqrQszFV`uTlVu6`dhIJZ?0(&Y*M&}3$4AoYgYZ+qCsRjpg11EdF5LD zs-y7!Af8%*fwr)KnrInWRwf^%uVYCgh=gp#{E-e1ZMWTNlLC8J20^I^aseSC;B5{8 z7fFbSB$O2(X;4sya$Z6zdIdiXFL!M$LidU$Mp%a?N_z`sl(;XAjKWZjgb2u*IA$&^ zf~bk{V2Dy)2x*CobNnJHi{^P;vd)&lGZidzTsut{P8Ad$&e=Rgyw8kO{HG zJEmE+ZF^p3kM9)DF|#K%W{z&0Hs^8YA>URo@lh%J=W_eUoR0y9a6ceQu$W2CR_ z9niA$UKcglBm=YR~hZp4pb58tfgeSR1=lhDHFFQ1a3|x zSv!3z2Im@e<_)?LA&bV4@sF6lalPkmmN z`%s|>_l(QrIo_=8;rhba!YgizCL_Dxf4rr_jT*l;4>?p=VeH`{>ke)7CsCH zoADz1*6-~+9a0Je6fq)BVn`5cK1$97ANV_n5sIITG1`;H2(wyalrYXQ%9-Z?v)*Hr zybn@NgNQhSp-6&A+U7`7!f7EXFUEw7no|bkRgsWP#Ur+WE~;VJg-~)c-8IYu=9n~? z$z&~J{-YQA`);wG$q}pOl|sf;Y>GI|2v>YKGb9~Nl2^}Akn@SazUO)7b79q# zlg7ufMriLvif8k>$(#czOjK0He*vfO6x{Dam8`1(%8Wt>L$y(7$T^nfHLtKAS=|91 zDp6sdWC9k8$)+U6EwfyJP$JRJ>FIS*e0bP^Bf6{7Bj__30i7zRq*O^6uNG3B*=;TJ z51TLso03@fRJFj?8FK_D6mX#gyEGn-`dowIU>Gd69`e76#DosLg4>w%C%cc|bR&Hl zeuuW?N5;Zh;@hjWQ{UK`_6}b3nds`bbmJEp>}NztZU8GaqAykA^-Nm3r1a_cb}Juz zwrPHb9ORYN2-n_BuRP1a==p}p!{1+e^LeDJh?p$#Zdwponmfi1Wi-(UYZf3TWP zCv5~z?)g#H^E^&f&%4wn-dRu2(6BM3t^M2^EA*Enuv@&liu8o$c=GKqya4L{*98!Q z6%LFfgQeT@JNiS<~;2B2Bm@4ES$ z_Fj2DAT`GY}X62nam#)*BQ+70BCy-K7+zyC&Mr=gPNXYL7M+9x@p{^m!&#RLTBtx0vbx zE!?`X^u=pp>;8V&OAh=XxaqSHag}?rVlF1N78uMlv6=%kJ!S_`xR)oD`k_j1ce|54kd= z&0f?E2sn|#Pt2i5nz>np2G2?VUrrsKo^0SsS-qgY%f+h2FpGEQf;GQ@Vo@$?g`f|) z&O4y!x=!m=PM@UWI4kEB#&O*HCCYNqEiN3Fw}4az4eQ^Cu3!bjSF^Mpqb|W1y0JRg zBUYk%lVam3GNqHlDE`N&y4AUaCkKyD7IP({*>XXw1v694vt2i0XZO+mWX!s`mYHX0;*T>tyqD%1F}Z?^wi_|G#r9j6++xFH7>>dmL1908uv{PMe|W}f zWy(1olaU00im$z!gN5?R=$KFjmPXv#T}NzM>$zF8=!^ZB_F$I^v{pJ2 zx9a$|hEI{FFcwAzW9XePcw=t?B{ufL^oVejro;HNr`u*2!en&QLtf{--M12KwH6=hRk+Q{FS zAawF6C~K6bjUY^A8^#HG1k)mZxMAcQM)_fk;tvy=^Op1YDA6P1der!>saX(ISA?>d z^khxMf%0uX2^-@6fwkXH>hl&<+PAV6Y&ty#@ zK2UCVawYSF;^6iI5w|txc{l85vQh=T)hDamA>maNftiFf#gR57rrGAErr}*(8|=C= zAGTIW@2`ur#j36x*Y#DxAef_303bDbHbqV9l34myZ3=MR4ezh$|}6ae1~qkyg* zmGaEt60HG3&Y_d!Jb>pD{)H0)fai0X;{%fL>mjcFSV6|3xZm8U0az7CU9&sqA@Lz9 zjY*8>s0RK{L3+(xZwv+G{tO*$nu)8`+PRn2{Sm8B^hjowgS$Esd~YGP&ruhYodCYa@a2%=i$NtCtEiSi@C~iN=nPz<3-ulD&2jP4`G~U z!`u@;{OCDsJE62^-W$TJY*tPp9y>GrJ>ub4Dk8c2*I&}JgfdmDYiJ+V8q(1UU7~4Q z57t36E59eUO1Fu70V$j0V#&O5Yn^J3(voPich_0wc2_qSx0l!FcUCqQwovR~K(Q}? zU0Yd~RZ~%qf0*)D58XI%-LjXB*f3#By>iux=_u8xj+iP%Xpo==G=Y3s%bSX?V1nuV zxH2}^sdk|M5}ZuOC=qt;k?G*Za0YQAcDqwOGyf-Stl@ylx1Y_GbrwaB5*jF;$ouzo z?){D=vC1V^6P@mj%f5Z(0a=g{5RjhPoFSAaTj$5t1)X z>z!v)K;s!^s5sh5fzh97#Tzok`lNo)iy|F3Iscx^DCVLtF@n`_KW$FPlDoEL z&9LD6%|lbD1WLq^gPTSR@3>2wnd0)lc19o%d2&0a2c*7YP1=cW)QB!+7^`w5%6<7( zB;Z#27G-IJygx&7$SLk3IQvfE_N)}pgDXKM_r$7gZf`5&i>$k^GjFq6!#De1>$ zTEmH-hewbZL<1<{^cEXFXR+tcVCZi$uV(iX$(EwSymron;CB|9-KupI=UFkMFcgpW zJ(sch+Gdb)0=v=oqHPbM;~H?Nv>HacUFYqAt+~cr`5|wKHm-B(lpB{`(GLE2ByePc zs)-Bc6m!_mJsg@Fw!|#+;7-pbtD>u%`jP}xvP$vD>bN&{m^ch~U-=Lyg9|aNxUEO$CF-Qx4{))ocY^10KYMqr?C`=PlD2NCC*M zjIfP{Mqin*A#{YzanrA{Z#&?CCtNm#fK-?rlb~QAsIanX&uYOLfYhoo3GN>jm1B{I zr0xwYN2zIfs+`svmQpco?U0H~l~okMJvU=d1F{sjC0yPH>5e_2)=KTREp}WiOteHf zvbb%d;ygV`LNZWd%)05sbaZ%*D{p&&XzBeK7h|ax5eT4hCr=?b)KpFkfsqx@QdQ+X zZiyshBRHd|zLM5aB{pH@I+%_~i066D0(J^FrEI5lbbR9AyID&twr9g@AXrMlI^fDd z$-v^-NXBQui_v39-1Ysp{RkCYkB)&D)P-A*W>DsXyDeb7@8>8FpD?j2RM@=ul}187 z5LZoCvU#03+By?ReR3c=cNTU{=-OM%=S}j+>4K&!@kD)AxtB|R!FsfxQ$xFTs-$7Y zT{~)k)M&Aove=>>IU7Lc1`Nz$(h74RL@?s-qyXKA@S5JDGKOP|)pFV|`;`jN>){*z zbsjl4-RMU0pc*Zc{lJCxvFP;O2oT4zeJF@L5kF9KvD3j~tVNbhcJv}dcleqMJVJx#PK$S4R+uWGJ4CfTy!RP<9%_)I(y-)XFmhjntI zksQOgHJVv|C**m~jA@ajQk;M?sJN{Vr3>|TarJ1?(X>JY@kRj~%(p;U9iU8OiceQV z0s1WrkLz`sRy~R9pG*|q(1xoUpeLlquRk@c4$tTQ9qZ|pc8k&r zHN)!-Q1nNY1O%hip{!i!eRF(Kd6VP-l)wD1*v5t}zUpH31d&~@Z?5e%s`)U~`adW> zJMAUxh&9zQz0VF)lOZW;!r~o08zGAK2KucLs+ZTfb)o5;)*;kX9_|xpDe1r_7 zGLK>4b*BgB-wL3KU$ylLZwbLuabep1)&YQC}`Bm1$oUBPIoTdAB7NbjYTh~%M4v)0EVg~F+Jaf1qJ->3O1%22;^@s5OT{xWB%gi2b;DIev^va`QAKaNEi3wt z9e&3ujrL@xi5owkSov4rq(bjVk)V&>h~r_LRK!wjdA(SVbecy_8F{RFiZvV5Qx$Q(7dvvlE@SzT9tIN2w{$8DGH0{N&F&L zfKX%_1H`?J0egTv1}Cr#j5j6F-xJ}%i=@&}Wre^{T8p~#yYPzAofn$B`nQnu*HNg7 ze55!njpWgPkFoCwi5TvQt4PD zx6n|oDb+$%)HZ(|uGP5WDHxfKklnDmdL;%rMb|^4EdskNlx@#-Ef71#hb5;fk_F!D z<~R{MoB$ZbLIfjb-o41GDyc)}DY#Ui{3=S3BFHp^8Lg0U{zlMWYfo)A8@ml>wA|Cgh*amKOpd+cCa@s)f3(<&`T+~XIUS%z5 zCv=ybf<`EP8=8NN@E58fO!gh0DehFTO5z)cN2T}VT847$CpN`_ zkZVSo!z|BIURgO+_S}k(3Iz*TK%qIg#aA??anI)WbA&M+Mtkjm$QdgeZSm}m0A+U0 z4r%e527glFVL`T);9!7)fz1dKO$N*kqd8nh@_RQmawgmMr3-_LKUoy*J|FAi*3;eU z@AxokpbtvdqC)!)?CJU_;WldtE*RU6-*J{v{M;YYrmG5YkPzUvX?WQn;|H}CYS@J3 zCK#0XjTlk(XL%tbw&z-xE9D&1Zca1_MHX5b8X$PIVBOM(xxtPnRs>Mii9?CId@~io zs5u3OEJa8%+XUVsy?5#W1T@NtOHL%}nEPZ6JhBtjA6+U{h2V zgVTp0{djg_s9Z=&f7+qK!;d<&@#y3^r5b#iCxI^^p`}l2F+rk&658l4S~PH-)VSTp zrX>+?;l2p3i~1PaUKmAeJG}q_w}jP8DntZ}7Ud2^P~gi|_nTX5-Vm(Q+R<+TdTA9c zfyUZR;46nFxW&($WG+DEnNcElNB|y1zx)#R(!{KMXbDHvv!VF|ZuDH>?`1I@YY;t^ z@qj-<+*pkYS*px$l#<5AcWBnNs0b4|vW;`}sW5cF-8>^cKgtT1Z7m|Nf&^U}c0*9n zZ6Pr&kMDCQ$_f-BRU87^A!_c9s>Tcg^?P{g4CWQAQcH1ppbZK6D~-p%3+yDEtHO(> zB=YbEoC<6pFq^|4_!s;M%IO*z$w}eqH0=VAh@Loq9=beZ36Mil4%c+x{mp7FER17q z&DyNXiWa570>OY9R^LZlGO2=sP`he4UV(^={$9U^~5QBxVL zG2LVPesECF5LF|zf3S+EufcL5%EYQwv$ObkIg`+H%ow8i&bVVZD!U=62!-ObP%WPDo5kQb^!P;X&``!L{dzm_Y_z7a+*N#MaCK?vY# zqX}=cFIioizLy{`sXZX*OF1OUtDroYzPfIW4S*up1I9?krg1_bjRWYr5;YlOex&S{ zndF}LBons!$;fC_Zp`s|9tL4V#?zr%F(InD!J7JgtQBxW~%+2_e`Y=sZo`o~wi zaYV>SLjgk!2J@Jf(ekD5Q6b#a)R^x{B1nIutLrO+59Zp@zWH3t18fszNv*Hg1I>Y+ zKbL<$#3+j+FJ|?Nff3oK*H+_7cy2XqM_$GQU<2B_A)Ml}9AQ{aCpK;Rjs5zTy(eu= z(IaPt&5zSzxtM=wH37mX9WExJD15;``zTVJ;IlNe&K`zB_~CY3zRDL&VD9lj%a6LA zYVaVgIC#Ycab5s`?q8q_-M%gJ<^K$FJ@55Go?yMJ*a9HHb95$fnX43}Hj^78L(v^$ z5@m9cvP>=Fx=$>v`dMxHUCOQYarM6pcZVIsPTe1VeZKH6+7v+}Of5~zNxCP4L;=;z zg@k8Wpk%b=n2%qJxuM@GLdacXri zs2JMEqlv82(j&s)IM$unkA`OFB?UK!+T|*`HG}x$BvE!oi1oh6M_v9?AVk{5m5D+{ z%mg-;%DmpL3pj)JV;k?CLKZ+#0p%}LjCTXe$V=oQT%g&2WAc!+Olkk(PlkfNpX$XJ z7eAF+hyYQ&kPVg%zxp>O@`;sLbTBEv^tEu|BMY~*E7pszOwN8i$dBd^m0FXsriebL zZe3nV3rr*(C_g2*KE*bri5GfEOBB7yer*0Hu=!swM}Ko+zbi5UO{-HBgPV~vx!;aY zv&Xlh;Myplr8$v3+)HAnGn<2Tmemgq2FB0}#elkG?V}gbm^8{mzV<9O+PrgxpgG>; z!08q9qra5|RBQJocF~C2#WW1=$}K;?L|unh<@X@Ke(ZD|TO7>`fiMT+D<*j} zoQYjgi^=cL?fRcPtgJ_LiA%igmS`3&k9+j&d#WPEQR%RU1C5Y3Qr7Kyv9s`y>}o8qa#>Mf7!?J zM;-EY`@Y6^PN9#ygvI;N2S?L5&w`Su_$oCy)s=qN2Uo@uyW<{=X?ZmC9qm==v!z+f z%3>baEvhI%;KSqHxFDI*(50E1^^VzbKc_akUznZmmI#6u6xH1VRK0`Nyo(+=YU^Nj z$)BUzo>g&4-)qAifc1t$-0i5gHD!^;s~}YRRVH894VM*u#ttUCqS-Z^`nw(?%VU%? z8~_9;Mg&waQf@m#RCr=O1$55jEI`J6yE$C1TMk|EE)orP6(yT3v38Zqax~6{itzMGrmBpX znW!zRlt@&U22fT0%3?-O=gd>>f)(}oD4pXD&8&S*9Zmx?FJ$dW3V)(}4tl+|V6i;% z)FF>8i+Mfr-uXYWHtW+@JK|V_Z_fCb;^KU5Y`B@tjp3iuf2Z*x%Zq=NYL7QWmP zw!dPP-6eh-2N-uMKUK*a9q@JU_X(QZ`oFvA1ioMF-k&s!t9-K&6_~F2n|~?~RfLI* zbjt%mVqOF728J7f)}%~?oJAwL)ZmFw#2L*NwtWb%w#a^?$K1GQOTS-QWobSM7@j>t z!8e8sYq8FMe?w}#NAdB4I*;?RnpWCr4^=^)k7C^E?+V zr}1mg+FX34aL;{Iy4-fn!Or9lVO>;gThDez&cLtPmX1R6Q=T0U@`q}Y0V=MNPvoH; z(_|Iiq?y=%oF@l|SQ=e!o<%3y##2hxRJ<>pGyeGOLpod-5Rc$YCSN2SeI@Aa111l( z$`}fd)LFbD(Z5HSRs7wFI$m;R2&av8pQ1n;jyX&xY)APU{|hzr+r`1o(8TX(4>I=2 z`ZEEDEKh>#!F)`1G&J&2kqlS`kY#ofAz216boa4nkAOP3{}`diZNFr_6nEX+B8JV+ z$@&^5pe;_;?I|Rq396Zo=IR8Oxys>Bq{?NfgUk221!pM6n_*C+{dg3gG&Yd_LMtBq zYpKOl`eA-K58hUoxy$91U%$ptXte+23i;IqSJnpV)l*oC<N(3e z*mFMBTjiN7j+eQL^U1h$Z)x+J4?|hsn0q?^+Te<7ST5AZ@DkH&%v!CYo;m|GdRj08 z_+EFA4Q>Ci-f;{yid?3L)%~_<^yBgLIVB&VQ`cv2*~RoDE=A)^>}kWEiX@TX z%G-Q&no76!`)k&D%O8X9`Ji|CC&)U@1@7`>I-DK7!@A20i~5x+uhdey98G;`?I0Zms(2tkTW4#^p@Pi9e1j@y^;&NGA za;r5uV2tkMV~;ZyqNNXAX{LqjtLZdF*F;FLSg^^V!#k+ecO5?Vrak*Fs!+Y1nHH=d z(6C4-io?+nfmkNW40oAzO%ZH*)-ZAKPV`X0FPx?Qz`fnzra_DJti{+~S{MV1FxrC% zhyaCOU`2N-UYNuCZ2m~MBuKG-+d>!9-c{w<$juSnQynoh4pN_RJzva@TZgkd_k>?TzMNS=z8U+Gs z63MFbsRa|ycgv{ZnsXA1iB~Hc>?tla`|f=dCJ;>@{E-N*tX;kWLull|H|^tM?P%XT z$4YP4`P2+BJDG;FChzHtCEYgJbNoNMd9`y0x?#xkNLJRNB9p9$ z5icoqDt`&HP$gA^^+Zxx@w|3%?RZNqvC8$Ur>jf#?XmbvEzkQ-YI!kH{Qw6yYf<9X z#7H}mwK_ewhS-W0#bk#8b^!kTLM80&C$9~mP2^T3Qie`)Qa#sFc3~kOj4Yw+KGfnR zcjahHSBX)!o2^<)EO1e{F(=kOK%Y-bmy*Z4=MiNhPV8k!sDL+6x3UoWXwLVmc~pXJ z5&krke`IX!I%wc&2=^g9-NRiX6={rdVfSa)ji9YJeX<%5QqZuf7`%S~`l)$4+r@f< zlU`nI)sc?yg0sNBf1Ozzq-;VHNCJXQQp)=zDv%(yM}08(mK@(4J|K>i^{__mTCFO1 zRA)N50_S2b{k7jm(zbB75^JO8`C+WIhJC+yum|$KnLpf6Q{tAwmb)$3tbHx2MN!I5 z_XX7|plOR0aW`=ROfCZ)V2}>Vcye|E@J{h7^qMZ2Qrm)TUYkc|E!WFM8j#gu2)-U_ zgkAr0bd;`gL46@rP%bfK7AZ>duQ^81A&v9BeD!RziFSCZDkhIb{lUyz>5&bU5G0BjQIR4Z2rsnS`6V#r>-uZx|{iW0$aBBz>;EWivMwtBWv$sEc%+@#M{ z-TP$NR?f%o>Zc+S!EEVrD*=>6F4A%fjICZXr=lOXP5{Uwr5lBmk;3zEtUH}dtfzXp zr~|QB2+8{cjxe5oR6K2*61=OMUuvk9Jk*w1M|x3tBC=19Fmu+Y*I~5|V(7{SMGu^F zOCV;hkjSH%xHaj>Ge;lowaTcAnc2=oISJ(B0^f>WAK!)$?$zGcOd?mCB@eKTa$+kf zBOw{<-qhlyw|6K-hr#~lu1mpEHYA@gAg|LPw@73i()D-ANLbRKTda{GEkj;OiOyaF z0IhmIkOp|{XS=gBhPsqn9j5#}#Y^^DMbXv#0sbC1WQsShDshUzS(9|mlCZHY&DiLo zp;gX1H65E$K-+u({awy|Dr$0?In}-{s#s<8tb~!K3r;l#>h1{*kM_5Q#QnjuKP_6_D(q3-0Y9eYR+<-6kvw zzi{PNxS8)ZHT8z!pE`9wxzQog&i|yqbjihX6pIs?wKT3beo(sg1>?9+HR7Zz3#PiN zmK0e15%(7L&Ae;jsDg4`Smvj!RC*z(VcSZJa&|uT35@#HbN4AUx>7h8jNY10W7q0k zs-1j!8|piY;OwULglF|UwWoFumlfEl>p9`?=?KIMMy~m?gq9aJ^_$Ut@f?u9=eZba z;^m{h)XemUb=H#)>lv5dQ{;d0yU-rDb(A1gSW62dX$#EvmzF#lfM;z%k2v@*kpgv5f55X=FB=hIq_d6LMHzfEJ-LecoX%#$$R~F5Zi_7>_h!i3E znO;<)yHLDz*%3>USe!j={)rSBK-94b1ng*Jvbu^4%T|hXP}hp`tdB4*h!^BccS`&I z;r>)=>rFNjR$3}Zf1LOmUe`TXTh1zb*m8MJY`L0^ALqHBo(~2(J(Nq;`iZ{YxdR8|1+0Wd5QM1SON>^NuRL~)mW~6hJ(hUiSeUW>yJYHAxod( z#jlPmdiZJC{3LdUmosmcN=&HkQIYmu+fr8y@n16P=2@L7TT4~^!0#7p`wrYt1w;f( z8ooMMOYjvlJVX{P%DqAx>>9S)!p#%q$x#e`B;99)h3EnT|B;Na70X)~4qD!-;0zek5lJxaz+oDeh1n=cfW{|eOy~(7?0%Y3pQ~=oE{n6vt;le& zfLjH>h6X+ zU~6w7i3q~-YFDrAaf4=XcUju5c2C&6TwCT2@MIk5vBs~FNn2;F2IDdebTH-E$~)%K zTxXarx}`y4&8*BY{Rjtd71`^;{{|}?XX@0P!l* z94V}WEED0YSs5OBYj)zTi2>KKSE6u!F-R#ZtdS`#gm|VspG6>o+VUje=@lq)y(z#T zwOSDCw_PbjSQ+un3ls8&3#R|{IXHQ@mg<0HF6Jxhi}kC1v%69O@T7FU0oW;u6k;VS z;AnQ0z*sy(BNay3Yhh(6^)_)w5kW8J%FX>g$AqPM>aK+bvWdB*n}Kk!}X^tR!<*Mr>jG)cCCE9 zZ(T#LZ@6OPhWe$l&6e$rx($P6^Cg$241Fy{giBToWc>`iQ7Ag*$x%H4il*^4hQGC> z-D&G|CNkB5IT&)Ws(_^jPe!FaCm8?vR&SXdUXRTSt`#E`+j`UQC?I5V+5ZGd6bbEf zW7?#-&PqyAAL>d^3hm~5?Bwjd8vpAlvvtz{_&&8_C-MCi#n`V<7pRT8keaI&me|1 z4Yv!=VLQBNT#W5fLt6>fUtb(|0P_(EXUH)@!ppoZKy``|7TMKuj zz)vUoV=iGIBiLZko`-sv!pB&_hrFbu^^A=o-@vSE6!&dM&v%nzp4C8vV<`y>wMJP( z<|d#fu-P`}VcoYb4(kuNr{Q;62104rFo*;YwMbd3)y9jInlGgk5`9t9K~yJ*w6Z_M zK$Wv{4;To&P?E-)1Q>)iY;r?ZFjy}|z1QY0eS_QmI$Qv2-?=?7q3Ohhp*cxFWE+{~ zWQ6IgF}Cm>agG~Wa4Bb_+frW6#biM6dcNgvK|S8IpH94`iN3wIz9NdC8FJ1*xJ$;Z z)(oE1pk%Xq1_b$?6*%?GrkkB%%9H!F2Vx*oxQd*U@Njf|k`CX5L>+3_0 z8*ulhz1i{ARMl~kU7v4=_5qGuOWopUwcPu)Tl~AF(Gz>kYb5G)>Bj+%Dx89lq@%M+ z+H)>lnL{q7uhhJsIQDQj?@fhRpj7E8=pV|R-O79)`m;Pk@Qnn}(d0w^VUS2zNKtkA z4RBE_pUPjmX`hL(mE$4+YqekE79=G45p~5 zT;j2TH@^COXoH$Q#urVBZA$ZDtR4x6b~V_o<9n8)lqkj28k2T1+AM#Q+;JDGG<`-q{^=^itq+bvvemetPiXLfzn zyn7J25H*K%5xsH`xTfh^Z?$<|mL4}&RinL*Q=l{l54E&}wW2hQN1AJBUrx5(5y7EJ zn-eFv5cj~V4@9mmmt-J0G-hJZHT)1@kch<6p($SI>X3ybyIt3kjwxt3;5!`ezi^b? zX1RbifAsN+>6cMtC z-j#NFY%R}WLu=3-5;dA5K;F^clCe%{F%Ewgo|nuDcsQY$F!R#rddXW6-{c3XiDH#( zBb?h4eFJa9IpgwFSIh?aD;kp}U#kTdT(4|26^p_A)H8==_4I*-T^pLFFm`GSBYL_I zPF7_Ppbk+I`V*AHtG-)DXoCJ=4#K2|@V&vUV_`L6PN zvb2zTl?ESjc&Vaa6OF0JyQcFP*%3UC;LY*9GF-#a(}P*aI>_$TVt0gPYl(62>5J<< zcJ2wIF9{Zdeh4}ZTa#u`0miYkytBFk-BPL8lhGw#gLQc4dz_r==~LN#oP_mK z)~2L9^!VldW#(8`-nLx&?g4I(v%`8NC?(i2GISoSgUMiSh_P`qvfB0#*zt9LyJwxt zVZeaFLy?W~b!X0;MF@fe(T#&*mkKP9qrS6fIOe2x9WuxPKq=$o?e;K-MwuQ-yekc) z+Hb4nrarEHFg&t68CgG@{n%jaPmf|+hiM@RVx4^n^QBbCRhnL>Je$PQ`w66cnKRTq zPfm!y{yis%vQHc}yRnU?CA^ZxHH2Z)n)m?d%rAR!L-bjKz6G>C~+DJ4H}0|EU)0tqZ&;lm`GZq-g z!*goLN744PsW*cuHFC>u#)Oo(u+$I+OJe#fCyh1v7&y$Y&u|gqUmia?l1C|);-|%E zalUDTtJtTLo#6h7Z=;vL!ytorKD;sYMXNU%|Nes{8aBeM&%iH_gNjYw2jv(xpPJiM zpe>*6Z_{0hvifji)7<^QHtatSp)~6(jT)w@UeyQbRQm<}&8Y`{3%fTkceXZp{brs{>>n!{KQWQS|q1Xd!>fR*1S31*TVB-KDz6*|?apV>xyHN4^vQusQ&#q)Y2Lhu;1;Pr)zLHk$ zGR_R)m;?u$4Lj%1jUD^4W!5>la>?uKWv)$ynD&vhdjqY!g1sS(xCpYz*(>qQEW&-B z2h?TK?KRJq;hnnnbVv+kbgY=^9*WjI1o2R%G}H?bs{bIP+k>6lMY11x>^Y*1c;>PB zrBcOnCFHfkCx|0QUIWjwmOC!HCY(l{mYk;UIHw!LGNuZ7QcF^pXelsF9+xG-o;L~Z zmq&k!H~0$3@uwzdi1KnUREQodWJ}6Ox+uYzaEaMDoh&#$dV10zda`Lr!X>6nKI>)% z`bf$I;vt25rlUxkcN3)=4E)(N(OLFuB5XkWMwasg?CwaK!zxkg#+kTFtBaySfj7oltAg}A@Zcn#|=Ts(D_P)Kpwu`9hnw%NhH29MFcBL|`^S)_!JyU4&89`2bmcE$@j08W%&I!~lVF<-@(^Iwh}Wqx8u*&w zCW696z<<;Cduez4uvgQJTmsKM5j7Zt2b4d(HNB`0QQ(8GO5zne>S)-8wAuheTam9? z=J68X(7{hH1&I%@*}if&gF|=Ajq_R0U0l5I@+==0BONscD*0E&yw)0r1jm-f;Z+&v zdObcFZZaH)mn*H@(8APQS_$epKfVgX9ACTW=@s|hcz`7Kh2n?KMvul49DkbSdNil5 z2U8nA7By@m0G7r}=x*=?QwV@R2ggcGKr{Yw0oe78xUvTwK)Bg+r~%DWDoJw}!_O~{ z3gGqoS)9djBb^h!(Y*=We%8>18vK~YB2V!lKLHc;wRyT~lT; z9hJ*U1)O+M#0T9!O_ye?_?%(Q^|*yiFNqKZ*l_*uAvL! zElZZVm&w;1+LwMzJvvz4+*1Ujibw+#XUR2n* zw7an#P=j6DE7Xk~p?$P+DUxm7N!RlpE0RC2;|LFCTc&D6Of)S#Y!}^lQD;V1mwRy> zv%JbS6T@4Iv+54_)x~DNd#uddJNO!=QbSkh&AE!%xZ8eGLExRO+fZhG)wA)jmu!#6 z^5<*+Bhe}tck_ zCdMf{$|##?#1D$Xz6*fW>4>*F^q)qKD{3pT#!I zv=iXK7m#91cv;C&6+ci@!8t&VQ2eRNi3u$+7CI@$Hd`PO078MOd+y*nhm#EBTYPGZ zf!)Nbc7b3l-q>jcJ)y;P!J-X%eNrLjkoC1*9Z?nhF zd2G*?eb+d}L{kKm53DkW6xl+-enLj32Bo#D;2Xg9_wY7 z=#5n(&Nry7TYjs$`zP6_kJ_lcEMtLZT!wWI2H41wk zYlrUcow>PMG&-hivQ}eJYw>Wc0uE81xb0{uv2;qJ)HO-y~5unrz$Fo0r6Dh)xBxA(paYiu-n`jv@+}eyYHzCabW_DTR z5^ynaV%$BggCR4E$x`USx0RiG`^nsYlect2W{SWv$=iU8P$`??Fb9T-N4#&*%}QBx zYjb#0EtyuGF*1b8>bq<04`9dlmH*e(X_uiQ+&xePVJ`~ ztBS>HyFbpQsEpJ)X zgM@dq2(=3@sUa%2#gac$y2Q{GY6PWqBDc?6w@FxFHl#1r4+CqUZRv^w$Z?!5n65BI z@DQS)8phaYVgk`I4%y3$rk*6Vev@39Pn!C^I_QcS%jQtlTzJ3?kY24EKRnA>-3TLG zg9<2)g`oLxKRO;w6tPx(XaIjy)LL(Y@Jl=Xdbghakpm3-3O%*7|{IOT25KZNg=#8EyavP_R+x^~ItC^k7? zF&zb2xf4s=hzt^fg&xA+vH<;HL9Br>s%Qs7rCjzCM_v1%a$Psw>_fv98WiG`H(~JP z^521-mAT5XwAlxo{VL`P&7rZ&7|aP2=N*4OW-V^y$^hK*GFNSii4bz|up7=;z55vf zYcOOEV)dpOx)aE7eK4Q0esjWd!;3`xOb}I5aEH5}WKeUkYJh!kKK-@{!+|3cq=8YN za?3^t9+bNCb4|6zE)W1}W5G}Q6a~nAx`+V>KHp7|HLiAQKb2qOt$|Z1D8?+2dUEaRluQ)W%^{MZE=6 ziZn-_Z`I5DQ#EXylhS2iL08) zwrc2KRRd%k#+Cui6h}57hRE7+hqXqe(c7Rr*fJBMv&E{vH|NhEu=^GEIoNm4S`|r| z%xi`D8L-|@tpvIPm={i;!rrZ70(&Y%jO~>1o&&~sYM!1+KBGA{SOM2JYg!lz7SW)? z@Ug@gU{SVKo|CkhXCNg*|l*4OX zJE(Xk9j3BwoxK^y9OKNA$wTri^RwC`dupGaBx+LS3d{>suuH)29$+9WHj7@ZYiamG z6p7m{t=b#6ma}QhoAEFe^w7F_MK_?{6RT=T0}3o~aMx;~(&@U8#nyV*zgFtg{%We2ZmZK8N#0E8+bqV^IFf4*gL%3$0C zeKu;so`L}#=wBzR-}BCg@b&u8+r520x(Di=q>I7jQq;{^uoS(jt;NP8FrnLz{IkJD z;Z7Hg2;aLj9da%x*yGq(i!D!L2@o3fS4E1kl-!n0Sq|=Ix_KCQ&;Y(pG?<6B!E_Dy z{A!i`CglRu38FA&4{NiWxmRp}+-Oj}ba@1Ub{{ps^$q+Bh&BMY{70uxNkzcVuy`%zk^C{Gd01rW3HKC05=L5)Fii*NqP8N zbj6+H{^5c9M}4BW$S%1|_)Zw=%5BB*&1Qw+zjGK;zV8I(8mIR_Mx4HJ{xOj%8D{WQ z`|E39IbNUbf^h^LQ4 zONIgSUt-5@n*F0bXj5ppzTMbfJ)Bb-Xt(P4r+rvEd<#`dxD}I2Xd1a4XkEOaBRzk1 ze}muG%WmP+h3m%VyOt-$*g^f@S}?&c;Z7_K*CJxkYs>zWSIF?!rg?OyOW52f{L)xa z6t`46wdFK2($6d)1-so=Zh5Vlvhr6&ybpQ`^a7n}xG5g23NtZ;+S!=`oXM0G`q4x$ z3yCD1gU7vykLXz)gt05iq=h*XnUsdW)0g3Hg;-U+Sy<=cx$AZ&b%{%xGtdTEJ0I>t zkc7!0;?vI@`79UR$SUlE?>}6iB4;{#Q0u^I`U=-KG(6kLJ#U8cFW{t#(&YMtxA)@Z zAZbr!YiVA)DxM1|vw?b1K<9dO@u)c5vOd3)fW(t1>Yl6a|Gi@ufE5_P2{LZgH=xR7 zKEHM8B?h=V=O3O1c)M?J%=$h4{bjtKB)$kFHq8Gh3Ao1NM&65nrqg8a9@f0oPwJkH zWeWQEeY_eRt+c^GRk|RwjGa-#ug6Rl5o4*N!gkmAnc94^&a>aKHRuLS5q$ z(rE+h?|npIn9wMp32lQ#T)1_eVwostF=xQ|#o7E{YJb-+t`BOZKMYM(X_IxvN$SlZ zSwX4!E6end%~~IXDqA%wjJwIpFr?uO5AQ;YM*^Cmk{G*h@0&d0wVbY!(_cg`AQd=P zW-l8Lox4f-pDdD>X-C148Nxv|?}Bq}HNQ(Nh}AN7+p6loEBJKKmAp<>6Hi*Q2Djxl z7L{8lOzi#-hCA2I>c<==_g9S&U$>grU%zhqfSnojJgEh64--NC7P&iZ!Lda;37LyL zi-W#Q1}iGezCbz-TaA9WN_-E~IGrTU%$pk&hVzDUsT*pxE|)l)(^h=oWjnQ;lcYi9 z@PCN~DZbb+zHUn|XSemWt&1~Pbizg3SKrm;dd#zz+zf7A$1T>K+|3pZ=93K0H|b(O z(qK=oF+r{E0Iu4lug0RVyJ1)bO>FhxkI%C9OfRNCg%z=f z{v>=Vwd?HW7n(9I)gog(kSmrJ|8d~l02-l>!wnH0aMa=U6s`pDFozk1EW(}u8GPv- zL6DPbox=Jd3P92uc*CN(Zm3U~7mhiQT_B6Gs z?n7#{LO*lURu#QB>K|+us6ft_)3$YoN5EWdC@s{6%PIByL}MYTiB)%LW0k7C&#tZ{ zVS?kp^{LbycF3ixNl+QPW=pJNPH{VJ8iT@~$-1RD+6tW2rMvs}fe#nHpJlc&N;liE z=n$-#H?Igv&McTUAv7_sVwWL;r4}} z>vU8t%b@awnM~V1h^9Y^Thp++BRjQb=1W>6nW$!_ATon|)jTcDU(!zE$TtobnLF#( z@fp2XbG5WNtlCzL`qe2-uuvM9RvKQVuNmYWWsG%>EcSFUVyST&b+}z!faXQl*_e@^ zFJg?_B|1x{Dw6G@j`k@{>QeLfVqscRm|0TiSuD!xxZiJc zvda8?c*1}5apgz#op90#9{NbCo(3~_2g#9;V_5zhXd zvgU_{;cr&ro<;WcFISU%ctVy_4(>^ zk7n>W4%VDk&w^uY!ru)+g92a={5z&!i^b_tw1^3!^^lLJ(2}=37@}|2XEZq5OJM`} z|DFDy3UhpW}ZrGqJI<{NLe!vM{p!Z~V{y1L%L^ zf3nv6H~yzP%fEZ!|0VvX9d@D_PO#VifdAA32m$z?@SmwBfgu*qAuRt5{~2KdLI4`# z@!#;D;?}G-+EPz@JOG6fpV{Jxqku+wBvA&300~23#lOEHM6~H~H9gMte`cJw(dRk(OC}LyYdBS@(d2923iP5t_Ks^(fut zT=R#ff`QEEwkQHcli}jMdi5W|E;yq7!DT*d`>O{Ce()K_5wSi=R^!_%do$s?fo|(e zw86$ZBBL4MlZ}_<3&IcF^Z!frt)(!08-3Sl|<4Gj8c+pHSL1R3pYtBn5P}x#~_dJH4t^h5M;pEN)ZJ` z+ezO`(|!w+EdHvhN>_dQ15Y80pa?5Ecxijw#VeZ+1##UU%u>lbibmXKoQeMf@+qxv z55@6z>2l5Vy-wIuGwH4L`gtbATs=?GfK~fqlNI!=FHsFWiBB#n?sCee>x7abz3>NM zL7{%HE#>V7N{{INesxK&OaAuyz0-mym$&#)e%o5AGQbn4o9>(iBv&ozI(z%O_8g}) zwa6#sX?G1CO0f4(O+x|50svkBkS1jC&4;aap~}v>W}CMG9wEqvlfNM5?pU|KOG{UE zJE(1ym_Z89V4T9Tq4gmnY>rzT15oUh#?vg2f(u~k<`^Rc-N|oXH$@LY7XoK!+!1HX zI8#+X_8N1r#R4_e+P%5V$~ z1m}AD7gsQY`1{w!aHzhSA;GRl@MAxiWGEOW6^2O%EW>j`04)Q!(+d3Pw*fc=LVyhb zK426AlMWYvuvieF9}(=2J2r(3aN;O?C6&P3IF%>o9Y=9N9nxAbumKFjO0ZD^==RN1 zW|b6zLpa}AmFm_Q$OJ%1%L4JrENYoF;$%-wV9qi9}tm#4e@xV{O>mQ3$0Wfx;=58HN za_4V~{J(n5eFc&ITtBx4Z$!En=tdKzY__ZX`nR*M zuiyd@VhS+i5>aLxf=VunZr==Y3pDf-RdyS4?ff{m5u(B}ohllSd?#G5-+Q*3+Wqg_ z_&+cL(&L2bJVJCVK+W35e`!M{ZllbrkrScv#k;}?q9t51Fp;!yYuQCO% z14I|)=#KM-{Oqs`bJjRn)&9Cx(Zc{I{?+4_fdmVAKMz!kc6#5_E-v3QGSrzD zT7fc#0c3u|Jrqmjx=?>W{{%J>_y!@m6dviT#@+N;Xm8b(c(m4pekwKSD@=U_#N#4f zM41H9rxo|ntOmkYsEKdK0_x;bw>>cdyQTt1W>h5e)8<;ss}&;hd5MxE59-LL2!zlc zz+e#YvAmHdOh;FN;8OUG|%j{w&Y_!EUi z5~$e>41E-g2L#X=y8t)_E*v2XurL6y97C6)zzDk=zS0-`pN#u(_B zl0MUp1`%FH3_w4Cx+I7h6?IDJF1(6>=fCR*hZf=#^gDv`4!24Ng&4_086XrXM}wrm zBw3l^mK-K#rH@Og`;GJ)QYgxq((GZntqs3oZfzbAg21PkB0baVxPtrGQ)jj=eap! z-@W?k;qIvp(p&h>TmPV^5>R=hJS?dd#0u@6QJX+~++b)#n|P%n^tp5TLoUMG_IfxbY_* zSpF178XTBZ`wsf1HRZ2pjk8~cgyN0&o-e+~nQ&^=mg{Wy4m7q&Jixi`=*iglob?D{ z$J5Cv`?jIF?W$jk65A13R_$%!wbxUy$S`-MxEtAX~OJ?T6Q=Iflvol5X${99HYt>!Q0MYwIXbC)yC zcik0bwDWzEM9ZbJ$pA&IroG8qv-cXe~|ZZmgn zYiVa?V^LYpi-k2;V zKrt2F2?L8>f3iaIXR_PNSg4NKDsmsJD(E{6=*E7Tz!%^Y$yeKA)*T$8sS0PG%x4q$8K9@OY3{b4SSsH>h8 z@)_o<)vtHEgyELc1c{sjhN-upV{3%U)4O@>Mlcp|E_>6quubihDdq4kRkg8!3QmQz zOSGmzDo<|G#iO26P4q5_S^0xJbRjvpJ%fGu?=MXrayn~F_Y7L!gKh(hWq<_@k;+#DjcHv?N@JiUq;t^g-Ph;f(4;m7J2`r^3Fymuzn zAGqpAmgdDL0fa$`;_Al5hz5~owo_d#ze+TQ6YXr_iP@^BczqZQoS}C}!7${(9BmE8 z-gCJ?Q&f>KvD`CG?#I4OwwYwUP89zx@!mL!H;e9mrxmr+fym{kY8RlAC5A zwLymuSw$|LS3MOGEf{!Jx@%=TnadeCT9vU?;gyP`O+_)=CpV@n2z7~0;)AwJ}eap2#_EOg(f28rGCbJyKV|sksA!cm= z>jEf{tY9{8`KGt;55mg9qfGTxc5xjhbm7J?12Pg)V$U(bTFVX?gfC9s8&st&)`6!x z>i}4hj}>DFexGUP4gV%G0n5OEx$Tj0;&|&a8)eYI08zxM5CR2b@I zjK-a1LKkgu1#qh3=@m<^_MXEYow{1CIQ4^oG(35KIjKaqBcjfO=ZddLpgh8h5gb?f zRdm$ZVXe00XIUv?V#6&Z4DARDPMaT+X^&8@tc~!7iB1RHOJ|WS5F}#p~)+}Th zm}DOy&LXs#33O*dBNwCQh?rG-=d$i_8S6|H$zE0mae<5+g?g@z@8DXlzy{IBM>!1D z>}Cp!?XM7EiZP}QgHMhVF0sO-ZY8knubcKZDWc1nf-FHKnL zyu+T%cyJyX^H;vSZ{C=RJ}nER?nCvr)=`W%4BgsvhY%h^XIcZiK?k?@aAl@^d@p&D znzJC0fHzRAmsTVskDU7ilkA42WgKs0Dw}@V`U>M8O6%a)I!vS^I#K4tzkq+L3utjD z1|@~GitLtl6*${;R!_P3p1&w|o_$e=4wwlA!!;sdG2 zperjvag870DQ6-_u-X%BImSL~D<80Df?CDL_`cK}m>N}j#LQ;pRw?9`YWZucY&iiB60BtQRZGIm z%-gP|wZ@43@iFm2^9r$=@(Ek_d-bvSHzLL%b#@At>yJd+(R?0W%N~G1UkiWk>TaO9@vKn@Y!6*%3js&De1fi|NGlgf0zsdT(__ zKjy>McD^q=mP_Ab)WeY4wMkTU0la?hc=cp7! zmN8h9KDV*EXinJgJMBEc`y864(I9LYC#sS=ak$902~!K%^F9loW5$XRp_H-_0{)PDMi^)3$B^Q;jgq?2bv=JNe&c!rK-W` zH_9pXa%=g9KP-sp5`SrHxmpjY<>%&EZ%p*wrN&`ZzrR8Fy{^Z_uHp`rtjEk?S%$I~ z(rO#U!8~B>huIjJh~!H2s-gaDNqEHZOCJqVDg$~Gc{cT3SM)$;x-A_k*e%ZwZa-}p z%%=#1FvUHhkV!hmpRXu`aZyO=k+;=lHA4$%*>FjuR$CGolLy+F5)V7JvSJ^8zM*7qMJ-qr85f@Lny&*Y0WqAGoF-5~tvWdYS1BC2&l%=9 zD`171Yo2f$8x6dI%k9UXZV)a{4jG@lwckcpSgMr2g`hkI+fq);BNRW9nmJN)YDB$g zOFKzh%4T=J6SNoIpg3{cWTikZfrP7sEvlWzIHE*tG|Bd>d`R3?Zl0C8>>`LZ-tUPX z?({f^A)KuWF{eYXVYZ5Mq0u<4M^@`?m)k3( zxRY-k*-u`IQ$Q3YG3m7s($mZ{c#%8S&-#L#~qh!nVX+FKB?=05_z0Kzz z93*xEcIthRqVuL}adb4t4quy)(B-oS%@um?SnR_JNxYqaPu^W3t46Kv(~l;( zS1*f|ze6Zcn#+tPQ$9?Vo-g^u^q6KIOnQ|QEonO?-S!ua(nere{$(^P*n2qQJ$cV~u5d}VR029(Q$CiTYK=S?G5$?R;2sgo>Pq1E`TrNWWl6n$KQT{6;F zZi3shEVe9mKEg4vNb8}yZkSPS9`0_&$(-BbT}OM2QhFq8<&%?Bh{X-bT1qQ^jpcBH zB+mf5^>ow}a(FZc=`T#kzDXD}*;W&}5(Qt;5{|7W^Rco>o8FhK@{*HB}b9JO%Lds#ANk zWj1}pYI4j=Dg4sryp>UZQC4d^3M!X7D%_lDs(O>*XjL1x)eJh0LRi`@7G{?=_PHgz_F9 z9Rfx2JC=+${d5W_yQIJQ)HM-DDhT2CkQrH|hNl3hWfSGx`-Zb)l^r=<$wd$Qd#b8c zt175SBhVMhW)j6xl|e?g<3jl$`8z0`TrwJK)UCkbp`nsk`Byr>kq_J--UkAqOYxJHaMDT2T#jo*V8XKv zPA{rqb74N?!7T|;*39l5~t&juMC0|O=-O{6#h*f`IESX zIp{d(9+Pfa*kJ-RV~u+yf2svGyfU}eP0b((=->Pl6a6+Dq5x_tx#CRHC%1H-O%0n> zH%DJTg!t&ysR94Ib9D#2)|pMA>C7w_-qq9oXDckwXTi32EiBW#fo(Iv&UW>NzfZfi z0tTgK>%9;QmnVSxwofV4@8L!l{I$LhHUUCuvf{pt5lw!;q_tX71&mQA!ZiDjxx%5( z@AC~tw>l9Ivq1H*#kVQQL~S*zH$`ju66Ip{V%*3<&f5BOkNSWw7h$j-Jq$h;8*67% zqu9saAd|Z5PNrP)vAb6UD50uckP%bA`;6Buodz8jS}LDEfAnt}Fr$`PGrDm5?yf_7 z&cv?GwJiR?y{MF*TH_pPRjOLwQnlt=0Vn6%iQ>g$NBW?xzIml_gda>I7GE4J5@PFi zTWh$H8j0w-WVPMToO+Vdkr#89VA7)e(Q%AXYFBQ|eaDnV`MG(;u(O7og;$Ue=D43Q zD9i9d9geN2pUJqNRlghxE#KIE!N(LaSqf)ht^`CeWDCVsx=tN6x=UC{9CU3WZ4+Z9 zm)cRMC}LMH&n-~#W884kEy0ZKD=uRh+OfmsOw@n?J6%`pK2NV+z8N$HF*MLlWr$av zI7&|fOQIMr5meNqW-d02i8p#CJ!UTZ79ze#>%G*Z?aBTV`z)HZsQ5UUCS5Ov;jO({ z<~ossfhoBfn3&Oe#42WzTE|Lgu!s?38b-?Y;v~#%GwJWf(Zq5GkY%3ptG9iqBzhNu zYlnQXS@d#mu1`lWv~h$nG%23lzs$ZFbLeaUXDoN1(Fmp;aaCLB*r(8qH-J$mm4hj* zhOnToB}-fs>#m50v_PC=Lua1y>*|;Dw5nlyW_6yxM#x_~%U@4%rhr8=0Lhhii zHT^XrNI(f6L5Wzft9kF&C9F}!B}3qT`Ny0-zgC{FhrcvssB!NwY|lL>Lo#p&iR}T) z?4UZQ()n-u#>&_@+p11J@xn-^hU&hG)i}ttnyVh{v)b}d=+epzbfNiI7;EXz=(aU{ zuPV-J^q=9LU?d0C-=?uYz%v+r@QSoN97IXTLUvWX z-vT#7a@`!7<2l#}>?@FOGMf)~zM6%v+c??x-Sb-t6Vs(Zm3*SC*;}lEIv+mzfv4T^ zu+-;=!j8CAS0GSQQQL?|gYJvtU&bR39lHGsi6S0K&!~xJEH80cMREO$j7iWMrCJelBeuRW<3KEX@B;6ps z*2^q3E+%B^C#Rtb($-K3C=2ejCys^_K4u~gEyS*Kqvk{XsEFeAG!Zc5%{b(I&kvBs zo(C6vUe~XMp}QND{oVB63El07D4jfUH0*S8X~X-JO$+aJBJQiYb|hoV+o0#3I5iiX z5hgd+dR_i!LpQN_496e8r!Q-nqw2b`(udXee+A+-@C#YoCO&rTO@E!THlBiB9O`dE z%uFeF>A4E{J13X08!t*H@%0S9pH3IokeW4_ovNTVp|XVH+473LJWDmwl^bloTQ6Uu zS#{N+p=MTV%Nmc5`x391)J&}R>)I}Dy@u2?t7~3z+6r(x;@~D&vp0_Ue+K#S>4K>f zKZ0Mvxm>H<<$DIY)pONWmE8_bE%iL=*Ea$SA)0_2fy|=lj&he7)|YxwDILl z{Xseo71_Qrp4l7owGH%K8uc}Xc*OaaHFbV6J|v;VYM{%{gZNt$cr^#dTrIL@fF4<_ zidTIelgHwHW$c;1(CJrS1YC3U1{@R8BJWzpia)IV^68z4J(Ye1N{@~n?k^fm8*NaB zayHppH1Ppf`gQ4dPlI`zd0ByZ(#S*yF0dr3#z7og67$*LLZ`DnK5>Je-Purg6p@8? z*9ZHWMLOoXP&(R8zjfr26>zrs#?&)Eru%q)T_u-$_szyHMklE4Gt$uHUHh7~`3vjn-P?^5Ci|)8uQNYwW`25)@sp^^icBsB4x?_HdB8zHkN-4I0p)j~ z%x-wx9-N_PfqxA4pU9rU`KYmb(4Gw1G`+gMuVREZA*YQ$-Eyuy2pCqC%YMicA-Xft z^@Pm2+wYNOgKs%4wpq%~M_d|9v-4?gc;e}k>^nh`-hchIforGWPCZ52I{`}pKRQ8+ zVE5);_(QVVSYkh+gmV>5j6F@8U?bvY$z#)axIM(@EZDxFq-bqu73{2NlU7 zSsp(%V+`+kn8R?^)Z~TY7sipMb{XRLed}!>n}&OI2W+^zo+G#+su&vyV^J%m@8i8w zY(Bn92Atk3_QfAp+x9!5ltEM>(`fLg12xvd_m6yl23`ecqG;VpVx8H)lgg=)?dXac z>Zp9nt~nEOA=c1E0IYg@hya+=5Uy4<*n0~eAzSdctiv3!ZM^Xid#%XtTuIXtg+{}i zLNi!-@I#qp@K35f;2`%97TkW|Ea<TByMQU(0B-z#@ zv+BSEooNV~4m1Nb4m2Ab$(OeXhzB(#GWAtC(BX24v1nDb8KbE&Q4cuo_N zZ!$Xki=4|5Qhj2(Re)z9l1i$tjHIqHnu~}$lfYK>TSJGM_4r8^P{j<|IMsGGLES=p zbwR@aZCKMT%_P?+0R&8H-Y4RCwh?s@6W-*RUMnn_H(qs&T) z(P9}{@d#btO@_KTQh>!$t$xki*HlQ)j5HHba5j4XT@S1s;)L5oqe^m4o4T5bICNtK z8@m1i!lB={2o;!)8pjmawBFpJAp;PN*@O$%A91`yL>-Q2(zSR{4zW`C1{kF!Byih0 z&_?TqkIm@2QP3x-!$ET2^I7i*zWNxU2KgG&(7x@^zD*nCHvSOf_$_h*tq`3qT&l<> zlH%}Nj~JR6m7vAm=w9qVfXfC%ti|V7>4vF28woIJNpz1F`z=uv?yjq}(~rJ5WRLaA zf>d16$1)2@bpI8(fAqmLo=R)RvndnjjQ^VhPPEiu0j??DvOS8ijF7Kh5L0^u&}zbh zl&mO!sJI>VF;wgn^emJ;U9inlbj|X1|M$!etfYeyzE28Ae1nH|*ReAxll@-?j`0fe z`wF;n!~2S@bbqr=8xVH&1)k$mO1Z@^%FburmC<5nP?yKE8xtr>ywuew?Dz=}joCI# zIx)I7PucfQANmx^IO1q&s?EZ&IhpCYy3Mc%JL?v$(V}a%%ok#qlcYNu;}Z9Kq`0qN zm@r)Dqn$DSZ&ood@~@@8zdt(?2R^4NZG8$->HRku6KOCUfL5;7K}~IW_-=OV^YvWL zGwlhR`PL!Y&(X<&IvnKub^;#$E2bZpm|LJn(BxPPi+_aY#g6elPCqW>_`!GoPM#vs zt(rc$1-m}QeXoxT{2}pc69;&B{B({)zx?`@Gqoo221) zMp&M|2=^(Nnd3iA+EC9OPum#&n=QV(3wA-dm7*B?uYUH@sa2bDz%GY@hpufW^>xfX zpz#X$i)Rwsz7{7FBf}Y&3)y@T_r2kEGTN4VSUvMqY6v5MJ5yOfa~OEa=gEvL6WyEY z=+iQJJ7T046XNU{#q9R33wzc%vG~}7X>v8nqm!cwv+ccjK-JdPQ_uAzPNIuToG-NU zeC0Et{x7DPaQ)3OlodZOvwc5WiR)h4rrY;LE0c z`$WxsgjeD#cl4L;Nr1P9HhltkdL>6O5t#O`g?2LZNxmlWaB->su7?rOGeg#-$s3=a z_jfhhZWsEY4Ew-rfNNYsSkB%qBdn=2J~U}fR#8?q%?IH6>_5%z?rK`&O(@NSl+ZpH zEvoOW)a+;Cy$Jr!3C z{6-k^3H+g|RNc^M)wIGjSfaNmOm7&vB#@>BJv8Dx;>vr2` z-3x&_S^GP?yVm=jUj}_r`x=HT5n~*ltJ)3Ckj;Qa?B&H#*OG8-uoGmJXmM1!NO)`O zI^Plr6GfB5f+EHr1=)Inc2vW!)p09=|DHc&@EE1f1IhRCd|ai9p3Y6qJz46R5z>z9 zju!r*s*iD`Db12B$QkiyCYcTF|!y_Ak9kCGsbTIq0 zPuklgJTCPNju-x@7*BV|i!mqO>Do*!TSX%E{aJbS9dcFMm~6@sj=Qru?a4fmBhbg| z`V%hp^?C$Vqbf%scTrHYgtJbyD(#7q1KX}uKDx#|-LxP=1o2`(NI&?Jpl+e}8vj%Y z;(n+Ixqhqx*7uUkOTfyZsm9UipdaQTk&x!2 zl#6SVn883~C&(-rktx0i5R{McF4cm!mWpL;Ge*Hsfn@kLH*akWezZYgyZD!N5L{=$ zs2MPcIR{=NF!;uVgU2#eyv1$E#|_5~%$(?L*`SvZ@sb6WXxk0Qr*m_UlmdHpK8aLnygj>+7Bb3O`7VD4gI0Tr4BO zEQ)ciW1l--N@XAb-+@)7#N2*_=L&?LQlZT8BTyS-_XojL>z?Lw0Sj3W#4NQckU-0{ zv-8)EX>;oieA68sgl}VCL(H|4BZ`0~#w9E9EUy^`b$Fp8!^17zpQ8=Y;Y1)7Sv+@!a*W(~}Wq z*NxUCM5B6QscR0Sv4TV{7d!9O2hkY=}DH95{@_`P3h zb_dVpOuiIT_!;fBxB;3ao)#xM$-`nwX0CiYo?7hK9T8dxJ4XxU?$)%vsu=KYflX)4 zNgB`*cD@>g(-5m)TWB%Iu%k+8jptR*BV`(3q9o$Ld60T1S5B!1nmglpGfh(aX3st{ zM(I{&`Ni6=H{1xDabdnBdCw0JS{Wxqv2YCQ$<|7#a>4|*!2(@Sel1X6cP0ds=<0aH zh9H1~^J(5vR6sAx05q~e0vjM68&npa_Ws@NvAaYGnWtAyw0b9@LejY`C+lqPe|#DD zmzDrpvx~KYQkGeV!F89rG4PjGic)b<3X)-eOAXC8$2B5KWd(|D2VU!<(1mpG$u?#I zi>@+fd#D4dfpbCA*aYEgintAU?o#}Kngb{?HNy-?<^5z0XQ_Ll+a4aSe_ZHKGD=rUI0#=V3pg=CEiIP#XOK6qu5**d+z-^ zb^;@EHSJH}A!PAA8A!M~Yze3H#Vx*QV<-4LX*u5jz9i5DZWo!AAxUCez=bUb2#c;o zC7i)nIJX%Ml*=fVgs%mX=q&;ou#Z)fLB-V*QVFF4aGNrRbI)^JfM;Q$B_xTT%47lz zY$KF`7J=e!|BUGk*^`4Zcmr((Mz-Unt+o9VA zO01km7*w`j-<;?Sq4CfZBSHCCFP>a2s|vf|QgKYJ)6g_rdf}fjtg0aa-iE>2Ht^YDt(ht$1wlbhv^2)4Dh#lKKDW{2$k0GKxJZQDBy3` ze#--OY^ZanZKWeiINs-%f$Eq&tb_J1trLJ~G0H-?6?gFfc9lUvYJLqJU#5nIh+)x_ z&siAHF^9n}X_$=M5mCZC-h0lpINSo@WU*liT>w5