From 7436790bdbccbf4856033aecbf0d14b295511bbd Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Mon, 29 Apr 2024 11:35:07 -0500 Subject: [PATCH 001/357] Start Cage UI project --- CageUI/build.gradle | 4 + CageUI/module.properties | 4 + CageUI/package-lock.json | 13011 ++++++++++++++++++++++++ CageUI/package.json | 94 + CageUI/src/client/cageUI/CageHome.tsx | 10 + CageUI/src/client/cageUI/app.tsx | 11 + CageUI/src/client/cageUI/dev.tsx | 20 + CageUI/src/client/entryPoints.js | 8 + CageUI/tsconfig.json | 14 + 9 files changed, 13176 insertions(+) create mode 100644 CageUI/build.gradle create mode 100644 CageUI/module.properties create mode 100644 CageUI/package-lock.json create mode 100644 CageUI/package.json create mode 100644 CageUI/src/client/cageUI/CageHome.tsx create mode 100644 CageUI/src/client/cageUI/app.tsx create mode 100644 CageUI/src/client/cageUI/dev.tsx create mode 100644 CageUI/src/client/entryPoints.js create mode 100644 CageUI/tsconfig.json diff --git a/CageUI/build.gradle b/CageUI/build.gradle new file mode 100644 index 000000000..a7d1134a8 --- /dev/null +++ b/CageUI/build.gradle @@ -0,0 +1,4 @@ +import org.labkey.gradle.util.BuildUtils +plugins { + id 'org.labkey.build.fileModule' +} \ No newline at end of file diff --git a/CageUI/module.properties b/CageUI/module.properties new file mode 100644 index 000000000..77c261535 --- /dev/null +++ b/CageUI/module.properties @@ -0,0 +1,4 @@ +Module Class: org.labkey.cageui.CageUIModule +Name: CageUI +License: Apache 2.0 +LicenseURL: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json new file mode 100644 index 000000000..60e2bc597 --- /dev/null +++ b/CageUI/package-lock.json @@ -0,0 +1,13011 @@ +{ + "name": "CageUI", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "CageUI", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@labkey/api": "1.27.0", + "dayjs": "^1.11.8", + "react": "~18.3.1", + "react-bootstrap": "~2.10.2", + "react-bootstrap-typeahead": "6.3.2", + "react-dom": "~18.3.1", + "ts-loader": "^9.4.3", + "typescript": "^5.1.3", + "urijs": "^1.19.11" + }, + "devDependencies": { + "@babel/core": "7.24.4", + "@labkey/build": "6.16.1", + "@labkey/components": "2.390.4", + "@types/react": "~18.3.1", + "@types/react-bootstrap": "~0.32.32", + "@types/react-dom": "~18.3.0", + "better-npm-run": "0.1.1", + "css-loader": "^7.1.1", + "style-loader": "^4.0.0", + "webpack": "5.91.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", + "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs2": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.4.tgz", + "integrity": "sha512-ZCKqyUKt/Coimg+3Kafu43yNetgYnTXzNbEGAgxc81J5sI0qFNbQ613w7PNny+SmijAmGVroL0GDvx5rG/JI5Q==", + "dev": true, + "dependencies": { + "core-js": "^2.6.12", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", + "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "dependencies": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "dependencies": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "node_modules/@emotion/css/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/css/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "dev": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "dev": true, + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "dev": true + }, + "node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "dev": true, + "dependencies": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "dev": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "dev": true + }, + "node_modules/@floating-ui/core": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", + "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", + "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", + "dev": true + }, + "node_modules/@icons/material": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "dev": true, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.1.tgz", + "integrity": "sha512-LnFjVChaGY8cZVMwAIMjvA1XwQjZ/zIXHyh28IyJkyNkzof4Dkm1+KN9UIm3lHhREH4vs7XwZ0NpkZKnwOtEfg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.2.tgz", + "integrity": "sha512-4KMApTgb1Hvjz9Ue7unziJ1xNy3k6d2erp0hz1iXryXsf6LEM3KwN6YrfbqT0vqkUO8Tu+CSnvMia9cWX6YGVw==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.0.0", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.0.tgz", + "integrity": "sha512-Yz+xITJ3Y/w0DBISwPkBETP5/cITHXscjgQNZIkfrVz1V7/ahJY8vw+T+LZy/KtXgKuUWqu4GALAQ3bhGt9J8A==", + "dev": true, + "dependencies": { + "hyperdyperid": "^1.2.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@labkey/api": { + "version": "1.27.0", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/api/-/@labkey/api-1.27.0.tgz", + "integrity": "sha512-Hs1TahaNp1K3JrvdpGCB0m8as1JidJImxyRD6NG5UK897z90tK1L3o3PihjyoU3oJ11nV/iePXJbG31c4C44gQ==" + }, + "node_modules/@labkey/build": { + "version": "6.16.1", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-6.16.1.tgz", + "integrity": "sha512-nC7eVvOmx9Il86gyaAjNhVyzH8JcvMUiEmLPVJjhDYuQH/oBQADMbGUOSe9MDK4QMlEjBtP11ujAthnj3cIoYA==", + "dev": true, + "dependencies": { + "@babel/core": "~7.22.20", + "@babel/plugin-transform-class-properties": "~7.22.5", + "@babel/plugin-transform-object-rest-spread": "~7.22.15", + "@babel/preset-env": "~7.22.20", + "@babel/preset-react": "~7.22.15", + "@babel/preset-typescript": "~7.22.15", + "ajv": "~8.12.0", + "babel-loader": "~9.1.3", + "bootstrap-sass": "~3.4.3", + "circular-dependency-plugin": "~5.2.2", + "copy-webpack-plugin": "~11.0.0", + "cross-env": "~7.0.3", + "css-loader": "~6.8.1", + "fork-ts-checker-webpack-plugin": "~8.0.0", + "html-webpack-plugin": "~5.5.3", + "mini-css-extract-plugin": "~2.7.6", + "react-hot-loader": "~4.13.1", + "resolve-url-loader": "~5.0.0", + "rimraf": "~5.0.1", + "sass": "~1.67.0", + "sass-loader": "~13.3.2", + "style-loader": "~3.3.3", + "typescript": "~5.2.2", + "webpack": "~5.88.2", + "webpack-bundle-analyzer": "~4.9.1", + "webpack-cli": "~5.1.4", + "webpack-dev-server": "~4.15.1" + } + }, + "node_modules/@labkey/build/node_modules/@babel/core": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@labkey/build/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@labkey/build/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/css-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@labkey/build/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@labkey/build/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@labkey/build/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@labkey/build/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@labkey/build/node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@labkey/build/node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@labkey/build/node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@labkey/build/node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@labkey/build/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@labkey/components": { + "version": "2.390.4", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-2.390.4.tgz", + "integrity": "sha512-qFfC9Z00Mojanew81IpdC1DsMLuP6mSFucqGLsSYYUqlWqicygMRsTSJe0bnaCNN0qRNczMKqVNUk1FQsay6jw==", + "dev": true, + "dependencies": { + "@labkey/api": "1.27.0", + "@testing-library/jest-dom": "~5.17.0", + "@testing-library/react": "~12.1.5", + "@testing-library/user-event": "~12.8.3", + "bootstrap": "~3.4.1", + "classnames": "~2.3.2", + "enzyme": "~3.11.0", + "font-awesome": "~4.7.0", + "formsy-react": "~1.1.5", + "formsy-react-components": "~1.1.0", + "history": "~4.7.2", + "immer": "~10.0.2", + "immutable": "~3.8.2", + "moment": "~2.29.3", + "moment-timezone": "~0.5.38", + "normalizr": "~3.6.1", + "numeral": "~2.0.6", + "react": "~16.14.0", + "react-beautiful-dnd": "~13.1.1", + "react-bootstrap": "~0.33.1", + "react-color": "~2.19.3", + "react-datepicker": "~4.17.0", + "react-dom": "~16.14.0", + "react-router": "~3.2.6", + "react-select": "~5.7.0", + "react-treebeard": "~3.2.4", + "vis-network": "~6.5.2" + }, + "peerDependencies": { + "immutable": "^3.8.2", + "react": "^16.0", + "react-bootstrap": "^0.33.1", + "react-dom": "^16.0" + } + }, + "node_modules/@labkey/components/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/@labkey/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@labkey/components/node_modules/react-bootstrap": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.33.1.tgz", + "integrity": "sha512-qWTRravSds87P8WC82tETy2yIso8qDqlIm0czsrduCaYAFtHuyLu0XDbUlfLXeRzqgwm5sRk2wRaTNoiVkk/YQ==", + "dev": true, + "dependencies": { + "@babel/runtime-corejs2": "^7.0.0", + "classnames": "^2.2.5", + "dom-helpers": "^3.2.0", + "invariant": "^2.2.4", + "keycode": "^2.2.0", + "prop-types": "^15.6.1", + "prop-types-extra": "^1.0.1", + "react-overlays": "^0.9.0", + "react-prop-types": "^0.4.0", + "react-transition-group": "^2.0.0", + "uncontrollable": "^7.0.2", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@labkey/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@labkey/components/node_modules/react-overlays": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.9.3.tgz", + "integrity": "sha512-u2T7nOLnK+Hrntho4p0Nxh+BsJl0bl4Xuwj/Y0a56xywLMetgAfyjnDVrudLXsNcKGaspoC+t3C1V80W9QQTdQ==", + "dev": true, + "dependencies": { + "classnames": "^2.2.5", + "dom-helpers": "^3.2.1", + "prop-types": "^15.5.10", + "prop-types-extra": "^1.0.1", + "react-transition-group": "^2.2.1", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@labkey/components/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dev": true, + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/@labkey/components/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", + "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.8.tgz", + "integrity": "sha512-6ndCv3oZ7r9vuP1Ok9KH55TM1/UkdBnP/fSraW0DFDMbPMzWKhVKeFAIEUCRCSdzayjZDcFYK6xbMlipN9dmMA==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "<18.0.0", + "react-dom": "<18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react": { + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "^0.16", + "csstype": "^3.0.2" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react-dom": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", + "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", + "dev": true, + "dependencies": { + "@types/react": "^17" + } + }, + "node_modules/@testing-library/user-event": { + "version": "12.8.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", + "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-bootstrap": { + "version": "0.32.36", + "resolved": "https://registry.npmjs.org/@types/react-bootstrap/-/react-bootstrap-0.32.36.tgz", + "integrity": "sha512-xldfs2zixagAFEafy/XzRvZH1NtjRnLfbgL0cZ2a0Eykz+iILE/Xa46tnUFcLln6ZBq1Qp9uArhIbkkuhBU30g==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dev": true, + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array.prototype.filter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.4.tgz", + "integrity": "sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-emotion/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/better-npm-run": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/better-npm-run/-/better-npm-run-0.1.1.tgz", + "integrity": "sha512-SBBYsUsb6bYcUMF9QUWy39GX5kzD4CoRBP11gx/k5jYkUr4Tr+irAokIeQX5FgfCRz0Q27rt8U0J4D2TlRgQFA==", + "dev": true, + "dependencies": { + "commander": "^2.9.0", + "dotenv": "^2.0.0", + "object-assign": "^4.0.1" + }, + "bin": { + "better-npm-run": "index.js", + "bnr": "index.js" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bootstrap-sass": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", + "integrity": "sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" + } + }, + "node_modules/classnames": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.3.tgz", + "integrity": "sha512-1inzZmicIFcmUya7PGtUQeXtcF7zZpPnxtQoYOrz0uiOBGlLFa4ik4361seYL2JCcRDIyfdFHiwQolESFlw+Og==" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-react-class": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "dev": true, + "dependencies": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dev": true, + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/css-loader": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.1.tgz", + "integrity": "sha512-OxIR5P2mjO1PSXk44bWuQ8XtMK4dpEqpIyERCx3ewOo3I8EmbcxMPUc5ScLtQfgXtOojoMv57So4V/C02HQLsw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dev": true, + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", + "integrity": "sha512-Y+zZAmv7p2zOdpyZcSIA+aIxohsyfTcNaMeh3YJn9exq85bQhso65Wz9IhjYYNB4zyvXnfi7Ae+FuygARljVJw==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, + "dependencies": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/enzyme-shallow-equal": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0", + "object-is": "^1.1.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", + "dev": true, + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/form-data-to-object": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", + "integrity": "sha512-F10KT6YgIq4CxmiMCZONnYN4PC5ommk8rLb4WmeahqDDszerxVwBrjqjXiedqUfNClMxDHj04KWGRK30aDnIpw==", + "dev": true + }, + "node_modules/formsy-react": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-1.1.6.tgz", + "integrity": "sha512-9IsV+XKQEcwvm7nZtyUTZBcl9SHgX2WKskVfvAKzQyJwMAqJ4E3Hf+6PM1E2dQo/MGYMM3pfECAbkDKwlKkp9g==", + "dev": true, + "dependencies": { + "form-data-to-object": "^0.2.0", + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react": "^15.6.1 || ^16.0.0 || ^17.0.0", + "react-dom": "^15.6.1 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/formsy-react-components": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/formsy-react-components/-/formsy-react-components-1.1.0.tgz", + "integrity": "sha512-GUgnIqXbXNPf7auP4nwk5PF6477r5UhdQoO1aNCvQajLarUu/Jj8PaxTCHu56tNGSlewACqRV44m8MrYOMzdTQ==", + "dev": true, + "dependencies": { + "classnames": "^2.2.5", + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "formsy-react": "^1.1.0", + "react": "^15.6.1 || ^16.0.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "dev": true, + "dependencies": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-element-map": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", + "dev": true, + "dependencies": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", + "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "dev": true + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keycode": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", + "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz", + "integrity": "sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "dev": true, + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalizr": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/normalizr/-/normalizr-3.6.2.tgz", + "integrity": "sha512-30qCybsBaCBciotorvuOZTCGEg2AXrJfADMT2Kk/lvpIAcipHdK0zc33nNtwKzyfQAqIJXAcqET6YgflYUgsoQ==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types-extra/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "dev": true + }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "dev": true + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz", + "integrity": "sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.8", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-bootstrap-typeahead": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/react-bootstrap-typeahead/-/react-bootstrap-typeahead-6.3.2.tgz", + "integrity": "sha512-N5Mb0WlSSMcD7Z0pcCypILgIuECybev0hl4lsnCa5lbXTnN4QdkuHLGuTLSlXBwm1ZMFpOc2SnsdSRgeFiF+Ow==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@popperjs/core": "^2.10.2", + "@restart/hooks": "^0.4.0", + "classnames": "^2.2.0", + "fast-deep-equal": "^3.1.1", + "invariant": "^2.2.1", + "lodash.debounce": "^4.0.8", + "prop-types": "^15.5.8", + "react-overlays": "^5.2.0", + "react-popper": "^2.2.5", + "scroll-into-view-if-needed": "^3.1.0", + "warning": "^4.0.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-bootstrap-typeahead/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-bootstrap/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-color": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", + "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", + "dev": true, + "dependencies": { + "@icons/material": "^0.2.4", + "lodash": "^4.17.15", + "lodash-es": "^4.17.15", + "material-colors": "^1.2.1", + "prop-types": "^15.5.10", + "reactcss": "^1.2.0", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-datepicker": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.17.0.tgz", + "integrity": "sha512-z50H44XbnkYlns7gVHzHK4jWAzLfvQehh5Lvindb09J97yVJKIbsmHs98D0f77tdZc3dSYM7oAqsFY55dBeOGQ==", + "dev": true, + "dependencies": { + "@popperjs/core": "^2.11.8", + "classnames": "^2.2.6", + "date-fns": "^2.30.0", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.13.0", + "react-popper": "^2.3.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-hot-loader": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.1.tgz", + "integrity": "sha512-ZlqCfVRqDJmMXTulUGic4lN7Ic1SXgHAFw7y/Jb7t25GBgTR0fYAJ8uY4mrpxjRyWGWmqw77qJQGnYbzCvBU7g==", + "dev": true, + "dependencies": { + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^3.3.0", + "loader-utils": "^2.0.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "@types/react": "^15.0.0 || ^16.0.0 || ^17.0.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-hot-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-onclickoutside": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", + "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", + "dev": true, + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x || ^18.x", + "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" + } + }, + "node_modules/react-overlays": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", + "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "dependencies": { + "@babel/runtime": "^7.13.8", + "@popperjs/core": "^2.11.6", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dom-helpers": "^5.2.0", + "prop-types": "^15.7.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/react-overlays/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-popper/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha512-IyjsJhDX9JkoOV9wlmLaS7z+oxYoIWhfzDcFy7inwoAKTu+VcVNrVpPmLeioJ94y6GeDRsnwarG1py5qofFQMg==", + "dev": true, + "dependencies": { + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.6.tgz", + "integrity": "sha512-nlxtQE8B22hb/JxdaslI1tfZacxFU8x8BJryXOnR2RxB4vc01zuHYAHAIgmBkdk1kzXaA25hZxK6KAH/+CXArw==", + "dev": true, + "dependencies": { + "create-react-class": "^15.5.1", + "history": "^3.0.0", + "hoist-non-react-statics": "^3.3.2", + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "prop-types": "^15.7.2", + "react-is": "^16.13.0", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/react-router/node_modules/history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha512-ABLnJwKEZGXGqWsXaKYD8NNle49ZbKs1WEBlxrFsQ8dIudZpO5NJaH8WJOqh5lXVhAq7bHksfirrobBmrT7qBw==", + "dev": true, + "dependencies": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "query-string": "^4.2.2", + "warning": "^3.0.0" + } + }, + "node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-select": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", + "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-select/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-treebeard": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/react-treebeard/-/react-treebeard-3.2.4.tgz", + "integrity": "sha512-TsvdUq2kbLavRXa8k4mmqfPse8HmSA9G9s1SZUtIpiYSccSwa0Tm6miMgx7DZ5gpKofQ+j/3Ua0rjsahM3/FQg==", + "dev": true, + "dependencies": { + "@emotion/core": "^10.0.10", + "@emotion/styled": "^10.0.10", + "deep-equal": "^1.0.1", + "shallowequal": "^1.1.0", + "velocity-react": "^1.4.1" + }, + "peerDependencies": { + "@babel/runtime": ">=7.0.0", + "@emotion/styled": "^10.0.10", + "prop-types": ">=15.7.2", + "react": ">=16.7.0", + "react-dom": ">=16.7.0" + } + }, + "node_modules/reactcss": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", + "dev": true, + "dependencies": { + "lodash": "^4.0.1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==", + "dev": true + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==", + "dev": true, + "dependencies": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", + "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sass/node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sonic-forest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.0.tgz", + "integrity": "sha512-yFO2N4uTUFtgKLw03WWFpN1iEwZySweMsa18XN3Kt0yYrlmVHunC2ZgM+437zDoKISAJHcH3Cg18U7d6tuSgSQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/velocity-animate": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.2.tgz", + "integrity": "sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==", + "dev": true + }, + "node_modules/velocity-react": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/velocity-react/-/velocity-react-1.4.3.tgz", + "integrity": "sha512-zvefGm85A88S3KdF9/dz5vqyFLAiwKYlXGYkHH2EbXl+CZUD1OT0a0aS1tkX/WXWTa/FUYqjBaAzAEFYuSobBQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.5", + "prop-types": "^15.5.8", + "react-transition-group": "^2.0.0", + "velocity-animate": "^1.4.0" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0", + "react-dom": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/velocity-react/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/velocity-react/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dev": true, + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/vis-network": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-6.5.2.tgz", + "integrity": "sha512-Dj5oEtZMUWuhq7D7dwdmxmtJgrK3kwfV4Ov/ePSrhPZgNdJlXzpeDZU/Eq0pKGyOAPLClemgVImc0bZpZ4Yafw==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "keycharm": "^0.2.0", + "moment": "^2.24.0", + "vis-data": "^6.2.1", + "vis-util": "^1.1.8" + } + }, + "node_modules/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", + "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/memfs": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.1.tgz", + "integrity": "sha512-36cVYFMaa9HNEYyvkyKCwker8DBmOdjWLrfekE/cHEKJ806fCfKNVhOJNvoyV/CrGSZDtfQPbhn0Zid0gbH0Hw==", + "dev": true, + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.2", + "@jsonjoy.com/util": "^1.1.0", + "sonic-forest": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/CageUI/package.json b/CageUI/package.json new file mode 100644 index 000000000..b8600d7ae --- /dev/null +++ b/CageUI/package.json @@ -0,0 +1,94 @@ +{ + "name": "CageUI", + "version": "1.0.0", + "description": "", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "storybook": "start-storybook -p 6006", + "build-storybook": "build-storybook", + "build": "better-npm-run build", + "start": "cross-env NODE_ENV=development LK_MODULE=WNPRC_EHR webpack-dev-server --config node_modules/@labkey/build/webpack/watch.config.js", + "build-prod": "better-npm-run build-prod", + "clean": "rimraf resources/web/gen && rimraf resources/views/gen" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@labkey/api": "1.27.0", + "dayjs": "^1.11.8", + "react": "~18.3.1", + "react-bootstrap": "~2.10.2", + "react-bootstrap-typeahead": "6.3.2", + "react-dom": "~18.3.1", + "typescript": "^5.1.3", + "ts-loader": "^9.4.3", + "urijs": "^1.19.11" + }, + "devDependencies": { + "@labkey/components": "2.390.4", + "@labkey/build": "6.16.1", + "@babel/core": "7.24.4", + "@types/react": "~18.3.1", + "@types/react-bootstrap": "~0.32.32", + "@types/react-dom": "~18.3.0", + "better-npm-run": "0.1.1", + "css-loader": "^7.1.1", + "style-loader": "^4.0.0", + "webpack": "5.91.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4" + }, + "betterScripts": { + "start": { + "command": "webpack serve --config node_modules/@labkey/build/webpack/watch.config.js", + "env": { + "NODE_ENV": "development" + } + }, + "build": { + "command": "webpack --config node_modules/@labkey/build/webpack/dev.config.js --color", + "env": { + "NODE_ENV": "development" + } + }, + "build-prod": { + "command": "webpack --config node_modules/@labkey/build/webpack/prod.config.js --color --progress --profile", + "env": { + "NODE_ENV": "production", + "PROD_SOURCE_MAP": "source-map" + } + } + }, + "jest": { + "globals": { + "LABKEY": {} + }, + "moduleFileExtensions": [ + "tsx", + "ts", + "js" + ], + "preset": "ts-jest", + "setupFilesAfterEnv": [ + "/test/jest.setup.ts" + ], + "testEnvironment": "jsdom", + "testMatch": null, + "testRegex": "(\\.(test|spec))\\.(ts|tsx)$", + "testResultsProcessor": "jest-teamcity-reporter", + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "isolatedModules": true, + "tsconfig": "node_modules/@labkey/build/webpack/tsconfig.json" + } + ] + } + } +} diff --git a/CageUI/src/client/cageUI/CageHome.tsx b/CageUI/src/client/cageUI/CageHome.tsx new file mode 100644 index 000000000..d68d04e68 --- /dev/null +++ b/CageUI/src/client/cageUI/CageHome.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import {FC} from 'react'; + + +export const CageHome: FC = () => { + + return( +
Hello world
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/app.tsx b/CageUI/src/client/cageUI/app.tsx new file mode 100644 index 000000000..767a06b5f --- /dev/null +++ b/CageUI/src/client/cageUI/app.tsx @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { createRoot } from 'react-dom/client'; +import { CageHome } from './CageHome'; + + +// Need to wait for container element to be available in labkey wrapper before render +window.addEventListener('DOMContentLoaded', (event) => { + createRoot(document.getElementById("app")).render( + + ); +}); \ No newline at end of file diff --git a/CageUI/src/client/cageUI/dev.tsx b/CageUI/src/client/cageUI/dev.tsx new file mode 100644 index 000000000..e572f44c0 --- /dev/null +++ b/CageUI/src/client/cageUI/dev.tsx @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { AppContainer } from 'react-hot-loader'; +import { createRoot } from 'react-dom/client'; +import { CageHome } from './CageHome'; + +const render = () => { + createRoot(document.getElementById("app")).render( + + + + ); +}; + +declare const module: any; + +if (module.hot) { + module.hot.accept(); +} + +render(); \ No newline at end of file diff --git a/CageUI/src/client/entryPoints.js b/CageUI/src/client/entryPoints.js new file mode 100644 index 000000000..95c6cc8d4 --- /dev/null +++ b/CageUI/src/client/entryPoints.js @@ -0,0 +1,8 @@ +module.exports = { + apps: [{ + name: "cage_interface", + title: "Cages Interface", + permission: "login", + path: './src/client/cageUI' + }] +}; diff --git a/CageUI/tsconfig.json b/CageUI/tsconfig.json new file mode 100644 index 000000000..2fd933b5e --- /dev/null +++ b/CageUI/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES5", + "jsx": "react", + "lib": ["dom","es2017", "dom.iterable"], + "sourceMap": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "downlevelIteration": true + }, + "exclude": [ + "resources" + ] +} From 3afa44c5fe83b1e1b3a65c6cd579152d399f4a4b Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 2 May 2024 09:31:00 -0500 Subject: [PATCH 002/357] work on loading cage ui svg images --- CageUI/package-lock.json | 27 ++- CageUI/package.json | 7 +- .../resources/web/CageUI/static/AB140-167.svg | 1 + CageUI/src/client/cageUI/CageHome.tsx | 10 - CageUI/src/client/cageUI/RoomHome.tsx | 30 +++ CageUI/src/client/cageUI/app.tsx | 6 +- .../client/cageUI/components/RoomDisplay.tsx | 21 ++ .../client/cageUI/components/RoomHeader.tsx | 15 ++ .../client/cageUI/components/RoomLayout.tsx | 186 ++++++++++++++++++ .../client/cageUI/components/RoomLegend.tsx | 10 + CageUI/src/client/cageUI/dev.tsx | 5 +- CageUI/src/client/cageUI/testData.ts | 5 + CageUI/src/client/cageui.scss | 81 ++++++++ CageUI/src/client/components/helpers.ts | 39 ++++ CageUI/src/client/components/typings.ts | 9 + CageUI/src/client/entryPoints.js | 4 +- CageUI/src/client/rooms/AB140-167.svg | 1 + CageUI/src/client/rooms/Test.svg | 72 +++++++ 18 files changed, 509 insertions(+), 20 deletions(-) create mode 100644 CageUI/resources/web/CageUI/static/AB140-167.svg delete mode 100644 CageUI/src/client/cageUI/CageHome.tsx create mode 100644 CageUI/src/client/cageUI/RoomHome.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomDisplay.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomHeader.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomLayout.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomLegend.tsx create mode 100644 CageUI/src/client/cageUI/testData.ts create mode 100644 CageUI/src/client/cageui.scss create mode 100644 CageUI/src/client/components/helpers.ts create mode 100644 CageUI/src/client/components/typings.ts create mode 100644 CageUI/src/client/rooms/AB140-167.svg create mode 100644 CageUI/src/client/rooms/Test.svg diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index 60e2bc597..330dbbe68 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -15,6 +15,7 @@ "react-bootstrap": "~2.10.2", "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", + "react-svg": "^16.1.34", "ts-loader": "^9.4.3", "typescript": "^5.1.3", "urijs": "^1.19.11" @@ -3300,6 +3301,16 @@ "tslib": "^2.4.0" } }, + "node_modules/@tanem/svg-injector": { + "version": "10.1.68", + "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", + "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "content-type": "^1.0.5", + "tslib": "^2.6.2" + } + }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -5181,7 +5192,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -10363,6 +10373,21 @@ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "dev": true }, + "node_modules/react-svg": { + "version": "16.1.34", + "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.34.tgz", + "integrity": "sha512-L4ak1qNFLgzVbHm0xQEpHoIOqb3um/B0ybahd3U2TKoGZxb0JaPVI5lsAhvSng2P1kcsYEok2Z7RpcKx7arJGw==", + "dependencies": { + "@babel/runtime": "^7.24.1", + "@tanem/svg-injector": "^10.1.68", + "@types/prop-types": "^15.7.12", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", diff --git a/CageUI/package.json b/CageUI/package.json index b8600d7ae..39a322dfb 100644 --- a/CageUI/package.json +++ b/CageUI/package.json @@ -25,14 +25,15 @@ "react-bootstrap": "~2.10.2", "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", - "typescript": "^5.1.3", + "react-svg": "^16.1.34", "ts-loader": "^9.4.3", + "typescript": "^5.1.3", "urijs": "^1.19.11" }, "devDependencies": { - "@labkey/components": "2.390.4", - "@labkey/build": "6.16.1", "@babel/core": "7.24.4", + "@labkey/build": "6.16.1", + "@labkey/components": "2.390.4", "@types/react": "~18.3.1", "@types/react-bootstrap": "~0.32.32", "@types/react-dom": "~18.3.0", diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg new file mode 100644 index 000000000..101490e5e --- /dev/null +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CageUI/src/client/cageUI/CageHome.tsx b/CageUI/src/client/cageUI/CageHome.tsx deleted file mode 100644 index d68d04e68..000000000 --- a/CageUI/src/client/cageUI/CageHome.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from 'react'; -import {FC} from 'react'; - - -export const CageHome: FC = () => { - - return( -
Hello world
- ); -} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/RoomHome.tsx b/CageUI/src/client/cageUI/RoomHome.tsx new file mode 100644 index 000000000..a19c8412b --- /dev/null +++ b/CageUI/src/client/cageUI/RoomHome.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import {FC} from 'react'; +import { RoomHeader } from './components/RoomHeader'; +import { RoomLegend } from './components/RoomLegend'; +import { RoomDisplay } from './components/RoomDisplay'; +import '../cageui.scss'; +import {Cage} from '../components/typings'; + +interface RoomProps { + room: { + name: string; + cages: Cage[]; + type: string; + } +} + +export const RoomHome: FC = (props) => { + const {room} = props; + return ( +
+ +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/app.tsx b/CageUI/src/client/cageUI/app.tsx index 767a06b5f..632f5dcc5 100644 --- a/CageUI/src/client/cageUI/app.tsx +++ b/CageUI/src/client/cageUI/app.tsx @@ -1,11 +1,13 @@ import * as React from 'react'; import { createRoot } from 'react-dom/client'; -import { CageHome } from './CageHome'; +import { RoomHome } from './RoomHome'; +import { testRoom } from './testData'; // Need to wait for container element to be available in labkey wrapper before render window.addEventListener('DOMContentLoaded', (event) => { + createRoot(document.getElementById("app")).render( - + ); }); \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomDisplay.tsx b/CageUI/src/client/cageUI/components/RoomDisplay.tsx new file mode 100644 index 000000000..0b89e7ac0 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomDisplay.tsx @@ -0,0 +1,21 @@ +import * as React from 'react'; +import { FC, useState } from 'react'; +import { Cage, Rack } from '../../components/typings'; +import {loadRoom} from '../../components/helpers'; +import { RoomLayout } from './RoomLayout'; + +interface DisplayProps { + type: string; // room type +} +export const RoomDisplay: FC = (props) => { + const {type} = props; + const [currRoom, setCurrRoom] = useState(loadRoom(type)); + // insert logic to find ro + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomHeader.tsx b/CageUI/src/client/cageUI/components/RoomHeader.tsx new file mode 100644 index 000000000..0f87b6148 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomHeader.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import {FC} from 'react'; + +interface HeaderProps { + name: string; +} +export const RoomHeader: FC = (props) => { + const {name} = props; + return ( +
+

Room

+

{name}

+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx new file mode 100644 index 000000000..14ce61cc4 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomLayout.tsx @@ -0,0 +1,186 @@ +import * as React from 'react'; +import {FC} from 'react'; +import { Cage, Rack } from '../../components/typings'; +import { ReactSVG } from 'react-svg'; +interface LayoutProps { + room: Rack[] +} + +interface CageProps { + cage: Cage; +} + +const CageItem: FC = (props) => { + const {cage} = props; + return ( +
+ + + + {cage.name} + + +
+ ); +} + +interface RackProps { + rack: Rack; +} +const RackItem: FC = (props) => { + const {rack} = props; + return ( +
+ {rack.cages.map((cage) => { + return( + + ); + })} +
+ ); +}; + +export const RoomLayout: FC = (props) => { + const {room}= props; + console.log(room); + const handleClick = (event) => { + const svgPoint = event.target.ownerSVGElement.createSVGPoint(); + svgPoint.x = event.clientX; + svgPoint.y = event.clientY; + + const path = event.target; + const pathBounds = path.getBoundingClientRect(); + const pathMatrix = path.getScreenCTM().inverse(); + const clickPoint = svgPoint.matrixTransform(pathMatrix); + + if (path.isPointInFill(clickPoint) || path.isPointInStroke(clickPoint)) { + console.log(`Clicked inside ${path.id}!`); + // Add your click event handling logic here + } + }; + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} + +/* + + +{room.map((rack) => { + return( + + ); +})} + */ + diff --git a/CageUI/src/client/cageUI/components/RoomLegend.tsx b/CageUI/src/client/cageUI/components/RoomLegend.tsx new file mode 100644 index 000000000..d1237b615 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomLegend.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import {FC} from 'react'; + +export const RoomLegend: FC = () => { + return ( +
+

This is the Legend

+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/dev.tsx b/CageUI/src/client/cageUI/dev.tsx index e572f44c0..2f4114669 100644 --- a/CageUI/src/client/cageUI/dev.tsx +++ b/CageUI/src/client/cageUI/dev.tsx @@ -1,12 +1,13 @@ import * as React from 'react'; import { AppContainer } from 'react-hot-loader'; import { createRoot } from 'react-dom/client'; -import { CageHome } from './CageHome'; +import { RoomHome } from './RoomHome'; +import { testRoom } from './testData'; const render = () => { createRoot(document.getElementById("app")).render( - + ); }; diff --git a/CageUI/src/client/cageUI/testData.ts b/CageUI/src/client/cageUI/testData.ts new file mode 100644 index 000000000..4b930b793 --- /dev/null +++ b/CageUI/src/client/cageUI/testData.ts @@ -0,0 +1,5 @@ +export const testRoom = { + name: "ab140", + cages: [], + type: "ab", +} diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss new file mode 100644 index 000000000..23c5299ea --- /dev/null +++ b/CageUI/src/client/cageui.scss @@ -0,0 +1,81 @@ + +.room-header { + background-color: lightgreen; +} + +.room-legend { + flex: 1; + background-color: lightcoral; +} + +.room-display { + display: flex; + flex: 4; + background-color: lightblue; +} + +.room-container { + display: flex; + flex-direction: column; /* Arrange children in a column */ + height: 75vh; +} + +.room-sub-container { + display: flex; + flex: 1; /* Take up remaining space */ +} + +.room-header, .room-display, .room-legend { + padding: 10px; +} + +/* Media query for landscape orientation */ +@media screen and (orientation: portrait) { + .room-container { + flex-direction: column; + } + + .room-sub-container { + flex-direction: column; + } + + .room-legend, .room-display { + margin-right: 0; + margin-bottom: 5px; + } +} + +.room-header-name { + display: inline-block; + margin-left: 20px; +} +.room-header-text { + display: inline-block; +} + +.room-layout { + background-color: lightpink; + margin:0 auto + //background-image: url("./rooms/AB140-167.svg"); + //display: flex; + //max-width: 50%; + //flex-wrap: wrap; + //flex-direction: row; + //flex-flow: row; +} + + +.rack-container { + min-height: 100%; + max-width: 20%; + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.cage-container { + display: flex; + flex: 1 0; + max-width: fit-content; + box-sizing: border-box; +} \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts new file mode 100644 index 000000000..ceb0001f4 --- /dev/null +++ b/CageUI/src/client/components/helpers.ts @@ -0,0 +1,39 @@ +/* +console.log(zeroPad(5, 2)); // "05" +console.log(zeroPad(5, 4)); // "0005" +console.log(zeroPad(5, 6)); // "000005" + */ +import { Cage, Rack } from './typings'; + +export const zeroPad = (num, places) => String(num).padStart(places, '0') + + + +// load room racks +export const loadRoom = (type: string): Rack[] => { + const tempRoom: Rack[] = []; + let cageNum: number = 0; + + // generate default cages + const genCages = (cnt: number): Cage[] => { + const cages: Cage[] = []; + for (let i = 0; i < cnt; i++) { + const tempCage: Cage = { + id: cageNum, + name: zeroPad((cageNum + 1), 4) + } + cageNum++; + cages.push(tempCage); + } + return cages; + } + + if(type === "ab"){// 6 x 4 + for (let i = 0; i < 6; i++) { + const tempRack: Rack = {id: i, cages: genCages(4)} + tempRoom.push(tempRack) + } + } + + return tempRoom +} \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts new file mode 100644 index 000000000..ab7c52f10 --- /dev/null +++ b/CageUI/src/client/components/typings.ts @@ -0,0 +1,9 @@ +export interface Cage { + id: number + name: string; +} + +export interface Rack { + id: number + cages: Cage[] +} \ No newline at end of file diff --git a/CageUI/src/client/entryPoints.js b/CageUI/src/client/entryPoints.js index 95c6cc8d4..c11e4e476 100644 --- a/CageUI/src/client/entryPoints.js +++ b/CageUI/src/client/entryPoints.js @@ -1,7 +1,7 @@ module.exports = { apps: [{ - name: "cage_interface", - title: "Cages Interface", + name: "home", + title: "Cage Display", permission: "login", path: './src/client/cageUI' }] diff --git a/CageUI/src/client/rooms/AB140-167.svg b/CageUI/src/client/rooms/AB140-167.svg new file mode 100644 index 000000000..67b9f14b8 --- /dev/null +++ b/CageUI/src/client/rooms/AB140-167.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CageUI/src/client/rooms/Test.svg b/CageUI/src/client/rooms/Test.svg new file mode 100644 index 000000000..651ce573e --- /dev/null +++ b/CageUI/src/client/rooms/Test.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.59 + + + + + + + + + + + +0.30 + + + + + + + + + + + +0.11 + + + + + + + + + + + 100% + 89% + 70% + 59% + 41% + 30% + 11% + 0% + + TEST + TEST + From 3b93e8101af711feebac96893608165981c71978 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 3 May 2024 11:37:06 -0500 Subject: [PATCH 003/357] Testing ReactSVG Library --- .../client/cageUI/components/RoomLayout.tsx | 98 +------------------ 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx index 14ce61cc4..6d603c9dd 100644 --- a/CageUI/src/client/cageUI/components/RoomLayout.tsx +++ b/CageUI/src/client/cageUI/components/RoomLayout.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import {FC} from 'react'; import { Cage, Rack } from '../../components/typings'; import { ReactSVG } from 'react-svg'; +import { ActionURL } from '@labkey/api'; interface LayoutProps { room: Rack[] } @@ -71,102 +72,7 @@ export const RoomLayout: FC = (props) => { return (
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
); } From 44c4346575401d84de5665ee07a45a7aebc392d7 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 9 May 2024 11:08:18 -0500 Subject: [PATCH 004/357] Cage Review Popup added --- CageUI/package-lock.json | 435 ++++++++---------- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/cageUI/RoomHome.tsx | 9 +- .../client/cageUI/components/RoomLayout.tsx | 92 ---- CageUI/src/client/cageUI/testData.ts | 3 +- CageUI/src/client/cageui.scss | 82 +++- CageUI/src/client/components/CageDetails.tsx | 56 +++ .../{cageUI => }/components/RoomDisplay.tsx | 10 +- .../{cageUI => }/components/RoomHeader.tsx | 0 CageUI/src/client/components/RoomLayout.tsx | 61 +++ .../{cageUI => }/components/RoomLegend.tsx | 0 CageUI/src/client/components/helpers.ts | 32 +- CageUI/src/client/components/typings.ts | 25 +- CageUI/src/client/rooms/AB140-167.ai | 362 +++++++++++++++ CageUI/src/client/rooms/AB140-167.svg | 1 - CageUI/src/client/rooms/Test.svg | 72 --- 16 files changed, 804 insertions(+), 438 deletions(-) delete mode 100644 CageUI/src/client/cageUI/components/RoomLayout.tsx create mode 100644 CageUI/src/client/components/CageDetails.tsx rename CageUI/src/client/{cageUI => }/components/RoomDisplay.tsx (61%) rename CageUI/src/client/{cageUI => }/components/RoomHeader.tsx (100%) create mode 100644 CageUI/src/client/components/RoomLayout.tsx rename CageUI/src/client/{cageUI => }/components/RoomLegend.tsx (100%) create mode 100644 CageUI/src/client/rooms/AB140-167.ai delete mode 100644 CageUI/src/client/rooms/AB140-167.svg delete mode 100644 CageUI/src/client/rooms/Test.svg diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index 330dbbe68..629c6b3fb 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -107,12 +107,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -162,19 +162,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", - "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "semver": "^6.3.1" }, "engines": { @@ -252,12 +252,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -276,16 +276,16 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -307,9 +307,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -350,12 +350,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -374,12 +374,12 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -395,9 +395,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -413,40 +413,40 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -456,9 +456,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -842,12 +842,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", - "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -890,18 +890,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "globals": "^11.1.0" }, "engines": { @@ -928,12 +928,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1298,12 +1298,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1315,12 +1315,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1346,14 +1346,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", + "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1536,12 +1536,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1551,14 +1551,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", - "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { @@ -1785,9 +1785,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1796,9 +1796,9 @@ } }, "node_modules/@babel/runtime-corejs2": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.4.tgz", - "integrity": "sha512-ZCKqyUKt/Coimg+3Kafu43yNetgYnTXzNbEGAgxc81J5sI0qFNbQ613w7PNny+SmijAmGVroL0GDvx5rG/JI5Q==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.5.tgz", + "integrity": "sha512-cC9jiO6s/IN+xwCHYy1AGrcFJ4bwgIwb8HX1KaoEpRsznLlO4x9eBP6AX7RIeMSWlQqEj2WHox637OS8cDq6Ew==", "dev": true, "dependencies": { "core-js": "^2.6.12", @@ -1823,19 +1823,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1844,13 +1844,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2249,9 +2249,9 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", - "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", "dev": true, "dependencies": { "@floating-ui/core": "^1.0.0", @@ -2503,13 +2503,13 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.2.tgz", - "integrity": "sha512-4KMApTgb1Hvjz9Ue7unziJ1xNy3k6d2erp0hz1iXryXsf6LEM3KwN6YrfbqT0vqkUO8Tu+CSnvMia9cWX6YGVw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.3.tgz", + "integrity": "sha512-Q0SPAdmK6s5Fe3e1kcNvwNyk6e2+CxM8XZdGbf4abZG7nUO05KSie3/iX29loTBuY+75uVP6RixDSPVpotfzmQ==", "dev": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.0.0", + "@jsonjoy.com/util": "^1.1.2", "hyperdyperid": "^1.2.0", "thingies": "^1.20.0" }, @@ -2525,13 +2525,10 @@ } }, "node_modules/@jsonjoy.com/util": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.0.tgz", - "integrity": "sha512-Yz+xITJ3Y/w0DBISwPkBETP5/cITHXscjgQNZIkfrVz1V7/ahJY8vw+T+LZy/KtXgKuUWqu4GALAQ3bhGt9J8A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.2.tgz", + "integrity": "sha512-HOGa9wtE6LEz2I5mMQ2pMSjth85PmD71kPbsecs02nEUq3/Kw0wRK3gmZn5BCEB8mFLXByqPxjHgApoMwIPMKQ==", "dev": true, - "dependencies": { - "hyperdyperid": "^1.2.0" - }, "engines": { "node": ">=10.0" }, @@ -2661,13 +2658,10 @@ } }, "node_modules/@labkey/build/node_modules/css-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2737,18 +2731,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/@labkey/build/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@labkey/build/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -3007,12 +2989,6 @@ } } }, - "node_modules/@labkey/build/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@labkey/components": { "version": "2.390.4", "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-2.390.4.tgz", @@ -3227,9 +3203,9 @@ } }, "node_modules/@react-aria/ssr": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", - "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.3.tgz", + "integrity": "sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -3788,9 +3764,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", + "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -4886,9 +4862,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001616", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz", + "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==", "dev": true, "funding": [ { @@ -5370,26 +5346,11 @@ } } }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5397,12 +5358,6 @@ "node": ">=10" } }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -5850,9 +5805,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.750", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", - "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", + "version": "1.4.758", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.758.tgz", + "integrity": "sha512-/o9x6TCdrYZBMdGeTifAP3wlF/gVT+TtWJe3BSmtNh92Mw81U9hrYwW9OAGUh+sEOX/yz5e34sksqRruZbjYrw==", "dev": true }, "node_modules/emoji-regex": { @@ -5880,9 +5835,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6674,18 +6629,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -6705,13 +6648,10 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6731,12 +6671,6 @@ "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data-to-object": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", @@ -6804,9 +6738,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, "node_modules/fs.realpath": { @@ -7006,12 +6940,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -9028,9 +8963,9 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -11361,10 +11296,13 @@ } }, "node_modules/sonic-forest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.0.tgz", - "integrity": "sha512-yFO2N4uTUFtgKLw03WWFpN1iEwZySweMsa18XN3Kt0yYrlmVHunC2ZgM+437zDoKISAJHcH3Cg18U7d6tuSgSQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.2.tgz", + "integrity": "sha512-2rICdwIJi5kVlehMUVtJeHn3ohh5YZV4pDv0P0c1M11cRz/gXNViItpM94HQwfvnXuzybpqK0LZJgTa3lEwtAw==", "dev": true, + "dependencies": { + "tree-dump": "^1.0.0" + }, "engines": { "node": ">=10.0" }, @@ -11877,6 +11815,22 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", + "integrity": "sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -11949,24 +11903,10 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "bin": { "semver": "bin/semver.js" }, @@ -11993,11 +11933,6 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -12195,9 +12130,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz", + "integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==", "dev": true, "funding": [ { @@ -12214,7 +12149,7 @@ } ], "dependencies": { - "escalade": "^3.1.1", + "escalade": "^3.1.2", "picocolors": "^1.0.0" }, "bin": { @@ -12584,13 +12519,13 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.1.tgz", - "integrity": "sha512-36cVYFMaa9HNEYyvkyKCwker8DBmOdjWLrfekE/cHEKJ806fCfKNVhOJNvoyV/CrGSZDtfQPbhn0Zid0gbH0Hw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz", + "integrity": "sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==", "dev": true, "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.2", - "@jsonjoy.com/util": "^1.1.0", + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.1.2", "sonic-forest": "^1.0.0", "tslib": "^2.0.0" }, diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index 101490e5e..859db0a3a 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 \ No newline at end of file diff --git a/CageUI/src/client/cageUI/RoomHome.tsx b/CageUI/src/client/cageUI/RoomHome.tsx index a19c8412b..bb414c0b6 100644 --- a/CageUI/src/client/cageUI/RoomHome.tsx +++ b/CageUI/src/client/cageUI/RoomHome.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; import {FC} from 'react'; -import { RoomHeader } from './components/RoomHeader'; -import { RoomLegend } from './components/RoomLegend'; -import { RoomDisplay } from './components/RoomDisplay'; +import { RoomHeader } from '../components/RoomHeader'; +import { RoomLegend } from '../components/RoomLegend'; +import { RoomDisplay } from '../components/RoomDisplay'; import '../cageui.scss'; import {Cage} from '../components/typings'; @@ -10,7 +10,6 @@ interface RoomProps { room: { name: string; cages: Cage[]; - type: string; } } @@ -23,7 +22,7 @@ export const RoomHome: FC = (props) => { />
- +
); diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx deleted file mode 100644 index 6d603c9dd..000000000 --- a/CageUI/src/client/cageUI/components/RoomLayout.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import * as React from 'react'; -import {FC} from 'react'; -import { Cage, Rack } from '../../components/typings'; -import { ReactSVG } from 'react-svg'; -import { ActionURL } from '@labkey/api'; -interface LayoutProps { - room: Rack[] -} - -interface CageProps { - cage: Cage; -} - -const CageItem: FC = (props) => { - const {cage} = props; - return ( -
- - - - {cage.name} - - -
- ); -} - -interface RackProps { - rack: Rack; -} -const RackItem: FC = (props) => { - const {rack} = props; - return ( -
- {rack.cages.map((cage) => { - return( - - ); - })} -
- ); -}; - -export const RoomLayout: FC = (props) => { - const {room}= props; - console.log(room); - const handleClick = (event) => { - const svgPoint = event.target.ownerSVGElement.createSVGPoint(); - svgPoint.x = event.clientX; - svgPoint.y = event.clientY; - - const path = event.target; - const pathBounds = path.getBoundingClientRect(); - const pathMatrix = path.getScreenCTM().inverse(); - const clickPoint = svgPoint.matrixTransform(pathMatrix); - - if (path.isPointInFill(clickPoint) || path.isPointInStroke(clickPoint)) { - console.log(`Clicked inside ${path.id}!`); - // Add your click event handling logic here - } - }; - - return ( -
- -
- ); -} - -/* - - -{room.map((rack) => { - return( - - ); -})} - */ - diff --git a/CageUI/src/client/cageUI/testData.ts b/CageUI/src/client/cageUI/testData.ts index 4b930b793..ce1d13f22 100644 --- a/CageUI/src/client/cageUI/testData.ts +++ b/CageUI/src/client/cageUI/testData.ts @@ -1,5 +1,4 @@ export const testRoom = { name: "ab140", - cages: [], - type: "ab", + cages: [] } diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 23c5299ea..5721770c1 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -64,7 +64,6 @@ //flex-flow: row; } - .rack-container { min-height: 100%; max-width: 20%; @@ -78,4 +77,85 @@ flex: 1 0; max-width: fit-content; box-sizing: border-box; +} + +.room-svg rect { + fill: none; + pointer-events: visibleFill; +} + +.room-svg tspan { + pointer-events: none; +} + +.details-overlay { + display: block; /* Hidden by default */ + position: fixed; /* Stay in place */ + z-index: 1; /* Sit on top */ + padding-top: 100px; /* Location of the box */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background-color: rgb(0,0,0); /* Fallback color */ + background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ +} + +.details-content { + background-color: lightgrey; + margin: auto; + padding: 10px; + border: 1px solid #888; + width: 80%; + height: 90%; + border-radius: 25px; +} + +.details-close-button { + float: right; + font-size: 48px; + font-weight: bold; + padding: 5px; + border: none; + background: none; +} + +.details-close-button:hover, +.details-close-button:focus { + color: #000; + text-decoration: none; + cursor: pointer; +} + +.details-header { + display: flex; + justify-content: space-between; + align-items: center; + + height: auto; + margin-inline: 10px +} + +.details-header h1 { + margin: 0; +} +.details-header button { + margin: 0; +} + + +.details-subheader { + padding-left: 10px; +} +.details-subheader h4{ + margin-top: 0; +} + +.details-divider { + width: calc(100% - 20px); /* Adjust width as needed */ + height: 4px; /* Adjust height as needed */ + background-color: darkgrey; /* Adjust color as needed */ + margin: 10px; /* Adjust margin as needed */ + border-radius: 5px; /* Adjust border radius for rounded corners */ } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx new file mode 100644 index 000000000..d0945c358 --- /dev/null +++ b/CageUI/src/client/components/CageDetails.tsx @@ -0,0 +1,56 @@ +import * as React from 'react'; +import { useState, FC, useRef, useEffect } from 'react'; +import { Cage } from './typings'; + +interface CageDetailsProps { + isOpen: boolean; + onClose: () => any; + cage: Cage; +} +export const CageDetails: FC = (props) => { + const { isOpen, onClose, cage } = props; + + const modalRef = useRef(null); + console.log(cage); + + // close modal if user clicks outside its bounds + useEffect(() => { + const handleClickOutside = (event) => { + if (modalRef.current && !modalRef.current.contains(event.target)) { + onClose(); + } + }; + + if (isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } else { + document.removeEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isOpen, onClose]); + + return ( + <> + {isOpen && ( +
+
+
+

Cage #{cage.name}

+ +
+
+

Total: 2

+

Status: OK

+
+
+
+
+ )} + + ); +}; diff --git a/CageUI/src/client/cageUI/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx similarity index 61% rename from CageUI/src/client/cageUI/components/RoomDisplay.tsx rename to CageUI/src/client/components/RoomDisplay.tsx index 0b89e7ac0..d12cfee35 100644 --- a/CageUI/src/client/cageUI/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -1,15 +1,15 @@ import * as React from 'react'; import { FC, useState } from 'react'; -import { Cage, Rack } from '../../components/typings'; -import {loadRoom} from '../../components/helpers'; +import { Cage, Rack } from './typings'; +import {loadRoom} from './helpers'; import { RoomLayout } from './RoomLayout'; interface DisplayProps { - type: string; // room type + name: string; // room type } export const RoomDisplay: FC = (props) => { - const {type} = props; - const [currRoom, setCurrRoom] = useState(loadRoom(type)); + const {name} = props; + const [currRoom, setCurrRoom] = useState(loadRoom(name)); // insert logic to find ro return (
diff --git a/CageUI/src/client/cageUI/components/RoomHeader.tsx b/CageUI/src/client/components/RoomHeader.tsx similarity index 100% rename from CageUI/src/client/cageUI/components/RoomHeader.tsx rename to CageUI/src/client/components/RoomHeader.tsx diff --git a/CageUI/src/client/components/RoomLayout.tsx b/CageUI/src/client/components/RoomLayout.tsx new file mode 100644 index 000000000..c4cb6c89e --- /dev/null +++ b/CageUI/src/client/components/RoomLayout.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { FC, useState } from 'react'; +import { Cage, Rack } from './typings'; +import { ReactSVG } from 'react-svg'; +import { ActionURL } from '@labkey/api'; +import { parseCage, parseRack } from './helpers'; +import { CageDetails } from './CageDetails'; + +interface LayoutProps { + room: Rack[] +} + +export const RoomLayout: FC = (props) => { + const {room} = props; + const [isOpen, setIsOpen] = useState(false); + const [clickedCage, setClickedCage] = useState(); + console.log(room); + + const openDetails = () => { + setIsOpen(true); + } + const closeDetails = () => { + setIsOpen(false); + } + + + const handleClick = (event) => { + const cage = event.target; + const rackId: number = parseInt(parseRack(cage.parentElement.id)); + const cageId: number = parseInt(parseCage(cage.id)); + const clickedRack = room.find(rack => rack.id === rackId); + const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); + + console.log(clickedRack, clickedCage); + setClickedCage(clickedCage); + openDetails(); + + }; + + return ( +
+ { + const cages = svg.querySelectorAll('rect'); + cages.forEach((cage) => { + cage.onclick = (event) => handleClick(event); + }) + console.log(cages); + }} + /> + +
+ ); +} diff --git a/CageUI/src/client/cageUI/components/RoomLegend.tsx b/CageUI/src/client/components/RoomLegend.tsx similarity index 100% rename from CageUI/src/client/cageUI/components/RoomLegend.tsx rename to CageUI/src/client/components/RoomLegend.tsx diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index ceb0001f4..52256afee 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -3,16 +3,33 @@ console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ -import { Cage, Rack } from './typings'; +import { Cage, Rack, RoomSchematics } from './typings'; export const zeroPad = (num, places) => String(num).padStart(places, '0') +export const parseRack = (input: string) => { + const regex = /cage\w-(\d+)/; + const match = input.match(regex); + if (match) { + return match[1]; + } + return; +} + +export const parseCage = (input: string) => { + const regex = /cage-(\d+)/; + const match = input.match(regex); + if (match) { + return match[1]; + } + return; +} // load room racks -export const loadRoom = (type: string): Rack[] => { +export const loadRoom = (name: string): Rack[] => { const tempRoom: Rack[] = []; - let cageNum: number = 0; + let cageNum: number = 1; // generate default cages const genCages = (cnt: number): Cage[] => { @@ -20,7 +37,7 @@ export const loadRoom = (type: string): Rack[] => { for (let i = 0; i < cnt; i++) { const tempCage: Cage = { id: cageNum, - name: zeroPad((cageNum + 1), 4) + name: zeroPad(cageNum, 4) } cageNum++; cages.push(tempCage); @@ -28,12 +45,11 @@ export const loadRoom = (type: string): Rack[] => { return cages; } - if(type === "ab"){// 6 x 4 - for (let i = 0; i < 6; i++) { - const tempRack: Rack = {id: i, cages: genCages(4)} + if(RoomSchematics[name]){ + for (let i = 0; i < RoomSchematics[name].rackNum; i++) { + const tempRack: Rack = {id: i + 1, cages: genCages(RoomSchematics[name].cageNum)} tempRoom.push(tempRack) } } - return tempRoom } \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index ab7c52f10..b08e4d03d 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -6,4 +6,27 @@ export interface Cage { export interface Rack { id: number cages: Cage[] -} \ No newline at end of file +} + +interface SchematicRoomProps { + [key: string]: { + rackNum: number; + cageNum: number; + } +} +const Schematics: SchematicRoomProps = { + "AB140-167.svg": { + rackNum: 6, + cageNum: 4 + } +} + +export const RoomSchematics = { + ab140: Schematics["AB140-167.svg"], + ab142: Schematics["AB140-167.svg"], + ab144: Schematics["AB140-167.svg"], + ab161: Schematics["AB140-167.svg"], + ab163: Schematics["AB140-167.svg"], + ab165: Schematics["AB140-167.svg"], + ab167: Schematics["AB140-167.svg"], +} diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai new file mode 100644 index 000000000..0de1964e6 --- /dev/null +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -0,0 +1,362 @@ +%PDF-1.6 %âãÏÓ +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator 28.5 (Macintosh) + 2024-05-07T12:24:20-05:00 + 2024-05-07T12:24:20-05:00 + 2024-05-07T12:24:20-05:00 + + + + 256 + 180 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 + + + + 1 + False + False + + 999.801147 + 699.900024 + Points + + + + + MyriadPro-Regular + Myriad Pro + Regular + Open Type + Version 2.106;PS 2.000;hotconv 1.0.70;makeotf.lib2.5.58329 + False + MyriadPro-Regular.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + Document + AIRobin + application/pdf + + + AB140-167 + + + proof:pdf + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + uuid:57daad66-f7db-5a47-945c-84b5ac48f946 + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WÁ®å4 Ý÷+º¤›Ilj· ˆÕObÉâ‰a„æ!Ͱà÷9NÚ´…ö¾^©£‘æ>·uâããã8o~|;¾y÷Öß~÷v> ~U§£âÿâÃxkæç߇_Ç¿ðÖþýüÃyÿ5ºóønÞüð‹ÿø{ø4†úþwì…G&¬¤ÌãóKõBˆ®$oÁG§1އàÅeQ{T\¡1'Ù¾ä(§‘g‚™’ ˆêyøeø AÀ÷Ÿ«á!,[#,–1%¬S­÷ÆFˆØcS[cñ¡à] šw“Òž“Gv¥D.dÕÅ ¯}–rìÄL. +ñÖ é +ÿw¤Ì¹º°P8éB‰Ì'¸"QÖ€²K: Ÿ†oŸ&r?ÿÑ©|ó~³užÞˆÑ^â'€IÖä¼÷i|z¾Š_?ý9|ÿôHíщ±<–˜ÎÛLv‘Ëæ…l§5¾ÊD×QYèNY(‚%”¦$ãu #a1=‚aŒ”Ôa„/ÀÈcõ] ^Ú¢*÷øØ¡ àû”«ºµ`ƒ-!á ')»NG-Áœe®)ã¬t&eÝÉ*_$È™Ê-¥:e §äbNÑ£¥šSÒWºÂB'¿•K¾Ž‰&bÔÊ#ø;={Pö”þ 'IÞÂ)×V[eæ¨öôÏ'¦ ¦›âK<ÝŒ™pÒ`æ±rfì¦tåN0V6PäZVã@ ‚¨dÕq@ê5—]§ã@%¾ Rpås9›|Rq …yVÌD¨iøÿ—›#Ÿ¨¾˜Oø=­X´´#æB±@¸ˆÞYÙq÷ÌO©, .l`‰Æ÷ß»eÌ«*t^ðls´CÒ*ª[v!a·}÷´.fA¯C‘C’ +*¡w–3:/W‹ ¼ët¤óÙå"ZJ‰ñLº“ ¬òLÁ¦ÄnÍ ·¢S*1'Ïjõâ]ZÓùŠÔ³¤íÙ.œ)•š¥Çðwzv Ü|Ámr 婲³rÄÿžì1†bÖóÚ“8 +ë[Î+²7Z6‡ã…¢é¬Gª¥×œÒ=ÊÊ…Cqçä± +Ž˜vptïCyE÷(^UÔÕ̪[ÃÕÊNÕï;©ÞœD¼Ô1ÉK.grÖ `J>ž)~ âÙ\â©_­£b8€Xr +rZñ!.Ч ÈHZ‡@wJv@ÜU<%Z@\9°L,±½'veç«l!¨¢§µnLôÑþÂÞÛ™x¬fQxLG0îèܸè0ÎvÞUúò%ޱ`Ü ëÃ8£Âãx#4`ÆÞv’ñ†Â( +ó†é0W;ÃóaÀ—Ñ£½¹„h_†ÖK¸àœö}±¬cµ<Âfle$E®Ì/¢XoÉQ©Ž¶Bµ¥¤–p6K›e=Vßèp™>ýh&®0V‚!Hð´îláÌÃTõlÁ+8k}œÍ< ‰Lš± ´hqJŒH0ˤ†ð†%쇋™Èîl7kv»mKØÊ«/@”4ÿŒ¼Ü +:jìà{œÏ–6;å@þ͈Bì†v6QGl_Ïv² ç8;S®u8/Žë(Sý|Ú<âÆ`ÁN¡ÁÔŠi +~²-ø ^ÿbB…±çgÙS9ê»G€¸9†%ÀnÏúƒ àä?Ãÿ¶ÁœaÂN+%b÷ŸþÄ|¨h…Ãõ9PÇܸªKø­õe³ePí±Æ@\Vvr~ QÕl¢ÕHÑT75;àƒ}0…h#k«L7»•I€oÿøÉyƒ¿ZÅgÎû³“ÀKx³9‡?Û¼ÉyFß–îÉ™6¶ÞW |Š«'w›þº:³A…¸Œ µÍ @LVÍJz=¶wBŒõuåkJRÓ{Í!´'έÍLlÍÜD\w@s«qI–Ù´¯6ô·©ßáÎØúZU;ÀiAµñ™H‹‰ÅXZ%å´˜HhàºøüÓé8{ƒž´¯*c ¦éºyDª½³G#3»8]"¯ÖóÒaÚ[kz³ÃñRkSÒfqb€ º;Û(qÜl÷èç'H(§RÅ(׸¤–¹yî´­œS”Ú5Õ,±ZOÏZæJ 6À6¬5ˆªÑ¾B{g)ûÚsžíH鵄’ÙF„ùA§f±À¶IÇr’8O%•kÄÄMg™¸f‰8®ìY +ývª=Áh ”cZm!•¢ÖkxR¬QMà-½=4³ÕtÎËëÐÚZ÷FjE7ë[i¢ÑÙ#œía~0c´Â*óK–Bï­--Ä9Ëž‡éHAUáì|Yɘ4â 3íeÐ:N]¥¸: S@ûÎÉÞéZÆ'_®ùLu‡K 4ãB×Z¾(>m®ËÄlíZ7Œ˜Ÿ°Éä5!”>±h=â? ï¿ÙŽŽZlDIíÔ_ý7Ô0”ëÌÕ (Ö©/u–YI°5VÓÚ@ðG­>r½Ç¶ß¿{;âç_ÿÿÿÿò'—b endstream endobj 23 0 obj <>stream +8;Z]a;%A4$&-U@nrrp)2gK;d!U%0Xh+urTb>"Er&BRSLCT`9&GF>PejFns,;VLI04TYM(k[Bs5UoLOCWE.,fq?,k/ +Uff.p.&:%X/GG5_c93C@mY*K`BY!;36J=hR!<<-"rr<$!s8N0$PuYQW~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/7/24 12:24 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -371.139245021352 858.326532935701 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -371.139245021352 858.326532935701 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX·GĤ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJHÃ:\ Ò¶m-ð®ën)© 16¦û » Ò ³ê{`Ì]Ÿï¿ÝšgÚÆkWT9åß’FÌh+ú$<'§«•P¨,û›IOŽ#Ø0¿[6ÀN† R$}C•êfÍžèZÂÃöì™Añ÷Ônf€Ó6¬†%©us$oÕÿç´+§û듞ëT€•íLJfhšckÀ€À“¡ÈM|ê«êØüù*8î¬ì§îÿ©Ý/Ïòû]ª9à°kW€‡í¯ù¶cª“-rüÀ½]õÇô˵w,×÷íÖo ·TûþŸ§\¸vt÷v_÷þ/·®Ïï6]òg¹ñßYŽ_'®u¿ð@b€¥ç:=µ¢Oâ^}Li–b‹Š<®gŠÍiÿ´×\ßöý‰ã[9]Ÿ¦à^÷FŸpáØÕà[vÇOÿôàßÚ—áøŽÍ«o—~Í)«rÞŸz­*—ÞØö¯éל’#éÁë¹æ´Tpk`õ1(=Ô»(vÏ9/ÅÛ†U– ðaQÞXy@QïÕÇt?ú˜%Ÿ_å²÷êcİ%K1üöjµé¶öÂ5K ’íÒ¶ìÖ·fVÎ8ö‚m­þ´KkæSÚ¿Ýx¶a–vÇf—j–]ï|ÇN­r&´ÇLÛ.Û}½.=‚pìò:žU¡Ó¯'ß_k¾ô¡cqJþ¿fi]«çxVioíΩ»v5SEqìÞ|öÔ{‘K»†Ys4»h¾æûžÑ°|åYõ?üW®Ô?ŽiÞ,y'Iz­>†‡&©‘!Í^Îðíz¾Š}ìúßÿåÖ.§rºn®éú ˜µ/ þö¯é°ÆñO;Xj¢ï!ÃR%»±›Ш¹-Ï0ë×Ú?¦_³J£áXµÒxŸgôÓ:K†[6,»¢zžcö €o7þ'.»exæˆÛ½?n8†S° ‹î öœ^¸nü‹}Û>œrïz¦X¿[« íAÇ虣}–cÉ.æ–+ŸÆÿËÕh÷·ÍÑê¯i½W΄ƒáúþüwVÁrèÓ¯üþL)qÇè;¶áà‰ËšB\ÿÛv=ZËþͬœ -v¿çÓ¸ØÔ.ìо—¹·«š¡ýmÔ“©8Y€QŠóïûÇ.ç•דY9¹:{|Ù;ÒºÖ3ÏHãÙ«qƒ’–Ñx×кv qÍ¢ñlÀHãÏÎÑ(ú²w.zR ;7=®…݇f÷œÍ—¾›cï šÝ$GÓ䤻'ÍôxæÑxæŽ6ÿ1ý‚?_ÆÐþËÕ|šÂàŽcîê«¥DæÐdfùòeöÜŸ»>Mλzk=‘)Ù+¯ž¦øZªØ Ò>MQÿ·Þhõg¹²›ÑÊW^Ú꫟öÈÚg &3ú2‡öeõ¿c˜mE¯¼ªhf£Z癞¸ìƒž8MÔF­k^ë`ir1$ýXŽb÷ÝãZX’|4;7CÑ“`÷¸&Ф†ÞÁÐIkcIö>ަùX‚£Ç5“wQ4LJc’£Ç5Òûp}iŽÏJYž8-Ì"Y–efÉvî»÷>KA5ËÊÒ,3Žf¥ +úЋ~ô¤/½éOúÔ«~õ¬ç`=‚!(‚#H‚%h‚'ˆ‚Y +ªà +® ò°‡>Ã0Ã1$Ã24Ã3DÃ4TÃ5dC.vÑ‹ Š¢8ФXЦxЍ˜Šª¸Š¬ÈÇ>ú1ÇpÇq$Çr4ÇsDÇtTÇudGNvÒ“ ’")’#Iž$J¦¤J®$Kò²—¾˰˱$˲4Ëì,Ñ2-Õr-Ù’›Ýô&h†¦hŽ&i–¦iž&j¦¦j®&kò³ŸþÏðÏñ$Ïò4ÏóDÕs=Ù“£YG= +¢!*¢#J¢%j¢'Š¢)ª¢+Ê¢<í©OÁ4LÅtLÉ´LÍôLÑ4MÕtMÙ”«]õ*¨†ª¨Ž*©–jfª§Šª©ªª«Êª|í«_Á\ÃU\Ç•\ËÕ\Ï]ÓU]ו]9ÛYÏ‚lÈŠìÈ’lÉšìÉ¢lʪìʲ¬Š¢¨‰’¨ˆ‚hGÙS=ϳ<Ç3<ýÉOÕDMÓ$ÍÐô&7×-Í2#K±ô%/W’Ys${*žb)ŽbÈ–` +f(h¦;›dúÞÕì4K“M_–d9–c)–b–YGÑsÌÆQÅ>öS4×0Íü šèèEŽb¶Škv’&HötL3s,GRÁѯcKf½§þ,Cz¿fbW®žcÈÁÎy$ó¨ïeW5ÍÐ=Ïó<ÍÓ<˳$ÏñO1<Áôg?ûÉOÖdÍÕ\MÕTÍÔLMÔ<ÍÓÌLÒÍÑÍÐ MÐôf7¹ÉM¶d˵TË´TË´D˳4˲$K²K± K°ô¥/{ÉK^²äJªdJf(y’&Y’$9’"’ éÉNr’ÙqÕÑñͱÇqÃýØG>²¢*¦"*šb)’¢(Šb(‚¢3.²áªa¢áš!Ž¡†!ö‡,¸‚*˜‚(h‚%H‚#(‚!‚ä ëW¯zÔŸÞô¦'ýèEú ôÝwÏ=ÛÕžö´£ýìf7{ÙÉ>ö°ƒì¾÷Î;ËWžr”ŸÜä&/9ÉG.r‘‡äžwž d¥ìE5¯q-S°´÷¿\Y%4Ç-øuëVFµÞhˆMñi·õÑ^96Ó¯9ý7ûhõexÕº]Îèþ²snv1µ+»1'¡)è9þäõUÏ«¯ +€oÕ§íúÀ,V¹5HKhŠ[õRíý€¿c¿òU0Çnúk7fšâ³ÞU«ç[õEª×¿íŸ«à»v9/¶S0¦¥º]>Z=ßð»jw}*hØõâyÝõ™Ðš"žgÖ²c5ªµn—#oäúß·ËIdóJ®Ð±¹ne˜‹9­ÉX2|ËpÍ‘gÍIäß)žS¯ŸÓ—ý˜¦Ý‡^û,ù`Ž¿°{ͽã¯~¥Ùµ暦Ý4»»*øuëO4{¦¹¬ÿÚ|fٵحYÿ–ᦿ[{çšv_¯˜ý­Vð»ð]»ô{}½ìYýo÷׬϶<à†ex%ÃßHv-vc°Ïò’]ëc/eŸzå•ô}¥“æ`Éð;«äü¯˜ :YÄ”Ésíª>×—gÖüÝ17~Åj—%ÇZ_¦rïùý¾€_§>y®Uîëû`Ûþñ=¿¡Ph³ÙT*_V©¬ë¹ž_öÊ®›[wýéo»)ù«Þ®?ýÅ©7^}ðêËæ:¶ºõŠ4à¿°øSïë-Û}åÿeþÖÍy~_åÒögÃ6 Çñ¿W?¾ç×c8Æú2®çxuÏrìª`Ö¿ÜX5ÀÿdæWžáÛþ1Øü}÷ËpSÙîë­çï˰ ¿þê­çØë“ÿ€˜ ¿ìXLg-ÛíÍ·žßê¿÷,{Ÿ«v_ÿuëû»[,¸@Ϫïýõ¯¿ÌŽS¯ì¾êÏúZ´[³ÜÚ¥¿ûÇq,õÉ3|«¾ý±d8®ÿm·üUßÿ5ë¿_ýY,÷}Y,ûæyžç/“a†ÿÿ_öU®û ðãÕ+¦ªa•û¹îú²Í÷ß¾5ß¿c*wýÜ8†ß¯J?– ×çgÃö¯?üž_é»ö¸5ëMíÇ,¶ÿ=Ç`Ÿ f¥ŒŽÝÿÃšã¹æp\fßò½æô•WŽË>óLzòò¿o7f}ØK±¤iz“{³w^z¥æÉ®Û4ÅRIÓ4¹×ÍÞÐL1l8d˜×›Ïr9)À‡EâûO¯¼ +ðoW®ÿŸ'²—¢6–]뢩ìšÙ{èͲä#èñÑ—ÚÈ}Iúp,½é…¥/5®y>’aÉA°“%i’×:'EÐô 8zÐ+ÅRó"Ø=Co‚Ýë$ØÐÍ ùӛËB-ôŽ›upZÁ§[þ·<§'f}ôDv»þ\Ì+¦)ïX<ÛßsVí‚ܘ½ëó$Æÿ3¦æø±«ú|VíbN¡×ö Ë¡úÇ1çaø¹ëó˳Fsða_GÑ,5°ƒœäÞwÎEÓCÍC’ )rnz ï1 +=35Ñã\ü·Ó¯:•4ù’¡íªÝ=× +y†aÖ÷”G[Çe\sØ,¾ïÿù,÷U9‘•“Ë4Çg¹vèVN.ó`×õO½bš7†cèÉ÷ÊÙµÛ}Õ3ûc˜=‰•óýïÿšÚc¬ïiÌ5çuáz@FsØ·<³.•£šs’æÞòg¹Mv¤šÃ®çxNmû«æšsËÿSÍ*ÇeàÈÆžsnz¦9jåö2 ÍÞy陦©õ°ÁÐä\$CP,G‚&È9çܳ¿¦p\Æ9©qλÆ5®9˜Q– ¿rlF9.Kpìšã¶mW€ì¦—e8ÀBïð] ýG~¢æø·«Ê3¬€]{ƒ‡=šãÇ7 â¸L‘Ðò\ÿ—›j°€IhŽzfE¯ôšCža»þ¢SY99.ã^è5…'QÏ·[ßv,Ž+šæ¨çÛýuÊq™Æ=°ñSó{6>œ ¶G=nå@Ñâ2Äš·OH*kBRñR¶§PìíæŒù¸{„zƒä1"]QX~¹#]§&iR+8‚ðÓe‘ܾ}Û’KµK—oߎݰ.Üuk#ë¡WÓÚP ÖN3H\Ö EVSkF$:-Xe‰sc;©%¢ž8¯'Âe Ï&Á8¼œsbõÙ~aóÆ=Äè„úD9TX‚ÍØBc¡`+XXvíà-Áæ27%ú\œ‡bÀY$z10Y´DM(~t\æ™tJƒM€Ë@RݶâÖšH!—ÆÍˆ²¼ab ŠË\C*AÏ„Í?Nbs͈xº4¶Ôé6Î{bl1E)±Þcû˜DŒmÀ£2¶þ¸,¶S£llW¤Û¸ìsÐbl¤Á“ % ïÌ®IÆ ^8-¸&pÓöGØ~Á$ýFOÏ/hÒ¨³S õ\æ¥+Îe^ºâ —¶F¨ç2Ò¨A¡ÑG áÇúTŸÚúÔ& Gá.A>á`$ B_ñÎ3—àz‚ËÈÜNè´  À0·k nç2Ï€!V4©D#Ѩ®¬=…!V|C¬¸ï\ö‡tsëû¼Ç¹èǹè‹Ç¹è ËžEmdµ³ˆËB³ã\t…x.:Â^ž‚F +Ð4j͈Bá)Ò—1ºEB¢ð´ŸÜÏ_œ6òâ´/NùŒ( +O5ˆŠÂ[Ç!¹Ð—pë8$Ù…V@BË.\I.4’€7Ç!é,"Ì4€`ÌÒ%Ü,j#f@.3 ‘´¼ºÃv hyZ^­ñ`m¤«pY‹=@ýV’ÊÑÝ•ƒJá¶ <—)dÛÀûÕE¼¼rÐP€);rÇ—§™ç²Œ; ¼S†¹< …¥¸¬ IG!¸F¨‡¦"ÅSX­1Pz\XäŽ$+¡¯F0ÄŠËDÿàóömÍH‚ËB'÷ó‚ÁAxÔãV†·˜¨oßD +Âe›éò„ÁííÛr™=‚ |]º"—ÁÂΦä¥+κ]eÀ|*åÖÈxÖM02„GÄNÓéX˜OEºN†îvªýB÷ç“úô©‡K rÍpÙŸ¯¦ìðâ´óy¡¹tI·Š +Ö›A:(PmƒéV{Fiiöx·$B_qšÔF:ÕžÑÎ?¸¬{Ì4¹ˆ2‡dãpY¬ÃX‘ޱ2¸¬Â%_PëãÔßúÐô\tÔãrÙœapk$ÒuZÛ`íj©5#êÈå( +ç„Z3âRY'Ò©›þ8N´ðùÀ‰t¹CQ裇}zt¤†^Žz\.‹c¬1Þ=‹FÊQ„˜‚ËŽM ®c#ÃQ€¿B†Ë:§((e[Ò¬£Ž¦´WÂ[sf–ûK°K¤° 6 +…ô¼×Q±Úð ¦5 +)%hw».¯ÙhQ¤°®Ý ¼á +c±ü{YˆÖõ¼ p‹–˜Ù¨]ƒAxBÍqtJ{%œ‹®HAà¯Xa@¯´ Ô5—ÅF#ä2ó•b:T ”öç!ÀBü„ï.š¦*MY~O`%P¹ŒDJ@,×%uMhGlq:TÆ­“-‰šo£8€—•êrªÍœõÔÏ +¢ü„ÀÎÑNpñÄ~œËhEº‰1—–/O´ë@#D¢Ù&¤dÁvÊú@"ìA@$“¥dQº`/žrYAç”]i VK6…‹!PPJ†°C”¥”0 +wmO>¦ô¶HÈ®›@Á#(} ´ën­ëz³^N¡ nÔ”‹ÃÖõ¶ >«äŒ¦¬Xrt'¡fP£nÂ&)(Ë n„¼;4;ƒº nIPÈe“Ej èq $%Ú2‘QõÈ~¼ñýÛò°•,» žÃÃ˹(õ![V5È~pÁ-ðÉ&ñp9 uÅ {—¦Ï* ¡sé\öI±¦Ú ©ŒG™=ኗ…×ë—m݇«¦Ë³@=ºÖ‚&t.+¿«1Ã^šð4™¸¤|„LÜ,° b‡«0RhÎ}!¤ .°‘Ab¡Ú~EƒØ(%˜=3&ƒ€Ãd€s§ðHœB_m_Š8ˆœË`­ch¶„abþðòÈZrC‡C°„IÄ+¥ö&¸-$â”RëÓ||sç2²Ôb>w¬!"œÕ墸T@<,qY"3q¯^Âã%r‡!Á̇s™ØP?õìyĶj±,»ÂeŸM¼á&OEµákÊ´fÊÒe·(Ï—õšE­ +õb8M^JЄ¹(;ý' +ç²Î^Žy¤[”hV0áǹÌ¡<º"¬kCID^Ôdø¡Õù›x<¹_ôê’€—®xÜŠ‘®ò™„2¶·C¯ã´6苳ª˜\f§Þ”û¯ëˆú$¦Ýa£H7ÑNµ‘.V ƒÆžQÒ5ú8¬†#»ÕûÝpqt“¶=5”80mYžÏ>`¥º£’ú|5¥>R)ñ¤3\ ÝÈe¨Ç}YÄHG (èÈ!ãù„÷0B;ì(ÒMüxJª¿ŽG§EÑŽê$p±j;{hºÆÞ‚Êe$‡8.&Ú$ÈÇCÚØ@-ÆÆecã2‘äÓØ<þ&¶¬í6K‚ ÛÜÑ:‚ÏŠªDÁRGa“^zf()ü-2èçí‰h>Ò‹'€ ¹ŒLt&`ç&ÚMÐ\ð((ƒBWª¯#Lö20RÎq“{qPƒ †Cà&•sYÇ@ñÔÀÀÌj~Ád5µ_Q’CVÎxVΠëC—ЂÇ@®A¿AVÞ…JªÏöB³‘Xõ#Ô«5RNBBR×á]3$Òm&ô¸ÌâŠtÛÈ´4¶ÔSuÛ¥n!¾ÆÖ%ºíd=cKuäÆö²}]Û˜»Ä€ž‚;pLb6ÍèVºâ·‹ +M2…“c"Ð1,\5a2ŸÙZ8—mޝÕ?Ä?[å¢`2ÝCë¯c¤+Qb¤“XPðnIºŽ´Ã-5 +µž©¤ú,•ã\ðoB¢nZ५/  PDûó¸Œþˆ‘NA‚|FoÅ»`Å&¾'ƶšDŒ­\¡ÛÇSu[Ù([Å$bla]+¶ÖètÞÑ}¦ûxã¸ðNìÓ7ÆtØääïQDóÒŠªs™|‘+^ãøx>¥ +OP€t#JŒt/È™E5^#ÁX‚% +(fdò9¼<‚ÚHB—*F:•tx9"Ó}üK‰$‰#—1´ÿΪ¯Še¥’~ÎOshÙ=Àõ^9ø ÷§^·<³ µ}äú_æ;v®XœVôñªsË3;jEŸVôU¿æ´¢ÏyÛ.æ¾å™mEŸÿr5­èS˜[?¦á;Že¾÷óWõçĘÃ}z³*'¡=è”ÿv˜vÓµûÚ}e÷þ„4íÖ Æt>,JýÛvY®UöW=Y€YvÉ1͆W³ö혻²*W4ÛÕZª˜­©à˜¦]íŽÍÜXsaí«Ü˜Öæ[{ÿ—µØ< ž5¬É°ËbÉð ¿_“gMvcZ‹Í¾m‡4OcUŽìj¶«ý^i²«±dX€kkòo  Ùšö[·ökWûöoê³³¾§òY.G+%ÂÞ¸u úvȃbØ•S¯X ôo·þòo»«v3õO=f|Û_pÕnæ× Yž3!K†Gñ–ÿ[yå9õ pëövSs­:;hNŸå¾*ÞWàØŽÅ*¹rbUŽÿ1 ]õ,À]Ÿ¯¹fÝXg€[·ðå¿æº¥šå9# 0«¬Êé½rÊŸgEµôÙx´~LÃqêO ¾åS«œÚÛ³ k³¬™•ó´]žš¼:Vñ™®c—ÊS^ßò‡kO ž[4¯hï­U¬zfÕ?vûULË*• ßÞ[«Z<Úë/`öÞZ5à¶ù ß©ùàËp¼ú¯çz±¼W«V2üY.]{®«vSœÏ«šŽ_ï–W©˜íÝò*þ~ §\Ö—UžMËó-Ï*U=›®ÿë¶lϦïo{6M“5Ⱥë/@ži8Vyôð-»³êÛ±—ž=z€Ã-è˜íÑÐÄ)Wþ*9¶²eÙµë·~ç— ) +8›O¢@{ÿíΩ–úš÷ñB‰˰÷R¹¼T­{ö^*R¾–Y°ý_/5ÌwüßùõÒ÷êÇ5Mó>z5M €kUÒÞ/ë¯&êßö-ÃuMÓ4ýzñmÏ-¯¦iÿ,÷{5m’q<«ÆÿcT5«ßŽy«Õüþ§<׋E×´ûºá¿U°ªÍ+¹’š-Ú-É8žU²§hØeÏß®¿€_³d·þ,7Ž]/5|ßé…cWt‚W0«rZ·K÷ØU}Xß>±dXÀœù1Ü ]ùS95ÿÊ® c´gÕz¿gͧ}Úã­H7¢`"îyœ È…$ j`àrRF¢µã²Ñ@Œtb×Z8iŸ ÉePl†Ð‘ˆbÁŠn1<¸?ó@޿ݽ?ž˜ô¶sÓýq.Sy£ûãi QÊݰc+])Lÿ1¾\,ƒò—’âÄžÀÍäSàëŠ`$Ÿ2¹J®oäúxÃãúxl _ÐM}|ö3âM©RŠR_(õqFEáMÊ ]Òǹ¬pоâA}Dúø[QA1aÛÒì”…‰ñ©Lp»‰éŒZ3r®l!³÷S( éã/ïðò‚@!Òu 1Ò®OæKœoâ|œ!~ÎÇë Áí%ÆÛa™‚Àú Ö¾( (œÁr>~šp>ÛB°{ÚÇlߌP¿`^îUÚs™‰‘¶¦¤ýxÌ¡(ÜÔ7'ëa¿Jäã’ê)$5¸$¢ #æíR¸ÁÀ¯ˆ7a.ÕÊe·#´ +1 Šé ÇŠw1Òu0ÄŠSÄH·ø‰“ûùç%8¿_¦ô®GX,F/3~egŽ9=zÚùæRFÆö‚gc“”ªaÓ:ÝÆeÄ×øJÕ°©®H·‰_c 5Šíp{D%]qùú¼m¼ª‡°iª_8Êóu G«,ñää/…_8HUXt¹Ct’;â@Q0˜¤C˜ûñðÃer.¸,È PˆÅÑiYMG5‚VUƒ)çø)ç +:.“’̨÷6sÙ,[^ôb¿'ÔòÉ«&ƒªÃ‡EÛ¼9óaÕ§ã„Ò;¥©â?Æšp™Êò²p—:h5ñ|t`­0þèÒóè$*˜Á<·È\ÆØ\½7xêùÌÛj>ƒ' d›¨^Ä ;n'ˆY¨I³ŠËø@›RpY‡Ë¸ŒË¼’!‘1-íÊmr°)%XÊŸžQgñ + y%´ŒÍ7z`ZËÔÃ)4QMÍô¶öûm¹ŒË¸ŒÄ b5—Ù‘r²¡ÕÄóiP(èCq[ºÝ˜Êe +Îqòî +*¼c  |©SýLçÌÇñ-Çä¢pxž5ÁÕoÜv‚‡óŸµ©q7F;á 8°ªe¡ãÁem§ÝF¡)Š™ÂeÛsFô oÞF/.ã2Çz²^\ö9€J/.»?¢+x]¡þQ9,­ÑQ”68M 0÷ã_²qÙŸì"vسQ@QVGX×Û‰5„@gÁÂ#)o‡±ðî`߀l¥÷GtÎedŒ`²£Pb¹¬¦eÆi;‰Êj:ªsÂiÆ©!¡«çšR ˆ‰ê +Uï(›|V.ðÜL¸ÌÙÚtæë Uw \“mÕ´}±xt„CJêú t¸ý«£ú†OÜ\¦ð\·4Eá ”Îe\nec{:ÁA‹±!¸Ì{TF­øJKTÿ M2§a‘êÀÕŽO~†A +šJYøç@‹“ÇM3.Û`5´c\Æj¨zbtÎe\f¸Ì¢Æ\‘ŽËíB‚ð¢:ôPF„{P +ƒôõL6"Löã5(”oAu¨óÁÁòû›|D,ê…DÊÉe˜Ö©wC@„ú`N XQøÊkJu¸Âò|O:AÍiûœ®ö™̎ösÚdPx.›¸4Ì-uF÷@,¥ÔÑ‚§¯ °Ãí9ÜFb¥j…".ã2Ëò˜tƒûÄxžê¸ŒË¶×ÉÃ@tº m«¨†Ë£G¸l&E:¸t F‹¶¿ /‰”³`$ŠÛˆŒ!x˜¦ze¨ÊÕœPüŠ~T‹AZo"å¼Hîo‚ù ë§ÇÄÖÇÊÕÔ4()çd)'—™ŽƒdI<šú`ÂÁÎij²¨³qš¯spÀ‚[«ò'LàW¼ÍX´ý²­x ,ÌÌý¸ÈefÜF:.Ûâ²!7··c˜à²Ï“<ÑõÁä‰kE¹ë„Ë\£s™'õ+„zÏešµØêèlÀÝj"Œ[Îf-8I]·6#jÝ@÷‰­@.¢ÉÙœs‚tuÝ+·C,¢±;‰„ …ÿê˜p™ã˜LŒË>£ c«ªn»¸"݆A| CÛ@±Ð°ž±¡žªÛ&žªÛLbï¾Ö°ëP¾;Uþ|=P Ï6`ÏG`²´ú¶¥:Ë2â>ÜcrÏH7¢`"1ÒÑ\Öé&"IG01 ×qHÞ”Ë"&D.§™_gM#߉ýøº8…"±ëŸ §SÌÀ£ä¹è¯“z°ŠöXemøUQÏï„M:Ì¡¬¦tžÔtÀVÇÄ`à2EEá”ù %Ç…'Ì.;©PîšRSÐQ +µÃxH:u«OËH5ežÀFѤ>°p:¹Að1O +ÖÞ(DºDEáÞAÁU( 6Æ1Ôîñv(Ù¨T_ €Ô*Â`³=vg¥BtbX›³@aœØ” Y¥5Êã©§VÁc²8©<ç2E“êŒOÁÚk™k}0•L‰Øç´Œ¥Šš8x€N”(ª¬Á„³AeÕæ¼4(ºŠÂåŒé"ohÅ9äã]©¡úE½aÁ•Ì\‹ð¬ÂuWŒ‡#[[ìsºjó?lé©2Â…¦)]PœØ7^*D|õ·¾î/c¬Äé6­ #7¶H +6S£ll t¡ØRÖ36§ê ‚n³¼'ÆÆ†q·MݦA|˼Gep>Qhò99Ñ‘pL¸på9g>ï êš´!QóÝ–F÷^¯óC(lH¢‡­íÔ‚Û àzkTX‚Ívk?8`ÈÆZð)ˆ–8ff©|P.Seî嘗Id:³©0ŠGËÀ¹î¢Ø4£<©a†Pëöø#0ÙųècpŒ&áó°çæ¡EKTAN‹9Yõ¶#Žíöiñ9C늯“ç#Y:r)Z² µ½®)Ÿ§˜Îè‚çž9b¤{¿s {nr&¶¡bõB@¤63¬pª¸Ð|&À¹ZKûáphü( œwXl,Ñdej(Ê 7¸ qûº¾=å)V‹ä«s]k]×DÅ#ÅoÐsâ«‘ÉÄ7„”W„»`PGò<:ytçÄÛZb;±ºn«]¨û ”ý´Üß„Ë`OÄ@2>dâ:“…ØÉœ°´ ù:HÕOË5±08ÑÆ2¨^ÙýH·fü›Ï*CC"±V¬Ú|è¥+®S ÉK^Êe^±A^@á%«úÔŽF£ÑˆQŸŽç2Ŭ``”"¸ýDp{úúj`ÄP¤jÁÚSÄŠÓ$šD“Dih´è\¶Âe¾øžK/OŠ“ûAÅgôÍŠÂÓìÅá\F.$· ’€úàIÀŽCr¡»¼ð$-/K3cËËréËš:žÃ^º¥eø–m๬r hÙ¾R9P¨ ‰í˜Ü¿t +ËGn +ÊäQ¾›<ÊsÙ;B=¥}‡ºR°zÕÏND=pTȹèjŠIÓë=;ºÓ±@qÏS0VE¬fp o𢋦ôPJ‚B§ í ¥jB®0r.,÷\– ã’$¡h‰õDx‘SÚŠå¥*. Z.0PxHCa\p–w*V¤RêˆPJIT°=MY Dþe Fœ¶“¨c‡š! O'Q?–_P,šv— +‚PDÄDá7ë¶ð¦ÐÀsrÙfÃv %”h{ΙOÃ.މë¤ ¸Fgdlÿ°1kGí”"¥iJbØ©^ŸÚS +hÁ¡sØ ôUƒÐa£Ñ€§ õ0B‘è *¬=E¬+ÄŠ&µièðâ|ÎEwÙŸ»ìÏ]öŸE\ãÅi'÷#Nîçš I@p»ÐEÇqádÇ!¹\èÖŒ|1K·¼, Ì4Ä,ÝòJ„ƒåe1$Ë+f¹!!fÅ+§ê),VàíÈw¡~;qÅë#üõ‡°I"wû&L¸P ÖÎÕ‚µÓ Rd5­Z°öÕ´5H«é°."kïjI--jI-yµ¤ª µ”ˆ±¯ÄYp.:Ú7£Õ“_1Óë%H”Òü †Ád+Œ üM E&>¢0†6K° Lþå1h¸é!¨XMR”^X„R‚žß*ØTS¾¤Pu²ôCaühV,ï,ÁËÂò]ÃCÅêAÀtxBH)k®ÛõÁ`b@/õ¨ŒÍ⩺Ë&-É´¬¦¥±™À³qb…_6áÄ(ïñüŠcª®· ”çcm:Õ+'Ø~Ïù `ZýãHÇe$ƧŸ—®¸"‘F¤Q—@vªí^ºò£ú4âdBL8ŽUÂaJG£Î?‘!¸ž¡¯:B_q‚„cE“hM¢I­ˆ@*X{šn +VbÅE]hqÙ,j#³¨ ¥\ s.zj³ç¢§.û󅢓?­üiåO‘?mäÓ‰>£ôä~~rÿÉýüÅi#\¶u’ØfÀ˜¥K,/‹‡™0fé‹=£—.±.=F›жt‰BlÜ«Jÿ"÷oïÁô§?b$nG"é+à䲎[ju«TõŽºÏ±  bò|¤/‚OŒ+vÀ#Šê?ß0¥ç¹“Ëœqjò|ÉDÕWŠÀ„¡rÅ7D'qBð1!„Ën“¡A ÃäQžõô¶“ +o¬8ù9T× êfæA(Q‘ATNÞ12(|é‘phÂTK FßæÕSVZkªÓXæ#ðLØ$ +µ½âzôîyØ“k’Ȩâ>a¡I{Y <¤ÒW¼²TÏe„²“9+/‚{D6^5¡%üYJ FG€ìÏYÇí†6+Õ×”ó¹É(ïê-6êšÅè+Ê—há$ãÒœ`r>gd ™‡¸Õð‰‰á¹L21­P6õy(¡>Ôp&„’üzÃ&‡êš\°ç;̧ªK^¯Ðœˆˆ' á²‡f[ýŠqu½SXnWœØ—(àdÎ ?ç2Ã7+ü傺&¯‰ÉóÙ™:Õ)¨ÎÅÕ†ÀŒS’…!ÒA"\æY8B‘¡Ã0ú#”¸ð‡É£|[¤ú¨ð’n²QM¬¶P_ñ‚Ή¸ŽÙÆvC…—t¤ÄýqºBp{ˆÑÑ—ÅÉ‚ÐWü¼,¸¬Q¾5\£sÓœ 2{†Î„›l()•Z'a"°ú ¸à$3¡èæˆýÉeÝ¡€ò$ÎǪxŒ8và+±Ê|—‹À,+ FoQ ÊÇhÉÉPFðé53Í¥ŒŽZ ç²ÉF½MFçP&”ÞXµ»T{FeÎè +ÂeNò$^.ª]<}æ€RW¢z. ]„·”ZøûhP“êþà%{ÀBD >E”¾Ü¤,|@ƒò\ŠÕ†*w¸ÀRá¹LˆXaÐû›@ &{ªH@즴¤¡HÝ6"Æ;õL„ð×Ežxx»‚—²pÆJé@×ÂÅé4Õu.›'&Ï×ÚtªobåéÜ{ƒä5'hS¤íÇa¡Åžt& ‚ís–ZÊWn«ÃŒ5Õ+,ó…è|ž‰ ÿÀïgJØ>’•åC;½pï¶-|Tò0©Ï¹Œ'záÑÐßh¶Ç…#8Û{ò¼æDº3”2úÂ0úÁ;B+® #Ÿ‚µSáë|ަ%ÂÇŠmht‘s.ºGa¢`Úà}ì!F?G½í ÷÷Iƒ®ð+¥m—T\]7^Òµ|qL&Ëú0€—²bhôI¥…?Þ¬"ÐðôÑ=“Ô1 â·8 nOc$Š™yÐG;£üê xˆJ‡yH‚×1:h1 À³±LK¶}]o^ÊV JŠKPJýä~.b¼v! £“öÍe°ѧðLœ°‹£·Jñ†§´ªë>g> &õy€M.|z eźø!Ô¹8—q@åç#µ'Çäò…*>6À~YÝpÒ,>§êiüøà°u<—}‹ ŠÕ™#Fº¨Ô±RÝ‚aÀ_œ‹~z¶¸tÅEŒtŠ‚C¬\–è/Á¨Ø‚ Ê›™sÑÙÆâr» +œ ã¢IÀt½ œ ØQ±¤] z\ÿþ‡šsÅsÑ-§—ÁƒËàQ@Y:‡øq¯6\£—¢ÎÚO°‚ 8>Äx;¤;Ti% &kÉ ëèc1HJÉe”ZMHbäãtGx"šrH1Òaês>J}¼¤:Ã5RÐpqÃTñ=a‡&—ÒCž+bÑö9Fg>.³_é…?0$ mÍYð9è¶34b¤c,"cg’ÙÔWD"«Ÿï™3± ¨Þ_aûùeái>Ÿ˜ñ=…)Ø¡S¸lÄxƒ4UK£f.Qpb¬8øJWœËW×o‚Ž84ªHA åE9ùÏ1*¼#dÀßBQ% +‰0BŠÁÅ„p¢…'¾sÑ j©½Ob¤cü ‚âx($]g\½…@sEǨð þ6”'ð\C0€òŸÉ±â“åä¥BÒM6®Ï×’ã¹l]`eá‚ðhÓöÄ@é.ð$! F'D(ˆƒÄEŒÀD®kôñÇŒÁžÀÜ®DQxâ,X;Åð¸ð`ù:f¤ô•\µ¾ƒ¤pÏEG#ò “Ë WCR@‚ˆáwÆMèM(|†76ðllÄ×2ŒÁßÄVè>3}YÄ ‚ª¿õ‰ôm¤ë:gíH¨Í5âIèS“Œ€£¿˜ÎªÚÌ ¤ºÎ…°çãP«ÿ00žÏRNEôøŠòzÓœ˜k9Ò:1"–çëTÊV¿¬PfŒþ:â„Ë +ˆKGÕ„œ'©k/­½tÅQ†bÃØ(žªÛec#0-­Å ˆ‘îû±à²Å"Ó}|a²}§@ElŠEùº.P(£…B‘é2)L}T +O$ÜBv9$‰—}l5‘é¸ìs™Ë–ÏlT=æ] <ÊEÖ\¶‘¸‰Dg26¥XÁÇVºÖè|! +œÌ>)˜Ð)%;ÜbmXà1¤%Z¯ß¼óqM(~̆‡ŠÕîb`²è× yÅ”mà»ÌU¸Fç,SÛóq})<âÄŠŸRdgñ°q) ½HÍâ 0N +•‰°B˜¥ž2p¨ëô«ÞõéD.ë  |é}±Xýç(Èg‡ò*¼ÜT—Xž™RÝ#µÎ-ü2} NP”Âp±Sdä²ðËz9áä€ù~ÓU B™ÏãɈ.«{'sƯwq˜_´Ýð'ÌyÉœ„¹°ŠÀ„Ò'Ô'è0ŒîmHðGilҲʧ‡Å‘… žÌƒ~rY¨R¶züØVÜ‘h-¼#žB“â"*˜(˜N"šÏâbR=æÄ“6t[8—ueo-Ü; bõ¤t4'ÈЀ4(¿E ]×t4(oÿ‹8‘A˜Ì*[Ž ‡³ Ý± !ÂeN[ñ'û Ý ÇÂ#Ûâ¹l–(¨á/š…¤xG…O©ª +~­³—”~0qYøÅS]“‡7g>.‹Ýmæ< °¶¿*. ÷N…w —¥ÞvÑ{Iyé¶»õšÄnÎ$ô“Õ)Ýâ©®É+Fg¾/£òçësPu„ MJ ÈË’:Z W=Ž÷…«¯Â[ìm$šÓ@¢z_\½s™É¦>§USœlp¤ujZãç˘¯“? ¬¸É;yñþ­ð2¨@šˆz\E›áL<§Éó® Ëóe..¨ÛŽÒU¯Oý¼ >…ù,k4Œ—rò¤÷’ʦ¹R}†öû‰kª_:ÕY&‚ G¼žÓb€¥:¶8ÂÖ `áC‚„L) Ÿx\]½—tDIáM¯ÖŒl×1R˜(ØXµ‘Qà.<¬„7KEj{hQO Î NB¦„gY­æ[̧ªo>žh‚VúŠ(+^@°&ÌŠ›R jå;ëÀfr9µS#ZÝrÊ|\¶99ÑDîüywñÄU"8“Œ(rLÒ¿à2SàzÛâEF¡ßŸ'à‚“4Œ®®¨kr€1y¾¦lõˆm ô›B°xŽiâO‘mt#ŠÀ…iCà#.¦í õ·¾Õ\®ÙäOá…e6Ñv»{¾>¦­N(Ág$”®8)µøœ\¶h™±¨ÔóºTÔ¢ !cF†Dd¤“ Jfóé8ÇGF.NJJ0(Ic‘0(ˆÂ‡Q QÉ1d« × +˜}ý‹¿ùMªÊš·¡\Ú{ÞÖšLAmt‰(Œ¦€ø¹ò=¯ksV†%ã 3Ô×¾% ­b{QгˆŸ(™M «–ÕE(öÐþCAøÏê†%;•€Ë8¶åËygŒ÷²6k=éQĈìÙ{•R†ËŠ*æ|=ÒâÊp™$/îÎ×΋°{eÿ‚¬.³¤¢LÙc¾B^¼È€í*õô”rÜÊ?¥}¾š©©ŸÇ¡ùÿ”}å [(hèëKQÕ|쇺â’ä+à ? 3÷òž//DË’ ©¤ÊŸyMHVo¨ å•yõ­:üÜ뇑ƒÖÇ­Å»¾×ö-ëy\ïß¿úùÒ®®Ÿ9–„îu*‰¢œ¼Ìÿšž[› UÖ,. ¶62‡:'Ês…†„^é=\RÍ_.­+NËãxaGi-1çBþ׆º 6¹»X†gzô6—Wª†_CŒRaµ\#^Lklþ èÕò­A°«×ã‹«e¯S½«<¦=J6&Ó2ûxÊ»3ñ Ve5Bï¬^”Þåë@jÝÚ*[µâ¬õþVZ#IÊà¨dem—ÄÀå ©;Šñý(‡SE°6*øº +çòŒ–$šLÑŒž²€ø]ÞŠ<èTtؽ ÞŒÀÍæ`UÐ$TÕGGCæá%«7ôÄ€1 Ž+eÝNsJÒߪ†À¯‰f¾ÎX™Ì‹ƒ.›;;8K¶¦…^“ù9†Ïò Ïþ}U‰pœIw%ô'ƒÂ§ïüi#[sŸåŠø“5§rd¤³8^Àó­r¨·_äåîæCô>˪ ³Ï6ªÊbûó…X5ô0˨ʚ¨ý«,õPTåØÏ°…«üÑtFÏ]?·ª…#÷w’Šã®¤É?BÆ·Gr2'VŠF5.O'4¬¬Ë"°úÌøNò*c`ñ¹ÑxbR‰6DîSC(”$¸h Ã­ +ÉtWþ™±±á^ÓF`Ãóƒ.£Üi­„‡=õP6§ ÑT7©JÐê¿G…–ð¨_¦—§Ñ2"§ˆ/­Ö\Þ?‹Xj5‚ÆC‡èÝ^i‹Ð"N-Ä®Úbsᢄ/ggï„  ìV”^ÖÕRc]Í„t`ÅnS¶Fsë%ýq<(ÐwŸe cï9è…SP±™8[í°J ½:^Zƒ8xEÇ=y¨ÿ…øµp¦•ú(aÌñ_3©vÇÐo>A]üYQÖJyÇ(:´2V1ßV–À#xÂŽ$»rA˹aÐe$FófjE1Û“› ±øc%«6m~ÿPÓâ´ùÔmÞÜ;¤ø¿çöŽÿ8u·ãœàå‰xsÚÀŒ)#Oùù´tZI›u@Io `û4¶P9ÖnäN©všÕ¨r%ßX²[3σY ÕM!»·>Nå—fñÙ¤C²P²!L°”ý Ë¥ûâ+Î%8õb+^Ëä•),© %7›ÅÀâIVÕvåË]%\¥C¡qƒ1î˰öxE»[ïb¤Û§æø¾0‰ÉÓ0ØÐ•&F{Iãî!mÍSà¾{@ƒÿÂãK×‚ÝæP8[‰Éû L“@¹T‡”œ#»$™Vc›I$HÀ°ÚÁØEwªïim¶…[(Ŭº^S‰Žv5RW“¾nž—i]gëóúÎ$P­މiµÅuãօл‡êC 7½Q¶³[´ó|³n³? „%ë‹ú5î˜UŒŠTý2p G²Š•T·“kë•ÆÅ<2Ûf¥™Zü¬{¬c„[Ü> M2»½UùyùÊu)ò2´‰JûQníç +‰¬]ù7yˆÖM’KŽ©*Y@&ÿ)5&tÞ\}ØAfó_;?ƒ×J’rŒ3´“îëºS9v&Ä+™Îô½3Ù •s*ZX»„猊ã‰Î`g®qU' ‚<·sà›LC“½%/ÌjècÓ ~ÔÖdd&„ß7áÈOæñSúŒ%ñòëL›Ñª¡œ V&mʺM#Êè܇r™|Ä:fe"‰PÎðËÁ&\,¼Õ)Bf3Å\b1‚-ºØA +ÎÊP$F”oO¨¡I(«J߯aü誯¶Ý‰RkpßéD»b¨tdÌ•7Om6þÏ´Ð}$;êæ º.ò¯™ÑD +Ë\P eí<›# gÀ¤ÒëL”0²Öp®2À€•^@YVñhMyÏþ ºÚÑ·WB:~Œ€t€Rß8Ù²´Â=Õ)*iEˆœ#ž@Â’A—É9¤®{ÖI©Ãu”.‡ÈÒJ³ËêU=˜Ùg¤¨–Ij?j÷'ÂOH-æ7žò‚¾õ=G˜}BdE¦tZ欵Œ‘žAí‘ÐPWÔÖ÷Ÿ< "ÜÜ ²¶‘@…\¨ÿÊÿol¶f}W==òOÎ>Àð':ˆ¹=ô-ªn,~ܪ 14TÓRáÐ±Ž„ %$M€.¬ë5=Û ×+Õ¾ kÞ9šGúú  Ž„9Òu«NËSœ»®ƒ3«›˜7XSЪ\?óÀ̲­¶)U±l°X­^õ‡~Š¢ Ø•kLµff© ­öjê]à¦iç/ãÕ{wGdd2_}Ñ*¬ufìœÌý¥ +|ñkࣻ-°:ÉÕŽè¿ûèù„]âVPÇ/îÀaAžR[,—GeÞPÈz'qô½…Z>N¬ôÆôVüúþ—g‘îç~”?$ê†yˆ‰ˆ +‘Q}¼å6Ä…[Ê‚ÆRúÌoRÅ£Œ÷-6ƒ™Õ—¸É „%çKÿ€à«gøñT77)²¼­›!âf®t$Öß~, +A;¹•Ñû¥ÆÚäÞ¼qÜmYx/)Ü=æ`³ºÛc¹ ±Li¦Õ¶és~ØÌ±ï|l£‡wWŒú2"}…ÆÁC®ä'ò2¬E¾ã‘¦Eæö‘³D,ŽÚˆ‰ÂgÅAïê•„=HÌòX*;ÚÃêŽ,Ïî‡mûÚŽæŸDšó*[ë#úªí’®4,ÅÛLmaÊøClÅ*³M®)yÉáœôD—8?­y‚Ù×£áåñx³üùÃf³%ùôê±âb<“#€`Ž`Ã\¼ÌgÝœ°-Αkå¸oG\2¬œ}°¸ãHζ¬3!÷ã|²Ê:ÇNŠìó58$óB`N²Ê­(km.öh¯öǰÏu%Û¥‹Å’Ź”ÞnÈ4ªo@Î#ŸÏ‚×å‰HúK/¾þ¶Pk˜ Á½$ò¹Ö2ê<Ü¥÷y¢ÌcÇWf‘èJxë.¡=ÝwsxbÒŸ®’~o|»Ï$Ŷš:¨õЏšŒÚ¶ì¬8ÿ•ÍÀñð'¼ÿ. yb´¿öWÜêRY¢6sÇÒÿ +ظÚ&”™öØhŽh€þ1µwE{£Î—U˾5ÿƒKTø™Œu¥(z0¡ Òdûºê·b'›¹ ódxîKëß&”¯…†Q!~ûÖÔYd»RÔU€Ùz\ ±š¥«ëÝ5× ¾4”VîŒ$f­^~†¯§XùÏDé¢q2áVöÃÆ< sM ž&Õì_Æg>ý]<Ó7ªÎ²oWzxø +(òD´ûs¼“.ÄïNÕœs0¬ç»ø|JGä;Íã:›Rîª==Wþ#€13M‚䂱ºBuû)²öB…_ÏEÍ v6ênÂîž?YιÌÀå‹×$j³Sè¦I"rð‘~<Êk½ðñj°ìèk®ò•Òø + !®)×õÝ ‚Mo›¬_æOä-<R«¿²[! ¶‚âóÁŸ·y­½ß6:ŒÐÞ©êµ›cp¥3Q°¼ÄÿêO~Ô»n^šuz³àsv¦MÃHl²ŠÓ5ë…J¤°ºH,=%¼^¥AÚdžƒZÑùé¦4h£ìm¢Ê>Õ¦úC澦m²ëá)Pœ`“ë¨^ƒþ“;„œn¾ø´ƒ–—g›:Óò×¹.hŒ·¹p²gó·´ÌëëWáSmn‡œvÚmý7ÖcHÀHÈšUÄqê§(«§‰ §˜Ã@ï4IFCRrY0å_­ÀÜÈYÃVSÂEûOæèÁÞ-Æcy•Mgm… ñ»©Ù©Doˆ›Ñ“2Wvác°®‘zuªˆÕ뇄pMu°úaOüÔdØ‹›¡5*/Nܹãõ`Ç’ERLãÈD‘û œdÕÂ2äyµÛv?#~ÕN=-Zœ4eYjžìuù˜€Ö€kmÝ«ÛùéÆ ÍwÑ@lÉâç¹ Hh¢Ô%z’3ï'lˆd±s/—És½¡&-l>þ är7$XÌŒôÔxÚçÐÛì]SmNäî2Ôî-ãbTÃwVMaªiœ‡}î}þC– ùÀJº¨Ú0ám*9ØË”€µ¹E;¨1ÞÆ—VRS%÷ÚT{ž9?ó2áÚ¤u|Í=Öç'rõõ{ƒWO z”¶lÓÖŽ]–!ùyZ‹»Ø+ó« £S*úÞܧª«Gr 4p=ßÒò¨¿%EBxñ™„›˜W‡ë“ÈJdñxôr~oÇh‚áã5øªº÷бH`2[uû°ÇYèœnþ «®×Ê•î$½äy4ñãùä<­˜p ½?†Jé_¬¤¢‘t7•cšGQA 5ÓG¢Mt:V;”퀋‰ÛÿÐa˜[\›ÇÃ’¡Ðq”ÿ¥Õ,DÙu'RQ‹ 4v@ \“628\tdõÞýa/´ÀnVß+NÇCÕ»>uZòy³ð î+"`íZ+$Õ|óðr„{ ‡zÀ½¬³!žVTűŸ@ÙFŽ‘ ˆ§}4»Bãs5¬M`)žøÀdÒ‹S‰0j¸à¶Q¯ÊWŸ¦šPч€<"Ë«—T‡˜"D¿‚Š5xãæP§ÔOèðb\üc‡Õ¨OÞŸƒCaóÌ3ùÅö’]zx_Í$îÃà"‡x_Œ¡ ŸÕ=¼NEÓÿ}.M›ÓÉC²IáÝÿÍBN» ¯ –p0LSG 9¢zSã­«Å_ö×mht¼úìUÙóÒPùeˆ·¦ZªÏ);r²ØÒø-NŒûæ É)]h?Vñ¥ÒÍ›[ð¥Ëdfc™]ý$u8lV4ö¡^<åy¦ê›üXÌx›¿ ÃA´ÂI³Ôy/ˋ懄[@1ð-’ȈûØî³Î°@÷ v»G!U´dZòö-´´˜±.u‡¹ Ĥï(Å%X¦b·!¥)öþ–뇰s‰àÚO À<žœTÜ3<ÝÆ¶{ÉùB-àÚ´”e*"®±~É6¦lí¥ªO•צô"ƒŠvï”;[>øxjç‹ÒxcOÚN´R¶û#°ñÄ’Ww¨CH|ÇÎã v_Ö7÷]ý¦Z}îΟ6ô0'Æ ð*fnJ';uVsrv4Ms lU{@Š=H–˺€ ß bMØtC"ivú\Š@÷”*iA"Å*³)»ûXZÀ‰ö‚âÂÆ'—ÉdÕq. ©šØß º^PÜÔVÔºüBzDØ»bVö{¬>±|F”ãUò!ˆ +x׸~än+£‚â0ÍÃüµY×+h r*] ¨ŠºªâÑ?d£—Èx©£,‹m”ùð +Íd}ä ÄLÇmF“±oýñ°îÝLŽ®ãE/äé±ß‡œšúRèÄq‡d<Þé¡Ff†¥*tã7äD]·9LÃý‡Q¯mÿX¨+ç+nnÂo0ÅÉí \|欔)þhEŠ€BÉeÅ·¹Ì«¬Á‚´¡¼ûŽôú ­JÉë{µ÷¨’}nQ³ípôìbõ”Éz%‚ûD]'~‰aiý&Â+²@Š™Ä3 äeŠÊ¾BøfጠÛ[á™hrлÁ6µ»‰c†œAÅ…öÄjŽ”ú3‹òĆâ…eúótkmËŸùü’±Þ¶ß’beà vþ¾†¦8V`§\« ®‹Á?6D‹Á±:y–2‘&ÎðAáz;\(…În@•TŸŸ÷”ð{ëêt+,/lÈ·­Sz]¼-Ÿ,ï°&k·c르ç+Ñ~¦€BàýP(-ò66 Š èjµ@ÆNÞ» ºN*'æoü“?¬ÿY; ª&ñ¨å-ÿ¤¿Oý…à Ý!µ3¨mF˜—ÕCfýmñ.ìœ z†¥¡Ìˆ¯1ÎÖ®†Ó³³Ÿ1<ù’º$*¡Àzca^6˜rbjz9ëW×çýQ&|ÊÉÏîJ­høšQ|ãSÓcÐ5nnQ‚Ig—¶;ÓâÐYj¢„¶#‡eáþÓ¹ ¾eµ'Ĥ!Áò«Æü«gõžßœ;Ìf·R~æ&þÁ¹Òé¹;ñ/•Ö¿©™… -¦¾KÊôoaœùF®,ðïw6iE™ù3kÙ]&²/ÕM…07¡cÏ×¹©À˜›ÜcHK%¨tʷÿÌÑU†’ÀÐØ3‹Mü ¥þmÎØNâàÕ"§7æ&ê;G"Ëngã_Ú'^b ˆ8ظŠ9bÿï÷½ÿÞ¶ÄÄç"_ôï[/&üKB-ô…>¢ñ©BE‹þeR§ÿ¾ Ï¢Õï{˜ÈíÀ¿7´Fõ¸îvÿ¤þEP†_‚h2'ÃBè_QwJhã£ÿN|‹(©WaUå© ÿO°¼ä×:ˆ˜3V!„ôÏÄØ¶X.ÙG¶c¬Þ²¢xÎä…Ýb\¥¶ú¿ï*Å1ºå—/¤.»•{NQºàÊCýAÃX±?(@!8¹AŽìÁâ¸`9Zµ†õßÛså6 G¨½öœP@¡⤧Œ;Èš–²d&éQþ@ðé8SOŒ?Ýü=α"?ÕŒ‹è^µØIÚ3—æàñê^ICþ\K=¾*ùä‡\ñ38ßUgt~üñ2§½&Un5Õä¼ò° FÊ«EùƪýZxQ!6xó'”dsU8öw;Ø#aâYíKiòÍX‰¶;äªê=]j)o\=Ϧy¨¶?Fk)ið&Õ\çn–+ÀåÕåž7W¹.¢WGÓ +Q®¹H] mŠs— *ðV¨×ÎÿŲˆŠôé»ùã®Â\“*BI€(`‚ËÇv!i`Þ²· +kÛâ "añ¢Å㌠”6ë%JW8©)ŒáàÓǰ£ùd›ª9ÕÛ é¢¤É‘€BºZ2qm_á3•™,þ>{å•·VªÏ!ûR°}¿Ø4ÃÕÍœõZí¿j3 üB½1žCÀ'õ÷B@¢Ï[æ1Ô« +¹N%e>‡zS² Îôt©7)›d5Ô›JNu=1òÙ º½áà‹ý2~A½¶âÙ9ÍŠ :–9£C_½#ØmHdP¢ì.0ÇÉE#ÓN£œfð%\MŒTZ=–Q¸PH€>c,!CVËc{¢ÎMœy¼ˆ\ô´ÓTõ܉ž1‹=у[Ro!ò(Î SqåHpn^¿¸Þ>áà á ŒÇFì +æ,ÝXsSv¢!).œƒsúŒYŒçŠËy±¾ScïÇ>»ÐCó4TdÉìQ;L‹ýý_¼ ðÏtñÿãùÇ‚[§U?ê¬_~.TMX=óåéYHhc½yº¡8×Xu`«ÞÂ^ŠƒèëH¨^Õ» ú,¤º9üD­zagO<ÆäÝ™âP…Woÿ]‰p–q~¯Þ +¼[8”ªwè5«#À^‹Œ„&tˆÌ»zó¾GvÕ;–WUN€¸»dWõ¢ÈÓW/jgB#Uï3¬¡¡_%éW½hfB.ëáÏôµg¸1ÑW¯H»‹Ý4ï²3Œç]¸“a®ù±—tù¯C´þºjc“åkJz¡Šþé 游§æiL½I ?ßÌFm±ððèš%"éŸôćy"¬‰ofÅLëW·L Ín'Ç[»ÂyìÃ×’®e}2Ÿ²ü}¡6CÝÛ.2ØÒ”)ôlp¬}¿w}y@úG¦´Öc™Üõ óäHŠm‡ çç ”1‹M: ½áŽn\Æ90·RÀ}¯¡`>.JGOâËÀñµ”Oo«‰°Æ’1~ #$ie;;Ñú_‰Ë—üûÆÖ}I«›4}¯¸ÝÝþšU†½ZÞÀ¬î–±Ï°Ÿ­ûŠÉ€YðD’LÛ­è¼·_Ûæ”½ÑØðïÁÓEPCŽg#ȯë`íimƬµx·j¬d3Wõñš=ZÖ…öÊ …­7ô›xw#­vñî6Ѓd]Çdó¤wW]CÌKl*ûêDf?~fï®™{ÞË™ïnh¼›Ùö˜ãg† Õ[t.qaøm-ŒwùÆyùdÿuÉ»K_¼èawñwywéw3/5+YG³ëß]0ºlÉyƒ½ww,®Ñ=ë¡â]@U¾»¤Pp¡pÆnœrÈðr›;ncÐÇK!;ƒÆ kãÕ÷áõºƒ¯6a.F.oíϬ‰¡™ÁAÞ+‡ºDˆßÔ[ɘÕÎi ì5üçê9Ú·ô+•ûQ-î5]»XÙóÛhYLò™K¥z´;I´":Øx?Ιߪç&¨›g—nY¦°w2‘YÔø\“FR¹ëÇûô3ZSVt×5¯\n +®Õà§«€éš÷e®kåY¡€m5Åâ8½Á~úai‚ N²ÜA ŒÜ'P¯BÊJ¯‹]ÚpðÆÄt¯K¹¤$o&Ã…i3ëa©Tßb/E.Òòü£ÈšýºEZz¬ÑììåÌfÄ$0¹‡£+µCl%톸–u²œ‡ÝQúy‚­³jÁf'kYÉÙe‚ßhëø·àÂ-»J¶¤4;‹ó<þëë 3÷Õ¨\T¿¿ØíÉ@~kääFM%CWÌÐà¿:ÑãR!ßÌcwˆ®qi])– +*¸Ð1 þ“†uIÛŽÞÁA$ü€Ã¼ªY”2Õ;žæ N0ÇðQmÀù|6‘Ù –áË^¶ø·´4fIË @¹jÙ#h+Îìu¶à×.LGà8`XWE‚çGŒÖ SW’^vØ-4¾'O÷{¹{,«*ð¢Ó­4’ŠpW¼§¬V6^…ý”ЪO†§Œ2”ngôŽÞɘb¥€:W1Ç-¥ŽÅWcp@ÀGWTDO^'Y¦™y¤¼£Û <ãòªOó0¸¼dK‰'¡kú·óHPâ\ÊÇ(x'Ð߬\ÉйLªˆBÊ*bïèÞ ø¥· - sH˜®² H÷÷‘È‹q¦t/öJ;@ª0ãÓÓ f˜„é{<õˆŠÐtÏ@5©_´‘8‰6Qq?afjí+#Ü&§…g®mm¯Œß1(rovŠ&(€ÿÂH•¡u‚¹¨Ciˆ4e „·~¡ Rå7«gJÛ¯ÓFe¤ŠV¯ÄRf" +^y\%+ðJØÁhÚë:à§2ÀßFÂJ ·2Æ ( ˜vïŽÏ‚¢)Šp…%`d³Qp<èEEñÈ«0Xø‚øûŽ›Ìm¾Ä,ã£d°Ø¥ÊÎaÙf1EhÆÖ=Õ—Iö ÏwÈH©Ó“ÄiC>A½T ^ƒ¥H¸‘ ¯¿€V!ÅÑ#¡hËJò{„ š,в}Íyä ?£uaúy?Žø€âÁÒ‘|³áe‡¸,ƒKΙÁßUÝeÂj÷9E;SŒÒF„‡VÏåz4KÊP@ø`‚ 8í¡é @>©-ÖœëÄ D¨ÃÔ¡ªW@aøGbÑ a’ü¥v9^ÙCà \ìfr&S– å„ȯ°5$DˆÁ¹o¥¯ó%³lA¨=ÒÜG¾:ÏÔAg;B"î8³ò{¾ßå¬\ÔšÙgÎÉbƒ(ß%weø«ˆ€ÿZîÒU$‰ÌÎÎí°:n£Å +ë2GLeaq×1pëMç3a°§ãr޲£c +%è9 ÜÓs夆YëèòˆOÉ{$²3ãÖ°Ê^ˆ&@W³iuˆ ¦f]Q,¼‡Í¿n€î‡¨ÓÿÐÅöc²k¹.Zgj¢ë&šk0›YÔþÂåÕÔ¯>âСüïÌpi¯îðKÛpIb&&sW½ò‚½í^ ™53î„€Öþ>¼b1b'¸7ÆÎä$?[´#=0+p–ÚGa¹¾c.ú¬ûKK?ú-#ñ)Èz³`Õ#aíŠ3׊éîÓ8eÒþã®HOY~§fÅWÒ’w‰G=+Úv){šw¹z Óöì ,¼ŽYL ÆòÆž´EÈI*þåý&zi~ ¦ú¸Êèš¼¾¾ŽG–†^ºíÞ)û/rñYÄÒ\¼¸oƒ%_)J¼;VK6þUwÄúB‚ºÿÊIñ6.©ÆÊùg©eà×á„Îc)^÷Òuàžš–eÙØÅ_²Z½=6éu+O`·òQLŽþ;20VÞ³Gûã5¯ÇÊ¬ÎøÕºƒ]R1Úÿk`Ü „UjZœ~0Æ5X68 +É~ ÁÿŸà2eWÉ1‹+n9 @~au;a©½Â3FêÜ—ò_œ"¨³àvX5®…æ&¢FŸ'#j +3&†#ÊÁiô›¾ /[·ä;%~|L¥À.Ƨ>N1£¥rÓŸ{ÍàÚéEÙ˜2A!“¢'pÝœF/K0-)@Ž›¨`–÷À˜¼iZR_‹ÓŽ!Wâf¥'*j3²¥Ya¥·¦BiOSð1僲šM‰Ð.Ý{]Ô„ßÿãBðAùч¥rq¢‹"·ö_˜OAÿ°í>‹Ø¯?è˜zµ̦Xåˆ=”1X›Ï‘ˆß# ±›áÙÄ2sÒ¾¡•œ˜±îÉBgk‹uø…ý‹»8 —HÇTB+{˜ˆó0e;@ë$%Y­úpõŒyŽ/ãöÍ Ö7–ó­Âø’_íW49»u|ˆ½IÛNò×r¤ne³ÑEŘÐÜ»þ˜JGuŒ-ÉšPR| ]ç$r+ï}æ× +Â)².~šŒSzÁ€p¹ŒÞÃíʨEí;íK½h-ÍVÝD®Äâ f£óvJ6C‡y>NqÞ¥À^ÒÔÍ$|Їû‹¹À‘ Xy9p#GÜùl‰ /…ÿu- ¥‘~cB~,Ö5YüæÿÙÓD šÑÆL}¬Ê +Oo<ç²¾f“Q½šqf†B¯¨®ýF… “úÞfjœ ~bÉÏRÀ öwÄVå‹^U†¢8C>­Ë| +¯.¬AY޵&ÕñÏXÐ~ôuum¡ªÃà3]?ò~0wNÓEÜÓâAƒv€ÁýƒgJ‚ÎÞ3Û‹©ü4wI²ß4;BúÂÖ1h3d¹Q¢––»2÷­ 7-.}3ˆãZ/–Ax[ÁFÕ/á^=‘ý Šœ¯é‘®çÙ¾™93[ •Úôßê5ÕãdÄ‘ŽC*W¶ ¡ACpé‰Xâ¼Ï„©Â$²˜U_eê 1Üå~h'ØJááÅì:Gn,Eú"/KkÅxä1粓<†ú0¨ oã‡/«$ü¦¦”¬u —YÐãMjÓ]c,)éxØR§q>ëâ˜ÆÐGëÝÿ‹½áË@!z¯_6³2öXæßa'‘–\êÑð„¼`œ åÞo™ëæºPö¯óòÜÅ(j^ûÑiÈ×Äa“fBÂñÝ<ŸC¡ŒQ4Äc©¦ƒÀoJÀŸ8ÄPkJ.ß]L‡®xvëÌ/ ¨n%Ònš(¥«:^ÎÓòaÞàf 'ž™­Eͼûg²À|=³Œšy™d3Œ‰ ²ûj¤š 1ÁÚÃBÑ«±ŸÛe*˜FIg…ÿÔ•‰éûFe\ÅÛËÝ-o¸ sÉæ½ò‹Îr@½€$ Œz”BkÔÌ<–W\ ̺ìO`b0ÆR ·IU0à+†ó Øè’7`ÆØY4x~¸‡šNv—a0»|´œGS¨I@­ÂXx`)Ú';%ê`i-mkEÈäèü2”w¼F{;õBJ*Ñ´ +¥Ë·# ˜Ô½š¾ªòšø—Òö4M,ûrÐëÏcÈy ËÇ›!õJØM×p­R"ÁK `¸‹Ç¹ùH±ü´·"0î]oL_YÝiI¶)wÒfn¢íÆŠ{=Š º˜´¸7¥¤T“Û6Þ†x|W"P2>w}[bz¹•— NÓ}9ÓÔõá©ã6¸¡-'™Å¶p +ãX±ˆ•NŠä©¯ù€3nQdYç‰*Üyí¼Øtj>'i”<ˇ`1 6?õ³ÎªŽGaÁ…"ªŽ;ÞkX»¸QÑ+#¸ N­ œPÉüfFhr•W ¨zDKG„ð •3*Hv@ƒG6Ù— ÀX‰Ç<­e<ªé_)|=Çýð]'¨Ÿ¡Ã7™„ßiýÝ4’r™T«îŽ·]ˆ”Ëayég˜”ƒWÊÀ«èXn´á0î.Çxåê#…Çñ¡¨ÜƒzÒr¯tÇèþ2À©¢9`”OOÒÇ»gT®JIXÚÇB€ì6”ÀºŒfN°ÅN[2‚˜yÙ³ÄV-J=T°¨þE'G¶1NV|‹Õ’ßUéˆYyŠÐâ”nµ‘gÛC¾ý¼<žÀÔqÍ”hÆÑ½XƒîmBD,›£ˆë÷´‹ ޹ᣥðrßß}¡0zgà¥ÿ» •Z¸úÇøðêKÂéµCðQ<>¢°§QŸ¶pe Ü÷à@0FÍ7ÛzÒës]ö’BO©¡êÄ-“ü.>NtyX¨ æiXú{”?‹<~[Ó ÀLGÛ°ö÷k¯ë¢aZðýÌ_VÜzêNœÑŽôä+d¾ÐŒ +l@`Ó… H‘%®gð´ò"@ƒP5– oÒƒ–„xKÂZP}àíü[]Ìÿ™m‰zÞB g9êWhöQì°ÉÚéB8èP’7/æ;ÜWb˜“¹.?0Š‹gÕvü•=®Ü)ÇFwÓIÔ]£‘{~ó,ÞT èš‚ C=U +Àée…Uç›W[üˆ›‘`öúÛ˜ŽÀ±Rz2“¬K ”×.ÙZ¿¤xÐ0ŠShP©ªþÏÍ0 +–¶êß?T †²ä²r$e'I8ŠLëT>’&k½CûçÊ—ÖEÎdË „b¿Gœ®ÕCØR‹aù4áÃKaʪ›â~ø‚R;Ø +/OúÕþ;Nv&Ía‡êÇ!¦Osù|¬ ¤ç—£\ì^`¼†R'k3óùÌ·Q·óÅ›e,¡Ïë¯ÆPÑZÉýåýªŽÎ¸°é,øžð·›m&z…d&&á¥7Ù½ËÏX„䈽gQlä¼j˜óv–„ +…R߂ュŠMºg#ŠÃçfîJ²‚kð*™ÙšýEƒ`×KP [%±!«,V!´l€—+¼¢yŠšr3pp|eSëO_ÂI¿#$è݈¡üªYñÄÚÐj¬:á@ÜŠc«´u†óxûR暈|;@ì˜÷€È™öÂ]LBml,_¼6®Ìxz”²74s¥ËƒÆ€«"(e68|'d™€À‘¸ØDbÜ ÔÚg½®·9®Ñ+ ìÙís¢Æd1¤ÞŒ\B¬I´«¯s8-²–"?­}³þk™Kƒ%7=¡}ÊÍ —;ákʨ©GáŒÔ=² ¶fÇ‚„n=]ûrcµ=]•X* {\?Ô¢n_u\<‹)ßÖCÀ´+QÜé*oãµÑ÷ϦJ*ÎXÎŒ÷ŒÞC"çÅ‘áàò™x $^Á·Áú?ùŠÖÇR€i] æÖº3½p Œh5b*^(G¤Ü!z\ÔXá*—f)X[zŽ|ûe¥Ê_1hÊâ¥Ô¬ Ljj!–Ä.ݲ5ç¨Ç‚ä¬@h"¦‚¿¡ª¥ŸR¢H¹Oˆ9ù…s’‘•9X«(gB°Äh£AµTx2 þó¿a>ŒIE +èz_Î/-ÞÑÄ 4+îp`O­xBØÓótW²Ç×gÞÆZ5Cœ"ÉóQµïÿ³´]ôMh }èqù%Ö†È'8‹‡òj”Ÿj¾x£Ô fr8>Šù¿™ÍÖÉê°g¼`¢°@—NyÍÿØ÷Ä#î¼Ëí4öú*øH2s[䢢Dʘ!" Aá™Âù€S©¯¶ð¾¸rg‰mWþ$AW|²K^ÃõÞÉOÙ˜Q±R…¦Ë?0Yå¼kN—$ÎvN _¡ºÑaEµ"{ ¶Ò®yr»*<„wAŢѼÃaÞÎ:Mïˆ +99¾ÅCJòò2ßPœ”cZ@ËÊ*¿Â‚, } ì~ÃïÙxîñ[µ1íd_ï¢`D€U›Òç6Ïw‚˜Žü2– ÏKo‹á4^껳nü.{¼ðõ“wæYãcï‘F1êPÆåÑè1‹Ø=°ñ9–N9›m¬D¦tòbD£“Ç„]X ×0@­Yã™~TÛV¬&³Ki'ÏP¨œº?ýNÕ} ›É‰Å¤Vî<Ž˜gœá!Ö$]-I«Þ&R+‹hqQ_sÀbÓúx!趸µ/gÚOŒó؈DÇ t0ƒ\52¨·E›« óõ„ ïµ#©4vE +%>E>ÉoOZÌ1\ÀGlÆ‚®9‡mœ÷^êóJÔ±'u#ìöt^Vo„þ`Šy”Ñ´p1uA¶×¤ªÌ².CÊÍ5R†ÁCÁò™dMBâlæ›ÄvÙÄe;Á3 6DÕ¯Þ9•1©‡ã3:K¢\£“z“9a)•¢¢ƒ“›ÂÞSHø¤v«èÞÉL! í&æWè +Òs¹7Û}ñʶŽYûÏy*¡&¤ÊR´M§„s¦Ù‡pÔ<¢–'¬ÒuäÍ|b)¢ +Òx†B(J¢‰Âq)1t$Á³q°¯h²Ã¨HáÆ>¢4$Ì=ÎP‡dW¦Â4@_€tÛN- Áø?bsÙ8üC¢‘c.4¿«•˺ÔAR(¯=¬+çK¬³€"24­—ÆÇâ!.`© +oíWœvÇÕÍVRòHLìfZz·ó7¢>yΘ0k)ú¢Ð ÷™@¦SÙì“î–¬`‘î¡”*o}§Â+õ€¼$'i=w¬¹"ÙNHn_¸èäåGäkºaŸÖ,¸w +‡WZGµ¥†^ÐÇÌÄ­%r"·%¨Ù1#YÑ£s7'‹ÓŸBÍ"öˆò¾ +@PÜ»³tjþ«-êr•“rdN%W,®õϬ²MÌn#à”€Ì R¿Ûý§¯º8ØxX3+ñ‡ZHn(uæ{8Y N–D4½Óää‹ÇÛoû9±é¿XÊ=¾SÒròip;á³b ž 8abÄUw‰hŒœšX©A·¢(XF½nu´/Ë!ž€*yß±…°jiI2[Æ]l h•íQ'¾XC±3¸«”ÀþýAüŸèc?yOв æ^—]#Œ„ð›['jý3­,Ó³Ñ=3)\„C½u†µž™­„´yœ¦©\ÄH.|¸&-Bn1èÐ8ª³&å¹:‚¥{À—1[ƒiú¨‹®{¼›Ghé7Ó<–,©YúŽ4WCùú”l(м˜©ú/ìÿôºÞvø:!ë›Qj¬ äy²0}ÃßDÓZYZ… £<ßÂS€Å<û†ú·S +c¯Ñí|¥k ]<Èe ·²qïbV®¤Î[§€ÓÔ =·W9i>,p'"<ЇX¨XÅÁ„z/ÛhÍ!mAA´“Ã5œËh£=ÛúWœcß«khi.PW +ÐUI©÷¤"ÑÎãp„x}†/“±M ™ß&Iy$S'6‡‰Vš¸(cEåôÏ)Gh«ñ9!¬ X‰iˆb‚ #‰{­zÞ£z¶š8 {W»¦Ž¹Z¡óðæ•$Â\œäT§¸ØÀëÙÙCÃÞƒºªC0[ ¨n¶VÈ{:ƒxv,ÑÃþeµn‘T›‹STSã&b™/{E†j¬ËÒDDA òa íQAŒ\ˆHsçÿ³æçÇëM“òºÐƒ)…7‚óƒSæ!m ù’Þ7™E—ZG1 —ˆÁÞKIŒr|© “û\²µöB=×SA~¢ÿÞ ôq9gø'xiZ=’•î‹ÑàæÃ"AðVþ!Tæ¹ÝTÃE™ƒFðG‰%DC £]gÕ õC×ÉÝ^XãK´÷ÙØâ™d!âi¢ +TPoĆ&”"¡æŸ¸[Ð}ñ.w2znÿ°UX¶¨S'Ži”;Æà’~±$µ)ªöO 6kŽí?¿8f<,·v×o¶õZ‚ÉD:s¤uSðíÑ[Yy¥àïѰóh¬³ý]uú 3îÿ!7f¶{6±C‹þ¦±u;¶…Ĩ&RDhíÉnïØóVÔXÈ,<1¼Ê¿x6U¬Ue‚3nh9Ñ[Y ýAPSñxœ}¼óaæõ.c¦ûÜ9˜3LZÐóÇH ÎïÑúŸ–+’SeH5§Ë+:3ž>ÏÏÙ›Ç aìÑI2ò°%·…eþš…Mws+c¾úlú'{ÿ¯‚ÂåÏÏþ øL*>(Û 8®…>w˜È€‡€. Ácg ×,bMJÆdJÆç›ñÛˆ=G•3ŸqNï'ýsú³¯TSï>OÁ/F…>Pþ×ð;:_}ÌmØt2ÿkÐ2=Ÿ{†¹Ôå™d$ìaCBA?V_×ýWâ$ûÑ\ç˜"c¶ã‹ 7•S„‚–Ò0¦¡r}h· üNjUNN úÃðs8×¹ñ¯6vŠ5%[x1ä’µij.LôIm5ž^ScSõT+c·ÿb'wçži¶øúÌçrޱ£«â‡ß‘høÄï-N)Á{à#ü±pŸ Èu/{ÅÆ<Ç•PÒt–mô} … Fž¢_V«ú!º"£4󦦤Sî†ÏG)Zá$?Å”Ý׉ÑÖý5¼¼ìÄuÕLŠíŽI¥¬ 2íÑÐg“û™ärÃ[ÙlR©¶è¦Ž–`³É|­…MÐÏ $g—ÕoŽ„t]¨RÍzGÕ1Önò´v·¯Ž`CE ³À›bÚÍeÇ<•@{tðÔ[DVΜ «Ç€Üîàqô>1益d¬õY{·#DxdEÌnÚrVZ6SM )šÞù.\pkvxº–¾-™Í˜¯‚ÆD¨/ ‡"GP9§–›åÓ¿o ºµ¶‡µŸ[7n9têëlŒÕ!VJ€¯óu ´â¿ps¦GÄ~BwþMþ„#ñQÕàñqX`á'é±j$æÍi§ñ8eÔ©{#Gïj‹O;˜d+¶‘‡å;à÷×Î묙»ñ¦Rð§©+ENòºîŽês2Ó‹B}¡K¬hS•\µH¾WzõT¾úÊ|"*‡¬×¤ûWר½7‰¶]Š·¥ª@µ¹VãqûJ tåÌú¥Í@7U?Ìì[”ýÚÓãDvöiµû¯;¨jthþxU<Ó±h=žr‘TÙäƒ,c%zÐü_…aE"gþm¯ÆÄ3kJOs¥íõÊ¡u-D¨QƧJjXýUŒäPõB¦‚æG’‘mYg/S9‘@' 8÷'0 ë…´ Ë&ãc +@Bи2<"–"1 +p(Å¡8”AÍÌ´Á1Z2@@RÀ$“ b +œ@(&5B 04 P@@ %y-`x´‹A4†d‚—…KLÆgCŠð`L +b‚/X¹&D>šÀ¡X8”A‹CÇ$A$FƳ9Ž€ +äPŸ ¢o—=XA +§sX +ÓMl8h|F\@ +@ Z² áP*¤eäs(ÏÆ33£à —µù˜HÏæ@@GgãðáP  +H.Žä$„åÒ0È8ÝË€Œ+£DÅãÓqòVˆNZ@›+fe€¦æ$Ä`Y®˜"ŒISÌÆ¢„/- ™Ń)gL €‚âA +$Òáɀb >+(`€¼ &(ãaÆã3S`cB9Ô†ƒ Áà„œF Ãé^„’&d¡ñÉør‰8È1®ÂsÂò0™f&`R^@ <Õ§ºe§pq¨6qaÅ¡@jŠtáR†äPŸAÑ*a't8äP œò¥pÔJ@©(àÁ ‹ ÈÀ J&˜)uPâ…ÆÇàô)aMh MW ˆC)ã*Qƒypà@É4 h8ŽÃá@»^:ž‹pãñá@!+XáP,"%ú©ø”l IèÕá €À¡6%ÓI~°t8nÁz¼èËÅ¡*Z‰E +@€ÔÁ‰¬ñ)@aÑ.ŒßH¤çO@Í©@Ž“ ^ŠÇGă+ˆáâ¡crÈkÃp±LØ`,Ðl h d‰ÅoR€!Ñá9H9…ð9ÅÄ€:rÁÊ•¡€"ãš@‚„¢ÏÆÎ¨ Ä (¡£áåšp±2dEd`d²ÈŽÐ…FÉÆq¨—„ÒÊõ²a`ãd6"H(3êHrhÇh”¦çp¨ÎÐ@Ɇ•’JFx€P j \ +8#!'Yßq8aAŒDCmB(4>× +2Ét4ÛÑOBÐÖ @ƃ"—nb6:j°Ñ¹ ˜ðh|D/ÙrfD¨$!(çŒå‡¦ÀšåR‰<]‡ Í„V¸<œäËŒ + =‚äâ(z³0&- „§Pb€B LÉ¡Zbl܆{´ËBÄ/¬…µAÉåT`r q¦vÑÚzÚdxC]ÄàÂB‚R(9D°Tˆ™h9™™ +Óq(ŽÏÁ¶Jd0€ÔrqlGEND0ÐB„G iT¢å\BzºL¹IØ\º!QñøX +×ÄKÑ5¨©).åÄè‰ä†‚ é..b#ƒ*€GÂé^: ¹y¹äæt ÄE!'&@+×ĈƒÆgdQB +m\.—ÁS(­ÆPŒÇÅaبˆ "‡zh‰K_RT<A€ÔA +ŒOmP0Ä‘`AȇR‰NR€• +=Б ”„9PtØHÀ¸tàP3Í„€„3 ¥•k@„J¤FŽr¨…ÆgÓCB‰÷%»X†P\äÈ `HQÈ–›m!™p€dŒ(4>!—ËåqQšÐ®ñ0Á‡Z‰Š=PÇèàP+áÅÔãÑ®¦’“”©á¼&pTcà +^ šC’qÈH¼\$¢X"E^D@"  +äP§)¦£H˜¡Lˆ ^-5Ä¥7—ã>¤‰'ãD,"NkÞ@#$,8LÇ¡ö“0ŽaC98B[C‚åRÜyÐЋ‡ÄaC]¸pX-yA¸¨c³âA5#`€DŸ ¥ˆ¥€Ê¡4:J8z J™‹i  @ÃT„Z—ˆ‹ËÊ…áp ]1¤F4˜ŒÏµÐJˆár’%q›µà¸8K€–‹ëÊ;H˜¼çß2/û×s™9)”œ§yÚzÎsžm.qIh)fXfjF 'JáØUÎËzìÔªx1û¶!²K€ÈmÍO£/™Nl®¬Oùµ+Zk=“ò1EŽïÝþ­™_B\:*ÝŸN¦S‰ß:•RÞr̵RJûV§¯÷Š[·®:kî¹Ú1c6r¶c‡¹ªÍ÷þ˜5îK»wÏÛa¨Iîx£+¡Õ¤~«TúµF¤”·Ú(%…Ô˜Û†š‘³ϻ٦†VóúÛ_s²M0©ŒJ£šQh€‘GMLªM‹‹uM»'-í¯Õß#Ë›®u|Íj¥dRÓRÂUSO•˜©ùøTJyª˜R^,L.#O“òb2ÍL|ª£*šŠµL*£Ò‹H¤¹Ü-›÷'6úz²c®Rµ5nçÖT¶¿#|¾ÌÜ^ÑßÕû·µánõîm““é“D|[mÌÞß’%³Kõî{݈ÙËr·úÌfÆkßÛ©ª¦RFhf`jF3¦ ÈúîµÖle¹Š©iºû×ÝÚsn— +u¯õ¿!Kæ +û7óïŸý!*žã®3M¥\úÚS¿ûQÙaZ5'“‘º¿{ãË[v˜”K¥¾Éí˜è͹jˆí›7çífúTF…}MóÿÿS™b5@µÊø¹ª )š«Ê”É3Zù8¡ù˜Iù "UõÛ–7Ï»DþÖœeõ«êÚÇͶ³ò|EÔ–w~,[Å×½n;†©'s^¶å†¬R¢êq¿³mÃ~Æ©Uf[ï½N¶ˆ”KŨŒ·»ûÎ>·úWMÍóÇí[v ¯“_·2Ó¯¨ÜÏÕÛS›/YÒ\•RŒTG]ÕQ'êswùQ™a:`€>†˜šš•Ð0м(p šHа¬8¡ù¨™¹N®b¨B 53×ç„CI\R/¢JU@“@‘DÕUÇÕUÌYybõ gL‰R^$8*åEâ‘r…‰C}4ØÁêh, x¸¸ˆûX8$` È8ÔxçSÁ 2™7P Ä…Œ@d‰§¢ÃÀËŸcLsÀ!€…A§e†CÁp^2>î8Ô/Ì(JCƒ6ÉtìRó9ɘ˜PðN(‚$e¢Cá=kÂUÉ8P4a‡N‚‰CçLØ¡s +ÊLØáÀ ä!Px‡â|(È6À ZBjA¢äø˜(`‡N» ‘«"ìÐAvè(˜:'òa‡Î'¢#”"ìÐB¹ `‡Îq¤`1Xðq©¸ +“G Cu(dÃD…BBD|l,0B¢S‰ãZPa + <=(dvèXk)¤ÁÌI…‚t”Cu°CÇ-Jøé`‡°J“áah¥vè°Ž +I'¬ŠT KY)dA‚U"b<È¡>¦†À*uDĨy*`¬ xCÝg‚E0Fhœ€3$”“—  %% + +#% + +*!„C%$” ˜t¨¤%a¡ƒ:êñP Jƒ:8aU$ PXÐ`‡Î†JGö b`øNärµ DT„4‡Îƒ: A<’’p!!€`ð°|jFX>q:“ !L L,¡æs Ëa:Kfó±0 á Àƒ‚gSÁ° “`@C!C£á@aF6nÁ†ã8”FÉ„À´€hN HÈà#ƒ¥À¥ÑÔpX´ƒÂ¡Ã&ì°#  4œSHA…‹V•vQ"ìº @©¸Ïš’Ui!Z>g ° øµ€H!`„ ¤Åb’EÓ¬Pé 0BO¨D=¤‘ˆÆå‘P´ËHIÁ‘—«ÀƒÑV"P8¹"€ô|µF'&Y÷¾Ö蟭“ò)ÅK‹™Ùägw[[O·Ÿ™¶ÔNÏ»önyß³½2[õ“½Ôm«‹§ëÚN÷½ñ5o÷¾·Ø´i6}Ýß×½×F~¶êùéþŠëÛ²q1"%e?¥mšÐÛjÿ‘õoZ«á£õ×H‰Ž(‚àwÍäoïeªq}6·¶ËÓ‘Õ'Éêüµ<Z¤k;ºkŠüû=¿á"3æÞ‘ÅÄUÎüv¿kÖuMLÖÜIr…RN£®~iÔVŠŽÜÒFZ+e¤h5“‰w”R ej¾³mËLõäc¿q§Éä%Óæµ•˜2²vdZ«O|V+ö›÷P$ò¶®˜m¿-º?óåJÛù/¶^"{l;‚›ÈÙ¾›±:b¶þïfv»U;g³ëï1ÇFÁ~øÚðÔŸ3æ¶ör#^¶îÖeæØT/ý÷1ÜåolxˆØXs¯÷ñ©§ºó+æc{{c«®­m6/þm3ßguÔöGÆê”KÕÚÞ››×ÕÛ}ê)ö2ÇÆž¥ÓòŽJwR‹4z·’¤kµö·L'SãQ©ù#Dëûââ1²E†¸ò´7êV:•Ðd²4²æZצ¶®ùÔN£ÇKoç®ö·–-wärï¾ÆÖÇì­ùß°¿™¶¼^ù¶±÷“mËP +is4:%©eZ>â·N¯KVk)¥‘H¤l¢PsìÅÿ_zæjcŸá)_bÕžå¼$«Têµ¾×dPOZÒGUûMWÓ›¨Ýµíc[ÖìßTSÿòSño›Ÿ·ãcÎU7ÿm}~Ú˜sk·Fï^æýYæo3çjÛuûDäLö¯ÜÙèÇ‹Ìÿ«˜í™‹‡ì‹ú¿—¯ÇšþûËÌ™{=Ûû>²mùªÛ­õZ+óÆŠùõ¾qz/cäln|ÕýötþöùéÇz¹{¨x«Çˇš©÷‹‰ÌÝÜ›¹á¹3~ÕÛGõvÖ+ÿÖrbdj£íVmZ£Ö#«9i­Ó‘ÐÒ©t2ñz«.ºž¢»¿ÿñÏÙB\ØÜ”&Mi¶uBv‹´iud-L§Ña³(¿“÷ºeª¶;DÖ¸w$ýý³ýe·{Woéç¬q_|ŒÛú–9wèÎ4*}ÛRJ)­ÆþiTZËGËÖ›~Ä¥dýqªòÝw¦ß^ò9;íê¶ÿÌ?TvÚo:™š›L£V:+…Û­VâµZ·Éò#1©K½M$Â{þ½uÆõkÏí×ËîvG´%æ5½mõ÷lDÖ¦ŒÇí”ý+ID{Õ{|oÌ’Ù¥R=öäVìÆ¬ÝÚ9ž³ÍdÿÍÆØØ›wÜø¿O™s¾¶ýÆo«ûÚ­-‘5rvjróVôgŸM¹ä¯6ë5o^ÖÈ”K…þ‰ÔƇÃáP&•QÌ0+4•i¦†Æ4£R™TF1¦šQeÀˆF…š1)`Ͱ,©;óÚ/ã·ˆ“[Sük}Ú,¹µßöÏ®ê?F<_edþ"‘ã¾.R.å1²&˜•êD‰öîwµ1UY·s¾kj2îÖˆÚòvãëUü­]ã7NgÞ´Ên‰ë,»ý¡¾?"CÿlšêçŒùOTDÕ­Û¢#ã÷*"6LÇÓKÔF¾äLÔ–-×ùš[yS“µ®*n;öDWG–üÚÚç*»·dn¾Êòê2ökªì­Y²_okw¬ÙëíÐ×QÝ&+"âú_#[þÏÖ›·ÏWÕ9ÿ–³Ûý²õfÜl Ñs}Ù³!²¼mß­‘1ŨÝÈ«mýE•òf'{6r^ï7æ_n¶üÈÈÞ[7oª®”Ú·zšËµÎóvßÊêËmïý‘‘µ=j_²ãçÆŸþëÌM׳W»½Ù¶¶ökÖ‹ýž|ÏÚjÅÜ”Ù[»—ñîÙo¾3¶Çãw†¬çáf¶SoÞlyQ½y[uÎÇæÚPY3•¹µBo ï›f²Õm-›g?7ãÖJ³ùòbsÆúÕòkú»Ü¬µVÌ|øŽùȬé÷ý5mÖmìÕû»!ò3wäÕû=GgèZí±çµ|egÈß:ïÓ5‘ÕéÞ¨ËúÜ®±Û2_ïD÷½†ÉÒµâÓ»Ã÷Ãg½_m~¶&zÃgèŸþžxljì›VØÙ’5Ýmí绺Úîù‡mÙž²ïiÛýSlš·èÍN¿ÊÖz:f7Û~ݾgOgÞeŸ_ñó¶¶Üwí{g§ï»¨ŠžŒLõ«þNÆc»Z=êeËëçe¬ªú›÷Ì\Ÿ*áÞ¿VŒÍ“Ù‘[;êkKeÆgº‡~ÎzÛîß5û­¾¯ý˜)UªTÿ.½é·g[²úù¡·²l­²yÞ®÷£³å¯pùÙ·s²n­°­³ëéã2å§"ªÝÃÎß>Ætlø×›ˆ ù«ÅU½–éì­yóî·|.ñ'rïÿv&»kcÚšµuâÝ·ÔÕ×ÖžÛ_Þ±×ÕýöݸÝ߻͚~ŬÞþüW“qÓ*y7¶nk>½^ÿÌÆØ2õp›G¬Þî±¶_}c¼Vüä[çÖÍ«ä~|^ý\ïtõCÝoì÷»i¶â)²Ö´bMïnÞÏÊŸ +!u¢J-—ÕQÝõ\Õ¿ýµdˆêËÚÙÎt»›ž27¶¦×§‡½Êx¿ºÆÝðšfã1Þ§D¹¯Ëv¿â»EE|lÇ{ïlWnȬ·®ÇtŸ*UªÎʈÿîLY+oÖ»æî§ ÷«F?ƒJíØÍ¯¦1¯uø‰X´rZø&–VÐñˆÉÙh)%aJ[‡Ä\Z$–a%tþEfd"Ø‹ÙÔéôR3½–bèBá–ÉžüËãìˆÁOÄå}çI‹¼;›^+ñ\b=O@0ŽgàTb q>D…*ðçd²ZWO±¦eëâð©Òt®t†Ñ\@A™¦Îéê7€Ô˜R³Á^æ± XÎŽI{‡@Õv±® $ÕÞ…ÁOÄ_Iü»+ÈQà¡c¤›E凫r{bFfz޹6ÎUcG¢ÄÎ OÊ¿16[Rã%ÿyû¯L(}à˜jÅðzg‰Ä:"ª)èÿäÝ^ìZÒ†6†ñ´q7i}‚‚*ÀÈst(ãù¼èÙÃj¦$0…½0ŽÔ'<›úŠp>ÁÇšhjA(ŒRnp‘y$ +iÓêæ+žÇ„ pÒ«PâŽhÃÀe†$½Pãë£øÏÜ‚$÷â"Q}À)k"×î_Ë’VøÏ$¿.7k³ã¢~’ù! Ñ1?“oëˆÇ¼³Žkò÷„)TÚ"‰{çGÍÕêT­cQÉ ÐŸ“—QSç}VÆ {ù°‘"Mb}(ç9M¦)·!tДïÇZ=üuº 1|Ž¡½M/eºÓ̃™Æi^ÚžaN=1©üR=P³ôžÉ6+ì´\(’µ„S¢.Êï–BåTÚpfô+4àHûIˆi|C¨1Ùû´3ò‹ÐW#ŽˆË´ ޳–€UºE ÃLèuŽë(³ãZºè»ƒ*‚ÍÉ]Å)þ™¿³"޵ê.¶xÃIÏô?%¦½$¢ˆ÷Æ4²Ú¹ßBtØBfÐèŽ!“ŒYž»íWh­jŸwº¸£±bÜAEv?wTËM¼Aÿ×PV(nÿ´ÄN4$Ý”¤°š¯€ùBçEòÑð¸EÎ\žßŸè!«ïÕõÞ~ªã8»âç¤ÇɹèÇ57•’ba<õ%ì8e–&âÑ8UâA ð5ê‘]¬ ¯g¸ƒÅ˜0<8©ßÈW<×44¤&–#&aÀñ€h£íNÑx-œ¢›|Ów~w“ÔYjÿNS^@RŽ‘–€|Ö žçÆ•Xÿ&ÈZƒÃÀ[ÍÅ—€ ¬×ŠE„í¢¦¢/ ølßfžkÕ ¯?>™2&-# ¹Â‹Où~LqÄA°™:ÆS„i„h㣃™· "„°4^9¶‰²h¥0…O:f:ÿ& bsë —1{iêÅöÎEdý²|´J8,³×ŵ̃ÃöL‘¤ ׯsá·FÓ,À’c›Õrè{º½CNð6m74}ÞTpôN'NÒk¨ê +qáÏ«w¼N;¾`ǫٚš¿™è"y—øò¸YšižüŸ Ò+#øt3½Ó 8©Sg9"BœmT BîÐÏeÛ­ G'L£8Àó…SúpWAØz„Ì$ ˆoü=ÑÄ¡[Éeª] ÑOúYf¯l”³ IŸ÷®Àœ9B=Áöد|}íN ²J1O½hA TA__ +¶+5Õ¾X§Ëûù¹–zœ6‚P<–smÈ6ò©!“&uo +eJ³eêž’¸¯~MDU'žÿ?5Îý´Ýû”Ü›ýl6R9úDš†¯_³©tö¡Ä\öùáGiò•ò@PMEct{p€Ò3馪ÆÂP4TwJõ„MŸYÀ°áϳ´µBìÓ&gS‚þ¯¾‹¦FF³ {¤á› âÔ.¬°ÎÉG(8ªO€¯Ëê+´ "F={Š­$¹ñGO±GD‹“‚ŠQç7–ß ¨5}@¬mDs1œ ž’á2\ îÀÓ÷‚±°…º(#Ý_lH]-]'²}-Wѵ2øÑtöˬ¬(…öÇùºo¼uÂ9 üâÆ +Ða}¤j~à `‡ýBÊ=¨øÍÑ¢m+Z«GÇSt9ªê9}ØýdtWi:Bõdô”ŒF %Šž M0ïÏ\[Â÷ÞÏíñ…IS0ý÷=¶+ž„åž;~™ÁF¹”¨Yé?· ÝüÇ&×5Q­cYUݼÖ4#Î\ qô´ $®ùç˜Çš§ô@â00äiƒ`! ¨*1½aRzsÆ ÄAØ05A ž~ºýf¥ øÁ²¼ØÄ7Á ;X\c]¬98n9ÊY_''Èí?´ÈõÅ‹&€ð¾7ÒÀ Ÿ”qò–÷AÓKãM{4KÏæCoÄÚ'ˆxʶñq +¸…ýZ ÛjôÔ1¦‡Åž¨Äè°ÒÜUVæ§»©äåVð³åöf¢ô‘yÈΑÄùIÓ Ý›‡Ëª$xh|W,æÏ]M† ¹Û5jqž;T%êÐàÓA;9…Çß_co÷²¹UŸüTß]Se#—§Èa8 £!=¡¬Få¾"ÒŽ\ˆÓ¨{É;“m:=.òBxÔ®˜_»šRËø>ëžÂ¨ +§,üÓÅ•E8…º,kˆhˤêòZÓ5ö¤Ñ¥Š•Â5áT:q ìc1ù*‚±Ž½¡Ø„…ÖtÕ}mX¿6öÔÓ]¡ºþKã÷ôž%½6¸·N›´ø0-‰Þ¤ã/ ºðu8 +‚@4} óÒàÓÿqQRpÃ'½Åä!ìõ}áØþ¸Ü;Ú ¥yD]¦(ž ÀKut×èìÖ}ib‚ØJäÁ*F¦Y.’pÒn‡Õ¢­ +©|’ÁÛ#r¾æÉ&:³£DcØ£Ó/ØË«Yô`9€Ž€ª-‚lÁr«I¸ÂP§½ké·3‚×ÙÔ¢­ÔX(`4„“ÑÀ™ ‡EC*mú\µ“]Σwáz°™ ù 5ޤ¡qkåÓ¶ç†àèõ«€4ò§ZÊG…Möæ¿1Uxïg¦Cfr’ÿ/‘Z¬’¯OE½JðVbÙ³ Eª¯¨bTÿò¬à‡|¡™u¯óüž§³5÷‹¹¶ˆª>þ§Àñ·Ý)ŸëhG—QŒü÷QºøÍñC¢CcIìûCYd¶ûc“¾/v[+˜¢D5ŽeR}ùC{î;>åÍ 2Š6¯BRÄÝx«¨Q&çžV ëyl‚ ØŒp©´¬o*zE.u²Üre_€_-Ò¡µ_Ìæ}æÂI…võGßL,¹‚K”àÂD‹BŽ {ÆF·_˜Àœ®{Æ»÷±°œ Þ(#P+;y¬Bƒ§‚±ò!¹´Ðˆ‰óÌ)«J[Ѱ 1?¬ƒñÒ-•¬O ÏiÛJ@ç?…7ŸVé {w0ÅÖŠl1uÉä¬\äþtp°· ~›R–_³ðóSÑÆõ+åÝQÌýW¯ÿjøxB]D¯çˆiK¬»Wî%ÉøSx»s5²?W ÿ`0Ø›öã-œ qgs®ßÀ‰7£™È¶óK +Uĉ³º™k%&„R}Òa(§*UjcS&æu¬ÂÜßÏ‹å§VL½2HûÊÚ¾M! ¿$†‰½EüuÓýHaa¡¶þ*{Lÿ¶ŒG1WO¾Œ çø#áG¡šËá0ÛoFZçÇY¾sKå5ûû`̘ûNÇMµlˆø;ÜÓ¾vB'XÓïå·nÄC$}^nÙWדõƒ„CÂóîùþísÛM)ý>Xb—&ªßî ––½,¯ªè#‰N¡ÿ¼±œ_{=ï'þ¼-¾òÔœ‰Nyh§wVΡÿ¼™JÃö¹•3×zÿyo·Á3&¡ºüÍÏ[ÿú ÷Áœ´ÂÚ^Ÿ‘C‰×…#˜KŠç B»?ïy«³3‹L‹Êôó†fJ‚©Ì{Þ@h¨¾ÜHØf—(”¦×sgü¼A[DI×qœ–Iž!5ámZ§¡Kf+>üç­6 Â‘ƒõ)[Xpðuå+êñÏû²"€«EtÊ^ ÊÅ9ý$ôóÖÛP abÜü¼×ßzöÚ™;4êlÿÕsñÿ¼Y@½"7kÍܬ¾õœku6Þž7ªøy£%‚ßR¬=ïêþy«Â7àÉÒ¶«Þ¥ý ‰îäPè¸=ÕŸw©´I©ç½ÏÞM¥ã $4g3¡¨ÒxzÞúϬr$=oÞøçSÜ¡ö¼e쟷ÒôC¨ç=/þ¼•ÒæVn…ô&_P<l¹„Ä%sÀRFÖ1uª_%…Fø@C( :bþ¤‡F¹±PƵd*[Ï$öØz‰)ù«QFÌÀ~kH(ÊÃFÝ[=qY_#Ç}kD×%2#,Äú*7H8Åÿˆ²†¨ç.>æ!YÙ†à;`„F8†ÐüZˆyÕ ÍoVk"fÕ=©)ìŽ0=†¶%C bS{¿`Mx dí½›pºwqR1ˆMmYå!5™ Ø+¥Lu\šrû¯ÔðŒæ€yL6#‹O¥ºrŒŸÀe7Cšà»þQTÂ?©|[¸Ö=ÿ•Úî¬>%Ž›ãÕ>׿ I[(Ú—(Êñ¬µ#sÛ@í{ß‚ü^ AüÈ*®4ÉbúØÎj‰q¯zXiX;>ÿŒ«2 ~gÜ žU3¸¬¬òä“ЀK†“¯é2‚¿½|f, ·ó-eE6ÚH}&‰ýlvA<τՋXºÌióïÜñ›òðû}–5‚<%ž»^a¤¡÷%"KÓ±:ö°SÏÐâi‰LíF‚v:Åâ)8æþ¹¡e§?\ŽF}!ÿi¶O[ñÆ 'Þ£þ®å—¿w¤¨^Ôq¸E—YM-‡È­ŒYB ɽªÒ‰&85Þ÷E_Np@¬›~ÇWy•vøX<£"É6q¹¦èqâ¸Úû¯›‰ÁAn„Æ£qÇKÜg¨LuDA<Œ«e”(¹RBdr}C aY¹8•££[¯J gŸO°~¾ÜH‘ÊŸ\­R‹ú¾«D.K‘Hûþ¢¶qûÞhmEFöÇŽ—ƾÀÄ夎Ü0T¨4„Œ¢Óá!@TÂ7s¥7Š[DK™ºœ„Ü-ÚK|Y¸&Ù,Õ)À6q©fƒ™Ã6iöÛ‡J*? +RªSqÇ~TÄ+ŠUo‘ôy~oÒnGW%(½ÌWÆÉºÏÉ8f¥À¤‡Ô]Ò5Llê]${²Zƒ +Oš`ÉþšÌp·ðÓOýFÄ‚ÛÇ,1»oèÕ/zHк2ŒTF(l>ê0‡$már~¿+¼Ç¥î•¤xuî.­vf…³"e9tµ¤–YáTdàHÏ—nÜCæ‘´,~D ”.qfÄHõì˜ÆuŸD{¥WFžû5Rd€<Éd¯!êwA—üA0$£ÚþoôånH qrgë³À{4½ÁãîÎð»óé…7 #÷ 5ƒs·F§ÿ@öš/¸£àîCîa.5åtwTð¶òFF§¢%%Xík Q÷a\änЂ0« ¡èn©á=i*I%q‚|HtéîmðÎæBqºjx[bc°`0X_Î Ÿ» ä`x;]Rof¢ÇÝ:ðiØþ“¦hÏ ¹Ô†Ü"ìbô»šdr÷´Xyù¡<³„“j DѶ¦òš!™Úæ…ËÑ”4m“ÝPk¦Äm®òdž‹ÿB:`žW»Å¾ÅO»™ôŠ%j[E&{¥¢7m‘|ï#GH­m ºB%c•Dõ}’ê±î¥¹M¦JÓÀH“Òa¹÷^¯~kÛtüÛ¶K!mk‹2!„ÓS¨m7™Û¬»e¦Éò¯é•ÆÜÚ6±{“¨‘|ìÁQQn¨á­¹cï¢øÄÅè Z==Öøs«ö?޼U"TtìrþèXíØíHTHÿ!4òM‘yBŠxEÎÆ]†ÌY¡PE„¨ÔŸ5ö}n팴#ÎNá[>;Aú‚Ãq¨.‚»pvd/8FsþÄÏ0[)K-Š( ýô-f¯>pØ&j[¸"ÔÆ³–ò&L/0Qž€&bÛžF‡´#3¼±uã÷ñɬT+ÁŒè°7žåº5µKÞÁ"=IL6÷Èü ÖzÔ=´—šAx$Ôt®½ ^°ĵ¦]‡(É›áõؑߞ]øfä&'1${x´)A'®ä)#Û!רPDˆí|¹‡þÒâdY'¤àµæ2¶ZrÚ2¿v\F˜{Þ„O>y£Ïl3ïŒ7¼nškiÉìMãfv~—ÍÀiZ:±·ådî×;ý†%§f€k1·›…0Z^½Ù9‘ÉJ±FÔìX4i°˜Ñ×[Ü’rà²mŸþØ»!ùA ûk/^"ùG˜ ·‘ÓÇ+ĽÓÿ·Ùý ¡íît ý[ä}Ú°´¬?@Ó¿Á¼[D¢®S—œIÆ|«s7‘zÓ¬ ”8Ébú§¦óä!7b¾Ö?cKÿSAW:ŠŠ£Ž7šºcköñ—h÷à +Hè8KÌé`ðG—?Dr­Ãþ«Øõ9©”ÔNÍ‘åã|ãÌ‘$шÄÁ>³q…Èû¢ÈIgX +‚M0.{¿¥oÕi˜%ï%´Ç*–ýz™Â±££IÒ}²XB—;IÇwr„ä¡úéFD`¸3ÊÍý\…ZÿOböbAÑ<½`‹âPyT®Únž‹å“Ge°´#6óÐÝá S€‹aÞsë²”"œ‹(8DÞa2ð”o‰L.: ’¥´ÿŒ‚IC)^ò3`Ä®3ä-‡¬¦cÃü‘& þÂŽoY–=rAp.HªOþµk»máñ +öÚµ†ìæá»ûþ@ +ßÂÚÕ—UÙSÉÂ&Mè½›p¢µÉö×6Ж]Àð’«)ÎWöÝn´”†æŠ„P£ÎlfÂjh•Єµ‚¯å«™£ :hžŸþz˜U;õšàhëÁµS5y”œŠg¡Ð­ö~)íͳ!*­qLêÙ§™ðýÊí%³PL ª}S¨½uÀ‘åDz—æ¶ÓÙ$˜g¶P¼“ÈL°u¿/Œø¦Qpú5žÏÍ!h'y¼”:TΪh8l~ÆŸÔ¸:mëÞÇÊ4¹ýnÿ~ôi'‚6P9Ba¹úæ Þ–ª“¡°’¼hv`BhÀ¥á 5K—¡ÚJ ~¬ú ×Ü#ûe@äËó4ªÚE¢hîѰ´¼|¾:Ý!^*,8-o[ΉòABbŠOyènjc߀}ÑËúgò Î#Oj1 @^çIV-‚sËÊj  º'vއî 2q­ цMéïp&qöX·“<Å u‘pý‚\ +­ÊQ0ÁìÄ®V7ÃJn}H]—@ˆì±IuœÒ°A—¹D€ý`—JÑ%ÌûR®òáÓþ\éêPú;¹ï4L¾»|ÝÖc§¹ç ”{hÙÕ«[#™Aîn3ä‚+4C8‡[']ûg^–ȰúÅ l“ÜÎAÄ…hl6¼-ËnÅ„³‹¬»ÌÆéåpHi@4Ô:ã‡xÆ`D¬,2«EÌ4´È:²¢íÑüCÚÏNF¥ U!‚\>ô¼øpô + øŽZÎ}PÇÉ-ÖÝ QZ VGÀw> ¼wKáõ‚C¤…—Ž{Z²G¶G§¦½—þö¨I‘=–›ñíQZŽÚΡßݳ¡ÁEÙ#LÀºø¶+°$¥è èV† Æ–¤­C&K¿|ú¶$íV†L¥–©œbIj•â¶:£“DÇÀÏ"b’œa¹˜¤ú85»Ÿ,IsŒù@Ÿ;W’%I7—‘ÙÄSµ$‰ÀÅeé(Ä.E1»òÞcÓf(¦©,]©w‚ÙÊ[fsWÌz>ší&w€hž—Ù0ŽbÞ @oË/Æÿð\ì¬e6Ë!»×S«‰˜µ­À›.O±f÷d<‹ÌöœŸE Àß«:©S×ÄLêoQËeÙÁº«8±ù§[#+йI ¹"Zǖ̆—y€ËÔ—X-‡Q”Ô2[D"vŠf8a\€[¦?@6).ƒ¸gkÝm^X#Ù[ºÆ±] ­ïX±”ƒ¢šMŒÇŠKYÜíÝÅ"ÒU¸±ðœæJ]HWàÁÚUQY¥«  ù4©Ê +)Vá@æ¥Òµ bÎ /]S¿XYh‚Apr^Œx¬dYZmœ@ux€ƒ1ÈÁYØÒ¬ÎXx«>IL¹÷Ò‚êR(ŽteD1–ÁA(0,V=ÑÑr Ì@¬Í…j,JÒõÞZ½þ6Ó!½ââ·Àa„¼D-pš:Õt”aÄOŠóVCIb¡þµå¤¬Ý=l«8hùŽÅš—ÇÛiŒìK3i`æ#@ó¯wõ„±[Ò߇…VHZ½Î(=/,šx^È.WJÒ©0©«²LrÂOh²;‹Fçz0ùÚiêm>@Уe‰â¹ƒÎZ,©hˆ…MZþ7­¾hÜ# õ‡Å럂æ=+%°Zq4TG­Ò“âŸátZö³\iÓWÑp¯"=Ðÿb¥'c£×X¼O 9Å•‘9¯kãY±"¬>× ‡Y’¾¨¬®ÜIy_‘­Á×"íeÌNUìŸ ¥¹‹·2¹¡jþ-V2ß +Ô³X{,ДU÷ÄÛâòòÇ~¥¨Ž¥N ¤Þb’±¨ µG½"7ž(ùXØ}`ÌïM!bu¾´ýž—•û±êNYŒÊ;:r¸ëR·|×Üñ:™ùX!ÇŽÍjPVÜR%ÛEKçemY¢Ão¾pù1¾–…±¤eTfì ,\rc-¢Lä­ú†8K0¤Y&Øœ}phe »rk9Â]ÕÝÜÚ>°°ë‡_bc%›Nyc™ŒìZÂ]¯XPÔ[Ô\‘| â¾ì†Så *]ïÉc+S É^Ds€[]Ѐ@AðäT +»qYÔÕÕûjÿWC ~_ÓÙæ^ã•M±Áê~ú +iÁÒ5ëÏp”ö+—&þô•Õ˜o +¿2sÌ›F³$F¢0¦í¡ÅÃJXAŒûˆ¯ :i‘H•ùåOÊ@dVl:ÃA½*wÅÄ:—eŸ¼bõèë`¬Ð:g5Ñ¥J±héX˜VX_Y£\¬% }ù9ÇeYð5c©Ö “”e²ÀrWÄYk¬Ã²´4^µÇ’[0”…Ž×ÚsƒQ–`S@ZLÎàáåe‘õX•Å$¯ÅXºU£¸¶¯Ð¯Çª»²„Óý’rŸq±Ô‘ØÆ>Μ%‡Ê·BV~/V©e½kq7Päã†rVÉ«‹uËŸуEID‚çyæü%L}S\CðÞמºØ–XQ§âG%¾i¼éêÏ ð†¨Æ0,§â œåkÌù( &Ú \¯‹å^!~šIk¿€Â'ÆÑ¯ï¦ ]’îÔì@wVóiÒŠÇÌ¿_–m}Òáħò‡÷ \‹f ³ü;Àê;{ªÏWûæÔø~X{üC~¦²9º4$d™fæÇ qÀ$ÖÁ$DA¯dIÚî +1£}Ì%fLF§ê@²X,ˆ2ZMuÇÛ©R ;jEÿ™qR:ˆ#à~&=rÏVÍs=_+èÙjz©êiÔ[ñž;¹wEÃååó¦ûz •­\w É»V'u*3žÚÿðoÃí’¨µ÷ù0—+öñ$ìx¯4o®1¡+7®•J—+ý.£‚+<Ñ+¾î €U+WŽÎVš¾ùÅÓ>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|Q}Lw¾£Ü«“zZ½»9²h†X±RQV¢ìªÀ¢£ÒCN¡ÅkAÍf„lq|´e›Ón2ƒ6@˜¶E!ò!C‚àt•M’™˜øþH¶k÷ÏþÚ?OÞç}ò>ïŽ`8ŽGlIÞ½%}ó;Ž ¼Éœ&XWïâ囟Ȉj\ —…Ph-r½xñb;7Ã%mË'C±œd-”jäÙÙµqq1Q>Ôú16ŠÑh4~Ô²›ÍÖýk8f³s66Å’c +­‚ÉΙ£ÙÍùù¬ßÂÆ +œŠ}É'byËñöm¡Œê¥Pœ"`–D,ê¢ÀG>—/ûü1$ ‰“b'å‹)JîŠ-wñK3pnFgçWQ(|5 +Arþ†‚A©†ÈIPÀaÈÙ +´œ9ù6åm]´H—½bmüž'°ôÝŒ1ŠóÅbÿdå‘P(™R^†’°©y:‘T¡›¾NâgÂI**GD÷âŒLÌA?9å× XáÓs¢šM{‚ØÄT+·nØAÔ7µ7ÝTÏ5ïLa*V%Æ"ŠÙšn”+J†á‹0‡Â´'Å«œmk¡Š›ûì#jÐLxŸy·ÝНfœråÓ‡W{Uãé£h©>Exº6•¨iè¨íTO´ìÝ“ ;˜Êd¥´“ÊÙ©I³ÆÁyIˆPïL¯¯|Ë€~îMág=À?’‰‘a ÷iÄ•QrôÃÂ:"n ½ñPA9å°Ÿkªn¨¹á"Ëù +žW¡ÿ WîBì}æ=2Q?OS¨4¡~ÂU×XuY aÝïÄ:í[Æõi»kª é¢dâÈ…[G†ÕðêÓ?A9iêÎhdêr2ÏdªmÇËË?dê!ž)ý z@3Š? µ’µv~%õAQÅ'‡™¸Ò¤ƒÆÝA©©{_GKUh£aÀ€z@z¥î’'ùýùtyöùÈS kë«jç*‚PÔBµ&küy9S]õåg§ékuí-]ê‰.CttÆöMþçÞÁ{ÄhY´Ç.—£‹ ÷/ —DÑ+mÛ'¶Ý ½üû¶G`ûu›GéS%¼27 +Äxf®™qÉ•c¯|wó†jbû8 +E¤Vi¸`¸ÇÓŽ2Bé‰ç³ÒãTQ“:XF;û¨õ™½.ævkÇè7ôŒpƒÛ JÎÈÚ@+Çb5~Á¸'-;Çp”I¬ÉºØ¯ê¾z}„V”>Ý ´â­Óð•Gö¤”:_Ñàhþô—SCMíA}·¯ÿ¯©@Š@1C‹‘ìÁ:XÔßùí—hy"!W¶97ï½âŒ ÊŠÊ:ƒ@+6R[ßD²ãe¥'?bÌö½–4õ¦¬ž‰Ç]Å ·xÔ Ñn·»ÎM¢\÷˜[NŸßÿ~È¢ÊàÁ—f‚gªB^O/ŸQÿÿÿÿÿXUi endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +0 31 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000018370 00000 n +0000000000 00000 f +0000018421 00000 n +0000000000 00000 f +0000000000 00000 f +0000021364 00000 n +0000021436 00000 n +0000021576 00000 n +0000023201 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000070538 00000 n +0000070354 00000 n +0000072471 00000 n +0000018833 00000 n +0000072358 00000 n +0000020901 00000 n +0000069780 00000 n +0000069828 00000 n +0000070422 00000 n +0000070453 00000 n +0000070737 00000 n +0000071057 00000 n +0000072496 00000 n +trailer <]>> startxref 72685 %%EOF \ No newline at end of file diff --git a/CageUI/src/client/rooms/AB140-167.svg b/CageUI/src/client/rooms/AB140-167.svg deleted file mode 100644 index 67b9f14b8..000000000 --- a/CageUI/src/client/rooms/AB140-167.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/CageUI/src/client/rooms/Test.svg b/CageUI/src/client/rooms/Test.svg deleted file mode 100644 index 651ce573e..000000000 --- a/CageUI/src/client/rooms/Test.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.59 - - - - - - - - - - - +0.30 - - - - - - - - - - - +0.11 - - - - - - - - - - - 100% - 89% - 70% - 59% - 41% - 30% - 11% - 0% - - TEST - TEST - From c5446d38a5aa9e477644d8284a3e8df216983ed3 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 10 May 2024 16:02:41 -0500 Subject: [PATCH 005/357] Added some styles for modifictiona --- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/cageui.scss | 61 ++- CageUI/src/client/components/CageDetails.tsx | 90 +++- CageUI/src/client/components/RoomDisplay.tsx | 2 +- CageUI/src/client/components/RoomLayout.tsx | 40 +- CageUI/src/client/components/helpers.ts | 64 ++- CageUI/src/client/components/typings.ts | 144 +++++- CageUI/src/client/rooms/AB140-167.ai | 476 +++++++++--------- 8 files changed, 595 insertions(+), 284 deletions(-) diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index 859db0a3a..cf2aa9071 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 5721770c1..932eb6c34 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -131,7 +131,7 @@ .details-header { display: flex; justify-content: space-between; - align-items: center; + align-items: baseline; height: auto; margin-inline: 10px @@ -158,4 +158,63 @@ background-color: darkgrey; /* Adjust color as needed */ margin: 10px; /* Adjust margin as needed */ border-radius: 5px; /* Adjust border radius for rounded corners */ +} + +.details-modifications { + padding-left: 10px; +} + +.details-mod-header { + display: flex; + align-content: center; + align-items: baseline; +} + + +.details-add-mod { + float: right; + font-size: x-large; + padding: 5px; + border: none; + background: none; + margin-left: 20px; +} + +.details-add-mod:hover, +.details-add-mod:focus { + color: #000; + text-decoration: none; + cursor: pointer; +} + +.details-mod { + +} + +.details-modifications ul { + list-style-position: inside; + padding-left: 0; +} + +.details-modifications li { + font-size: large; +} + +.details-table { + font-family: arial, sans-serif; + border-collapse: collapse; + width: 20%; +} + +.details-table thead{ + font-size: large; +} + +.details-table td, th { + text-align: left; + padding: 8px; +} + +.details-table tr:nth-child(even) { + background-color: #dddddd; } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index d0945c358..bd1a683e7 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -9,9 +9,14 @@ interface CageDetailsProps { } export const CageDetails: FC = (props) => { const { isOpen, onClose, cage } = props; - const modalRef = useRef(null); - console.log(cage); + + if(!cage) return; + + const addMod = () => { + console.log("mod"); + + } // close modal if user clicks outside its bounds useEffect(() => { @@ -33,24 +38,71 @@ export const CageDetails: FC = (props) => { }, [isOpen, onClose]); return ( - <> - {isOpen && ( -
-
-
-

Cage #{cage.name}

- -
-
-

Total: 2

-

Status: OK

-
-
+
+
+
+

Cage #{cage.name}

+ +
+
+

Total: 2

+

Status: OK

+
+
+
+
+

Modifications

+
+ + + + + + + + + + + + + + + + + {cage.cageState.extraMods.map((mod, idx) => { + if (mod.name === "") return; + return ( + + + + + ); + })} + +
ModAffected Cages
{cage.cageState.divider.name}#0003
{cage.cageState.floor.name}#0004
{mod.name}#testCageNum
+
    +
  • + {cage.cageState.divider.name} +
  • +
  • + {cage.cageState.floor.name} +
  • + {cage.cageState.extraMods.map((mod, idx) => { + if (mod.name === "") return; + return ( +
  • + {mod.name} +
  • + ); + })} +
- )} - +
+
); }; diff --git a/CageUI/src/client/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx index d12cfee35..1e0138b64 100644 --- a/CageUI/src/client/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -10,7 +10,7 @@ interface DisplayProps { export const RoomDisplay: FC = (props) => { const {name} = props; const [currRoom, setCurrRoom] = useState(loadRoom(name)); - // insert logic to find ro + // insert logic to find room return (
= (props) => { const {room} = props; const [isOpen, setIsOpen] = useState(false); const [clickedCage, setClickedCage] = useState(); - console.log(room); + const [clickedRack, setClickedRack] = useState(); + + console.log("Room: ", room); const openDetails = () => { setIsOpen(true); @@ -31,8 +33,10 @@ export const RoomLayout: FC = (props) => { const clickedRack = room.find(rack => rack.id === rackId); const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); - console.log(clickedRack, clickedCage); + console.log("Rack: ", clickedRack); + console.log("Cage: ", clickedCage); setClickedCage(clickedCage); + setClickedRack(clickedRack); openDetails(); }; @@ -48,14 +52,30 @@ export const RoomLayout: FC = (props) => { cages.forEach((cage) => { cage.onclick = (event) => handleClick(event); }) - console.log(cages); + }} + afterInjection={(svg) => { + // Parses seperators styling them correctly + for (let i = 0; i < room.length; i++) { + const currSeparators = room[i].separators; + const separators = svg.querySelector(`#seperators-${i + 1}`); + const children = [...separators.children]; + children.forEach((childNode) => { + const styles = currSeparators[parseSeparator(childNode.id)].styles; + styles.forEach((style) => { + changeStyleProperty(childNode, style.property, style.value); + }) + }) + } + }} /> - + {isOpen && + + }
); } diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 52256afee..0c1aac6bd 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -1,10 +1,10 @@ +import { Cage, CageState, Modifications, Rack, RackCombinors, RackTypes, RoomSchematics } from './typings'; + /* console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ -import { Cage, Rack, RoomSchematics } from './typings'; - export const zeroPad = (num, places) => String(num).padStart(places, '0') export const parseRack = (input: string) => { @@ -32,12 +32,24 @@ export const loadRoom = (name: string): Rack[] => { let cageNum: number = 1; // generate default cages - const genCages = (cnt: number): Cage[] => { + const genCages = (cnt: number, rackType: RackTypes): Cage[] => { const cages: Cage[] = []; for (let i = 0; i < cnt; i++) { + let cageState: CageState; + let position: string; + if(rackType === RackTypes.TwoOfTwo){ + cageState = { + divider: Modifications.solidDivider, + floor: Modifications.standardFloor, + extraMods: [Modifications.meshFloor] + } + position = i < 2 ? "top" : "bottom"; + } const tempCage: Cage = { id: cageNum, - name: zeroPad(cageNum, 4) + name: zeroPad(cageNum, 4), + cageState: cageState, + position: position } cageNum++; cages.push(tempCage); @@ -47,9 +59,51 @@ export const loadRoom = (name: string): Rack[] => { if(RoomSchematics[name]){ for (let i = 0; i < RoomSchematics[name].rackNum; i++) { - const tempRack: Rack = {id: i + 1, cages: genCages(RoomSchematics[name].cageNum)} + const rackId = i + 1; + const rackType: RackTypes = RoomSchematics[name].rackTypes.length === 1 ? RoomSchematics[name].rackTypes[0] : RoomSchematics[name].rackTypes[rackId]; + let separators; // either a divider or floor used to combine/seperate cages + if(rackType === RackTypes.TwoOfTwo) { + separators = RackCombinors.rackTwoOfTwo; + } + const tempRack: Rack = { + id: rackId, + type: rackType.toString(), + separators: separators, + cages: genCages(RoomSchematics[name].cageNum, rackType), + + } tempRoom.push(tempRack) } } return tempRoom +} + +// Changes stroke color of svg element nodes keeping the other styles. +export const changeStyleProperty = (element: Element, property: string, newValue: string): void => { + const styleAttr = element.getAttribute('style'); + if (styleAttr) { + const styles = styleAttr.split(';').map(style => style.trim()); + let updated = false; + const updatedStyles = styles.map(style => { + const [prop, value] = style.split(':').map(prop => prop.trim()); + if (prop.toLowerCase() === property.toLowerCase()) { + updated = true; + return `${property}: ${newValue}`; + } else { + return `${prop}: ${value}`; + } + }); + if (!updated) { + updatedStyles.push(`${property}: ${newValue}`); + } + const updatedStyleAttr = updatedStyles.join(';'); + element.setAttribute('style', updatedStyleAttr); + } else { + element.setAttribute('style', `${property}: ${newValue}`); + } +} + +export const parseSeparator = (input: string): string | null => { + const match = input.match(/^([^-]+)/); + return match ? match[0] : null; } \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index b08e4d03d..8ed675951 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -1,26 +1,153 @@ + export interface Cage { id: number name: string; + cageState: CageState; + position: string; +} + +interface RackTwoOfTwo { + topDivider: Modification, + bottomDivider: Modification, + leftFloor: Modification, + rightFloor: Modification } export interface Rack { - id: number - cages: Cage[] + id: number; + type: string; + cages: Cage[]; + separators: RackTwoOfTwo; //TODO add additional rack interfaces +} +export enum RackTypes { + OneOfOne, + TwoOfTwo, + Pen, + MultiHorizontal +} +export enum ModTypes { + StandardFloor, + MeshFloor, + NoFloor, + SolidDivider, + PCDivider, // protected contact + VCDivider, // visual contact + PrivacyDivider, + NoDivider, + CTunnel, + PopTop, + BumpOut, + PlayCage +} + +export interface Modification { + name: string; + mod: ModTypes; + styles: { + property: string; + value: string; + }[] } interface SchematicRoomProps { [key: string]: { rackNum: number; cageNum: number; + rackTypes: RackTypes[]; } } + + +export interface CageState { + divider: Modification | undefined; + floor: Modification | undefined; + extraMods: Modification[] | undefined; +} + const Schematics: SchematicRoomProps = { "AB140-167.svg": { rackNum: 6, - cageNum: 4 + cageNum: 4, + rackTypes: [RackTypes.TwoOfTwo], // rack types starting at cage 1 going up (single value means all racks the same) } } +//TODO finish styles +export const Modifications = { + standardFloor: { + name: "Standard Floor", + mod: ModTypes.StandardFloor, + styles: [{ + property: "stroke", + value: "black" + }] + }, + meshFloor: { + name: "Mesh Floor", + mod: ModTypes.MeshFloor, + styles: [ + { + property: "stroke", + value: "black" + }, + { + property: "stroke-dasharray", + value: "10" + } + ] + }, + noFloor: { + name: "No Floor", + mod: ModTypes.NoFloor, + styles: [ + { + property: "stroke", + value: "none" + } + ] + }, + solidDivider: { + name: "Solid Divider", + mod: ModTypes.SolidDivider, + styles: [{ + property: "stroke", + value: "black" + }] + }, + pcDivider: { + name: "Protected Contact Divider", + mod: ModTypes.PCDivider + }, + vcDivider: { + name: "Visual Contact Divider", + mod: ModTypes.VCDivider + }, + privacyDivider: { + name: "Privacy Divider", + mod: ModTypes.PrivacyDivider + }, + noDivider: { + name: "No Divider", + mod: ModTypes.NoDivider + }, + cTunnel: { + name: "C-Tunnel", + mod: ModTypes.CTunnel + }, + popTop: { + name: "Pop Top", + mod: ModTypes.PopTop + }, + bumpOut: { + name: "Bump Out", + mod: ModTypes.BumpOut + }, + playCage: { + name: "Play Cage", + mod: ModTypes.PlayCage + }, +} + export const RoomSchematics = { ab140: Schematics["AB140-167.svg"], ab142: Schematics["AB140-167.svg"], @@ -30,3 +157,14 @@ export const RoomSchematics = { ab165: Schematics["AB140-167.svg"], ab167: Schematics["AB140-167.svg"], } +export const RackCombinors = { + rackTwoOfTwo: { + topDivider: Modifications.solidDivider, + bottomDivider: Modifications.solidDivider, + leftFloor: Modifications.standardFloor, + rightFloor: Modifications.standardFloor + }, + rackOneOfOne: { + floor: Modifications.standardFloor + } +} \ No newline at end of file diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai index 0de1964e6..4f0692360 100644 --- a/CageUI/src/client/rooms/AB140-167.ai +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -1,5 +1,5 @@ %PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -15,16 +15,16 @@ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> Adobe Illustrator 28.5 (Macintosh) - 2024-05-07T12:24:20-05:00 - 2024-05-07T12:24:20-05:00 - 2024-05-07T12:24:20-05:00 + 2024-05-09T12:41:04-05:00 + 2024-05-09T12:41:04-05:00 + 2024-05-09T12:41:04-05:00 256 180 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUq82f8AKK6z/wAwNz/yZbFWOaH/ AIu/Qun/AFDn9R+rQ/VfU+r8/S9Meny/yuNK4qjv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+ d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/53v8Az+r4q7/ne/8AP6vi rv8Ane/8/q+Ku/53v/P6virv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+d7/z+r4q7/ne/wDP 6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/53v8Az+r4q7/ne/8AP6virv8Ane/8/q+Ku/53 v/P6virv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ko DX/8YfoLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//9k= + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy 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 foLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//2Q== @@ -75,7 +75,7 @@ proof:pdf uuid:712efb46-fc53-7b49-8366-cae9cb172e0f - uuid:57daad66-f7db-5a47-945c-84b5ac48f946 + uuid:9bda2d32-406b-fc4e-a072-5de5d524f607 Adobe PDF library 17.00 @@ -101,262 +101,250 @@ - endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream -H‰´WÁ®å4 Ý÷+º¤›Ilj· ˆÕObÉâ‰a„æ!Ͱà÷9NÚ´…ö¾^©£‘æ>·uâããã8o~|;¾y÷Öß~÷v> ~U§£âÿâÃxkæç߇_Ç¿ðÖþýüÃyÿ5ºóønÞüð‹ÿø{ø4†úþwì…G&¬¤ÌãóKõBˆ®$oÁG§1އàÅeQ{T\¡1'Ù¾ä(§‘g‚™’ ˆêyøeø AÀ÷Ÿ«á!,[#,–1%¬S­÷ÆFˆØcS[cñ¡à] šw“Òž“Gv¥D.dÕÅ ¯}–rìÄL. -ñÖ é -ÿw¤Ì¹º°P8éB‰Ì'¸"QÖ€²K: Ÿ†oŸ&r?ÿÑ©|ó~³užÞˆÑ^â'€IÖä¼÷i|z¾Š_?ý9|ÿôHíщ±<–˜ÎÛLv‘Ëæ…l§5¾ÊD×QYèNY(‚%”¦$ãu #a1=‚aŒ”Ôa„/ÀÈcõ] ^Ú¢*÷øØ¡ àû”«ºµ`ƒ-!á ')»NG-Áœe®)ã¬t&eÝÉ*_$È™Ê-¥:e §äbNÑ£¥šSÒWºÂB'¿•K¾Ž‰&bÔÊ#ø;={Pö”þ 'IÞÂ)×V[eæ¨öôÏ'¦ ¦›âK<ÝŒ™pÒ`æ±rfì¦tåN0V6PäZVã@ ‚¨dÕq@ê5—]§ã@%¾ Rpås9›|Rq …yVÌD¨iøÿ—›#Ÿ¨¾˜Oø=­X´´#æB±@¸ˆÞYÙq÷ÌO©, .l`‰Æ÷ß»eÌ«*t^ðls´CÒ*ª[v!a·}÷´.fA¯C‘C’ -*¡w–3:/W‹ ¼ët¤óÙå"ZJ‰ñLº“ ¬òLÁ¦ÄnÍ ·¢S*1'Ïjõâ]ZÓùŠÔ³¤íÙ.œ)•š¥Çðwzv Ü|Ámr 婲³rÄÿžì1†bÖóÚ“8 -ë[Î+²7Z6‡ã…¢é¬Gª¥×œÒ=ÊÊ…Cqçä± -Ž˜vptïCyE÷(^UÔÕ̪[ÃÕÊNÕï;©ÞœD¼Ô1ÉK.grÖ `J>ž)~ âÙ\â©_­£b8€Xr -rZñ!.Ч ÈHZ‡@wJv@ÜU<%Z@\9°L,±½'veç«l!¨¢§µnLôÑþÂÞÛ™x¬fQxLG0îèܸè0ÎvÞUúò%ޱ`Ü ëÃ8£Âãx#4`ÆÞv’ñ†Â( -ó†é0W;ÃóaÀ—Ñ£½¹„h_†ÖK¸àœö}±¬cµ<Âfle$E®Ì/¢XoÉQ©Ž¶Bµ¥¤–p6K›e=Vßèp™>ýh&®0V‚!Hð´îláÌÃTõlÁ+8k}œÍ< ‰Lš± ´hqJŒH0ˤ†ð†%쇋™Èîl7kv»mKØÊ«/@”4ÿŒ¼Ü -:jìà{œÏ–6;å@þ͈Bì†v6QGl_Ïv² ç8;S®u8/Žë(Sý|Ú<âÆ`ÁN¡ÁÔŠi -~²-ø ^ÿbB…±çgÙS9ê»G€¸9†%ÀnÏúƒ àä?Ãÿ¶ÁœaÂN+%b÷ŸþÄ|¨h…Ãõ9PÇܸªKø­õe³ePí±Æ@\Vvr~ QÕl¢ÕHÑT75;àƒ}0…h#k«L7»•I€oÿøÉyƒ¿ZÅgÎû³“ÀKx³9‡?Û¼ÉyFß–îÉ™6¶ÞW |Š«'w›þº:³A…¸Œ µÍ @LVÍJz=¶wBŒõuåkJRÓ{Í!´'έÍLlÍÜD\w@s«qI–Ù´¯6ô·©ßáÎØúZU;ÀiAµñ™H‹‰ÅXZ%å´˜HhàºøüÓé8{ƒž´¯*c ¦éºyDª½³G#3»8]"¯ÖóÒaÚ[kz³ÃñRkSÒfqb€ º;Û(qÜl÷èç'H(§RÅ(׸¤–¹yî´­œS”Ú5Õ,±ZOÏZæJ 6À6¬5ˆªÑ¾B{g)ûÚsžíH鵄’ÙF„ùA§f±À¶IÇr’8O%•kÄÄMg™¸f‰8®ìY -ývª=Áh ”cZm!•¢ÖkxR¬QMà-½=4³ÕtÎËëÐÚZ÷FjE7ë[i¢ÑÙ#œía~0c´Â*óK–Bï­--Ä9Ëž‡éHAUáì|Yɘ4â 3íeÐ:N]¥¸: S@ûÎÉÞéZÆ'_®ùLu‡K 4ãB×Z¾(>m®ËÄlíZ7Œ˜Ÿ°Éä5!”>±h=â? ï¿ÙŽŽZlDIíÔ_ý7Ô0”ëÌÕ (Ö©/u–YI°5VÓÚ@ðG­>r½Ç¶ß¿{;âç_ÿÿÿÿò'—b endstream endobj 23 0 obj <>stream -8;Z]a;%A4$&-U@nrrp)2gK;d!U%0Xh+urTb>"Er&BRSLCT`9&GF>PejFns,;VLI04TYM(k[Bs5UoLOCWE.,fq?,k/ -Uff.p.&:%X/GG5_c93C@mY*K`BY!;36J=hR!<<-"rr<$!s8N0$PuYQW~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/7/24 12:24 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -371.139245021352 858.326532935701 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -371.139245021352 858.326532935701 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX·GĤ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJHÃ:\ Ò¶m-ð®ën)© 16¦û » Ò ³ê{`Ì]Ÿï¿ÝšgÚÆkWT9åß’FÌh+ú$<'§«•P¨,û›IOŽ#Ø0¿[6ÀN† R$}C•êfÍžèZÂÃöì™Añ÷Ônf€Ó6¬†%©us$oÕÿç´+§û듞ëT€•íLJfhšckÀ€À“¡ÈM|ê«êØüù*8î¬ì§îÿ©Ý/Ïòû]ª9à°kW€‡í¯ù¶cª“-rüÀ½]õÇô˵w,×÷íÖo ·TûþŸ§\¸vt÷v_÷þ/·®Ïï6]òg¹ñßYŽ_'®u¿ð@b€¥ç:=µ¢Oâ^}Li–b‹Š<®gŠÍiÿ´×\ßöý‰ã[9]Ÿ¦à^÷FŸpáØÕà[vÇOÿôàßÚ—áøŽÍ«o—~Í)«rÞŸz­*—ÞØö¯éל’#éÁë¹æ´Tpk`õ1(=Ô»(vÏ9/ÅÛ†U– ðaQÞXy@QïÕÇt?ú˜%Ÿ_å²÷êcİ%K1üöjµé¶öÂ5K ’íÒ¶ìÖ·fVÎ8ö‚m­þ´KkæSÚ¿Ýx¶a–vÇf—j–]ï|ÇN­r&´ÇLÛ.Û}½.=‚pìò:žU¡Ó¯'ß_k¾ô¡cqJþ¿fi]«çxVioíΩ»v5SEqìÞ|öÔ{‘K»†Ys4»h¾æûžÑ°|åYõ?üW®Ô?ŽiÞ,y'Iz­>†‡&©‘!Í^Îðíz¾Š}ìúßÿåÖ.§rºn®éú ˜µ/ þö¯é°ÆñO;Xj¢ï!ÃR%»±›Ш¹-Ï0ë×Ú?¦_³J£áXµÒxŸgôÓ:K†[6,»¢zžcö €o7þ'.»exæˆÛ½?n8†S° ‹î öœ^¸nü‹}Û>œrïz¦X¿[« íAÇ虣}–cÉ.æ–+ŸÆÿËÕh÷·ÍÑê¯i½W΄ƒáúþüwVÁrèÓ¯üþL)qÇè;¶áà‰ËšB\ÿÛv=ZËþͬœ -v¿çÓ¸ØÔ.ìо—¹·«š¡ýmÔ“©8Y€QŠóïûÇ.ç•דY9¹:{|Ù;ÒºÖ3ÏHãÙ«qƒ’–Ñx×кv qÍ¢ñlÀHãÏÎÑ(ú²w.zR ;7=®…݇f÷œÍ—¾›cï šÝ$GÓ䤻'ÍôxæÑxæŽ6ÿ1ý‚?_ÆÐþËÕ|šÂàŽcîê«¥DæÐdfùòeöÜŸ»>Mλzk=‘)Ù+¯ž¦øZªØ Ò>MQÿ·Þhõg¹²›ÑÊW^Ú꫟öÈÚg &3ú2‡öeõ¿c˜mE¯¼ªhf£Z癞¸ìƒž8MÔF­k^ë`ir1$ýXŽb÷ÝãZX’|4;7CÑ“`÷¸&Ф†ÞÁÐIkcIö>ަùX‚£Ç5“wQ4LJc’£Ç5Òûp}iŽÏJYž8-Ì"Y–efÉvî»÷>KA5ËÊÒ,3Žf¥ -úЋ~ô¤/½éOúÔ«~õ¬ç`=‚!(‚#H‚%h‚'ˆ‚Y -ªà -® ò°‡>Ã0Ã1$Ã24Ã3DÃ4TÃ5dC.vÑ‹ Š¢8ФXЦxЍ˜Šª¸Š¬ÈÇ>ú1ÇpÇq$Çr4ÇsDÇtTÇudGNvÒ“ ’")’#Iž$J¦¤J®$Kò²—¾˰˱$˲4Ëì,Ñ2-Õr-Ù’›Ýô&h†¦hŽ&i–¦iž&j¦¦j®&kò³ŸþÏðÏñ$Ïò4ÏóDÕs=Ù“£YG= -¢!*¢#J¢%j¢'Š¢)ª¢+Ê¢<í©OÁ4LÅtLÉ´LÍôLÑ4MÕtMÙ”«]õ*¨†ª¨Ž*©–jfª§Šª©ªª«Êª|í«_Á\ÃU\Ç•\ËÕ\Ï]ÓU]ו]9ÛYÏ‚lÈŠìÈ’lÉšìÉ¢lʪìʲ¬Š¢¨‰’¨ˆ‚hGÙS=ϳ<Ç3<ýÉOÕDMÓ$ÍÐô&7×-Í2#K±ô%/W’Ys${*žb)ŽbÈ–` -f(h¦;›dúÞÕì4K“M_–d9–c)–b–YGÑsÌÆQÅ>öS4×0Íü šèèEŽb¶Škv’&HötL3s,GRÁѯcKf½§þ,Cz¿fbW®žcÈÁÎy$ó¨ïeW5ÍÐ=Ïó<ÍÓ<˳$ÏñO1<Áôg?ûÉOÖdÍÕ\MÕTÍÔLMÔ<ÍÓÌLÒÍÑÍÐ MÐôf7¹ÉM¶d˵TË´TË´D˳4˲$K²K± K°ô¥/{ÉK^²äJªdJf(y’&Y’$9’"’ éÉNr’ÙqÕÑñͱÇqÃýØG>²¢*¦"*šb)’¢(Šb(‚¢3.²áªa¢áš!Ž¡†!ö‡,¸‚*˜‚(h‚%H‚#(‚!‚ä ëW¯zÔŸÞô¦'ýèEú ôÝwÏ=ÛÕžö´£ýìf7{ÙÉ>ö°ƒì¾÷Î;ËWžr”ŸÜä&/9ÉG.r‘‡äžwž d¥ìE5¯q-S°´÷¿\Y%4Ç-øuëVFµÞhˆMñi·õÑ^96Ó¯9ý7ûhõexÕº]Îèþ²snv1µ+»1'¡)è9þäõUÏ«¯ -€oÕ§íúÀ,V¹5HKhŠ[õRíý€¿c¿òU0Çnúk7fšâ³ÞU«ç[õEª×¿íŸ«à»v9/¶S0¦¥º]>Z=ßð»jw}*hØõâyÝõ™Ðš"žgÖ²c5ªµn—#oäúß·ËIdóJ®Ð±¹ne˜‹9­ÉX2|ËpÍ‘gÍIäß)žS¯ŸÓ—ý˜¦Ý‡^û,ù`Ž¿°{ͽã¯~¥Ùµ暦Ý4»»*øuëO4{¦¹¬ÿÚ|fٵحYÿ–ᦿ[{çšv_¯˜ý­Vð»ð]»ô{}½ìYýo÷׬϶<à†ex%ÃßHv-vc°Ïò’]ëc/eŸzå•ô}¥“æ`Éð;«äü¯˜ :YÄ”Ésíª>×—gÖüÝ17~Åj—%ÇZ_¦rïùý¾€_§>y®Uîëû`Ûþñ=¿¡Ph³ÙT*_V©¬ë¹ž_öÊ®›[wýéo»)ù«Þ®?ýÅ©7^}ðêËæ:¶ºõŠ4à¿°øSïë-Û}åÿeþÖÍy~_åÒögÃ6 Çñ¿W?¾ç×c8Æú2®çxuÏrìª`Ö¿ÜX5ÀÿdæWžáÛþ1Øü}÷ËpSÙîë­çï˰ ¿þê­çØë“ÿ€˜ ¿ìXLg-ÛíÍ·žßê¿÷,{Ÿ«v_ÿuëû»[,¸@Ϫïýõ¯¿ÌŽS¯ì¾êÏúZ´[³ÜÚ¥¿ûÇq,õÉ3|«¾ý±d8®ÿm·üUßÿ5ë¿_ýY,÷}Y,ûæyžç/“a†ÿÿ_öU®û ðãÕ+¦ªa•û¹îú²Í÷ß¾5ß¿c*wýÜ8†ß¯J?– ×çgÃö¯?üž_é»ö¸5ëMíÇ,¶ÿ=Ç`Ÿ f¥ŒŽÝÿÃšã¹æp\fßò½æô•WŽË>óLzòò¿o7f}ØK±¤iz“{³w^z¥æÉ®Û4ÅRIÓ4¹×ÍÞÐL1l8d˜×›Ïr9)À‡EâûO¯¼ -ðoW®ÿŸ'²—¢6–]뢩ìšÙ{èͲä#èñÑ—ÚÈ}Iúp,½é…¥/5®y>’aÉA°“%i’×:'EÐô 8zÐ+ÅRó"Ø=Co‚Ýë$ØÐÍ ùӛËB-ôŽ›upZÁ§[þ·<§'f}ôDv»þ\Ì+¦)ïX<ÛßsVí‚ܘ½ëó$Æÿ3¦æø±«ú|VíbN¡×ö Ë¡úÇ1çaø¹ëó˳Fsða_GÑ,5°ƒœäÞwÎEÓCÍC’ )rnz ï1 -=35Ñã\ü·Ó¯:•4ù’¡íªÝ=× -y†aÖ÷”G[Çe\sØ,¾ïÿù,÷U9‘•“Ë4Çg¹vèVN.ó`×õO½bš7†cèÉ÷ÊÙµÛ}Õ3ûc˜=‰•óýïÿšÚc¬ïiÌ5çuáz@FsØ·<³.•£šs’æÞòg¹Mv¤šÃ®çxNmû«æšsËÿSÍ*ÇeàÈÆžsnz¦9jåö2 ÍÞy陦©õ°ÁÐä\$CP,G‚&È9çܳ¿¦p\Æ9©qλÆ5®9˜Q– ¿rlF9.Kpìšã¶mW€ì¦—e8ÀBïð] ýG~¢æø·«Ê3¬€]{ƒ‡=šãÇ7 â¸L‘Ðò\ÿ—›j°€IhŽzfE¯ôšCža»þ¢SY99.ã^è5…'QÏ·[ßv,Ž+šæ¨çÛýuÊq™Æ=°ñSó{6>œ ¶G=nå@Ñâ2Äš·OH*kBRñR¶§PìíæŒù¸{„zƒä1"]QX~¹#]§&iR+8‚ðÓe‘ܾ}Û’KµK—oߎݰ.Üuk#ë¡WÓÚP ÖN3H\Ö EVSkF$:-Xe‰sc;©%¢ž8¯'Âe Ï&Á8¼œsbõÙ~aóÆ=Äè„úD9TX‚ÍØBc¡`+XXvíà-Áæ27%ú\œ‡bÀY$z10Y´DM(~t\æ™tJƒM€Ë@RݶâÖšH!—ÆÍˆ²¼ab ŠË\C*AÏ„Í?Nbs͈xº4¶Ôé6Î{bl1E)±Þcû˜DŒmÀ£2¶þ¸,¶S£llW¤Û¸ìsÐbl¤Á“ % ïÌ®IÆ ^8-¸&pÓöGØ~Á$ýFOÏ/hÒ¨³S õ\æ¥+Îe^ºâ —¶F¨ç2Ò¨A¡ÑG áÇúTŸÚúÔ& Gá.A>á`$ B_ñÎ3—àz‚ËÈÜNè´  À0·k nç2Ï€!V4©D#Ѩ®¬=…!V|C¬¸ï\ö‡tsëû¼Ç¹èǹè‹Ç¹è ËžEmdµ³ˆËB³ã\t…x.:Â^ž‚F -Ð4j͈Bá)Ò—1ºEB¢ð´ŸÜÏ_œ6òâ´/NùŒ( -O5ˆŠÂ[Ç!¹Ð—pë8$Ù…V@BË.\I.4’€7Ç!é,"Ì4€`ÌÒ%Ü,j#f@.3 ‘´¼ºÃv hyZ^­ñ`m¤«pY‹=@ýV’ÊÑÝ•ƒJá¶ <—)dÛÀûÕE¼¼rÐP€);rÇ—§™ç²Œ; ¼S†¹< …¥¸¬ IG!¸F¨‡¦"ÅSX­1Pz\XäŽ$+¡¯F0ÄŠËDÿàóömÍH‚ËB'÷ó‚ÁAxÔãV†·˜¨oßD -Âe›éò„ÁííÛr™=‚ |]º"—ÁÂΦä¥+κ]eÀ|*åÖÈxÖM02„GÄNÓéX˜OEºN†îvªýB÷ç“úô©‡K rÍpÙŸ¯¦ìðâ´óy¡¹tI·Š -Ö›A:(PmƒéV{Fiiöx·$B_qšÔF:ÕžÑÎ?¸¬{Ì4¹ˆ2‡dãpY¬ÃX‘ޱ2¸¬Â%_PëãÔßúÐô\tÔãrÙœapk$ÒuZÛ`íj©5#êÈå( -ç„Z3âRY'Ò©›þ8N´ðùÀ‰t¹CQ裇}zt¤†^Žz\.‹c¬1Þ=‹FÊQ„˜‚ËŽM ®c#ÃQ€¿B†Ë:§((e[Ò¬£Ž¦´WÂ[sf–ûK°K¤° 6 -…ô¼×Q±Úð ¦5 -)%hw».¯ÙhQ¤°®Ý ¼á -c±ü{YˆÖõ¼ p‹–˜Ù¨]ƒAxBÍqtJ{%œ‹®HAà¯Xa@¯´ Ô5—ÅF#ä2ó•b:T ”öç!ÀBü„ï.š¦*MY~O`%P¹ŒDJ@,×%uMhGlq:TÆ­“-‰šo£8€—•êrªÍœõÔÏ -¢ü„ÀÎÑNpñÄ~œËhEº‰1—–/O´ë@#D¢Ù&¤dÁvÊú@"ìA@$“¥dQº`/žrYAç”]i VK6…‹!PPJ†°C”¥”0 -wmO>¦ô¶HÈ®›@Á#(} ´ën­ëz³^N¡ nÔ”‹ÃÖõ¶ >«äŒ¦¬Xrt'¡fP£nÂ&)(Ë n„¼;4;ƒº nIPÈe“Ej èq $%Ú2‘QõÈ~¼ñýÛò°•,» žÃÃ˹(õ![V5È~pÁ-ðÉ&ñp9 uÅ {—¦Ï* ¡sé\öI±¦Ú ©ŒG™=ኗ…×ë—m݇«¦Ë³@=ºÖ‚&t.+¿«1Ã^šð4™¸¤|„LÜ,° b‡«0RhÎ}!¤ .°‘Ab¡Ú~EƒØ(%˜=3&ƒ€Ãd€s§ðHœB_m_Š8ˆœË`­ch¶„abþðòÈZrC‡C°„IÄ+¥ö&¸-$â”RëÓ||sç2²Ôb>w¬!"œÕ墸T@<,qY"3q¯^Âã%r‡!Á̇s™ØP?õìyĶj±,»ÂeŸM¼á&OEµákÊ´fÊÒe·(Ï—õšE­ -õb8M^JЄ¹(;ý' -ç²Î^Žy¤[”hV0áǹÌ¡<º"¬kCID^Ôdø¡Õù›x<¹_ôê’€—®xÜŠ‘®ò™„2¶·C¯ã´6苳ª˜\f§Þ”û¯ëˆú$¦Ýa£H7ÑNµ‘.V ƒÆžQÒ5ú8¬†#»ÕûÝpqt“¶=5”80mYžÏ>`¥º£’ú|5¥>R)ñ¤3\ ÝÈe¨Ç}YÄHG (èÈ!ãù„÷0B;ì(ÒMüxJª¿ŽG§EÑŽê$p±j;{hºÆÞ‚Êe$‡8.&Ú$ÈÇCÚØ@-ÆÆecã2‘äÓØ<þ&¶¬í6K‚ ÛÜÑ:‚ÏŠªDÁRGa“^zf()ü-2èçí‰h>Ò‹'€ ¹ŒLt&`ç&ÚMÐ\ð((ƒBWª¯#Lö20RÎq“{qPƒ †Cà&•sYÇ@ñÔÀÀÌj~Ád5µ_Q’CVÎxVΠëC—ЂÇ@®A¿AVÞ…JªÏöB³‘Xõ#Ô«5RNBBR×á]3$Òm&ô¸ÌâŠtÛÈ´4¶ÔSuÛ¥n!¾ÆÖ%ºíd=cKuäÆö²}]Û˜»Ä€ž‚;pLb6ÍèVºâ·‹ -M2…“c"Ð1,\5a2ŸÙZ8—mޝÕ?Ä?[å¢`2ÝCë¯c¤+Qb¤“XPðnIºŽ´Ã-5 -µž©¤ú,•ã\ðoB¢nZ५/  PDûó¸Œþˆ‘NA‚|FoÅ»`Å&¾'ƶšDŒ­\¡ÛÇSu[Ù([Å$bla]+¶ÖètÞÑ}¦ûxã¸ðNìÓ7ÆtØääïQDóÒŠªs™|‘+^ãøx>¥ -OP€t#JŒt/È™E5^#ÁX‚% -(fdò9¼<‚ÚHB—*F:•tx9"Ó}üK‰$‰#—1´ÿΪ¯Še¥’~ÎOshÙ=Àõ^9ø ÷§^·<³ µ}äú_æ;v®XœVôñªsË3;jEŸVôU¿æ´¢ÏyÛ.æ¾å™mEŸÿr5­èS˜[?¦á;Že¾÷óWõçĘÃ}z³*'¡=è”ÿv˜vÓµûÚ}e÷þ„4íÖ Æt>,JýÛvY®UöW=Y€YvÉ1͆W³ö혻²*W4ÛÕZª˜­©à˜¦]íŽÍÜXsaí«Ü˜Öæ[{ÿ—µØ< ž5¬É°ËbÉð ¿_“gMvcZ‹Í¾m‡4OcUŽìj¶«ý^i²«±dX€kkòo  Ùšö[·ökWûöoê³³¾§òY.G+%ÂÞ¸u úvȃbØ•S¯X ôo·þòo»«v3õO=f|Û_pÕnæ× Yž3!K†Gñ–ÿ[yå9õ pëövSs­:;hNŸå¾*ÞWàØŽÅ*¹rbUŽÿ1 ]õ,À]Ÿ¯¹fÝXg€[·ðå¿æº¥šå9# 0«¬Êé½rÊŸgEµôÙx´~LÃqêO ¾åS«œÚÛ³ k³¬™•ó´]žš¼:Vñ™®c—ÊS^ßò‡kO ž[4¯hï­U¬zfÕ?vûULË*• ßÞ[«Z<Úë/`öÞZ5à¶ù ß©ùàËp¼ú¯çz±¼W«V2üY.]{®«vSœÏ«šŽ_ï–W©˜íÝò*þ~ §\Ö—UžMËó-Ï*U=›®ÿë¶lϦïo{6M“5Ⱥë/@ži8Vyôð-»³êÛ±—ž=z€Ã-è˜íÑÐÄ)Wþ*9¶²eÙµë·~ç— ) -8›O¢@{ÿíΩ–úš÷ñB‰˰÷R¹¼T­{ö^*R¾–Y°ý_/5ÌwüßùõÒ÷êÇ5Mó>z5M €kUÒÞ/ë¯&êßö-ÃuMÓ4ýzñmÏ-¯¦iÿ,÷{5m’q<«ÆÿcT5«ßŽy«Õüþ§<׋E×´ûºá¿U°ªÍ+¹’š-Ú-É8žU²§hØeÏß®¿€_³d·þ,7Ž]/5|ßé…cWt‚W0«rZ·K÷ØU}Xß>±dXÀœù1Ü ]ùS95ÿÊ® c´gÕz¿gͧ}Úã­H7¢`"îyœ È…$ j`àrRF¢µã²Ñ@Œtb×Z8iŸ ÉePl†Ð‘ˆbÁŠn1<¸?ó@޿ݽ?ž˜ô¶sÓýq.Sy£ûãi QÊݰc+])Lÿ1¾\,ƒò—’âÄžÀÍäSàëŠ`$Ÿ2¹J®oäúxÃãúxl _ÐM}|ö3âM©RŠR_(õqFEáMÊ ]Òǹ¬pоâA}Dúø[QA1aÛÒì”…‰ñ©Lp»‰éŒZ3r®l!³÷S( éã/ïðò‚@!Òu 1Ò®OæKœoâ|œ!~ÎÇë Áí%ÆÛa™‚Àú Ö¾( (œÁr>~šp>ÛB°{ÚÇlߌP¿`^îUÚs™‰‘¶¦¤ýxÌ¡(ÜÔ7'ëa¿Jäã’ê)$5¸$¢ #æíR¸ÁÀ¯ˆ7a.ÕÊe·#´ -1 Šé ÇŠw1Òu0ÄŠSÄH·ø‰“ûùç%8¿_¦ô®GX,F/3~egŽ9=zÚùæRFÆö‚gc“”ªaÓ:ÝÆeÄ×øJÕ°©®H·‰_c 5Šíp{D%]qùú¼m¼ª‡°iª_8Êóu G«,ñää/…_8HUXt¹Ct’;â@Q0˜¤C˜ûñðÃer.¸,È PˆÅÑiYMG5‚VUƒ)çø)ç -:.“’̨÷6sÙ,[^ôb¿'ÔòÉ«&ƒªÃ‡EÛ¼9óaÕ§ã„Ò;¥©â?Æšp™Êò²p—:h5ñ|t`­0þèÒóè$*˜Á<·È\ÆØ\½7xêùÌÛj>ƒ' d›¨^Ä ;n'ˆY¨I³ŠËø@›RpY‡Ë¸ŒË¼’!‘1-íÊmr°)%XÊŸžQgñ - y%´ŒÍ7z`ZËÔÃ)4QMÍô¶öûm¹ŒË¸ŒÄ b5—Ù‘r²¡ÕÄóiP(èCq[ºÝ˜Êe -Îqòî -*¼c  |©SýLçÌÇñ-Çä¢pxž5ÁÕoÜv‚‡óŸµ©q7F;á 8°ªe¡ãÁem§ÝF¡)Š™ÂeÛsFô oÞF/.ã2Çz²^\ö9€J/.»?¢+x]¡þQ9,­ÑQ”68M 0÷ã_²qÙŸì"vسQ@QVGX×Û‰5„@gÁÂ#)o‡±ðî`߀l¥÷GtÎedŒ`²£Pb¹¬¦eÆi;‰Êj:ªsÂiÆ©!¡«çšR ˆ‰ê -Uï(›|V.ðÜL¸ÌÙÚtæë Uw \“mÕ´}±xt„CJêú t¸ý«£ú†OÜ\¦ð\·4Eá ”Îe\nec{:ÁA‹±!¸Ì{TF­øJKTÿ M2§a‘êÀÕŽO~†A -šJYøç@‹“ÇM3.Û`5´c\Æj¨zbtÎe\f¸Ì¢Æ\‘ŽËíB‚ð¢:ôPF„{P -ƒôõL6"Löã5(”oAu¨óÁÁòû›|D,ê…DÊÉe˜Ö©wC@„ú`N XQøÊkJu¸Âò|O:AÍiûœ®ö™̎ösÚdPx.›¸4Ì-uF÷@,¥ÔÑ‚§¯ °Ãí9ÜFb¥j…".ã2Ëò˜tƒûÄxžê¸ŒË¶×ÉÃ@tº m«¨†Ë£G¸l&E:¸t F‹¶¿ /‰”³`$ŠÛˆŒ!x˜¦ze¨ÊÕœPüŠ~T‹AZo"å¼Hîo‚ù ë§ÇÄÖÇÊÕÔ4()çd)'—™ŽƒdI<šú`ÂÁÎij²¨³qš¯spÀ‚[«ò'LàW¼ÍX´ý²­x ,ÌÌý¸ÈefÜF:.Ûâ²!7··c˜à²Ï“<ÑõÁä‰kE¹ë„Ë\£s™'õ+„zÏešµØêèlÀÝj"Œ[Îf-8I]·6#jÝ@÷‰­@.¢ÉÙœs‚tuÝ+·C,¢±;‰„ …ÿê˜p™ã˜LŒË>£ c«ªn»¸"݆A| CÛ@±Ð°ž±¡žªÛ&žªÛLbï¾Ö°ëP¾;Uþ|=P Ï6`ÏG`²´ú¶¥:Ë2â>ÜcrÏH7¢`"1ÒÑ\Öé&"IG01 ×qHÞ”Ë"&D.§™_gM#߉ýøº8…"±ëŸ §SÌÀ£ä¹è¯“z°ŠöXemøUQÏï„M:Ì¡¬¦tžÔtÀVÇÄ`à2EEá”ù %Ç…'Ì.;©PîšRSÐQ +µÃxH:u«OËH5ežÀFѤ>°p:¹Að1O -ÖÞ(DºDEáÞAÁU( 6Æ1Ôîñv(Ù¨T_ €Ô*Â`³=vg¥BtbX›³@aœØ” Y¥5Êã©§VÁc²8©<ç2E“êŒOÁÚk™k}0•L‰Øç´Œ¥Šš8x€N”(ª¬Á„³AeÕæ¼4(ºŠÂåŒé"ohÅ9äã]©¡úE½aÁ•Ì\‹ð¬ÂuWŒ‡#[[ìsºjó?lé©2Â…¦)]PœØ7^*D|õ·¾î/c¬Äé6­ #7¶H +6S£ll t¡ØRÖ36§ê ‚n³¼'ÆÆ†q·MݦA|˼Gep>Qhò99Ñ‘pL¸på9g>ï êš´!QóÝ–F÷^¯óC(lH¢‡­íÔ‚Û àzkTX‚Ívk?8`ÈÆZð)ˆ–8ff©|P.Seî嘗Id:³©0ŠGËÀ¹î¢Ø4£<©a†Pëöø#0ÙųècpŒ&áó°çæ¡EKTAN‹9Yõ¶#Žíöiñ9C늯“ç#Y:r)Z² µ½®)Ÿ§˜Îè‚çž9b¤{¿s {nr&¶¡bõB@¤63¬pª¸Ð|&À¹ZKûáphü( œwXl,Ñdej(Ê 7¸ qûº¾=å)V‹ä«s]k]×DÅ#ÅoÐsâ«‘ÉÄ7„”W„»`PGò<:ytçÄÛZb;±ºn«]¨û ”ý´Üß„Ë`OÄ@2>dâ:“…ØÉœ°´ ù:HÕOË5±08ÑÆ2¨^ÙýH·fü›Ï*CC"±V¬Ú|è¥+®S ÉK^Êe^±A^@á%«úÔŽF£ÑˆQŸŽç2Ŭ``”"¸ýDp{úúj`ÄP¤jÁÚSÄŠÓ$šD“Dih´è\¶Âe¾øžK/OŠ“ûAÅgôÍŠÂÓìÅá\F.$· ’€úàIÀŽCr¡»¼ð$-/K3cËËréËš:žÃ^º¥eø–m๬r hÙ¾R9P¨ ‰í˜Ü¿t -ËGn -ÊäQ¾›<ÊsÙ;B=¥}‡ºR°zÕÏND=pTȹèjŠIÓë=;ºÓ±@qÏS0VE¬fp o𢋦ôPJ‚B§ í ¥jB®0r.,÷\– ã’$¡h‰õDx‘SÚŠå¥*. Z.0PxHCa\p–w*V¤RêˆPJIT°=MY Dþe Fœ¶“¨c‡š! O'Q?–_P,šv— -‚PDÄDá7ë¶ð¦ÐÀsrÙfÃv %”h{ΙOÃ.މë¤ ¸Fgdlÿ°1kGí”"¥iJbØ©^ŸÚS +hÁ¡sØ ôUƒÐa£Ñ€§ õ0B‘è *¬=E¬+ÄŠ&µièðâ|ÎEwÙŸ»ìÏ]öŸE\ãÅi'÷#Nîçš I@p»ÐEÇqádÇ!¹\èÖŒ|1K·¼, Ì4Ä,ÝòJ„ƒåe1$Ë+f¹!!fÅ+§ê),VàíÈw¡~;qÅë#üõ‡°I"wû&L¸P ÖÎÕ‚µÓ Rd5­Z°öÕ´5H«é°."kïjI--jI-yµ¤ª µ”ˆ±¯ÄYp.:Ú7£Õ“_1Óë%H”Òü †Ád+Œ üM E&>¢0†6K° Lþå1h¸é!¨XMR”^X„R‚žß*ØTS¾¤Pu²ôCaühV,ï,ÁËÂò]ÃCÅêAÀtxBH)k®ÛõÁ`b@/õ¨ŒÍ⩺Ë&-É´¬¦¥±™À³qb…_6áÄ(ïñüŠcª®· ”çcm:Õ+'Ø~Ïù `ZýãHÇe$ƧŸ—®¸"‘F¤Q—@vªí^ºò£ú4âdBL8ŽUÂaJG£Î?‘!¸ž¡¯:B_q‚„cE“hM¢I­ˆ@*X{šn -VbÅE]hqÙ,j#³¨ ¥\ s.zj³ç¢§.û󅢓?­üiåO‘?mäÓ‰>£ôä~~rÿÉýüÅi#\¶u’ØfÀ˜¥K,/‹‡™0fé‹=£—.±.=F›жt‰BlÜ«Jÿ"÷oïÁô§?b$nG"é+à䲎[ju«TõŽºÏ±  bò|¤/‚OŒ+vÀ#Šê?ß0¥ç¹“Ëœqjò|ÉDÕWŠÀ„¡rÅ7D'qBð1!„Ën“¡A ÃäQžõô¶“ -o¬8ù9T× êfæA(Q‘ATNÞ12(|é‘phÂTK FßæÕSVZkªÓXæ#ðLØ$ -µ½âzôîyØ“k’Ȩâ>a¡I{Y <¤ÒW¼²TÏe„²“9+/‚{D6^5¡%üYJ FG€ìÏYÇí†6+Õ×”ó¹É(ïê-6êšÅè+Ê—há$ãÒœ`r>gd ™‡¸Õð‰‰á¹L21­P6õy(¡>Ôp&„’üzÃ&‡êš\°ç;̧ªK^¯Ðœˆˆ' á²‡f[ýŠqu½SXnWœØ—(àdÎ ?ç2Ã7+ü傺&¯‰ÉóÙ™:Õ)¨ÎÅÕ†ÀŒS’…!ÒA"\æY8B‘¡Ã0ú#”¸ð‡É£|[¤ú¨ð’n²QM¬¶P_ñ‚Ή¸ŽÙÆvC…—t¤ÄýqºBp{ˆÑÑ—ÅÉ‚ÐWü¼,¸¬Q¾5\£sÓœ 2{†Î„›l()•Z'a"°ú ¸à$3¡èæˆýÉeÝ¡€ò$ÎǪxŒ8và+±Ê|—‹À,+ FoQ ÊÇhÉÉPFðé53Í¥ŒŽZ ç²ÉF½MFçP&”ÞXµ»T{FeÎè -ÂeNò$^.ª]<}æ€RW¢z. ]„·”ZøûhP“êþà%{ÀBD >E”¾Ü¤,|@ƒò\ŠÕ†*w¸ÀRá¹LˆXaÐû›@ &{ªH@즴¤¡HÝ6"Æ;õL„ð×Ežxx»‚—²pÆJé@×ÂÅé4Õu.›'&Ï×ÚtªobåéÜ{ƒä5'hS¤íÇa¡Åžt& ‚ís–ZÊWn«ÃŒ5Õ+,ó…è|ž‰ ÿÀïgJØ>’•åC;½pï¶-|Tò0©Ï¹Œ'záÑÐßh¶Ç…#8Û{ò¼æDº3”2úÂ0úÁ;B+® #Ÿ‚µSáë|ަ%ÂÇŠmht‘s.ºGa¢`Úà}ì!F?G½í ÷÷Iƒ®ð+¥m—T\]7^Òµ|qL&Ëú0€—²bhôI¥…?Þ¬"ÐðôÑ=“Ô1 â·8 nOc$Š™yÐG;£üê xˆJ‡yH‚×1:h1 À³±LK¶}]o^ÊV JŠKPJýä~.b¼v! £“öÍe°ѧðLœ°‹£·Jñ†§´ªë>g> &õy€M.|z eźø!Ô¹8—q@åç#µ'Çäò…*>6À~YÝpÒ,>§êiüøà°u<—}‹ ŠÕ™#Fº¨Ô±RÝ‚aÀ_œ‹~z¶¸tÅEŒtŠ‚C¬\–è/Á¨Ø‚ Ê›™sÑÙÆâr» -œ ã¢IÀt½ œ ØQ±¤] z\ÿþ‡šsÅsÑ-§—ÁƒËàQ@Y:‡øq¯6\£—¢ÎÚO°‚ 8>Äx;¤;Ti% &kÉ ëèc1HJÉe”ZMHbäãtGx"šrH1Òaês>J}¼¤:Ã5RÐpqÃTñ=a‡&—ÒCž+bÑö9Fg>.³_é…?0$ mÍYð9è¶34b¤c,"cg’ÙÔWD"«Ÿï™3± ¨Þ_aûùeái>Ÿ˜ñ=…)Ø¡S¸lÄxƒ4UK£f.Qpb¬8øJWœËW×o‚Ž84ªHA åE9ùÏ1*¼#dÀßBQ% -‰0BŠÁÅ„p¢…'¾sÑ j©½Ob¤cü ‚âx($]g\½…@sEǨð þ6”'ð\C0€òŸÉ±â“åä¥BÒM6®Ï×’ã¹l]`eá‚ðhÓöÄ@é.ð$! F'D(ˆƒÄEŒÀD®kôñÇŒÁžÀÜ®DQxâ,X;Åð¸ð`ù:f¤ô•\µ¾ƒ¤pÏEG#ò “Ë WCR@‚ˆáwÆMèM(|†76ðllÄ×2ŒÁßÄVè>3}YÄ ‚ª¿õ‰ôm¤ë:gíH¨Í5âIèS“Œ€£¿˜ÎªÚÌ ¤ºÎ…°çãP«ÿ00žÏRNEôøŠòzÓœ˜k9Ò:1"–çëTÊV¿¬PfŒþ:â„Ë -ˆKGÕ„œ'©k/­½tÅQ†bÃØ(žªÛec#0-­Å ˆ‘îû±à²Å"Ó}|a²}§@ElŠEùº.P(£…B‘é2)L}T -O$ÜBv9$‰—}l5‘é¸ìs™Ë–ÏlT=æ] <ÊEÖ\¶‘¸‰Dg26¥XÁÇVºÖè|! -œÌ>)˜Ð)%;ÜbmXà1¤%Z¯ß¼óqM(~̆‡ŠÕîb`²è× yÅ”mà»ÌU¸Fç,SÛóq})<âÄŠŸRdgñ°q) ½HÍâ 0N -•‰°B˜¥ž2p¨ëô«ÞõéD.ë  |é}±Xýç(Èg‡ò*¼ÜT—Xž™RÝ#µÎ-ü2} NP”Âp±Sdä²ðËz9áä€ù~ÓU B™ÏãɈ.«{'sƯwq˜_´Ýð'ÌyÉœ„¹°ŠÀ„Ò'Ô'è0ŒîmHðGilҲʧ‡Å‘… žÌƒ~rY¨R¶züØVÜ‘h-¼#žB“â"*˜(˜N"šÏâbR=æÄ“6t[8—ueo-Ü; bõ¤t4'ÈЀ4(¿E ]×t4(oÿ‹8‘A˜Ì*[Ž ‡³ Ý± !ÂeN[ñ'û Ý ÇÂ#Ûâ¹l–(¨á/š…¤xG…O©ª -~­³—”~0qYøÅS]“‡7g>.‹Ýmæ< °¶¿*. ÷N…w —¥ÞvÑ{Iyé¶»õšÄnÎ$ô“Õ)Ýâ©®É+Fg¾/£òçësPu„ MJ ÈË’:Z W=Ž÷…«¯Â[ìm$šÓ@¢z_\½s™É¦>§USœlp¤ujZãç˘¯“? ¬¸É;yñþ­ð2¨@šˆz\E›áL<§Éó® Ëóe..¨ÛŽÒU¯Oý¼ >…ù,k4Œ—rò¤÷’ʦ¹R}†öû‰kª_:ÕY&‚ G¼žÓb€¥:¶8ÂÖ `áC‚„L) Ÿx\]½—tDIáM¯ÖŒl×1R˜(ØXµ‘Qà.<¬„7KEj{hQO Î NB¦„gY­æ[̧ªo>žh‚VúŠ(+^@°&ÌŠ›R jå;ëÀfr9µS#ZÝrÊ|\¶99ÑDîüywñÄU"8“Œ(rLÒ¿à2SàzÛâEF¡ßŸ'à‚“4Œ®®¨kr€1y¾¦lõˆm ô›B°xŽiâO‘mt#ŠÀ…iCà#.¦í õ·¾Õ\®ÙäOá…e6Ñv»{¾>¦­N(Ág$”®8)µøœ\¶h™±¨ÔóºTÔ¢ !cF†Dd¤“ Jfóé8ÇGF.NJJ0(Ic‘0(ˆÂ‡Q QÉ1d« × -˜}ý‹¿ùMªÊš·¡\Ú{ÞÖšLAmt‰(Œ¦€ø¹ò=¯ksV†%ã 3Ô×¾% ­b{QгˆŸ(™M «–ÕE(öÐþCAøÏê†%;•€Ë8¶åËygŒ÷²6k=éQĈìÙ{•R†ËŠ*æ|=ÒâÊp™$/îÎ×΋°{eÿ‚¬.³¤¢LÙc¾B^¼È€í*õô”rÜÊ?¥}¾š©©ŸÇ¡ùÿ”}å [(hèëKQÕ|쇺â’ä+à ? 3÷òž//DË’ ©¤ÊŸyMHVo¨ å•yõ­:üÜ뇑ƒÖÇ­Å»¾×ö-ëy\ïß¿úùÒ®®Ÿ9–„îu*‰¢œ¼Ìÿšž[› UÖ,. ¶62‡:'Ês…†„^é=\RÍ_.­+NËãxaGi-1çBþ׆º 6¹»X†gzô6—Wª†_CŒRaµ\#^Lklþ èÕò­A°«×ã‹«e¯S½«<¦=J6&Ó2ûxÊ»3ñ Ve5Bï¬^”Þåë@jÝÚ*[µâ¬õþVZ#IÊà¨dem—ÄÀå ©;Šñý(‡SE°6*øº -çòŒ–$šLÑŒž²€ø]ÞŠ<èTtؽ ÞŒÀÍæ`UÐ$TÕGGCæá%«7ôÄ€1 Ž+eÝNsJÒߪ†À¯‰f¾ÎX™Ì‹ƒ.›;;8K¶¦…^“ù9†Ïò Ïþ}U‰pœIw%ô'ƒÂ§ïüi#[sŸåŠø“5§rd¤³8^Àó­r¨·_äåîæCô>˪ ³Ï6ªÊbûó…X5ô0˨ʚ¨ý«,õPTåØÏ°…«üÑtFÏ]?·ª…#÷w’Šã®¤É?BÆ·Gr2'VŠF5.O'4¬¬Ë"°úÌøNò*c`ñ¹ÑxbR‰6DîSC(”$¸h Ã­ -ÉtWþ™±±á^ÓF`Ãóƒ.£Üi­„‡=õP6§ ÑT7©JÐê¿G…–ð¨_¦—§Ñ2"§ˆ/­Ö\Þ?‹Xj5‚ÆC‡èÝ^i‹Ð"N-Ä®Úbsᢄ/ggï„  ìV”^ÖÕRc]Í„t`ÅnS¶Fsë%ýq<(ÐwŸe cï9è…SP±™8[í°J ½:^Zƒ8xEÇ=y¨ÿ…øµp¦•ú(aÌñ_3©vÇÐo>A]üYQÖJyÇ(:´2V1ßV–À#xÂŽ$»rA˹aÐe$FófjE1Û“› ±øc%«6m~ÿPÓâ´ùÔmÞÜ;¤ø¿çöŽÿ8u·ãœàå‰xsÚÀŒ)#Oùù´tZI›u@Io `û4¶P9ÖnäN©všÕ¨r%ßX²[3σY ÕM!»·>Nå—fñÙ¤C²P²!L°”ý Ë¥ûâ+Î%8õb+^Ëä•),© %7›ÅÀâIVÕvåË]%\¥C¡qƒ1î˰öxE»[ïb¤Û§æø¾0‰ÉÓ0ØÐ•&F{Iãî!mÍSà¾{@ƒÿÂãK×‚ÝæP8[‰Éû L“@¹T‡”œ#»$™Vc›I$HÀ°ÚÁØEwªïim¶…[(Ŭº^S‰Žv5RW“¾nž—i]gëóúÎ$P­މiµÅuãօл‡êC 7½Q¶³[´ó|³n³? „%ë‹ú5î˜UŒŠTý2p G²Š•T·“kë•ÆÅ<2Ûf¥™Zü¬{¬c„[Ü> M2»½UùyùÊu)ò2´‰JûQníç -‰¬]ù7yˆÖM’KŽ©*Y@&ÿ)5&tÞ\}ØAfó_;?ƒ×J’rŒ3´“îëºS9v&Ä+™Îô½3Ù •s*ZX»„猊ã‰Î`g®qU' ‚<·sà›LC“½%/ÌjècÓ ~ÔÖdd&„ß7áÈOæñSúŒ%ñòëL›Ñª¡œ V&mʺM#Êè܇r™|Ä:fe"‰PÎðËÁ&\,¼Õ)Bf3Å\b1‚-ºØA -ÎÊP$F”oO¨¡I(«J߯aü誯¶Ý‰RkpßéD»b¨tdÌ•7Om6þÏ´Ð}$;êæ º.ò¯™ÑD -Ë\P eí<›# gÀ¤ÒëL”0²Öp®2À€•^@YVñhMyÏþ ºÚÑ·WB:~Œ€t€Rß8Ù²´Â=Õ)*iEˆœ#ž@Â’A—É9¤®{ÖI©Ãu”.‡ÈÒJ³ËêU=˜Ùg¤¨–Ij?j÷'ÂOH-æ7žò‚¾õ=G˜}BdE¦tZ欵Œ‘žAí‘ÐPWÔÖ÷Ÿ< "ÜÜ ²¶‘@…\¨ÿÊÿol¶f}W==òOÎ>Àð':ˆ¹=ô-ªn,~ܪ 14TÓRáÐ±Ž„ %$M€.¬ë5=Û ×+Õ¾ kÞ9šGúú  Ž„9Òu«NËSœ»®ƒ3«›˜7XSЪ\?óÀ̲­¶)U±l°X­^õ‡~Š¢ Ø•kLµff© ­öjê]à¦iç/ãÕ{wGdd2_}Ñ*¬ufìœÌý¥ -|ñkࣻ-°:ÉÕŽè¿ûèù„]âVPÇ/îÀaAžR[,—GeÞPÈz'qô½…Z>N¬ôÆôVüúþ—g‘îç~”?$ê†yˆ‰ˆ -‘Q}¼å6Ä…[Ê‚ÆRúÌoRÅ£Œ÷-6ƒ™Õ—¸É „%çKÿ€à«gøñT77)²¼­›!âf®t$Öß~, -A;¹•Ñû¥ÆÚäÞ¼qÜmYx/)Ü=æ`³ºÛc¹ ±Li¦Õ¶és~ØÌ±ï|l£‡wWŒú2"}…ÆÁC®ä'ò2¬E¾ã‘¦Eæö‘³D,ŽÚˆ‰ÂgÅAïê•„=HÌòX*;ÚÃêŽ,Ïî‡mûÚŽæŸDšó*[ë#úªí’®4,ÅÛLmaÊøClÅ*³M®)yÉáœôD—8?­y‚Ù×£áåñx³üùÃf³%ùôê±âb<“#€`Ž`Ã\¼ÌgÝœ°-Αkå¸oG\2¬œ}°¸ãHζ¬3!÷ã|²Ê:ÇNŠìó58$óB`N²Ê­(km.öh¯öǰÏu%Û¥‹Å’Ź”ÞnÈ4ªo@Î#ŸÏ‚×å‰HúK/¾þ¶Pk˜ Á½$ò¹Ö2ê<Ü¥÷y¢ÌcÇWf‘èJxë.¡=ÝwsxbÒŸ®’~o|»Ï$Ŷš:¨õЏšŒÚ¶ì¬8ÿ•ÍÀñð'¼ÿ. yb´¿öWÜêRY¢6sÇÒÿ -ظÚ&”™öØhŽh€þ1µwE{£Î—U˾5ÿƒKTø™Œu¥(z0¡ Òdûºê·b'›¹ ódxîKëß&”¯…†Q!~ûÖÔYd»RÔU€Ùz\ ±š¥«ëÝ5× ¾4”VîŒ$f­^~†¯§XùÏDé¢q2áVöÃÆ< sM ž&Õì_Æg>ý]<Ó7ªÎ²oWzxø -(òD´ûs¼“.ÄïNÕœs0¬ç»ø|JGä;Íã:›Rîª==Wþ#€13M‚䂱ºBuû)²öB…_ÏEÍ v6ênÂîž?YιÌÀå‹×$j³Sè¦I"rð‘~<Êk½ðñj°ìèk®ò•Òø - !®)×õÝ ‚Mo›¬_æOä-<R«¿²[! ¶‚âóÁŸ·y­½ß6:ŒÐÞ©êµ›cp¥3Q°¼ÄÿêO~Ô»n^šuz³àsv¦MÃHl²ŠÓ5ë…J¤°ºH,=%¼^¥AÚdžƒZÑùé¦4h£ìm¢Ê>Õ¦úC澦m²ëá)Pœ`“ë¨^ƒþ“;„œn¾ø´ƒ–—g›:Óò×¹.hŒ·¹p²gó·´ÌëëWáSmn‡œvÚmý7ÖcHÀHÈšUÄqê§(«§‰ §˜Ã@ï4IFCRrY0å_­ÀÜÈYÃVSÂEûOæèÁÞ-Æcy•Mgm… ñ»©Ù©Doˆ›Ñ“2Wvác°®‘zuªˆÕ뇄pMu°úaOüÔdØ‹›¡5*/Nܹãõ`Ç’ERLãÈD‘û œdÕÂ2äyµÛv?#~ÕN=-Zœ4eYjžìuù˜€Ö€kmÝ«ÛùéÆ ÍwÑ@lÉâç¹ Hh¢Ô%z’3ï'lˆd±s/—És½¡&-l>þ är7$XÌŒôÔxÚçÐÛì]SmNäî2Ôî-ãbTÃwVMaªiœ‡}î}þC– ùÀJº¨Ú0ám*9ØË”€µ¹E;¨1ÞÆ—VRS%÷ÚT{ž9?ó2áÚ¤u|Í=Öç'rõõ{ƒWO z”¶lÓÖŽ]–!ùyZ‹»Ø+ó« £S*úÞܧª«Gr 4p=ßÒò¨¿%EBxñ™„›˜W‡ë“ÈJdñxôr~oÇh‚áã5øªº÷бH`2[uû°ÇYèœnþ «®×Ê•î$½äy4ñãùä<­˜p ½?†Jé_¬¤¢‘t7•cšGQA 5ÓG¢Mt:V;”퀋‰ÛÿÐa˜[\›ÇÃ’¡Ðq”ÿ¥Õ,DÙu'RQ‹ 4v@ \“628\tdõÞýa/´ÀnVß+NÇCÕ»>uZòy³ð î+"`íZ+$Õ|óðr„{ ‡zÀ½¬³!žVTűŸ@ÙFŽ‘ ˆ§}4»Bãs5¬M`)žøÀdÒ‹S‰0j¸à¶Q¯ÊWŸ¦šPч€<"Ë«—T‡˜"D¿‚Š5xãæP§ÔOèðb\üc‡Õ¨OÞŸƒCaóÌ3ùÅö’]zx_Í$îÃà"‡x_Œ¡ ŸÕ=¼NEÓÿ}.M›ÓÉC²IáÝÿÍBN» ¯ –p0LSG 9¢zSã­«Å_ö×mht¼úìUÙóÒPùeˆ·¦ZªÏ);r²ØÒø-NŒûæ É)]h?Vñ¥ÒÍ›[ð¥Ëdfc™]ý$u8lV4ö¡^<åy¦ê›üXÌx›¿ ÃA´ÂI³Ôy/ˋ懄[@1ð-’ȈûØî³Î°@÷ v»G!U´dZòö-´´˜±.u‡¹ Ĥï(Å%X¦b·!¥)öþ–뇰s‰àÚO À<žœTÜ3<ÝÆ¶{ÉùB-àÚ´”e*"®±~É6¦lí¥ªO•צô"ƒŠvï”;[>øxjç‹ÒxcOÚN´R¶û#°ñÄ’Ww¨CH|ÇÎã v_Ö7÷]ý¦Z}îΟ6ô0'Æ ð*fnJ';uVsrv4Ms lU{@Š=H–˺€ ß bMØtC"ivú\Š@÷”*iA"Å*³)»ûXZÀ‰ö‚âÂÆ'—ÉdÕq. ©šØß º^PÜÔVÔºüBzDØ»bVö{¬>±|F”ãUò!ˆ -x׸~än+£‚â0ÍÃüµY×+h r*] ¨ŠºªâÑ?d£—Èx©£,‹m”ùð -Íd}ä ÄLÇmF“±oýñ°îÝLŽ®ãE/äé±ß‡œšúRèÄq‡d<Þé¡Ff†¥*tã7äD]·9LÃý‡Q¯mÿX¨+ç+nnÂo0ÅÉí \|欔)þhEŠ€BÉeÅ·¹Ì«¬Á‚´¡¼ûŽôú ­JÉë{µ÷¨’}nQ³ípôìbõ”Éz%‚ûD]'~‰aiý&Â+²@Š™Ä3 äeŠÊ¾BøfጠÛ[á™hrлÁ6µ»‰c†œAÅ…öÄjŽ”ú3‹òĆâ…eúótkmËŸùü’±Þ¶ß’beà vþ¾†¦8V`§\« ®‹Á?6D‹Á±:y–2‘&ÎðAáz;\(…În@•TŸŸ÷”ð{ëêt+,/lÈ·­Sz]¼-Ÿ,ï°&k·c르ç+Ñ~¦€BàýP(-ò66 Š èjµ@ÆNÞ» ºN*'æoü“?¬ÿY; ª&ñ¨å-ÿ¤¿Oý…à Ý!µ3¨mF˜—ÕCfýmñ.ìœ z†¥¡Ìˆ¯1ÎÖ®†Ó³³Ÿ1<ù’º$*¡Àzca^6˜rbjz9ëW×çýQ&|ÊÉÏîJ­høšQ|ãSÓcÐ5nnQ‚Ig—¶;ÓâÐYj¢„¶#‡eáþÓ¹ ¾eµ'Ĥ!Áò«Æü«gõžßœ;Ìf·R~æ&þÁ¹Òé¹;ñ/•Ö¿©™… -¦¾KÊôoaœùF®,ðïw6iE™ù3kÙ]&²/ÕM…07¡cÏ×¹©À˜›ÜcHK%¨tʷÿÌÑU†’ÀÐØ3‹Mü ¥þmÎØNâàÕ"§7æ&ê;G"Ëngã_Ú'^b ˆ8ظŠ9bÿï÷½ÿÞ¶ÄÄç"_ôï[/&üKB-ô…>¢ñ©BE‹þeR§ÿ¾ Ï¢Õï{˜ÈíÀ¿7´Fõ¸îvÿ¤þEP†_‚h2'ÃBè_QwJhã£ÿN|‹(©WaUå© ÿO°¼ä×:ˆ˜3V!„ôÏÄØ¶X.ÙG¶c¬Þ²¢xÎä…Ýb\¥¶ú¿ï*Å1ºå—/¤.»•{NQºàÊCýAÃX±?(@!8¹AŽìÁâ¸`9Zµ†õßÛså6 G¨½öœP@¡⤧Œ;Èš–²d&éQþ@ðé8SOŒ?Ýü=α"?ÕŒ‹è^µØIÚ3—æàñê^ICþ\K=¾*ùä‡\ñ38ßUgt~üñ2§½&Un5Õä¼ò° FÊ«EùƪýZxQ!6xó'”dsU8öw;Ø#aâYíKiòÍX‰¶;äªê=]j)o\=Ϧy¨¶?Fk)ið&Õ\çn–+ÀåÕåž7W¹.¢WGÓ -Q®¹H] mŠs— *ðV¨×ÎÿŲˆŠôé»ùã®Â\“*BI€(`‚ËÇv!i`Þ²· -kÛâ "añ¢Å㌠”6ë%JW8©)ŒáàÓǰ£ùd›ª9ÕÛ é¢¤É‘€BºZ2qm_á3•™,þ>{å•·VªÏ!ûR°}¿Ø4ÃÕÍœõZí¿j3 üB½1žCÀ'õ÷B@¢Ï[æ1Ô« -¹N%e>‡zS² Îôt©7)›d5Ô›JNu=1òÙ º½áà‹ý2~A½¶âÙ9ÍŠ :–9£C_½#ØmHdP¢ì.0ÇÉE#ÓN£œfð%\MŒTZ=–Q¸PH€>c,!CVËc{¢ÎMœy¼ˆ\ô´ÓTõ܉ž1‹=у[Ro!ò(Î SqåHpn^¿¸Þ>áà á ŒÇFì -æ,ÝXsSv¢!).œƒsúŒYŒçŠËy±¾ScïÇ>»ÐCó4TdÉìQ;L‹ýý_¼ ðÏtñÿãùÇ‚[§U?ê¬_~.TMX=óåéYHhc½yº¡8×Xu`«ÞÂ^ŠƒèëH¨^Õ» ú,¤º9üD­zagO<ÆäÝ™âP…Woÿ]‰p–q~¯Þ -¼[8”ªwè5«#À^‹Œ„&tˆÌ»zó¾GvÕ;–WUN€¸»dWõ¢ÈÓW/jgB#Uï3¬¡¡_%éW½hfB.ëáÏôµg¸1ÑW¯H»‹Ý4ï²3Œç]¸“a®ù±—tù¯C´þºjc“åkJz¡Šþé 游§æiL½I ?ßÌFm±ððèš%"éŸôćy"¬‰ofÅLëW·L Ín'Ç[»ÂyìÃ×’®e}2Ÿ²ü}¡6CÝÛ.2ØÒ”)ôlp¬}¿w}y@úG¦´Öc™Üõ óäHŠm‡ çç ”1‹M: ½áŽn\Æ90·RÀ}¯¡`>.JGOâËÀñµ”Oo«‰°Æ’1~ #$ie;;Ñú_‰Ë—üûÆÖ}I«›4}¯¸ÝÝþšU†½ZÞÀ¬î–±Ï°Ÿ­ûŠÉ€YðD’LÛ­è¼·_Ûæ”½ÑØðïÁÓEPCŽg#ȯë`íimƬµx·j¬d3Wõñš=ZÖ…öÊ …­7ô›xw#­vñî6Ѓd]Çdó¤wW]CÌKl*ûêDf?~fï®™{ÞË™ïnh¼›Ùö˜ãg† Õ[t.qaøm-ŒwùÆyùdÿuÉ»K_¼èawñwywéw3/5+YG³ëß]0ºlÉyƒ½ww,®Ñ=ë¡â]@U¾»¤Pp¡pÆnœrÈðr›;ncÐÇK!;ƒÆ kãÕ÷áõºƒ¯6a.F.oíϬ‰¡™ÁAÞ+‡ºDˆßÔ[ɘÕÎi ì5üçê9Ú·ô+•ûQ-î5]»XÙóÛhYLò™K¥z´;I´":Øx?Ιߪç&¨›g—nY¦°w2‘YÔø\“FR¹ëÇûô3ZSVt×5¯\n -®Õà§«€éš÷e®kåY¡€m5Åâ8½Á~úai‚ N²ÜA ŒÜ'P¯BÊJ¯‹]ÚpðÆÄt¯K¹¤$o&Ã…i3ëa©Tßb/E.Òòü£ÈšýºEZz¬ÑììåÌfÄ$0¹‡£+µCl%톸–u²œ‡ÝQúy‚­³jÁf'kYÉÙe‚ßhëø·àÂ-»J¶¤4;‹ó<þëë 3÷Õ¨\T¿¿ØíÉ@~kääFM%CWÌÐà¿:ÑãR!ßÌcwˆ®qi])– -*¸Ð1 þ“†uIÛŽÞÁA$ü€Ã¼ªY”2Õ;žæ N0ÇðQmÀù|6‘Ù –áË^¶ø·´4fIË @¹jÙ#h+Îìu¶à×.LGà8`XWE‚çGŒÖ SW’^vØ-4¾'O÷{¹{,«*ð¢Ó­4’ŠpW¼§¬V6^…ý”ЪO†§Œ2”ngôŽÞɘb¥€:W1Ç-¥ŽÅWcp@ÀGWTDO^'Y¦™y¤¼£Û <ãòªOó0¸¼dK‰'¡kú·óHPâ\ÊÇ(x'Ð߬\ÉйLªˆBÊ*bïèÞ ø¥· - sH˜®² H÷÷‘È‹q¦t/öJ;@ª0ãÓÓ f˜„é{<õˆŠÐtÏ@5©_´‘8‰6Qq?afjí+#Ü&§…g®mm¯Œß1(rovŠ&(€ÿÂH•¡u‚¹¨Ciˆ4e „·~¡ Rå7«gJÛ¯ÓFe¤ŠV¯ÄRf" -^y\%+ðJØÁhÚë:à§2ÀßFÂJ ·2Æ ( ˜vïŽÏ‚¢)Šp…%`d³Qp<èEEñÈ«0Xø‚øûŽ›Ìm¾Ä,ã£d°Ø¥ÊÎaÙf1EhÆÖ=Õ—Iö ÏwÈH©Ó“ÄiC>A½T ^ƒ¥H¸‘ ¯¿€V!ÅÑ#¡hËJò{„ š,в}Íyä ?£uaúy?Žø€âÁÒ‘|³áe‡¸,ƒKΙÁßUÝeÂj÷9E;SŒÒF„‡VÏåz4KÊP@ø`‚ 8í¡é @>©-ÖœëÄ D¨ÃÔ¡ªW@aøGbÑ a’ü¥v9^ÙCà \ìfr&S– å„ȯ°5$DˆÁ¹o¥¯ó%³lA¨=ÒÜG¾:ÏÔAg;B"î8³ò{¾ßå¬\ÔšÙgÎÉbƒ(ß%weø«ˆ€ÿZîÒU$‰ÌÎÎí°:n£Å -ë2GLeaq×1pëMç3a°§ãr޲£c -%è9 ÜÓs夆YëèòˆOÉ{$²3ãÖ°Ê^ˆ&@W³iuˆ ¦f]Q,¼‡Í¿n€î‡¨ÓÿÐÅöc²k¹.Zgj¢ë&šk0›YÔþÂåÕÔ¯>âСüïÌpi¯îðKÛpIb&&sW½ò‚½í^ ™53î„€Öþ>¼b1b'¸7ÆÎä$?[´#=0+p–ÚGa¹¾c.ú¬ûKK?ú-#ñ)Èz³`Õ#aíŠ3׊éîÓ8eÒþã®HOY~§fÅWÒ’w‰G=+Úv){šw¹z Óöì ,¼ŽYL ÆòÆž´EÈI*þåý&zi~ ¦ú¸Êèš¼¾¾ŽG–†^ºíÞ)û/rñYÄÒ\¼¸oƒ%_)J¼;VK6þUwÄúB‚ºÿÊIñ6.©ÆÊùg©eà×á„Îc)^÷Òuàžš–eÙØÅ_²Z½=6éu+O`·òQLŽþ;20VÞ³Gûã5¯ÇÊ¬ÎøÕºƒ]R1Úÿk`Ü „UjZœ~0Æ5X68 +É~ ÁÿŸà2eWÉ1‹+n9 @~au;a©½Â3FêÜ—ò_œ"¨³àvX5®…æ&¢FŸ'#j -3&†#ÊÁiô›¾ /[·ä;%~|L¥À.Ƨ>N1£¥rÓŸ{ÍàÚéEÙ˜2A!“¢'pÝœF/K0-)@Ž›¨`–÷À˜¼iZR_‹ÓŽ!Wâf¥'*j3²¥Ya¥·¦BiOSð1僲šM‰Ð.Ý{]Ô„ßÿãBðAùч¥rq¢‹"·ö_˜OAÿ°í>‹Ø¯?è˜zµ̦Xåˆ=”1X›Ï‘ˆß# ±›áÙÄ2sÒ¾¡•œ˜±îÉBgk‹uø…ý‹»8 —HÇTB+{˜ˆó0e;@ë$%Y­úpõŒyŽ/ãöÍ Ö7–ó­Âø’_íW49»u|ˆ½IÛNò×r¤ne³ÑEŘÐÜ»þ˜JGuŒ-ÉšPR| ]ç$r+ï}æ× +Â)².~šŒSzÁ€p¹ŒÞÃíʨEí;íK½h-ÍVÝD®Äâ f£óvJ6C‡y>NqÞ¥À^ÒÔÍ$|Їû‹¹À‘ Xy9p#GÜùl‰ /…ÿu- ¥‘~cB~,Ö5YüæÿÙÓD šÑÆL}¬Ê -Oo<ç²¾f“Q½šqf†B¯¨®ýF… “úÞfjœ ~bÉÏRÀ öwÄVå‹^U†¢8C>­Ë| -¯.¬AY޵&ÕñÏXÐ~ôuum¡ªÃà3]?ò~0wNÓEÜÓâAƒv€ÁýƒgJ‚ÎÞ3Û‹©ü4wI²ß4;BúÂÖ1h3d¹Q¢––»2÷­ 7-.}3ˆãZ/–Ax[ÁFÕ/á^=‘ý Šœ¯é‘®çÙ¾™93[ •Úôßê5ÕãdÄ‘ŽC*W¶ ¡ACpé‰Xâ¼Ï„©Â$²˜U_eê 1Üå~h'ØJááÅì:Gn,Eú"/KkÅxä1粓<†ú0¨ oã‡/«$ü¦¦”¬u —YÐãMjÓ]c,)éxØR§q>ëâ˜ÆÐGëÝÿ‹½áË@!z¯_6³2öXæßa'‘–\êÑð„¼`œ åÞo™ëæºPö¯óòÜÅ(j^ûÑiÈ×Äa“fBÂñÝ<ŸC¡ŒQ4Äc©¦ƒÀoJÀŸ8ÄPkJ.ß]L‡®xvëÌ/ ¨n%Ònš(¥«:^ÎÓòaÞàf 'ž™­Eͼûg²À|=³Œšy™d3Œ‰ ²ûj¤š 1ÁÚÃBÑ«±ŸÛe*˜FIg…ÿÔ•‰éûFe\ÅÛËÝ-o¸ sÉæ½ò‹Îr@½€$ Œz”BkÔÌ<–W\ ̺ìO`b0ÆR ·IU0à+†ó Øè’7`ÆØY4x~¸‡šNv—a0»|´œGS¨I@­ÂXx`)Ú';%ê`i-mkEÈäèü2”w¼F{;õBJ*Ñ´ -¥Ë·# ˜Ô½š¾ªòšø—Òö4M,ûrÐëÏcÈy ËÇ›!õJØM×p­R"ÁK `¸‹Ç¹ùH±ü´·"0î]oL_YÝiI¶)wÒfn¢íÆŠ{=Š º˜´¸7¥¤T“Û6Þ†x|W"P2>w}[bz¹•— NÓ}9ÓÔõá©ã6¸¡-'™Å¶p -ãX±ˆ•NŠä©¯ù€3nQdYç‰*Üyí¼Øtj>'i”<ˇ`1 6?õ³ÎªŽGaÁ…"ªŽ;ÞkX»¸QÑ+#¸ N­ œPÉüfFhr•W ¨zDKG„ð •3*Hv@ƒG6Ù— ÀX‰Ç<­e<ªé_)|=Çýð]'¨Ÿ¡Ã7™„ßiýÝ4’r™T«îŽ·]ˆ”Ëayég˜”ƒWÊÀ«èXn´á0î.Çxåê#…Çñ¡¨ÜƒzÒr¯tÇèþ2À©¢9`”OOÒÇ»gT®JIXÚÇB€ì6”ÀºŒfN°ÅN[2‚˜yÙ³ÄV-J=T°¨þE'G¶1NV|‹Õ’ßUéˆYyŠÐâ”nµ‘gÛC¾ý¼<žÀÔqÍ”hÆÑ½XƒîmBD,›£ˆë÷´‹ ޹ᣥðrßß}¡0zgà¥ÿ» •Z¸úÇøðêKÂéµCðQ<>¢°§QŸ¶pe Ü÷à@0FÍ7ÛzÒës]ö’BO©¡êÄ-“ü.>NtyX¨ æiXú{”?‹<~[Ó ÀLGÛ°ö÷k¯ë¢aZðýÌ_VÜzêNœÑŽôä+d¾ÐŒ -l@`Ó… H‘%®gð´ò"@ƒP5– oÒƒ–„xKÂZP}àíü[]Ìÿ™m‰zÞB g9êWhöQì°ÉÚéB8èP’7/æ;ÜWb˜“¹.?0Š‹gÕvü•=®Ü)ÇFwÓIÔ]£‘{~ó,ÞT èš‚ C=U -Àée…Uç›W[üˆ›‘`öúÛ˜ŽÀ±Rz2“¬K ”×.ÙZ¿¤xÐ0ŠShP©ªþÏÍ0 -–¶êß?T †²ä²r$e'I8ŠLëT>’&k½CûçÊ—ÖEÎdË „b¿Gœ®ÕCØR‹aù4áÃKaʪ›â~ø‚R;Ø -/OúÕþ;Nv&Ía‡êÇ!¦Osù|¬ ¤ç—£\ì^`¼†R'k3óùÌ·Q·óÅ›e,¡Ïë¯ÆPÑZÉýåýªŽÎ¸°é,øžð·›m&z…d&&á¥7Ù½ËÏX„䈽gQlä¼j˜óv–„ -…R߂ュŠMºg#ŠÃçfîJ²‚kð*™ÙšýEƒ`×KP [%±!«,V!´l€—+¼¢yŠšr3pp|eSëO_ÂI¿#$è݈¡üªYñÄÚÐj¬:á@ÜŠc«´u†óxûR暈|;@ì˜÷€È™öÂ]LBml,_¼6®Ìxz”²74s¥ËƒÆ€«"(e68|'d™€À‘¸ØDbÜ ÔÚg½®·9®Ñ+ ìÙís¢Æd1¤ÞŒ\B¬I´«¯s8-²–"?­}³þk™Kƒ%7=¡}ÊÍ —;ákʨ©GáŒÔ=² ¶fÇ‚„n=]ûrcµ=]•X* {\?Ô¢n_u\<‹)ßÖCÀ´+QÜé*oãµÑ÷ϦJ*ÎXÎŒ÷ŒÞC"çÅ‘áàò™x $^Á·Áú?ùŠÖÇR€i] æÖº3½p Œh5b*^(G¤Ü!z\ÔXá*—f)X[zŽ|ûe¥Ê_1hÊâ¥Ô¬ Ljj!–Ä.ݲ5ç¨Ç‚ä¬@h"¦‚¿¡ª¥ŸR¢H¹Oˆ9ù…s’‘•9X«(gB°Äh£AµTx2 þó¿a>ŒIE -èz_Î/-ÞÑÄ 4+îp`O­xBØÓótW²Ç×gÞÆZ5Cœ"ÉóQµïÿ³´]ôMh }èqù%Ö†È'8‹‡òj”Ÿj¾x£Ô fr8>Šù¿™ÍÖÉê°g¼`¢°@—NyÍÿØ÷Ä#î¼Ëí4öú*øH2s[䢢Dʘ!" Aá™Âù€S©¯¶ð¾¸rg‰mWþ$AW|²K^ÃõÞÉOÙ˜Q±R…¦Ë?0Yå¼kN—$ÎvN _¡ºÑaEµ"{ ¶Ò®yr»*<„wAŢѼÃaÞÎ:Mïˆ -99¾ÅCJòò2ßPœ”cZ@ËÊ*¿Â‚, } ì~ÃïÙxîñ[µ1íd_ï¢`D€U›Òç6Ïw‚˜Žü2– ÏKo‹á4^껳nü.{¼ðõ“wæYãcï‘F1êPÆåÑè1‹Ø=°ñ9–N9›m¬D¦tòbD£“Ç„]X ×0@­Yã™~TÛV¬&³Ki'ÏP¨œº?ýNÕ} ›É‰Å¤Vî<Ž˜gœá!Ö$]-I«Þ&R+‹hqQ_sÀbÓúx!趸µ/gÚOŒó؈DÇ t0ƒ\52¨·E›« óõ„ ïµ#©4vE -%>E>ÉoOZÌ1\ÀGlÆ‚®9‡mœ÷^êóJÔ±'u#ìöt^Vo„þ`Šy”Ñ´p1uA¶×¤ªÌ².CÊÍ5R†ÁCÁò™dMBâlæ›ÄvÙÄe;Á3 6DÕ¯Þ9•1©‡ã3:K¢\£“z“9a)•¢¢ƒ“›ÂÞSHø¤v«èÞÉL! í&æWè -Òs¹7Û}ñʶŽYûÏy*¡&¤ÊR´M§„s¦Ù‡pÔ<¢–'¬ÒuäÍ|b)¢ -Òx†B(J¢‰Âq)1t$Á³q°¯h²Ã¨HáÆ>¢4$Ì=ÎP‡dW¦Â4@_€tÛN- Áø?bsÙ8üC¢‘c.4¿«•˺ÔAR(¯=¬+çK¬³€"24­—ÆÇâ!.`© -oíWœvÇÕÍVRòHLìfZz·ó7¢>yΘ0k)ú¢Ð ÷™@¦SÙì“î–¬`‘î¡”*o}§Â+õ€¼$'i=w¬¹"ÙNHn_¸èäåGäkºaŸÖ,¸w -‡WZGµ¥†^ÐÇÌÄ­%r"·%¨Ù1#YÑ£s7'‹ÓŸBÍ"öˆò¾ -@PÜ»³tjþ«-êr•“rdN%W,®õϬ²MÌn#à”€Ì R¿Ûý§¯º8ØxX3+ñ‡ZHn(uæ{8Y N–D4½Óää‹ÇÛoû9±é¿XÊ=¾SÒròip;á³b ž 8abÄUw‰hŒœšX©A·¢(XF½nu´/Ë!ž€*yß±…°jiI2[Æ]l h•íQ'¾XC±3¸«”ÀþýAüŸèc?yOв æ^—]#Œ„ð›['jý3­,Ó³Ñ=3)\„C½u†µž™­„´yœ¦©\ÄH.|¸&-Bn1èÐ8ª³&å¹:‚¥{À—1[ƒiú¨‹®{¼›Ghé7Ó<–,©YúŽ4WCùú”l(м˜©ú/ìÿôºÞvø:!ë›Qj¬ äy²0}ÃßDÓZYZ… £<ßÂS€Å<û†ú·S -c¯Ñí|¥k ]<Èe ·²qïbV®¤Î[§€ÓÔ =·W9i>,p'"<ЇX¨XÅÁ„z/ÛhÍ!mAA´“Ã5œËh£=ÛúWœcß«khi.PW -ÐUI©÷¤"ÑÎãp„x}†/“±M ™ß&Iy$S'6‡‰Vš¸(cEåôÏ)Gh«ñ9!¬ X‰iˆb‚ #‰{­zÞ£z¶š8 {W»¦Ž¹Z¡óðæ•$Â\œäT§¸ØÀëÙÙCÃÞƒºªC0[ ¨n¶VÈ{:ƒxv,ÑÃþeµn‘T›‹STSã&b™/{E†j¬ËÒDDA òa íQAŒ\ˆHsçÿ³æçÇëM“òºÐƒ)…7‚óƒSæ!m ù’Þ7™E—ZG1 —ˆÁÞKIŒr|© “û\²µöB=×SA~¢ÿÞ ôq9gø'xiZ=’•î‹ÑàæÃ"AðVþ!Tæ¹ÝTÃE™ƒFðG‰%DC £]gÕ õC×ÉÝ^XãK´÷ÙØâ™d!âi¢ -TPoĆ&”"¡æŸ¸[Ð}ñ.w2znÿ°UX¶¨S'Ži”;Æà’~±$µ)ªöO 6kŽí?¿8f<,·v×o¶õZ‚ÉD:s¤uSðíÑ[Yy¥àïѰóh¬³ý]uú 3îÿ!7f¶{6±C‹þ¦±u;¶…Ĩ&RDhíÉnïØóVÔXÈ,<1¼Ê¿x6U¬Ue‚3nh9Ñ[Y ýAPSñxœ}¼óaæõ.c¦ûÜ9˜3LZÐóÇH ÎïÑúŸ–+’SeH5§Ë+:3ž>ÏÏÙ›Ç aìÑI2ò°%·…eþš…Mws+c¾úlú'{ÿ¯‚ÂåÏÏþ øL*>(Û 8®…>w˜È€‡€. Ácg ×,bMJÆdJÆç›ñÛˆ=G•3ŸqNï'ýsú³¯TSï>OÁ/F…>Pþ×ð;:_}ÌmØt2ÿkÐ2=Ÿ{†¹Ôå™d$ìaCBA?V_×ýWâ$ûÑ\ç˜"c¶ã‹ 7•S„‚–Ò0¦¡r}h· üNjUNN úÃðs8×¹ñ¯6vŠ5%[x1ä’µij.LôIm5ž^ScSõT+c·ÿb'wçži¶øúÌçrޱ£«â‡ß‘høÄï-N)Á{à#ü±pŸ Èu/{ÅÆ<Ç•PÒt–mô} … Fž¢_V«ú!º"£4󦦤Sî†ÏG)Zá$?Å”Ý׉ÑÖý5¼¼ìÄuÕLŠíŽI¥¬ 2íÑÐg“û™ärÃ[ÙlR©¶è¦Ž–`³É|­…MÐÏ $g—ÕoŽ„t]¨RÍzGÕ1Önò´v·¯Ž`CE ³À›bÚÍeÇ<•@{tðÔ[DVΜ «Ç€Üîàqô>1益d¬õY{·#DxdEÌnÚrVZ6SM )šÞù.\pkvxº–¾-™Í˜¯‚ÆD¨/ ‡"GP9§–›åÓ¿o ºµ¶‡µŸ[7n9têëlŒÕ!VJ€¯óu ´â¿ps¦GÄ~BwþMþ„#ñQÕàñqX`á'é±j$æÍi§ñ8eÔ©{#Gïj‹O;˜d+¶‘‡å;à÷×Î묙»ñ¦Rð§©+ENòºîŽês2Ó‹B}¡K¬hS•\µH¾WzõT¾úÊ|"*‡¬×¤ûWר½7‰¶]Š·¥ª@µ¹VãqûJ tåÌú¥Í@7U?Ìì[”ýÚÓãDvöiµû¯;¨jthþxU<Ó±h=žr‘TÙäƒ,c%zÐü_…aE"gþm¯ÆÄ3kJOs¥íõÊ¡u-D¨QƧJjXýUŒäPõB¦‚æG’‘mYg/S9‘@' 8÷'0 ë…´ Ë&ãc -@Bи2<"–"1 -p(Å¡8”AÍÌ´Á1Z2@@RÀ$“ b -œ@(&5B 04 P@@ %y-`x´‹A4†d‚—…KLÆgCŠð`L -b‚/X¹&D>šÀ¡X8”A‹CÇ$A$FƳ9Ž€ -äPŸ ¢o—=XA -§sX -ÓMl8h|F\@ -@ Z² áP*¤eäs(ÏÆ33£à —µù˜HÏæ@@GgãðáP  -H.Žä$„åÒ0È8ÝË€Œ+£DÅãÓqòVˆNZ@›+fe€¦æ$Ä`Y®˜"ŒISÌÆ¢„/- ™Ń)gL €‚âA -$Òáɀb >+(`€¼ &(ãaÆã3S`cB9Ô†ƒ Áà„œF Ãé^„’&d¡ñÉør‰8È1®ÂsÂò0™f&`R^@ <Õ§ºe§pq¨6qaÅ¡@jŠtáR†äPŸAÑ*a't8äP œò¥pÔJ@©(àÁ ‹ ÈÀ J&˜)uPâ…ÆÇàô)aMh MW ˆC)ã*Qƒypà@É4 h8ŽÃá@»^:ž‹pãñá@!+XáP,"%ú©ø”l IèÕá €À¡6%ÓI~°t8nÁz¼èËÅ¡*Z‰E -@€ÔÁ‰¬ñ)@aÑ.ŒßH¤çO@Í©@Ž“ ^ŠÇGă+ˆáâ¡crÈkÃp±LØ`,Ðl h d‰ÅoR€!Ñá9H9…ð9ÅÄ€:rÁÊ•¡€"ãš@‚„¢ÏÆÎ¨ Ä (¡£áåšp±2dEd`d²ÈŽÐ…FÉÆq¨—„ÒÊõ²a`ãd6"H(3êHrhÇh”¦çp¨ÎÐ@Ɇ•’JFx€P j \ -8#!'Yßq8aAŒDCmB(4>× -2Ét4ÛÑOBÐÖ @ƃ"—nb6:j°Ñ¹ ˜ðh|D/ÙrfD¨$!(çŒå‡¦ÀšåR‰<]‡ Í„V¸<œäËŒ - =‚äâ(z³0&- „§Pb€B LÉ¡Zbl܆{´ËBÄ/¬…µAÉåT`r q¦vÑÚzÚdxC]ÄàÂB‚R(9D°Tˆ™h9™™ -Óq(ŽÏÁ¶Jd0€ÔrqlGEND0ÐB„G iT¢å\BzºL¹IØ\º!QñøX -×ÄKÑ5¨©).åÄè‰ä†‚ é..b#ƒ*€GÂé^: ¹y¹äæt ÄE!'&@+×ĈƒÆgdQB -m\.—ÁS(­ÆPŒÇÅaبˆ "‡zh‰K_RT<A€ÔA -ŒOmP0Ä‘`AȇR‰NR€• -=Б ”„9PtØHÀ¸tàP3Í„€„3 ¥•k@„J¤FŽr¨…ÆgÓCB‰÷%»X†P\äÈ `HQÈ–›m!™p€dŒ(4>!—ËåqQšÐ®ñ0Á‡Z‰Š=PÇèàP+áÅÔãÑ®¦’“”©á¼&pTcà -^ šC’qÈH¼\$¢X"E^D@"  -äP§)¦£H˜¡Lˆ ^-5Ä¥7—ã>¤‰'ãD,"NkÞ@#$,8LÇ¡ö“0ŽaC98B[C‚åRÜyÐЋ‡ÄaC]¸pX-yA¸¨c³âA5#`€DŸ ¥ˆ¥€Ê¡4:J8z J™‹i  @ÃT„Z—ˆ‹ËÊ…áp ]1¤F4˜ŒÏµÐJˆár’%q›µà¸8K€–‹ëÊ;H˜¼çß2/û×s™9)”œ§yÚzÎsžm.qIh)fXfjF 'JáØUÎËzìÔªx1û¶!²K€ÈmÍO£/™Nl®¬Oùµ+Zk=“ò1EŽïÝþ­™_B\:*ÝŸN¦S‰ß:•RÞr̵RJûV§¯÷Š[·®:kî¹Ú1c6r¶c‡¹ªÍ÷þ˜5îK»wÏÛa¨Iîx£+¡Õ¤~«TúµF¤”·Ú(%…Ô˜Û†š‘³ϻ٦†VóúÛ_s²M0©ŒJ£šQh€‘GMLªM‹‹uM»'-í¯Õß#Ë›®u|Íj¥dRÓRÂUSO•˜©ùøTJyª˜R^,L.#O“òb2ÍL|ª£*šŠµL*£Ò‹H¤¹Ü-›÷'6úz²c®Rµ5nçÖT¶¿#|¾ÌÜ^ÑßÕû·µánõîm““é“D|[mÌÞß’%³Kõî{݈ÙËr·úÌfÆkßÛ©ª¦RFhf`jF3¦ ÈúîµÖle¹Š©iºû×ÝÚsn— -u¯õ¿!Kæ -û7óïŸý!*žã®3M¥\úÚS¿ûQÙaZ5'“‘º¿{ãË[v˜”K¥¾Éí˜è͹jˆí›7çífúTF…}MóÿÿS™b5@µÊø¹ª )š«Ê”É3Zù8¡ù˜Iù "UõÛ–7Ï»DþÖœeõ«êÚÇͶ³ò|EÔ–w~,[Å×½n;†©'s^¶å†¬R¢êq¿³mÃ~Æ©Uf[ï½N¶ˆ”KŨŒ·»ûÎ>·úWMÍóÇí[v ¯“_·2Ó¯¨ÜÏÕÛS›/YÒ\•RŒTG]ÕQ'êswùQ™a:`€>†˜šš•Ð0м(p šHа¬8¡ù¨™¹N®b¨B 53×ç„CI\R/¢JU@“@‘DÕUÇÕUÌYybõ gL‰R^$8*åEâ‘r…‰C}4ØÁêh, x¸¸ˆûX8$` È8ÔxçSÁ 2™7P Ä…Œ@d‰§¢ÃÀËŸcLsÀ!€…A§e†CÁp^2>î8Ô/Ì(JCƒ6ÉtìRó9ɘ˜PðN(‚$e¢Cá=kÂUÉ8P4a‡N‚‰CçLØ¡s -ÊLØáÀ ä!Px‡â|(È6À ZBjA¢äø˜(`‡N» ‘«"ìÐAvè(˜:'òa‡Î'¢#”"ìÐB¹ `‡Îq¤`1Xðq©¸ -“G Cu(dÃD…BBD|l,0B¢S‰ãZPa - <=(dvèXk)¤ÁÌI…‚t”Cu°CÇ-Jøé`‡°J“áah¥vè°Ž -I'¬ŠT KY)dA‚U"b<È¡>¦†À*uDĨy*`¬ xCÝg‚E0Fhœ€3$”“—  %% + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WQ¯Ý¶ ~÷¯Ðcî€ãHE‰¯ÉŠ‚¡ëö0 {¸k¹ëÚÈßßGÉ–íÖç\ÀA€œK[¤ø‘üHúí_ß»·Þ{÷îÏïÝðË਎êÿÜ¥‰¿þ0üÝýoíßß¾ÂH^ܧqL1»nxûí÷Þýø¿áê!ü?²vL°¤Ìîù¥ê¿ !ı$v—àã¨1ºÏCð2fQ{TÆB.‡Q²4RNŽFÎ1¥1À«çáûá;8Ý/Öð –«á–‹K vJ õݸ{\j6 +~ŒAó®`RÚSòˆŽÂ£”h YuQÂkŸ€¥ÜVb¦1 +ñV á +T¤Ì¹ª°P8¨B‰L'ŒE¢¬å1I耾Þ]§äþúcOåÛkø—Ù¹~ࣽÄO@&YÓè½Oîú2¼‰Oן†o®Ôέ´Ebx,¦çm&‘Ëæ…ì¦5>Ê”®[e¡;e¡p–Pš’¯k Æô ˈ€IFø +y¬¾ ØKû@Tå^>6@èD 8Ÿƒre·\p %$¼á$eWéVK0¥@™kÈ8+ YW²Ê r¤òc F©JYÂ!º˜Rôh©¦„ô•®°¤‡“ßÒ%Ÿ—‰FbÔÊ#ø{zö ì1ý!…N’¼…Sέ¶š™[5°Çö˜˜‚oŠ/ñp°Ìlˆ“¾Bf+gÆmJ7 Üé–• 97+1ƒÀ+Ùzu» ôšË®ÒíJœ R0Èò±˜M:©Œ …y”ÌD¨ièÿ>7·t + úb:>á÷0ÿ9Àhi#æD²€¸pˆÞ³²âîÌO©, Nl`=72¾GøÞ%(c_U¡ã„gÛ{¤ IÿRñPÝònÛGqëÈÅŒ"èy(r(`R@A%ô®Âr„ç%âÓ"ï*Ýây‰<æ"Z•J‰ñHÀº’-¬òHÁ¦ÄXnM _E‡XbJžÕêÅiÎW¨ž%mgc8q§TVp–ÃßÓ³å.á ¾&·PNÜ*{VnåöXC±ëy,íIF +믜WhoiÙ ÇIÓ³òX)G›Yù”;Ü·´l?ZNlc–¤¯3›DõXÀÎ"º¯t¯¤¨m¥ÈRäh¨JXŽ4…p”ʤÈÿÞ=[¾ˆìN¢’|f(¦‡€÷´ì€x•ø + H<¹À,·Ò¾Ï{ Ï‘ê ôšóC¼Ç \ œ¸÷œ”Wx¿râ§ŠÚ£º‚Yuk8ÂzBÙ©ú}¥[¬7%/uMò’Ë‘˜u%0˜’GŠˆ8d6•xhâ«uT, KNA3>Ä…ñt‌ÁytOɈ»Œ§D ˆ3–) ·²½GvåÑWÚ‚ QEsÝ2ÑWû{oÏÄc5‹ÂcºãÏ-ÆÑλ +_‚C¾D ÖݰÆ݅ЀwƒØIÜ…QâÛa®r.†çÓ€“Ñ£½ Þ¾ ØKøÀ18í|±¨ÃZv$!3¶’"V¦Q¬—4R©Šf¡ÊR’ƒ$œMÒ&YO„T A7Žø™Ž~6Ÿ,Ax²;K˜yتžÍyEΚGŸg±9A¢“&,(Í[|%†'ØeRÿ òöÃÅDD +ßlkv»l&Ìòê%M?#.—‚Žû8ùla³)‡ä_,1@BðÝÐÎ"êˆíô,'ûàt³2åZ‡³q|Ž2ÕãÓå_ æìäD­˜&ç'ÙœŸàõúw(¸Ÿålå¨ïîüæ»<è&€“þ ÿw ° æ>à´¦Dìû§?1*Záp}Ô1·\U„üÖú²]È¢G¨öX} .+¹;9?8 ¯ª›huÂD4ÕMuÁ|°“‹¶²†°Št“[™èöÀo™œ ü•}Ÿ%p¾ŸG ¼¸7‹³û³<Á›”gôÍtÎt±õ¾Zà“_=¸ÛðWëÌä²l©]b °‚lRÒÐë±½3Ð b¬¯k¾¦ 5¾×‚‹PâÜŠQÐÌÄlæF âzš[õK²Ì¢ÚÐ\¦~‡oÆÖ×*ÛNªÏHZŒ¤(ÆÒ*)§ED@Wãól¤nÖFzRÐn©Œ§ëå¡öVÌÌä2êây•ž—ÓÞ"i±†7/µ6%mŒÕÛÙnGD‰+çf¹{??A@9•JÎ@¹ú%µÌmþå¹Ó¶rNQjCÖT£Äj==k™+5ØÛ°FÔ ªF»…öÎ*Töµç<ÛH鵄î‘*“ÙV„ùAO1Äb1€l›ŽÅ$qžJ"*W‰Ï2qq\É3úÜT{‚h ”cZ]!5E­V'ð¤X£šÀ[x).|hb«éœ—סµµ®ÐŠnì[i墥³{8ËÂü`ÆhÂ*óK”Bï­-ŽÍÅ9Ê›,<ÓHAUav¾@¬Éˆä0ÃŒ{iuSW)cÝ‚†©  }çdïtr-㛓/WÇ|¦zC‰¥9šñA×ZÎFŠ6W31[;× #ö'\2éMp¥o,ZGü§á㟶«£[QR›ú«µÿ‚3bݹºÆŽêKÝeV§ÁV\ kZþ¨ÒW®óÚ†®àçúì¦?¾¸Õ&—ç¥úo®??]ðþÍŸþyý ¼2 ; 5vÉ]ÿcïž.ìÞüüÛoO‚Ÿ—é° mºsbÇ‹­ÙííØ'¿ùðÞ ÿÿÿÿÿÇjÁZ endstream endobj 23 0 obj <>stream +8;Z]!>7L`Y#Y"4]2s>G=Zs#a]-Rk-jn7)Y?a5[7T!b%o.Q+KWBp"chOZ3;DV!=6-p +j7]dtXX'!(-rYh`ZtJii[I11.#pX@WJo#3J:t!t.CS-c#5Y endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/9/24 12:41 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -372 858.900024414063 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -372 858.900024414063 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX$ºþLĹ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØA:ÓˆÁHƒP×uí a]wK)© 16¦$ à å ð-¿ªŠJžSŸè¸êY€»>_sÍšX•Ó{åü>Ú•=•Só]%»2ŒÑ<œUëýž5ŸöiU=§ÞŒ¹ëSõÞnÍ‚3 íaõªœòÛvw $G­—â¨V@ ’ì*Ôý(Š¿Q¾.Ùø}c8úF +ÕË–=áa{îÌŸøíÔnf€Ó6¬vNÎzã×sÚ•Ó}듞ë”4`FÛ'aâ2†+{À€ð"ÈÁ,ËRl àG0ä¥õ¦êØìIÁq`ewu¿žÚðʳ¬z]©9~Í·Kù‡]»L¶|HpØrüÀ½]õé—k;<î +®ïÛ­U1ÜJ=ìûõ¼1Ê…kW@woWåÞïË­ëó»KW€üªf¹ñªf9~ PxU³“}­[‹Ì(=ש© yî=ÀûáTNò‹ó;µÊ™ÐL«ÆxN©\ZœiÛe»/Ž]K»c³+5Ë®7FiïíÆ³ «´Ç^°­Õ/íÒZik*¸fiRò[»´-»õ­••Ó“ô!ŠUk]«çxNiªÚQwíjeå¼W/†,ɰł_Š<®gŠÍiØí×5×·ÍëÛÇ1¶rº>MÁ½î‰>ᱫÁ·ìŠ€=qü¦÷ï­½2ß±yõbn—~Í)«rT/êµÞpÊ¥7¶ýÖôkNGqôÿáÕ\sZ)¸%Z½˜XŒ†? Å—ðñ½‡a÷œs2¼mXeɰ/"ÁÛË ÕÛùa(Þ«Ó½èc–|¾)—½W/F~ߺG2_{µÚÐ1zæh/˱dÃ}8Ф]Ãl)–=,_ó}Ï(Hªä9õzxUr¥~ã˜æK’÷q¤çÏêÅp°µä¿ìä ßnçµQ1]¿÷ûrk—S9]· ×tý +˜µW@ýÚoM¿÷k¿iÿ¤úò’)Ù]”& Qs[žaÖ[k¼1ýšS Ç©•Æû<£ŸÖY2ܲaÙ Õ󳝸vã×Äe· Ïœ°ñÞîípÃ1Œ‚m8t·XpǤ‚ëö–+ŸÆ¼û~mû|c”{×3=ÀúÝ)XMh;Fß± ÿ€ë÷¶ÝŽÖ²ßŒVV΄»oçÓxØM\ÆÐïËÕh÷k¿5G«_Më½r&4– ×·çUÍ)X}š¢@{Å`Õ›)%Ô.ìÐ>—¹·«–*y5ô· cPN–âdF(Î{ßoìrTòj*+'W?´Õ«~Zöø2ÕHëZÏ:#g*”´ŒÆ»&€ÖµkgF×xvŽÄГ½óÐ!Øyéq ì,»ç£X‚œô½{ÿ,{9ŠeÉGv?–àèñ¬£ñÌm4þÆô ö|C{_®æÓwsW¯ZJdM`–/_f¿ñ€Ûs×gÉy×@¯q­'2E"SÉ«§)¾V*6´OSÔ¯ªÞhõËre7£©äUE3Õ:ÏlÔÄeÔÄi¡&j]óZÿdÉCpô")†Ýwk 9r±ì¼C?þîq- Ç})~°ü£Ç5‘{ÅÒ‡\$¿èq­ä= Kä ‚£èqmô¿'KÑãY)«Q§™$˲¬$ÙÎ}÷ÞgéW³Œ$K2ãhFªßƒ>ô¢=éKzÔ§^õ«g=ÿýûÿ?øÃ/þñ“¿üçG–~õ¯ýìç`=øA AA,ÁDÁTÁdAöЇ?Ã0Ã1$Ã2ÌxÈ‚+¨‚)ˆ‚'X‚#(‚!‚ì Ù¿~õ§ýå'ÿøÅ~ðÿï?ÿ¬_½êQúÒ—~ô¢=è³ï»ïž{¶«=íiGûÙË^v²]ì`ÿýwß{çå+O9ÊO^ò’“|ä"yÈAþ¹çg¬”©PÍk\Ë,Mõ¾\Y%4Ç-¿°Ê­[Õz£z4ÅK»-¦’c3ýšÓ÷†c­~U2¼jÝ.gt¿²snv1µ+»ñ+ÆØ*ùQ­e£`L+u»xêù†U«¦ €ïÔKÛõ›‚á8vÓ»>ïúlÝ.GÞÈœ—¥Zµxž?ñ<´–«Q­~ïÛM½·=ÀóÆ)ø®]Έé9~È뫞W¯šÐÚ[»1« a×Kh +– §Üú£%4ÅzPMõ®ç;õ†Ù¼’+tl®[fÅbNFk2– ß2\säYc +ùgŠgÔk€ÇôeoLÓîÇA¯½,ùÀ`÷š{ǯú‘eטkšv¿±ìZì¦`•[aÙ3Íe½¯ÍW’]‹ÝšõÞ2üÁôw§bª¹¦Ý×+f«¬Š]ø®]ú‹½¾Nö¬~o÷­YŸm¿ñ€–á• âØµØÁÞ{–¿?v­‹½”½ô€J^>Zÿ¾’Is°dX5§äõ¿¯˜ý1YÂõ“Ésí¦>×+Ϭù»cnüŠÕ.K޵¾,åÞ³ê{¼5ê“ç:å¾¾¶í7¾gÚl6•Ê—U*ëz®ç—©d׎ͭ»~é×vQò›RÍpýÒ_ŒRÅ«^}Ù\ÇV·^‘¼*X¬ŠQª×ûµlW%¿_öÎߺ9ÏïM¹´ýÙ°MÃqüÞ«7¾ç×ÇpŒõe2\ÏñêžåØMÁ¬9~¹qj€÷“˜Uò ßöƒÍßë¾2ÇR¶ûRÕó÷ʰ ¿Þ•ªžc¯O~ÄdøeÇb:kÙnlo¾õüV¯êžeïsÕîëU¹õýÝ-\ çÔ§zë·þ2;F©d÷U¿¬¯E»5Ë­]ú»ß8Ž¡>y†ïÔk,Žë÷¶¿[~SßûÖ¬WõÕ/‹åªb_‹Å¾yžçùËd†á÷}¿ìM¹î7À¯^±T §ÜÏu?Зm¾W÷æ{ïXÊ]?7ŽaÕ›J?– ×çgÃö[¿°êüHßµW€[³>±ÔÞ˜%Ãö{Ï1ØWþ¬”ѱûõ°æx®9—Ù·ü¾^sª’WŽË<óLjòò{ßnÌz°“aDzô%÷eïœôHÍ*¸nÉ_†dŽeYr¯—½¡•!ØpÈ0 ®7/Ëåp£/ +U¯I%¯¼·+×±“¡&’]ëa©‰}ìZÙ;èK’äâ÷¸èIMäž=(’¾ô@Ò“×<Gäÿ÷‘ËÑã’šCs¼phþÈ/½1ñ^9¹ Ô@ï¸Y&¦lºå÷–çÔ$ì5Ý®ß.æÓw,ží·s¿¬Úý¸1{×§)Œ_Õœ)5Ç»)Ï˪]Œ ôšÃ¾aT¿q¬Ã9zîú|åY£9xaoŠaIj¿>rï;çaé}P+Eÿñ!ç¥÷yáè•à×Bóð½Ý˜~½Ó¯œ¿ä"8‚¶«v_ô\+ +ä†Yo§”Ð8Úv8.ãšÃfÉð}¿ž—å¾*¦±rr™æxY® 2ýÊÉeþwÍQ¿¨WL£Šájò½rvív_õ̾1ÌšÂÊ©zUï«©Ý8Æz;¹æ¨\¸Ñö-Ϭ+寍&ÀÇ/Isoùe¹Mv¤šÃ®çxNmûMÍ5ç–ßW,5«—}‘ƒ=ç¼ôÊRÔHì$–½sÒ+ËRë )~°ä<Á’¢ù9çœ{öÛ)—q>jœó®qkŽf”%Ã*96£—}ò‹]s¼€mÛ »)ÇeŽ0€:|×@ÿ•_¨9ÞÛUåVÀ®7нÁÁŽž ÍñÆ7üá¸L‘Ðò\¿/7Õ`/&¡9ê™ =Òky†íú ™ÈÊÉq÷@¯):‰z¾Ýú¶cq\Ñ4G=ßî[§—iÜû5«Î†‡³q( 벟u¹ŒfVƒõg$‚µo Ò_ ‚uõóãYÁ:g~®S•‹,b&Už‹ž"Ö{vœŽÅ‰óô‘E¬n< Z×ÐECvH ›7…(´\4´*¦“ª9‹ç²—& ů#—ù£`y¨ +¢ ‚ +í§Y‚M@*PtFCfÁ»ã«G¤RêPH)TèL4™Q8Q¸Š%±œ¶›¨±ÃÖ ?žn¢z,oAY>4í.õ1E êƒÞŸé ±ê¸*­FJ74½Û¡õÂ;V}~.‹¤®²(/€sæ+„¤Ã/+( ‡µV³ËØþþÏKW6ê¡>å 0×õ)‰äuµiÄÉa±â ÇÊ'+žD>iœÂû Á‰D"‘á%¸„¾âŸÐW¡¯8Œ@ÄPœºJ°òÏk¨k§¬=E¬hR+¡I4©•„éBB°vÅG=ÎEO?Ðýr.3A D𜋞z—ýòî²]ö˹lµÐ"ã>£Nö´_ö´²§•øä²ïcæ‰ÂSnr_nr_Þ0¹/ÿ/Nëµ¥$¡à²‘Mþ…¦I­¤»|4ù›€cÒqÙEÀq¡/ÇäÂïÏä[^©•tXiø?f¹ì—[^K–¸ô —YžÃð —>±Xú䎄·š˜p@$B_qšÔ¶ìv\‚s«\–pLºÊaML:.«TÖĤm$]åV“NÀvœ(4h¡ŠÊ¸Ì–¼8mÆMî +ð…Â’Ü\¶n­¤£4H#ÔsY]“®Ì¯.BųºU!b& +ç€Z³Ð*]’ŽË2„/l¨ÂÇH—oU,‚#éÚAxšte ”a)Pó\éæÖ×3— -„b¬ ÖmK Cpg*yéªcp™Àf áXÁÖƒÇy¹§~šA:(N2¹/_ :‡—.íÇ\†¿(.kbÒ­¥btƽ!X;‡Kû[»`í«—Ñ)Á*3H6ê{Ìapû<‚!V<ÔJdO+éT{F;.{pÙœad>¡É¹޹ôI'†a8 +ðg/bÜáDáå£$º¡"ðÇq¡…£vàH:tÑH¹U"é2Ý÷=àÇÙtÑÕR[J +êÛú8õm}¨Ÿ碣—’–*þ:p$>ad"ßÙ´•Ò%éR{FŒƒŠÓ-á\¦X½E6„·°á2ULÓè F?TXcƒ€ÄÁV°°ìÚÁ[—¹¨Ðçâ +b‡RÀòÂá â,–@"ôBd.Z¡?:.+ªŽ)@<`Á‰[‚˜+PÈÏe¤ºmí5 ™_6Ĉ²¼aÀ «c@%Z¡ýy/K(é¿ ip"O¨ùÇ!í•p.º¿B²Â|/±Aê:6Š|œË2™ù\sD2ºFM—Æ–º$ÝÆQ™[LQJl•‰±y BŒMÔQ[\w[꜇£sÙb$:yõYý$r¿<¶/GTHÏÇuSá7”máÑ—`í¨"Ý´AŽŽH>ª-é,©kÌò›Z„y`E*@&èÙ€°ÈL*Í …DEƒ‚‚„ÎôÒæ2žþXíØ Þ¸Åj¾AZÞÖ8PÈÈa¶kÎ㈆Fcw»Vl¸ŒB~NïL ž€c¢˜Àuí8¨8¡¡!íô5qÙ¨“uŠk/°¨ù4 8½€…\vŠ|äVAmú! 1(¨˜Ö$èœZP—0ä2‰ÁQH˜ĵ¤#‰Ô"ûAŠù–´?Ï¥"Ñ= ¨å~Pq©LøÌ’öD³%B*G¨ Z|õn7«½ìÈ DüÈ%Ø©}–êÌD°¹ÌB€‘J‹NIŬ'ž! $$_¿FLnTL¯Ëà“åæÅeôÆöŒ4Ø.à$X׌ÕA XUH:PGsä âÚp™¢˜VI¦AðSƒ‚Q/ß”Àºæ²ö&¸=‘®¢ˆknBkrúŠ×®N qÁB‡`m,eE & â~ÃTò¹ÄeŽÐ—oK¨“@ËÃ’¡ÍÜù$%ÍK¹ bSc/ ‚ÂäáÒVy8£Ä¿ç½xÒr)ˆñð´\±MGS˜X…ËVÑÆÜ•²`‘á*)Ú2<`U®‘Ë +"é²_Nà¨pÆDƒä”0!Ó§ƒá\F÷ ·#Îoç*Þ ì(Ê(ŠüxoŒؘ¬ññ”Ôz1‡ˆ¡ Z~"iFvq”ÔJ@Õ€\ùâ2ôÃr‚Gò +¢yAY>ƒÏÄDX!tY‚Íe™gùˆÄºÖoa@"ÄnrsZ³ò;=¨8—­skTªå6ËìÇv»áÆj…?¨øÝT8dsc5—}% é^Øy= ]ËC:Èe+ê\ôöEŠÖak%]ŒÄ|¦ÝF‘naŒ=¨8iL¼ˆ;Åj†üøzÏŽŽË8 +ðÀB6DÊ9Q8ýRýí«têðã3«ô·ùæ2 4ù‡Š&÷uÌ™JO.6¢ÿH8 ‘•C¼tÅã6”të·ùt*A‚ð*¢`³¹,}M‚eÖóüib8.‰04ŸÆ‘ᘱ +Yñ{[8û·ós'éäeן¢à{FARäã´"ݘCd:ðãèé”RW9-Š +Œ<ÂeŽK‰v† +$¡ísÐbl¼A6¶ÐÄÓØ<®JlXÛm–Ä@·q™;ZGðYI‘è/ufpÒó0CIáïPA?ïŽDó‘^œhöîsÙ˜0ç%ÚËÏ\ðè'sBW©O@.”ìE$RÎqæ½8¨ÿ×pü²òŽ%:q”H4³š·P²\¦©ýŠ2TuBW¢\¿EVÞ>$v@õÈõª9‰”“˜Ô5%Axבt[‰ùžÅ%é¶Qiil©—ê¶K¹ËFˆ¯±u‰n;YÏØPrc{Ù¾®mÌMb¾§àf̦½ÂJWüvO 3S09LHǰpÕ“ù cká›ãkõq@¿g«\T&Ó­\CëW-,DIGžBI7±œ(†oƒjj=ƒRêk° +ÿĹà¤ÈÇaôVl± Vl\ªLŒm516ruRl/Õmdƒllƒcë:q\¸@ìÓ7ÆtØÁÄäï‘DóÒJªË¹â5çSº¡ð˜HÇeÛÛ €"Ý·&Ý búxrÅüç–RßÉ#/&泤'v“:ÛÙCÓ5¦*¨\6òÈÊ;«”úê,»R«›¨•´2\ì€:Ópý*ÈÊRê³=°ìfuSàˆ¬Â‰o¼D'ΠëCP%&êæ 9¡^*Z=E¡„öçqí %]‚ù¸ÏðÆ¦Ž2ŒÍãˆu›·:)¶Üblå€F±A\’në ¾Æ¡|ÅÖ;‘Î;  Ïtï…NçôH`´)ðþ«dPý*bÐù cÍê\û|™^ap!³dˆÍØl‰tâ)”t*þEãÌž—8 ’ŸDÿRJLÏAÅ%§Ít©¡¤SIGdº¨Ð¤O¡¤ã2†öªæÔ«†d¥’zÎOshÙ=Àûé½r>ÎÛv1µ yxjÆÜò̪^Ô N½5§ yÚgÅâŒÚ\¿—ù޼Ÿ6Äzm7åiÝ.mbɰ€9óÆpKD»²ç}¹š6ä¹oyfÛg^ÉÔlyYn»nŒ¢a—=¿vý +xë8žSj>`Éní¡æƒ8v;lÏ2¬Í²Vz8ë©Á·|Šm€7¦á8õ|6š‡³¢ŸIÇnÈT¿!Vå$`U;µ[†ñ«š_*šöâÛŽo›¦ãÛ®iÚ«iº‹/Ë}Á^M—cË«iº¦ip­jPšê•áÕ«&¼š¦Q^5 àÕ4m»j>à¨ùÀ«ãŸé:v¥ÜUÇ·üÂ5ê¹EÃñŠöTuŠUϬúÝÓr*e{ª:u{ª:ÕàÑn\¿fOU§Ü6¿á5¼2¯^U ¿,—®QœÇw=¯j:Vy·¼BÅlï–Wñ+à=›†Q.ë•oyN¥zìÙtýªÜ–íÙôýÚžMÓ=@íѰzH1«ç\°¼í¤›è„‰.'eZ;ð@õ8y.ó#Å©3yLlò³GI:o ”tž9` +E¡¤ YÞä*VoPŠ©Þƒb5ܤT_P½(”t^„¢z†È¥Š)üI$ò%ÒæPx.K¨ +ÆS‚$býu»ðuž}ŸP²J !þ0 %cå<±÷Q9D…g|BI÷]žÌ×±¤÷Ò@jCIu.J:ŸŠ)O ”Fuœª{M(é •iÉ ¢õCe§.îÏ ÁPÑ +úùà@Œ“ºæPŸÔkê‹£,TŸ$>™¯ó9LCwOŠæ€þ™5ÀýŽ,,¼ëÒÂÀÌ+qÊ0ÖÄ䎜2ÝǹŒË¸¬09ˆb㲑x~šÒÒØ,q€[Zý³uðIO½· DÛRVçã2Ô5@õÔYqV_#ñB¦'Zw—)H‘”õŒÈåml,s™xÐbˆ^ªÛ,Ž˜—ð‘‚|.:2A±ý/±Æt”½-<$¼Œi5—àýlƒ£ôsŠÕ*—qY¦%ù°3ð0ÅCüŒ\vp;C•Z'§☚§ù@ö ÈùtµŽ)ƒ þ#Pá3âá2.‰0¤ã2.óÄר +n#ñ11¶‚Ë jý1ÃÚ;…WRæ ´N¢å0W{€ûvŒ•ù4ŠêK0ØaäRgt.ã2Uº¢ úЇÞÉè~9—uP/ç2.S«É>p¤µ‚ ŠÔ5—qg%RÎ i)H½†â‹WA½ÂD°è‘ý„YNmWT­þ*e¾®UC3âbÚcþ|u†…s!¾pLÚäܾŒa.K±ŽÆcuXoƒŸoÞF/9óŒ­ô~Ý6¡£ o(Jœ&ó@d³ÙŽ`ín|²‹ØebOqPqX(”  ÏI°èL8›Q†±y%CBÃzƆz©N¼Ù~á +û€ýšTå˜B‰û«ó-lÞê©ûÓeá ÄňK¤O°P(éh:6à2;Æý—}‰» ™d—©Œ—qÙ_• õÉcƒ*¨×ýY™7; "sh¿ÙAY8—º×† u<ÕÔ"x˜ SÊs—!FW×=.3¥NîŠRÓï(Ї•*sqÙÒ¹,ä}qÚ£®e”alª66.“ü³±yXÏØ .I·mhc3€hĶiíAè6—ê¶‚ƒcC$ºÍ¢216Œ»ÍL t›ñ56ßQ/´â +zãâ /õ<—­ÏŸÈzò ê2·–ÁóeN‡C|¿ÝêÓE#à´ß´â/ —uŸ"0H?§IM¿ƒË`«Ã4`]©¡úŽËJŽ / TC$¡pÙ) U¶ÀälPYå Òº0$šµØlÄè©2Â…¦)]UÉLâ²É&¥úÂ@¤®I5e6a#DȬ,œš¿¢ÕRÖ[H9/“û31T´bZ7¦BîÂeš‚æ„¢‘rš¢H9Ë §À1²&umpZÝóù'ßfèΧQ„@¦ÝÀgPÀç}Tßø|ùºœ6f~5)”|&öãiÁÌm-‚j`õ®»b:ØØÚbžÓU—ïöÕÏ銴­J ..Ù1‰Æöu}wÀÃ*Úc•µáWE=¿fv˜CY  +¿«Ãì`‘Ë&öãWŠûˆï\tòÐ?NMƒXGÇsÑk™k}°Ðc'“ˆyN‹Xª¨‰ƒÇç$u!óôÁdÓµžÜÕ¼?“ÿ˜M‚µÔ·õ5 I—(œ(܃[I‹¶?“Ëx)¤œ£PÜJdÌÀÃÀaP¯Œ¹–©(sBæÌ8-a7QY@ê49Í85$T´zî¡i|„¦ç‘Êœ‰²å0·…3¹ŒóJÜ'XæÌ—­'?OHÏÛ÷š‘B‰ùÞc&°ëï`]9¡ñEºJDÚ5g…Ò›ËJ·#VW³]‹§] $2'~è,N¼%#B¼c´|½ ,7×’åŸÖ¬ÜÑ€@:’ãn+cXAøR­“Ë@†ÅWFEhj8æxzB«|¦T×ïWÃó¡#×Ë)Ãón>nC+ u½™X.[a’G×;”†°’V¬nh6-×Ì…–³¢Ë%ÎrL=ºxƒú-Ó,6ŽcRתÌ%2]Ù…R˜Å£eàÜ7¿3Ë6ïkDÂÃÕ·9ÐÑ«GÇymBÒ¢KM¦„¢5…b™¯Ű@˳ºÐÝ‚Q4eéy/-ÍÉe²0*×h‚apTÇs™ZRó#‘»ÈAÅã+b±¼‡á[>Wiø6ªr«DwW¸»ÀÖÌ.ð\Vñ•ƒ…•@E`­dÎx[ò™F¨_Pìíúˆ}ę܉mbŒP“Ü­*ô´ª6+\…V•@E¶Ò·ªQákÒ%é``eÀ|Õ5¤:¤AøÉЍ˜<ùPL:ÇÈ ð•Qo;—=Š—€ÊRÖó3Ê— ˆN>Ttœ‚’ :ž‡¦åÀqáuyÈôù°h;7ž:ciuC/Oybt ¨MÅè‡/=Ó)²ÂÅëqÀŸ\V#:©žnRTWÝù(®ÑûÀëuŽ ¹ f•Ë+ÅLÖÃïNÄãÂK‡ëë Fç²(qᤴâ—Ê÷\†A˜ý¤S&ÿ#êÉO¼üµè¯ÝìõäÉ.´ð‘á'Àw&ŸËzÉeáßCÒñL=‡&Hõ`&¦%z>.c”!yŸ¾( +?[N“ïX7œ;Y~õü5hÏ¢ˆ[«ãðXjÔýº€‡fŒX{¿x/dF*‰¶ß$„Ñ'£Æ½ªíÃÆe4—2:z—Œ®r™šºÕƒ.K©…? dqø¨‹Auð“Îb¡zéÕ–’ÛdLÞs ›U\¾e}¾kŽ\Ȇ +itD—ö„¹;•¤N}[_·8 nOc$JÉe™P}0H#Ô?•Nš ¨ ÄbõœÓÒkUjÃ;)Âù)#‰æã2L£’êu¢áÏɶ8üÑèËt’ ÖQ|mZ`‡Ã,¬kÛM„Gédá¨=ÀýÃÓ|"Ñþ‚§R=%,©ÄNœŠš™D¿i€Yñÿ:ˆT‰O)QH€’1üß¹è µÄx76Zxxð“N@ôWo)ØÆvøR±ŠÛáOT Õ?H.ûVÊzø4å¼.ë‘Ò¹LRºE®Ð€¸bàŸÍ‚ø£Q†±1¸*±)º™ƒ¾,!‚òÕ·õ‰ Ðäû–àöEA+éºÂç2ƒ|€™5çÂ1g†§ùnMÓ6`t›B°øXKÒ:7+øðUÃáhxm§IWÀûÂTæO1öc¸hƒÎÇ98Z6©Y.Vß!x½N.ã>­H]¿‹úðU÷ÀtþÈHŠ <:À%.\‚áÀß#¡vØÍàvÑꔂP/omC£¥´íg‰;DEx—†ŸŠ2gô%”t—ýrR'¡â!Ư&÷å=<}æ|ZÈâü¡÷“î’"Ño)Eç]„7;$øc!ëásÙ€—à*†êàm[¸YiáïBù‡AY¸)ù8‚&_EtTߥ$ÄÁ˜¸ÀB®Qƒ=y¢ðÄI°vÊO8V|ÑQBIw¡=šP}”oƒMÊèßbtKdâjFRbxÄ ±bÔ‚ˆ¡dM•ɇ=IêšímCd´·‡\æXÔ‡2x¸8W»›@Nþ@E]æ‰8u>Óe¡úc”¸ð6,uÎĉþ‚‰t\vOJóà:̼Ê'gzhÎÍ`r˜wKÒ: â¨ù(UëdpÕa–ŽÍ€ï "]¤³pHÀPáQлù8—!DŤôƪ•tæ&-!¼i %OxÖN1<.œË^i Û@“/: üÉsEÅJxÉC1éÌëåkÉqáãƒ@5`µ½ÌP +êI‡Râþ8]ýWºâÓÕuFˆv…Ž - J(é: +B_ñó²ðœËÚù$‚¹'C•¨ð¨…Ë~9 ?Îð$ÇCŠŒZŒ ã’t—ü³±™JK¶½<ž‹Ž² ü@IabJé¢{“ûòp´ý&¥ú^عF.’?7ÈxUãÉeQA?7î|1”lušÀ9ÿcbô DPñ!Œ‰tâ)ÄÔ¥ªHÛ×#»‚_1ú«7l7ûÓEá5q!sÊ1:ómBVÅÓOÅ™ot +|äÐ@T{F?Å%”„”Óù)/ŠÉP¬.&ŒHéŸRKêX¨nÁ0à¯?ÎE?A˜¶'Dm'ÖR´ŒC¬ø†Xñu\µ¾Ã¤ é”D?/Áy½Ñ ˆNþQp:|Ê)<™9m,Ÿ]!çg\4¡É_/¢ó‡Qá CsòŸcÅY®âþøPLºˆŠn»{Ж’F‡atµãzùü_þÿâð#\hᇚM€’K0„_XL¯‚å ¾/"øðÇH‚Ñ ü ¼Åð¸pPù:Gøq¯’!/¤=J(éVçe¡I­Äx¤»Si %;òX +R†„BR`ŽƒønBŒ/a®Ô“"§; »G‚é+þaQ8Q8í)m1ÕE†€‰`±½Ç¡OhÂ+ÊËéqÎ| ÂÈl/‹“ÿ¨ÌìH”sô!ðgHÇs5š¿œ€iauüÉe-ª9ùyNu]b¶® +A¼‰ %Ô‡oƒ–›R4"åð êuÀ1ù°pGR×éˈ„·ÍƒŠsÿyÏ7|ç(©»4)ßý㲯ñ}' +ÿN”Å—^Z‚ÍeÑwþ1N¾™¸Œ…Ë ƒ¡`t +ÿ¼F·8mnAÐ1 %Z×ë7o#.£|=æ]›ño3,õx2P ¤¨_—ºÑ¦{xlâRgN(¼JxQ #Å¡dƒÛ¶ÅZàöq"sAx7ÏlRDáD¹Mßdx¡ê?Ï í •àö^z~ãA°Æm(IÀ'g4¢|!áåìÜN$Â'• ¿N i·Â …² gJ˜Ãƒi{ïé­…Kì‰Â/: £Zˆ™:ù EÃèÑ©íóÈ óyT£î·©Ê1ÙUê0Óš£î2ž,^˜\fÆ>ôc^¬„O`Z ׬ëv~H ”êçXù8v=|t]O>E¼TOTJ&ÿ XûeáRCõ\†¨MÈ_ý_K•ÉW>‚æ4 œª?œ®ÃGÑõð3¥Q÷¹lKl翜æãV(Ç,µþü'uóTï??é$nzá§Y¶¤:&Þ¸xaT©¾2Àð'!UÐÏÊË|ˆ™±xÈtËš Š€æüŒËç„ÌFi=y.{m ž/AŠæ£Â±ðÒãXø§0iôW²ð¹kon°/1Õ?>¦ºH>L:sj»½-\ÜþXZ]V±ý¢A]æÌ=_ÇVù“CY\ø‡8Pøvø¡Ÿˆ2.~#J&ŸJ&OilçOA­æS€ÈV‡Œn oo«Û™ƒÂƒP¤C©á*î—Ť›,þá›^¯õéÜhÃþšE£º¦0àϺuA“R™3_…ÓôΖ\£sÙÁü'_Â\†? (Ñ¿(HDA&cȬxĨžà +øôŒÞŠï¨>7¡ 3afûòœ3ŸÀ¨Å1eÊ[ñøÂ1do-¼û$«O¢ßâbP<ø‰{»V“e0:—i$ÌT'¢ÃÇ|“ŽÌ™oDD½ÀçG1 /{káÞ9«_BYøItòhǸìÿœ ôËà*óubìù5vÇŸ³áÔû£3,üNL4•Ì\(ò·Ã>sa “`¼ÀÌ ßÎù¦æ3D¾V‡u”Ì)é°P݃ˆÝ÷>3Qx÷¡”>>0‡žé ûÓmPŸ”¨â9’ÒxÂF ß–uçã2Äo9Ìm|™<—‰ E'½ðû``Ã= ÉáÓ…̹pç;ˆjT¿\½·å_=×G…7,.°µpïð@%úÛÍèããDáë +9üJý‡_Ù¼TÏÜ3ãÖÉe…²3ž¶Šà˜—Å©óØC«7î|†÷Ûú¼Í þD¢“‡<­8ùÃeqá!—íþë[Qý5bu>˜ªGJ‰·m…§ÏªÞá1él«ùÐõðV—¤‚ǘ[Œ”Îe!9ž¶¡ÄýÄê|šÙê™Xtò˜ Ó5#ÓŸ}…éÀ$úÅXŸxH‘d€²ðôÅJøÿùI7Al'ozµ¥„ éŠ=2çÂÁO‡é²pƒê:Œ3ŸOtð™"LŒÎxEºÈØžË$½µpBm¢pï<¥PÛ¿äDájYRx.³0^¬‹/D Ïi¿+މ6£»Ô24¹¬U—yð`Œþ m‹ǽ‰Ì|ª +]ôSgBé\&¡à²®‡Ozoðq»¿GJ…blV Ûù[©Aç;8*©nqM¶w¨w Ûr™‰íé:1ý¬fÅ Òæä9Ûf?gõÎe*¸Ê|š‰þ‹`ñÛ™OÛ EuÃÈây0Ñ,*&Ø$.«|þÛ31ú…Ñ™õÆÅg/•9cƒ‰êcˆíü1wÉ|…€?&×è\æbZÈ?|.Û$‘®"ŸÃIL«·@™ïrú„æðçDEQ= UÈœ„Æô5Rà2®6 ŒÚRò²¤ŽÖÂÕŽcŽäDá‘cÅ-öŒzÇfÞ¬ô ‹çUˆJõDkáöÈ á¹L^±2ß—à0“¢9¿ 2 z‚¿Æú1ðòúædNˆðz;2g¾Crøë"³â›Êf;JQý¶)ª§Áƒr >ÿ櫸ïm‹ó8Ðq@£&ÿð íˆí|þu“`t.ƒ1¬Î‡ˆ±çÏH ¯¿½ØŸ4‹ê:bE`òrjÞ°Òäü’—!ÕêÛú4¢“ÿ(ÂÃ÷.&Ìœ]ºóõ"dÖ7Aª«¢èüÛ‡€ûÇ ÓYOº‰ûã‹Â‰Â=èd= ŸoÚóbQ?Ó@éšPÒ… «íšPÒmXL€ÚÎe#ÆÛ`æ´™€ +G‹Ò¡ÉW®S™Ö¨¤óõÉ\•’)„DfD0£ J†ãÙ¸ÇHD*FLJ2& “Šc¡@, …±† Qt1æÌÀËw»¥uñÚU,÷›/NE«ûòÓîuCYò7¾¿| ™0Åœì{qv竾ŸšÒùj׺…ÂjòeR§Ÿú?ÝÜΜù¨¸JÎWóÃút<îE`¾ŠDkJ}a`ª†¬Úf^Ç6GñÊοZ1[{êÒ³€†ñJ0 ¥ÌÂË¥)ï¥ ÐóŸkù½0V%òŒ"o Zµ9qÒú+=óÊM³ä h*G¥§e”Ö̃BbÜÆS͘/Îôâ‚¡>`›Ym–k £õ]Ä«E×z Y¯Öø ¼gäÕx—Ô£”Ÿn™ûMƒyþ’/ëê›O@ï4mtËù·=¹ivA Úì³J<Ö²£–™s­Ï N¼ï +r¿½ê½c»Íj0:ì€ï.Ií$óÂ;Ä«LÆ¿Á“€ç_³ý2(ºä1ïÝãEšˆ’_ù,ð±S 9ðFªÙth/ïhèGV‰óÕæSÕØ]f•^cè7³Æ­ª +¨šFC±_3+Äúgu¾e½²ð.ØZö:¥Û0'¼UÁ‹BùæagõéVuQÀÐÝgº'ì²pÙBJêï70~?8H…˜áX;C6~&ìyìÁÓVq°_tP@Ѧ?›Uà1xªyVÕ‚'w¯±ª’±*¯½u÷Ÿ‘÷Ÿš¦ª"úg•Ínæ´¥ªêGãT »Ü­]õêJò™ +Û:¯†øAr¡k¬Yqk66~„ÖU2!WŠ€¼ÕÞÞ”f)aK^«*‹­óÇ _õ¬ñ¾;ëÄbÞP†¿Â@ÇüÆ é»,Òr«fC ëËñ#j¡ý姆 €¨“ÝI•†–\Ví‘Ô"ãÜ„€Òs‚º4LµÄ®«Ebe K.³.³e‰Dk”ZÓõŸ_W¦Sí[h;.«ã&dï: ó¢iþZ‰Ù”© ¦e; %NÈÙµ9¶£ëJ3b ;µð0Áhßýc¥”pqþŽ½ÜšGPÂçegލ˜³NjK´{=)Àä +àÊ(ÑjæáBª„æñ¯U£ÌŠæÍu°¬<4Ô§2V_ íΕ•c–‹Êúy8µë±æÔ•Œ—ô¦š}ß—ö'îgš–¦}V¾¹mË^¡MÁmò;pIûÑÉ8rÔYóã•Öx2Èæ8ˆRx©W"ëÁÔ¤ak½F¹Au“&Xø-ŽHZcB½VYÆ.à|冓8í¤1¦ÇFTãŒEqÖ5ôÁXWž_á¬U ,ûÊšú«jÇ)H¥[¯Íý"p7ïT™<:è{Øs–¡¯&¨^=ˆNÙ C§£žÿTLK>„a›ŽKyiÌ0p§=x\¨ SMGÕî€Ù8y°LϤºë—ܪœ?è{[ØVíÏ5(èpŸuYÂ"í–eÉLÀx˵¸Lýàï uÀúÆC¶G< 8Dp9é ËN.ױŚïiã>Ñ–L¸;ž®¡÷BBXà+þ΋m¶^;óà…ÓhúšÞ/HŒ¸µ»§Êþ@ÀúÉW +8öwÓoÉ›CIœé“ŒËµD9B'U¤cLPj­h¯Ë³p¿ÑÀÂÎ,5ë¸Àé ƒ=DŽ Ñ×äòFbœFÈ‘©H‚-ÖÚeÑ&•gŸÆ¥q ìógÉž;8™ñÃâ•+þ +yIZý$«Ì¤5ìj +°W©˜¨sIbDO|ˆÿlÑ7TÛÝ4}öîR¨÷¢;–8ÿCÕÖ5™†zO0i:+úÍ‚ß}!®§k…ŽéMÙCõ1|ïµ?›î¹´ŠñBNë¢ã4nž,ËO$¥cà…¦)öMÍ›ìûÌ[d™™Üfü1ö w¨_ý$‡å&Åàg”1^.×|í>“ž&ƒâ´,‘ìÿR2úM÷‚ïç¨ðùQ/Q" ”)΢ΠR±)¤aNÒÊ¥ÕzóÆ4¤¥'·èˆHñ]_ðnt³uºçzwÀ=Ö‹ÈyP^gÓµ©ìT‘¥¶®ê¯,ا†’+¡t·n2”ZBJ*oÌ×.Ф?Ò*6„°Ìéœ.î7r’PX;îÎ×»\¦%W_EK²ž w¼ÑZ-pÌ wOa0`iŸÏ»S ðî’ëx<".çPz‘ £YJ=(—oú…NŠCä'a}z=>iÜOŠ +‘¥IŒÈÑ`u @v“œéT/_I1 D]áNù‰í`ø©1äùN/I-4ý1l=·ºVvï`˜ ^”+ée­rµÔ?ðš »•»2‡Ýë ‚nô¨úˆ"¹Çw•ƒ…|h +³3v$2p(o\­ñ¶…ºJ~”ÄÚ3\ªžù"ÍÃEí‚μ$&€[Œ4f¹J–鵆œ}VäÂ˼a5ø t†Ö±‹¿PÅT>4…™U ®ƒ­ç?Íg$±Lî>ŒÞ*͜Гè&;¥!„QfŽúŒ¥`Èý-•xx,"'üóF¾RJÂxC£17”r… 0³RD8ñ>Ë‹FZäzš¹÷7@)AýDKÕê‰}׊µ½ÒJV¯&Vo!V¢A©¡ W^†6&Fš(gÁnŸ™² D5`ù†-0ÀFˆ›r9~"Œ$O[v•®hJŒˆÑ ·pQ)‚þ._Uo™ªbg@‘®Š;]¦2{!0ømíßULEG§ç‰£²:n.ÌeÁÆ[ +Þ]*D=;ô–ÎpY%UmCDD} 7£2 fé1péM¨N; ó[w¢Â)Dè& )ý“㙕j5#«¹Œ‡ˆK…Ñp½I˜çGQJD¬e‚¢C¡v*ôPÃC _rÜQLt[Ý/©H2O áˉ»„…™Î˜Qþœ× *cN;Ž×µKDß4Í#àõ‘þ<€Ž‰¾b´¶aõD.ÃÝ%[i@ÁµûÆ‹©¢èü³o{ÞdxeÝî³;¸Ó“ÍID„y Ô'y _wmÛøbb#ØôÆác—_˜K¬«Zâ«§­Ï8Ûp½iÀÐ?+ýÉy[?ÃæÖä1Ø~àƒ0-ü:‘0 +ʃÿFÃ[•¶O¾2®;Ë’*݇ûÝ<¹¹!F¯)=3Ø‹ò¬fPU‚J.%óRV>Zò• \ú2ÃîQîê‰NoR¥šÐÑ;Ívªr@Û6rñÕ˜Ad]Õzk0Dÿ¼œDˆÉk™þUº¦Œ9Ô!ºmF]:LˆLó=ñâ°iµýèUj`w_ØO¿ì†ÚêÇ©ÒYÏ 0óE³„=åʃïÛüU)½•›¼c£¬ÚZ%a”Oa½oÏÖç‰ïž’ŽCø¹ÛˆúïVh¹{Îà;!õ‰Þ8[G‘\b}4ÂAÿú4öd‰ëŽ{šÐ|"ÅÊ; u%¸&.£‹HÖ]’¯‹ +µhmž€\PuôóŸFyœyBÔg’&¾KSœd "Ͷ:¹¤)Í|´Æ;é6èÕÅp<RÓ$g`à €BŒ=’œÒþ•Õ·¤°Méð˜Ìðdm¾ö)5+Çé+¨‚Í>ß ÃØ)N7Žu—n*Õ|J|?1ð¸öæ( Îr:­~ÉÇખˆ°™·xbH­Ä©ŒjO‹¹¤X\ô#݃éÃ媶§Ðýepè·©ÖÖë’iÖ¡äöO @'5Ë H²¸[¶ª{ö¦ ³ŒX +p¹0¿PµÍföÈè~­vì¼¾…<+»Nž1ÀæõªÎ(vêUL j'08ë?D€Xí½±=ˆʰg<‹^‘z[8G ¬xEÊšˆ{ÞÒ¢w´Š¾P "þóÍ;";¯Ë¦æøž_%€ßþ2瘿þ«sÁà.!oÔ •V<%8…ØGœmã[kLgqš±.׺ËÀ¥&‚@Ÿi8.«3b\æAÈ‚‡=JÍZD·«ÖD{²_›–Fô,®sÑþ«áÁ¥‹“­”¾Vð%f­ƒ0joµ¶¶€åÙLèïLâ¿ñ.sõÍÊ.×.k=sŒ…ºT¢<ކWÒl/‡ öô±hÂþŒÓZ‹Žjî…„rÁ…øCfc9ú¦ñÍŠDìêÑlü%ɽxTƒ©JØö£úvЭn'=qv +2õ!:°-õ?§8ü¾¾Œ@(ÍumÊt …F_ {y1ménÆõzÔŠ&ÛCàÀ2™hæì~4H2‡D“»^"™äæ‘öÏä6Àgç•Äm¹YF6¥9¥pˆèLª‹©;ÂÜ)JÜs[ËÆÄ…Ü)‚1ª ­²/bÿ½åv¾Ïð-«’ËX˜mˆÖ‰jÍÇ›ÔÑ6mÆ~-řθ…zí¾Oò2Ç&}±Ë÷DJ#T16v‡ ¹)DÉÁã¸/=wÖÐúM“Þ퓆õÜ£#,BžK…ì¾áε×øElóÀ¯GýCņ[uMH…ç¶Eb´‘ìëj£˜Ï[´0¨a€oÿeŽuï~¤îb3`ût¡Z]·­ïfYç§æsÄMØP‹Í­ÿCRx…hF@ʲ8ì)j@ÅÑÚÓ+I°ð;d“1¤13ÈwùüVD¤Ùê™kˆ¬÷‚Ť8Á³"3Œ–+)”µï%4+ „(µÛ‘Ó@`¦šÞç@CÃB@yYlwÇZ7p”@ÖW» Ü¹}Nƒm·¡K9¼ùvw5\ ðÞ˜C“¿»·ýÃnš’Háj}Zfð6é¨×ŸÚÅÒ’Kbs#s¸[.Ð22˜1Lh¼‚®gÒm„w&$\v` pŠ‹ìÜ?*ãnå àP'Öݽ@4'N³;å~-®ô3H¡»Ûoª'Tw?a÷’ìîxqÝ‘Á|ßì¾à-`+.åÎn¼°´Ð‡ÏW t÷ ÞÅe‰¾Òδ 'ë¾Ê³©‹D‘Ô§¹Ðöj ¬‘é~nÓç{l&:mÃ3:²ošrMÍ×äÁìPôJAO†>^yçöÀþ´Åó"ò©í³ +Jµw·N•y»àøU¢¦‹õÄÁ¸:BK°¸ $ÖvÐ@öj·ðÐ' ¶sç6L—ªùŒ¶M·«… ½o†x¯í;VnФRæ{ªÙ™öÅ¥Œ ²?|zLÛ+&lrÊ:“Z Ùy¬Ž –⓸e{<b~}ýˆOÍ®Ší‰=ðÉPbön߈¡4ń앙–á{`W 14R!`C,/0@á ×L¤ÅL:(k¹‰'»?Âæ„íû+o#˜`g •%T„-› Ï1uh/Ž{ÛÄÒ™»‰pÌ’þEÛ±-F[Ê_ Û“xö:2EÛN-±×°kºŽ¡m9¶<äÌÖÞlO>5O,3Ïi>&õš¨y’Ãra1ËV÷dòîŸü9ߌýÒ·ôŵÃ4â ­ÉÊàˆ‹aòmœä3 ü¨sé!Ãßµõ‹TzYñÕa.²"àÌžo\ŽÁ€ƒ :h7qįd't° ÝÚ\¨ñ€”Î×Þôwä‚ 0†’lgN¦ODoÈÀÇ^¾ô\t}¯{I¦¥ßJU³Cú±ìÈõªYbñV \ ò™‰½Å¬l§˜‘õm’¸`ˆ$¯%µÆ·ykj)S!+ò×îöËè'#?4Ð_†ƒ[ZõؼÍë§ò#U64lqs ÑÁ§ÂòßÄÝ]v E0i ìÑböJ~RäâæÃ¶F…ú!û/¶ÿÆ÷ +—ÛˆRúõZ§ÈX¡}:@K£¸´à¨{ú¥(µÛNýè·wÖDo?ÊûÏÈßàŠ38_އº³åN §´±åÝrüÄ)v?˦¨Ã‚íØï©ü‚ìŠÃ¢á^ûLÝÚ†lì¨ëfï òF€uy]sÀbÈ ÝµÛ€Þ@$ ôæð1V†b3ƒñd>¢±Ë ÊÐÏШý^Rä@°aÊ3Ð\¶•¾Á~?ªágߨè^)5ÐÈALM:Qq†´Ž$^m<–›K±"z®rÖƒåt•ÂØÚê†Dû]²ôÁþЇßl +"ßã&‘TŽ8¥ìhêz7&Y’ƒ“À¹ÝEm"ž}——ÎÄé›~Ò&¯§jdªdE›ÿ”}€^ÆJ)Wð'†ù’)¥»;ÊŸ +Ñ\µ ³›¤]É!wñî„[ÍYãdB— ÉmkZ§²÷Y´íޝSs^Sˆüêã… —ì+•´£{îø”'“V¶BÞêÆ‘þ—Àn¯ºhÖn. }‚­¬ZÏSƒ¯ºÝóÏ{3ðjúKKtõÐSUûÀ +Z®—놷g/€ê.ÞÏ>*,-K~+–Žs¿Wž5p©°×|µMÜÞjϪ*¿Þ.ryXÀ:’”†2ök:ƒRO€Xé<$)JCÿÀ!G9[ÔÉJþ•úŸ^vÛ&Ÿ¾+Ϣ؜Ã^à+¤åÄæ {…ݲÈÕƒi¯)Ö'=|¦™ŒÅ¬^í´€ðfvجÃrØQM&æùJc›×ödè¶vªÿ⚃‹ã§5Am<­ÈA‰iZ9r|x2æÜ5í¶ «‹×°uIŒ¥ÜK‹É„äI¶\pÿ\H6zU¸Õ_s·B£ð´@²½çíð1¿¡ù‚ÿÄ…ƒ UÙ«X÷­½ƒD»?ŠðŽ^"¦ÜÁµ´ê¶üÝnyè +,õa”­Ë 61-ò'UR#ý…wEÕñ†gƒÖ†Ýcöí‘#E^é380é‡Ð„ßΛ˫8O$«NÌA ÁDš½”ÊÆ´|á›±ŸçqúcCcwÅN?O‹C%“›X·” +u/KëÉÏÐMVÅAv<# ,Ѓ;~ûŠ .3sg JN+L†¤Â õ%°¹6Þ ÁÜ ÌØ^ÁSóyD䘋ÈÖ(°ø˜_ãoWœ'lf¨&“n9OÒÌw+Fo¾÷ññ2¾þdÝËúÁ˜þWÕxrH½â.Õ¯–é÷¤i³#©k<)IqÛÌï3gÑpÖÄà—_AÙYÇäugXoãI½?ο>žÐ‡ù¥“± 'Jœ¨ºÿX/“ÆÓÍ2Xƒ²»"UC‚¨¢÷Ë{<­vÂʵO"JHšBh{ìI4žÊë%ɽ (É&M|É)¯û¸2‚ +´†èÈÆ¤ø¹ß¸_óÕ÷{/trχ2{<â´<¾ޱ[\†¼°!Q¦µÖo_ønŠ%Dž˜„Çó6K•Öd"$†Ÿf~5#ÁSyX'=&YUâ÷-þ ðÜC%ŒãI®ñ+dQÎl5¼-¢¨yÃ:&ç%ŧ»s1þkò2c⻆í#‡Nг®æ¼µd—KÇDÂ>·Œµ†| ¦ˆ2Õ;ç±Q8C]•­oÝÏŸd7/TvùPÉ”§®>”ž0¥ ­JdK§.Ì|Žgõ2úÕJ‚Ç ä/†Ÿ2. 0ÄO)„À©+w%¨TWGo~›a¾V¶£Î¿Hרé&C¢ö¹ÔƳ:×KDÖÃpÛEÄŽÓT,_50O )ï;ª‹7f³eŽU¸GŽ7pœ:Ad,¸ËÄ1—.ôî…ÐÁ–?ÊðÌ輦_7v&”2Ty,dfãwèw:*tŒ±+í+.U; ýuÅ1%²Ã†íŠÜÀ îMõJ¾“éå׿åËl°þטýkß7|4#lüÛ²¸}剸÷U<¦¡YZÈô;ø¡.ËyUGî1øw€„RµþýÍ)Ãl,¹ V¬‚d—Ûk§âå&3­ñ0½#>4[|ˆN˜ÍRdXúwmL!c@§ø¬ª¥9zþÕ+?)¶¬J+«w‹fYƒu·t +ªÉsl¹µo üÛbÔ" ¢Âï,i«‘´8ƒçfÝÆíûù: É«S" \©Ø9'€ä·ÕÄÒV aÌ6ÖPVs¥‹t»Êm…œ×¡ ?Wy}ñ‚Ûq£Ô–+è,Ò2­)òuªú–JmDIU–s¬7hÔqÆ;x±tм¢N? ˆJ +š2mÔï”Ä£¤ÝD:‚Ö_¸óhu:Aù¢ŒL±Wa¼çÅwбÿè ë(¬bxµtDQ?ê@@pfÒ]G=mDÈ’L8&¼‚r΂Yóú„ *lÙrk³¿Ïš|1y¢ƒ"áÔ«f†[ÄÐ"Ñxáön)‰ cP›XUþ¦D`jÏäêäRŽ jZòAÚÙ¢^¦)¶šhqöáÂÈŽÞcQ‘²D^A¨ˆ±oR£‚Èâì²­pbò¹‹Së“Áƒç¦ð†¼v/J•AQêœâtGè1P7`”… 5‘ÑÊ& Êæwþxk=Ÿ§à/f`*øbÞs½ã„m9$PCäMÝH½wÛ­±^ŽÕ"ÑÁòˆ—çk¨wCUnK½îß3C½]*õîC °…¸tBjn9—z¡`ú¨œ‡zé¯l/y¨×N•°·;Hêià0)87L«yYK½®N .ÄÕ1·SWµuÜÛµ—Åk,ÏT1$Ë9®8QˆÞŒZÖ&G:·‚ÍOvÌn h…¡u tl'2vU¬eÒþ +F¶JF+(§ÐWû’¶VOZ Fâ"­ÀšIÓüˆpîçѱPÌ\&6”†r¢Jë*º;"vCåÓ›ƒÝ%H\'wg!ù;¢~Š»’õÀÕÅ>Šõ'»›´âÏ#T…ž<qÈŠyŸÿ-³É *~WbLYø’Ä]­bå{N¢ãQfÂ;Zæ^;*BƒÇ +<ÅÈ,ïUNðª‰VÌáÁWêö”Rœ5¹œ¯é>àqr`ó.R@Î(ß'‰!–ÌÞg4Ê~Õ"¾zG] ÇZñÎ̺E8ऑ+µFâ^®ßBfWo {KÁ/ž‰3²qÕëû¨³yõîŠH‡WBÖýºzwË$3U½ *õ*gX›*YU‚Dw€'›%Ìš’‘BXaÖý¬б¨N´_@=;Â/ªÞQèï±'S ÞxH€¾ñ¬ÄÇ~¯[¦¤¼×µÎhÛmÀnÙWC )¼Ê’®6)Ú¦õŒVBˆS±Üd{…÷¥À« 9_%²! ŠNö%½‡]¼è Ò ~÷÷ÙU4fåõ&Ý'8@ó¡m ˆ|Em]R¢€š÷ÂóeäáË÷zËXìï‚¿1BبÖ ›?Âaš[¨kðý·”ÑåIó5^¾SPY\¤¤f™$H…pû³íªYò±ºdl@?ó/2¸ö’&Û(¬ÙÌ™(m(”fPÑ^82¥­ÈÇ/Ë‘w›ôî²…^r‡€!væ´¡Zv°v’exâd¨´„!!â:܇RŸ@ùñnµò —¼ñ ì÷R9-ðw‰wΊ*Xæ¿www4å½%³ÕÃ9¿»µƒ_Û{ôwJZl‘´8RãзT KsŠâ]§b»ñÛ€w7šþÇÙiE¼»{¿KÛ Id+ ¢t½» e8p3ñîuá]AôLftV¼»bWmgF,Þ]X9p^'s"à±P\ˆÓbxÕ¾œNP´6(ã9©ÍîÍún|W=uá !H?ûOŸ›ÊL +ÞÎòÐÄÝLp%DN°I§7*ÓÊZæiõ=ºÔé+­›Øn6S¼£ÑÞ ¢¼fM¾cEJHXñº5 ³®Ù—F׊Õ𲱟ïœ:— OyÈz"¿Ñ”ô~<Ÿå"XæQ³ø×ã§ \ø”—›ÌÍí¯äøn´`ô>0J,ƨMÇ¥q$`V9Îy…[ÇÈaY@©@Ñ-¥ZÃi“†‡4Ê éUÔßëöïwª}vmpmïaÈg®H›V¿…¶/^ij‡o63Bñó7ÄŸˆÖFTÞòJÎzu3ÃñþT‚¨€û†Á¬d²åÌ!ý +O·Ó^œó³µ\Ὠ¶ ØÊ·Ö ´„•ƒqP¯w.»>DFƒ{p“ÏÓWHVÀ°='9Õºéfý)Ú©ÖÐñ0Úˆ²÷¨EsðŠø°¤b¸¡ýn†KP­‘¯ÑÍJhæžð~ŽÃ“²N¿è• ¢bþF3åÂmˆ¸WÑ—Yi1½ëZALZZýZ)˜–“ÓD¤ØK‡fNû]à/ Ø£ :ãnQz…½¾hw E,·\9Š[‘)5ºÍ$¯‚R¬µH»ðÌÇÀì—ür$²ÞóX—Á{Ýùwé@kÞóÄ+Ö8ôèkE*ŽSw»Èú†¹ Ž¥&±™ÍÂC•ýì–¶5t÷Â'ÛGÊÑÅRZô×6E÷äL­¨8ýz5⟌,ºPÑN\z„®îÅ÷\ÂõÑô*Áõ¼®tn%'£#2¡«G7æ÷áqts’PNÑp(ï¦Å!‘#.ºŸßt:º°ž‘£èutñÍ2°ÝARýÉêmð„I²´¨ïœ ×K¯ÿ:˜{¼w;íCì‚ßÔìöðécê~|Š8C"²ÏYTýëz‰bkóÓFmÞÃ.~”Žã+6*þ¨p‰.Üû<´"<‡©7b«ÿ’âpp†kqÒoÅÿÜ­Ý£Oó®dðC¼óZ¦˜Ù®XÅ.ö­¡ÞüSq•…íIóü0y•‰Õø,t¡p”·× +¦`á®=Šsn‡, +L³ÓUs¼¹ ‘GÂô5v¨ÁdMd©wÔ—/Mpî-zDÛ9®8õGFÅò(@´v’`½.qÂËÛNæT§Ò¸ÿÇ‹²çá>åQ8­šØ’X*9¢æg«—ûŸåŸ_ùÝJ”u&¢yY‹ +GÕ]h&À¾·Ã»—]}Š +¾íi™~ÀÑüÂj„o²ÜĘ'` vöЬ¦=Ä’ð¬úÌU5 "ÂW¨ÚUõcˆ$@å³ÖD ”Ê=÷Ä'¯ÆDæª=žŠü¢DÔı#"¨9d)µ ^ùFœS©íl¼G¶Ú¤­êxĆìá[‡Ý0!ð WÀº’;äܾ蕡¸½vWÈå²5²“i·f]ãê 9qû ª3@t{•²­ð¸BEg6/88'â«íâ1øW٠ߟ™] y%½\ö`su³hml¥‰j¨Â6ß‹á§Ëáå±`7Ï𪇱srÍ2'Ø&Ÿ*†ûüÍç³ïmgÀoDB3C6íI- ºÅ6œœÂ» ¨˜¨k§—§ò6–S9Ÿ9l–éP4`šÚôÈén\žk¬Ó ÈZ xžã+AÏ*=%ƒ©W›‡L¦õä]¾ã+ì{`‘¼K{Ǹ@mb1”cþ%¼±TÅ´¢”¸ý’TTO+‡û­zn1®ÒT› xºÁ3–r»ÝXÄ„·qϪ﬊ø:o lÂHQ©ÃXæxù¬í.@ä¼Pä³Î À*÷Ýð +ì‚]ÒfïÓæñÐBŠÐK¦u— í»™0 D]W_ÔVžûŒé¶„_!w§Ø¥ø:b)[àâ˜äÙ +HJŠýHƒÒA/¿-¼ÜË`·é‡ E¢Œ- ²ÞÚ×ÄÉN<ãóÑtCòª‹•³©ØtkØ/ ¡1¼ Mº.U)0^JzÙæŒËÅ£U„àŠšuùL6jöê”9oel^†*ÌPLd7s‹w§E{}te16S°8ûônŸ̽fZšfVîÀéó|’Ë–ÿPÏ9ê‰[‰ÕÖ,Å.5€Z$^ˆ ªðêûZc}!ÔØz‚*úü¯c¶a ô¿†;Ú‚zk‘Ï6q‡?(oDÝÓù{=w¸é”Àõ(‹œ„kI?"Ú±bØ TðF ùßQ<<ñÔPé_ü¾œU…G‰ñÊë„~p©?|7b¾½-ï¼ ÷áÜÍn|/>ŠfkÄš,ÌŒxé¿XF?úéﱌ¦‡¡~¨m‹¸ôHœå|Þ½u9bÉ•láa>|‡ŸÂö”œß‰ B‚E+ó”Ý•å-=õÎÎÙxxøÐ÷gc3Ñ™¥—¥/{s²ô,GA v¦_ÓKã¸óŸ·.@h eO®¾:´°ƒ©UÞŽH¼<»®”þ"#bzׯ¢°“„ÔËç]ÔÇñb8Ï~óc}879À?ÎF÷¬Ž!u{’;Øç̱LŒLRMDŸ+t}Å÷LxZ €ô?[ÈóuûíÆÀI‚Ü’j5xqk;EªC‘X®­oÜ®æiO×9·äÜ<‚M(¸’ÁõÚ5Q¨;KÈÉàÑô½1Íqg(~þ§%¾p•¼Ñ¬gOfxÌÊ¿ÕûƒóÆãHÓÐâ§„1 úuþס±ï¸‘ÙžÐ'3fgÃ…qNº6Â(@ÞD%Z˜|Q]­ým5Ú'"°òâ;ä²ÕDˆj®LÏðÖYÊÔÈøÇKݼDÊûÊ0Âýè9T~—žuŸÆÞ;öL_J¶håIµàòY Œ}8·ïQ‹ý"ÇOÏ+{†2Är €ýß–˜ºNN;¯‰÷U/­ì|‡™¹)5›‘Ÿ†äúòñ¯)œà1„æ`Ø/g²¶ìºõo6;Bº0åU–æ/úœæÜ¿wBE3ñ›¯À£ÐGs4Yº“ù~…¶–d+ÎüL‚všb%T3WÏ4TÃQžåÿè#œ–,<ª9¯äpù>Z^¢T¢!Æç_<,Zî¤Ô>ÑåÛºañÙ¾>„<ÛƒˆéOà£$%y6‹~WÙ r`/ó‹–üäžZõ'Œï1o´q~È­Oâ|ÇÙz3ìj¸v¥œ‰ýü_*¤a¼6Ðñò< +JœÛþvn=4[°Œxž|kލõjMÒ ètÍ\„‰a€å ŒšDA}±eù)¤K@ØýÙØÌ£|sEeá8¶IÊ6-Ð"ö—€ö/óØI\˜þ·©ýŸ6 ê—óBWWmú—œ9ã•LÊ@e̫׌”íQ?*}YrC¼“¡õb^8F=FWÚdù«ñÉ,Õ¼§À dkž&ísCjŠƒ›,=À–ÅǸ •Ȳã·y-Ó…Q¤¨±o5ƒHºm[)ߤ¶ƒ@mç¤Q÷(õñHL„9üTÎäVøEq[•X ½ã‘¢ÈašÊ:“FA¯¾X…ÆpQZg4 /¸æeçë1Ë:{ræTð¸ÑÎ&+\ÜV¦îö…¡pÂД + ãíÇãZŒ÷Á£¬’÷cz#~{P©‰ú’ýÚ©vCC¶ †ãމ鉮¼ËL?¹ìŒ…åÃ0)"B—ôu«3;.½ôAž%‘*´ ìü¬Ö™àÔàû}UÞ¨¥Àß½+§žƒ4AÔI£ûU¥UW»AcB.¸¿ó +dO}A’õràúA,7³Î*±ÆbxÒT1SxÌx£nT›HЬdOqÔûåĵ¢Ày¯ xé¬%¨9Ù2ÀìCölNçð&YïÉɪæe¶çÖÈ¢F*ÉÕ¸‰<2À]¢NS»©`*öær÷Y–¹¢öìºõFV°›Énù«ºìfnyÊÅ2Ax_Hƒ= ží¥.äa³žÂ4¾}cw¿ò•åÃ÷Ù±zæ2ñ”õácA‚OŸ7Š· Ã#ÎØ›}ʦ†õXÂ÷/˜ ^X¦\Kö‰"[ôhDß6•1˜‰‰Éœ?&hŠ1ƒ1|S&“[ÖÄ1 Û¶™hÙ)3Î5w' øœMƒ¦¼GËËg‡j1Eñ;PÏÍ~ñÀü0wÀƒªÑjæö Ç¤Ì];óêûµuòÓýŠn˜\²ßa^'ë›I‚å†K'+òw/œ™^üG¡˜B„ltRF4"âj¯[½{ifK™Ã¯õELïó¨)`ñ +]É3#ô ‹mÑ.Õ¾F~ÛÑ’.&fWlÐxøâ ›sÂ_‚Éwƒ|’®u‰Ôm‹‚õ¬Ñ C깃ñL~ïÑYö`e"îý;³ùy• €ËldQÖ‘¸Ý%†À”¼4œd™2Aó15ãv—¨Õ—o{©ò÷úÔ“_0¨á—Q’QCÓîêKƒÃˆYn«•¼|Qx͘sv" +£x—2VFw¢£r*בtCûÔÇP#ËÄ()“ÐΖH¼oDåy¬¶ ÙèßPv‰IÎ/ ed9­äB C&¦ßñ×+Ày^—^g°g§2© vm¡i-é0J-øÅ"s[Rry¨L#‹qx`7Ž¿{ÕFá.ÏýîÆaʽ43ŠŽò:)?²»vïCŒ>§š%åøì F%ûkúî\J(ð€ù1 Æ=õÂw Ì áý6ÇÈ-Ù³GÌÀÓÌìOK +L›¡/ÆŸ?ì8Ômí°dÐb˜—€ŸJ(±1 N`¨‡sëŽæ§¯Ý¸äRÁDΕËFü89N£Ì´„Ò¥Ä–í¿Œ²•Â×)™ó§Žb¡~^õXÏôv‹bØZ( #øÖ!®íŒîéxëw¼VH|Ò«†{æÀÌž´Nd“£÷Vj)6uÝ@€~,–·lv‰K96 Ý.•VŠ¿2ÇújA²¿5ŠåŒÀOc?+YâÖ#zIÒ6zØ+E*ÿWHq&€‚"åôŸL +?0X#á~ÈGt({!µžÐÁIÿx³&&‡¥)x*šuL—»¬1×z]LœÇ¢aÔ•&È §½â"‰ÄƸ“âr,?DÜïD¢¤}¥§Ÿ¨][ Þ‘gŠSy-EŸÙwþ¥®¡Šá‘²®a m¬¢èôI6¼) æ9`G2#$rä7’M¥DA:4¶"WV  Ð¥NøÜRWO^–m¡œuÄÊx›®C¹ì ¤Hféeµšå&WÞYBlz‰‡Ò±Z°:]m%ßVŠ=½éÔAÀ›þÔðØæ:ïZÒ ³Ôó¬·# A¢<9»dA»˜"§³U<'Å…Xy„÷’Å`¼LIåîí.™j‚n 2·ã,³B¤qèÄ<Ò¹s)ʧÔü7<¾qá<Àszå%+IofNʶ·Ü\Ì£xÐøÁLj•^ŠáŸMô¼QBEÜš³ÙMÇ–Ð×ÜO.©ÍkÕu)íB-L?´½–y+ Oú¢zŽå;âøQ×äX eÎVƒBíªøcÊêèG0*Aóy7÷ÿNô"ü üê‚k°äRÝ8­WjÍHA’ô9$­‰‘=À¾{{Ênf‚>À^ØYj†#…—`ǧ¹÷ãÙ¼…æ™ØzØûÂü&®~ÎÑ]¼ÞÏL%P½¹„-txÖ}Pv㧇|òâÆ½7E"¢m‚>0¥åë!iï¼K§îùö¿‡-R€Eýåµ–ò˜öºg¾„PõÛwO¨–wYðzéhOÚ:©éC8²DÑ•¼§ë¹]úwŠP;’•¯çzÜŸ·AÊ–!Z>cöøkà0) ‘ÕhÅåú,ÂT‰5Í¥º-k=“8kKö#¾zìµd(b{s t[r•^p\E´+ŸeÙnªŠ¥Aµÿ|FÔ1{t XxH®†ìÓä”uñ%‘¼'òd'.Ý&dšN!6¼=03C“DãN];9÷ªg/Èà;ÑÀE [Rt Õu(ÀÞzžÎ¿ÍгHR‹>"¤LGâˆÉ¤‰Vnck³F^÷“5T‰^ææ#Íä%$ÿ©MÑЗ2u6†€µà(!·Q‹IóCH–þ›z}ÃÞNóêÞ#¯“ –H ›iý@Óaé µ² cÏ'6›=pâ÷ƒ×wÐáÀÂév5Ýë€ ï§´«¡!AÝnŠ6Ês-~ÃÍ}ƒ„„ó€áïA€œ8n{ÖJù)hºá#,oÝY +•‰ŒÐ¡•#&k{aüƒ!SAPÑ–>ѾUÓÎæ«ÇaŒQMƒZ…|²„ô‡ÓFJô ®Ç*ý‡—§éµö/‰– ÿU Ê´Þõ¬¶ Ì)ejªaK˜€oqHI'°3_€Â‚}ì¡ÚZ\¾õ ž©îŽܨÆ4°h©!™Ü A³"LJÕÈæ‚pú®—1Ì8 +0U|CqÛÍ Nª­&µ¡Ã43Û$1hx~ Q@4êHÖbz1ƒNv3ûj@‰q‡ûOÒ¹äÁË¥9ûŠÓdöU€ìdˆš +ߨC¹Â1q6çw®—±b§”Û’ãØ!è Q‰_Ú)þÀ‰èr» ¦YØ"sLf1oÐ[;&‹ï?ãÐIûFæÊ;m§e‰)–§àÃO=8ä¹AáT©\=ëÐYhVM‡Žàþ7² Ÿ°ÞxàþÝÏ–Õš<Ú§’n¤°®[6 ¶{Û¥ D"žÞUŠ*,oz¬Zr„ÇÙ n-˜ê}“^Çœ‰w™ô¥ý‰´Žã˜59Lö?  ¢r+ùbªYôÂöë-PY2§— ©®pŸ,îéc\¹¤Ï\(IÉ~À†èMaÊ 1‹aG ºç±hnî}¸ê|FÅî?Ü6:¦‡çRëÈ“£Îõë„'ï‚$¢“ 5:œ\ð„_xeœÇ¡"æå¨ù(ÓØYƒ’goTߢä. ì$ HÒ“&Øí™þ°ív! Kb ·LÔZçU¿å$ï.8jK¿ú¢Í½Ye¥›×/,–úW"§¾òµªÚµ7§ñ¯Ýë`:Ió€$Taèý%ò8Çh ’|ræZ-0Ax îs(Á‘·Û\IRØs#¢çXÖ{€5'T¯Çf±CË:… èÓÍ—šhûÓâÛ=péåúû+ÙBÄm*dÁª’ÀNI~étbóFP·{,ɢ׿.-‹›O¡cq*?3– êÙÏññîÖZ4ÀTÖº5íö£¯ê?«!¹¶†±`†6Ý?×19îqi"âðÃV²PÐE¦õ“êà—dqq:“ !L L,¡æs Ëa:Kfó±0 á Àƒ‚gSÁ° “`@C!C£á@aF6nÁ†ã8”FÉ„À´€hN HÈà#ƒ¥À¥ÑÔpX´ƒÂ¡Ã&ì°#  4œSHA…‹V•vQ"ìº @©¸Ïš’Ui!Z>g ° øµ€H!`„ ¤Åb’EÓ¬Pé 0BO¨D=¤‘ˆÆå‘P´ËHIÁ‘—«ÀƒÑV"P8¹"€ô|µF'&Y÷¾Ö蟭“ò)ÅK‹™Ùägw[[O·Ÿ™¶ÔNÏ»önyß³½2[õ“½Ôm«‹§ëÚN÷½ñ5o÷¾·Ø´i6}Ýß×½×F~¶êùéþŠëÛ²q1"%e?¥mšÐÛjÿ‘õoZ«á£õ×H‰Ž(‚àwÍäoïeªq}6·¶ËÓ‘Õ'Éêüµ<Z¤k;ºkŠüû=¿á"3æÞ‘ÅÄUÎüv¿kÖuMLÖÜIr…RN£®~iÔVŠŽÜÒFZ+e¤h5“‰w”R ej¾³mËLõäc¿q§Éä%Óæµ•˜2²vdZ«O|V+ö›÷P$ò¶®˜m¿-º?óåJÛù/¶^"{l;‚›ÈÙ¾›±:b¶þïfv»U;g³ëï1ÇFÁ~øÚðÔŸ3æ¶ör#^¶îÖeæØT/ý÷1ÜåolxˆØXs¯÷ñ©§ºó+æc{{c«®­m6/þm3ßguÔöGÆê”KÕÚÞ››×ÕÛ}ê)ö2ÇÆž¥ÓòŽJwR‹4z·’¤kµö·L'SãQ©ù#Dëûââ1²E†¸ò´7êV:•Ðd²4²æZצ¶®ùÔN£ÇKoç®ö·–-wärï¾ÆÖÇì­ùß°¿™¶¼^ù¶±÷“mËP -is4:%©eZ>â·N¯KVk)¥‘H¤l¢PsìÅÿ_zæjcŸá)_bÕžå¼$«Têµ¾×dPOZÒGUûMWÓ›¨Ýµíc[ÖìßTSÿòSño›Ÿ·ãcÎU7ÿm}~Ú˜sk·Fï^æýYæo3çjÛuûDäLö¯ÜÙèÇ‹Ìÿ«˜í™‹‡ì‹ú¿—¯ÇšþûËÌ™{=Ûû>²mùªÛ­õZ+óÆŠùõ¾qz/cäln|ÕýötþöùéÇz¹{¨x«Çˇš©÷‹‰ÌÝÜ›¹á¹3~ÕÛGõvÖ+ÿÖrbdj£íVmZ£Ö#«9i­Ó‘ÐÒ©t2ñz«.ºž¢»¿ÿñÏÙB\ØÜ”&Mi¶uBv‹´iud-L§Ña³(¿“÷ºeª¶;DÖ¸w$ýý³ýe·{Woéç¬q_|ŒÛú–9wèÎ4*}ÛRJ)­ÆþiTZËGËÖ›~Ä¥dýqªòÝw¦ß^ò9;íê¶ÿÌ?TvÚo:™š›L£V:+…Û­VâµZ·Éò#1©K½M$Â{þ½uÆõkÏí×ËîvG´%æ5½mõ÷lDÖ¦ŒÇí”ý+ID{Õ{|oÌ’Ù¥R=öäVìÆ¬ÝÚ9ž³ÍdÿÍÆØØ›wÜø¿O™s¾¶ýÆo«ûÚ­-‘5rvjróVôgŸM¹ä¯6ë5o^ÖÈ”K…þ‰ÔƇÃáP&•QÌ0+4•i¦†Æ4£R™TF1¦šQeÀˆF…š1)`Ͱ,©;óÚ/ã·ˆ“[Sük}Ú,¹µßöÏ®ê?F<_edþ"‘ã¾.R.å1²&˜•êD‰öîwµ1UY·s¾kj2îÖˆÚòvãëUü­]ã7NgÞ´Ên‰ë,»ý¡¾?"CÿlšêçŒùOTDÕ­Û¢#ã÷*"6LÇÓKÔF¾äLÔ–-×ùš[yS“µ®*n;öDWG–üÚÚç*»·dn¾Êòê2ökªì­Y²_okw¬ÙëíÐ×QÝ&+"âú_#[þÏÖ›·ÏWÕ9ÿ–³Ûý²õfÜl Ñs}Ù³!²¼mß­‘1ŨÝÈ«mýE•òf'{6r^ï7æ_n¶üÈÈÞ[7oª®”Ú·zšËµÎóvßÊêËmïý‘‘µ=j_²ãçÆŸþëÌM׳W»½Ù¶¶ökÖ‹ýž|ÏÚjÅÜ”Ù[»—ñîÙo¾3¶Çãw†¬çáf¶SoÞlyQ½y[uÎÇæÚPY3•¹µBo ï›f²Õm-›g?7ãÖJ³ùòbsÆúÕòkú»Ü¬µVÌ|øŽùȬé÷ý5mÖmìÕû»!ò3wäÕû=GgèZí±çµ|egÈß:ïÓ5‘ÕéÞ¨ËúÜ®±Û2_ïD÷½†ÉÒµâÓ»Ã÷Ãg½_m~¶&zÃgèŸþžxljì›VØÙ’5Ýmí绺Úîù‡mÙž²ïiÛýSlš·èÍN¿ÊÖz:f7Û~ݾgOgÞeŸ_ñó¶¶Üwí{g§ï»¨ŠžŒLõ«þNÆc»Z=êeËëçe¬ªú›÷Ì\Ÿ*áÞ¿VŒÍ“Ù‘[;êkKeÆgº‡~ÎzÛîß5û­¾¯ý˜)UªTÿ.½é·g[²úù¡·²l­²yÞ®÷£³å¯pùÙ·s²n­°­³ëéã2å§"ªÝÃÎß>Ætlø×›ˆ ù«ÅU½–éì­yóî·|.ñ'rïÿv&»kcÚšµuâÝ·ÔÕ×ÖžÛ_Þ±×ÕýöݸÝ߻͚~ŬÞþüW“qÓ*y7¶nk>½^ÿÌÆØ2õp›G¬Þî±¶_}c¼Vüä[çÖÍ«ä~|^ý\ïtõCÝoì÷»i¶â)²Ö´bMïnÞÏÊŸ -!u¢J-—ÕQÝõ\Õ¿ýµdˆêËÚÙÎt»›ž27¶¦×§‡½Êx¿ºÆÝðšfã1Þ§D¹¯Ëv¿â»EE|lÇ{ïlWnȬ·®ÇtŸ*UªÎʈÿîLY+oÖ»æî§ ÷«F?ƒJíØÍ¯¦1¯uø‰X´rZø&–VÐñˆÉÙh)%aJ[‡Ä\Z$–a%tþEfd"Ø‹ÙÔéôR3½–bèBá–ÉžüËãìˆÁOÄå}çI‹¼;›^+ñ\b=O@0ŽgàTb q>D…*ðçd²ZWO±¦eëâð©Òt®t†Ñ\@A™¦Îéê7€Ô˜R³Á^æ± XÎŽI{‡@Õv±® $ÕÞ…ÁOÄ_Iü»+ÈQà¡c¤›E凫r{bFfz޹6ÎUcG¢ÄÎ OÊ¿16[Rã%ÿyû¯L(}à˜jÅðzg‰Ä:"ª)èÿäÝ^ìZÒ†6†ñ´q7i}‚‚*ÀÈst(ãù¼èÙÃj¦$0…½0ŽÔ'<›úŠp>ÁÇšhjA(ŒRnp‘y$ -iÓêæ+žÇ„ pÒ«PâŽhÃÀe†$½Pãë£øÏÜ‚$÷â"Q}À)k"×î_Ë’VøÏ$¿.7k³ã¢~’ù! Ñ1?“oëˆÇ¼³Žkò÷„)TÚ"‰{çGÍÕêT­cQÉ ÐŸ“—QSç}VÆ {ù°‘"Mb}(ç9M¦)·!tДïÇZ=üuº 1|Ž¡½M/eºÓ̃™Æi^ÚžaN=1©üR=P³ôžÉ6+ì´\(’µ„S¢.Êï–BåTÚpfô+4àHûIˆi|C¨1Ùû´3ò‹ÐW#ŽˆË´ ޳–€UºE ÃLèuŽë(³ãZºè»ƒ*‚ÍÉ]Å)þ™¿³"޵ê.¶xÃIÏô?%¦½$¢ˆ÷Æ4²Ú¹ßBtØBfÐèŽ!“ŒYž»íWh­jŸwº¸£±bÜAEv?wTËM¼Aÿ×PV(nÿ´ÄN4$Ý”¤°š¯€ùBçEòÑð¸EÎ\žßŸè!«ïÕõÞ~ªã8»âç¤ÇɹèÇ57•’ba<õ%ì8e–&âÑ8UâA ð5ê‘]¬ ¯g¸ƒÅ˜0<8©ßÈW<×44¤&–#&aÀñ€h£íNÑx-œ¢›|Ów~w“ÔYjÿNS^@RŽ‘–€|Ö žçÆ•Xÿ&ÈZƒÃÀ[ÍÅ—€ ¬×ŠE„í¢¦¢/ ølßfžkÕ ¯?>™2&-# ¹Â‹Où~LqÄA°™:ÆS„i„h㣃™· "„°4^9¶‰²h¥0…O:f:ÿ& bsë —1{iêÅöÎEdý²|´J8,³×ŵ̃ÃöL‘¤ ׯsá·FÓ,À’c›Õrè{º½CNð6m74}ÞTpôN'NÒk¨ê -qáÏ«w¼N;¾`ǫٚš¿™è"y—øò¸YšižüŸ Ò+#øt3½Ó 8©Sg9"BœmT BîÐÏeÛ­ G'L£8Àó…SúpWAØz„Ì$ ˆoü=ÑÄ¡[Éeª] ÑOúYf¯l”³ IŸ÷®Àœ9B=Áöد|}íN ²J1O½hA TA__ -¶+5Õ¾X§Ëûù¹–zœ6‚P<–smÈ6ò©!“&uo -eJ³eêž’¸¯~MDU'žÿ?5Îý´Ýû”Ü›ýl6R9úDš†¯_³©tö¡Ä\öùáGiò•ò@PMEct{p€Ò3馪ÆÂP4TwJõ„MŸYÀ°áϳ´µBìÓ&gS‚þ¯¾‹¦FF³ {¤á› âÔ.¬°ÎÉG(8ªO€¯Ëê+´ "F={Š­$¹ñGO±GD‹“‚ŠQç7–ß ¨5}@¬mDs1œ ž’á2\ îÀÓ÷‚±°…º(#Ý_lH]-]'²}-Wѵ2øÑtöˬ¬(…öÇùºo¼uÂ9 üâÆ -Ða}¤j~à `‡ýBÊ=¨øÍÑ¢m+Z«GÇSt9ªê9}ØýdtWi:Bõdô”ŒF %Šž M0ïÏ\[Â÷ÞÏíñ…IS0ý÷=¶+ž„åž;~™ÁF¹”¨Yé?· ÝüÇ&×5Q­cYUݼÖ4#Î\ qô´ $®ùç˜Çš§ô@â00äiƒ`! ¨*1½aRzsÆ ÄAØ05A ž~ºýf¥ øÁ²¼ØÄ7Á ;X\c]¬98n9ÊY_''Èí?´ÈõÅ‹&€ð¾7ÒÀ Ÿ”qò–÷AÓKãM{4KÏæCoÄÚ'ˆxʶñq -¸…ýZ ÛjôÔ1¦‡Åž¨Äè°ÒÜUVæ§»©äåVð³åöf¢ô‘yÈΑÄùIÓ Ý›‡Ëª$xh|W,æÏ]M† ¹Û5jqž;T%êÐàÓA;9…Çß_co÷²¹UŸüTß]Se#—§Èa8 £!=¡¬Få¾"ÒŽ\ˆÓ¨{É;“m:=.òBxÔ®˜_»šRËø>ëžÂ¨ -§,üÓÅ•E8…º,kˆhˤêòZÓ5ö¤Ñ¥Š•Â5áT:q ìc1ù*‚±Ž½¡Ø„…ÖtÕ}mX¿6öÔÓ]¡ºþKã÷ôž%½6¸·N›´ø0-‰Þ¤ã/ ºðu8 -‚@4} óÒàÓÿqQRpÃ'½Åä!ìõ}áØþ¸Ü;Ú ¥yD]¦(ž ÀKut×èìÖ}ib‚ØJäÁ*F¦Y.’pÒn‡Õ¢­ -©|’ÁÛ#r¾æÉ&:³£DcØ£Ó/ØË«Yô`9€Ž€ª-‚lÁr«I¸ÂP§½ké·3‚×ÙÔ¢­ÔX(`4„“ÑÀ™ ‡EC*mú\µ“]Σwáz°™ ù 5ޤ¡qkåÓ¶ç†àèõ«€4ò§ZÊG…Möæ¿1Uxïg¦Cfr’ÿ/‘Z¬’¯OE½JðVbÙ³ Eª¯¨bTÿò¬à‡|¡™u¯óüž§³5÷‹¹¶ˆª>þ§Àñ·Ý)ŸëhG—QŒü÷QºøÍñC¢CcIìûCYd¶ûc“¾/v[+˜¢D5ŽeR}ùC{î;>åÍ 2Š6¯BRÄÝx«¨Q&çžV ëyl‚ ØŒp©´¬o*zE.u²Üre_€_-Ò¡µ_Ìæ}æÂI…võGßL,¹‚K”àÂD‹BŽ {ÆF·_˜Àœ®{Æ»÷±°œ Þ(#P+;y¬Bƒ§‚±ò!¹´Ðˆ‰óÌ)«J[Ѱ 1?¬ƒñÒ-•¬O ÏiÛJ@ç?…7ŸVé {w0ÅÖŠl1uÉä¬\äþtp°· ~›R–_³ðóSÑÆõ+åÝQÌýW¯ÿjøxB]D¯çˆiK¬»Wî%ÉøSx»s5²?W ÿ`0Ø›öã-œ qgs®ßÀ‰7£™È¶óK -Uĉ³º™k%&„R}Òa(§*UjcS&æu¬ÂÜßÏ‹å§VL½2HûÊÚ¾M! ¿$†‰½EüuÓýHaa¡¶þ*{Lÿ¶ŒG1WO¾Œ çø#áG¡šËá0ÛoFZçÇY¾sKå5ûû`̘ûNÇMµlˆø;ÜÓ¾vB'XÓïå·nÄC$}^nÙWדõƒ„CÂóîùþísÛM)ý>Xb—&ªßî ––½,¯ªè#‰N¡ÿ¼±œ_{=ï'þ¼-¾òÔœ‰Nyh§wVΡÿ¼™JÃö¹•3×zÿyo·Á3&¡ºüÍÏ[ÿú ÷Áœ´ÂÚ^Ÿ‘C‰×…#˜KŠç B»?ïy«³3‹L‹Êôó†fJ‚©Ì{Þ@h¨¾ÜHØf—(”¦×sgü¼A[DI×qœ–Iž!5ámZ§¡Kf+>üç­6 Â‘ƒõ)[Xpðuå+êñÏû²"€«EtÊ^ ÊÅ9ý$ôóÖÛP abÜü¼×ßzöÚ™;4êlÿÕsñÿ¼Y@½"7kÍܬ¾õœku6Þž7ªøy£%‚ßR¬=ïêþy«Â7àÉÒ¶«Þ¥ý ‰îäPè¸=ÕŸw©´I©ç½ÏÞM¥ã $4g3¡¨ÒxzÞúϬr$=oÞøçSÜ¡ö¼e쟷ÒôC¨ç=/þ¼•ÒæVn…ô&_P<l¹„Ä%sÀRFÖ1uª_%…Fø@C( :bþ¤‡F¹±PƵd*[Ï$öØz‰)ù«QFÌÀ~kH(ÊÃFÝ[=qY_#Ç}kD×%2#,Äú*7H8Åÿˆ²†¨ç.>æ!YÙ†à;`„F8†ÐüZˆyÕ ÍoVk"fÕ=©)ìŽ0=†¶%C bS{¿`Mx dí½›pºwqR1ˆMmYå!5™ Ø+¥Lu\šrû¯ÔðŒæ€yL6#‹O¥ºrŒŸÀe7Cšà»þQTÂ?©|[¸Ö=ÿ•Úî¬>%Ž›ãÕ>׿ I[(Ú—(Êñ¬µ#sÛ@í{ß‚ü^ AüÈ*®4ÉbúØÎj‰q¯zXiX;>ÿŒ«2 ~gÜ žU3¸¬¬òä“ЀK†“¯é2‚¿½|f, ·ó-eE6ÚH}&‰ýlvA<τՋXºÌióïÜñ›òðû}–5‚<%ž»^a¤¡÷%"KÓ±:ö°SÏÐâi‰LíF‚v:Åâ)8æþ¹¡e§?\ŽF}!ÿi¶O[ñÆ 'Þ£þ®å—¿w¤¨^Ôq¸E—YM-‡È­ŒYB ɽªÒ‰&85Þ÷E_Np@¬›~ÇWy•vøX<£"É6q¹¦èqâ¸Úû¯›‰ÁAn„Æ£qÇKÜg¨LuDA<Œ«e”(¹RBdr}C aY¹8•££[¯J gŸO°~¾ÜH‘ÊŸ\­R‹ú¾«D.K‘Hûþ¢¶qûÞhmEFöÇŽ—ƾÀÄ夎Ü0T¨4„Œ¢Óá!@TÂ7s¥7Š[DK™ºœ„Ü-ÚK|Y¸&Ù,Õ)À6q©fƒ™Ã6iöÛ‡J*? -RªSqÇ~TÄ+ŠUo‘ôy~oÒnGW%(½ÌWÆÉºÏÉ8f¥À¤‡Ô]Ò5Llê]${²Zƒ -Oš`ÉþšÌp·ðÓOýFÄ‚ÛÇ,1»oèÕ/zHк2ŒTF(l>ê0‡$már~¿+¼Ç¥î•¤xuî.­vf…³"e9tµ¤–YáTdàHÏ—nÜCæ‘´,~D ”.qfÄHõì˜ÆuŸD{¥WFžû5Rd€<Éd¯!êwA—üA0$£ÚþoôånH qrgë³À{4½ÁãîÎð»óé…7 #÷ 5ƒs·F§ÿ@öš/¸£àîCîa.5åtwTð¶òFF§¢%%Xík Q÷a\änЂ0« ¡èn©á=i*I%q‚|HtéîmðÎæBqºjx[bc°`0X_Î Ÿ» ä`x;]Rof¢ÇÝ:ðiØþ“¦hÏ ¹Ô†Ü"ìbô»šdr÷´Xyù¡<³„“j DѶ¦òš!™Úæ…ËÑ”4m“ÝPk¦Äm®òdž‹ÿB:`žW»Å¾ÅO»™ôŠ%j[E&{¥¢7m‘|ï#GH­m ºB%c•Dõ}’ê±î¥¹M¦JÓÀH“Òa¹÷^¯~kÛtüÛ¶K!mk‹2!„ÓS¨m7™Û¬»e¦Éò¯é•ÆÜÚ6±{“¨‘|ìÁQQn¨á­¹cï¢øÄÅè Z==Öøs«ö?޼U"TtìrþèXíØíHTHÿ!4òM‘yBŠxEÎÆ]†ÌY¡PE„¨ÔŸ5ö}n팴#ÎNá[>;Aú‚Ãq¨.‚»pvd/8FsþÄÏ0[)K-Š( ýô-f¯>pØ&j[¸"ÔÆ³–ò&L/0Qž€&bÛžF‡´#3¼±uã÷ñɬT+ÁŒè°7žåº5µKÞÁ"=IL6÷Èü ÖzÔ=´—šAx$Ôt®½ ^°ĵ¦]‡(É›áõؑߞ]øfä&'1${x´)A'®ä)#Û!רPDˆí|¹‡þÒâdY'¤àµæ2¶ZrÚ2¿v\F˜{Þ„O>y£Ïl3ïŒ7¼nškiÉìMãfv~—ÍÀiZ:±·ådî×;ý†%§f€k1·›…0Z^½Ù9‘ÉJ±FÔìX4i°˜Ñ×[Ü’rà²mŸþØ»!ùA ûk/^"ùG˜ ·‘ÓÇ+ĽÓÿ·Ùý ¡íît ý[ä}Ú°´¬?@Ó¿Á¼[D¢®S—œIÆ|«s7‘zÓ¬ ”8Ébú§¦óä!7b¾Ö?cKÿSAW:ŠŠ£Ž7šºcköñ—h÷à -Hè8KÌé`ðG—?Dr­Ãþ«Øõ9©”ÔNÍ‘åã|ãÌ‘$шÄÁ>³q…Èû¢ÈIgX -‚M0.{¿¥oÕi˜%ï%´Ç*–ýz™Â±££IÒ}²XB—;IÇwr„ä¡úéFD`¸3ÊÍý\…ZÿOböbAÑ<½`‹âPyT®Únž‹å“Ge°´#6óÐÝá S€‹aÞsë²”"œ‹(8DÞa2ð”o‰L.: ’¥´ÿŒ‚IC)^ò3`Ä®3ä-‡¬¦cÃü‘& þÂŽoY–=rAp.HªOþµk»máñ -öÚµ†ìæá»ûþ@ -ßÂÚÕ—UÙSÉÂ&Mè½›p¢µÉö×6Ж]Àð’«)ÎWöÝn´”†æŠ„P£ÎlfÂjh•Єµ‚¯å«™£ :hžŸþz˜U;õšàhëÁµS5y”œŠg¡Ð­ö~)íͳ!*­qLêÙ§™ðýÊí%³PL ª}S¨½uÀ‘åDz—æ¶ÓÙ$˜g¶P¼“ÈL°u¿/Œø¦Qpú5žÏÍ!h'y¼”:TΪh8l~ÆŸÔ¸:mëÞÇÊ4¹ýnÿ~ôi'‚6P9Ba¹úæ Þ–ª“¡°’¼hv`BhÀ¥á 5K—¡ÚJ ~¬ú ×Ü#ûe@äËó4ªÚE¢hîѰ´¼|¾:Ý!^*,8-o[ΉòABbŠOyènjc߀}ÑËúgò Î#Oj1 @^çIV-‚sËÊj  º'vއî 2q­ цMéïp&qöX·“<Å u‘pý‚\ -­ÊQ0ÁìÄ®V7ÃJn}H]—@ˆì±IuœÒ°A—¹D€ý`—JÑ%ÌûR®òáÓþ\éêPú;¹ï4L¾»|ÝÖc§¹ç ”{hÙÕ«[#™Aîn3ä‚+4C8‡[']ûg^–ȰúÅ l“ÜÎAÄ…hl6¼-ËnÅ„³‹¬»ÌÆéåpHi@4Ô:ã‡xÆ`D¬,2«EÌ4´È:²¢íÑüCÚÏNF¥ U!‚\>ô¼øpô - øŽZÎ}PÇÉ-ÖÝ QZ VGÀw> ¼wKáõ‚C¤…—Ž{Z²G¶G§¦½—þö¨I‘=–›ñíQZŽÚΡßݳ¡ÁEÙ#LÀºø¶+°$¥è èV† Æ–¤­C&K¿|ú¶$íV†L¥–©œbIj•â¶:£“DÇÀÏ"b’œa¹˜¤ú85»Ÿ,IsŒù@Ÿ;W’%I7—‘ÙÄSµ$‰ÀÅeé(Ä.E1»òÞcÓf(¦©,]©w‚ÙÊ[fsWÌz>ší&w€hž—Ù0ŽbÞ @oË/Æÿð\ì¬e6Ë!»×S«‰˜µ­À›.O±f÷d<‹ÌöœŸE Àß«:©S×ÄLêoQËeÙÁº«8±ù§[#+йI ¹"Zǖ̆—y€ËÔ—X-‡Q”Ô2[D"vŠf8a\€[¦?@6).ƒ¸gkÝm^X#Ù[ºÆ±] ­ïX±”ƒ¢šMŒÇŠKYÜíÝÅ"ÒU¸±ðœæJ]HWàÁÚUQY¥«  ù4©Ê -)Vá@æ¥Òµ bÎ /]S¿XYh‚Apr^Œx¬dYZmœ@ux€ƒ1ÈÁYØÒ¬ÎXx«>IL¹÷Ò‚êR(ŽteD1–ÁA(0,V=ÑÑr Ì@¬Í…j,JÒõÞZ½þ6Ó!½ââ·Àa„¼D-pš:Õt”aÄOŠóVCIb¡þµå¤¬Ý=l«8hùŽÅš—ÇÛiŒìK3i`æ#@ó¯wõ„±[Ò߇…VHZ½Î(=/,šx^È.WJÒ©0©«²LrÂOh²;‹Fçz0ùÚiêm>@Уe‰â¹ƒÎZ,©hˆ…MZþ7­¾hÜ# õ‡Å럂æ=+%°Zq4TG­Ò“âŸátZö³\iÓWÑp¯"=Ðÿb¥'c£×X¼O 9Å•‘9¯kãY±"¬>× ‡Y’¾¨¬®ÜIy_‘­Á×"íeÌNUìŸ ¥¹‹·2¹¡jþ-V2ß -Ô³X{,ДU÷ÄÛâòòÇ~¥¨Ž¥N ¤Þb’±¨ µG½"7ž(ùXØ}`ÌïM!bu¾´ýž—•û±êNYŒÊ;:r¸ëR·|×Üñ:™ùX!ÇŽÍjPVÜR%ÛEKçemY¢Ão¾pù1¾–…±¤eTfì ,\rc-¢Lä­ú†8K0¤Y&Øœ}phe »rk9Â]ÕÝÜÚ>°°ë‡_bc%›Nyc™ŒìZÂ]¯XPÔ[Ô\‘| â¾ì†Så *]ïÉc+S É^Ds€[]Ѐ@AðäT -»qYÔÕÕûjÿWC ~_ÓÙæ^ã•M±Áê~ú -iÁÒ5ëÏp”ö+—&þô•Õ˜o -¿2sÌ›F³$F¢0¦í¡ÅÃJXAŒûˆ¯ :i‘H•ùåOÊ@dVl:ÃA½*wÅÄ:—eŸ¼bõèë`¬Ð:g5Ñ¥J±héX˜VX_Y£\¬% }ù9ÇeYð5c©Ö “”e²ÀrWÄYk¬Ã²´4^µÇ’[0”…Ž×ÚsƒQ–`S@ZLÎàáåe‘õX•Å$¯ÅXºU£¸¶¯Ð¯Çª»²„Óý’rŸq±Ô‘ØÆ>Μ%‡Ê·BV~/V©e½kq7Päã†rVÉ«‹uËŸуEID‚çyæü%L}S\CðÞמºØ–XQ§âG%¾i¼éêÏ ð†¨Æ0,§â œåkÌù( &Ú \¯‹å^!~šIk¿€Â'ÆÑ¯ï¦ ]’îÔì@wVóiÒŠÇÌ¿_–m}Òáħò‡÷ \‹f ³ü;Àê;{ªÏWûæÔø~X{üC~¦²9º4$d™fæÇ qÀ$ÖÁ$DA¯dIÚî -1£}Ì%fLF§ê@²X,ˆ2ZMuÇÛ©R ;jEÿ™qR:ˆ#à~&=rÏVÍs=_+èÙjz©êiÔ[ñž;¹wEÃååó¦ûz •­\w É»V'u*3žÚÿðoÃí’¨µ÷ù0—+öñ$ìx¯4o®1¡+7®•J—+ý.£‚+<Ñ+¾î €U+WŽÎVš¾ùÅÓ>stream +]hfôá …5t¿lÅvhÌà.ÇÔ5)’=ÐQ¼ŽkX·ÿv ^ÂÚìO +mU…(×Vw_O’’£ÌÅ^nÓÑ5DÒ.äÁ¤ÂM`7ú¨žèˆ Ñ› ½*¢Y r¥9LŸp°jê33ý$ÈšgËF9ª¥ÛìíàÆD ‡Ó‚æ³"Myç²±FHÅÝ)–%ÅM¸¢U£¸±¤,s#Ó-0”]Æ~V$„åå0%}8«º"uó"Å÷ÙWvëdž¡¨OÖÒ·Û¾¤×Õ­) +¾ïÕZ¾aliIÄ-#\ùAäµY«½62.`ãt.TØú&·³Û7S1’a·fIJ©ºÇìá¦ĶÔ7Ï…Ivâ‚;ø¿im -N‚ÂrùÔ¶vn ÄG)H;³ÌèÜÙ ¹ÈˆÿÕv\—gHéüÀ$T¡æÄ®¾0ÇÒñí°ÛPª¤‘â5C—Až]˜JØoÏÚÂù ÞL¤és‹ªn ,;ekOÀÌrM4ƒhePy^ȉxt襃iÀ󃩹ü¸ši»^ÿq-Æ®ÎvÐü&•Ù9 xtÒE<ï§h çIL$Bþ2«Þí¢(…9Ô¾þXdó¼¶!õ´’ꇡ@¥³3+%RªcâZgšÊç´m9ÀÒÈD'9å=°æ*tbê¤ÖQvpH æ9XbèH£Ò(m©ÃçØp¸Žf†œjŠRoF ÄY¨Ô ù–:M3®·Õ몶Øienù£2ï<ÁàÞ´‹®ãsŽÍƒßÉ“g—¥®ƒ]l½šþõ¦©1Œ§ãë¼Ü[æ¦ü'²+úW~ÀÒœâ¨{ êÄŸnûÎð1á®zþ1ÓÃýÙÑ;Ðòv}±ìNŠrö 쇪%2(hY Z…3A)´&‚Q‘ÇÍëãþ>2_+²Ú~ÃÄ5¿ r„ýi)HªüTè²éEÛåŠ3§áïù½>–\Æ­’$ŸCÆX²ææ ° %dóÞ|¨À«Ï +þ$ì…ýUP$ùùÙÖè’àZÚ:eiaåÀùµCp4$cć9 4 û“@1‘á +Äf fÍ14åϨ¯é]ÿ–RŠöìÍÔ¨§ÏÊã/f¥/“ƒ?/ü‘B®>lž¡Èg€ÿ/ß«p|ꎻë—ë©t Ú®>éË_/»Öu>¢$Íã¤ôópÙÌ>ÖH“Ps ÀUG ²YS YzÁòëõˆŒ[FÚß Z¹·¼2šë{»ÁI6p¸k×à ŒœRnú£ð ÊKÆI¡«ÔÚ} ›ñ+õqùu+•À©ð¹PK\\èïæ±±Fœk£â_ôð'´ Émeâtlú°I8Õ~W^â8òçê¯Øò‡“ýÓ¦_G Azà 'pqFˆdŒaÜû-)WMBdƒÛÆŸ98uÑSTr«cz8»ZùÜFúWþùCm‚9“V뤭›ª2á“4±m@BÀoi$éô>¿Ñ”–$þ!ŒŸ…TÅ¿‡ZÛ¢›f¾µu½RЋ†Ð&‡_NG?…· ¯rN"˜–ÿ¥®BhÎÆn’È5[£‹\/ª“²ŽáD‘E ½f1ééþ¶~ûì ÍèF +rÙeÛcAÀ考öã1ý?!¬Åa÷މ¸v¤år¶ž¦šò½³ßéó…7œðä¢Â.V3ó¿$5( ÛžóTWdsñçöÉì%"ÐGªn—®„®¾s{s¤àuæ‘LîP®¬Sé:~hbÎ:.7f¿¨½Ö<Ë%·yçðŸ2¨c(¤õ¨]ufÆÓ;/2JÑö…ßžüŒŒM›ÿù ò|&ý^d…Yù/N‹Ìhô2X#adÓ|:=[jy_y~+ÙµêP´Ú•«OÏ 5õ¦(uhO ¶ìaÑÖAÙß_Þ¼þSž[Š„ÿßøòjY€2¯Ë3íÝiXt„Ʊ|‰¢’Mjpß``9œ´Ðx•ŽÍœ˜§¥]ÿGä?Y’d{mfhgù¦ M_ ,«šƒkjÜï‹õ+"µˆcÓðaò¬í ô+B¹ID«ßöõ 07ô,ú‰Ê}U8Zõ¦†-D†™Æ#æ¬qÔnÑ+’Œ$CÎfç:FÓ®ˆˆH¶‘7LÝÚ5‹@ +¼ ôrä'ÄYðœLÊ.8ª*$¥|wâI†ð iB˜€œGca+¶ä“˜IEÈ“]¤"ÁaÓr*§uÉè‚çOÔA¼dÖå¤C¢a3€ÃTÊ`*%‰#d‘`ØÐlz…øXmF(„޼A³«"Ž*plT±‰OÐts:%(ƒŽŠj¶Ã±‘íD† UD@2#H…&@>%É1…d/ %‰I¸È8<@ªœ`hø¤ÁÄD 3WÖ0’m‹ +é]P$-‰Z'*?YQZÑH* yœ8xT"‡VE «â“¿"jPAh¡ ¢äDtà s‚ <«¢òd ‰c€8""Í +RB§Ì"áÀÒ†²1¢%LDR‰‡ƒ +‘K‹&@™ë”š’ly0É4 1já…" Ñç@‚€ˆƒé…`Á¥”€¼i,¬‰@%0sX:BD!-TÈ”ˆÄQð «@1ú$‚{È÷tf®UBƒ†N<ù«Ž6p«Ä ù €J*;#!Ïé!Tù8ÅBwÑC,|6ºàÑŽ†,90¬L©DhX™JÙ€ ŠPBñРY>‘ÔÔ‡På€/$]h­Pæ¢ÈhQˆÎ…*6. z2Ñ0,ÉW"ŠEdlq‰@KGæz9©x9©@p ™s™F¨AÄRIåNdÛbJyÒEåZÉ>©ÂDÍ4,©ŒI99h„&@ ÍB \6êtF4s•¨°ÜP QKF)ƒHYù °°pH$ ‹‡„mЮ@˜Hà„>róqá0e.ï€Ph†#œÒ¦@\€"2L²e±ˆ(I•ŽI¦ÈGf3/ª4­R)¡Rj†…g5!Íž¤J§lå¤à”VN  éÁ€(BI"Ÿü8µ€h‡FæZ>±€þ3BÁH¹T2W(dTJì„TBÐ9ÁÌåQÒÁÈZ0$°…_4+(àTˆ2å’ØØQf@dÐ HúÁ\V§Œ’Р.!ˆ ÇÉ‚¨âbE´ÂÀžMØ”²¢%Q!Ré¤\¨($s‘&F4Û™ %€Ãv²ð8NEB‹&$6J9+N”8Cg!z0ZdòZd@Êœ2"›ždÇ û0 *´‡Ü¬‚è6-¤@±¥`å*h%™IMM/ +(É0¤Pø à¼K¶¹XtqâIW]ð$  T™:IQÈ\X ¢VñrÊR z´yÙ| ˜ÈÞ¦2‹ +œ$ÈJ!)#ÌRŒ‚fG¨Q)xh¦)X(ÉJ)'ÆaEÒ“ȉÈ`ÀƒfÐÇã4|GÅÔ”fÐñ=¬¤‚BtÊ"L [ˆJP˜à€ðI†A¶$ tJFDIºt*pÓ‘±±¤>D*)Ì TTN ‰S¶°•Rd”Ó(\J$V¦Tþ'#(ù$PåJЦT2sY¨ˆ†C(ÀÈVÀ0@‘K¦ÅQ)'"“Ñ(•)¬Œ¥xB.¬udš%P§ _I²œœ2—‚•€Yˆ"@F´S:Uˆ +8·°4ËI I5l¢ÅË— €ÐÂŒ#K¹Y,%Â…F) ˜VH™ Í + rêhlh¶ TQîˆ@‰Ì0 ²’5RL"\v1±’à`’=w—R&¢ )'©åp‚/jP‚ÌJ*7:¥£"äùø’¨#Páqp哘ȅ… šíÔø$©å?,.s‰(6-Ä0 YÓ›\€6¡lSN Ÿ©`ijœ +‘ÆFv £#å¤ä€ˆf|t0²ÊH3 +R:t6X4 ËRòTÙÁH)2WCÄʼn'èCC†A¨á#2€PeHKD.t2×I@§ILŸdè hƒD¥ç\¦@¡QÊí”2#`’ x\(R*Ï~<.Ë LYBáA ,’™H!å:ù*QHÛBŠ_‘Ôc!X“iD¼ƒŠ PF« (¤òQòàhiHHЬnB¿†Í`©Ùl”Ÿt'™ áS*à }4tB™«•$KȨ…§‚=à +‘áTˆR2åêpѵl° 3}0².›OF h DÈè¡a$ÛˆL™òÒŸ)Í’\ÊՇР+p4”@°RÊ ”l¡“L–• +Í.6¥œ +‘F„³”Ä¢e¡51¢Š ‘¹ ÜC¶Éƒ £NqâIV]ð,¬H*2ÑÐÐÐYe¶„Íf®I*3v;™+óðT`ÇÁÍ,4XM (4 ÛòF6š)¤œ@öCDS U•dí´ YAÁÂ)sµN ‘ +QKSiÑgŠ…+¨•`Ø(å‹tR°Ì…ÊpÐXpËH¢qh¦ ¼“-kÁJD‘¥"¤aúdæJ^¸D`¦8"ð$±¡Ù‘$M.x2WÉ¡‚…œiŒ>™Ql$Й:<&°”Ò2×ÁG³ÂΆ££ÀBÔY••b,–$³—¢ PÃAF•—5Œ ˆ°ß”vã'‰‰l 6Jyáa@ôÀ"@&FS‘æ”&¹i‘ÕEÆ©M¾•Ì•‚q4+²N^|Uz‡` 4«à:(©€ÆÇ€ãD¢A³žÏH§€NÐ¥##i‰Aƒ"-Ldû°B)ÉV<+Iƒ‹ +>mP>!~l˜d† ‘Ä^pôAcSÊ ЉYH2âa,5¹Í\j’i”˜šÊÆ’D'̦¾””BžÌUÂ:tüé‚GDAZ@áhDBIf "©w ö°)9ø¤+9ødæZà@«Bä‚%d’°G%@@Z´’É %EåÚ q&2•“Žf®¬Sñ@b*e†ãšMœ`€ðð¬I“Ê$@¡š%hµ*DŸ ÈE–¹ZFj’¸hEÔBá#  «i§d£A”ä#j`šÈVc´‘y)8e§M€:Uª¸€´(å£ –žŽÄÆŠ Kæ:€Ÿd¸@  8‰À$ŽQ A¡Q•TfEær8 Ðlæ2µ`$U66µ2¦aJåç„„œ‡Ïæ”$¦Od*BôÑÔåƒáDt ¥œ@2Zô"Ú0ì'‚Ô¢ŽS ‚ˆE€‹"ÜäDò-‚ðHhÐŒÄà![0@2Û‘@hærPá’ò ÐdN›v£`þ=F÷LunÊŒyUïNtïìòÚàÀp6¿V-,V‹?ft¾êÛ”™¤’ââ–ùÑÝ9ÄöÚQ0¹¼‰¾ÿ.›vcÒŸU‘ÿÛc ‰ Kæö+¾d~mu/Gºïþ¹ S1—Ë€ißû÷\£"7L½P0ûXÛ_j>oÙq™îÝs¯Ù½í_'L:ºÕÿÿ×m›˜0¼¯¼ÛòjÉ0úr±XRRV*¨ ‘ ŒkÔ¹»ï;Å´{ЍÙïÜkŠyÞ}ëØŸÞØóô7s">lê0®ó9\vØRÓÚ­¨ŽÛes˜— óÉïêØ¥k]Œ¿ªã献3/Lçv"3ó¿öʘÿ]]Å÷ÉŽÜÐ%º¶ktßnû˜0ïáÛçO×µiK†Ùk ^/‘Ì5À…%Á BÃtâ!¢‚HXRÚÐ`AÅÅ¥dC€„dhh1)É)ÀpaÉ@"™«!ÃäuÀ„á$ Z6WÊ„A 61ÝŠyš˜wÉÂÊ´:Ð ’™¹$(Ä#se.’‘Ê'3—ˆ‹H±´Q ?ŠÁCSy<°‡x|FPb Àêt:-¤ÎG'¤E->HLJÃ9y8:R¤Ì\›Í&Ó9p‚°°éÈ\›Ífsppò€°†ƒÌEâ‘—‚„ÌŠ6V©õ8鬠8' D’RnX t (=À(±¬Ñ‚Ò¡@¡š•ŠÔ ˈ§2Fº!‘ RX5`(x0xØ@¤ö @¨ät|…¡”h +$:äi©ñ‘èÇ…"lÂǤqá0}*F-!èESáa ÀÚp 38‚„ÏÆc‚sšHÐl +ʃ_ *0sM°Ò¢)'¢ŠQ*[Z''%2 2À8™€F\‹‹&c¢Y‹RÈÓ bŽ…QFK¦E2ð€âáKâB…‘ÊñÑ-Ë: *à’`Òpà†‡Ì¥qp€A“€‘0…M5“,hx0h +u¢02@%V€dI*›Æ Ö$)ˆ„ý`(臀T~H ù¹H¥¡66$²)5²*Žþ,#S‘p%£‘l„  á¨ÑÂ̺èá+x(¼dÔâ„°4ŠŽ9ê¤‚Ó 88*2Õ¢xQÑL |Á *@øé¬“žQÅ» 2—§³N"EÉTaæP +ñˆJ„šB l¡(ÒAa³Y!ÈÆ†D–¹6j­>) +“Öæé…ý@1@%Űþ5 Œ b3Œ`ÀIÈC …m86N/ XqB'ÙfœXJ¢),*¤„H@±(s¹ Édô9±¬„N™ÖùÎ ‹ ¡Dh2£%º`1l4@|X$RŠ#›a`Hà0ÚhpÏHŠÂÄI(჉˜xær™ø€ÐÍ h&úL€:ëâ° BÒˆ.p‘M ˆd6ñ«la¤læ2É\) +%Ïhð 9J?d#8 "sU@¬ˆ*xâ%,°E²“IFRQyR4J96D^¶…ÝB$±:‰À–¹B-˜ÊCA ÁÚÆÃCàqÐ"”Œ +Ñk岆W’ +á2.±peÔ ŒF2s}2éeƒ]<%™«€d4á'VéÅàá@Á$S!1àèƒÄ>d(™EJÁ)cyQ92W3•d-ÍÀBD0’Ñ¢Ì5BÓ ah2 +l (1l´2n3Œã#0çãr€@ YNwƒZ Ö¡aÅч–5%pñÈ, ‡Êˆ#Â$3 ÒÂÏ烌<œ¤(°ød®$“TZ€!’—¡.x a0pa‰ BRºE€ ‘†Á‡f‰ —•V³(*'AjôI•„‘ÌÍ{)É8™Ë$s]˜62WF€AG¦‡Ës™Õ”d‰$¤…!.±Ð"4â@½85ÉZB2WæB˜HàØtD`‡“lÂàÔB +“‚Svú ¹Y´ž*'J™JI‡ÀED“¹P Ø$ÃHÀ”*ŠÂ¦ŽT!€PåɈ…Å`¤QZ`) K¢E™KÀÈÈ'p +ô"äVD*  ‡M)+X.@,›¹(B+¢ƒ UN„2D*-<ÐB‚˜Þ©2s‰PF-]¤>|DD‹Åâ²: 1àú`@ä~Wh-QÅE „-«ee'#£Ìõ@Àa…RHR„p¤òÉ&Ñ!Ï‚DªÚ¬„\.4|èPôÐ!G )e[yƒ=tȃ8ôccãà ÂÌuÐZÚÑå VS!ÀÔ N8R*:tð²N8B6øÍ:BŠ…âòœ8ÏCuq°`y˜ä¤YMy6!‚tȃÍ‚d.÷hN@hpBZQôhG‡<ë ñèÇQ4(ïF‡<)¹Ñ!$òàh£CÐÈ‚¤Ø†[ )glH3£C¬Xy4˜¼`d$ϤÄ2¨pi“'Áá£D ÍècŒ£,"XPò¬…†…Ê¢Cž± JMEȲè'0U2œ>!g J‹yš‡$eÑ!Ï^,<äÄ:`(2xȶb’Fi¢CžÎ +C)IF* é“"%C5U 6Ù ¶quôÇ@EÈ3"rà²É\™«á€@³ŠM P$ õD‹fÝ€ „>lLŒ(‡Éƈf.Šïd Òd®‘æB>©àB>I’@!©B”c€P’&š5Id"š¹Z4+'F‰c’í'7ZÔÙ@± tõÑô¥ 3Úx "Ò‹W„ ˆ<ŸÔ (°E„À„ÀÇC€’Aª…h”òµŽÀn!¥Th& <©ˆ—Ì>ˆRJ@Ý!•"‡Žô˜¤B†Õè“!K¶$FR_ ÑϤ”€<.ÿÉ®ËøÞ.ó#ujûã·ÛX—ä^{¿çíúmuGü®º»¨ÆÅP­Naø1Ôc­íÖê©8UÕ=íýÿFìm¯Mé/3Ý{e×õ¾:uÙ|×™»±ÝaãgŽ‘£KfÕçÞŽ¬»®ÞÙŽÝÛÕnÄ}ªý¾g{žoù9óÿŸWûlLf—ÜöÑ“u5s±ùö>wꜙKÉÿï[Ûk×gFìý¯­S^í—Ï9¾Æî÷îíQý=·©ïÜæ[Ý·Î]²{Üûmº»çg¶s¶o«gb¾w¢ÃgmìݶŸÉ Y¾,V¹\-ÖÌ)ì“SÕ:ö˜©tn¹M ¬Ï¹;UÛîcÈPé¸W-çe9L‘Q{3Æ‹¹U«Ÿµí=µýù›:͘ß{ÇUÝqӹǶN3$=æT/Ë©Ð=–ÚzØ*‘1fõcªÚl¹.‰ãw»Ôöü$ÍTädo|íXJÏz­Vb,ÜǰUŒõcc*Õóo­0Ùdúïïæu¯µë~T]÷˜cäÞCçÝëÛzß[ýe^mÎç}Ø¬Š¯¹t£W}ž®í¯Ü»·üï_ë[wÉüÓy¦Ó~Žw·]:fsÍìë‹ËþÝÖéº>EôçNñݦºßn¼O„Q—/'.¿u¸œüÏ5ºçð#§[·êö—Ÿ=ûïóÔ×÷Þu“;õäÔeX­øWŽ••Ï1ÂþYŒ¹üÄ]Jóešúߪöûsn»!{õöu¨¸(Ì[©æúŒ=u‰¥Ð1 +U½jzïÿô]rvëvæàÔämÕ÷÷½—ßjjóvíÈH«j•JÞW¡[-êaëRŒ­P›˜c±šQ+U*Iuõ_{;UݧíùGØR¥XOÅbEÇ4W(ŒQ,ƼՈ9Šß›1M¦çø­gªãwœï}{ܘuøžÓ5Û§cŽdÍV÷Žé­÷eªó÷nÈŒñ×êýöÛK×1ê‡ùë÷}ÃîTöunÏDÇtî¾Üí¥ÛE}ÈéÚ±%s¿§KÌL×¼Ÿcã>Ý÷ú7õÓŸ?×xß:ÇêÍùÈÞÿ…Òû^ûz~®¿ÏÖû.Œ¯ûçíÍoŸÃ×ÅMçöÒ5ÃSU‹›Q*l-–BýÃ4µŒ9±Z,×(•{Ÿ ¾ÿ89±³q6C¦-F”;UK•,¬¥*æRCg9†Þ-×B}¢6»2¯¿ûoê”9²÷ÜÑÓ9v?_ýwéïmf¿ìéüÚØ)i•bE¡ZšrªØCõc¸è*ÌWµr©TJ‰ä^:'©ÿQŸ*¯k¯>z«Wõ.¢0{Í)L¥rÆÞ™…µr[«ÚÏ4aøÝòês¦÷>×ñ§ãæžýÞíê>êëæ#»‡Ïac{q÷žãÃuíµ¯;ÏçÎíyú»îu©ÏÞ^cØ¡»×ÌVmÿÛ®žï›³ûÿ‘7ÕŸ*'f?ÎýÏgÔ_ìÕ÷üÜíu;?uÿø³±Óßew¾è|ÛóÄtÿâ»ÖçÜ:[$½=—ߟ¾~÷úú°•sS¤y±¹1Wuñ95»Ý½çÝ.ñ½Ö¿‹ü¹Ï_sž˜÷Î)g*ŠåPì¾bÅPÎQ˜{)ÆZ˜JlU)U‹Õü|—ó-šÜýý?_c†,Ýc)kWžJÇZÙkL1–âEaÜ(V …émRÎwígFÝuˆ™Íµ3‡¾ß|¯îQÝá¿}N¾æÚ3ÏÆNvŽÜ^; ‘…R½cÕJ¥˜ë÷X +¥b졸±g=ªUÚÏôغۈï¤t©µñ5\'å²ûW}Ìm¸>zV‹å‹…r*ÄVísªf̹³°‡©N¹ÊÙ™L‰ßÏȯ“ºoèÜ™9Öi*ºEö}ÿÔ3{Ývb;Üö¿#÷»øùÏuÓnÌ.öÓöMwÝëÎá[Õ~Ïê:=Ý•±]ÿ;n{í¯¿Žßó¯'ÿº¯Ólž­®«ížo¾o¯~¡èóz/ºçÍͳ/L¾×LmÆ÷NÕµÿÅŠ…%¥ÅùÀû8þà?ìý²É\&,.¨b^s/6\ ÓœÊéÈ.³á†AÙ¹×B½ŠÕj¬……ýês½‰1 õÒO51¼üçþþÓy{¨ Ù¢Tø­«¥êÇZªÕc/•±•Šó6?gLÓKç¾ü0_óvæÈv§z¶:l˜Ê»î1>vsíÙº3ãÃv˜$ïL½—ˆBUbžòÇTªg •Z=æP«UÊu;&yg«wâso¬KâUôwÞÚXwÄ"A©P.(Ò¨ —°20¬Y/³˜[«âgÌßQØsË6:Ì©´SnU›Ì%¬ FÀ’â‚ÂìõÁ€µ:ÁBA}0)«,‹ƒf1 J…-˜L«ÜîÔ=MÏÇOvct×¹ö×¾ºŸ9F»Ûýæû·ÏŸ}ýµdÆü{޵µíwŒÞñºîç—EC&“É\,”Ê)%-KŠK ‹…Ã"A©°\PP-$ Ë€ Š%ÃL)Ô¦ÞWûÖaSë_Æô…=‹•úÆæÝ×-•>Ç(ÆZ«Naÿ)Æ2…ba½…Jyº”[­TŠêÕjûõ‡½–3–ŸKF½÷ýQ¾bTKû¡{¨Ì­XŒaòcÛ—–SÖŠ%%宊î¹óÝÔÚÎm>:Çõ¦íܳûoˆñÇÎÄÇÛÙÞ›L˜ä_Î s]p¼tX-)%«u™ñ™×Sw›ûký·ºÚÚg®sÙì®ÑÙ„éw=ßµ¾öÜbÔ&¿¦îsÿ}fË÷êV÷ákÝߺFwî8_v¾óf¦K}‰‹šëÙ¨­šëÔ)¿Foßf]m¾¼›ì°ŸæÛ—Mû×¹WÞ~Ïi·{¼MÓeórë‡n·Ÿó¦ýÐÙ9Ä^u~óñË}Ï¥öffò{ôlÜÿê&§7;>Þ}­ÜêŸ?ïdu-ó)?î§.³)²{wþœ­û1ëžÍëø½ ³ÍêÚO=[Ñù]÷s{ãþììç:»ç‰Ý¶ôŽõ!&cV•s™?Ÿ™ó÷e»:·ëëo].«²úËl¾Ò5/ûþgÃnÇ‹Úí¹›Ûÿ±aû6;w¿·lävÎ×}ú~£¿mÝýÿîÖeC_×÷˜ç§Úéö¹òÃìÔåLÞ|ÍŒ¾Ì¬ÎÿïkíPyUý=¦óîg®—?““?Q×ß:r»·Îõg:{¯+ûsßäÞæö/UºŽ¼¸ÊíšsÅçð}{·cü÷ÙÙë>×Qö·ë×÷üºÝòSçuÞØ×ùCoÎéÿ´ñ›ãÅôc»mÏÏ~¾î܉øíYÿuºOì-{1­˜¬êpŸ{Þ¸ùeîsÏñ¾ÖO÷Öåöªn·/&Ÿs‰ïVµñ²sêžú··öŬº‡˜Íé^ë} ÷¿sûÌíÍùbºó_êg7·ïøèÖ{Ùµßç¿é.³¿½—Í‹Ïøòµ|‹aì§èô·_Ë~çŠß©o5öc\ßó\îývèéŽÛãçšï1ºÔ¦o1‹ˆùó›ócX_}5ŸËoù^ß?MÄÖlï“þ¨N›[fçóòú{úž˜Žãöc\Çü¸éV‘óyÃ}Œ:çòéKuoì¿ìøýôýëfn¯éovŽÛÝ»~÷¯áþcÎÝ|ÚÙvãïÚ‰y1Ÿ‹êý›[ïîã>+~··©’ñ1îi÷Ëvþrnw~[Æ|øš³c~DoϘwô‡ÝöRavQŸÛwß\;í}ø0ŸoS_Œº§Èüüó5îÇ$÷÷c‡¯µ¹/&¿~‹ûÉmû¯†ÓõÙ±S_º|tÖÌ–ýNÞE§úú9÷¼™ßé·ª_³ÿÙUû½um÷:×D|§û¿ûëÜ·{TÄöËËïÞ=ÙýÙ›ÛÇtïsïyµµ[Œ6³ºôeç‹ÎïU]§S]LvoÄ‹ÌØ?æ]'úæk#¿vîFÛ?¿y_ù¹¾}˜ËïÚó»[õMÜlÎ-¦WŸ»{þ½-û/R^­Kå”{_î{‹o÷q¾{tÚ2÷q¯«¿¶ìÎúîØnq»=[t\LçmÍA×î½]ª'¶æ¿LʿܘÓˆœ›ùé/ñŸ«¿m—Ý‹üÛò_*ÌîëíÌÿ÷Úöbž÷"º÷nK~ŒçÃÄÜ÷ž6îÅ´çú;í|ìˆüèÞ7n÷Ü·Ÿ·îŰjç{û6ùé?tU§Ï›_*Œsýÿk®U±Û=tîµ×‹yý~‹ŽüÐ]ç6³{í{1Ëéï5ÿ&›®Fk§§S× }1Üîö1ÏÙüÞ?tútSßæºÿ—ïéçoËÔ]õ÷ïÝ[úb’UÛÙ=§6å¿Z2 æÕºLÎm?ºtŠë‰¹ÊÞï±>îÌ·ø\>Ng ·SÍ]NvM‘×ÿ]v·Ýl|¿‰Ì®{ñ­£»·èè©îì\ÝWYŸª¶õÇ(îӜϮ½/†]ï:o께þz£¦käõl×-ý1éV_Ÿ·ãmè³/õ=îKlÌ'®;lÇÌ-Ýbrµ]·»Ö†þ×ó¯ÎýS™›ºÅ¸÷øüRyµ¹­[Œ§{Î\÷× ý1n¹¶>·ÙØ-æ¹ÿõ½Çø-ý.¾ëfs·˜§®ëßz7õ¿.80IÁ‹„é륃ÎÀbµZïT)_­ËÖ¢0g-c«Z9æ^§•j©®‰A¶÷;+o{¨ ™ê±P‹™s…½Uêaˆ)Ær¿…¹Tk…zù<Ùô.Q›Ý{oê4s›ë¼Ý¶>æ^ÖÜ÷ß¶N³fÏ÷Ûÿm’<Õ±ò[«ÊÄöi +S኱+æ¬ÊTašP±1í¨ô†q4 bDQÐ(‰ŒÝ£ X Æ"¹0ë>S6$B06$"HDQ0B€0A0ÆA,ÆÅs=H³µÕæ5žÊø‰£‚$¶vÓFã#g³is‘ת¡eM]‚3®ð:¢v'ûµì°/ÞÀ9ˆþ,ÊÑå-¹âè=` }ƒ%®ú«¶º“VÃB.n‘ˆrÌ.µýj¥Sì êeyÏ0^n zn}±~l¥DÝŒ;%E9®Âr´jÞT¯sÖ~Mhâ‡|Ðæ!Í^á8dÄÒ 7€1uÁ@Qb å” ¡ývƒ +„{˜€ƒŒ¾:3ƨÀÓb‰«éJ:± 8CL=ÏK™²S"J:¶…R^bß³„sk4éU&’C½ø-õqOïF5#Ê¥À _†ÙOyÉ~"€V~‹Ö;OJ×ȃHÓ[2T'^–ô$M)ã4gH*cüÜVÀ…¼LYŒõ|ezH]~^>Õ†ÎÇõ0¾*¦ÝUGÔúh"E$5Û`€J弘YoßE¼3µÚÄ»{¡–BDÈIºp×ùª¢éàõÒÍÜÊï V¥w8ÕcÚžõsm€7}RIÅ7:_:²ù­ÆÐ4žÌ÷¿#P2'0âƳÂ[DÔOqý3C{@©u•Úxábò6Q¤P¿sd¨†|’‡VÏ/ +à?,)K¢aPþãz®}²çÙæ£€É§CŸƒ:e,I.¦DahZ‰å²z©öP"C‡}làBq©2ñE­ô7n¼1Iö ä«s²5‘êø×‚Ã-ü‡ÂßÜ¢š•e+rÒŒŠð#‡è,Ä&ä鈛‘£ëÖ,ô„iUÚ"i]ç—ÌõwT½oP‡tJÇ>QÛHÎÇY™”À/™c;Q6ýõ¡$*t–bâ‡b¡|·Àõô(ÓAq}L½Âô’è¦~=?4žôÒˆU9ÔöIÅûÿ“ñ©6ÅÒmÄ>1¤“C²bMëMÉ]¢T|…˜ìPÆšÒL•QÖÔ€ã7a‚<™†yb¼OÓ®”U +˜¾Wá0V¦Õ¾µ$KGˆ1"uås‰ƒN\T‰ÒW+NF*ªˆ¹þbáD¿hÀÚ[Ð+Ôƒ¢“à©j^ZóñÞ0‹“Ìsì+ Töñzà’tuW·&Œ;Íu•´Vµà:çëé60ëÇñ¿[ÊØ=Ÿ”CX6ñæFü²â®@…æ¢5§UÒ AÖMI„µî÷rË/a¬' +êCàRxàûÉ@žfÇ¥éíÀÅ›z£‘êEóÔ»YVŽz,аé™ÐØ;ë^âIdËGra ²‰Wªªoøp[?ýމfó?úMéßCõ 9ºXñÑj 87 ðØ ~öt}DÍð²i!О|Ìâ³fQw]2]àpùrÍ^È3}Ƹ6ëý8@„øw7¹Ðšõümˆâ]a9·hYc ÅEÐ ¨z ˜‚Ý;' §Ñ {ù¾.þÈAŠú §Bè»i3ÓZ{Dñ«Å(q3‰Î¿ü¹ýIdÕèWHòþ3;‹Ù[#»wŽ1•fIIöèå»F/®åÚíØ€µÈýÒ¯Ñ2„C/¿Î†BðÜ{çžåÜž4݆Öóí× nVï2ëpõmpq¨¾Àzœ D|½Þ錴M,9„¨ìÔìTd„òN„¬`™fôäŸ@>6A6Ð;Óà êõ%jrANR A6Ê•ä‡nûXÃUs²!Ž©öÂÑ¿Mzõ@iì!ºN6~Á=¿ÆP¼$lVÎ „·ÇP/ì‚Í2nshD$8ý‡} +díú¸ÿbÿùë1N¦Û*y÷B¡@žɱ•D4NÅɈˆë¸Ì~ŒiQê’— X¥’Ö£l€óEʤˆéyíõ0£ÌT‘Ó 4]LD–Äsœâ5Æ~øÌûð…û,‰pÞ6…)_S"é¬ûT† >5¾RzI nC`×ú>ò÷pU3Iî«Cñ6t¸mÀ&§- ¤ðg%ÿkGég»†*q°·X¬2£-À,öv2Ð=—LJ@ ÍŒ'"aìÒ¸ìÚÏeÔ=0û?|£C2½¨{yÔ2kÍ-ƒÃêí(¹©¶ž¯ô€Âm™ðn³I "¶‰¸Ï3‰‹õÅýþ=x‘ x5Ž>4õïÉ7ßîÕŽçG8ÄxáCKkg1+È@üÀµmc iãd½è‡þÚ÷2èrqpuBŸT‘y +çø††9p’,PT¾‚iÕC°ØñâB "lž=7Š-UܨÛîIä”3¦F¥¾UêŸîúØ©³¯lòr@Ôʪɯ¨¹p¶ƒÙð†1ÇâáUÆpDt¿ûdy~‹‰˜¹<'FeªúÑõÞÚe·.æ<®½ñôž}’®«C±“—‘ª‹¿û<²! ­e|,ÒÍq1^ÀÆâ +âlzŠïªþé9VKP² ;}Ò–nšFÊÓyÈÔy‚Žåìl “K8%ŒëŽïbõ«;¶xzø¸øe˜r pñ½Ÿ£}ßnÄ&Õ–BÔ”c6½Óö‘˜huyÞ´’“J »ÏïQp– +S>Þm ÆZ ât[À^›7Úë“-/RXb²… –m€zµ9#ûÀÛ™ á"á›ÿKwz‰¯IÕuTr>ÜØzÓN¬–¡…żà„L=hk$˜dç"œ1‹›?tÞ½(ÀÞ§mbyz~”ëªâ"L{f·Š‹d£èˆÂhkOßc(ì¹€êF$o5Qå2?ßÈ‹¯ ü\BËTÆQý’d1²vÀ íkóu_¿ ¾Oã|ùæÖ+|2wº;ÔäNX¢^y.Üý7‡x7h¢±pNkšºÕ|Q[¬s‰²1(¿È=<BÂM?DD\®¨#X•ÿ;toœíOžÞÕ1=¶˜¶ˆvŽÐ²dz<Ô +G0d ¥¯Ò …KOŠ,¢å?ÑuH%´Lmôh£‹«,l¹`sÀ°å'#(‡g.fJ+Èv‘?Rv÷[ûãì´á¯ž®MÔÌ#“.þ€²¤§¯ñ‚(XàécŸ¿ªøö­7˜ò‡¦Š=ßeêÙ^›^rëüú㼌»(–¹ñ¢^´uhÐI³È\ê°gDß2/œ3Ž3e¸‘ð×ѯx ñ–0c‚lº¥‡RŒ¦QH$áðC±Þ2¢2·§Èe!™§~¨Þûºl¬‹9‰×côãÒ f¤•LZVøñÑ÷Ö;Ý–ÑÏ*˜px^CC¯åøWCý?Ñ_R¶b*ØXÖ–P´…„чÈÂaý5•âï ¤“5XðïY8}Gùl/ªaá„ahè¼~îÚsCãÐ]±/ .©ñÂN~]ç»kÑüU&4”ÄÉ»³Èò0ÀCÁÇEp‚šÒ°D1æ‡æ_ŽšsðEÉ¥Š]nòBv¹LùU¡® wšk½œLDÏOÐÂô┺%zÜÙÊ;¸!üm Þ‡UÇ¿?Ô æ€æØL/»ú£úþþÀ‚V§w²T‘;ý$×…?Á•ÀCDEÇ2˜­çS=@/‚L3ÞÙ©f¢õœ è­ò8ƒÇÖ³nL¥W©!Zæð/žŽeB^RŸŠŽ~„;îè ~Ãy4µªž ßÝôÃ1£*ÔЬòI ؉ +/8âɘ¬æ*GÿУ6‡ÐšÍÝVX¢³„³4¾X}kP¯µùüÖw-H…¢5TD°DÄ—TÁžÙø©H yUäÇ,¼ØÎj–9'ñÔǤp »j4‹ž ½‡÷ ‡ƒ™™þïtv04˜–qP†cÀ·òm’æŸÌ!›e®ñYæèøÜmw·ú|ÖøPÖÛ5Jè +VÂÌ.GÍÉ®•v¡ÖIqšRœ)uî á{dÉÖ›ØÌ¯.m>°Ê¹£3òŸXŠÎªÎ‹XÞ¢Qnêsù×¥XºBPÃü~{ò\RÕ˜#&Ê%üs%0Z +En™á«ãu¥TOÃÛWë¢êVe|cf]×ÔÝ‘þÏeqÔèD}9ôŽ”å’T)'¥‚ãã¬ÍÈ9Ûéa{ æ: Ì ±p&­-— j¥ŽÞ*„îÕŒàá›Á¡ì™¾>º˜$BwC.“dQÌ)„.†´z²~[F$B—hc.¤:’×Ãß‹¹&nÈü×ÐÅ•s1tqõDè}QL¼ÿ&B7W†\zËdqV“&ta¤´4€ôÒÁ¿×Ô)á(ØÛç˜(wWÞ^dJOW”±rK~¨%ÒKäP˜U®h&wp()ò›† –:fÞ…2¤é­K1‰asbí'È7Ì™@cz­+”Ç&ÅíL½KB"ß%æ™—§Ë@Îtîñwgx¿ ;ÃïÓÅÐÓdÔ|_g×ä ¯¡61€›að̰;Íd¸2 +«1gê| ]vžÈIlʽ +bá"3SÌTø«,Få¦ÖeÔ­†˜l +«9øu½¡¬“P— xþHòäöS¡¢i«–-‚ŽHZED̈U”gBl°žS1ÀF› j×r0 Sk"|÷rà],-¼ËÒî§¾çÀ¡i$þrG8/ pn()ªØQÿGìh¥Ü½!@ä²û3 æX¡ ƒþþAOÚ\2À^ü¡=ùò…áS1°fs¾]køqÀ½Å„€‰DHâÒNRLëþ!j:œT€ÂÞZª¼à K¯jaã/©£ÁéºMoOFs1§½'øÆÌ=ý¾pÕù34_›@ [Ý2·îD¶N9>dVÚäè…_³˜þa¢ÛUÉÕ¬¾gRˆÿÓ1ŒþÊ`ÿJÍT:u9éLãU;vs~‡Î9_ 1µÖ;lø]˜IOïâó3—i5‘…Á…‘¯ˆ¯} à/¶'}ø˜ÇqÉò~ ±îËŽÊÚÿ]­PAF“öžßåÚU>cngÏ×'dC·ƒð…Rï$½büÔ‰%ò’éu[µEİrë|ÛhX¹2É v¼×Ÿ)i­T潇jE€Þ; ž8°ŽÅZ¨™“MÓÓ|Ó[ ÷z„eíÀ#ø4$T•m˜ª‚ÄYªÿŸ¡ÝäSÁp3¢y·(a´yc<Ð ÏâK2 ‡Í´.ƒ±Ä]Ôÿ$Ð1¿n›%ç÷‰(ꀞýð]vöј˜¶øE¼…i^¯˜»_ÕtzsÃJD”€l£¼}ñF!l¦tl-©™wÕ§4Ïq=Ûm£îC´8¬KK‚üùTq&ƒ¬±ï&”í5NÁ?N÷Ù +$v’#‹>Ü£À,S\<¦*a§G” q ª}Rr;%^#Z!õÇ;+ £)š~ðÒ±U»FìH“ #Ú&×XÆy¯kdMk¼#-fùÃ,i­ÛºÎèÍ!ÁÍ´Å»^–£*–ðK´Ó¬v“iÝIw$= jëIQå”û,=kiØâô¸|Ù±|É fnàÝZ:ºww%z,”Šâï*Ø å@Ñ.Ű ðêŽru«$'Úÿ›QË{3<”ÔŒõ0ÅÎÎ#7gWÂG“Ÿðúâ„_Œ{NÖ }ï(‘ûH‘Ø?»ZVT`Ýw£J¤•—ß_+^|Aº ¹"EއdH 7 Âþ•î«ÅåSêkKâºã!”Âÿf6פŸû©(É¿€|§S±¼¶í臲CdVržwçgÖøoÒJP6šØ{SiìH<;þ:4Áï·ˆeÿÈOØ]9µç<È";³‘Xß´(R—Sx ƒß׬ÚÝœ~­;BnŸ39P²víü2@kW ñ­æÜϘ%vUdž‘}‰’¥/ Kõ@ÝM+Â:‘.w¦¿ïcÀ;Òœ=2DÍÜÝPÕ?¼šº< ¿ànLs$iIDÍw?@bð¾îF2¿ ¥X…0¬†–Dôº©Ÿ3TøþH ºb’.yx¿Ð8 e¦’èvw72ì‹Dxáîä~TQE l‘›€wìp7ˆÑ©&\,*1RÌn»Ëg¤Qš4ƒØ™% Í„Èvl§ +w®•´ˆÝ‡ø!r¼¶%^ï“EwFå5†7ÿ3¬Á±¨ŽÜO>ÝÈÁ1„Ê1ñ¦Ô¼Á¼„© Ú˜.‰­ø/3$g3ƒºŠ0OÆÄ¶äKĨËfNÌöû÷ +°†Ý•àӑGc‹Ìû ’Yzm¿þY<«Ño‹…x²Xè 4úWp¥ÊQ@5iF@ìY³ùÊ" ÄÞÃÕŠN(>Þ»¯úÂú ޾‹Í° +´Gr!èÉNt£n6ÿQ‘ ȵhqS}Gèq¾ÅÑåtLF²ÍMG)Ñ;d ‚*‚¤dÝ9Wšî¹£öß^Ûš0ÓÐ@°,“ú•AhDÉóكćLß_²Ž¬‰¬|o-]íP~Ð}P¯KÍͺA$3âÕ_n:qù† AXNƒåùÅ%ˆŠ[í Ð,Õc?ûïGTüz"¶Ûÿ¯Ù9§l!XM%µQ÷GØê6KÚÆún#¿µÑÇú±gáNWŸ$Z¤”=5ä€u'œ:€V+9>Ý\ó¶ºn¢ è¥Åø$5d¿ér1Œ˲¼PµTì·éФ^!…å|{V¸éø€¢éiÃò¨}¬9FÑàÝÄ ~ðÇMÏŠ!Síœ4ŠˆÒ³Šô³nCu&7†HEƒÔì͂М=ýM?ÿíCŠvë:V™ƒM±eèäfiД2ß‘ &´­®XÛ À7?º +,.–{‹HšU¾¨ödp³/7¨s•òÓºž'ñ=¶áíðvˆx¨Ä\´ çÊÒ1ÐÛ° Q;†²‚Z•`ãœóKû<ùÏr†Ñ ™I¬+3^=ê8€ìÓ:n eA‹‡vm™·}c˜iÑgíAû 0Þ¶e÷š¤[ áýåL%ô\í“_BÎ̯Ç"¥’&à ¡ÑÚÅö1Ã-…+®²M–zàÔEÄwR’ï‹STóÞç(ÍÖVT“n^ð¦®Á¾lvXµZ¨„ÊÔ\xM8£ÍWŠƒ"ïÃzè™: "Üt¬éÌúE "“’Èà²U¡tðxV™_šÁ›§(O8¿!wZ•:ÓÐX¿xo”vo¸ÃIy¤èØ.s‚ú²q¢˜«Ûe¡´>á{Ïà뜕iäPß®AƒÈz°™¨nÉDD‰ð|íRå‘-0W kYÔLE‚nM…zˆ+‹ÜŽØété¹m‚V ¯]¡Èä=ºÆ D÷dP2bÖ®œkG‚åe‚Åz_‡-„½Ôœ>kñ:¦ªˆÛ¿1žYX”¯.Ðâ ã H‡Ä­” ú‹úÓš‹MYšÐ®ƒöÏi€l©Ô¯¡ÉeÐû$–­ +®LO¶4„ø<“0¢®âúoMÕ%žx¯î%ÙNxÖ2¡åÖÅiî稃@‰]DI{ÕÉæ@DðŒ0ã,î굿¥ð_Ê5~’Ì6ÚVmÀ}½¡XYmð$‰KæIöɸ*Úõ°‘} +­6)Ë36Î72öég²O5éd£XB8À>)Ð%ã ¾YN[­'¦pÙ';¶ç† âÙË©Ë>YO¤ì“ÕÆTÂÁ†gÝŒß'ÓaÙ'¨çîvšÒ³¸j +~PE¦¸E/8‘g}Ÿ`P%ïgÔP3"Ò­BFûhšúÁ¥–:=°p}F°Ù#¡›¸åÙÏL>xϹ7#ЛÏôC…-jF Ÿ˜/²ïÉV(¸=ÜÜËb܇xê\›g1îZÚâºFJLu¿ÆRaàô]üZf$ÝßaöjÒXÓiF³«ªXz‰Ù˜gnˆÍ‡æ~ëÛÜÓi`áë0åkÅ32ƒÐÀÂÐowŒ7%¦°ºÊÅŽnBL®p&…kZ¤ÇGß ï¢ V™Ãdǰ.°håÑŠÖ§-¤(fŒ`a‘0)ºœHØS"¦ú6…‰ÚÀ{È&fx¹ÒÃëŸç<w«äÉñ‡iEzMx^ˆ H¤œÇK¯×qn°ôUá„åÚÊTèL´Ôo!pcðß/à÷XqÓuJQZLŽÓð1²Ãbƒ*‰'[៪à¼zÌuë”:x$Õ.ƒø@ŸÆGFþ2 íSFæ +ÐZLžÍP©Iƒïí«)¢×Ŭ$mÇOp`)òIR,•ìáqjp½ñh=«ÅüC¬ÊàðA>ƒÆzÓ'lÁ +–fR’†èû|áîÅ}M¤cd¸UÚÒŽø”™.ÿm&ÜI8æ¯7`À@¿¾\D*ä®D5Ü óÌÔ sBW•ÎEè(}·!//¡SBç| ¸ûs®ü™Ïf>kÊ +Ó9ÃZ¾etžtä0Önà@7÷Î]ø;Xš×Ü|çÊyC•-² Ê`Ò9¡€ÎÄ)Õ‰`‚̤AcdU^w¶¸¥ìÈÆä4IÛž<%ò<}Ö“¢=S VyƒÿÞÛ=ã ,ô¬kXÚ‚‚äÿ”AîxÓ¿¸ª¹ÌŽÄ˜I’Bh]Rzû·žpP‡[°4˜.;‚ᮓò2õíÉÞæThæMƨ‹½»]ªÞMs¸á¹Bpp#U/qQòÒ(×7˜ý L׃ìr´þ,3:rïnÁ¸›µBhïnRÝ w®O|ò2»[«öõ‚Hü~˜·»EXo$°’Ÿió¼×=š´P…f¸Ïª}^b¾¯Í%À(û¦!CE$7(ö€NŠù#,*§¸pDì“Ï6ú9bz{˜Œ†a?b”­ ´aå±ÄÖîô’xÕ0x@ŒáŽ}©Åè4ŒÊ –€õ;÷ Éyò˜q{ürÃ1CvîA5†¡„àt¬1«L!Ëãç +Ü©Rcð™>ŽÙ0Œ˜YAÄïÛଦnƒSÓ4Ã%zaìÛ„ýÛ×’j½Öz½s@\ Þ€°ÙP-~µ1lj ¯m$k>êp“Ev-±ZNbÑÞ©RJ AfZÀa±µ°¹ ªˆ­;†¥°ÃÞ”lØ’/ˆ…%êïU %þòÊ“·ÐÃæq™¯ð‚“?…Þ0ìDÁ,Ùz…S·>ÂpP °(–Hm{Ḁ̃͗ݫý€S¼–¤Xb ÌKK­ÅðYýJ¦3sæfW.‚ØÞ´+´½òEôûÄÙLYÓá%¥°£˜D“¼S8êô0661×®`‘¡˜›ÃI©Iøe¶-§¯F,–—‘•ñÌø[ò _«/@SÌ&ÉCÏ…)•Ù–Cœ²kU‰É “D§Èlq`öC“{™¬ ˜È¥ˆÇ¢•}ÎÖŠ>CÙlÑÊ’æÊ¨ ån:eÐÆúƒÈ¾Ö•ÐÚîŠ#v2››h8·Eƒ§È¶Ì†f#@ƒFÒñ• lMò…X½Z˜Z,#>I"â劮†¥+Lbazºr骘7xø­•Ø +ÁÐ \!ˆøùÑûz¶,$Q¨ÐæGºÖî¯s)³wE º{,ЗE‘h¨!¹LF2S¢¹æŠj á r Ç®Ž„ˆ³—pBÛÛP+¢$Òµ#O›}òX;&]Q`ÐK®2!Бƒs›ˆõ-]s8E+ ±¾¡‡|Z\òdÑÕ8sªêQ¦šËSŸDrÆ-‡þ)Äú®yž—³ƒ·}÷‚`&¶ï;y™mpL»½YS\kéqÑO§Aú’aç娳±JÔŠO8,f+¸êdG¢.{6Z%‹)L:{Ò^Cø(ªç!wè•ä9ðûX“Ô± 7 73WÂßÎÉÝ›ÉÅ1%÷žŠ.& Qðae©C…‘Ò:»4µC‹a˜{ÖV€¨®vëì}^¬´XÉr¼bA4˜,Öö÷|é^Vtò¸ÃnÂÞ‰ÿŸˆU0¬ÝêÓ%\е½É·W#{ÿ¸/„ΠÅ +Ã[I§+X,#œ²˜:Ãd¤XR¥çæB*P¾¬z¬rîeeßz‹å>V(eÑ­PÌM·K5V••=õ²iÃf§‘¤ñ×¼c%àUÉâÊ[+qY–^¹è‚“Çú8Êû$³–×X†oáêˆm ½g Ø£•ŸÜJSY@Ó&ŽE˜p¬Š:<]–<ÿkU¼ù²ÜsAjk$Œ²ØKè*.ÔÌ1ÖÑ‚±êîNJ.h鼯5ËsîM“çª Ð[ºö-@]ŸÄ]°kXŠÄ «³L^v-ž»&G‘uãÁ$Roew‰J·I×Ü!yÈ‹ßjËW@RP‘=óºt½hƒ;=^.·°|¦Ã&¬>ÁúðŠC<ûš¥gÀ$F—ÝfB‹ÍWë+±GyÒ¼âqÔÈÜOªÝ4ê+˜A[€(»-~%á XþV:à6¿âžŽœê¬Y𡨽 Û!d%.=^íÙ¼-tš ÕXQ,mÄäàÛêäiJÎ1!Ç‚hÆ—¥ï¡ôoŸT,- Ú¾œÀ²n±Hó¸üc¹–%àïòze¡]±jq,Ï‚f>+‹u`\P¯2#YCDªYYiDÀjO=Yå©[éD@\åi·I{¾oY¼‹ ÒxÐgúôƒÃä×.±y,¡²>ÑžS€ðóµÆc9]–ÎÏX·³O°Å¸c ZLã ×ñúX‰—ÅËeÖO÷)è_'·+V³juÀå4£èÄË7UƒN6–¨”WÛç¦c™ ò +/6b;w…e1Oï@Âi{Æ‹Eðÿ|šOOc‚Åuv¿@xŒâÝ%1Úžwp×à„øÆ‚[ë(A¼ßa)É•ra¼V6\¹¸Fpñzòžw¾€dÇ–iµ«Èzy!ò1V–b€šjѪHÖòËÌÓê±J&¦U¢zà6ÙÀ +¥'ßxYþ²ÀŠýå"ïý­‡-¡¿âe5ušZ‡sjé.Y¤¡©B¡éÀp*%KÒ'²ýŸ.§Œz“{Õw¯¿Ê´Î#”Þ]9ðíëËVÄ»r[W^9“Š#w(¯~—­xp¢žl…\¢c³õˆ:I®(<œò\‰½ÆWÇD¿9qækõÒƒÉV¨ËžäZ!&Wvl¶BRËÐùÆì-œpåÊdd«Ï g'’0jÅÍ÷¯“+¢1ËGÕ÷[–Ë•¤T°»«ô)_ãr…õÒO¶ßJÈüJ¹?溌ŸŠåª!8„UªŠ,dÕD;0ÁÀT—ëÀ^’5åed€þJ@“Kf ¼à!Ø€Åhž\·OD)á¥nó#œ‘ÿ•i0@Ÿ'x´á€iUúÙ?ºJ«> + +sŽ"N[%—pö!1’V±_›({e§rgbÔË×Q£cÑjµŠÑª2ɃzK4#÷ÇÉ{F¥ÎQ•×VUAFppædƒf=F©wÉ{Á:y®úùu’”Í31VµtÅQµ `ü¥¤ÚŽ­"…¥J+@X¨jU¼Þï¬+ "rVƒ¦ÔÒVK+@xò/éZy +`‰+àKxÅÏ)à¥v%Gºˆ×•,gV@øÀhgxÏ +¨ïdÀ¼H˨–— ذ„ +Zà¢dŸ2!bXîѫΠ·òŒÒ8ýÉO¾XIì„â7q|¯éÈ´Eä”{µLœŲûŽ endstream endobj 24 0 obj [/Indexed/DeviceRGB 255 25 0 R] endobj 25 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream -H‰|Q}Lw¾£Ü«“zZ½»9²h†X±RQV¢ìªÀ¢£ÒCN¡ÅkAÍf„lq|´e›Ón2ƒ6@˜¶E!ò!C‚àt•M’™˜øþH¶k÷ÏþÚ?OÞç}ò>ïŽ`8ŽGlIÞ½%}ó;Ž ¼Éœ&XWïâ囟Ȉj\ —…Ph-r½xñb;7Ã%mË'C±œd-”jäÙÙµqq1Q>Ôú16ŠÑh4~Ô²›ÍÖýk8f³s66Å’c -­‚ÉΙ£ÙÍùù¬ßÂÆ -œŠ}É'byËñöm¡Œê¥Pœ"`–D,ê¢ÀG>—/ûü1$ ‰“b'å‹)JîŠ-wñK3pnFgçWQ(|5 -Arþ†‚A©†ÈIPÀaÈÙ -´œ9ù6åm]´H—½bmüž'°ôÝŒ1ŠóÅbÿdå‘P(™R^†’°©y:‘T¡›¾NâgÂI**GD÷âŒLÌA?9å× XáÓs¢šM{‚ØÄT+·nØAÔ7µ7ÝTÏ5ïLa*V%Æ"ŠÙšn”+J†á‹0‡Â´'Å«œmk¡Š›ûì#jÐLxŸy·ÝНfœråÓ‡W{Uãé£h©>Exº6•¨iè¨íTO´ìÝ“ ;˜Êd¥´“ÊÙ©I³ÆÁyIˆPïL¯¯|Ë€~îMág=À?’‰‘a ÷iÄ•QrôÃÂ:"n ½ñPA9å°Ÿkªn¨¹á"Ëù -žW¡ÿ WîBì}æ=2Q?OS¨4¡~ÂU×XuY aÝïÄ:í[Æõi»kª é¢dâÈ…[G†ÕðêÓ?A9iêÎhdêr2ÏdªmÇËË?dê!ž)ý z@3Š? µ’µv~%õAQÅ'‡™¸Ò¤ƒÆÝA©©{_GKUh£aÀ€z@z¥î’'ùýùtyöùÈS kë«jç*‚PÔBµ&küy9S]õåg§ékuí-]ê‰.CttÆöMþçÞÁ{ÄhY´Ç.—£‹ ÷/ —DÑ+mÛ'¶Ý ½üû¶G`ûu›GéS%¼27 -Äxf®™qÉ•c¯|wó†jbû8 -E¤Vi¸`¸ÇÓŽ2Bé‰ç³ÒãTQ“:XF;û¨õ™½.ævkÇè7ôŒpƒÛ JÎÈÚ@+Çb5~Á¸'-;Çp”I¬ÉºØ¯ê¾z}„V”>Ý ´â­Óð•Gö¤”:_Ñàhþô—SCMíA}·¯ÿ¯©@Š@1C‹‘ìÁ:XÔßùí—hy"!W¶97ï½âŒ ÊŠÊ:ƒ@+6R[ßD²ãe¥'?bÌö½–4õ¦¬ž‰Ç]Å ·xÔ Ñn·»ÎM¢\÷˜[NŸßÿ~È¢ÊàÁ—f‚gªB^O/ŸQÿÿÿÿÿXUi endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|SmPSg¾—po ²i%^sí½·êìê•–OËÒ‚|ˆ¦QÁÁ%(Q ˜PkWk!·¶D@QP¡Êò¡«°0Ò.Rˆ‚® +le¶ÌØö\|™Ù½aÿì¯ýóÌyΙóœsÞs^svÂp_)‰Ü·ëÝØ:R¯ÓnÚ£>œ®Ô9‚,Oã¼§3¿ÆB›‘åõë×1<|ž®l^C.¸cN8>6®Ír§¸Í[¼è·Œþ^Ü__ßeôãv¨´)jN~BoPg蹨ÌT­.K«SÔ*onGz:·,¡çtj½Z—ãpþ·#N£çÔCšZÇ)…àa¯S«8ƒN©Rg(uG9­#ò?ôÐÿ)Åi29A‹SdjLnœzN™©òT´ËURµÙ™F­÷öùPþñ‰,5À©Ô‡0 ÇVºbë0ì= ‹Ã°xS`ØJá ±XÌŠÝÃþ«ðZ'ÜÉàT*ò™EÎŒs©ó(Nœ]WÜÆÏ·á®o;ó…‹ñK…$XP7…Bá<s$âP²ô…x‰<¸lC(8É·S 9˜$ï_÷¿e‡Kv”/n¤ç&ä†2YtÔ<‰V€”†õ cº $èmö󨙦µÈ%¯Ý¼ï%lƒˆÎ޲’Ë9|ßDq®;ä½Þ†<‹L)Dk·_ŒâÂLJŠm¼Õ†oñÉ6t×,n¿OÀÛà95n²¹ø—ˆ ‹Öª25±DõõÖëéù›qQlÑÆ0„¶|é©Kò†àË~P ¹ÃÔtÔŒt®¹ŽÊ¹Ùk°Ñà;>ójfgOpkKžÕ6v ÈÆv UQ:†©Š&*kÚªÚéñº¤}¡AG¢ÙĨVR:÷bBåkb¦´pDÐq»«+tŽa b†_àåÓ y.â×{@ÄÌ /¿ÁKŒZ–¶»áŠ# Qf1l…c—®WÔT6¬¶FM‘F#CË6<ÿÇ8,N‹øˆE†B½¤õ–+µ%·iðèÜåobý~¯ˆß[Y‘ÅdG¹7zr‡hxgáN(;÷ײWRJhý§Fã)¶‚ 0‘ÂΠ»|Gðú)¨¤ý7PŸdcóÃ(öºDG'ý­’¡m3èqpa•AÏ‘8\¡IIg +Éò_l ÀTU—T™.¹ ¯¥Ê'qì#[QráO_1÷®´ÖuÐãroïý1Û——û؆wñÞ¢.aŽ`È(F_/ 3$Ü⧉naÚ^¾ùïî·¿ßùôÿØ9-†óy¼5?ÄXBWÐMÖ"–Ž>k¸öðlÎëçßèǦáÞ÷"¸ÁŸ¡ì/ô>Ú´ð.ü\á­§ðlØ´€XÖE½jZˆð˜ÿ÷âžý<{÷å+V’†"r`× /úÎÑüܲKçm(‘š‚ +3y ¶SÛKùó$|¿Ýú/ä²'-þ0k$¥ãωÒœdNˆ•M%QVËK)#ï¿ØÙÒCÏý-àwH¤Øî³·ù›OXc©ÑzA&AWó‡ð¹IÑ?O!—°È'è¢xÏ—ÉÕÇýåº?6Ñõ×Î}q‘-è' +óNèÄ“õ=,”ûrV,9må[ÁÛjµ^±’èuÔ*f.§üÁ͵ØmÅÀöö·_ñ_­â¨ÿÿÿÿÿµ€[j endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref 0 31 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000018370 00000 n +0000019014 00000 n 0000000000 00000 f -0000018421 00000 n +0000019065 00000 n 0000000000 00000 f 0000000000 00000 f -0000021364 00000 n -0000021436 00000 n -0000021576 00000 n -0000023201 00000 n +0000022128 00000 n +0000022200 00000 n +0000022340 00000 n +0000023939 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000070538 00000 n -0000070354 00000 n -0000072471 00000 n -0000018833 00000 n -0000072358 00000 n -0000020901 00000 n -0000069780 00000 n -0000069828 00000 n -0000070422 00000 n -0000070453 00000 n -0000070737 00000 n -0000071057 00000 n -0000072496 00000 n -trailer <]>> startxref 72685 %%EOF \ No newline at end of file +0000073499 00000 n +0000073315 00000 n +0000076083 00000 n +0000019477 00000 n +0000075970 00000 n +0000021626 00000 n +0000072741 00000 n +0000072789 00000 n +0000073383 00000 n +0000073414 00000 n +0000073829 00000 n +0000074161 00000 n +0000076108 00000 n +trailer <]>> startxref 76297 %%EOF \ No newline at end of file From 0ea7a56fc3e600da5567e25401d30394bc7f293b Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Mon, 13 May 2024 16:29:35 -0500 Subject: [PATCH 006/357] Work on modification table UI --- CageUI/src/client/cageui.scss | 2 +- CageUI/src/client/components/CageDetails.tsx | 60 +--------- .../components/CageDetailsModifications.tsx | 106 ++++++++++++++++++ CageUI/src/client/components/helpers.ts | 46 ++++++-- CageUI/src/client/components/typings.ts | 43 +++++-- 5 files changed, 184 insertions(+), 73 deletions(-) create mode 100644 CageUI/src/client/components/CageDetailsModifications.tsx diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 932eb6c34..5f8aac7cd 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -203,7 +203,7 @@ .details-table { font-family: arial, sans-serif; border-collapse: collapse; - width: 20%; + width: 30%; } .details-table thead{ diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index bd1a683e7..fc3727fad 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { useState, FC, useRef, useEffect } from 'react'; import { Cage } from './typings'; +import { CageDetailsModifications } from './CageDetailsModifications'; interface CageDetailsProps { isOpen: boolean; @@ -13,11 +14,6 @@ export const CageDetails: FC = (props) => { if(!cage) return; - const addMod = () => { - console.log("mod"); - - } - // close modal if user clicks outside its bounds useEffect(() => { const handleClickOutside = (event) => { @@ -51,57 +47,9 @@ export const CageDetails: FC = (props) => {

Status: OK

-
-
-

Modifications

- -
- - - - - - - - - - - - - - - - - {cage.cageState.extraMods.map((mod, idx) => { - if (mod.name === "") return; - return ( - - - - - ); - })} - -
ModAffected Cages
{cage.cageState.divider.name}#0003
{cage.cageState.floor.name}#0004
{mod.name}#testCageNum
-
    -
  • - {cage.cageState.divider.name} -
  • -
  • - {cage.cageState.floor.name} -
  • - {cage.cageState.extraMods.map((mod, idx) => { - if (mod.name === "") return; - return ( -
  • - {mod.name} -
  • - ); - })} -
-
+
); diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx new file mode 100644 index 000000000..83a2bcb47 --- /dev/null +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -0,0 +1,106 @@ +import * as React from 'react'; +import { FC, useEffect, useState } from 'react'; +import { Cage, Modifications, ModTypes } from './typings'; +import Select from 'react-select'; +import { convertLocationName } from './helpers'; +interface ModificationDetailsProps { + cage: Cage +} +export const CageDetailsModifications: FC = (props) => { + const {cage} = props; + + const [modRows, setModRows] = useState([]); + + const modOptions = Object.keys(Modifications).map((mod, idx) => ( + {value: Modifications[mod].mod, label: Modifications[mod].name} + )) + const addMod = () => { + console.log("Add Mod"); + } + + const changeMod = (event) => { + console.log(event); + console.log(cage); + } + + useEffect(() => { + const newModRows = Object.keys(cage.cageState).map((key, idx) => { + if (Array.isArray(cage.cageState[key])) { // finds extra mods + return( + cage.cageState[key].map((mod, idx) => { + if (mod.name === "") return; + return ( + + {convertLocationName(key)} + {mod.name} + #testCageNum + + ); + })); + } else { // finds separators + return ( + + {convertLocationName(key)} + + ( + Array.isArray(cage.cageState[key]) && + cage.cageState[key].some((item) => item.mod === mod.value) + ))} + onChange={changeMod} + styles={{ + control: (base) => ({ + ...base, + backgroundColor: 'inherit', + borderColor: 'inherit' + }), + indicatorsContainer: (base) => ({ + ...base, + color: 'inherit', + }), + indicatorSeparator: (base) => ({ + ...base, + backgroundColor: 'black', + }), + singleValue: (base) => ({ + ...base, + color: 'black', + }), + }} + /> + #testCageNum ); - })); + })); } else { // finds separators return ( @@ -52,16 +79,16 @@ export const CageDetailsModifications: FC = (props) => styles={{ control: (base) => ({ ...base, - backgroundColor: "inherit", - borderColor: "inherit" + backgroundColor: 'inherit', + borderColor: 'inherit' }), indicatorsContainer: (base) => ({ ...base, - color: "black", + color: 'inherit', }), indicatorSeparator: (base) => ({ ...base, - backgroundColor: "black", + backgroundColor: 'black', }), singleValue: (base) => ({ ...base, @@ -69,13 +96,13 @@ export const CageDetailsModifications: FC = (props) => }), }} /> - {/*cage.cageState[key].name*/} #0004 ); } }); + setModRows((prevState) => [...prevState, ...newModRows]); }, []); useEffect(() => { diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 9575b64a9..7fd11f47b 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -134,4 +134,24 @@ export const convertLocationName = (dividerName: string) => { const words = dividerName.split(/(?=[A-Z])/); const convertedWords = words.map((word) => convertToTitleCase(word)); return convertedWords.join(' '); +} + +export const getModOptions = (key) => { + const dividerOptions= []; + + const floorOptions = []; + + const extraOptions = []; + + Object.keys(Modifications).forEach((mod, idx) => { + if(mod.includes("Divider")){ + dividerOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + }else if(mod.includes("Floor")) { + floorOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + }else { + extraOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + } + }); + + return key.toLowerCase().includes("divider") ? dividerOptions : key.toLowerCase().includes("floor") ? floorOptions : extraOptions; } \ No newline at end of file From ef318e0c9f1d24f830720b0008829648de214074 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Wed, 15 May 2024 14:31:11 -0500 Subject: [PATCH 008/357] Converted state management to context manager --- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/components/CageDetails.tsx | 14 +- .../components/CageDetailsModifications.tsx | 114 ++++------------ .../src/client/components/ContextManager.ts | 25 ++++ .../src/client/components/ModificationRow.tsx | 88 ++++++++++++ CageUI/src/client/components/RoomDisplay.tsx | 29 +++- CageUI/src/client/components/RoomLayout.tsx | 25 ++-- CageUI/src/client/components/helpers.ts | 127 ++++++++++++++++-- CageUI/src/client/components/typings.ts | 86 ++++++++---- 9 files changed, 352 insertions(+), 158 deletions(-) create mode 100644 CageUI/src/client/components/ContextManager.ts create mode 100644 CageUI/src/client/components/ModificationRow.tsx diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index cf2aa9071..2c00ebe02 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index fc3727fad..59de1ae11 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -2,17 +2,17 @@ import * as React from 'react'; import { useState, FC, useRef, useEffect } from 'react'; import { Cage } from './typings'; import { CageDetailsModifications } from './CageDetailsModifications'; +import { useCurrentContext } from './ContextManager'; interface CageDetailsProps { isOpen: boolean; onClose: () => any; - cage: Cage; } export const CageDetails: FC = (props) => { - const { isOpen, onClose, cage } = props; + const { isOpen, onClose } = props; const modalRef = useRef(null); - - if(!cage) return; + const {clickedCage} = useCurrentContext(); + if(!clickedCage) return; // close modal if user clicks outside its bounds useEffect(() => { @@ -37,7 +37,7 @@ export const CageDetails: FC = (props) => {
-

Cage #{cage.name}

+

Cage #{clickedCage.name}

@@ -47,9 +47,7 @@ export const CageDetails: FC = (props) => {

Status: OK

- +
); diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx index 70d2eaf3a..a157c06cf 100644 --- a/CageUI/src/client/components/CageDetailsModifications.tsx +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -1,113 +1,49 @@ import * as React from 'react'; import { FC, useEffect, useState } from 'react'; import { Cage } from './typings'; -import Select from 'react-select'; -import { convertLocationName, getModOptions } from './helpers'; -interface ModificationDetailsProps { - cage: Cage -} -export const CageDetailsModifications: FC = (props) => { - const {cage} = props; +import { getModOptions } from './helpers'; +import { ModificationRow } from './ModificationRow'; +import { useCurrentContext } from './ContextManager'; +export const CageDetailsModifications: FC = () => { const [modRows, setModRows] = useState([]); - + const {clickedCage, room} = useCurrentContext(); const addMod = () => { console.log("Add Mod"); } - const changeMod = (event) => { - console.log(event); - console.log(cage); - } - //TODO move table row to sep file to improve readability useEffect(() => { - const newModRows = Object.keys(cage.cageState).map((key, idx) => { + const newModRows = Object.keys(clickedCage.cageState).map((key, idx) => { const modOptions = getModOptions(key); - if (Array.isArray(cage.cageState[key])) { // finds extra mods + if (Array.isArray(clickedCage.cageState[key])) { // finds extra mods return( - cage.cageState[key].map((mod, idx) => { + clickedCage.cageState[key].map((mod, idx) => { if (mod.name === "") return; - return ( - - {convertLocationName(key)} - - ( - mod.value === cage.cageState[key].mod - ))} - onChange={changeMod} - styles={{ - control: (base) => ({ - ...base, - backgroundColor: 'inherit', - borderColor: 'inherit' - }), - indicatorsContainer: (base) => ({ - ...base, - color: 'inherit', - }), - indicatorSeparator: (base) => ({ - ...base, - backgroundColor: 'black', - }), - singleValue: (base) => ({ - ...base, - color: "black", - }), - }} - /> - - #0004 - + return( + ); } }); - setModRows((prevState) => [...prevState, ...newModRows]); }, []); - useEffect(() => { - console.log(modRows); - }, [modRows]); + return (
diff --git a/CageUI/src/client/components/ContextManager.ts b/CageUI/src/client/components/ContextManager.ts new file mode 100644 index 000000000..e82f6c576 --- /dev/null +++ b/CageUI/src/client/components/ContextManager.ts @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { createContext, useContext } from 'react'; +import { Cage, Rack } from './typings'; + +export interface CageContextType { + room: Rack[], + setRoom: React.Dispatch>, + clickedCage: Cage | null, + setClickedCage: React.Dispatch> | null, + clickedRack: Rack | null, + setClickedRack: React.Dispatch> | null, +} +export const CageContext = createContext(null); + +export const useCurrentContext = () => { + const context = useContext(CageContext); + + if (!context) { + throw new Error( + "useCurrentContext has to be used within " + ); + } + + return context; +}; \ No newline at end of file diff --git a/CageUI/src/client/components/ModificationRow.tsx b/CageUI/src/client/components/ModificationRow.tsx new file mode 100644 index 000000000..837ea0105 --- /dev/null +++ b/CageUI/src/client/components/ModificationRow.tsx @@ -0,0 +1,88 @@ +import * as React from 'react'; +import { FC, useEffect } from 'react'; +import { convertLocationName } from './helpers'; +import Select from 'react-select'; +import { Modifications, ModTypes } from './typings'; +import { useCurrentContext } from './ContextManager'; + + +interface ModificationRowProps { + modKey: string; + defaultMod: ModTypes; + modOptions: {value: ModTypes, label: string}[]; + affectedCages: string[]; +} +export const ModificationRow: FC = (props) => { + const { + modKey, + defaultMod, + modOptions, + affectedCages + } = props; + const { setRoom, clickedCage, clickedRack, setClickedCage} = useCurrentContext(); + const changeMod = (event) => { + + setClickedCage(prevState => ({ + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: { + ...prevState.cageState[modKey], + modData: Object.values(Modifications).find((mod) => mod.mod === event.value) + } + } + })); + } + + useEffect(() => { + setRoom(prevRoom => { + const updatedRoom = [...prevRoom]; + const clickedRackIndex = clickedRack.id - 1; + if (updatedRoom[clickedRackIndex]) { + // Create a deep copy of the cage state object + updatedRoom[clickedRackIndex].cages.find( + (cage) => cage.id === clickedCage.id + ).cageState = clickedCage.cageState; + } + return updatedRoom; + }) + }, [clickedCage.cageState]); + + return ( + + {convertLocationName(modKey)} + + ( + value={modOptions.find((mod) => ( mod.value === defaultMod ))} + isOptionSelected={(option, selectValue) => selectValue.some( + (val) => val.value === option.value + )} onChange={changeMod} styles={{ control: (base) => ({ @@ -128,7 +176,7 @@ export const ModificationRow: FC = (props) => { /> - {affectedCages.join(", ")} + {affectedCage} ); diff --git a/CageUI/src/client/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx index f9af98b92..aedcd1c0f 100644 --- a/CageUI/src/client/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { FC, useState, useEffect } from 'react'; import { Cage, Rack } from './typings'; -import {loadRoom} from './helpers'; +import { findDetails, loadRoom } from './helpers'; import { RoomLayout } from './RoomLayout'; import { CageContext } from './ContextManager'; @@ -13,9 +13,48 @@ export const RoomDisplay: FC = (props) => { const [room, setRoom] = useState([]); const [clickedCage, setClickedCage] = useState(); - const [clickedCagePartner, setClickedCagePartner] = useState(); - const [clickedRack, setClickedRack] = useState(); + const [clickedCagePartners, setClickedCagePartners] = useState(); const [cageDetails, setCageDetails] = useState([]); + const [clickedRack, setClickedRack] = useState(); + const [isEditing, setIsEditing] = useState(false); + const [modRows, setModRows] = useState([]); + const saveMod = () => { + console.log("Saving"); + setRoom(prevRoom => { + const updatedRoom = [...prevRoom]; + const clickedRackIndex = clickedRack.id - 1; + if (updatedRoom[clickedRackIndex]) { + // Create a deep copy of the cage state object + updatedRoom[clickedRackIndex].cages.find( + (cage) => cage.id === clickedCage.id + ).cageState = clickedCage.cageState; + + clickedCagePartners.forEach((cage) => { + updatedRoom[clickedRackIndex].cages.find( + (updateCage) => updateCage.id === cage.id + ).cageState = cage.cageState; + }) + } + console.log("Updated Room: ", updatedRoom, clickedCage, clickedCagePartners); + return updatedRoom; + }); + } + + useEffect(() => { + console.log("Room: ", room) + }, [room]); + + useEffect(() => { + console.log("clicked Cage: ", clickedCage) + }, [clickedCage]); + + useEffect(() => { + if(!clickedCage) return; + const newCageDetails: Cage[] = [clickedCage]; + findDetails(clickedCage, newCageDetails, clickedRack); + console.log("Find new cage", cageDetails, newCageDetails, clickedCage); + setCageDetails(newCageDetails); + }, [clickedCage]); useEffect(() => { @@ -32,10 +71,15 @@ export const RoomDisplay: FC = (props) => { setClickedCage, clickedRack, setClickedRack, - clickedCagePartner, - setClickedCagePartner, + clickedCagePartners, + setClickedCagePartners, + isEditing, + setIsEditing, + modRows, + setModRows, cageDetails, - setCageDetails + setCageDetails, + saveMod }}> diff --git a/CageUI/src/client/components/RoomLayout.tsx b/CageUI/src/client/components/RoomLayout.tsx index 490b6b7b3..a95497e4f 100644 --- a/CageUI/src/client/components/RoomLayout.tsx +++ b/CageUI/src/client/components/RoomLayout.tsx @@ -1,11 +1,10 @@ import * as React from 'react'; import { FC, useState } from 'react'; -import { Cage, ModTypes, RackTypes } from './typings'; +import { Cage } from './typings'; import { ReactSVG } from 'react-svg'; import { ActionURL } from '@labkey/api'; import { - changeStyleProperty, - getCageUnderneath, + changeStyleProperty, findCagePartners, getCageMod, getRackSeparators, parseCage, parseRack, @@ -15,7 +14,7 @@ import { CageDetails } from './CageDetails'; import { useCurrentContext } from './ContextManager'; export const RoomLayout: FC = () => { - const {room, setCageDetails, setClickedCage, setClickedRack, setClickedCagePartner, cageDetails} = useCurrentContext(); + const {room, setClickedCage, setClickedRack, setClickedCagePartners} = useCurrentContext(); const [isOpen, setIsOpen] = useState(false); const openDetails = () => { @@ -25,45 +24,19 @@ export const RoomLayout: FC = () => { setIsOpen(false); } - console.log("room: ", room); const handleClick = (event) => { const cage = event.target; - const rackId: number = parseInt(parseRack(cage.parentElement.id)); + const rackId: number = parseInt(parseRack(cage.id)); const cageId: number = parseInt(parseCage(cage.id)); - console.log("New Room: ", room); + //const cageId: number = room const clickedRack = room.find(rack => rack.id === rackId); - const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); - let clickedCagePartner: Cage; - const newCageDetails: Cage[] = []; - if(clickedRack.type === RackTypes.TwoOfTwo){ - newCageDetails.push(clickedCage); - if(clickedCage.cageState.rightDivider){ - clickedCagePartner = clickedRack.cages.find(cage => cage.id === cageId + 1); - if(clickedCage.cageState.rightDivider.modData.mod === ModTypes.NoDivider){ - newCageDetails.push(clickedCagePartner); - } - }else if(clickedCage.cageState.leftDivider){ - clickedCagePartner = clickedRack.cages.find(cage => cage.id === cageId - 1); - if(clickedCage.cageState.leftDivider.modData.mod === ModTypes.NoDivider){ - newCageDetails.push(clickedCagePartner); - } - } - // TODO Add floors - if(clickedCage.cageState?.floor.modData.mod.mod === ModTypes.NoFloor){ - const totalCages = room.length * room[0].cages.length; - const bottomCageId = getCageUnderneath(totalCages, room[0].cages.length, clickedCage.id) - console.log("Floor: ", bottomCageId); - //newCageDetails.push(clickedRack.cages[3]); - } - } - console.log("New Rack: ", clickedRack); - console.log("New Cage: ", clickedCage); - console.log("New Cage Partner: ", clickedCagePartner); - console.log("New Cage details: ", cageDetails, newCageDetails); + const clickedCage = clickedRack.cages[cageId - 1]; + + const newCagePartners: Cage[] = [clickedCage]; + findCagePartners(clickedCage, clickedRack, newCagePartners); setClickedCage(clickedCage); setClickedRack(clickedRack); - setClickedCagePartner(clickedCagePartner); - setCageDetails(newCageDetails); + setClickedCagePartners(newCagePartners); openDetails(); }; @@ -79,6 +52,23 @@ export const RoomLayout: FC = () => { cages.forEach((cage) => { cage.onclick = (event) => handleClick(event); }) + // Update room numbers with following the current room layout + room.forEach((rack) => { + rack.cages.forEach((cage) => { + // Construct the expected text element ID + const textId = `text-${cage.id}-${rack.id + 1}`; + // Find the corresponding text element + const textElement = svg.querySelector(textId); + + if (textElement) { + // Get the tspan child and update its content + const tspanElement = textElement.querySelector('tspan'); + if (tspanElement) { + tspanElement.textContent = cage.id.toString(); + } + } + }); + }); }} afterInjection={(svg) => { // Parses seperators styling them correctly @@ -86,6 +76,27 @@ export const RoomLayout: FC = () => { const currSeparators = getRackSeparators(room[i]); const separators = svg.querySelector(`#seperators-${i + 1}`); const children = [...separators.children]; + const mods = svg.querySelector(`#modifications-${i + 1}`); + console.log("Room ", room[i]); + //Update modification svg props + [...mods.children].forEach((childNode) => { + const cageMod = getCageMod(childNode.id, room[i]); + const styles = cageMod?.styles + console.log(childNode.id, cageMod) + if(parseSeparator(childNode.id) === "CTunnel"){ // CTunnels have multiple sub styles + [...childNode.children].forEach((subChildNode) => { + styles?.forEach((style) => { + changeStyleProperty(subChildNode, style.property, style.value); + }) + }) + }else{ + styles?.forEach((style) => { + changeStyleProperty(childNode, style.property, style.value); + }) + } + }) + + // Update separator svg props children.forEach((childNode) => { const styles = currSeparators.find(sep => sep.position === parseSeparator(childNode.id)).mod.styles; styles.forEach((style) => { @@ -93,7 +104,6 @@ export const RoomLayout: FC = () => { }) }) } - }} /> {isOpen && diff --git a/CageUI/src/client/components/RoomLegend.tsx b/CageUI/src/client/components/RoomLegend.tsx index d1237b615..18273bef0 100644 --- a/CageUI/src/client/components/RoomLegend.tsx +++ b/CageUI/src/client/components/RoomLegend.tsx @@ -1,10 +1,19 @@ import * as React from 'react'; import {FC} from 'react'; +import { ActionURL } from '@labkey/api'; +import { changeStyleProperty, getRackSeparators, parseSeparator } from './helpers'; +import { ReactSVG } from 'react-svg'; export const RoomLegend: FC = () => { return (
-

This is the Legend

+

Legend

+ +
); } \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 53093f416..4a9b3563e 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -6,6 +6,7 @@ import { DefaultCageState, Modification, Modifications, + ModTypes, Rack, RackTypes, RoomSchematics, @@ -20,19 +21,21 @@ console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ + export const zeroPad = (num, places) => String(num).padStart(places, '0') +// Helper function to get the rack number export const parseRack = (input: string) => { - const regex = /cage\w-(\d+)/; + const regex = /^rect-\d-(\d)$/; const match = input.match(regex); if (match) { return match[1]; } return; } - +// Helper function to get the cage number export const parseCage = (input: string) => { - const regex = /cage-(\d+)/; + const regex = /rect-(\d+)/; const match = input.match(regex); if (match) { return match[1]; @@ -40,11 +43,36 @@ export const parseCage = (input: string) => { return; } +export const parseCageMod = (input: string) => { + const regex = /.*?-(\d+)/; + const match = input.match(regex); + if (match) { + return parseInt(match[1]); + } + return; +} + + // load room racks export const loadRoom = (name: string): Rack[] => { const tempRoom: Rack[] = []; let cageNum: number = 1; + let rackConfigs = []; + + const createAdjCages = () => { + const cageCnt = getTotalCagesInRoom(tempRoom); + tempRoom.forEach((rack) => { + rack.cages.forEach((cage) => { + cage.adjCages = { + leftCage: rack.cages.find((tmp) => tmp.id === cage.id - 1), + rightCage: rack.cages.find((tmp) => tmp.id === cage.id + 1), + floorCage: rack.cages.find((tmp) => tmp.id === getCageAboveOrBelow(cageCnt, cage.id, rackConfigs).cageUnderneathId), + ceilingCage: rack.cages.find((tmp) => tmp.id === getCageAboveOrBelow(cageCnt, cage.id, rackConfigs).cageAboveId), + } + }) + }) + } // generate default cages const genCages = (cnt: number, rackType: RackTypes): Cage[] => { @@ -53,21 +81,25 @@ export const loadRoom = (name: string): Rack[] => { let cageState: CageState; let position: CagePosition; let type: CageType; + let cagesPerRow: number; if(rackType === RackTypes.TwoOfTwo){ position = i < 2 ? "top" : "bottom"; + cagesPerRow = 2; type = 'cage'; Object.keys(DefaultCageState.rackTwoOfTwo).forEach((cagePos, idx) => { if(idx === i){ cageState = DefaultCageState.rackTwoOfTwo[cagePos]; } }) + rackConfigs.push({cagesPerRow: 2, rackHeight: 2}); } const tempCage: Cage = { id: cageNum, - name: zeroPad(cageNum, 4), + name: `#${zeroPad(cageNum, 4)}`, cageState: cageState, position: position, - type: type + type: type, + adjCages: undefined } cageNum++; cages.push(tempCage); @@ -83,11 +115,11 @@ export const loadRoom = (name: string): Rack[] => { const tempRack: Rack = { id: rackId, type: rackType, - cages: genCages(RoomSchematics[name].cageNum, rackType), - + cages: genCages(RoomSchematics[name].cageNum, rackType) } tempRoom.push(tempRack) } + createAdjCages(); } return tempRoom } @@ -127,20 +159,22 @@ const convertToTitleCase = (str: string) => { return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); } -export const convertLocationName = (dividerName: string) => { +// Helper function to convert object keys into location names +export const convertLocationName = (keyName: string) => { // Special cases - if (dividerName.toLowerCase() === 'floor') { + if (keyName.toLowerCase() === 'floor') { return 'Floor'; - } else if (dividerName.toLowerCase().includes('mods')) { + } else if (keyName.toLowerCase().includes('mods')) { return 'Extra Mod'; } // Default case - const words = dividerName.split(/(?=[A-Z])/); + const words = keyName.split(/(?=[A-Z])/); const convertedWords = words.map((word) => convertToTitleCase(word)); return convertedWords.join(' '); } +// Helper function to get the correct mods for the dropdowns in cage details export const getModOptions = (key) => { const dividerOptions= []; @@ -161,12 +195,13 @@ export const getModOptions = (key) => { return key.toLowerCase().includes("divider") ? dividerOptions : key.toLowerCase().includes("floor") ? floorOptions : extraOptions; } -const getCageDividers = (totalBoxes, position, boxId, direction) => { - const boxesPerRow = totalBoxes / 2; - const groupBoxId = (boxId - 1) % totalBoxes + 1; // Calculate the ID within the current group +// Helper function to find the cage divider positioning for the svg +const getCageDividers = (totalCages, position, cageId, direction) => { + const cagesPerRow = totalCages / 2; + const groupCageId = (cageId - 1) % totalCages + 1; // Calculate the ID within the current group // Check if the inputs are valid - if (groupBoxId < 1 || groupBoxId > totalBoxes) { + if (groupCageId < 1 || groupCageId > totalCages) { throw new Error('Invalid box ID'); } if (position !== "top" && position !== "bottom") { @@ -181,46 +216,70 @@ const getCageDividers = (totalBoxes, position, boxId, direction) => { let line = null; - // Determine the line for the top boxes - if (isTop && groupBoxId <= boxesPerRow) { - if (direction === "left" && groupBoxId > 1) { - line = groupBoxId - 1; - } else if (direction === "right" && groupBoxId < boxesPerRow) { - line = groupBoxId; + // Determine the line for the top cages + if (isTop && groupCageId <= cagesPerRow) { + if (direction === "left" && groupCageId > 1) { + line = groupCageId - 1; + } else if (direction === "right" && groupCageId < cagesPerRow) { + line = groupCageId; } } - // Determine the line for the bottom boxes - if (isBottom && groupBoxId > boxesPerRow) { - if (direction === "left" && (groupBoxId - boxesPerRow) > 1) { - line = groupBoxId - boxesPerRow - 1; - } else if (direction === "right" && (groupBoxId - boxesPerRow) < boxesPerRow) { - line = groupBoxId - boxesPerRow; + // Determine the line for the bottom cages + if (isBottom && groupCageId > cagesPerRow) { + if (direction === "left" && (groupCageId - cagesPerRow) > 1) { + line = groupCageId - cagesPerRow - 1; + } else if (direction === "right" && (groupCageId - cagesPerRow) < cagesPerRow) { + line = groupCageId - cagesPerRow; } } return line; } -// Function to find the box underneath given a box ID on top -export const getCageUnderneath = (totalCages, cagesPerRack, cageId) => { - - if (cageId < 1 || cageId > totalCages) { +// Function to find the cage underneath given a cage ID on top +export const getCageAboveOrBelow = (totalCages, boxId, rackConfigurations) => { + if (boxId < 1 || boxId > totalCages) { throw new Error('Invalid box ID'); } - // Determine the position within the rack (0-3) - const positionInRack = (cageId - 1) % cagesPerRack; + let cumulativeCages = 0; - // Check if the box is on the top row (position 0 or 1) - if (positionInRack < 2) { - // Calculate the ID of the box underneath - return cageId + 2; - } else { - return null; + for (const { cagesPerRow, rackHeight } of rackConfigurations) { + const cagesPerRack = cagesPerRow * rackHeight; + cumulativeCages += cagesPerRack; + + if (boxId <= cumulativeCages) { + // The box belongs to this rack + const positionInRack = (boxId - 1) % cagesPerRack; + const row = Math.floor(positionInRack / cagesPerRow); + + let cageUnderneathId = null; + let cageAboveId = null; + + // Determine the cage underneath + if (row < rackHeight - 1) { + cageUnderneathId = boxId + cagesPerRow; + cageUnderneathId = cageUnderneathId <= cumulativeCages ? cageUnderneathId : null; + } + + // Determine the cage above + if (row > 0) { + cageAboveId = boxId - cagesPerRow; + cageAboveId = cageAboveId > cumulativeCages - cagesPerRack ? cageAboveId : null; + } + + return { cageAboveId, cageUnderneathId }; + } } + + throw new Error('Box ID does not fit within the provided rack configurations'); } + +/* +remove duplicate separators + */ const removeDuplicatesByPosition = (arr) => { const uniquePositions = new Map(); @@ -233,6 +292,9 @@ const removeDuplicatesByPosition = (arr) => { return Array.from(uniquePositions.values()); } +/* +Finds the separator modifications that should be mapped to the svg + */ export const getRackSeparators = (rack: Rack): Separators => { const separators: Separators = []; for (const cage of rack.cages) { @@ -279,3 +341,224 @@ export const getRackSeparators = (rack: Rack): Separators => { } return(removeDuplicatesByPosition(separators)); } + +// Find the total number of cages in a room +export const getTotalCagesInRoom = (room) => { + return room.reduce((total, current) => { + return total + current.cages.length; + }, 0); +} + +// Finds the cages that are affected by the modification/separator +export const findAffCages = (mod: string | number, cage: Cage) => { + let affCageName; + if(mod === "rightDivider") { + affCageName = cage.adjCages.rightCage.name; + }else if(mod === "leftDivider"){ + affCageName = cage.adjCages.leftCage.name; + }else if(mod === "floor") { + affCageName = cage.adjCages.floorCage.name; + }else { // TODO Make sure these are correct + if(mod === ModTypes.PlayCage){ + affCageName = cage.name; + }else if(mod === ModTypes.Extension){ + affCageName = cage.name; + }else if(mod === ModTypes.CTunnel){ + if(cage.adjCages.floorCage){ + affCageName = cage.adjCages.floorCage.name; + }else if(cage.adjCages.ceilingCage){ + affCageName = cage.adjCages.ceilingCage.name; + } + } + } + if(affCageName){ + return affCageName; + }else{ + return; + } +} + +export const findCagePartners = (cage: Cage, rack: Rack, newCages: Cage[]) => { + //Check if cage has right divider + if(cage.adjCages.rightCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.rightCage.id))){ + newCages.push(cage.adjCages.rightCage); + } + // left divider + if(cage.adjCages.leftCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.leftCage.id))){ + newCages.push(cage.adjCages.leftCage); + + } // floor + if(cage.adjCages.floorCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.floorCage.id))){ + newCages.push(cage.adjCages.floorCage); + } +} + +export const changeCageModArray = (updateId: number, setClickedCagePartners, modKey: string, event, setSaveDelete?, extModId?, isDone?) => { + if(event === "delete"){ + setClickedCagePartners(prevState => { + return prevState.map(cage => + cage.id === updateId ? { + ...cage, + cageState: { + ...cage.cageState, + [modKey]: cage.cageState[modKey].filter(obj => obj.modData.id !== extModId) + } + } : cage + ); + }); + setSaveDelete(isDone); + }else { + setClickedCagePartners(prevState => { + return prevState.map(cage => + cage.id === updateId ? { + ...cage, + cageState: { + ...cage.cageState, + [modKey]: { + ...cage.cageState[modKey], + modData: { + ...cage.cageState[modKey].modData, + mod: Object.values(Modifications).find(mod => mod.mod === event.value) + } + } + } + } : cage + ); + }); + } +} + +export const changeCageMod = (setClickedCage, modKey: string, event, updateId?: number, setSaveDelete?: any) => { + if(modKey === "extraMods"){ + + setClickedCage(prevState => { + if(event === "delete"){ + setSaveDelete(true); + return { + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: prevState.cageState[modKey].filter(obj => obj.modData.id !== updateId) + } + } + } + const modIndex = prevState.cageState[modKey].findIndex( + mod => mod.modData.id === updateId + ); + if (modIndex !== -1) { + const updatedMods = prevState.cageState[modKey].map((mod, index) => + index === modIndex + ? { + ...mod, + modData: { + ...mod.modData, + mod: Object.values(Modifications).find( + (mod) => mod.mod === event.value + ) + } + } + : mod + ); + return { + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: updatedMods + } + }; + }else{ + console.log("Error: Cannot edit mod that doesn't exist") + } + }); + } + else{ + setClickedCage(prevState => ({ + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: { + ...prevState.cageState[modKey], + modData: { + ...prevState.cageState[modKey].modData, + mod: Object.values(Modifications).find((mod) => mod.mod === event.value) + } + } + } + })); + } +} + +/* +Recursive helper function to find all the modifications attached to a cage. +It is recursive because if a cage has no divider/floor, it should combine and repeat. + */ +export const findDetails = (clickedCage, cageDetails, rack) => { + let newCage: Cage + + Object.keys(clickedCage.cageState).forEach((key) => { + if(key === "rightDivider"){ + if(clickedCage.cageState.rightDivider.modData.mod.mod === ModTypes.NoDivider){ + newCage = clickedCage.adjCages.rightCage; + if(cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + }else if(key === "leftDivider") { + if(clickedCage.cageState.leftDivider.modData.mod.mod === ModTypes.NoDivider){ + newCage = clickedCage.adjCages.leftCage + if(cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + }else if(key === "floor") { + if (clickedCage.cageState.floor.modData.mod.mod === ModTypes.NoFloor) { + newCage = clickedCage.adjCages.floorCage; + if (cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + } + }) + +} + + +const cleanString = (name: string) => { + return name.toLowerCase().replace(/[\s-]/g, ''); +} +export const getCageMod = (modId: string, rack: Rack) => { + const rackPos = parseCageMod(modId); + const cage = rack.cages[rackPos - 1]; + const mod = parseSeparator(modId); + let cageMod: Modification; + if(cage.cageState.extraMods?.length > 0){ + cage.cageState.extraMods.forEach((extMod, idx) => { + const cleanName = cleanString(extMod.modData.mod.name) + const cleanModName = cleanString(mod); + if(cleanName === cleanModName){ + cageMod = cage.cageState.extraMods[idx].modData.mod; + return cageMod; + } + }) + // if ctunnel mod check floor cage as well. (delete later I think) + // This is only here because the two ctunnels are not linked? + // What i mean is. if a cage doesn't have a ctunnel, the bottom one wont have it either + if(mod === "CTunnel") { + if(cage.adjCages.floorCage?.cageState.extraMods.length > 0){ + cage.adjCages.floorCage.cageState.extraMods.forEach((extMod, idx) => { + const cleanName = cleanString(extMod.modData.mod.name); + if(cleanName !== "ctunnel") return; + const cleanModName = cleanString(mod); + if(cleanName === cleanModName){ + cageMod = cage.adjCages.floorCage.cageState.extraMods.find((tmpMod) => + tmpMod.modData.mod.mod === ModTypes.CTunnel).modData.mod; + } + }) + } + } + } + return cageMod +} \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 2b5f285ec..40886cbfe 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -5,10 +5,22 @@ export interface Cage { name: string; cageState: CageState; position: string; - type: CageType + type: CageType; + adjCages: AdjCages | undefined; } - +export interface AdjCages { + leftCage: Cage | undefined; + rightCage: Cage | undefined; + floorCage: Cage | undefined; + ceilingCage: Cage | undefined; +} +export interface CageState { + leftDivider: {modData: SeparatorMod} | undefined; + rightDivider: {modData: SeparatorMod} | undefined; + floor: {modData: SeparatorMod} | undefined; + extraMods: CageMods | undefined; +} export interface Rack { id: number; type: RackTypes; @@ -31,8 +43,7 @@ export enum ModTypes { PrivacyDivider, NoDivider, CTunnel, - PopTop, - BumpOut, + Extension, PlayCage } @@ -64,13 +75,16 @@ export interface SeparatorMod { } export type Separators = SeparatorMod[]; -export interface CageState { - leftDivider: {modData: Modification, affCages: string[]} | undefined; - rightDivider: {modData: Modification, affCages: string[]} | undefined; - floor: {modData: SeparatorMod, affCages: string[]} | undefined; - extraMods: {modData: Modification, affCages: string[]}[] | undefined; +export interface CageMod { + modData: { + mod: Modification, + id: number; + } } +export type CageMods = CageMod[]; + + const Schematics: SchematicRoomProps = { "AB140-167.svg": { @@ -104,7 +118,7 @@ export const Modifications = { } ] }, - meshFloorX2: { // TODO figure out styling for this double mesh + meshFloorX2: { name: "Mesh Floor x2", mod: ModTypes.MeshFloorX2, styles: [ @@ -114,7 +128,10 @@ export const Modifications = { }, { property: "stroke-dasharray", - value: "10" + value: "10 5 10" + },{ + property: "stroke-width", + value: "2" } ] }, @@ -139,17 +156,44 @@ export const Modifications = { pcDivider: { name: "Protected Contact Divider", mod: ModTypes.PCDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "2 5 2" + },{ + property: "stroke-width", + value: "5" + }] }, vcDivider: { name: "Visual Contact Divider", mod: ModTypes.VCDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "5 5 5 2" + },{ + property: "stroke-width", + value: "5" + }] }, privacyDivider: { name: "Privacy Divider", mod: ModTypes.PrivacyDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "1 1 1 1 1 1" + },{ + property: "stroke-width", + value: "5" + }] }, noDivider: { name: "No Divider", @@ -162,22 +206,42 @@ export const Modifications = { cTunnel: { name: "C-Tunnel", mod: ModTypes.CTunnel, - styles: [] - }, - popTop: { - name: "Pop Top", - mod: ModTypes.PopTop, - styles: [] + styles: [{ + property: "stroke", + value: "black", + },{ + property: "stroke-width", + value: "1px", + } + ] }, - bumpOut: { - name: "Bump Out", - mod: ModTypes.BumpOut, - styles: [] + extension: { + name: "Extension", + mod: ModTypes.Extension, + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-width", + value: "1px" + },{ + property: "fill", + value: "#FCB017" + }] }, playCage: { name: "Play Cage", mod: ModTypes.PlayCage, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-width", + value: "1px" + },{ + property: "fill", + value: "#6D88C4" + }] }, } @@ -190,61 +254,40 @@ export const RoomSchematics = { ab165: Schematics["AB140-167.svg"], ab167: Schematics["AB140-167.svg"], } -export const RackSeparators = { - rackTwoOfTwo: { - topDivider: Modifications.solidDivider, - bottomDivider: Modifications.solidDivider, - leftFloor: Modifications.standardFloor, - rightFloor: Modifications.standardFloor - }, - rackOneOfOne: { - floor: Modifications.standardFloor - }, - pen: { - - }, - penRack: { - - }, - rackHorizontal: { - topDivider: Modifications.solidDivider, - bottomDivider: Modifications.solidDivider, - floor: Modifications.standardFloor, - } -} - // TODO Change mod Data to access from mod + +// This is based off the Cage State interface. export const DefaultCageState = { rackTwoOfTwo: { posA: { rightDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.topDivider, position: "T1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "T1"} as SeparatorMod, + }, floor: { - modData: {type: "floor", mod: RackSeparators.rackTwoOfTwo.leftFloor, position: "F1"} as SeparatorMod, - affCage: []}, - extraMods: [{modData: Modifications.popTop, affCage: ["#0001", "#0002"]}] + modData: {type: "floor", mod: Modifications.standardFloor, position: "F1"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.extension, id: 1}}, {modData: {mod: Modifications.cTunnel, id: 2}}] as CageMods }, posB: { leftDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.topDivider, position: "T1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "T1"} as SeparatorMod + }, floor: { - modData: {type: "floor", mod: RackSeparators.rackTwoOfTwo.rightFloor, position: "F2"} as SeparatorMod, - affCage: []}, - extraMods: [] + modData: {type: "floor", mod: Modifications.standardFloor, position: "F2"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.playCage, id: 1}}] }, posC: { rightDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.bottomDivider, position: "B1"} as SeparatorMod, - affCage: []}, - extraMods: [] + modData: {type: "divider", mod: Modifications.solidDivider, position: "B1"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.cTunnel, id: 2}}] }, posD: { leftDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.bottomDivider, position: "B1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "B1"} as SeparatorMod + }, extraMods: [] }, } diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai index 4f0692360..98b1934e4 100644 --- a/CageUI/src/client/rooms/AB140-167.ai +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -1,5 +1,5 @@ %PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -13,18 +13,20 @@ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> Adobe Illustrator 28.5 (Macintosh) - 2024-05-09T12:41:04-05:00 - 2024-05-09T12:41:04-05:00 - 2024-05-09T12:41:04-05:00 + 2024-06-05T11:48:31-05:00 + 2024-06-05T11:48:31-05:00 + 2024-06-05T11:48:31-05:00 256 180 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y rzyB/wBSzpX/AEg23/NGKu/5V55A/wCpZ0r/AKQbb/mjFXf8q88gf9SzpX/SDbf80Yq7/lXnkD/q WdK/6Qbb/mjFXf8AKvPIH/Us6V/0g23/ADRirv8AlXnkD/qWdK/6Qbb/AJoxV3/KvPIH/Us6V/0g 23/NGKu/5V55A/6lnSv+kG2/5oxV3/KvPIH/AFLOlf8ASDbf80Yq7/lXnkD/AKlnSv8ApBtv+aMV d/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP +pZ0r/pBtv8AmjFXf8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBI Nt/zRirv+VeeQP8AqWdK/wCkG2/5oxVLPNHkHyJF5Z1eSPy5paSJZXDI62VuGVhExBBCbEYqn3lP /lFdG/5gbb/kyuKprirsVS6whvJ7G3me/n5yxI7UWClWUE/7qxVX+pXP/LfP/wADB/1SxV31K5/5 b5/+Bg/6pYqh7mC8Sa0VdQnCyylHHGDcCJ2/314qMVRH1K5/5b5/+Bg/6pYq76lc/wDLfP8A8DB/ 1SxV31K5/wCW+f8A4GD/AKpYq1amdLyeCSZplWOKRWcICC7SAj4FT+QYqi8VQ2oySpbAxOY3aSJO YAJAeVUNOQI6N4Yq19Suf+W+f/gYP+qWKu+pXP8Ay3z/APAwf9UsVd9Suf8Alvn/AOBg/wCqWKod 4LwX8MIv5/TeKV2HGDqjRgf7q/yziqI+pXP/AC3z/wDAwf8AVLFXfUrn/lvn/wCBg/6pYq76lc/8 t8//AAMH/VLFW9OeV7Y+q5kdZZk5sFBISVlWvEKOg8MVROKqN9O8FlcToAXijd1B6VVSRWmKqfp6 r/y0Qf8AIh/+q2Ku9PVf+WiD/kQ//VbFXenqv/LRB/yIf/qtiqhcNrEc1qi3FvSaUo9YHrQRO+37 7xQYqr+nqv8Ay0Qf8iH/AOq2Ku9PVf8Alog/5EP/ANVsVd6eq/8ALRB/yIf/AKrYq1ay3f1uaC4e NwkccitGjJ9tnBBq7/yYqhfNn/KK6z/zA3P/ACZbFVPy21wvk7Smt0SS4GnQGGORjGjOIF4qzhZC oJ6kKaeBxViOifnl5Tm0S2vdfkXSr+eJJ3sLZLy/CRy2/wBbX96lrFzZLch5eCkR1HI7iqr0cEEV G4PQ4qhdJ/45Vl/xgi/4gMVQ2v6/b6LDZzXEE08V5e21hyh9M+k95KIY5JA7xnh6jqp4cm36UrRV M8VQt7/vTYf8Z2/5MS4qisVSm68xwW3mWx0B7WdptQglngu09FoQIKeorr6nrrTkvxenwqyjlyNM VTbFULH/AMdW4/4wQf8AE5sVRWKoXU/95k/4z2//ACfTFUViqTal5otrDzJpOhS2d08msCb0b9I1 +qRvBGZPSllZl/eSKrFEQMxCk0ABOKpziqFk/wCOrb/8YJ/+Jw4qisVSHQPOmja7rOtaRYiX6zoU qQ3byKERy5dS0NTzZFkieMtxA5KwFaHFU+xVC6Z/vM//ABnuP+T74qisVQurf8cq9/4wS/8AEDiq KxVIPNPnTS/LdxpEF/FPIdZvIrC2eFUKJLPIkSeozvH1aQfCnJyKkKQrEKp/iqFvf96bD/jO3/Ji XFUVirDPM/5qaN5cvr6yvbC+lnsVilPoC3Ilhltrq7aWLnOnwxRafPzDcWqvwq1RVVmYIYAjodxi qFj/AOOrcf8AGCD/AInNiqE82f8AKK6z/wAwNz/yZbFXeU/+UV0b/mBtv+TK4qluqfln5F1J7Nrj RbIJaTxXBiS2twk31eCS3gjnUxnnHEkvwL+yQtOmKsnxVC6T/wAcqy/4wRf8QGKqtxa2tyipcwpO iOkqLIocCSJg8bgMDRkdQynsd8VVcVQt7/vTYf8AGdv+TEuKorFUDJoWhy6xFrUmnWz6zBEYIdTa GM3KQksTGsxHqKnxt8INNziqOxVCx/8AHVuP+MEH/E5sVRWKoXU/95k/4z2//J9MVRWKoSXSNJm1 GDU5rKCTUrVWS2vXiRp4lcEMschHNQwJqAcVReKoWT/jq2//ABgn/wCJw4qisVQtrpOlWl3d3lpZ wW95flWvrmKJEknaMcUMrqAzlQaDl0xVFYqhdM/3mf8A4z3H/J98VRWKoXVv+OVe/wDGCX/iBxVF Yqh7rTtPu5LeW6tYriWzk9a0eVFdopeJX1IywPBuLEVG9DiqIxVC3v8AvTYf8Z2/5MS4qisVS/Uf Lnl7Uyx1LS7S9LmMubmCKWpg5GInmrV9P1X4+HI06nFUwxVCx/8AHVuP+MEH/E5sVQnmz/lFdZ/5 gbn/AJMtirvKf/KK6N/zA23/ACZXFU1xVx6ePtiqVaTeXP6Ks/8AQJ/7iL9qD+Qf8W4qi/rtz/yw T/8ABQf9VcVd9duf+WCf/goP+quKoS9vbn6zYf6BP/ft+1B/viX/AItxVF/Xbn/lgn/4KD/qrirv rtz/AMsE/wDwUH/VXFXfXbn/AJYJ/wDgoP8AqriqlaSvJqdyXheEiGAcXKEn45d/gZxiqPxVBau7 JZqyo0hE9vRFpU/v06cio/HFV/125/5YJ/8AgoP+quKu+u3P/LBP/wAFB/1VxV3125/5YJ/+Cg/6 q4qhJL25/Stv/oE/9xP+1B/PD/xbiqL+u3P/ACwT/wDBQf8AVXFXfXbn/lgn/wCCg/6q4q767c/8 sE//AAUH/VXFVukMz2bMyGMme4qjUqP379eJYfjiqMxVCauaaTenwgl9/wBg4q3+k7b+Sf8A6R5/ +aMVd+k7b+Sf/pHn/wCaMVd+k7b+Sf8A6R5/+aMVQl7qdt9ZsPgn/v2/495/98S/5GKov9J238k/ /SPP/wA0Yq79J238k/8A0jz/APNGKu/Sdt/JP/0jz/8ANGKqVpOk2p3LIHAEMA+NHjP25ezhTiqj 5s/5RXWf+YG5/wCTLYqgfJ2u6HLpmmaLFqNtJrFvptrPPpqzRm5jiMMdJHhB9RVPNfiIpuMVZHir sVQuk/8AHKsv+MEX/EBiqKxV2KoW9/3psP8AjO3/ACYlxVFYq7FXYqhY/wDjq3H/ABgg/wCJzYqi sVQup/7zJ/xnt/8Ak+mKorFXYq7FULJ/x1bf/jBP/wAThxVFYq7FXYqhdM/3mf8A4z3H/J98VRWK oXVv+OVe/wDGCX/iBxVFYq7FXYqhb3/emw/4zt/yYlxVFYq7FXYqhY/+Orcf8YIP+JzYqhPNn/KK 6z/zA3P/ACZbFXmdj+UGqahc2/mbT/Mb6ZJf2FmPRjiueSgW1mksfqRXkAVJRYpyMKRy9vU4gDFV 2n/kV5isLe6Fv571D65dxCOa+Y3nqM3rvcNIQt6qhi8zn4Av7PUeqJVWV+W/IOs6P5suNcn80X+o 2dzFcxyaTcyTyQCSe7a4jkjWSeSOP0ouMKhEAoK7VIxVlWk/8cqy/wCMEX/EBiqTeffJ6+bNEj0p pordVuoLozSwtOy+g/MGHjLDwkqBRm5LSoKMDirI8VQt7/vTYf8AGdv+TEuKorFWO3fk9rjz9p/m 79J3K/UdPuNO/RVEa2YXEkchlWo5I5MQ50PxcU6cTyVZFiqFj/46tx/xgg/4nNiqKxVC6n/vMn/G e3/5PpiqKxVItR8pWF/5t0nzHcLE0+jw3CWo9FfV9W4AQP69efFIzIoj6EvyO4GKp7iqFk/46tv/ AMYJ/wDicOKorFWI+UfIA8veavNGv/X/AK0fMssMpt/S9MxeiZSAz839Q/v+IPFaKo69cVZdiqF0 z/eZ/wDjPcf8n3xVFYqhdW/45V7/AMYJf+IHFUViqTeYPLNtrN7ot1MUB0e8e7CtGJPUWS1ntWiq SOIYXHI9a8aUxVU8p6Cvl7yxpWhLN9YXS7SG0Wfh6fMQoE5cKtxrTpXFUXe/702H/Gdv+TEuKorF WBeb/wArV13UNQvbW6s7STU5NMkuvrFgLo10xpzzR1mgZJpUnWP1QeSItF3IKqs9xVCx/wDHVuP+ MEH/ABObFUJ5s/5RXWf+YG5/5MtirvKf/KK6N/zA23/JlcVTXFXYqhdJ/wCOVZf8YIv+IDFUVirs VQt7/vTYf8Z2/wCTEuKorFXYq7FULH/x1bj/AIwQf8TmxVFYqhdT/wB5k/4z2/8AyfTFUVirsVdi qFk/46tv/wAYJ/8AicOKorFXYq7FULpn+8z/APGe4/5PviqKxVC6t/xyr3/jBL/xA4qisVdirsVQ t7/vTYf8Z2/5MS4qisVdirsVQsf/AB1bj/jBB/xObFUJ5s/5RXWf+YG5/wCTLYqp+TZkl8q6RSoZ LK2V0OxB9FeuKpzirj08PfFUFDpssMSRR306xxqERaQmgUUA3jxVf9Suf+W+f/gYP+qWKu+pXP8A y3z/APAwf9UsVWPpsrtGzX05aJuabQbEqV/314McVX/Urn/lvn/4GD/qlirvqVz/AMt8/wDwMH/V LFXfUrn/AJb5/wDgYP8Aqliq+3tfSd5GleaVwql34g8VqQKIqDqx7Yqr4qpXNtDcwmKUMULK3wsy GqMHUhkKt9pR3xVS/Rlt/PP/ANJE/wDzXirv0Zbfzz/9JE//ADXirv0Zbfzz/wDSRP8A814qsOj2 ZlWUtP6iKyK31m42DEEj7f8AkjFV/wCjLb+ef/pIn/5rxV36Mtv55/8ApIn/AOa8Vd+jLb+ef/pI n/5rxVWtraK2iEUQIQFm+Jmc1dizEsxJ6nFVTFVk8KTwyQyfYlUo1NjRhQ4qofUrn/lvn/4GD/ql irvqVz/y3z/8DB/1SxV31K5/5b5/+Bg/6pYqpyaZNI8Ttf3FYWLptB1KlP8AfXgxxVU+pXP/AC3z /wDAwf8AVLFXfUrn/lvn/wCBg/6pYq76lc/8t8//AAMH/VLFV9vaejI8rTPNJIqqWk4CioWIACKg /bOKoHzZ/wAorrP/ADA3P/JlsVUfLNvz8r6LLG3pzrYWwV6VqPRU8WHdcVTaC4EhKMvpzp/eRE1I r0I8VPY/xqMVVcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVSrzZ/yius/8wNz/AMmWxV3lP/lFdG/5gbb/AJMriqYTwCUAhikqbxyDqK9fmD3GKtQX BZzDKOFwoqV7Mo25L4j9WKq2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxVh/5uecrzyd+Xura9YRpLqMCxQ2Ecn2TcXMyQRkioqFaTkR4DFXkP5D635p806w7X 3mHXINf0tba6vrW7nWbTb22uXV5KW0ltC0DekRwC0oGVgxGKvefNn/KK6z/zA3P/ACZbFXeU/wDl FdG/5gbb/kyuKpriqnPAkyAElWU8kddmVh+0v+e/Q7YqpxXDLIILiizH7DdFkoK1X3p1H8MVRGKu xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpP5v8qaT5s8t33l7V g5sL9VWVom4SKyOskboxDAMjorCoO4xVi35VfkzoH5di9ms7qfUL++Cxy3U4RAsUbMUjjjjCqv2v iO9T4AABVlnmz/lFdZ/5gbn/AJMtirvKf/KK6N/zA23/ACZXFU1xVTnuI4VBapZjREXdmPgo/wA6 dTtiqyCGT1DPPT1iOKqDUIpoeIO3UipP9MVV8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVSrzZ/yius/wDMDc/8mWxVC+Vbq5Xyvo6myleljbUZGiKkeitK cnRvwxVNf9ykmxENuO7hmmJ9gCsQHz3+WKuMcFlDNdPyleNGaSVqM5VRyIHQDp0FBirvrtz/AMsE /wDwUH/VXFXfXbn/AJYJ/wDgoP8Aqrirvrtz/wAsE/8AwUH/AFVxVTl1OaN4UawuCZnKLQwbEIz7 /vfBMVVPrtz/AMsE/wDwUH/VXFXfXbn/AJYJ/wDgoP8Aqrirvrtz/wAsE/8AwUH/AFVxVdaXZuDM DDJC0DiNlk4GpKK9RwZ9qPiqIxVRvLn6tB6vptKeaIETjyJkcIPtFR+144qp/Xbn/lgn/wCCg/6q 4q767c/8sE//AAUH/VXFXfXbn/lgn/4KD/qriqkuqTG4eAafcckRZCa29KOWA/3b/kHFVX67c/8A LBP/AMFB/wBVcVd9duf+WCf/AIKD/qrirvrtz/ywT/8ABQf9VcVVbS5FzD6oRo/idCj8eQMblD9k sOq+OKquKqdxOkFvLO4JSJGdgOtFFTSuKqP125/5YJ/+Cg/6q4q767c/8sE//BQf9VcVd9duf+WC f/goP+quKqcupzRvCjWFwTM5RaGDYhGff974Jiqp9duf+WCf/goP+quKu+u3P/LBP/wUH/VXFXfX bn/lgn/4KD/qriq60uzcGYGGSFoHEbLJwNSUV6jgz7UfFUF5s/5RXWf+YG5/5MtiqB8na7ocumaZ osWo20msW+m2s8+mrNGbmOIwx0keEH1FU81+Iim4xVkeKoXVv+OVe/8AGCX/AIgcVRWKuxV2KoW9 /wB6bD/jO3/JiXFUVirsVdiqFsv96b//AIzr/wAmIsVRWKoXU/8AeZP+M9v/AMn0xVFYq7FXYqhY /wDjq3H/ABgg/wCJzYqisVdirsVQumf7zP8A8Z7j/k++KorFULq3/HKvf+MEv/EDiqKxV2KuxVC3 v+9Nh/xnb/kxLiqKxV2KuxVC2X+9N/8A8Z1/5MRYqhPNn/KK6z/zA3P/ACZbFXmdj+UGqahc2/mb T/Mb6ZJf2FmPRjiueSgW1mksfqRXkAVJRYpyMKRy9vU4gDFV2n/kV5isLe6Fv571D65dxCOa+Y3n qM3rvcNIQt6qhi8zn4Av7PUeqJVWQ2PkHWdH1fVNcn80X+o2dzZXscmk3Mk8kAknuHuI5I1knkjj 9KLjCoRAKCu1SMVZ9irz/wA8/lTL5r1DVbg6sulw6lpEuj87K1VbzjNJHK5muTIfWjb0QhiMY+As FZSxOKs7tIGt7WGBpGmaKNUaZwoZyoA5EKFWp67CmKqV7/vTYf8AGdv+TEuKorFXnFr+UckeqW1/ Ne2NbfXJNeUWuntbMrPDHAIYuNy8acki/esyNzPxUVvixV6PiqFsv96b/wD4zr/yYixVFYqhdT/3 mT/jPb/8n0xVFYq8un/JSW486SeZZdUs0DaiL+O0t9N9IoEuLecESC4YfWW+qcHuOHJ1kkBFCoVV 6jiqFj/46tx/xgg/4nNiqJkjSRGjkUPG4KujCoIOxBB7YqwPyX+VMHljXbLVk1E3Bs9Eh0RYBCIw 3pGOszOXkalIECRCiqSzbs5OKs9xVC6Z/vM//Ge4/wCT74qisVQurf8AHKvf+MEv/EDiqKxVjHn7 yQvm2wtbcXh0+4tHuHhvI05yr9ZsbiyPBg0bIR9Z51B/Zp7hVFeR/K/+FvK9noQnS4SzMojaOMwx qkkzyJGiM8zhY1cIC8jMQKsxNTiqZ3v+9Nh/xnb/AJMS4qisVYD5t/Ke01/V7nU0uYbWa6n025ct bGRlm0wXKiYcZokeVkuggMyOihBVG+Hiqz7FULZf703/APxnX/kxFiqE82f8orrP/MDc/wDJlsVd 5T/5RXRv+YG2/wCTK4qmuKoXVv8AjlXv/GCX/iBxVFYq7FXYqhb3/emw/wCM7f8AJiXFUVirsVdi qFsv96b/AP4zr/yYixVFYqhdT/3mT/jPb/8AJ9MVRWKuxV2KoWP/AI6tx/xgg/4nNiqKxV2KuxVC 6Z/vM/8AxnuP+T74qisVQurf8cq9/wCMEv8AxA4qisVdirsVQt7/AL02H/Gdv+TEuKorFXYq7FUL Zf703/8AxnX/AJMRYqhPNn/KK6z/AMwNz/yZbFXeU/8AlFdG/wCYG2/5Mriqa4qhNXAOk3oIqDBL Uf7A4q3+idK/5YoP+RSf0xV36J0r/lig/wCRSf0xV36J0r/lig/5FJ/TFUJe6TpX1mw/0KD+/b/d Sf74l9sVRf6J0r/lig/5FJ/TFXfonSv+WKD/AJFJ/TFXfonSv+WKD/kUn9MVU9Mt7eCa/SCJIkNw CVRQor6EW9BiqOxVBaxFFLZrHKiyRtPb8kYBgf36HcHFV/6J0r/lig/5FJ/TFXfonSv+WKD/AJFJ /TFXfonSv+WKD/kUn9MVQkek6V+lbj/QoP7iD/dSfzy+2Kov9E6V/wAsUH/IpP6Yq79E6V/yxQf8 ik/pirv0TpX/ACxQf8ik/piq3SY447NkjUIiz3AVVFAB679AMVRmKoTWAG0m9VhUG3lBB6EcDirf 6J0r/lig/wCRSf0xV36J0r/lig/5FJ/TFXfonSv+WKD/AJFJ/TFUJe6TpX1mw/0KD+/b/dSf74l9 sVRf6J0r/lig/wCRSf0xV36J0r/lig/5FJ/TFXfonSv+WKD/AJFJ/TFVPTLeCCa/SCNIkNwCVRQo r6EW9Biqh5s/5RXWf+YG5/5Mtiqn5bW4bydpS27pHcHToBDJIpkRXMC8WZA0ZYA9QGFfEYq8z0v/ AJyI0yx0G3l80QSTas0VtLcnT4Ybe3Bu7T66kaC6vGaqx/CObKZX2jViCAq9a1U10m8P/FEn/EDi qLxVgPnP81rTyzq2o6fL+jj+j9LbVZHuNQa3ZOM8UKxTRrbzMnresfSKcyzLx4jkDirNNKvvr+mW d8EEf1uCOfgHWQL6iBqB0JRqV+0poe2Kuvf96bD/AIzt/wAmJcVRWKsD0P8AM9tW1qGwhtLSa2k1 e70aS9tL43Cq9tYm9WQL6EdeXB4nBI4svwlwahVnmKoWy/3pv/8AjOv/ACYixVFYqhdT/wB5k/4z 2/8AyfTFUVirzrX/AM3JtG8zQaHJo4lM+uW+iLcLckfBcw2swnCmH4nX67/dA9EY8vBV6LiqFj/4 6tx/xgg/4nNiqJkLhGMYDSAHgrHiCewJAag+jFWHeTPPuo+ZL2zj/RUVtZ3Oj22rTzpdNLJBJef3 Vs8ZgiU8uEpDB+ibqvIYqzLFULpn+8z/APGe4/5PviqKxVC6t/xyr3/jBL/xA4qisVSDzZ5qfy82 lubGS9gv7mW3mEHN509OznuwYoI0kaZm+rcAgINSKV6Yqt8g+bJPNnlW012XT5dKluXuI5NPn5er E1vcSW7K/JIjWsVSOO3TFU3vf96bD/jO3/JiXFUVirA/Nv5mXXl291O2fTIJxYvpn1cveiB7hNSe aNgiPDvNE1s5ESFi67ih+HFWeYqhbL/em/8A+M6/8mIsVQnmz/lFdZ/5gbn/AJMtirvKf/KK6N/z A23/ACZXFUXe6XY3s1lNdRepLp8/1qzarDhN6Tw8vhIr+7mcUO2+Ku1b/jlXv/GCX/iBxVFYq7FX Yqhb3/emw/4zt/yYlxVFYq7FXYqhbL/em/8A+M6/8mIsVRWKoXU/95k/4z2//J9MVRWKuxV2KoWP /jq3H/GCD/ic2KorFXYq7FULpn+8z/8AGe4/5PviqKxVC6t/xyr3/jBL/wAQOKorFXYq7FULe/70 2H/Gdv8AkxLiqKxV2KuxVC2X+9N//wAZ1/5MRYqhPNn/ACius/8AMDc/8mWxV3lP/lFdG/5gbb/k yuKpriqjewNcWc8CkBpY3QE9AWUjFVP1NV/5Z4P+R7/9UcVd6mq/8s8H/I9/+qOKu9TVf+WeD/ke /wD1RxVRnTVpJbdxBbgQyFyPXfcGN0/3z/l4qrepqv8Ayzwf8j3/AOqOKu9TVf8Alng/5Hv/ANUc Vd6mq/8ALPB/yPf/AKo4q6xiuUe5e4VEaaUOqxsXAAjRNyVT+TFUViqHv4ZprfjCFMiyRSAOSqn0 5FcioDdl8MVW+pqv/LPB/wAj3/6o4q71NV/5Z4P+R7/9UcVd6mq/8s8H/I9/+qOKqKpqy3ck/oQU kjSPj677cGc1/uu/PFVb1NV/5Z4P+R7/APVHFXepqv8Ayzwf8j3/AOqOKu9TVf8Alng/5Hv/ANUc VX2MMkNvxl4+ozySMFJIHqSM9ASBWnLwxVXxVRvYGuLOeBSA0sboCegLKRiqn6mq/wDLPB/yPf8A 6o4q71NV/wCWeD/ke/8A1RxV3qar/wAs8H/I9/8AqjiqjOmrSS27iC3AhkLkeu+4Mbp/vn/LxVW9 TVf+WeD/AJHv/wBUcVd6mq/8s8H/ACPf/qjirvU1X/lng/5Hv/1RxV1jFco9y9wqI00odVjYuABG ibkqn8mKoTzZ/wAorrP/ADA3P/JlsVd5T/5RXRv+YG2/5Mriqa4q7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUq82f8orrP8AzA3P/JlsVY5of+Lv 0Lp/1Dn9R+rQ/VfU+r8/S9Meny/yuNK4qjv+d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ku/wCd7/z+ r4q7/ne/8/q+Ku/53v8Az+r4q7/ne/8AP6virv8Ane/8/q+Ku/53v/P6virv+d7/AM/q+Ku/53v/ AD+r4q7/AJ3v/P6virv+d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/5 3v8Az+r4q7/ne/8AP6virv8Ane/8/q+Ku/53v/P6virv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6v irv+d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/53v8Az+r4qgNf/wAY foLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//2Q== + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 a/tca0xV/9k= @@ -65,8 +67,8 @@ - Document AIRobin + Document application/pdf @@ -74,8 +76,26 @@ proof:pdf - uuid:712efb46-fc53-7b49-8366-cae9cb172e0f - uuid:9bda2d32-406b-fc4e-a072-5de5d524f607 + xmp.did:bf330944-a919-4e93-b25d-11598668e36f + uuid:1b5ec34a-48a6-d242-b1d0-dbec528becc4 + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + + uuid:61a58e70-f21e-424e-ac4e-d6364d561ca8 + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + default + + + + + saved + xmp.iid:bf330944-a919-4e93-b25d-11598668e36f + 2024-06-04T14:52:54-05:00 + Adobe Illustrator 28.5 (Macintosh) + / + + + Adobe PDF library 17.00 @@ -101,250 +121,314 @@ - endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream -H‰´WQ¯Ý¶ ~÷¯Ðcî€ãHE‰¯ÉŠ‚¡ëö0 {¸k¹ëÚÈßßGÉ–íÖç\ÀA€œK[¤ø‘üHúí_ß»·Þ{÷îÏïÝðË਎êÿÜ¥‰¿þ0üÝýoíßß¾ÂH^ܧqL1»nxûí÷Þýø¿áê!ü?²vL°¤Ìîù¥ê¿ !ı$v—àã¨1ºÏCð2fQ{TÆB.‡Q²4RNŽFÎ1¥1À«çáûá;8Ý/Öð –«á–‹K vJ õݸ{\j6 -~ŒAó®`RÚSòˆŽÂ£”h YuQÂkŸ€¥ÜVb¦1 -ñV á -T¤Ì¹ª°P8¨B‰L'ŒE¢¬å1I耾Þ]§äþúcOåÛkø—Ù¹~ࣽÄO@&YÓè½Oîú2¼‰Oן†o®Ôέ´Ebx,¦çm&‘Ëæ…ì¦5>Ê”®[e¡;e¡p–Pš’¯k Æô ˈ€IFø -y¬¾ ØKû@Tå^>6@èD 8Ÿƒre·\p %$¼á$eWéVK0¥@™kÈ8+ YW²Ê r¤òc F©JYÂ!º˜Rôh©¦„ô•®°¤‡“ßÒ%Ÿ—‰FbÔÊ#ø{zö ì1ý!…N’¼…Sέ¶š™[5°Çö˜˜‚oŠ/ñp°Ìlˆ“¾Bf+gÆmJ7 Üé–• 97+1ƒÀ+Ùzu» ôšË®ÒíJœ R0Èò±˜M:©Œ …y”ÌD¨ièÿ>7·t - úb:>á÷0ÿ9Àhi#æD²€¸pˆÞ³²âîÌO©, Nl`=72¾GøÞ%(c_U¡ã„gÛ{¤ IÿRñPÝònÛGqëÈÅŒ"èy(r(`R@A%ô®Âr„ç%âÓ"ï*Ýây‰<æ"Z•J‰ñHÀº’-¬òHÁ¦ÄXnM _E‡XbJžÕêÅiÎW¨ž%mgc8q§TVp–ÃßÓ³å.á ¾&·PNÜ*{VnåöXC±ëy,íIF -믜WhoiÙ ÇIÓ³òX)G›Yù”;Ü·´l?ZNlc–¤¯3›DõXÀÎ"º¯t¯¤¨m¥ÈRäh¨JXŽ4…p”ʤÈÿÞ=[¾ˆìN¢’|f(¦‡€÷´ì€x•ø - H<¹À,·Ò¾Ï{ Ï‘ê ôšóC¼Ç \ œ¸÷œ”Wx¿râ§ŠÚ£º‚Yuk8ÂzBÙ©ú}¥[¬7%/uMò’Ë‘˜u%0˜’GŠˆ8d6•xhâ«uT, KNA3>Ä…ñt‌ÁytOɈ»Œ§D ˆ3–) ·²½GvåÑWÚ‚ QEsÝ2ÑWû{oÏÄc5‹ÂcºãÏ-ÆÑλ -_‚C¾D ÖݰÆ݅ЀwƒØIÜ…QâÛa®r.†çÓ€“Ñ£½ Þ¾ ØKøÀ18í|±¨ÃZv$!3¶’"V¦Q¬—4R©Šf¡ÊR’ƒ$œMÒ&YO„T A7Žø™Ž~6Ÿ,Ax²;K˜yتžÍyEΚGŸg±9A¢“&,(Í[|%†'ØeRÿ òöÃÅDD -ßlkv»l&Ìòê%M?#.—‚Žû8ùla³)‡ä_,1@BðÝÐÎ"êˆíô,'ûàt³2åZ‡³q|Ž2ÕãÓå_ æìäD­˜&ç'ÙœŸàõúw(¸Ÿålå¨ïîüæ»<è&€“þ ÿw ° æ>à´¦Dìû§?1*Záp}Ô1·\U„üÖú²]È¢G¨öX} .+¹;9?8 ¯ª›huÂD4ÕMuÁ|°“‹¶²†°Št“[™èöÀo™œ ü•}Ÿ%p¾ŸG ¼¸7‹³û³<Á›”gôÍtÎt±õ¾Zà“_=¸ÛðWëÌä²l©]b °‚lRÒÐë±½3Ð b¬¯k¾¦ 5¾×‚‹PâÜŠQÐÌÄlæF âzš[õK²Ì¢ÚÐ\¦~‡oÆÖ×*ÛNªÏHZŒ¤(ÆÒ*)§ED@Wãól¤nÖFzRÐn©Œ§ëå¡öVÌÌä2êây•ž—ÓÞ"i±†7/µ6%mŒÕÛÙnGD‰+çf¹{??A@9•JÎ@¹ú%µÌmþå¹Ó¶rNQjCÖT£Äj==k™+5ØÛ°FÔ ªF»…öÎ*Töµç<ÛH鵄î‘*“ÙV„ùAO1Äb1€l›ŽÅ$qžJ"*W‰Ï2qq\É3úÜT{‚h ”cZ]!5E­V'ð¤X£šÀ[x).|hb«éœ—סµµ®ÐŠnì[i墥³{8ËÂü`ÆhÂ*óK”Bï­-ŽÍÅ9Ê›,<ÓHAUav¾@¬Éˆä0ÃŒ{iuSW)cÝ‚†©  }çdïtr-㛓/WÇ|¦zC‰¥9šñA×ZÎFŠ6W31[;× #ö'\2éMp¥o,ZGü§á㟶«£[QR›ú«µÿ‚3bݹºÆŽêKÝeV§ÁV\ kZþ¨ÒW®óÚ†®àçúì¦?¾¸Õ&—ç¥úo®??]ðþÍŸþyý ¼2 ; 5vÉ]ÿcïž.ìÞüüÛoO‚Ÿ—é° mºsbÇ‹­ÙííØ'¿ùðÞ ÿÿÿÿÿÇjÁZ endstream endobj 23 0 obj <>stream -8;Z]!>7L`Y#Y"4]2s>G=Zs#a]-Rk-jn7)Y?a5[7T!b%o.Q+KWBp"chOZ3;DV!=6-p -j7]dtXX'!(-rYh`ZtJii[I11.#pX@WJo#3J:t!t.CS-c#5Y endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/9/24 12:41 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -372 858.900024414063 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -372 858.900024414063 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX$ºþLĹ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØA:ÓˆÁHƒP×uí a]wK)© 16¦$ à å ð-¿ªŠJžSŸè¸êY€»>_sÍšX•Ó{åü>Ú•=•Só]%»2ŒÑ<œUëýž5ŸöiU=§ÞŒ¹ëSõÞnÍ‚3 íaõªœòÛvw $G­—â¨V@ ’ì*Ôý(Š¿Q¾.Ùø}c8úF -ÕË–=áa{îÌŸøíÔnf€Ó6¬vNÎzã×sÚ•Ó}듞ë”4`FÛ'aâ2†+{À€ð"ÈÁ,ËRl àG0ä¥õ¦êØìIÁq`ewu¿žÚðʳ¬z]©9~Í·Kù‡]»L¶|HpØrüÀ½]õé—k;<î -®ïÛ­U1ÜJ=ìûõ¼1Ê…kW@woWåÞïË­ëó»KW€üªf¹ñªf9~ PxU³“}­[‹Ì(=ש© yî=ÀûáTNò‹ó;µÊ™ÐL«ÆxN©\ZœiÛe»/Ž]K»c³+5Ë®7FiïíÆ³ «´Ç^°­Õ/íÒZik*¸fiRò[»´-»õ­••Ó“ô!ŠUk]«çxNiªÚQwíjeå¼W/†,ɰł_Š<®gŠÍiØí×5×·ÍëÛÇ1¶rº>MÁ½î‰>ᱫÁ·ìŠ€=qü¦÷ï­½2ß±yõbn—~Í)«rT/êµÞpÊ¥7¶ýÖôkNGqôÿáÕ\sZ)¸%Z½˜XŒ†? Å—ðñ½‡a÷œs2¼mXeɰ/"ÁÛË ÕÛùa(Þ«Ó½èc–|¾)—½W/F~ߺG2_{µÚÐ1zæh/˱dÃ}8Ф]Ãl)–=,_ó}Ï(Hªä9õzxUr¥~ã˜æK’÷q¤çÏêÅp°µä¿ìä ßnçµQ1]¿÷ûrk—S9]· ×tý -˜µW@ýÚoM¿÷k¿iÿ¤úò’)Ù]”& Qs[žaÖ[k¼1ýšS Ç©•Æû<£ŸÖY2ܲaÙ Õ󳝸vã×Äe· Ïœ°ñÞîípÃ1Œ‚m8t·XpǤ‚ëö–+ŸÆ¼û~mû|c”{×3=ÀúÝ)XMh;Fß± ÿ€ë÷¶ÝŽÖ²ßŒVV΄»oçÓxØM\ÆÐïËÕh÷k¿5G«_Më½r&4– ×·çUÍ)X}š¢@{Å`Õ›)%Ô.ìÐ>—¹·«–*y5ô· cPN–âdF(Î{ßoìrTòj*+'W?´Õ«~Zöø2ÕHëZÏ:#g*”´ŒÆ»&€ÖµkgF×xvŽÄГ½óÐ!Øyéq ì,»ç£X‚œô½{ÿ,{9ŠeÉGv?–àèñ¬£ñÌm4þÆô ö|C{_®æÓwsW¯ZJdM`–/_f¿ñ€Ûs×gÉy×@¯q­'2E"SÉ«§)¾V*6´OSÔ¯ªÞhõËre7£©äUE3Õ:ÏlÔÄeÔÄi¡&j]óZÿdÉCpô")†Ýwk 9r±ì¼C?þîq- Ç})~°ü£Ç5‘{ÅÒ‡\$¿èq­ä= Kä ‚£èqmô¿'KÑãY)«Q§™$˲¬$ÙÎ}÷ÞgéW³Œ$K2ãhFªßƒ>ô¢=éKzÔ§^õ«g=ÿýûÿ?øÃ/þñ“¿üçG–~õ¯ýìç`=øA AA,ÁDÁTÁdAöЇ?Ã0Ã1$Ã2ÌxÈ‚+¨‚)ˆ‚'X‚#(‚!‚ì Ù¿~õ§ýå'ÿøÅ~ðÿï?ÿ¬_½êQúÒ—~ô¢=è³ï»ïž{¶«=íiGûÙË^v²]ì`ÿýwß{çå+O9ÊO^ò’“|ä"yÈAþ¹çg¬”©PÍk\Ë,Mõ¾\Y%4Ç-¿°Ê­[Õz£z4ÅK»-¦’c3ýšÓ÷†c­~U2¼jÝ.gt¿²snv1µ+»ñ+ÆØ*ùQ­e£`L+u»xêù†U«¦ €ïÔKÛõ›‚á8vÓ»>ïúlÝ.GÞÈœ—¥Zµxž?ñ<´–«Q­~ïÛM½·=ÀóÆ)ø®]Έé9~È뫞W¯šÐÚ[»1« a×Kh -– §Üú£%4ÅzPMõ®ç;õ†Ù¼’+tl®[fÅbNFk2– ß2\säYc -ùgŠgÔk€ÇôeoLÓîÇA¯½,ùÀ`÷š{ǯú‘eטkšv¿±ìZì¦`•[aÙ3Íe½¯ÍW’]‹ÝšõÞ2üÁôw§bª¹¦Ý×+f«¬Š]ø®]ú‹½¾Nö¬~o÷­YŸm¿ñ€–á• âØµØÁÞ{–¿?v­‹½”½ô€J^>Zÿ¾’Is°dX5§äõ¿¯˜ý1YÂõ“Ésí¦>×+Ϭù»cnüŠÕ.K޵¾,åÞ³ê{¼5ê“ç:å¾¾¶í7¾gÚl6•Ê—U*ëz®ç—©d׎ͭ»~é×vQò›RÍpýÒ_ŒRÅ«^}Ù\ÇV·^‘¼*X¬ŠQª×ûµlW%¿_öÎߺ9ÏïM¹´ýÙ°MÃqüÞ«7¾ç×ÇpŒõe2\ÏñêžåØMÁ¬9~¹qj€÷“˜Uò ßöƒÍßë¾2ÇR¶ûRÕó÷ʰ ¿Þ•ªžc¯O~ÄdøeÇb:kÙnlo¾õüV¯êžeïsÕîëU¹õýÝ-\ çÔ§zë·þ2;F©d÷U¿¬¯E»5Ë­]ú»ß8Ž¡>y†ïÔk,Žë÷¶¿[~SßûÖ¬WõÕ/‹åªb_‹Å¾yžçùËd†á÷}¿ìM¹î7À¯^±T §ÜÏu?Зm¾W÷æ{ïXÊ]?7ŽaÕ›J?– ×çgÃö[¿°êüHßµW€[³>±ÔÞ˜%Ãö{Ï1ØWþ¬”ѱûõ°æx®9—Ù·ü¾^sª’WŽË<óLjòò{ßnÌz°“aDzô%÷eïœôHÍ*¸nÉ_†dŽeYr¯—½¡•!ØpÈ0 ®7/Ëåp£/ -U¯I%¯¼·+×±“¡&’]ëa©‰}ìZÙ;èK’äâ÷¸èIMäž=(’¾ô@Ò“×<Gäÿ÷‘ËÑã’šCs¼phþÈ/½1ñ^9¹ Ô@ï¸Y&¦lºå÷–çÔ$ì5Ý®ß.æÓw,ží·s¿¬Úý¸1{×§)Œ_Õœ)5Ç»)Ï˪]Œ ôšÃ¾aT¿q¬Ã9zîú|åY£9xaoŠaIj¿>rï;çaé}P+Eÿñ!ç¥÷yáè•à×Bóð½Ý˜~½Ó¯œ¿ä"8‚¶«v_ô\+ -ä†Yo§”Ð8Úv8.ãšÃfÉð}¿ž—å¾*¦±rr™æxY® 2ýÊÉeþwÍQ¿¨WL£Šájò½rvív_õ̾1ÌšÂÊ©zUï«©Ý8Æz;¹æ¨\¸Ñö-Ϭ+寍&ÀÇ/Isoùe¹Mv¤šÃ®çxNmûMÍ5ç–ßW,5«—}‘ƒ=ç¼ôÊRÔHì$–½sÒ+ËRë )~°ä<Á’¢ù9çœ{öÛ)—q>jœó®qkŽf”%Ã*96£—}ò‹]s¼€mÛ »)ÇeŽ0€:|×@ÿ•_¨9ÞÛUåVÀ®7нÁÁŽž ÍñÆ7üá¸L‘Ðò\¿/7Õ`/&¡9ê™ =Òky†íú ™ÈÊÉq÷@¯):‰z¾Ýú¶cq\Ñ4G=ßî[§—iÜû5«Î†‡³q( 벟u¹ŒfVƒõg$‚µo Ò_ ‚uõóãYÁ:g~®S•‹,b&Už‹ž"Ö{vœŽÅ‰óô‘E¬n< Z×ÐECvH ›7…(´\4´*¦“ª9‹ç²—& ů#—ù£`y¨ -¢ ‚ -í§Y‚M@*PtFCfÁ»ã«G¤RêPH)TèL4™Q8Q¸Š%±œ¶›¨±ÃÖ ?žn¢z,oAY>4í.õ1E êƒÞŸé ±ê¸*­FJ74½Û¡õÂ;V}~.‹¤®²(/€sæ+„¤Ã/+( ‡µV³ËØþþÏKW6ê¡>å 0×õ)‰äuµiÄÉa±â ÇÊ'+žD>iœÂû Á‰D"‘á%¸„¾âŸÐW¡¯8Œ@ÄPœºJ°òÏk¨k§¬=E¬hR+¡I4©•„éBB°vÅG=ÎEO?Ðýr.3A D𜋞z—ýòî²]ö˹lµÐ"ã>£Nö´_ö´²§•øä²ïcæ‰ÂSnr_nr_Þ0¹/ÿ/Nëµ¥$¡à²‘Mþ…¦I­¤»|4ù›€cÒqÙEÀq¡/ÇäÂïÏä[^©•tXiø?f¹ì—[^K–¸ô —YžÃð —>±Xú䎄·š˜p@$B_qšÔ¶ìv\‚s«\–pLºÊaML:.«TÖĤm$]åV“NÀvœ(4h¡ŠÊ¸Ì–¼8mÆMî +ð…Â’Ü\¶n­¤£4H#ÔsY]“®Ì¯.BųºU!b& -ç€Z³Ð*]’ŽË2„/l¨ÂÇH—oU,‚#éÚAxšte ”a)Pó\éæÖ×3— -„b¬ ÖmK Cpg*yéªcp™Àf áXÁÖƒÇy¹§~šA:(N2¹/_ :‡—.íÇ\†¿(.kbÒ­¥btƽ!X;‡Kû[»`í«—Ñ)Á*3H6ê{Ìapû<‚!V<ÔJdO+éT{F;.{pÙœad>¡É¹޹ôI'†a8 -ðg/bÜáDáå£$º¡"ðÇq¡…£vàH:tÑH¹U"é2Ý÷=àÇÙtÑÕR[J -êÛú8õm}¨Ÿ碣—’–*þ:p$>ad"ßÙ´•Ò%éR{FŒƒŠÓ-á\¦X½E6„·°á2ULÓè F?TXcƒ€ÄÁV°°ìÚÁ[—¹¨Ðçâ -b‡RÀòÂá â,–@"ôBd.Z¡?:.+ªŽ)@<`Á‰[‚˜+PÈÏe¤ºmí5 ™_6Ĉ²¼aÀ «c@%Z¡ýy/K(é¿ ip"O¨ùÇ!í•p.º¿B²Â|/±Aê:6Š|œË2™ù\sD2ºFM—Æ–º$ÝÆQ™[LQJl•‰±y BŒMÔQ[\w[꜇£sÙb$:yõYý$r¿<¶/GTHÏÇuSá7”máÑ—`í¨"Ý´AŽŽH>ª-é,©kÌò›Z„y`E*@&èÙ€°ÈL*Í …DEƒ‚‚„ÎôÒæ2žþXíØ Þ¸Åj¾AZÞÖ8PÈÈa¶kÎ㈆Fcw»Vl¸ŒB~NïL ž€c¢˜Àuí8¨8¡¡!íô5qÙ¨“uŠk/°¨ù4 8½€…\vŠ|äVAmú! 1(¨˜Ö$èœZP—0ä2‰ÁQH˜ĵ¤#‰Ô"ûAŠù–´?Ï¥"Ñ= ¨å~Pq©LøÌ’öD³%B*G¨ Z|õn7«½ìÈ DüÈ%Ø©}–êÌD°¹ÌB€‘J‹NIŬ'ž! $$_¿FLnTL¯Ëà“åæÅeôÆöŒ4Ø.à$X׌ÕA XUH:PGsä âÚp™¢˜VI¦AðSƒ‚Q/ß”Àºæ²ö&¸=‘®¢ˆknBkrúŠ×®N qÁB‡`m,eE & â~ÃTò¹ÄeŽÐ—oK¨“@ËÃ’¡ÍÜù$%ÍK¹ bSc/ ‚ÂäáÒVy8£Ä¿ç½xÒr)ˆñð´\±MGS˜X…ËVÑÆÜ•²`‘á*)Ú2<`U®‘Ë -"é²_Nà¨pÆDƒä”0!Ó§ƒá\F÷ ·#Îoç*Þ ì(Ê(ŠüxoŒؘ¬ññ”Ôz1‡ˆ¡ Z~"iFvq”ÔJ@Õ€\ùâ2ôÃr‚Gò -¢yAY>ƒÏÄDX!tY‚Íe™gùˆÄºÖoa@"ÄnrsZ³ò;=¨8—­skTªå6ËìÇv»áÆj…?¨øÝT8dsc5—}% é^Øy= ]ËC:Èe+ê\ôöEŠÖak%]ŒÄ|¦ÝF‘naŒ=¨8iL¼ˆ;Åj†üøzÏŽŽË8 -ðÀB6DÊ9Q8ýRýí«têðã3«ô·ùæ2 4ù‡Š&÷uÌ™JO.6¢ÿH8 ‘•C¼tÅã6”të·ùt*A‚ð*¢`³¹,}M‚eÖóüib8.‰04ŸÆ‘ᘱ -Yñ{[8û·ós'éäeן¢à{FARäã´"ݘCd:ðãèé”RW9-Š -Œ<ÂeŽK‰v† -$¡ísÐbl¼A6¶ÐÄÓØ<®JlXÛm–Ä@·q™;ZGðYI‘è/ufpÒó0CIáïPA?ïŽDó‘^œhöîsÙ˜0ç%ÚËÏ\ðè'sBW©O@.”ìE$RÎqæ½8¨ÿ×pü²òŽ%:q”H4³š·P²\¦©ýŠ2TuBW¢\¿EVÞ>$v@õÈõª9‰”“˜Ô5%Axבt[‰ùžÅ%é¶Qiil©—ê¶K¹ËFˆ¯±u‰n;YÏØPrc{Ù¾®mÌMb¾§àf̦½ÂJWüvO 3S09LHǰpÕ“ù cká›ãkõq@¿g«\T&Ó­\CëW-,DIGžBI7±œ(†oƒjj=ƒRêk° +ÿĹà¤ÈÇaôVl± Vl\ªLŒm516ruRl/Õmdƒllƒcë:q\¸@ìÓ7ÆtØÁÄäï‘DóÒJªË¹â5çSº¡ð˜HÇeÛÛ €"Ý·&Ý búxrÅüç–RßÉ#/&泤'v“:ÛÙCÓ5¦*¨\6òÈÊ;«”úê,»R«›¨•´2\ì€:Ópý*ÈÊRê³=°ìfuSàˆ¬Â‰o¼D'ΠëCP%&êæ 9¡^*Z=E¡„öçqí %]‚ù¸ÏðÆ¦Ž2ŒÍãˆu›·:)¶Üblå€F±A\’në ¾Æ¡|ÅÖ;‘Î;  Ïtï…NçôH`´)ðþ«dPý*bÐù cÍê\û|™^ap!³dˆÍØl‰tâ)”t*þEãÌž—8 ’ŸDÿRJLÏAÅ%§Ít©¡¤SIGdº¨Ð¤O¡¤ã2†öªæÔ«†d¥’zÎOshÙ=Àûé½r>ÎÛv1µ yxjÆÜò̪^Ô N½5§ yÚgÅâŒÚ\¿—ù޼Ÿ6Äzm7åiÝ.mbɰ€9óÆpKD»²ç}¹š6ä¹oyfÛg^ÉÔlyYn»nŒ¢a—=¿vý -xë8žSj>`Éní¡æƒ8v;lÏ2¬Í²Vz8ë©Á·|Šm€7¦á8õ|6š‡³¢ŸIÇnÈT¿!Vå$`U;µ[†ñ«š_*šöâÛŽo›¦ãÛ®iÚ«iº‹/Ë}Á^M—cË«iº¦ip­jPšê•áÕ«&¼š¦Q^5 àÕ4m»j>à¨ùÀ«ãŸé:v¥ÜUÇ·üÂ5ê¹EÃñŠöTuŠUϬúÝÓr*e{ª:u{ª:ÕàÑn\¿fOU§Ü6¿á5¼2¯^U ¿,—®QœÇw=¯j:Vy·¼BÅlï–Wñ+à=›†Q.ë•oyN¥zìÙtýªÜ–íÙôýÚžMÓ=@íѰzH1«ç\°¼í¤›è„‰.'eZ;ð@õ8y.ó#Å©3yLlò³GI:o ”tž9` -E¡¤ YÞä*VoPŠ©Þƒb5ܤT_P½(”t^„¢z†È¥Š)üI$ò%ÒæPx.K¨ -ÆS‚$býu»ðuž}ŸP²J !þ0 %cå<±÷Q9D…g|BI÷]žÌ×±¤÷Ò@jCIu.J:ŸŠ)O ”Fuœª{M(é •iÉ ¢õCe§.îÏ ÁPÑ -úùà@Œ“ºæPŸÔkê‹£,TŸ$>™¯ó9LCwOŠæ€þ™5ÀýŽ,,¼ëÒÂÀÌ+qÊ0ÖÄ䎜2ÝǹŒË¸¬09ˆb㲑x~šÒÒØ,q€[Zý³uðIO½· DÛRVçã2Ô5@õÔYqV_#ñB¦'Zw—)H‘”õŒÈåml,s™xÐbˆ^ªÛ,Ž˜—ð‘‚|.:2A±ý/±Æt”½-<$¼Œi5—àýlƒ£ôsŠÕ*—qY¦%ù°3ð0ÅCüŒ\vp;C•Z'§☚§ù@ö ÈùtµŽ)ƒ þ#Pá3âá2.‰0¤ã2.óÄר -n#ñ11¶‚Ë jý1ÃÚ;…WRæ ´N¢å0W{€ûvŒ•ù4ŠêK0ØaäRgt.ã2Uº¢ úЇÞÉè~9—uP/ç2.S«É>p¤µ‚ ŠÔ5—qg%RÎ i)H½†â‹WA½ÂD°è‘ý„YNmWT­þ*e¾®UC3âbÚcþ|u†…s!¾pLÚäܾŒa.K±ŽÆcuXoƒŸoÞF/9óŒ­ô~Ý6¡£ o(Jœ&ó@d³ÙŽ`ín|²‹ØebOqPqX(”  ÏI°èL8›Q†±y%CBÃzƆz©N¼Ù~á -û€ýšTå˜B‰û«ó-lÞê©ûÓeá ÄňK¤O°P(éh:6à2;Æý—}‰» ™d—©Œ—qÙ_• õÉcƒ*¨×ýY™7; "sh¿ÙAY8—º×† u<ÕÔ"x˜ SÊs—!FW×=.3¥NîŠRÓï(Ї•*sqÙÒ¹,ä}qÚ£®e”alª66.“ü³±yXÏØ .I·mhc3€hĶiíAè6—ê¶‚ƒcC$ºÍ¢216Œ»ÍL t›ñ56ßQ/´â -zãâ /õ<—­ÏŸÈzò ê2·–ÁóeN‡C|¿ÝêÓE#à´ß´â/ —uŸ"0H?§IM¿ƒË`«Ã4`]©¡úŽËJŽ / TC$¡pÙ) U¶ÀälPYå Òº0$šµØlÄè©2Â…¦)]UÉLâ²É&¥úÂ@¤®I5e6a#DȬ,œš¿¢ÕRÖ[H9/“û31T´bZ7¦BîÂeš‚æ„¢‘rš¢H9Ë §À1²&umpZÝóù'ßfèΧQ„@¦ÝÀgPÀç}Tßø|ùºœ6f~5)”|&öãiÁÌm-‚j`õ®»b:ØØÚbžÓU—ïöÕÏ銴­J ..Ù1‰Æöu}wÀÃ*Úc•µáWE=¿fv˜CY  -¿«Ãì`‘Ë&öãWŠûˆï\tòÐ?NMƒXGÇsÑk™k}°Ðc'“ˆyN‹Xª¨‰ƒÇç$u!óôÁdÓµžÜÕ¼?“ÿ˜M‚µÔ·õ5 I—(œ(܃[I‹¶?“Ëx)¤œ£PÜJdÌÀÃÀaP¯Œ¹–©(sBæÌ8-a7QY@ê49Í85$T´zî¡i|„¦ç‘Êœ‰²å0·…3¹ŒóJÜ'XæÌ—­'?OHÏÛ÷š‘B‰ùÞc&°ëï`]9¡ñEºJDÚ5g…Ò›ËJ·#VW³]‹§] $2'~è,N¼%#B¼c´|½ ,7×’åŸÖ¬ÜÑ€@:’ãn+cXAøR­“Ë@†ÅWFEhj8æxzB«|¦T×ïWÃó¡#×Ë)Ãón>nC+ u½™X.[a’G×;”†°’V¬nh6-×Ì…–³¢Ë%ÎrL=ºxƒú-Ó,6ŽcRתÌ%2]Ù…R˜Å£eàÜ7¿3Ë6ïkDÂÃÕ·9ÐÑ«GÇymBÒ¢KM¦„¢5…b™¯Ű@˳ºÐÝ‚Q4eéy/-ÍÉe²0*×h‚apTÇs™ZRó#‘»ÈAÅã+b±¼‡á[>Wiø6ªr«DwW¸»ÀÖÌ.ð\Vñ•ƒ…•@E`­dÎx[ò™F¨_Pìíúˆ}ę܉mbŒP“Ü­*ô´ª6+\…V•@E¶Ò·ªQákÒ%é``eÀ|Õ5¤:¤AøÉЍ˜<ùPL:ÇÈ ð•Qo;—=Š—€ÊRÖó3Ê— ˆN>Ttœ‚’ :ž‡¦åÀqáuyÈôù°h;7ž:ciuC/Oybt ¨MÅè‡/=Ó)²ÂÅëqÀŸ\V#:©žnRTWÝù(®ÑûÀëuŽ ¹ f•Ë+ÅLÖÃïNÄãÂK‡ëë Fç²(qᤴâ—Ê÷\†A˜ý¤S&ÿ#êÉO¼üµè¯ÝìõäÉ.´ð‘á'Àw&ŸËzÉeáßCÒñL=‡&Hõ`&¦%z>.c”!yŸ¾( -?[N“ïX7œ;Y~õü5hÏ¢ˆ[«ãðXjÔýº€‡fŒX{¿x/dF*‰¶ß$„Ñ'£Æ½ªíÃÆe4—2:z—Œ®r™šºÕƒ.K©…? dqø¨‹Auð“Îb¡zéÕ–’ÛdLÞs ›U\¾e}¾kŽ\Ȇ -itD—ö„¹;•¤N}[_·8 nOc$JÉe™P}0H#Ô?•Nš ¨ ÄbõœÓÒkUjÃ;)Âù)#‰æã2L£’êu¢áÏɶ8üÑèËt’ ÖQ|mZ`‡Ã,¬kÛM„Gédá¨=ÀýÃÓ|"Ñþ‚§R=%,©ÄNœŠš™D¿i€Yñÿ:ˆT‰O)QH€’1üß¹è µÄx76Zxxð“N@ôWo)ØÆvøR±ŠÛáOT Õ?H.ûVÊzø4å¼.ë‘Ò¹LRºE®Ð€¸bàŸÍ‚ø£Q†±1¸*±)º™ƒ¾,!‚òÕ·õ‰ Ðäû–àöEA+éºÂç2ƒ|€™5çÂ1g†§ùnMÓ6`t›B°øXKÒ:7+øðUÃáhxm§IWÀûÂTæO1öc¸hƒÎÇ98Z6©Y.Vß!x½N.ã>­H]¿‹úðU÷ÀtþÈHŠ <:À%.\‚áÀß#¡vØÍàvÑꔂP/omC£¥´íg‰;DEx—†ŸŠ2gô%”t—ýrR'¡â!Ư&÷å=<}æ|ZÈâü¡÷“î’"Ño)Eç]„7;$øc!ëásÙ€—à*†êàm[¸YiáïBù‡AY¸)ù8‚&_EtTߥ$ÄÁ˜¸ÀB®Qƒ=y¢ðÄI°vÊO8V|ÑQBIw¡=šP}”oƒMÊèßbtKdâjFRbxÄ ±bÔ‚ˆ¡dM•ɇ=IêšímCd´·‡\æXÔ‡2x¸8W»›@Nþ@E]æ‰8u>Óe¡úc”¸ð6,uÎĉþ‚‰t\vOJóà:̼Ê'gzhÎÍ`r˜wKÒ: â¨ù(UëdpÕa–ŽÍ€ï "]¤³pHÀPáQлù8—!DŤôƪ•tæ&-!¼i %OxÖN1<.œË^i Û@“/: üÉsEÅJxÉC1éÌëåkÉqáãƒ@5`µ½ÌP -êI‡Râþ8]ýWºâÓÕuFˆv…Ž - J(é: -B_ñó²ðœËÚù$‚¹'C•¨ð¨…Ë~9 ?Îð$ÇCŠŒZŒ ã’t—ü³±™JK¶½<ž‹Ž² ü@IabJé¢{“ûòp´ý&¥ú^عF.’?7ÈxUãÉeQA?7î|1”lušÀ9ÿcbô DPñ!Œ‰tâ)ÄÔ¥ªHÛ×#»‚_1ú«7l7ûÓEá5q!sÊ1:ómBVÅÓOÅ™ot -|äÐ@T{F?Å%”„”Óù)/ŠÉP¬.&ŒHéŸRKêX¨nÁ0à¯?ÎE?A˜¶'Dm'ÖR´ŒC¬ø†Xñu\µ¾Ã¤ é”D?/Áy½Ñ ˆNþQp:|Ê)<™9m,Ÿ]!çg\4¡É_/¢ó‡Qá CsòŸcÅY®âþøPLºˆŠn»{Ж’F‡atµãzùü_þÿâð#\hᇚM€’K0„_XL¯‚å ¾/"øðÇH‚Ñ ü ¼Åð¸pPù:Gøq¯’!/¤=J(éVçe¡I­Äx¤»Si %;òX -R†„BR`ŽƒønBŒ/a®Ô“"§; »G‚é+þaQ8Q8í)m1ÕE†€‰`±½Ç¡OhÂ+ÊËéqÎ| ÂÈl/‹“ÿ¨ÌìH”sô!ðgHÇs5š¿œ€iauüÉe-ª9ùyNu]b¶® -A¼‰ %Ô‡oƒ–›R4"åð êuÀ1ù°pGR×éˈ„·ÍƒŠsÿyÏ7|ç(©»4)ßý㲯ñ}' -ÿN”Å—^Z‚ÍeÑwþ1N¾™¸Œ…Ë ƒ¡`t -ÿ¼F·8mnAÐ1 %Z×ë7o#.£|=æ]›ño3,õx2P ¤¨_—ºÑ¦{xlâRgN(¼JxQ #Å¡dƒÛ¶ÅZàöq"sAx7ÏlRDáD¹Mßdx¡ê?Ï í •àö^z~ãA°Æm(IÀ'g4¢|!áåìÜN$Â'• ¿N i·Â …² gJ˜Ãƒi{ïé­…Kì‰Â/: £Zˆ™:ù EÃèÑ©íóÈ óyT£î·©Ê1ÙUê0Óš£î2ž,^˜\fÆ>ôc^¬„O`Z ׬ëv~H ”êçXù8v=|t]O>E¼TOTJ&ÿ XûeáRCõ\†¨MÈ_ý_K•ÉW>‚æ4 œª?œ®ÃGÑõð3¥Q÷¹lKl翜æãV(Ç,µþü'uóTï??é$nzá§Y¶¤:&Þ¸xaT©¾2Àð'!UÐÏÊË|ˆ™±xÈtËš Š€æüŒËç„ÌFi=y.{m ž/AŠæ£Â±ðÒãXø§0iôW²ð¹kon°/1Õ?>¦ºH>L:sj»½-\ÜþXZ]V±ý¢A]æÌ=_ÇVù“CY\ø‡8Pøvø¡Ÿˆ2.~#J&ŸJ&OilçOA­æS€ÈV‡Œn oo«Û™ƒÂƒP¤C©á*î—Ť›,þá›^¯õéÜhÃþšE£º¦0àϺuA“R™3_…ÓôΖ\£sÙÁü'_Â\†? (Ñ¿(HDA&cȬxĨžà -øôŒÞŠï¨>7¡ 3afûòœ3ŸÀ¨Å1eÊ[ñøÂ1do-¼û$«O¢ßâbP<ø‰{»V“e0:—i$ÌT'¢ÃÇ|“ŽÌ™oDD½ÀçG1 /{káÞ9«_BYøItòhǸìÿœ ôËà*óubìù5vÇŸ³áÔû£3,üNL4•Ì\(ò·Ã>sa “`¼ÀÌ ßÎù¦æ3D¾V‡u”Ì)é°P݃ˆÝ÷>3Qx÷¡”>>0‡žé ûÓmPŸ”¨â9’ÒxÂF ß–uçã2Äo9Ìm|™<—‰ E'½ðû``Ã= ÉáÓ…̹pç;ˆjT¿\½·å_=×G…7,.°µpïð@%úÛÍèããDáë -9üJý‡_Ù¼TÏÜ3ãÖÉe…²3ž¶Šà˜—Å©óØC«7î|†÷Ûú¼Í þD¢“‡<­8ùÃeqá!—íþë[Qý5bu>˜ªGJ‰·m…§ÏªÞá1él«ùÐõðV—¤‚ǘ[Œ”Îe!9ž¶¡ÄýÄê|šÙê™Xtò˜ Ó5#ÓŸ}…éÀ$úÅXŸxH‘d€²ðôÅJøÿùI7Al'ozµ¥„ éŠ=2çÂÁO‡é²pƒê:Œ3ŸOtð™"LŒÎxEºÈØžË$½µpBm¢pï<¥PÛ¿äDájYRx.³0^¬‹/D Ïi¿+މ6£»Ô24¹¬U—yð`Œþ m‹ǽ‰Ì|ª -]ôSgBé\&¡à²®‡Ozoðq»¿GJ…blV Ûù[©Aç;8*©nqM¶w¨w Ûr™‰íé:1ý¬fÅ Òæä9Ûf?gõÎe*¸Ê|š‰þ‹`ñÛ™OÛ EuÃÈây0Ñ,*&Ø$.«|þÛ31ú…Ñ™õÆÅg/•9cƒ‰êcˆíü1wÉ|…€?&×è\æbZÈ?|.Û$‘®"ŸÃIL«·@™ïrú„æðçDEQ= UÈœ„Æô5Rà2®6 ŒÚRò²¤ŽÖÂÕŽcŽäDá‘cÅ-öŒzÇfÞ¬ô ‹çUˆJõDkáöÈ á¹L^±2ß—à0“¢9¿ 2 z‚¿Æú1ðòúædNˆðz;2g¾Crøë"³â›Êf;JQý¶)ª§Áƒr >ÿ櫸ïm‹ó8Ðq@£&ÿð íˆí|þu“`t.ƒ1¬Î‡ˆ±çÏH ¯¿½ØŸ4‹ê:bE`òrjÞ°Òäü’—!ÕêÛú4¢“ÿ(ÂÃ÷.&Ìœ]ºóõ"dÖ7Aª«¢èüÛ‡€ûÇ ÓYOº‰ûã‹Â‰Â=èd= ŸoÚóbQ?Ó@éšPÒ… «íšPÒmXL€ÚÎe#ÆÛ`æ´™€ -G‹Ò¡ÉW®S™Ö¨¤óõÉ\•’)„DfD0£ J†ãÙ¸ÇHD*FLJ2& “Šc¡@, …±† Qt1æÌÀËw»¥uñÚU,÷›/NE«ûòÓîuCYò7¾¿| ™0Åœì{qv竾ŸšÒùj׺…ÂjòeR§Ÿú?ÝÜΜù¨¸JÎWóÃút<îE`¾ŠDkJ}a`ª†¬Úf^Ç6GñÊοZ1[{êÒ³€†ñJ0 ¥ÌÂË¥)ï¥ ÐóŸkù½0V%òŒ"o Zµ9qÒú+=óÊM³ä h*G¥§e”Ö̃BbÜÆS͘/Îôâ‚¡>`›Ym–k £õ]Ä«E×z Y¯Öø ¼gäÕx—Ô£”Ÿn™ûMƒyþ’/ëê›O@ï4mtËù·=¹ivA Úì³J<Ö²£–™s­Ï N¼ï -r¿½ê½c»Íj0:ì€ï.Ií$óÂ;Ä«LÆ¿Á“€ç_³ý2(ºä1ïÝãEšˆ’_ù,ð±S 9ðFªÙth/ïhèGV‰óÕæSÕØ]f•^cè7³Æ­ª -¨šFC±_3+Äúgu¾e½²ð.ØZö:¥Û0'¼UÁ‹BùæagõéVuQÀÐÝgº'ì²pÙBJêï70~?8H…˜áX;C6~&ìyìÁÓVq°_tP@Ѧ?›Uà1xªyVÕ‚'w¯±ª’±*¯½u÷Ÿ‘÷Ÿš¦ª"úg•Ínæ´¥ªêGãT »Ü­]õêJò™ -Û:¯†øAr¡k¬Yqk66~„ÖU2!WŠ€¼ÕÞÞ”f)aK^«*‹­óÇ _õ¬ñ¾;ëÄbÞP†¿Â@ÇüÆ é»,Òr«fC ëËñ#j¡ý姆 €¨“ÝI•†–\Ví‘Ô"ãÜ„€Òs‚º4LµÄ®«Ebe K.³.³e‰Dk”ZÓõŸ_W¦Sí[h;.«ã&dï: ó¢iþZ‰Ù”© ¦e; %NÈÙµ9¶£ëJ3b ;µð0Áhßýc¥”pqþŽ½ÜšGPÂçegލ˜³NjK´{=)Àä -àÊ(ÑjæáBª„æñ¯U£ÌŠæÍu°¬<4Ô§2V_ íΕ•c–‹Êúy8µë±æÔ•Œ—ô¦š}ß—ö'îgš–¦}V¾¹mË^¡MÁmò;pIûÑÉ8rÔYóã•Öx2Èæ8ˆRx©W"ëÁÔ¤ak½F¹Au“&Xø-ŽHZcB½VYÆ.à|冓8í¤1¦ÇFTãŒEqÖ5ôÁXWž_á¬U ,ûÊšú«jÇ)H¥[¯Íý"p7ïT™<:è{Øs–¡¯&¨^=ˆNÙ C§£žÿTLK>„a›ŽKyiÌ0p§=x\¨ SMGÕî€Ù8y°LϤºë—ܪœ?è{[ØVíÏ5(èpŸuYÂ"í–eÉLÀx˵¸Lýàï uÀúÆC¶G< 8Dp9é ËN.ױŚïiã>Ñ–L¸;ž®¡÷BBXà+þ΋m¶^;óà…ÓhúšÞ/HŒ¸µ»§Êþ@ÀúÉW -8öwÓoÉ›CIœé“ŒËµD9B'U¤cLPj­h¯Ë³p¿ÑÀÂÎ,5ë¸Àé ƒ=DŽ Ñ×äòFbœFÈ‘©H‚-ÖÚeÑ&•gŸÆ¥q ìógÉž;8™ñÃâ•+þ -yIZý$«Ì¤5ìj -°W©˜¨sIbDO|ˆÿlÑ7TÛÝ4}öîR¨÷¢;–8ÿCÕÖ5™†zO0i:+úÍ‚ß}!®§k…ŽéMÙCõ1|ïµ?›î¹´ŠñBNë¢ã4nž,ËO$¥cà…¦)öMÍ›ìûÌ[d™™Üfü1ö w¨_ý$‡å&Åàg”1^.×|í>“ž&ƒâ´,‘ìÿR2úM÷‚ïç¨ðùQ/Q" ”)΢ΠR±)¤aNÒÊ¥ÕzóÆ4¤¥'·èˆHñ]_ðnt³uºçzwÀ=Ö‹ÈyP^gÓµ©ìT‘¥¶®ê¯,ا†’+¡t·n2”ZBJ*oÌ×.Ф?Ò*6„°Ìéœ.î7r’PX;îÎ×»\¦%W_EK²ž w¼ÑZ-pÌ wOa0`iŸÏ»S ðî’ëx<".çPz‘ £YJ=(—oú…NŠCä'a}z=>iÜOŠ -‘¥IŒÈÑ`u @v“œéT/_I1 D]áNù‰í`ø©1äùN/I-4ý1l=·ºVvï`˜ ^”+ée­rµÔ?ðš »•»2‡Ýë ‚nô¨úˆ"¹Çw•ƒ…|h -³3v$2p(o\­ñ¶…ºJ~”ÄÚ3\ªžù"ÍÃEí‚μ$&€[Œ4f¹J–鵆œ}VäÂ˼a5ø t†Ö±‹¿PÅT>4…™U ®ƒ­ç?Íg$±Lî>ŒÞ*͜Гè&;¥!„QfŽúŒ¥`Èý-•xx,"'üóF¾RJÂxC£17”r… 0³RD8ñ>Ë‹FZäzš¹÷7@)AýDKÕê‰}׊µ½ÒJV¯&Vo!V¢A©¡ W^†6&Fš(gÁnŸ™² D5`ù†-0ÀFˆ›r9~"Œ$O[v•®hJŒˆÑ ·pQ)‚þ._Uo™ªbg@‘®Š;]¦2{!0ømíßULEG§ç‰£²:n.ÌeÁÆ[ -Þ]*D=;ô–ÎpY%UmCDD} 7£2 fé1péM¨N; ó[w¢Â)Dè& )ý“㙕j5#«¹Œ‡ˆK…Ñp½I˜çGQJD¬e‚¢C¡v*ôPÃC _rÜQLt[Ý/©H2O áˉ»„…™Î˜Qþœ× *cN;Ž×µKDß4Í#àõ‘þ<€Ž‰¾b´¶aõD.ÃÝ%[i@ÁµûÆ‹©¢èü³o{ÞdxeÝî³;¸Ó“ÍID„y Ô'y _wmÛøbb#ØôÆác—_˜K¬«Zâ«§­Ï8Ûp½iÀÐ?+ýÉy[?ÃæÖä1Ø~àƒ0-ü:‘0 -ʃÿFÃ[•¶O¾2®;Ë’*݇ûÝ<¹¹!F¯)=3Ø‹ò¬fPU‚J.%óRV>Zò• \ú2ÃîQîê‰NoR¥šÐÑ;Ívªr@Û6rñÕ˜Ad]Õzk0Dÿ¼œDˆÉk™þUº¦Œ9Ô!ºmF]:LˆLó=ñâ°iµýèUj`w_ØO¿ì†ÚêÇ©ÒYÏ 0óE³„=åʃïÛüU)½•›¼c£¬ÚZ%a”Oa½oÏÖç‰ïž’ŽCø¹ÛˆúïVh¹{Îà;!õ‰Þ8[G‘\b}4ÂAÿú4öd‰ëŽ{šÐ|"ÅÊ; u%¸&.£‹HÖ]’¯‹ -µhmž€\PuôóŸFyœyBÔg’&¾KSœd "Ͷ:¹¤)Í|´Æ;é6èÕÅp<RÓ$g`à €BŒ=’œÒþ•Õ·¤°Méð˜Ìðdm¾ö)5+Çé+¨‚Í>ß ÃØ)N7Žu—n*Õ|J|?1ð¸öæ( Îr:­~ÉÇખˆ°™·xbH­Ä©ŒjO‹¹¤X\ô#݃éÃ媶§Ðýepè·©ÖÖë’iÖ¡äöO @'5Ë H²¸[¶ª{ö¦ ³ŒX -p¹0¿PµÍföÈè~­vì¼¾…<+»Nž1ÀæõªÎ(vêUL j'08ë?D€Xí½±=ˆʰg<‹^‘z[8G ¬xEÊšˆ{ÞÒ¢w´Š¾P "þóÍ;";¯Ë¦æøž_%€ßþ2瘿þ«sÁà.!oÔ •V<%8…ØGœmã[kLgqš±.׺ËÀ¥&‚@Ÿi8.«3b\æAÈ‚‡=JÍZD·«ÖD{²_›–Fô,®sÑþ«áÁ¥‹“­”¾Vð%f­ƒ0joµ¶¶€åÙLèïLâ¿ñ.sõÍÊ.×.k=sŒ…ºT¢<ކWÒl/‡ öô±hÂþŒÓZ‹Žjî…„rÁ…øCfc9ú¦ñÍŠDìêÑlü%ɽxTƒ©JØö£úvЭn'=qv -2õ!:°-õ?§8ü¾¾Œ@(ÍumÊt …F_ {y1ménÆõzÔŠ&ÛCàÀ2™hæì~4H2‡D“»^"™äæ‘öÏä6Àgç•Äm¹YF6¥9¥pˆèLª‹©;ÂÜ)JÜs[ËÆÄ…Ü)‚1ª ­²/bÿ½åv¾Ïð-«’ËX˜mˆÖ‰jÍÇ›ÔÑ6mÆ~-řθ…zí¾Oò2Ç&}±Ë÷DJ#T16v‡ ¹)DÉÁã¸/=wÖÐúM“Þ퓆õÜ£#,BžK…ì¾áε×øElóÀ¯GýCņ[uMH…ç¶Eb´‘ìëj£˜Ï[´0¨a€oÿeŽuï~¤îb3`ût¡Z]·­ïfYç§æsÄMØP‹Í­ÿCRx…hF@ʲ8ì)j@ÅÑÚÓ+I°ð;d“1¤13ÈwùüVD¤Ùê™kˆ¬÷‚Ť8Á³"3Œ–+)”µï%4+ „(µÛ‘Ó@`¦šÞç@CÃB@yYlwÇZ7p”@ÖW» Ü¹}Nƒm·¡K9¼ùvw5\ ðÞ˜C“¿»·ýÃnš’Háj}Zfð6é¨×ŸÚÅÒ’Kbs#s¸[.Ð22˜1Lh¼‚®gÒm„w&$\v` pŠ‹ìÜ?*ãnå àP'Öݽ@4'N³;å~-®ô3H¡»Ûoª'Tw?a÷’ìîxqÝ‘Á|ßì¾à-`+.åÎn¼°´Ð‡ÏW t÷ ÞÅe‰¾Òδ 'ë¾Ê³©‹D‘Ô§¹Ðöj ¬‘é~nÓç{l&:mÃ3:²ošrMÍ×äÁìPôJAO†>^yçöÀþ´Åó"ò©í³ -Jµw·N•y»àøU¢¦‹õÄÁ¸:BK°¸ $ÖvÐ@öj·ðÐ' ¶sç6L—ªùŒ¶M·«… ½o†x¯í;VnФRæ{ªÙ™öÅ¥Œ ²?|zLÛ+&lrÊ:“Z Ùy¬Ž –⓸e{<b~}ýˆOÍ®Ší‰=ðÉPbön߈¡4ń앙–á{`W 14R!`C,/0@á ×L¤ÅL:(k¹‰'»?Âæ„íû+o#˜`g •%T„-› Ï1uh/Ž{ÛÄÒ™»‰pÌ’þEÛ±-F[Ê_ Û“xö:2EÛN-±×°kºŽ¡m9¶<äÌÖÞlO>5O,3Ïi>&õš¨y’Ãra1ËV÷dòîŸü9ߌýÒ·ôŵÃ4â ­ÉÊàˆ‹aòmœä3 ü¨sé!Ãßµõ‹TzYñÕa.²"àÌžo\ŽÁ€ƒ :h7qįd't° ÝÚ\¨ñ€”Î×Þôwä‚ 0†’lgN¦ODoÈÀÇ^¾ô\t}¯{I¦¥ßJU³Cú±ìÈõªYbñV \ ò™‰½Å¬l§˜‘õm’¸`ˆ$¯%µÆ·ykj)S!+ò×îöËè'#?4Ð_†ƒ[ZõؼÍë§ò#U64lqs ÑÁ§ÂòßÄÝ]v E0i ìÑböJ~RäâæÃ¶F…ú!û/¶ÿÆ÷ -—ÛˆRúõZ§ÈX¡}:@K£¸´à¨{ú¥(µÛNýè·wÖDo?ÊûÏÈßàŠ38_އº³åN §´±åÝrüÄ)v?˦¨Ã‚íØï©ü‚ìŠÃ¢á^ûLÝÚ†lì¨ëfï òF€uy]sÀbÈ ÝµÛ€Þ@$ ôæð1V†b3ƒñd>¢±Ë ÊÐÏШý^Rä@°aÊ3Ð\¶•¾Á~?ªágߨè^)5ÐÈALM:Qq†´Ž$^m<–›K±"z®rÖƒåt•ÂØÚê†Dû]²ôÁþЇßl -"ßã&‘TŽ8¥ìhêz7&Y’ƒ“À¹ÝEm"ž}——ÎÄé›~Ò&¯§jdªdE›ÿ”}€^ÆJ)Wð'†ù’)¥»;ÊŸ -Ñ\µ ³›¤]É!wñî„[ÍYãdB— ÉmkZ§²÷Y´íޝSs^Sˆüêã… —ì+•´£{îø”'“V¶BÞêÆ‘þ—Àn¯ºhÖn. }‚­¬ZÏSƒ¯ºÝóÏ{3ðjúKKtõÐSUûÀ -Z®—놷g/€ê.ÞÏ>*,-K~+–Žs¿Wž5p©°×|µMÜÞjϪ*¿Þ.ryXÀ:’”†2ök:ƒRO€Xé<$)JCÿÀ!G9[ÔÉJþ•úŸ^vÛ&Ÿ¾+Ϣ؜Ã^à+¤åÄæ {…ݲÈÕƒi¯)Ö'=|¦™ŒÅ¬^í´€ðfvجÃrØQM&æùJc›×ödè¶vªÿ⚃‹ã§5Am<­ÈA‰iZ9r|x2æÜ5í¶ «‹×°uIŒ¥ÜK‹É„äI¶\pÿ\H6zU¸Õ_s·B£ð´@²½çíð1¿¡ù‚ÿÄ…ƒ UÙ«X÷­½ƒD»?ŠðŽ^"¦ÜÁµ´ê¶üÝnyè -,õa”­Ë 61-ò'UR#ý…wEÕñ†gƒÖ†Ýcöí‘#E^é380é‡Ð„ßΛ˫8O$«NÌA ÁDš½”ÊÆ´|á›±ŸçqúcCcwÅN?O‹C%“›X·” -u/KëÉÏÐMVÅAv<# ,Ѓ;~ûŠ .3sg JN+L†¤Â õ%°¹6Þ ÁÜ ÌØ^ÁSóyD䘋ÈÖ(°ø˜_ãoWœ'lf¨&“n9OÒÌw+Fo¾÷ññ2¾þdÝËúÁ˜þWÕxrH½â.Õ¯–é÷¤i³#©k<)IqÛÌï3gÑpÖÄà—_AÙYÇäugXoãI½?ο>žÐ‡ù¥“± 'Jœ¨ºÿX/“ÆÓÍ2Xƒ²»"UC‚¨¢÷Ë{<­vÂʵO"JHšBh{ìI4žÊë%ɽ (É&M|É)¯û¸2‚ -´†èÈÆ¤ø¹ß¸_óÕ÷{/trχ2{<â´<¾ޱ[\†¼°!Q¦µÖo_ønŠ%Dž˜„Çó6K•Öd"$†Ÿf~5#ÁSyX'=&YUâ÷-þ ðÜC%ŒãI®ñ+dQÎl5¼-¢¨yÃ:&ç%ŧ»s1þkò2c⻆í#‡Nг®æ¼µd—KÇDÂ>·Œµ†| ¦ˆ2Õ;ç±Q8C]•­oÝÏŸd7/TvùPÉ”§®>”ž0¥ ­JdK§.Ì|Žgõ2úÕJ‚Ç ä/†Ÿ2. 0ÄO)„À©+w%¨TWGo~›a¾V¶£Î¿Hרé&C¢ö¹ÔƳ:×KDÖÃpÛEÄŽÓT,_50O )ï;ª‹7f³eŽU¸GŽ7pœ:Ad,¸ËÄ1—.ôî…ÐÁ–?ÊðÌ輦_7v&”2Ty,dfãwèw:*tŒ±+í+.U; ýuÅ1%²Ã†íŠÜÀ îMõJ¾“éå׿åËl°þטýkß7|4#lüÛ²¸}剸÷U<¦¡YZÈô;ø¡.ËyUGî1øw€„RµþýÍ)Ãl,¹ V¬‚d—Ûk§âå&3­ñ0½#>4[|ˆN˜ÍRdXúwmL!c@§ø¬ª¥9zþÕ+?)¶¬J+«w‹fYƒu·t -ªÉsl¹µo üÛbÔ" ¢Âï,i«‘´8ƒçfÝÆíûù: É«S" \©Ø9'€ä·ÕÄÒV aÌ6ÖPVs¥‹t»Êm…œ×¡ ?Wy}ñ‚Ûq£Ô–+è,Ò2­)òuªú–JmDIU–s¬7hÔqÆ;x±tм¢N? ˆJ -š2mÔï”Ä£¤ÝD:‚Ö_¸óhu:Aù¢ŒL±Wa¼çÅwбÿè ë(¬bxµtDQ?ê@@pfÒ]G=mDÈ’L8&¼‚r΂Yóú„ *lÙrk³¿Ïš|1y¢ƒ"áÔ«f†[ÄÐ"Ñxáön)‰ cP›XUþ¦D`jÏäêäRŽ jZòAÚÙ¢^¦)¶šhqöáÂÈŽÞcQ‘²D^A¨ˆ±oR£‚Èâì²­pbò¹‹Së“Áƒç¦ð†¼v/J•AQêœâtGè1P7`”… 5‘ÑÊ& Êæwþxk=Ÿ§à/f`*øbÞs½ã„m9$PCäMÝH½wÛ­±^ŽÕ"ÑÁòˆ—çk¨wCUnK½îß3C½]*õîC °…¸tBjn9—z¡`ú¨œ‡zé¯l/y¨×N•°·;Hêià0)87L«yYK½®N .ÄÕ1·SWµuÜÛµ—Åk,ÏT1$Ë9®8QˆÞŒZÖ&G:·‚ÍOvÌn h…¡u tl'2vU¬eÒþ -F¶JF+(§ÐWû’¶VOZ Fâ"­ÀšIÓüˆpîçѱPÌ\&6”†r¢Jë*º;"vCåÓ›ƒÝ%H\'wg!ù;¢~Š»’õÀÕÅ>Šõ'»›´âÏ#T…ž<qÈŠyŸÿ-³É *~WbLYø’Ä]­bå{N¢ãQfÂ;Zæ^;*BƒÇ -<ÅÈ,ïUNðª‰VÌáÁWêö”Rœ5¹œ¯é>àqr`ó.R@Î(ß'‰!–ÌÞg4Ê~Õ"¾zG] ÇZñÎ̺E8ऑ+µFâ^®ßBfWo {KÁ/ž‰3²qÕëû¨³yõîŠH‡WBÖýºzwË$3U½ *õ*gX›*YU‚Dw€'›%Ìš’‘BXaÖý¬б¨N´_@=;Â/ªÞQèï±'S ÞxH€¾ñ¬ÄÇ~¯[¦¤¼×µÎhÛmÀnÙWC )¼Ê’®6)Ú¦õŒVBˆS±Üd{…÷¥À« 9_%²! ŠNö%½‡]¼è Ò ~÷÷ÙU4fåõ&Ý'8@ó¡m ˆ|Em]R¢€š÷ÂóeäáË÷zËXìï‚¿1BبÖ ›?Âaš[¨kðý·”ÑåIó5^¾SPY\¤¤f™$H…pû³íªYò±ºdl@?ó/2¸ö’&Û(¬ÙÌ™(m(”fPÑ^82¥­ÈÇ/Ë‘w›ôî²…^r‡€!væ´¡Zv°v’exâd¨´„!!â:܇RŸ@ùñnµò —¼ñ ì÷R9-ðw‰wΊ*Xæ¿www4å½%³ÕÃ9¿»µƒ_Û{ôwJZl‘´8RãзT KsŠâ]§b»ñÛ€w7šþÇÙiE¼»{¿KÛ Id+ ¢t½» e8p3ñîuá]AôLftV¼»bWmgF,Þ]X9p^'s"à±P\ˆÓbxÕ¾œNP´6(ã9©ÍîÍún|W=uá !H?ûOŸ›ÊL -ÞÎòÐÄÝLp%DN°I§7*ÓÊZæiõ=ºÔé+­›Øn6S¼£ÑÞ ¢¼fM¾cEJHXñº5 ³®Ù—F׊Õ𲱟ïœ:— OyÈz"¿Ñ”ô~<Ÿå"XæQ³ø×ã§ \ø”—›ÌÍí¯äøn´`ô>0J,ƨMÇ¥q$`V9Îy…[ÇÈaY@©@Ñ-¥ZÃi“†‡4Ê éUÔßëöïwª}vmpmïaÈg®H›V¿…¶/^ij‡o63Bñó7ÄŸˆÖFTÞòJÎzu3ÃñþT‚¨€û†Á¬d²åÌ!ý -O·Ó^œó³µ\Ὠ¶ ØÊ·Ö ´„•ƒqP¯w.»>DFƒ{p“ÏÓWHVÀ°='9Õºéfý)Ú©ÖÐñ0Úˆ²÷¨EsðŠø°¤b¸¡ýn†KP­‘¯ÑÍJhæžð~ŽÃ“²N¿è• ¢bþF3åÂmˆ¸WÑ—Yi1½ëZALZZýZ)˜–“ÓD¤ØK‡fNû]à/ Ø£ :ãnQz…½¾hw E,·\9Š[‘)5ºÍ$¯‚R¬µH»ðÌÇÀì—ür$²ÞóX—Á{Ýùwé@kÞóÄ+Ö8ôèkE*ŽSw»Èú†¹ Ž¥&±™ÍÂC•ýì–¶5t÷Â'ÛGÊÑÅRZô×6E÷äL­¨8ýz5⟌,ºPÑN\z„®îÅ÷\ÂõÑô*Áõ¼®tn%'£#2¡«G7æ÷áqts’PNÑp(ï¦Å!‘#.ºŸßt:º°ž‘£èutñÍ2°ÝARýÉêmð„I²´¨ïœ ×K¯ÿ:˜{¼w;íCì‚ßÔìöðécê~|Š8C"²ÏYTýëz‰bkóÓFmÞÃ.~”Žã+6*þ¨p‰.Üû<´"<‡©7b«ÿ’âpp†kqÒoÅÿÜ­Ý£Oó®dðC¼óZ¦˜Ù®XÅ.ö­¡ÞüSq•…íIóü0y•‰Õø,t¡p”·× -¦`á®=Šsn‡, -L³ÓUs¼¹ ‘GÂô5v¨ÁdMd©wÔ—/Mpî-zDÛ9®8õGFÅò(@´v’`½.qÂËÛNæT§Ò¸ÿÇ‹²çá>åQ8­šØ’X*9¢æg«—ûŸåŸ_ùÝJ”u&¢yY‹ +GÕ]h&À¾·Ã»—]}Š -¾íi™~ÀÑüÂj„o²ÜĘ'` vöЬ¦=Ä’ð¬úÌU5 "ÂW¨ÚUõcˆ$@å³ÖD ”Ê=÷Ä'¯ÆDæª=žŠü¢DÔı#"¨9d)µ ^ùFœS©íl¼G¶Ú¤­êxĆìá[‡Ý0!ð WÀº’;äܾ蕡¸½vWÈå²5²“i·f]ãê 9qû ª3@t{•²­ð¸BEg6/88'â«íâ1øW٠ߟ™] y%½\ö`su³hml¥‰j¨Â6ß‹á§Ëáå±`7Ï𪇱srÍ2'Ø&Ÿ*†ûüÍç³ïmgÀoDB3C6íI- ºÅ6œœÂ» ¨˜¨k§—§ò6–S9Ÿ9l–éP4`šÚôÈén\žk¬Ó ÈZ xžã+AÏ*=%ƒ©W›‡L¦õä]¾ã+ì{`‘¼K{Ǹ@mb1”cþ%¼±TÅ´¢”¸ý’TTO+‡û­zn1®ÒT› xºÁ3–r»ÝXÄ„·qϪ﬊ø:o lÂHQ©ÃXæxù¬í.@ä¼Pä³Î À*÷Ýð -ì‚]ÒfïÓæñÐBŠÐK¦u— í»™0 D]W_ÔVžûŒé¶„_!w§Ø¥ø:b)[àâ˜äÙ -HJŠýHƒÒA/¿-¼ÜË`·é‡ E¢Œ- ²ÞÚ×ÄÉN<ãóÑtCòª‹•³©ØtkØ/ ¡1¼ Mº.U)0^JzÙæŒËÅ£U„àŠšuùL6jöê”9oel^†*ÌPLd7s‹w§E{}te16S°8ûônŸ̽fZšfVîÀéó|’Ë–ÿPÏ9ê‰[‰ÕÖ,Å.5€Z$^ˆ ªðêûZc}!ÔØz‚*úü¯c¶a ô¿†;Ú‚zk‘Ï6q‡?(oDÝÓù{=w¸é”Àõ(‹œ„kI?"Ú±bØ TðF ùßQ<<ñÔPé_ü¾œU…G‰ñÊë„~p©?|7b¾½-ï¼ ÷áÜÍn|/>ŠfkÄš,ÌŒxé¿XF?úéﱌ¦‡¡~¨m‹¸ôHœå|Þ½u9bÉ•láa>|‡ŸÂö”œß‰ B‚E+ó”Ý•å-=õÎÎÙxxøÐ÷gc3Ñ™¥—¥/{s²ô,GA v¦_ÓKã¸óŸ·.@h eO®¾:´°ƒ©UÞŽH¼<»®”þ"#bzׯ¢°“„ÔËç]ÔÇñb8Ï~óc}879À?ÎF÷¬Ž!u{’;Øç̱LŒLRMDŸ+t}Å÷LxZ €ô?[ÈóuûíÆÀI‚Ü’j5xqk;EªC‘X®­oÜ®æiO×9·äÜ<‚M(¸’ÁõÚ5Q¨;KÈÉàÑô½1Íqg(~þ§%¾p•¼Ñ¬gOfxÌÊ¿ÕûƒóÆãHÓÐâ§„1 úuþס±ï¸‘ÙžÐ'3fgÃ…qNº6Â(@ÞD%Z˜|Q]­ým5Ú'"°òâ;ä²ÕDˆj®LÏðÖYÊÔÈøÇKݼDÊûÊ0Âýè9T~—žuŸÆÞ;öL_J¶håIµàòY Œ}8·ïQ‹ý"ÇOÏ+{†2Är €ýß–˜ºNN;¯‰÷U/­ì|‡™¹)5›‘Ÿ†äúòñ¯)œà1„æ`Ø/g²¶ìºõo6;Bº0åU–æ/úœæÜ¿wBE3ñ›¯À£ÐGs4Yº“ù~…¶–d+ÎüL‚všb%T3WÏ4TÃQžåÿè#œ–,<ª9¯äpù>Z^¢T¢!Æç_<,Zî¤Ô>ÑåÛºañÙ¾>„<ÛƒˆéOà£$%y6‹~WÙ r`/ó‹–üäžZõ'Œï1o´q~È­Oâ|ÇÙz3ìj¸v¥œ‰ýü_*¤a¼6Ðñò< -JœÛþvn=4[°Œxž|kލõjMÒ ètÍ\„‰a€å ŒšDA}±eù)¤K@ØýÙØÌ£|sEeá8¶IÊ6-Ð"ö—€ö/óØI\˜þ·©ýŸ6 ê—óBWWmú—œ9ã•LÊ@e̫׌”íQ?*}YrC¼“¡õb^8F=FWÚdù«ñÉ,Õ¼§À dkž&ísCjŠƒ›,=À–ÅǸ •Ȳã·y-Ó…Q¤¨±o5ƒHºm[)ߤ¶ƒ@mç¤Q÷(õñHL„9üTÎäVøEq[•X ½ã‘¢ÈašÊ:“FA¯¾X…ÆpQZg4 /¸æeçë1Ë:{ræTð¸ÑÎ&+\ÜV¦îö…¡pÂД - ãíÇãZŒ÷Á£¬’÷cz#~{P©‰ú’ýÚ©vCC¶ †ãމ鉮¼ËL?¹ìŒ…åÃ0)"B—ôu«3;.½ôAž%‘*´ ìü¬Ö™àÔàû}UÞ¨¥Àß½+§žƒ4AÔI£ûU¥UW»AcB.¸¿ó -dO}A’õràúA,7³Î*±ÆbxÒT1SxÌx£nT›HЬdOqÔûåĵ¢Ày¯ xé¬%¨9Ù2ÀìCölNçð&YïÉɪæe¶çÖÈ¢F*ÉÕ¸‰<2À]¢NS»©`*öær÷Y–¹¢öìºõFV°›Énù«ºìfnyÊÅ2Ax_Hƒ= ží¥.äa³žÂ4¾}cw¿ò•åÃ÷Ù±zæ2ñ”õácA‚OŸ7Š· Ã#ÎØ›}ʦ†õXÂ÷/˜ ^X¦\Kö‰"[ôhDß6•1˜‰‰Éœ?&hŠ1ƒ1|S&“[ÖÄ1 Û¶™hÙ)3Î5w' øœMƒ¦¼GËËg‡j1Eñ;PÏÍ~ñÀü0wÀƒªÑjæö Ç¤Ì];óêûµuòÓýŠn˜\²ßa^'ë›I‚å†K'+òw/œ™^üG¡˜B„ltRF4"âj¯[½{ifK™Ã¯õELïó¨)`ñ -]É3#ô ‹mÑ.Õ¾F~ÛÑ’.&fWlÐxøâ ›sÂ_‚Éwƒ|’®u‰Ôm‹‚õ¬Ñ C깃ñL~ïÑYö`e"îý;³ùy• €ËldQÖ‘¸Ý%†À”¼4œd™2Aó15ãv—¨Õ—o{©ò÷úÔ“_0¨á—Q’QCÓîêKƒÃˆYn«•¼|Qx͘sv" -£x—2VFw¢£r*בtCûÔÇP#ËÄ()“ÐΖH¼oDåy¬¶ ÙèßPv‰IÎ/ ed9­äB C&¦ßñ×+Ày^—^g°g§2© vm¡i-é0J-øÅ"s[Rry¨L#‹qx`7Ž¿{ÕFá.ÏýîÆaʽ43ŠŽò:)?²»vïCŒ>§š%åøì F%ûkúî\J(ð€ù1 Æ=õÂw Ì áý6ÇÈ-Ù³GÌÀÓÌìOK -L›¡/ÆŸ?ì8Ômí°dÐb˜—€ŸJ(±1 N`¨‡sëŽæ§¯Ý¸äRÁDΕËFü89N£Ì´„Ò¥Ä–í¿Œ²•Â×)™ó§Žb¡~^õXÏôv‹bØZ( #øÖ!®íŒîéxëw¼VH|Ò«†{æÀÌž´Nd“£÷Vj)6uÝ@€~,–·lv‰K96 Ý.•VŠ¿2ÇújA²¿5ŠåŒÀOc?+YâÖ#zIÒ6zØ+E*ÿWHq&€‚"åôŸL -?0X#á~ÈGt({!µžÐÁIÿx³&&‡¥)x*šuL—»¬1×z]LœÇ¢aÔ•&È §½â"‰ÄƸ“âr,?DÜïD¢¤}¥§Ÿ¨][ Þ‘gŠSy-EŸÙwþ¥®¡Šá‘²®a m¬¢èôI6¼) æ9`G2#$rä7’M¥DA:4¶"WV  Ð¥NøÜRWO^–m¡œuÄÊx›®C¹ì ¤Hféeµšå&WÞYBlz‰‡Ò±Z°:]m%ßVŠ=½éÔAÀ›þÔðØæ:ïZÒ ³Ôó¬·# A¢<9»dA»˜"§³U<'Å…Xy„÷’Å`¼LIåîí.™j‚n 2·ã,³B¤qèÄ<Ò¹s)ʧÔü7<¾qá<Àszå%+IofNʶ·Ü\Ì£xÐøÁLj•^ŠáŸMô¼QBEÜš³ÙMÇ–Ð×ÜO.©ÍkÕu)íB-L?´½–y+ Oú¢zŽå;âøQ×äX eÎVƒBíªøcÊêèG0*Aóy7÷ÿNô"ü üê‚k°äRÝ8­WjÍHA’ô9$­‰‘=À¾{{Ênf‚>À^ØYj†#…—`ǧ¹÷ãÙ¼…æ™ØzØûÂü&®~ÎÑ]¼ÞÏL%P½¹„-txÖ}Pv㧇|òâÆ½7E"¢m‚>0¥åë!iï¼K§îùö¿‡-R€Eýåµ–ò˜öºg¾„PõÛwO¨–wYðzéhOÚ:©éC8²DÑ•¼§ë¹]úwŠP;’•¯çzÜŸ·AÊ–!Z>cöøkà0) ‘ÕhÅåú,ÂT‰5Í¥º-k=“8kKö#¾zìµd(b{s t[r•^p\E´+ŸeÙnªŠ¥Aµÿ|FÔ1{t XxH®†ìÓä”uñ%‘¼'òd'.Ý&dšN!6¼=03C“DãN];9÷ªg/Èà;ÑÀE [Rt Õu(ÀÞzžÎ¿ÍгHR‹>"¤LGâˆÉ¤‰Vnck³F^÷“5T‰^ææ#Íä%$ÿ©MÑЗ2u6†€µà(!·Q‹IóCH–þ›z}ÃÞNóêÞ#¯“ –H ›iý@Óaé µ² cÏ'6›=pâ÷ƒ×wÐáÀÂév5Ýë€ ï§´«¡!AÝnŠ6Ês-~ÃÍ}ƒ„„ó€áïA€œ8n{ÖJù)hºá#,oÝY -•‰ŒÐ¡•#&k{aüƒ!SAPÑ–>ѾUÓÎæ«ÇaŒQMƒZ…|²„ô‡ÓFJô ®Ç*ý‡—§éµö/‰– ÿU Ê´Þõ¬¶ Ì)ejªaK˜€oqHI'°3_€Â‚}ì¡ÚZ\¾õ ž©îŽܨÆ4°h©!™Ü A³"LJÕÈæ‚pú®—1Ì8 -0U|CqÛÍ Nª­&µ¡Ã43Û$1hx~ Q@4êHÖbz1ƒNv3ûj@‰q‡ûOÒ¹äÁË¥9ûŠÓdöU€ìdˆš -ߨC¹Â1q6çw®—±b§”Û’ãØ!è Q‰_Ú)þÀ‰èr» ¦YØ"sLf1oÐ[;&‹ï?ãÐIûFæÊ;m§e‰)–§àÃO=8ä¹AáT©\=ëÐYhVM‡Žàþ7² Ÿ°ÞxàþÝÏ–Õš<Ú§’n¤°®[6 ¶{Û¥ D"žÞUŠ*,oz¬Zr„ÇÙ n-˜ê}“^Çœ‰w™ô¥ý‰´Žã˜59Lö?  ¢r+ùbªYôÂöë-PY2§— ©®pŸ,îéc\¹¤Ï\(IÉ~À†èMaÊ 1‹aG ºç±hnî}¸ê|FÅî?Ü6:¦‡çRëÈ“£Îõë„'ï‚$¢“ 5:œ\ð„_xeœÇ¡"æå¨ù(ÓØYƒ’goTߢä. ì$ HÒ“&Øí™þ°ív! Kb ·LÔZçU¿å$ï.8jK¿ú¢Í½Ye¥›×/,–úW"§¾òµªÚµ7§ñ¯Ýë`:Ió€$Taèý%ò8Çh ’|ræZ-0Ax îs(Á‘·Û\IRØs#¢çXÖ{€5'T¯Çf±CË:… èÓÍ—šhûÓâÛ=péåúû+ÙBÄm*dÁª’ÀNI~étbóFP·{,ɢ׿.-‹›O¡cq*?3– êÙÏññîÖZ4ÀTÖº5íö£¯ê?«!¹¶†±`†6Ý?×19îqi"âðÃV²PÐE¦õ“êà—dq2_+²Ú~ÃÄ5¿ r„ýi)HªüTè²éEÛåŠ3§áïù½>–\Æ­’$ŸCÆX²ææ ° %dóÞ|¨À«Ï -þ$ì…ýUP$ùùÙÖè’àZÚ:eiaåÀùµCp4$cć9 4 û“@1‘á -Äf fÍ14åϨ¯é]ÿ–RŠöìÍÔ¨§ÏÊã/f¥/“ƒ?/ü‘B®>lž¡Èg€ÿ/ß«p|ꎻë—ë©t Ú®>éË_/»Öu>¢$Íã¤ôópÙÌ>ÖH“Ps ÀUG ²YS YzÁòëõˆŒ[FÚß Z¹·¼2šë{»ÁI6p¸k×à ŒœRnú£ð ÊKÆI¡«ÔÚ} ›ñ+õqùu+•À©ð¹PK\\èïæ±±Fœk£â_ôð'´ Émeâtlú°I8Õ~W^â8òçê¯Øò‡“ýÓ¦_G Azà 'pqFˆdŒaÜû-)WMBdƒÛÆŸ98uÑSTr«cz8»ZùÜFúWþùCm‚9“V뤭›ª2á“4±m@BÀoi$éô>¿Ñ”–$þ!ŒŸ…TÅ¿‡ZÛ¢›f¾µu½RЋ†Ð&‡_NG?…· ¯rN"˜–ÿ¥®BhÎÆn’È5[£‹\/ª“²ŽáD‘E ½f1ééþ¶~ûì ÍèF -rÙeÛcAÀ考öã1ý?!¬Åa÷މ¸v¤år¶ž¦šò½³ßéó…7œðä¢Â.V3ó¿$5( ÛžóTWdsñçöÉì%"ÐGªn—®„®¾s{s¤àuæ‘LîP®¬Sé:~hbÎ:.7f¿¨½Ö<Ë%·yçðŸ2¨c(¤õ¨]ufÆÓ;/2JÑö…ßžüŒŒM›ÿù ò|&ý^d…Yù/N‹Ìhô2X#adÓ|:=[jy_y~+ÙµêP´Ú•«OÏ 5õ¦(uhO ¶ìaÑÖAÙß_Þ¼þSž[Š„ÿßøòjY€2¯Ë3íÝiXt„Ʊ|‰¢’Mjpß``9œ´Ðx•ŽÍœ˜§¥]ÿGä?Y’d{mfhgù¦ M_ ,«šƒkjÜï‹õ+"µˆcÓðaò¬í ô+B¹ID«ßöõ 07ô,ú‰Ê}U8Zõ¦†-D†™Æ#æ¬qÔnÑ+’Œ$CÎfç:FÓ®ˆˆH¶‘7LÝÚ5‹@ -¼ ôrä'ÄYðœLÊ.8ª*$¥|wâI†ð iB˜€œGca+¶ä“˜IEÈ“]¤"ÁaÓr*§uÉè‚çOÔA¼dÖå¤C¢a3€ÃTÊ`*%‰#d‘`ØÐlz…øXmF(„޼A³«"Ž*plT±‰OÐts:%(ƒŽŠj¶Ã±‘íD† UD@2#H…&@>%É1…d/ %‰I¸È8<@ªœ`hø¤ÁÄD 3WÖ0’m‹ -é]P$-‰Z'*?YQZÑH* yœ8xT"‡VE «â“¿"jPAh¡ ¢äDtà s‚ <«¢òd ‰c€8""Í -RB§Ì"áÀÒ†²1¢%LDR‰‡ƒ -‘K‹&@™ë”š’ly0É4 1já…" Ñç@‚€ˆƒé…`Á¥”€¼i,¬‰@%0sX:BD!-TÈ”ˆÄQð «@1ú$‚{È÷tf®UBƒ†N<ù«Ž6p«Ä ù €J*;#!Ïé!Tù8ÅBwÑC,|6ºàÑŽ†,90¬L©DhX™JÙ€ ŠPBñРY>‘ÔÔ‡På€/$]h­Pæ¢ÈhQˆÎ…*6. z2Ñ0,ÉW"ŠEdlq‰@KGæz9©x9©@p ™s™F¨AÄRIåNdÛbJyÒEåZÉ>©ÂDÍ4,©ŒI99h„&@ ÍB \6êtF4s•¨°ÜP QKF)ƒHYù °°pH$ ‹‡„mЮ@˜Hà„>róqá0e.ï€Ph†#œÒ¦@\€"2L²e±ˆ(I•ŽI¦ÈGf3/ª4­R)¡Rj†…g5!Íž¤J§lå¤à”VN  éÁ€(BI"Ÿü8µ€h‡FæZ>±€þ3BÁH¹T2W(dTJì„TBÐ9ÁÌåQÒÁÈZ0$°…_4+(àTˆ2å’ØØQf@dÐ HúÁ\V§Œ’Р.!ˆ ÇÉ‚¨âbE´ÂÀžMØ”²¢%Q!Ré¤\¨($s‘&F4Û™ %€Ãv²ð8NEB‹&$6J9+N”8Cg!z0ZdòZd@Êœ2"›ždÇ û0 *´‡Ü¬‚è6-¤@±¥`å*h%™IMM/ -(É0¤Pø à¼K¶¹XtqâIW]ð$  T™:IQÈ\X ¢VñrÊR z´yÙ| ˜ÈÞ¦2‹ -œ$ÈJ!)#ÌRŒ‚fG¨Q)xh¦)X(ÉJ)'ÆaEÒ“ȉÈ`ÀƒfÐÇã4|GÅÔ”fÐñ=¬¤‚BtÊ"L [ˆJP˜à€ðI†A¶$ tJFDIºt*pÓ‘±±¤>D*)Ì TTN ‰S¶°•Rd”Ó(\J$V¦Tþ'#(ù$PåJЦT2sY¨ˆ†C(ÀÈVÀ0@‘K¦ÅQ)'"“Ñ(•)¬Œ¥xB.¬udš%P§ _I²œœ2—‚•€Yˆ"@F´S:Uˆ -8·°4ËI I5l¢ÅË— €ÐÂŒ#K¹Y,%Â…F) ˜VH™ Í - rêhlh¶ TQîˆ@‰Ì0 ²’5RL"\v1±’à`’=w—R&¢ )'©åp‚/jP‚ÌJ*7:¥£"äùø’¨#Páqp哘ȅ… šíÔø$©å?,.s‰(6-Ä0 YÓ›\€6¡lSN Ÿ©`ijœ -‘ÆFv £#å¤ä€ˆf|t0²ÊH3 -R:t6X4 ËRòTÙÁH)2WCÄʼn'èCC†A¨á#2€PeHKD.t2×I@§ILŸdè hƒD¥ç\¦@¡QÊí”2#`’ x\(R*Ï~<.Ë LYBáA ,’™H!å:ù*QHÛBŠ_‘Ôc!X“iD¼ƒŠ PF« (¤òQòàhiHHЬnB¿†Í`©Ùl”Ÿt'™ áS*à }4tB™«•$KȨ…§‚=à -‘áTˆR2åêpѵl° 3}0².›OF h DÈè¡a$ÛˆL™òÒŸ)Í’\ÊՇР-p4”@°RÊ ”l¡“L–• -Í.6¥œ -‘F„³”Ä¢e¡51¢Š ‘¹ ÜC¶Éƒ £NqâIV]ð,¬H*2ÑÐÐÐYe¶„Íf®I*3v;™+óðT`ÇÁÍ,4XM (4 ÛòF6š)¤œ@öCDS U•dí´ YAÁÂ)sµN ‘ -QKSiÑgŠ…+¨•`Ø(å‹tR°Ì…ÊpÐXpËH¢qh¦ ¼“-kÁJD‘¥"¤aúdæJ^¸D`¦8"ð$±¡Ù‘$M.x2WÉ¡‚…œiŒ>™Ql$Й:<&°”Ò2×ÁG³ÂΆ££ÀBÔY••b,–$³—¢ PÃAF•—5Œ ˆ°ß”vã'‰‰l 6Jyáa@ôÀ"@&FS‘æ”&¹i‘ÕEÆ©M¾•Ì•‚q4+²N^|Uz‡` 4«à:(©€ÆÇ€ãD¢A³žÏH§€NÐ¥##i‰Aƒ"-Ldû°B)ÉV<+Iƒ‹ ->mP>!~l˜d† ‘Ä^pôAcSÊ ЉYH2âa,5¹Í\j’i”˜šÊÆ’D'̦¾””BžÌUÂ:tüé‚GDAZ@áhDBIf "©w ö°)9ø¤+9ødæZà@«Bä‚%d’°G%@@Z´’É %EåÚ q&2•“Žf®¬Sñ@b*e†ãšMœ`€ðð¬I“Ê$@¡š%hµ*DŸ ÈE–¹ZFj’¸hEÔBá#  «i§d£A”ä#j`šÈVc´‘y)8e§M€:Uª¸€´(å£ –žŽÄÆŠ Kæ:€Ÿd¸@  8‰À$ŽQ A¡Q•TfEær8 Ðlæ2µ`$U66µ2¦aJåç„„œ‡Ïæ”$¦Od*BôÑÔåƒáDt ¥œ@2Zô"Ú0ì'‚Ô¢ŽS ‚ˆE€‹"ÜäDò-‚ðHhÐŒÄà![0@2Û‘@hærPá’ò ÐdN›v£`þ=F÷LunÊŒyUïNtïìòÚàÀp6¿V-,V‹?ft¾êÛ”™¤’ââ–ùÑÝ9ÄöÚQ0¹¼‰¾ÿ.›vcÒŸU‘ÿÛc ‰ Kæö+¾d~mu/Gºïþ¹ S1—Ë€ißû÷\£"7L½P0ûXÛ_j>oÙq™îÝs¯Ù½í_'L:ºÕÿÿ×m›˜0¼¯¼ÛòjÉ0úr±XRRV*¨ ‘ ŒkÔ¹»ï;Å´{ЍÙïÜkŠyÞ}ëØŸÞØóô7s">lê0®ó9\vØRÓÚ­¨ŽÛes˜— óÉïêØ¥k]Œ¿ªã献3/Lçv"3ó¿öʘÿ]]Å÷ÉŽÜÐ%º¶ktßnû˜0ïáÛçO×µiK†Ùk ^/‘Ì5À…%Á BÃtâ!¢‚HXRÚÐ`AÅÅ¥dC€„dhh1)É)ÀpaÉ@"™«!ÃäuÀ„á$ Z6WÊ„A 61ÝŠyš˜wÉÂÊ´:Ð ’™¹$(Ä#se.’‘Ê'3—ˆ‹H±´Q ?ŠÁCSy<°‡x|FPb Àêt:-¤ÎG'¤E->HLJÃ9y8:R¤Ì\›Í&Ó9p‚°°éÈ\›Ífsppò€°†ƒÌEâ‘—‚„ÌŠ6V©õ8鬠8' D’RnX t (=À(±¬Ñ‚Ò¡@¡š•ŠÔ ˈ§2Fº!‘ RX5`(x0xØ@¤ö @¨ät|…¡”h -$:äi©ñ‘èÇ…"lÂǤqá0}*F-!èESáa ÀÚp 38‚„ÏÆc‚sšHÐl -ʃ_ *0sM°Ò¢)'¢ŠQ*[Z''%2 2À8™€F\‹‹&c¢Y‹RÈÓ bŽ…QFK¦E2ð€âáKâB…‘ÊñÑ-Ë: *à’`Òpà†‡Ì¥qp€A“€‘0…M5“,hx0h -u¢02@%V€dI*›Æ Ö$)ˆ„ý`(臀T~H ù¹H¥¡66$²)5²*Žþ,#S‘p%£‘l„  á¨ÑÂ̺èá+x(¼dÔâ„°4ŠŽ9ê¤‚Ó 88*2Õ¢xQÑL |Á *@øé¬“žQÅ» 2—§³N"EÉTaæP -ñˆJ„šB l¡(ÒAa³Y!ÈÆ†D–¹6j­>) -“Öæé…ý@1@%Űþ5 Œ b3Œ`ÀIÈC …m86N/ XqB'ÙfœXJ¢),*¤„H@±(s¹ Édô9±¬„N™ÖùÎ ‹ ¡Dh2£%º`1l4@|X$RŠ#›a`Hà0ÚhpÏHŠÂÄI(჉˜xær™ø€ÐÍ h&úL€:ëâ° BÒˆ.p‘M ˆd6ñ«la¤læ2É\) -%Ïhð 9J?d#8 "sU@¬ˆ*xâ%,°E²“IFRQyR4J96D^¶…ÝB$±:‰À–¹B-˜ÊCA ÁÚÆÃCàqÐ"”Œ -Ñk岆W’ -á2.±peÔ ŒF2s}2éeƒ]<%™«€d4á'VéÅàá@Á$S!1àèƒÄ>d(™EJÁ)cyQ92W3•d-ÍÀBD0’Ñ¢Ì5BÓ ah2 -l (1l´2n3Œã#0çãr€@ YNwƒZ Ö¡aÅч–5%pñÈ, ‡Êˆ#Â$3 ÒÂÏ烌<œ¤(°ød®$“TZ€!’—¡.x a0pa‰ BRºE€ ‘†Á‡f‰ —•V³(*'AjôI•„‘ÌÍ{)É8™Ë$s]˜62WF€AG¦‡Ës™Õ”d‰$¤…!.±Ð"4â@½85ÉZB2WæB˜HàØtD`‡“lÂàÔB -“‚Svú ¹Y´ž*'J™JI‡ÀED“¹P Ø$ÃHÀ”*ŠÂ¦ŽT!€PåɈ…Å`¤QZ`) K¢E™KÀÈÈ'p -ô"äVD*  ‡M)+X.@,›¹(B+¢ƒ UN„2D*-<ÐB‚˜Þ©2s‰PF-]¤>|DD‹Åâ²: 1àú`@ä~Wh-QÅE „-«ee'#£Ìõ@Àa…RHR„p¤òÉ&Ñ!Ï‚DªÚ¬„\.4|èPôÐ!G )e[yƒ=tȃ8ôccãà ÂÌuÐZÚÑå VS!ÀÔ N8R*:tð²N8B6øÍ:BŠ…âòœ8ÏCuq°`y˜ä¤YMy6!‚tȃÍ‚d.÷hN@hpBZQôhG‡<ë ñèÇQ4(ïF‡<)¹Ñ!$òàh£CÐÈ‚¤Ø†[ )glH3£C¬Xy4˜¼`d$ϤÄ2¨pi“'Áá£D ÍècŒ£,"XPò¬…†…Ê¢Cž± JMEȲè'0U2œ>!g J‹yš‡$eÑ!Ï^,<äÄ:`(2xȶb’Fi¢CžÎ -C)IF* é“"%C5U 6Ù ¶quôÇ@EÈ3"rà²É\™«á€@³ŠM P$ õD‹fÝ€ „>lLŒ(‡Éƈf.Šïd Òd®‘æB>©àB>I’@!©B”c€P’&š5Id"š¹Z4+'F‰c’í'7ZÔÙ@± tõÑô¥ 3Úx "Ò‹W„ ˆ<ŸÔ (°E„À„ÀÇC€’Aª…h”òµŽÀn!¥Th& <©ˆ—Ì>ˆRJ@Ý!•"‡Žô˜¤B†Õè“!K¶$FR_ ÑϤ”€<.ÿÉ®ËøÞ.ó#ujûã·ÛX—ä^{¿çíúmuGü®º»¨ÆÅP­Naø1Ôc­íÖê©8UÕ=íýÿFìm¯Mé/3Ý{e×õ¾:uÙ|×™»±ÝaãgŽ‘£KfÕçÞŽ¬»®ÞÙŽÝÛÕnÄ}ªý¾g{žoù9óÿŸWûlLf—ÜöÑ“u5s±ùö>wꜙKÉÿï[Ûk×gFìý¯­S^í—Ï9¾Æî÷îíQý=·©ïÜæ[Ý·Î]²{Üûmº»çg¶s¶o«gb¾w¢ÃgmìݶŸÉ Y¾,V¹\-ÖÌ)ì“SÕ:ö˜©tn¹M ¬Ï¹;UÛîcÈPé¸W-çe9L‘Q{3Æ‹¹U«Ÿµí=µýù›:͘ß{ÇUÝqӹǶN3$=æT/Ë©Ð=–ÚzØ*‘1fõcªÚl¹.‰ãw»Ôöü$ÍTädo|íXJÏz­Vb,ÜǰUŒõcc*Õóo­0Ùdúïïæu¯µë~T]÷˜cäÞCçÝëÛzß[ýe^mÎç}Ø¬Š¯¹t£W}ž®í¯Ü»·üï_ë[wÉüÓy¦Ó~Žw·]:fsÍìë‹ËþÝÖéº>EôçNñݦºßn¼O„Q—/'.¿u¸œüÏ5ºçð#§[·êö—Ÿ=ûïóÔ×÷Þu“;õäÔeX­øWŽ••Ï1ÂþYŒ¹üÄ]Jóešúߪöûsn»!{õöu¨¸(Ì[©æúŒ=u‰¥Ð1 -U½jzïÿô]rvëvæàÔämÕ÷÷½—ßjjóvíÈH«j•JÞW¡[-êaëRŒ­P›˜c±šQ+U*Iuõ_{;UݧíùGØR¥XOÅbEÇ4W(ŒQ,ƼՈ9Šß›1M¦çø­gªãwœï}{ܘuøžÓ5Û§cŽdÍV÷Žé­÷eªó÷nÈŒñ×êýöÛK×1ê‡ùë÷}ÃîTöunÏDÇtî¾Üí¥ÛE}ÈéÚ±%s¿§KÌL×¼Ÿcã>Ý÷ú7õÓŸ?×xß:ÇêÍùÈÞÿ…Òû^ûz~®¿ÏÖû.Œ¯ûçíÍoŸÃ×ÅMçöÒ5ÃSU‹›Q*l-–BýÃ4µŒ9±Z,×(•{Ÿ ¾ÿ89±³q6C¦-F”;UK•,¬¥*æRCg9†Þ-×B}¢6»2¯¿ûoê”9²÷ÜÑÓ9v?_ýwéïmf¿ìéüÚØ)i•bE¡ZšrªØCõc¸è*ÌWµr©TJ‰ä^:'©ÿQŸ*¯k¯>z«Wõ.¢0{Í)L¥rÆÞ™…µr[«ÚÏ4aøÝòês¦÷>×ñ§ãæžýÞíê>êëæ#»‡Ïac{q÷žãÃuíµ¯;ÏçÎíyú»îu©ÏÞ^cØ¡»×ÌVmÿÛ®žï›³ûÿ‘7ÕŸ*'f?ÎýÏgÔ_ìÕ÷üÜíu;?uÿø³±Óßew¾è|ÛóÄtÿâ»ÖçÜ:[$½=—ߟ¾~÷úú°•sS¤y±¹1Wuñ95»Ý½çÝ.ñ½Ö¿‹ü¹Ï_sž˜÷Î)g*ŠåPì¾bÅPÎQ˜{)ÆZ˜JlU)U‹Õü|—ó-šÜýý?_c†,Ýc)kWžJÇZÙkL1–âEaÜ(V …émRÎwígFÝuˆ™Íµ3‡¾ß|¯îQÝá¿}N¾æÚ3ÏÆNvŽÜ^; ‘…R½cÕJ¥˜ë÷X -¥b졸±g=ªUÚÏôغۈï¤t©µñ5\'å²ûW}Ìm¸>zV‹å‹…r*ÄVísªf̹³°‡©N¹ÊÙ™L‰ßÏȯ“ºoèÜ™9Öi*ºEö}ÿÔ3{Ývb;Üö¿#÷»øùÏuÓnÌ.öÓöMwÝëÎá[Õ~Ïê:=Ý•±]ÿ;n{í¯¿Žßó¯'ÿº¯Ólž­®«ížo¾o¯~¡èóz/ºçÍͳ/L¾×LmÆ÷NÕµÿÅŠ…%¥ÅùÀû8þà?ìý²É\&,.¨b^s/6\ ÓœÊéÈ.³á†AÙ¹×B½ŠÕj¬……ýês½‰1 õÒO51¼üçþþÓy{¨ Ù¢Tø­«¥êÇZªÕc/•±•Šó6?gLÓKç¾ü0_óvæÈv§z¶:l˜Ê»î1>vsíÙº3ãÃv˜$ïL½—ˆBUbžòÇTªg •Z=æP«UÊu;&yg«wâso¬KâUôwÞÚXwÄ"A©P.(Ò¨ —°20¬Y/³˜[«âgÌßQØsË6:Ì©´SnU›Ì%¬ FÀ’â‚ÂìõÁ€µ:ÁBA}0)«,‹ƒf1 J…-˜L«ÜîÔ=MÏÇOvct×¹ö×¾ºŸ9F»Ûýæû·ÏŸ}ýµdÆü{޵µíwŒÞñºîç—EC&“É\,”Ê)%-KŠK ‹…Ã"A©°\PP-$ Ë€ Š%ÃL)Ô¦ÞWûÖaSë_Æô…=‹•úÆæÝ×-•>Ç(ÆZ«Naÿ)Æ2…ba½…Jyº”[­TŠêÕjûõ‡½–3–ŸKF½÷ýQ¾bTKû¡{¨Ì­XŒaòcÛ—–SÖŠ%%宊î¹óÝÔÚÎm>:Çõ¦íܳûoˆñÇÎÄÇÛÙÞ›L˜ä_Î s]p¼tX-)%«u™ñ™×Sw›ûký·ºÚÚg®sÙì®ÑÙ„éw=ßµ¾öÜbÔ&¿¦îsÿ}fË÷êV÷ákÝߺFwî8_v¾óf¦K}‰‹šëÙ¨­šëÔ)¿Foßf]m¾¼›ì°ŸæÛ—Mû×¹WÞ~Ïi·{¼MÓeórë‡n·Ÿó¦ýÐÙ9Ä^u~óñË}Ï¥öffò{ôlÜÿê&§7;>Þ}­ÜêŸ?ïdu-ó)?î§.³)²{wþœ­û1ëžÍëø½ ³ÍêÚO=[Ñù]÷s{ãþììç:»ç‰Ý¶ôŽõ!&cV•s™?Ÿ™ó÷e»:·ëëo].«²úËl¾Ò5/ûþgÃnÇ‹Úí¹›Ûÿ±aû6;w¿·lävÎ×}ú~£¿mÝýÿîÖeC_×÷˜ç§Úéö¹òÃìÔåLÞ|ÍŒ¾Ì¬ÎÿïkíPyUý=¦óîg®—?““?Q×ß:r»·Îõg:{¯+ûsßäÞæö/UºŽ¼¸ÊíšsÅçð}{·cü÷ÙÙë>×Qö·ë×÷üºÝòSçuÞØ×ùCoÎéÿ´ñ›ãÅôc»mÏÏ~¾î܉øíYÿuºOì-{1­˜¬êpŸ{Þ¸ùeîsÏñ¾ÖO÷Öåöªn·/&Ÿs‰ïVµñ²sêžú··öŬº‡˜Íé^ë} ÷¿sûÌíÍùbºó_êg7·ïøèÖ{Ùµßç¿é.³¿½—Í‹Ïøòµ|‹aì§èô·_Ë~çŠß©o5öc\ßó\îývèéŽÛãçšï1ºÔ¦o1‹ˆùó›ócX_}5ŸËoù^ß?MÄÖlï“þ¨N›[fçóòú{úž˜Žãöc\Çü¸éV‘óyÃ}Œ:çòéKuoì¿ìøýôýëfn¯éovŽÛÝ»~÷¯áþcÎÝ|ÚÙvãïÚ‰y1Ÿ‹êý›[ïîã>+~··©’ñ1îi÷Ëvþrnw~[Æ|øš³c~DoϘwô‡ÝöRavQŸÛwß\;í}ø0ŸoS_Œº§Èüüó5îÇ$÷÷c‡¯µ¹/&¿~‹ûÉmû¯†ÓõÙ±S_º|tÖÌ–ýNÞE§úú9÷¼™ßé·ª_³ÿÙUû½um÷:×D|§û¿ûëÜ·{TÄöËËïÞ=ÙýÙ›ÛÇtïsïyµµ[Œ6³ºôeç‹ÎïU]§S]LvoÄ‹ÌØ?æ]'úæk#¿vîFÛ?¿y_ù¹¾}˜ËïÚó»[õMÜlÎ-¦WŸ»{þ½-û/R^­Kå”{_î{‹o÷q¾{tÚ2÷q¯«¿¶ìÎúîØnq»=[t\LçmÍA×î½]ª'¶æ¿LʿܘÓˆœ›ùé/ñŸ«¿m—Ý‹üÛò_*ÌîëíÌÿ÷Úöbž÷"º÷nK~ŒçÃÄÜ÷ž6îÅ´çú;í|ìˆüèÞ7n÷Ü·Ÿ·îŰjç{û6ùé?tU§Ï›_*Œsýÿk®U±Û=tîµ×‹yý~‹ŽüÐ]ç6³{í{1Ëéï5ÿ&›®Fk§§S× }1Üîö1ÏÙüÞ?tútSßæºÿ—ïéçoËÔ]õ÷ïÝ[úb’UÛÙ=§6å¿Z2 æÕºLÎm?ºtŠë‰¹ÊÞï±>îÌ·ø\>Ng ·SÍ]NvM‘×ÿ]v·Ýl|¿‰Ì®{ñ­£»·èè©îì\ÝWYŸª¶õÇ(îӜϮ½/†]ï:o께þz£¦käõl×-ý1éV_Ÿ·ãmè³/õ=îKlÌ'®;lÇÌ-Ýbrµ]·»Ö†þ×ó¯ÎýS™›ºÅ¸÷øüRyµ¹­[Œ§{Î\÷× ý1n¹¶>·ÙØ-æ¹ÿõ½Çø-ý.¾ëfs·˜§®ëßz7õ¿.80IÁ‹„é륃ÎÀbµZïT)_­ËÖ¢0g-c«Z9æ^§•j©®‰A¶÷;+o{¨ ™ê±P‹™s…½Uêaˆ)Ær¿…¹Tk…zù<Ùô.Q›Ý{oê4s›ë¼Ý¶>æ^ÖÜ÷ß¶N³fÏ÷Ûÿm’<Õ±ò[«ÊÄöi -S኱+æ¬ÊTašP±1í¨ô†q4 bDQÐ(‰ŒÝ£ X Æ"¹0ë>S6$B06$"HDQ0B€0A0ÆA,ÆÅs=H³µÕæ5žÊø‰£‚$¶vÓFã#g³is‘ת¡eM]‚3®ð:¢v'ûµì°/ÞÀ9ˆþ,ÊÑå-¹âè=` }ƒ%®ú«¶º“VÃB.n‘ˆrÌ.µýj¥Sì êeyÏ0^n zn}±~l¥DÝŒ;%E9®Âr´jÞT¯sÖ~Mhâ‡|Ðæ!Í^á8dÄÒ 7€1uÁ@Qb å” ¡ývƒ -„{˜€ƒŒ¾:3ƨÀÓb‰«éJ:± 8CL=ÏK™²S"J:¶…R^bß³„sk4éU&’C½ø-õqOïF5#Ê¥À _†ÙOyÉ~"€V~‹Ö;OJ×ȃHÓ[2T'^–ô$M)ã4gH*cüÜVÀ…¼LYŒõ|ezH]~^>Õ†ÎÇõ0¾*¦ÝUGÔúh"E$5Û`€J弘YoßE¼3µÚÄ»{¡–BDÈIºp×ùª¢éàõÒÍÜÊï V¥w8ÕcÚžõsm€7}RIÅ7:_:²ù­ÆÐ4žÌ÷¿#P2'0âƳÂ[DÔOqý3C{@©u•Úxábò6Q¤P¿sd¨†|’‡VÏ/ -à?,)K¢aPþãz®}²çÙæ£€É§CŸƒ:e,I.¦DahZ‰å²z©öP"C‡}làBq©2ñE­ô7n¼1Iö ä«s²5‘êø×‚Ã-ü‡ÂßÜ¢š•e+rÒŒŠð#‡è,Ä&ä鈛‘£ëÖ,ô„iUÚ"i]ç—ÌõwT½oP‡tJÇ>QÛHÎÇY™”À/™c;Q6ýõ¡$*t–bâ‡b¡|·Àõô(ÓAq}L½Âô’è¦~=?4žôÒˆU9ÔöIÅûÿ“ñ©6ÅÒmÄ>1¤“C²bMëMÉ]¢T|…˜ìPÆšÒL•QÖÔ€ã7a‚<™†yb¼OÓ®”U -˜¾Wá0V¦Õ¾µ$KGˆ1"uås‰ƒN\T‰ÒW+NF*ªˆ¹þbáD¿hÀÚ[Ð+Ôƒ¢“à©j^ZóñÞ0‹“Ìsì+ Töñzà’tuW·&Œ;Íu•´Vµà:çëé60ëÇñ¿[ÊØ=Ÿ”CX6ñæFü²â®@…æ¢5§UÒ AÖMI„µî÷rË/a¬' -êCàRxàûÉ@žfÇ¥éíÀÅ›z£‘êEóÔ»YVŽz,аé™ÐØ;ë^âIdËGra ²‰Wªªoøp[?ýމfó?úMéßCõ 9ºXñÑj 87 ðØ ~öt}DÍð²i!О|Ìâ³fQw]2]àpùrÍ^È3}Ƹ6ëý8@„øw7¹Ðšõümˆâ]a9·hYc ÅEÐ ¨z ˜‚Ý;' §Ñ {ù¾.þÈAŠú §Bè»i3ÓZ{Dñ«Å(q3‰Î¿ü¹ýIdÕèWHòþ3;‹Ù[#»wŽ1•fIIöèå»F/®åÚíØ€µÈýÒ¯Ñ2„C/¿Î†BðÜ{çžåÜž4݆Öóí× nVï2ëpõmpq¨¾Àzœ D|½Þ錴M,9„¨ìÔìTd„òN„¬`™fôäŸ@>6A6Ð;Óà êõ%jrANR A6Ê•ä‡nûXÃUs²!Ž©öÂÑ¿Mzõ@iì!ºN6~Á=¿ÆP¼$lVÎ „·ÇP/ì‚Í2nshD$8ý‡} -díú¸ÿbÿùë1N¦Û*y÷B¡@žɱ•D4NÅɈˆë¸Ì~ŒiQê’— X¥’Ö£l€óEʤˆéyíõ0£ÌT‘Ó 4]LD–Äsœâ5Æ~øÌûð…û,‰pÞ6…)_S"é¬ûT† >5¾RzI nC`×ú>ò÷pU3Iî«Cñ6t¸mÀ&§- ¤ðg%ÿkGég»†*q°·X¬2£-À,öv2Ð=—LJ@ ÍŒ'"aìÒ¸ìÚÏeÔ=0û?|£C2½¨{yÔ2kÍ-ƒÃêí(¹©¶ž¯ô€Âm™ðn³I "¶‰¸Ï3‰‹õÅýþ=x‘ x5Ž>4õïÉ7ßîÕŽçG8ÄxáCKkg1+È@üÀµmc iãd½è‡þÚ÷2èrqpuBŸT‘y -çø††9p’,PT¾‚iÕC°ØñâB "lž=7Š-UܨÛîIä”3¦F¥¾UêŸîúØ©³¯lòr@Ôʪɯ¨¹p¶ƒÙð†1ÇâáUÆpDt¿ûdy~‹‰˜¹<'FeªúÑõÞÚe·.æ<®½ñôž}’®«C±“—‘ª‹¿û<²! ­e|,ÒÍq1^ÀÆâ -âlzŠïªþé9VKP² ;}Ò–nšFÊÓyÈÔy‚Žåìl “K8%ŒëŽïbõ«;¶xzø¸øe˜r pñ½Ÿ£}ßnÄ&Õ–BÔ”c6½Óö‘˜huyÞ´’“J »ÏïQp– -S>Þm ÆZ ât[À^›7Úë“-/RXb²… –m€zµ9#ûÀÛ™ á"á›ÿKwz‰¯IÕuTr>ÜØzÓN¬–¡…żà„L=hk$˜dç"œ1‹›?tÞ½(ÀÞ§mbyz~”ëªâ"L{f·Š‹d£èˆÂhkOßc(ì¹€êF$o5Qå2?ßÈ‹¯ ü\BËTÆQý’d1²vÀ íkóu_¿ ¾Oã|ùæÖ+|2wº;ÔäNX¢^y.Üý7‡x7h¢±pNkšºÕ|Q[¬s‰²1(¿È=<BÂM?DD\®¨#X•ÿ;toœíOžÞÕ1=¶˜¶ˆvŽÐ²dz<Ô -G0d ¥¯Ò …KOŠ,¢å?ÑuH%´Lmôh£‹«,l¹`sÀ°å'#(‡g.fJ+Èv‘?Rv÷[ûãì´á¯ž®MÔÌ#“.þ€²¤§¯ñ‚(XàécŸ¿ªøö­7˜ò‡¦Š=ßeêÙ^›^rëüú㼌»(–¹ñ¢^´uhÐI³È\ê°gDß2/œ3Ž3e¸‘ð×ѯx ñ–0c‚lº¥‡RŒ¦QH$áðC±Þ2¢2·§Èe!™§~¨Þûºl¬‹9‰×côãÒ f¤•LZVøñÑ÷Ö;Ý–ÑÏ*˜px^CC¯åøWCý?Ñ_R¶b*ØXÖ–P´…„чÈÂaý5•âï ¤“5XðïY8}Gùl/ªaá„ahè¼~îÚsCãÐ]±/ .©ñÂN~]ç»kÑüU&4”ÄÉ»³Èò0ÀCÁÇEp‚šÒ°D1æ‡æ_ŽšsðEÉ¥Š]nòBv¹LùU¡® wšk½œLDÏOÐÂô┺%zÜÙÊ;¸!üm Þ‡UÇ¿?Ô æ€æØL/»ú£úþþÀ‚V§w²T‘;ý$×…?Á•ÀCDEÇ2˜­çS=@/‚L3ÞÙ©f¢õœ è­ò8ƒÇÖ³nL¥W©!Zæð/žŽeB^RŸŠŽ~„;îè ~Ãy4µªž ßÝôÃ1£*ÔЬòI ؉ -/8âɘ¬æ*GÿУ6‡ÐšÍÝVX¢³„³4¾X}kP¯µùüÖw-H…¢5TD°DÄ—TÁžÙø©H yUäÇ,¼ØÎj–9'ñÔǤp »j4‹ž ½‡÷ ‡ƒ™™þïtv04˜–qP†cÀ·òm’æŸÌ!›e®ñYæèøÜmw·ú|ÖøPÖÛ5Jè -VÂÌ.GÍÉ®•v¡ÖIqšRœ)uî á{dÉÖ›ØÌ¯.m>°Ê¹£3òŸXŠÎªÎ‹XÞ¢Qnêsù×¥XºBPÃü~{ò\RÕ˜#&Ê%üs%0Z -En™á«ãu¥TOÃÛWë¢êVe|cf]×ÔÝ‘þÏeqÔèD}9ôŽ”å’T)'¥‚ãã¬ÍÈ9Ûéa{ æ: Ì ±p&­-— j¥ŽÞ*„îÕŒàá›Á¡ì™¾>º˜$BwC.“dQÌ)„.†´z²~[F$B—hc.¤:’×Ãß‹¹&nÈü×ÐÅ•s1tqõDè}QL¼ÿ&B7W†\zËdqV“&ta¤´4€ôÒÁ¿×Ô)á(ØÛç˜(wWÞ^dJOW”±rK~¨%ÒKäP˜U®h&wp()ò›† –:fÞ…2¤é­K1‰asbí'È7Ì™@cz­+”Ç&ÅíL½KB"ß%æ™—§Ë@Îtîñwgx¿ ;ÃïÓÅÐÓdÔ|_g×ä ¯¡61€›að̰;Íd¸2 -«1gê| ]vžÈIlʽ -bá"3SÌTø«,Få¦ÖeÔ­†˜l -«9øu½¡¬“P— xþHòäöS¡¢i«–-‚ŽHZED̈U”gBl°žS1ÀF› j×r0 Sk"|÷rà],-¼ËÒî§¾çÀ¡i$þrG8/ pn()ªØQÿGìh¥Ü½!@ä²û3 æX¡ ƒþþAOÚ\2À^ü¡=ùò…áS1°fs¾]køqÀ½Å„€‰DHâÒNRLëþ!j:œT€ÂÞZª¼à K¯jaã/©£ÁéºMoOFs1§½'øÆÌ=ý¾pÕù34_›@ [Ý2·îD¶N9>dVÚäè…_³˜þa¢ÛUÉÕ¬¾gRˆÿÓ1ŒþÊ`ÿJÍT:u9éLãU;vs~‡Î9_ 1µÖ;lø]˜IOïâó3—i5‘…Á…‘¯ˆ¯} à/¶'}ø˜ÇqÉò~ ±îËŽÊÚÿ]­PAF“öžßåÚU>cngÏ×'dC·ƒð…Rï$½büÔ‰%ò’éu[µEİrë|ÛhX¹2É v¼×Ÿ)i­T潇jE€Þ; ž8°ŽÅZ¨™“MÓÓ|Ó[ ÷z„eíÀ#ø4$T•m˜ª‚ÄYªÿŸ¡ÝäSÁp3¢y·(a´yc<Ð ÏâK2 ‡Í´.ƒ±Ä]Ôÿ$Ð1¿n›%ç÷‰(ꀞýð]vöј˜¶øE¼…i^¯˜»_ÕtzsÃJD”€l£¼}ñF!l¦tl-©™wÕ§4Ïq=Ûm£îC´8¬KK‚üùTq&ƒ¬±ï&”í5NÁ?N÷Ù -$v’#‹>Ü£À,S\<¦*a§G” q ª}Rr;%^#Z!õÇ;+ £)š~ðÒ±U»FìH“ #Ú&×XÆy¯kdMk¼#-fùÃ,i­ÛºÎèÍ!ÁÍ´Å»^–£*–ðK´Ó¬v“iÝIw$= jëIQå”û,=kiØâô¸|Ù±|É fnàÝZ:ºww%z,”Šâï*Ø å@Ñ.Ű ðêŽru«$'Úÿ›QË{3<”ÔŒõ0ÅÎÎ#7gWÂG“Ÿðúâ„_Œ{NÖ }ï(‘ûH‘Ø?»ZVT`Ýw£J¤•—ß_+^|Aº ¹"EއdH 7 Âþ•î«ÅåSêkKâºã!”Âÿf6פŸû©(É¿€|§S±¼¶í臲CdVržwçgÖøoÒJP6šØ{SiìH<;þ:4Áï·ˆeÿÈOØ]9µç<È";³‘Xß´(R—Sx ƒß׬ÚÝœ~­;BnŸ39P²víü2@kW ñ­æÜϘ%vUdž‘}‰’¥/ Kõ@ÝM+Â:‘.w¦¿ïcÀ;Òœ=2DÍÜÝPÕ?¼šº< ¿ànLs$iIDÍw?@bð¾îF2¿ ¥X…0¬†–Dôº©Ÿ3TøþH ºb’.yx¿Ð8 e¦’èvw72ì‹Dxáîä~TQE l‘›€wìp7ˆÑ©&\,*1RÌn»Ëg¤Qš4ƒØ™% Í„Èvl§ -w®•´ˆÝ‡ø!r¼¶%^ï“EwFå5†7ÿ3¬Á±¨ŽÜO>ÝÈÁ1„Ê1ñ¦Ô¼Á¼„© Ú˜.‰­ø/3$g3ƒºŠ0OÆÄ¶äKĨËfNÌöû÷ +°†Ý•àӑGc‹Ìû ’Yzm¿þY<«Ño‹…x²Xè 4úWp¥ÊQ@5iF@ìY³ùÊ" ÄÞÃÕŠN(>Þ»¯úÂú ޾‹Í° -´Gr!èÉNt£n6ÿQ‘ ȵhqS}Gèq¾ÅÑåtLF²ÍMG)Ñ;d ‚*‚¤dÝ9Wšî¹£öß^Ûš0ÓÐ@°,“ú•AhDÉóكćLß_²Ž¬‰¬|o-]íP~Ð}P¯KÍͺA$3âÕ_n:qù† AXNƒåùÅ%ˆŠ[í Ð,Õc?ûïGTüz"¶Ûÿ¯Ù9§l!XM%µQ÷GØê6KÚÆún#¿µÑÇú±gáNWŸ$Z¤”=5ä€u'œ:€V+9>Ý\ó¶ºn¢ è¥Åø$5d¿ér1Œ˲¼PµTì·éФ^!…å|{V¸éø€¢éiÃò¨}¬9FÑàÝÄ ~ðÇMÏŠ!Síœ4ŠˆÒ³Šô³nCu&7†HEƒÔì͂М=ýM?ÿíCŠvë:V™ƒM±eèäfiД2ß‘ &´­®XÛ À7?º -,.–{‹HšU¾¨ödp³/7¨s•òÓºž'ñ=¶áíðvˆx¨Ä\´ çÊÒ1ÐÛ° Q;†²‚Z•`ãœóKû<ùÏr†Ñ ™I¬+3^=ê8€ìÓ:n eA‹‡vm™·}c˜iÑgíAû 0Þ¶e÷š¤[ áýåL%ô\í“_BÎ̯Ç"¥’&à ¡ÑÚÅö1Ã-…+®²M–zàÔEÄwR’ï‹STóÞç(ÍÖVT“n^ð¦®Á¾lvXµZ¨„ÊÔ\xM8£ÍWŠƒ"ïÃzè™: "Üt¬éÌúE "“’Èà²U¡tðxV™_šÁ›§(O8¿!wZ•:ÓÐX¿xo”vo¸ÃIy¤èØ.s‚ú²q¢˜«Ûe¡´>á{Ïà뜕iäPß®AƒÈz°™¨nÉDD‰ð|íRå‘-0W kYÔLE‚nM…zˆ+‹ÜŽØété¹m‚V ¯]¡Èä=ºÆ D÷dP2bÖ®œkG‚åe‚Åz_‡-„½Ôœ>kñ:¦ªˆÛ¿1žYX”¯.Ðâ ã H‡Ä­” ú‹úÓš‹MYšÐ®ƒöÏi€l©Ô¯¡ÉeÐû$–­ -®LO¶4„ø<“0¢®âúoMÕ%žx¯î%ÙNxÖ2¡åÖÅiî稃@‰]DI{ÕÉæ@DðŒ0ã,î굿¥ð_Ê5~’Ì6ÚVmÀ}½¡XYmð$‰KæIöɸ*Úõ°‘} -­6)Ë36Î72öég²O5éd£XB8À>)Ð%ã ¾YN[­'¦pÙ';¶ç† âÙË©Ë>YO¤ì“ÕÆTÂÁ†gÝŒß'ÓaÙ'¨çîvšÒ³¸j -~PE¦¸E/8‘g}Ÿ`P%ïgÔP3"Ò­BFûhšúÁ¥–:=°p}F°Ù#¡›¸åÙÏL>xϹ7#ЛÏôC…-jF Ÿ˜/²ïÉV(¸=ÜÜËb܇xê\›g1îZÚâºFJLu¿ÆRaàô]üZf$ÝßaöjÒXÓiF³«ªXz‰Ù˜gnˆÍ‡æ~ëÛÜÓi`áë0åkÅ32ƒÐÀÂÐowŒ7%¦°ºÊÅŽnBL®p&…kZ¤ÇGß ï¢ V™Ãdǰ.°håÑŠÖ§-¤(fŒ`a‘0)ºœHØS"¦ú6…‰ÚÀ{È&fx¹ÒÃëŸç<w«äÉñ‡iEzMx^ˆ H¤œÇK¯×qn°ôUá„åÚÊTèL´Ôo!pcðß/à÷XqÓuJQZLŽÓð1²Ãbƒ*‰'[៪à¼zÌuë”:x$Õ.ƒø@ŸÆGFþ2 íSFæ +ÐZLžÍP©Iƒïí«)¢×Ŭ$mÇOp`)òIR,•ìáqjp½ñh=«ÅüC¬ÊàðA>ƒÆzÓ'lÁ -–fR’†èû|áîÅ}M¤cd¸UÚÒŽø”™.ÿm&ÜI8æ¯7`À@¿¾\D*ä®D5Ü óÌÔ sBW•ÎEè(}·!//¡SBç| ¸ûs®ü™Ïf>kÊ -Ó9ÃZ¾etžtä0Önà@7÷Î]ø;Xš×Ü|çÊyC•-² Ê`Ò9¡€ÎÄ)Õ‰`‚̤AcdU^w¶¸¥ìÈÆä4IÛž<%ò<}Ö“¢=S VyƒÿÞÛ=ã ,ô¬kXÚ‚‚äÿ”AîxÓ¿¸ª¹ÌŽÄ˜I’Bh]Rzû·žpP‡[°4˜.;‚ᮓò2õíÉÞæThæMƨ‹½»]ªÞMs¸á¹Bpp#U/qQòÒ(×7˜ý L׃ìr´þ,3:rïnÁ¸›µBhïnRÝ w®O|ò2»[«öõ‚Hü~˜·»EXo$°’Ÿió¼×=š´P…f¸Ïª}^b¾¯Í%À(û¦!CE$7(ö€NŠù#,*§¸pDì“Ï6ú9bz{˜Œ†a?b”­ ´aå±ÄÖîô’xÕ0x@ŒáŽ}©Åè4ŒÊ –€õ;÷ Éyò˜q{ürÃ1CvîA5†¡„àt¬1«L!Ëãç -Ü©Rcð™>ŽÙ0Œ˜YAÄïÛଦnƒSÓ4Ã%zaìÛ„ýÛ×’j½Öz½s@\ Þ€°ÙP-~µ1lj ¯m$k>êp“Ev-±ZNbÑÞ©RJ AfZÀa±µ°¹ ªˆ­;†¥°ÃÞ”lØ’/ˆ…%êïU %þòÊ“·ÐÃæq™¯ð‚“?…Þ0ìDÁ,Ùz…S·>ÂpP °(–Hm{Ḁ̃͗ݫý€S¼–¤Xb ÌKK­ÅðYýJ¦3sæfW.‚ØÞ´+´½òEôûÄÙLYÓá%¥°£˜D“¼S8êô0661×®`‘¡˜›ÃI©Iøe¶-§¯F,–—‘•ñÌø[ò _«/@SÌ&ÉCÏ…)•Ù–Cœ²kU‰É “D§Èlq`öC“{™¬ ˜È¥ˆÇ¢•}ÎÖŠ>CÙlÑÊ’æÊ¨ ån:eÐÆúƒÈ¾Ö•ÐÚîŠ#v2››h8·Eƒ§È¶Ì†f#@ƒFÒñ• lMò…X½Z˜Z,#>I"â劮†¥+Lbazºr骘7xø­•Ø -ÁÐ \!ˆøùÑûz¶,$Q¨ÐæGºÖî¯s)³wE º{,ЗE‘h¨!¹LF2S¢¹æŠj á r Ç®Ž„ˆ³—pBÛÛP+¢$Òµ#O›}òX;&]Q`ÐK®2!Бƒs›ˆõ-]s8E+ ±¾¡‡|Z\òdÑÕ8sªêQ¦šËSŸDrÆ-‡þ)Äú®yž—³ƒ·}÷‚`&¶ï;y™mpL»½YS\kéqÑO§Aú’aç娳±JÔŠO8,f+¸êdG¢.{6Z%‹)L:{Ò^Cø(ªç!wè•ä9ðûX“Ô± 7 73WÂßÎÉÝ›ÉÅ1%÷žŠ.& Qðae©C…‘Ò:»4µC‹a˜{ÖV€¨®vëì}^¬´XÉr¼bA4˜,Öö÷|é^Vtò¸ÃnÂÞ‰ÿŸˆU0¬ÝêÓ%\е½É·W#{ÿ¸/„ΠÅ -Ã[I§+X,#œ²˜:Ãd¤XR¥çæB*P¾¬z¬rîeeßz‹å>V(eÑ­PÌM·K5V••=õ²iÃf§‘¤ñ×¼c%àUÉâÊ[+qY–^¹è‚“Çú8Êû$³–×X†oáêˆm ½g Ø£•ŸÜJSY@Ó&ŽE˜p¬Š:<]–<ÿkU¼ù²ÜsAjk$Œ²ØKè*.ÔÌ1ÖÑ‚±êîNJ.h鼯5ËsîM“çª Ð[ºö-@]ŸÄ]°kXŠÄ «³L^v-ž»&G‘uãÁ$Roew‰J·I×Ü!yÈ‹ßjËW@RP‘=óºt½hƒ;=^.·°|¦Ã&¬>ÁúðŠC<ûš¥gÀ$F—ÝfB‹ÍWë+±GyÒ¼âqÔÈÜOªÝ4ê+˜A[€(»-~%á XþV:à6¿âžŽœê¬Y𡨽 Û!d%.=^íÙ¼-tš ÕXQ,mÄäàÛêäiJÎ1!Ç‚hÆ—¥ï¡ôoŸT,- Ú¾œÀ²n±Hó¸üc¹–%àïòze¡]±jq,Ï‚f>+‹u`\P¯2#YCDªYYiDÀjO=Yå©[éD@\åi·I{¾oY¼‹ ÒxÐgúôƒÃä×.±y,¡²>ÑžS€ðóµÆc9]–ÎÏX·³O°Å¸c ZLã ×ñúX‰—ÅËeÖO÷)è_'·+V³juÀå4£èÄË7UƒN6–¨”WÛç¦c™ ò -/6b;w…e1Oï@Âi{Æ‹Eðÿ|šOOc‚Åuv¿@xŒâÝ%1Úžwp×à„øÆ‚[ë(A¼ßa)É•ra¼V6\¹¸Fpñzòžw¾€dÇ–iµ«Èzy!ò1V–b€šjѪHÖòËÌÓê±J&¦U¢zà6ÙÀ -¥'ßxYþ²ÀŠýå"ïý­‡-¡¿âe5ušZ‡sjé.Y¤¡©B¡éÀp*%KÒ'²ýŸ.§Œz“{Õw¯¿Ê´Î#”Þ]9ðíëËVÄ»r[W^9“Š#w(¯~—­xp¢žl…\¢c³õˆ:I®(<œò\‰½ÆWÇD¿9qækõÒƒÉV¨ËžäZ!&Wvl¶BRËÐùÆì-œpåÊdd«Ï g'’0jÅÍ÷¯“+¢1ËGÕ÷[–Ë•¤T°»«ô)_ãr…õÒO¶ßJÈüJ¹?溌ŸŠåª!8„UªŠ,dÕD;0ÁÀT—ëÀ^’5åed€þJ@“Kf ¼à!Ø€Åhž\·OD)á¥nó#œ‘ÿ•i0@Ÿ'x´á€iUúÙ?ºJ«> + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WËŽÝDÝû+z™Aºîê÷6EBŠäJ,b1D(òûœª~ØN|3×7F#ÍLÙ]¯SU§ËO¿{®ž¾|nÔ³¯Ÿ«éýdT,EUð;«NUüû·éGõÞòÏ/&«ÉDõA§ƒK꥚ž¾xeÔ›¦÷ÊÊ!üÖÞD¯<ÁRñ^Ý?ˆþÃd­Ó9xu²Æéâœz7YuŠ…eI%«câ1hJA‘ö‰ † -¢ºŸ^Mß·hþ~³ðYp ›ì”ËV[[Êì5icœ:‘¦âáþBT'¯].OF‡$rÊòÛ 'IÊêP"ÔO°DQÎgò©$!†‚„ËR%#Pè9›Õ ydQd "Ç‘Ž>±TªT’Ht¶®}Ç¢,X‚)t»]òÐL¬IºÄØ"z×Å<„è8±X…9KŽ6k/¥IšBÍÿqaDùã3‹@*rIÐÅ ™M°åÅ ôO¬ú ¸œ²NÎ 8Ÿ´gØà9ç BìœmvžOwÖð +SB9ò0Ž–ó$Ç›sgµá`[h‹äÔ‚o2ßÒ'ZöáUŸÙƒ-š·G€¸½³s€Cî Œ-Á¦ßÓÿ¨ì #LÚâ$—$jÃxÂ:”‹¤ãå9²v©ÖJLê+ý¸=B·;‰|^È#Èþ "XD%jÚD €‰¨õ„àðâ-Dçu°vt•k›XèŽÈŸ+Ù pú ûh>.`÷ïu´~¯‹=ü.·ôšrϾšà4LjÐIƒ·¸¸køÅº÷œ*†‹«LÙ&°XiÈ*…bG?Öwœ4ÑÉk©W©Î»`ˆY„’Oµ#È,²ÍTˆ¼x¹I\1Å.òidkǃS㻢må5™v$Wj$ÄÇCšyHÑŒ¹vR +³@­ãýAÒŠêÚ(O°eXG)¥:ÓâÜj#D"c9ë2G.ÒýÌ0õ-ŠæÞª¯½ÃÊ8y$Aâݳwt‹n\—Gôý õ!ËpZJW”63ºÔ™¶¶spQ¹AÉæôTrïT0JI5W‡D×”a¡¾ãÁ(áœ{¾RF/=‚L2 ÛÔŒCÌŒäl+©ŸZK¸â%bòuÎyA‰¼[È}ÆxN`•@½ QJT)P‚À“ÌDÕ’gxÉÍóPÅÚÓ)ͯm¥µ¡ hcYÙgi‘Ë9"ìòH¡?è9²»À »˜Q²ƒ[+Ž5ÄŽòª +÷S»RÐU¸; Jñ"DR¸Ãxöʪ«dô ׳Ñè +O@ ‹ +¸?& Ì$Ùåh²ªQÎ:4š6‰—˜Ž0ëœc†˜UÓÃ4!”±±¹âßN¯¿Â´Ø}Jæ%Ô[?Ì›Ï =ŒÉpÞÍ&V“e—Yo'^IàÖŠþ‘›àk¸ý~zvž°¾ü==Û_8”ókf ƒ\Ï÷ªýóA¡ ù<þ`ö°è©óÃôÓ“óŸw'¼ò×ÝÏçoa’5ø4 ®Aűgw'¯žüùï¿wÚa¾Ðé3'6¢X›]{ÿæ¼gF;P|m8^€…¿E´Ÿ ÇËróEÑã\ˆW«âwƒ-ÛJèW$¹¡dXAˆ6âr2¸*†Cƒ›4¸ËJ ¤ì×:L¡ô‰2J1Aôf/«´¶è5ìgVD#[pzI qnAªFF‘n#ŠæSüÄjEÚCQò6z…]MÒ[á¨Ò¾Ï:&º‘F‘V9õ-ï›—ÏÕôÿÿÿÿþÿó¸ endstream endobj 23 0 obj <>stream +8;Z]"CD)7B%#"BS(Z[WJBuT52:j(77#sU80aCd=\!i35ieG_`PAj(MlqZ.m94[2JO[* +7'l!$;VR_P<"]Z%8bBTU(KmQ@SB1:\U%U$oY"4Hhc"P%7I@@]pGG+ahGH_]L2a?Fh +JkkT_Sj81I)lt(Q)?5O65VG_m&;2'e6pU,>MDRa?lJ>'?9D>qA3$4+__>?guPZgfG +*ni^_>Q0`F7Q1)!^ESPW!@^b;fW@]B81srC!<<'!!!*'!!s&$HLe7~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 6/5/24 11:48 AM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -93.5355339766138 832.122376430948 1.60471369401015 0 7890.35160330797 7960.53595322348 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -93.5355339766138 832.122376430948 1.60471369401015 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýXÔsêáãÅ; EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJB vÐáB ƒÔu]\ªëÚN)© 1«¸† ° q š õêk>ÞÃþ?u‹å‚ÃÓ–9XÑ 0@ØÃoäG’dX·Xîouñ7Ùª[W€^¯¾&õUs,}•ûrVô‡c¸ý.Uür7UÐÌ +¡gV€Ý^qMÇT'N,à÷5[³èåKCü:–rçºfá?·¯ÛR Ðõý7ź3+€³5Û²õ±ó\zò€šŒ½¬ø·1üøm ¿¯<Ñ¿9š É{±­þôŸ=* vçôÛXåÂ"Oc¼bnû7¦E‹þkp?Z“ëXG#/åBóô쪻ƒb8’!ÉAò×ul~c Ǫà·ðEë丹(Êqh¤¨‰ßö$c·f?ŸNÅ@ôüëÿbgÖs)] íeÿ§†ÝYž¿€XûæOÿYþõéûþ“ûQ;ÿ¶ÿF̾lJð˜M³óæ4»¬?küW~Å*Mv_•6ÿ•¶ß86=¯¾fÀÏÐõ§éò¿)¶žcy€Ô«U.ºÐX°Û¢]˜Íqüª_€[³ï?mY »±çeÿÇÓö¿fkЀÚ}Ý”K»£ºÅr?§ÖW‡ÆcrìÑ>‹±`V£iœ_Ê…VÃOÛfÖ…hÞiËØšEÉNO_ÿzM»Ó“©r’—Üä'GyÊU¾;ï½ûþu°‡]ìc'{ÙÍ~v´§]íÛsß½÷Ÿ}èEŸžô¥7ýéQŸzÕïýóß÷_ø‰ßø‘_ù™ßù¡_ú©ß9ØA~ † Ž –  ž +¦  +f;äa}ø…`†b8†dX†fx†h˜†j¸E.vÑ‹ŸŠ¡(Š£HŠ¥hЧˆŠ©¨Š{äcýøàŽâ˜#9–£9ž#:¦£:n’“ôäG‚dHŠäH’dIšäI¢dJªä.yÙK_~%X†¥XŽ%Y–¥Yž%Z¦¥ZfÛäf7½ù™ š¢9š¤Yš¦yš¨™šª¹O~öÓŸß žá)žãIžåižç‰žé©žåhG=ú¡ ¢"š(‰–¨‰ž(Ц¨Šî”§=õé—‚i˜Šé˜’i™šé™¢išªéV¹ÚU¯~*¨†ª¨Ž*©–ª©ž*ª¦ªª†)˜~©OyºSMQ=Q-QÑÑìC=ÊѦ'zž§y–'yŠgx~g?÷™š¨iš¤)š éMnª%Zš%Y†åWör—)y’$)’ éÉM¦ã9fä(ŽàèÇ=¦â)’¢(‚¢¹¨†hh†d(†`èCªåzô;ÃL}†z3ô ÚÓ±‹=åhVŠ;ü|çÙXŽaç*™f"'w*f©èÃŽ~T?üü—õ/í(ÙGžu4+Ë1ÌT”<É“4=:žåHŽã8ŽYÈQ1U0QðOAуé‡ö/+Cÿñ³›ã×}ïif‚éFËðÛžï=ÉÔ=ÍÌ,ÉQ4C3?ß¹¹ÍmfÛTKµLË-Ïò4Ë’,Çr˰ K°˯üJ_ú²—½ä%/w©¦$Jf(y’&Y’%I’#9’"’ ’éÉNv’“›TGuLGtO°ËúæIäôü°šWŒ3Ö±7¦ÿ§þ¬™ ±¯ZÏå |oH ò_Vú¬™Õœ¾®AèÚ…EócŸ½¿TÏå‡cŽà»>† 9jžû-îÞùÞ ÙùO#Ão{Ñ‹àÞdç7ÝÐבŸ×Ànoð×ì+¿~èä/¥'wø‰íšÙ—ÏŒ8v]Öÿ˜Ú6×϶e[ƒÐ,Ø­ëú,öu9‰—rË4Èg±´èä/å–uÏ5ÈüS¯§}ݘyêüRr­f_s¬þ×UOà¥lû?gfßëñìiYw°Ñ t ǪKž¦&@ü¾¿¤±5üYìFƒÙ§¡çøOšþªxöÔðÅT1ºm™÷Ç¿¯ï½ÉŽ$Cm ?>~Éù;’$5þ¡ÿȽAñóàöÏ“~ï½wGÿkÙ¶loQÛ{smk[ƒ ›,ØmáXln[æGr òàÒ4+fÏmË6¥0€ñƒp®}ݽPƒüšEáØe¸l'†ü±?n– òßÚ m[ÆXh 8žÿ‹=5WÀ×,4È«`7v Ç.=ÿÑi¼”Û–íîë㳘ãšk:ö¾MƒÌqÍþùܶLÛüTÜ–§°n`Ãyôy[M05­ää€þ–·¡¿å™=†” n~XËiR´û•ðL.›âØHýÓY/¤kÂtl.‰vˆ<Ù\§Ø\t ÿÐÙ²6Æyp‘ƒ'.ªÁQˆˆÂƒAá€aÑ3d¯†-cS#ϵÂå@݇D¢Ý,ÕP*}rƒ ÒhÑ+ÀmÙ!‘h?•ú +‘w5ˆ…°ƒeô[Vš×,¬¥“€‡‡°šê~ ¨Æçú R‹H{Ý N8…?L‰¢æíyF:5” ÎHI\ï°‰¬4¾["ó#I¼½e +xÜx®X2]$oƒ§Ì£pº&\ÁÓž…ô(„Ú“£B9 +ÔQà™F½š>e¢åà[Ö  :š‰¤"©ÿ–|ëߊËò6^aôŽ¥Ðèæ7H¹É8 àÇñÑß&K&¡v!O>ÇéJ%q‚eô§UAk^Ø„qŒ 9F(è„!—LñgÍá@«"£«ôÎHoÙ>}l†"XˆÍ»iu…GÂ2J1={<Œxp84¡gF!Rà¥ÞÖYÆêÇËØ @( Š;ÏD» ÎHŸÿ´e$>"̪m͸!'ô@ØrnJ‚[óÉ€já`vhZ¤Ï€{FèÁlJ€ß–MƒÅb âIÛ:24“˜ÁL@ ”b}i¯s¡ +…'d f˜'Ú(‘‹‚Õ‘¦p +‹Q;@°. ŠÖÁ^ýŽ¡V9¤¯Šƒ¤“X}Ò¥iÁNzË0QÉÔ8ð”PMŠÚËb¢èóK<ÁàÇåôX~$;¯-“8Ý£ý+Äy¼ôÁ ¾yv¬¶h ¶`)%Å’„‹«s°e Xpp0€pJ'›‡A(íÞ²ôqP)<. an‡ª胇fùDÁÆfFO´»æ .;R`có–y&Î(á>ãû¼"ÜÁ«G8Æ·eiªlðõ› +F+QX'\lÔø.ò©¸ã,€15Ñî’¸øŠÂ†ŠÍÐçí´Ž!Ü–y_æ‹§eÙò«õ…DìÂKf_€>oÇ,“/Äõ–i4"Š$63<±#$D£êD…¶Œ$êx¡!Iw¤;Wû]Á —z‡&ŠŽ* +ô–ÿdÙ"f•±n —³'Çã@6žÊ‹FV[¢Ö˜­úBé·²„ê°ËÇ^l›_Iâm™qÀwSl> ÏÛÇú˜TÞn!«iˆ[²e irGû•ÌG!”Ðröc|FУÐívQ˜ÀV®€Yp…-cI)É-/ªÑô&nÂ* {ì: abôztÀËú3áx¥×VxAç·L\ T<ߤÉÉP|èfhƒ2W*o>j† ´”§¢ö*u#aöžã)è „Hº9j§b•ó¤ºeœ¹§¦£¤ùR @°pgß ’ts¢PI-@AðÁœrP¡¥4,(ól‘HÝK&\Ôøãšp‰yÎNÅ2üo…-#)¼G[p…RíŽBj~^tŸgZSß1¶H%FË~a«]³(Qes8A*ÎÙ(‚fãEij ¯Å=EÂô Â%ƒh6\ºe1sþè¡N¸N8 +e@xú+¤H¢µC0©¼+’n/ŒQ’xÛ5kFáu¹ŒÂ–íÉQHFŽÂ¸B1 + NÅÆÇø(\FŽÂ7Ï $³b ^è\ ‡%PN½&M8^⼨8œ/uý”Œ^` ‘p[¶¡;ý 0Îèë…CEèQ®X÷X“ÊCuc¦¢ñ0'Jí¨Ê5îÌ3µtËÄ-I7g™TÞÌ}$gjqô’ŠV•—Z€Æ²;{GIwãcRyt÷‘\Œv ’Héj;ä9Á Úí$8(Ó ; Òn`!ˆX@Úë¶LnQ’x»oö£€’6Žã +Ý +Å(´Ü–£@p…ˆkÂ> +ïQX<£Ð +?®C"_ßpÞæ‡Ï§M`re Dð/í+ ÂÇCˆ3‹oY,ämøÅ±*&LÁ[‰Å ¢À ×nO Æ*ê)x…áèGÓ' ,ä¤J´{‚êP> +N8´”h·bÃyÛK(œˆ'Ü–9´ßƪ‚ãår‚JOƒhœ_J/«ø!Î/¥€*ÖÔp¬òŽÕºŽ@}V,Ïü3q+×h:i\ÕŸ=ë4À­#PM³šKYjn —!¿”m€ÿÊî{‚x¨£<©éÅ+ø’Š1ñ§ç/àÏ﫺TœÀ¾)ÙuÑ]*N`ÁìüY,ý¾¬‹j¥öþ6~µ²Ü½5ýÖ´,¿5=Ër7Ë2?‹}¹Ý,“â,ËÜÕ¤´öÃîê£t³,Ç­n–ån–å¶KÅ ©N³]*NØ©8¡›_ÕŽeZž©n~kø»3æ¸%»ïªkgU×Î*Ö³æÿ²¯ «Tt×Î*^wí¬j èdö¿€¸kgÕ€šÞµ[§â„»ïê·©Yå~+Ï;µ÷[Ïñj–ß¶«áU*Fw5¼z¿€ÿv´ì¦XÖ‡k8V©øÛÑòü[¶Ew´\º£e¹“˜;yV'Àk÷Uuòn ³±êÓ±VŽ;y€_»-äÝÉtòoŠ…¿ +Ž­hf;znçøÕh O‡´0ÐÚ_³ñ©¥>Ö:Ñâ×°Û½\^ªù·ê¸{©f™}ÕnªKÅ ©OǺÕ*nÿSëÅ’]:†]-†5ò¿XÎ:Õ5«ëÔªY™õé vÄ›—UÎZE= Mà}c•fZÌl ³5¨«bô“evõx_>‹õ¸`WÃYÿ3—3kÊ?ÚÁİ Ži´»ŠµOÇ´—…a–K¾h4«µT1ZS¹¯,³Z‹°¯Æj°«Õ®öUì+kq­µÿÃZ,0ÇšÃÕ`—e} Ž5˜}e-ø4-Ò:õÀ¬F³ÚÝ•³ v°´ÿ–­µÚoÕÚŸYíÓ¿Z´ÿ¿¦ß¥>AM³jGŽC5üÛK Ç縇X°KàšÙÍËC½[}MͦâYUºä–ßò× }Z4€W:öªàKÀÎkïll€s×Ìnæ?€×Oÿ¯ +Áîšcê¹|ųúº,œzÅZ¡_³ó‡ÿ§Àvkú£ÝÍp Fÿ+ž[ªŽ7Þ•Ù“»µÛ¦\å¾±ç¿XÎ夢žÎ/¥ç­æïyÿ®gwú¿²[¿±ÍÀ‚Z×"@ÜbaЩu_vtrWîüG*êYÀÎèÝÌ ?ÓRÍì-.¥Ö[˜…]ò¤篫¶ß»šßº±µVýÕ*ÕÀ¿m]K«f=s)Çâyu_Y.ë~ˆ¾¼f=uÌñ4OhçXõ?®¦žËö×ìÌr7 M€vgvt)á¿–HÄæ:-JöÏ¥Ïç§ìèE$GÞ¦¼ØÅ0ôò³ãÃsñ{ˆ Øª'ùGòo5N†âÌn°¯L»(×Ü¥ãOzÿGÛµê¿TÒ—¸Ž•Ú¥l[Vö.š}u®ÜбL»/;¿±Š¥Õ±Ø¥Ša×SÚ¯Ù7¦]MãoìåÒÚüeVÖHZkÝ™¥ PÁfefçZ#/%kÖúØ¿¦4®Íñ«´vfãT=³y)Ùz€Ò¾€™/ˆM9žÏÓ:‰ß"ŸïûOnc¸sl髯ÉtÅsM׬üŠOõ´?õJY÷e5·†Ù°à×ڇݷŽÅpAïûϹ½oL½”®Ýñ.ì‹ÚU±r‡¦ÿ,¿âÓC±ûÿº«xö´Tn‹€—_Ūõêk\XTƒ@÷½G°¦]”»|w4~\ãâ~Ÿ^­:«¯ñ †þ¼ ØÆ‹ý’ÑS¿Y¸Á1Ix‚ }ÐJíBžlÙ„%rlkå[¶e[ƸhRü±eÁÁIƒ4Û2‡eË ŠlatoË(® WØŠ+ ÀÂäu„Çø(8ÌÃÈ0GaoCRQqLBÙr)䩬1­á†Ä»)áoý;óè8Þ{¸`ö&bB{¬%™=B:W›1`‰ºo™Jà™~Ë4/Ì#Ræy’ Zí-S½ã~(ê¾e[–‚%«sF}:ôÔ2¨4Nª¾e[¦]ï¶ì¤B±i +==ä 'Vè@̵e  ß²‘‹ämªà(8æ™Q°6ŽBëËGaË&¾|@jw® WèÈ0G!’…Îc| \Ó©¸ÂABËQP, +¸¦=9 +ê÷r…Ê¢€+pÞ£Ð?¨#ÑV›!w\[ä]ß²TÓõ2IQÃ1]•B ò6¨„‡)¼k×,ÉìgãqxVZífËxW œ¡ò„ž²e°RA `œévnËLÌ& PÄH4±l +Qõ âé˜0º¥´qM2«Q b‡À +—yžò!D'qiË(Ú’y.Í–¸#)F•9¡ºgÅÒS„bιZÊ ¥ö*IjV6†FêG$²eœeš‘ÐRVÂÐR’ÏDdQæI´8(äQ}ÝÈÉ* ³ã–ó‚á–u™@û#äá5yÁŒÝ2-Ì¥ßhVã5€ö-“°*¾˜ ŠÊàò6È å¯ÒòuŠzË6Á:áÒŲPc›å4ʘØ*Ä@¥k&¿Ì£¡Ò%YWÔEdø¤ˆM8tŸçúóyÛEMþ¢*í¾.hé•° +w=–t`±p™îO!•r·ŒqR½ýx©6¯ðÊÜcݳ‚;è¦X6ø o-v*%R1,b š.è"A T–>ŠQåÁàŠ+E±i¥Q¼@\1H9ý-ï9L¸ÅeÙ»NZ2íU¶l›@Ki@½ëÖ @æÔ¡Sò$Ø LF%v”£ *g@UV¶ì(9%“ í»3Ï·>+ Õ¦\-H¥Ðè`•-Û:Óæ ˜xã-D)ªÇ”±ëtƒÉÔøN 6 g/!M·ááI¸PK0Ò³geÊzËL5$6_1=‡%=,6¨ø4P»+Fûs¬;͘ꮤ¤º½ÌI7ä‰p%Æ7ð½\|]†ÁSµÊ-û˜~`…㩈%h”Âå)Iq¼~=@žIrýí8 ßñöI¥{ ôÍsá¤nY +›p­ð#Iq +Z1iÅæ§³nN|X·JR÷„²Õ]ùTÜÛ1{a³4 +ežQx[l8’©4 bo^ücÖ~ž Ð6וN^ pžW',%0¸ótZ0ÖÓ(¶ñVÑë´@«ŒÌA#˜Å€C’ ŸiqP® +KÓºÄL +rë+4 ص•ñ„€„%ƒ÷QË–1êKÁP€0Qäø- +6{—Í…` n|²=¼™Õ(”ôFá=ÿÒ˜ƒ‡^£'ÄøUn]à¸vuØ”DÇñ©ÒwL¦Vy–C)dxN8DäAD¾þõß2:užŠ‘DÑI#‰¢‡ói>Í'¾€Ô&‰¢Ÿói>­˜Áú0ðÕÃÀWf°NËO3X ÖÑH±ÚŠL±*­ E'D +‘ŒîÁ@Y6eÙŒódÿ~yÖ—g€H'öï-SœØŸ‘3Ù–‘3Œ%³)DÅ@(™Œìa`$Âû†S0¯ÅAxÌ‹Y@Þc^•]P.…tA©YôÁŒ.(œ¨cðiVÛÂâ,,zRO¸“Å¢'”z£Ôî°XX•M¤tlnµ£Ä¨ 55:jB;jBMsL”ecË:¤váW ai¯{µ'Ã2’?ô8¨aa"¢g…Fí +‘–¸øŠʱ~t ¡¿>ˆCÈÙ¤º%¨Ø\b|¦6±Œþó[d¶ª†'@œ•ºy‚j  Jß<ÂG‡ŠÍ Cdž·Œ„tÃgçÓ³ùa- ©ñÝùAL§â +•„–£DbŠkåNé;N1ª(FÔUÙ´+Ç;ÄÇ to¥DÒÞ1ÓÒ+QÓéoÀëÎíéT‰T*‘xwv¤-ëÇâñ5°Ëkà« 3ð0ƒÕ€€dà+ÎÀW»`YÉ%¹$—F¤ó<· ¦XíÇÅ£x Q¢à9Õ²ÁOý7ƒÄ^ ”e+0d™ÙDŸ‘Ågä Q|F. @(±J#1 Ǽ0F"bŽQd8æ…1dxL&žÆpŠ…žÔóioY·°,(„Žê¡£Z$óÓû<ºb£ ÖS2GYvš¦éáQ𤅑AÊ¥4EØ2Æ_ã„Uxú–¡&´'<˜“$ÚýÆÔPÓ=ŒOcð @Ã@鳌«‰“’8ã/µ­¯IB +Åj©Séë8*6oÙÂÑ´HŸ'+ên™×ªº"[cË6•ç ˜ +Ó+‹8ïÆe<óO$Ó±ªñ½&Ê‚á焸eô0X]ê¢8„¢‚ÃêeÕ@”±ilAÅfRÉtB&–ÑS>ΆSP–ݪ$Õ³r4–(<ƈ£  Ì? Ï<¹ IN„9Õ˜µWÔT\™V¢tÎéQšÙk.ý–IÎÌFY–¿%_¼ñ`)áÉK +³a­•§Âmèƒ.`z¯;Wtª&™ýÜ0Éìg©Ôqó‰´Áà²Ú Ȫ/ «!Hý$q‰¢÷% @|kà«í |•øjà  G ÒíuÔ åPƒ”ŸŠ•\Z'rI.­“QãlL RÎð)²ÁOOTÿ½e‘H$@eƒŸÝEÿÍ]´‹þ{ËâÑ:5²-Dâ`ÐêaÐ +ƒÖIÿ8¾-ó /VAYö¹Oìß'öïljýÛ¿<+ˆ´’“cËÄMDñY.­.ã7Å nË2Œœ9 @(™]‡(óâNë„ÃÀH„÷1 ‹þóJ`²E†S¶ “è Èp +Ã)µ¬ÑÅ#*øjË¥µEtóÃ*žݲ̈́Â]é‚ÂmÙ%á’.(ë£4á.5º p4e‘¿ÉdøT¶eôäåY³RgÌØA·°,Ö¤Þ²´°N8Ë£D2û–ÍóèÊzÊ*ÚÍk«ˆ,Û#Z+‡éšp[¶‘(ú¡’(zltõµUž ·Î"‰¢Ë£+[˜ Y`vXß2 ·<¾1°ˆ1ø”#u¨ìJN`÷”©;WœcË: È +f&:ÏßêeG)Á@Y¶èÄþ"|ƒ-KdV¯É |ŠÀȤ +—š¸ÈÁuÇ ý$2«_郔§[&Ÿ)ì(Ñ)O Þ8, +ËcL±Ú£uƒÖ ‡Ò±Ém™À–ÅÇ&4¢xkÙš §|bäàzt#¶%P–íY|j¡‚”Äõ¶ ÄlóÞ 70p6ç–N¯× +?£@f8#ŠçàŽëÍ%ØhË&‡ëÅpÂ¥¢‰ëÁ›W—h7_I*÷Ì„êú¹è›GdžãµñyèE]ÈŒªÄƒR„YØ]À„â’ƒHÚOµá¡ˆ‹jË|ÊÀò3ANqKˆÃV^²dƒ XyIVÌ>ˆ ˜>SPóiÂW¾õïFgy[6Ði¹*1™•âi Éìˆèý*•ÀôòñòLX·^z±M©*§ÇòÆ«HªÏÐ ·$•–·bPTˆ% «Pl™ˆ&Ú*<ºàÄ!«oÀ^›Òý @ž&Dð®ÔÊUEþ¥W Ìæ¢KwíOîà ‹zp=Mgå™^‚𨠴34>íüñWé]©XÙ`<\n™aQ(=hæP]>=u¨ ‚ê&‚fµ¹-C ˜þ!@­<î°>^å–z{9!¬E4V®²§ƒ»¥‚y]OŒ=Îˬ[†¡Y+/($£W* ëq\»ò…ÈàÒ3ŠÚaô£¿˜]éâÇ™'›²BË)~¸”-î  Ó{ä”ëy¡uË:‘öÔˇÑ)Š„é)•ƒëy +hH‚¬¶ ßJ&SH»zØ`ÌÆðT6 +ØÆ³­öIb-º€Yè,|Ë$ ‡gÐÁìs»Œ-þ9Eà²Á™°ÊœZ7%Œ„°èkê¼)aúÃ×¢}Ë.ŠŠGR|@•¾Ô¸8¾e\`˶¬'` +8NýwJ«6/0BD/ÀWÌNMÿµ.Ìh”Z`%Ññ6¼Ùx*©¦ëåüÚp^ahw·ƒw¸¸œo^G/-Þ„öˆ$…Ù…GŠóœß@*¡ÄbÃ9¨[zT¼,c­öø4ª8ôú”[Ö½ í«IðŸ&´È-Ôj“ +˜·²†$œÇÂB£Ç•S/a©•«‚’_Ô¥X>FEÂôëgâzà\oÙ–§ƒ£ +£‡kå“‚7•xpȺt îì5E%¼):0Ûõů®cOÆøÌF¬Jß²-y¨¸åãq½-ó eËÈ‚¹ô²Q†T o¶[f"U¸áoÊù‘º¶œh¬¼VãÇGÜôƒ¨…8¥gf‹vÉb8aÅÂËhå5ÁÜ2rdr3õwɺ¢såYµy¿>‘\TÀAõ“¶ õ/F/L$Wí©4 K/%ñÆÛˆ°£¸¾¾H…³2”>ñù½eêeÝ,šð[æcõ–!T.cwSbH®¿7•ó²Ç`óe%Þx%OÁ[™7–§raºþØPH8W;4Aèz!AéeÍá0=V¨œº,Æ/@Òð÷d‚•Ç)½ÇÙa$¼kB;Ütö"~ž¿·È¡ãÁì”=3{±e¢9á/ =zI~‘8L‡Åxã-R¥U +z ,2Øü–%ÐX/ÉS#Þ2/oP]rñ¸wS[†JVÌŽ˜ +T¬ÇítÙÈìH„U^¡Á¥Þæt_yãqP Ógä‚[î ¬âèT~†*Ž^<7¨ÒJN^˜pËPÄE…Ù[Æ=eƒ£/9ÅSKº_§ˆ4)nml. Y8¸7AYvjú„!!£›ÐõÊF!á·ln`~…Œ¾uU/7ÄHT‘ *ž1ÝÒ»$)ŽWøÁÆë¼èÒÓÂ^¢ŸØ¿G‰ðb‹>è”K +³GîÁìF¢è[¶e{ "–Œ¦ë›”üñ²§By±RüÅbx¶«ƒ°è#‘Á¥Ÿ¬Å£¿å)è-jow×D³ppQ’ú»»PÖÉ–m™„Ep¼,c‹ƒN¸¬]‡^VXÑj#Þæ”%ñÆs„š— žÒÓ%Ú=EWÐ.ä‰wY1;rѤ8h*PñµM¹çH´;Á|lYÁuÊ–S÷ßB´rŠt=Ùj¼d=T|Ü” ~Al*¾e¢¤„ÙTÿÂÚ#Älžè6!6Ür¹*¦fÂñ,”FÂs¨œ PÐ.¯å©w¶¨â¯EBüØ²Ž´Èì°óüí°&œD\1Ûà ’Ä!¤0[õíæ·Œì‚Jˆ‰D•ÐOár¤¥GS±ÎþÄ&­2!–7ÞarrUêv–+œÌSQh2¿e Òô·4áÔ•ã­ühúÙ(½—ènž™JXÉ l媄¤é;”ª¿³†oYEt`¶zÆï q5\‚p®<•yfs¾b¶dµñÐÖlð-C}(>¥\o€“&|2J“^–p/a­§!|<©lñÃFÕKLÈ3=èÄX})¥ùÄFÓ«šÕî +Ò¶ó;‘ÒOΕ?Ðßò8iŠê1ƒŒ§â½§Y—(S X˜bù2˜lJ”}`6gK9gQ&EííÆeÙ]T²~wVoï8‚A½ +ÂÂ9à„?ÖÊ9à„ë°"߸­|ËDM§¿ ªCùÕ”Gß–.Ôi‰ngDWaÃkºRôA_œoË˸ X“ÎÈ€Îk)ülÑ$œD\„>x|g^œ¤Äh T¤#Ý@oj!!£;Bà„ó.ÐÆãÔ’·¹©@Õ±¨ø'\?CU7N.§¸ !Å;œp]Zøæ€œp"?TÂÊ/‡5hVÎi]'ÜJÂêZ.rdRÛÙ@ÁÛÁ3à„UAX팉qRQ‘Â;>}ÐÐÛ°DÑ2>ÐÛŠƒÂ ¢øî€²ìG‹>èŽÖrêÉÛ$Ì¥Jáßñv‚ò-»,ÖIʕ̮9`Îöƒ UŠ$9NH´ª`6&Aê¥>’CµWÁL‚ôëq¢)ó¼¥BgçÌ×6X)NY„6ÞG`© ¸ŒXZ8 ÓǬ‚Ísã¡Ñ]™öm^ ÔÆ‘.(µµá¼½e[¶e‡IÂ0áD…-#…e¨Á!1BƒlL‹‡ +œ[>ç«h±ò„“õñ¶ÌdRüDlV[ JÏ™t£Jb õÁ–1J’SíIæ? +ê÷nY˜Ðr„Š+` ±nÑ%¸lp{TÅ<Ó¿ÂYÃMµÆì“„°è°fåx[&r=Ó«ÍÂE *6£[¶e›Ö$¤ +|M@%L<*qË®¡s)S«ô\Fž +ç±q<Ñd@õp.]kÆSE‹î n)mÙ–„n„Û²-ë…÷(ØÇ"„0rbŠ-C  ÓÇ)ç–}QqXWÐ* ¤’Ò›§c¬Çy\Ðn‚¹Ê6qß²-kÏ•|€ÀW{ô)¤úï-û¤þÞ²-C!é‰N€œ3Ã@ ™ç-Û2Ï*´”spv†?®ƒ9… ¸!ˆ`ä% ƒZ9ã’hñ×hãq+ +V$¬få±/ÖËw`ö–ÞŒ§"W$>JH2(".,Æ"Á0 ‡bÆ‘Da ‘c™0p—#-[»­‚¸)+^km© ‚ªÂ"~yuÙhSÍ#FáDì4ú2Ò‚ŒÚô†Â®™T(Sã21ƒJ¢æašq_4¤9ayÏ]«üu;R”f„¹”J´¬Y4ŸE]ƒä¤R@3ã-ŠFô‚ºû‰ ¾‚r3Ÿm*4eùê"—ÝEA_gzšò“Šî>nYÄ[ —ú.t™Sn]nú“ƒbâVØò¼c l±ýÕÝåÓæ”Î~ÜAjÑKGjðêý1'U²(òPfè?ªÎ¡£ZµnndG¼±Î{ÑxÔvžNᥭ†ìŒóÖ8–? úêƒ|]£Ö½nÜ4«¹–éô÷³]™55÷7ÛúሩÚó +¬OÚm_—ð)Æ{ê2ãY•kÓ›:ˆóP¥ÖêÌ©òð(R@༑I“3¼XúQ‰I +C–ÌB×dG“3©‚ü¦ØâÜ +¹"̼›ˆË÷³Æ&^f½<…ÙŠþ=}— Èf¨-š<á&Q‰ðÄqá6tº÷è™ÞbÓdJM¦@7ºvtgÇé3Ù9…‡ƒº]ch}ØvœÔEwE ·äž*çØÒ—yYþ,gñ‹¥¿Û€†öïK§kBh¼¶UòÆ5­¢†Ë ·ä]|cíªÏö"û `) ´¥@þͤNUh9O–]D`p 2ˆÈ-¤§¼ÐÛ‘sMöÝž8­ÞÝÿ6!¯9{̯ž‰¨l³L íPD§Ò~4'ÛIC|È,J7è’Îâ’Å#ŒD3ÿ{2/êl@´«®ÛT×NžÝØ„µ–e›woÀ‚^†.ZvhØz@à'ûáÒSƈ¥ãËrþ¤•8À½D¶ ñ©ÏÛsn#lžÇlE¯Ã 86oæjœívÕ€þA|kÆ).6ˆ¾C™HÇAФŸ„qøâÿo«²È•°›_A$´ “¦w[Èü¡¼lcý ÿЕ^7ù° à9A]†ãYXoE"@!l£.d¾Nzö±(Y9ÇlŠå£¾þ•ð㔋 ‰B<’5o†œñY4‡°¦vÉh ƒõš‚f“q»5æ •ÊÎ Ž¥êÍYnµy¨l{…éâW›b!º ž”èøý=Ô¿‡S€ã5û‹(çýál„n¯ÎO¼¹[©*º2â4'ϻ鹰’såSÿ “ubº·/&$NÎn"cé¹€˜`Þ™*¨žÄùLRsP9b–žÊY¥(XߺËQo“t>ÝZ†¼«TnAzP§çªa*j¥à2ÊÒLyËQF®oÓË\ªˆUÆo…n‘ØjÓRÍ5ýÔ9óÆÜ”A‚>i”µôÙ;W{@r G`úLFJÎWâäú«šLI£^ssê³lÿßÁÊ;ŒŽšB<+]âpÖ–€ê’q.–qf;c9FЫÿ$ëR³ÌáËó8 +é™öêÙŸ+‹”?€ôBHPúŒ}øG —Ѽë\謡)•Éæ¯XäºïnP`áR-FDeú™Ñº#F‚î +¡6ðž#×i 䥻î󸭦ǹý´lv„ù'û~¬k,Ê8’`äØä‘(Ò­$þ–eªgnËûÜ´œ‰µI‘Ìmu„[)Bó4ò&ÎEª¨@@rЗ „½ÑIȶ¹‹HÑÇ2èYC]Èrâݸxœ×¾cÛví¦”Ž>¾öÛ~ ?yÝ·àßÖ$ª›X‡ªjþ©‰$«ÈžOBÕL¦'E +;ÀÝ$™…)‰BmçnÆuË~·MŽê8±TI함\‡ÿË)ìjHŠ“¬Ÿ.j/_éeØJ¢D÷;¡|ð½eŠw½C$ÖMW!ìõÓ¢1ùÜíMcoîŽL{IÛg9ÕpK*R‰ ˜/m‘4RèVv a'€[ÞXGXc&Bn!½v"UK_·ÛاÛ4©nB¦#Í™['BÇ Z¡Ê©’ð¦HÇê2T!{* ‡çã ¿9üg|›’™M[fÐmý0™ké#&UÅï°lEîBË”`È®@'ÎpòùÆ<1%¢fd^ú¸˜k¢çÙg³ê&a¢Z?™ØÉ‘tšq°AQÝ1"[¥fðc•zY[¡³2Å»ÐºÌØâ Ü`q!çh¦µ¢î•ûNgËåÙÜS|ý E5ÒtŸ––'œ™ré»Iaø m6¿jÞØUe±\ äêɱÐýÉ$JJòo7Œú ƒ"‡—Ü +‰Ly²`i~ô載8<òÿÆÔ{!nWèï8¶[æÛ +øÒåKö=¤Aj+Ýo™ r¾«÷ô 6»­ØÆïKJb ú†“úJù9:í±ŒÀò£Š³Çæ`îJÃõY C–Þ{1Æ^j/žú)ëÔx [hnÜ-L¬Ò|LbH}S<-ZÂ1R¡vîžN}4>aÒžbî_Öp¿ÔGIÁÊ½Ž‘±ÎÓÒÊØšÔQ ÐÃ=°j°¹ÐÓÙ_‡š# áä’©YëÎ6wtŸ-:–mßò(«Š¼…„çæÕÅ;KvB1û`9A&Xÿïb#Pc?1â†ÙU ÅõŠt²…sîÈ`ƒWÔv‰¸ø¶´»VQ]h'â@\¾¡bdFÁ½2‡†ç¼oZ©Å«¿L…ð¿€Æz-¦ÓßMNÞHE-ôÕúùáø +™õqPëé×`êViñ•UÖ)nÒÄ*x­Ã±K¾ #f„0> YöÑèû»—›´ÜNÃfú2 u[pÄÌÅ¢Ýö!¯«î ï–¯ó£ÍçR˜°á‹Mqþ‡máEœhB …1dqúSôCÅI$µU’ðìï°•1Oc„Î7Ìò9wVô<+²Ö™á™‹‚•¼8ɲ"þ3Œ®+iñKõ#4„Ü DVmáÓP@ òš¾a yÄBàï²MwŠ­›1Ê4=€ìh¼ ¬‚öùeÛfÝqyxÓÅݨ¡¼2®á 'o8QkwÏéúQ@4Ë^wÛ×+Â'>â+DBà ë¨ùœ2~ÔÑRK ©|#u7'ÐrÌ%4 ‚.›t¯„wû&/ó5æ`×EÖÇ5ìnzŽÞ) ìénœƒ ޳ìÂÇŠëóÌt·(áýýI!én*»çÜÍ9ÌË.üÞõJq~v ‹·p¾}¡»áÍÙ•h7HÚPmcù?òœd‘Hž|„mK–o~{¬q{¼¡±c³Ð´½':ü­iææZt¯8ÃlDz¥—'ï0^…æ6Üþ‹K”ò"+Õ6AåªÚïl¬xËxÁ Q¢Bõ€ÅV‹%h[F~k{^½¼xèÙPÛ¿sûäK•µFÛ§/·ŸCð2ÚÙ.ži)íIÈq"¤t!y–éw"\`¢²¶¸‘G‰#ÖMXyC±nåˆv¦™\YΊüAfC¤ª²â Ó‘kCÈÜJò3Kéyk‹Á6G[s;¶ÛðìvdFÛ³´£a…é¨¯í ¶åÌâTÞ,5žøpž‚ ˆMó9Ô™ÀÍ“~”‰–ÝõÈ=³\ýÒɼÙûKêÑ!kGKù.ÉeY"Š›dlœÕ3 }$P·!d +Ç‹]Œz4üÕݹ-EŒNè?_ó­fiMqÀd5tp Ý±jL‡à£HÎ÷Ü´-s‚$ŒEHJ›#NOD{È|^>H®åº¦Œ×`‰$Ú¥wÞK²JúñêH¾R ®^bgöç.ê™é·Å|²Š˜ëÛÝA\õ"‰Ñ’$µFNo k2…WfùSÀûeèNæÁÐ@Uw·ê#¢ð +­_“ÜPÅ5¤‰dFòt7ZÙ'Š€MÒˆîò¦È5«FˆvN¨FPöO¬ÿÖ+·å¥ôÒkA$h…Þv€BÒ+h¤¨ëÆRWµK›œzÄo+ÕDƒ?Êçûéo²±GpîÏuy1NÑÇ6°eš…Sðý,Z% +Õ–cû©ˆ²§€è{õ0uð ²k£.ט¬ÎÉ?AêúK³3Rn¨#Ýæè k¤)`cc¥(öEÔ £ÞˆWIÐ ý[ÖFí¯ EŒÁ#Ïö²ÿ éCâ{O†—¬QQ½Ru  ‰ƒÏœtsÄV¶ŽÅ]íÛ•{y±FB®"Þ»M•ø` ·º}>’]€òTúHýI36ÝôßCØÈŽÐw +v4uOÞýNY’… sUà\‘aMDŽßO±á„Ò™‘×AÜdÚdEûôÄD/™¥Ô_'ãp I•R2<ÝÝ%åè„Áoî8¡— ¥HH8WÒÌ]üˆÂ@‘扸âdBR,Âm³¯­¢§²wœ´í*¯Ó_ŠL|‹±‡ÌÔLM–´!Ùßÿ”ÌHËèjuI›~?Áª[]œC·~.MK‹ìa;Tm:Wƒ˜nëqO|ûxÅz¥=´z˜¦jyf5—ë„èf„·¡gg€(Ô¥t¤&Ïú§, &f–Šõ~]ÏŽhiáu¬ÚJ¿MÕ~¨¥¤7.R-YrkO$}^[ +ö{žùnO·‚68ää<}¼í9›-SÁ’žýO,Û çS@ÄŠ‰gû¯î°µO…pâyæaG*ØÁ¦·ë\A|l›ÌÉ­¾iZ—ðšù.ªÃt ¢jHÌõJ‹%ÆŠ×uÌP‡ÚÙžöàš1GбžVÅÚ>\‘lsAå}Ô+Ä›ãcÚ^V©_ñê`K¿)'íW{R¢Ï÷wy^*kð©¶ß•Ķړ­z±ž'ðH+>Åc'M ÀþïB²íUá·T˜›Å…ERøžËÙp H‰üSw‡©ÊŽënnwðÓì^¼“3¢t/w- 5Wõ%~¼Óãº0ÛoØc T&›GôFÕNj,~aÏ«F¾áš„µ1;—“—,ÇŒÄpô‡Èã·/„ΫøñÅ«UWÒÄsÀ˜¤†½ÞÑ™5Æ Ã’ŸÇwvGÀŒC+vúyZ(¥¨d{ëïJ}EÈ2)óg+KïCœK8F’c¼æl~YAíhæ¾¹‘œ>.è0  1&µqêI8tKàÙ©ãef|_ÙBƒÔ…Íq~Þhõ‡Êr­œãªfæø­‘}§f0L+v¹ ;{©e×!Ⳬü S}naÜ.ø•³x’Õû­wGå-1ÚQò.ÐjÙ¾MÄÓ)©gŒÂ¦Ã°«Çö4nt•% )ÿFš——ÿíºß`”u·Q¤Úwl6Ýça˜í5ûL%ôgàî4¤ˆïi•ñ©!­ßY^ê‘r?z•¼ò ¦ã«‚ ˆNð +â¾oxÂÏ%ùV<¡ÅéFÒ9¸*çãAÄ®O²y\¬A!)žØ?®Â…kdT»ˆk=¨,tOg¡¹åº˜OÈÜ!¤âÉM)3{YdÚ‰í±³öÖ5–S/¤PAˆ+HÍ'//g»ö¦ç5.#üM #1‡ìüm‚]#“€ Àðżݵì$-Ø«0¬Œ’ý‚h¦<¥€ho¡NhOä›$fQÜØ΅ŒI´8j¼’ZÝQÆ~ T=:ÖNcKùà<¸ä‰—Y £Yž„S7Ö(ɆÁ˜`Ø×FË>z`Å “ìÌezæŒ hqLKƒÆÜÉÙ´²¾dÆDhèÍÌÇÍBÊŽ+,£HÑ tË!3VgÝÉ8%Ž…•l„åãº"0DKÀJ;ïG_®ãUïIOP¬µˆÅRqhP|žL:=’Éuà46ç)ã|Ö¹ÄÙE¤M 7¦™c )†Ê›¢Ém¹déMò4+6 ßpñ6½~ÐY·œÙýÖÒÅm<]ªá ¸°ê—]»[ÒdîÈàOˆäÇv#ð;£bj²ö h5ññ¨ˆpV›<—3:ÐxÚø§AO„a&ÓÉX§è™A¬7ûÆ“cõ,Cš²KU{$rÕ{Œyžãá˜|yzüênírNCzfkOô}gÝ4œ¡Âbj¿äõš*¿‘iE›ùUHŠœÊ“1©˜}nÕ¢6ÀýÀ=ÔY`|¹ZW!7ç h«‘lQ§Í{Äžœ#Þmº{—˜1P€²’'SÅvy8ºÊmÌj‡òb™Ýç hš 6`lò €˜€25úœ«‘ª8¾TêºR¾IDþ¤ÐyÑçÊ.Aåâ2uÑíC±ö4”®_ªñSŒº$1CTíéWK^´¤Éï¿:d ûÓ’Ÿtt/©«äJ©þsÞr$~skþ¸lgŸ7L®¼éG¾?JÕÃYF×k4t ½ b»†é8‹’'˜G îÁÅ;‚Ù²oîÍï „€ºÔ@ nùgݘã—GöB¢`Ce0³o0ÉΊ„¨eCU{ Qõ·c‡~²£ú8°ƒ1i§ª}ŒNÕÎÜ*sÌö^Ô°U‘»Á=ž^©’§oޏRžŒ²SŸ[¤o˲R.w…HH¬¿²–0´€îO²Ýî +Ým˜ÿ”~Y²;æP€¨Æf¬ ´:Üò€¾òÖxO»øäÛBËL!бW +͹Æl[§÷=ðÄ©*­z8­ JÌ âfù@²ŠPGHÿ+( CÖGO«Ð‘z†úðä¼_ºÍ'ˆóô¿³ÿUBÑßfWÀ3a r{H=®š!pµˆK[¢u€¸È‰ _,ìKåÁv*3oZZÝ®©0•02ø]ÍòkÔÑfàÁ‡8*#½—Ýì±&ù +BÚ^LíääÅè$ {H3Z‚{Ò:$Á]°ý̈¬6ç´+VA¢UUôÌ=ÉÍBî¾ïÜS€µØþ·¬9Qm¥ójœ7+\Y×ÜäßXƒ!b-¸T©/þÍ•¯ä¸T¥€ í"ü+dÃè_´-ùÍY¬qx%ôﺧèñÈMnsÓÞ½ tÊðïû€1¾`Þbn +¶ñUÃä™›âA&ÔìÿÖÄРNG ”vÖ¿u»Jüö+¿<’PmýKÿ)•ãKü[+‰ù )ëá_¾Ã|Ëu墈ùHé]Ö¿KËŒJÿªÕ +Y»e«¬„–­jB'[Žüжœ`a‘®pvK6­é¨Ž§ã¹V· õ}ŽÆ¤äUÕW6ý`@ûØj" V¾1C»B(²_I~Á¯rËa@ö±E(ŠU®T<–g›“ʼ`Ïâþ¥59¾NsjÑÿ2Ôÿr~ûí"ÎÂc'Ž,SUTÅ⛒£Œ1Zfš’è”´ÌŽçú‹Æj­îC§b-êb¸ìUË{:øN9ÀÖ`¥°+NxQIŒT¥‚±™,tUOØ,®A¼§!­}4=ú§ìfy/“¶Ðèǯ·ö¶q“¯Ó_Qàh\ÝÒ,¨‹Øù­H4¸QQJÂŽÔ”U}d•@5Ø3¡œr)W/Àõ–ÌÜmº"Ù(a¦ -ÐDsº·…좊P ß z€ˆˆf£àO+e!f…‡ŠÈ?Ÿ½l\dŸÌt ¸¦ÂëíUŒ¢¤þ…Šm[p©é¬aºcPÈjhY¾›¡/õ€ç+õ|óè˜ñÁW–y_ãM•~Ï!Æm²˜ÔkÄn‰èåkÌ!6xªÚ¾l³†zy¨Â²ÔëtÿÅ2Ô«ÜRïÝkµC ãçþ–h©÷KQa¨7v•½Æ³õfÁ©’y;ÛI½8‚SSÊQÀà "©7îc1.4Šml…¿öhz™ªHÖ2lj+ +iwU˪s¨‚Ù­€[ÉrÓ €0¹r°²@"˨ôäV +½›3Á¦xûªÊú@ +Q|4Ù¸#(!&„º ‰ˆ?ÅPì£ùŸÏæW¼ë¨1“ÜsÌó$”¶Š‡ÆçqúG™Í¼“VMaÆ._M[\Š‹Øò™²ì­…bb‚¯ðíi¢˜vâ=ß‹~Übr°y÷Â4ëQ>kÉßq/8ǯŰ—ØŒR؆¯à²Ep t³Çà\+É~+ÒT^…,;æ÷D¸•&ëR.ä•q…»Ácç’f(ç¶B uQÿ)Ó¦² è$³ÿñ¨µ—º[¥†K›ƪ84ËÕÜ|‡ ΡÚ3ñYÕ+M»Á Òö®Íª×¡›h„‹©È«Þi„N,Ve²‘Ì+g˜mÕpvõš¸@•µ‚ƒ™±—8P,À‹+uád~®oóä«78{kô pÀ™´^õ*~T"¿z¹‹È©œé6^½!É@·ªöž½…j3Œ*•Œ˜ Á;ZfXYØëd¤*¬ðŠÀ9«ïﱨ¸?'õ/Ô;á—…WWè¿{ “q³Þ`èQßlky㣅w +Á()âuŽšÃc‰d·?·!4d¼Á°¤š›”Ŧéé#ämXn¹^)ÜRnS†0ÍÞ˜¾­±BÙõhì.×ï„Vx”îº_}«´Iç Gù˜Ù*Æ©¨¢bËp[@M¼°rDøò•×@ßç‚)7º³ë üðGE°Ça*ÁõÿÞ1r%uižôË÷8Ø‹¤Æë* 5!?‹€>Ö BÞªKÞ…ö³%  }B+…Áš \,ëXq†øØ …$¹õKœM±eîpµw×ðXÑB˜j0ú=Y¾ «p §KÂ,ÿ\ˆ±aÙ3 tü„”ˆw­Ê£°äe‡ðË KeË)†ß8ÞÝÌÎÌÈÞ]ÑĈ÷NKV*";2–¿»„²ÓpÛ[ñ»;CZÝQ8ˆó +\§TÈ¥y4ñn„X×i|7àÝÕ£ÿq4;eï®ìw5 ü`DÞw×X„N×V¼ë^D_ƺãÝÄèªTfLñîf+ïé:‰&€ ÇA ÃÓØ—ÒåÛ £&JqvoP^t±®ÇíÁýO\±Ë¥ÆütÜd3)”l讇¹YïJ8r…~ÝYZ:+Ë´ÇÕ7íR¦Y¡¡Äž³™#Ž&ÇÌ Sð"xò¥-RŠÅ’€· +(m›u[_bV²YêǾsï\Rxj@žŠ|“¦ŒòC¼ø‹ }ºo_—O0>¸dS˜š›H¹RãÝHÃèÁ¨`;Œq8²D%`I§Q‡˜¤Ç`¼,,  ‚ç–=²á´e÷e]é%±ïuu÷Ãâ>Ëmþçâp0ÇT¤ÍÕ‡­– f"ñìÕ7ÃŒ-ó§ÃoL¨…ŸU%nyb¡;ûp|*+§€/†5x²(³x……è˜óŠ?Ù W¸fwÙVÐä@ F)í¨Ê±ºR¨P]Þ`E{îäéw'£ŽL:'™¡Z¿´zùLò‘ªõaœ Œ, ìž«ÿ¬Š˜|Ø•üÇ“~w(ªÖej”`%>ÙÌåq?/ÍIÝNÔŽ þÇü­xÊý^àFàôíNE—&©¶_H b£Ò*‘ÂÅüŸ¼ ¾Æ^24gÚ0êBzIxx +‚BÜED)ä}É»cࢹ 8»r¡¸EGø";¨©å6¼JãʸPänà3mP¿¤ØâC€úž{; ^²ó,®-2¼&ÞZqˆõkB)*N]æBݱȋâ˜Äî2›éŒãûlvkè®·I¶¨îuËZ½%”EðR­1RŒzý@5Ò6£“ÝÿÒjRaûG7{ñ­•âè¢þ*¡F^'”[M'­_=)磋Ñû(s>ºÿ$ħhŠ”×Ýb—È=‹®©o«Ž®gŠ(ºú:ºGd™²E7~Tϰ:Ô?aÌGØð|õóØ6.Ý­,ðÐ#Á}£ 32ú.Iç’ý‡’mFˆß‹!Óú¤É+Ñ…µe§8íÃxÿ+™3àC¹xò¡D¶ô`b°Nu—¿˜¶=˜ý²«R`ÂΕ¦ß&?_X—á‹&š8>ÄYŠcQ@IÚcq„ÊžÑÎ<Šþ„üŪÝñ~| p?‹ä‘@rÖîç¾""«ÁMÚƒÅü-Ji E;ý‡Ôt–uDån8Õî.¡Æ]DaœM.M¼£÷AnÀ¢¸õŸ [Uè +g9I™‰|ë‹Ä¢‰Û‹¹¦-Õ³Øp“ÍÑð1ah³5˜èñhÄ~ÌHvQÛ×Þyï“X•ÂA_x™ õ•am¹íÍÄY …R˜U~(V¿“5ÐQæ°¼MGð„OÇñ‡Àß*ô›Lˆlùæ°vÛî +c.ÛtM»9ëºR\x/ñë¨Ù‡ÉœQª©j…—î +±œY±àh¦ˆ¯FÿáßÄ=ýº$vmÏ+ ååónéfw²±×“Õ¦1„}0ï{|œÃcÁ6È«lž6çZ䓱-À§€;êøslg1Þ€ÕL +›6-}ÝÂWKaUÁ˜ +¶ÓÕµòH‡°üÍ\¥ê‘ ðL¨nºrº‹1“kñ`P[_<ÏåJø³ª(å‚ľã[ó€˜iy>y÷4|¥ù=â!ï>û ¨M6ŒÚ˜ì¯‹rL:.%{’ÊÙ­¼_—!ÅUÆiï‘°¤É&®¶û…EÛqì÷Ìnñì"#¼1eŸ;E±Ã ŽåüºÍK²¦ÄQÑ Uxs˜ÁíŒv«› ¦]˜w‚Ãm™ýÛ0* va`–|®¾ÏÑöFDdÃ`I·Å4[Ñ`õ¿/†/zO(0íc+àPÒï¡üo[øÑÛ3“»Û2ÏjüEÜ`ÐÒøÜ«öõ>ÙÅÍ}ÔnX{U Å"nú +Ö Æâ*Æ`T׎h±þëÔî¹ ¤¶ñÚÜ8/Hùp¤‘Ýo|Â<×QfÄѬuøFœ–½XPr t ‡µ~8É̈˜Tzdƒå^ÄýxrÄé•÷pJ¸;Œ/}{‰-™æ€,wŠOe·Är[›žk³ì\è{EmžXpG´Éã—œTA0ÀUß©†…ÄŸvÖ8^ÿçÕL,„s²wVß÷-1Ôâ°#/ûºKQ¥ ˆ=0½®1ÅkìÄFª4ãÌûãRyñ8O¯_ˆó}8‡d¢³À°=“cˆ÷=I6ìËhm4åȼTcä +ø¼‚œyß«) +ýǃ¼In³tS‹ä-_MGuÊ¿HU)2æ…[ÉÕ¤Ã1׹Ɯ“>¢³¥ 'WÒ²ÞÉÕð±ºCüœÖÜ}ß'k¾ŸùÌðs„ùóù¢U†ƒÍŒ »px*A+÷®Þ$Ÿ7xAz–õ„ñ³ß4½¦Å¾þ<ãÄ6™j«Hùh=XI~x"Ûˆíˆ$”hƒÉ_/€uU=ûÛnôª\ëíÜã²]á\yÎPº3Î.õÈÌ1Þî¼*Êʨ:;ýÄ p™ƒCugdÆïØI8¿(êѲlOà]æY”ÇðpÒôQÅ4‘C}—~æ°£ZPþÿu±îí‘ÀOÍ[o+Ya&Ý•ú°æýC’ðòº½(ÜnB{2Ì’3@[fÇøc3›yANI—Ä£øé²ÓصÑN½4û¤Ù°ÂÛqúhŽÞIwÑ1ÛÐЯŒKVõ ‰ÔÑ´C)Öø¹:ÍCݵòÿÃÁ¾D›½Q̓ Šíã‘è=¤J¼g}NK‹gϲ>&…‘Š®n°ŸËõ§ Fó{K"ÈÈýY|I»ZÐ ·ú²œjò .(ºµª7Ø|&Æ)È5èÄ‘ g£ÍðáþA™ö¦ý¥' G»À×óˆ(‘­ús¿¥ûlÁèâ5è­%ôðÍÍ7I_Vw;ˆ…NŒe)È»0®5É©úŠò+!©O@`°§±‘€ö>F†Ía—‰m“~lZ¦®E¥_:%ìTæYpÁް¦†:‚m–¥ò Y^á®z…/Ág üñ^ÍKð¡¥¾Õö´W‚O÷²BšMFeNð=DªfuB Ú—‰å<›É<µ>Wõçd«=½›|(Žeƒƒß%=È +ËÎǤÙ3dÊÌÂyáÂRV¤v5ÜMM&®­¨6ï˜âl§º¨÷Ç{£÷±=&a4Â*9 +¤ÀiV ëñ)ÞH‡zXÆmÜ¢X¯ï$ {XÈ­Ó â\ñrÚÙÅ­7ɉy4ðDiç·FÃV˜â6!×PÒn°:(øÏ5ÉÀ‹ Sj¬·w´‚ªÛÊ;¾ãâ>ùÑ&o>¹AõLLlS×4;n|<~¢ä•5áiÇ\l§àf]úથãÿ•çÉ=Ù…PYáR:MB´å¯ÑÊ¢æÊOb4ÂxWûHLò¿éšª,Ãbµ’+\„Þ(ýxÂûtþj0)]m»™ƒI]— +)uxªxL†`)Uí–$eIt‡-¦ÆÀaf»¯_•¬°­<ð€ÇÏÈà×Ì3¥•›$él~D°?š#ÿ3rG0?‘I´Qá#êF([NÏ…_”ñ0裫ït(5‘=Ìûêœì¶d+Ü_Õ—b3*žª]_Œó—™xMòašBK7„ØoÄÎøDF(£ø’ BùŽZB»ùpÒ”‡3 £m]¸œf¹9Ð¥Á»²Oû‚’mCw†&™TMº®C”‚Dzë³ +Ò aô‰ð7!«MŒ¨éHQ®|[‘i•£šíQ1 Œ=–È­ë¨FˬlLil+ ÐjøÊZ¬uþº‘ËÒjÛ'‰º‡Tý^m~{sŽ¥¨ŠýÖ(áïŒÆËádIu/J¤7I tŠÿ¤…µY@s§Qæì Ró箢 L¹•#Ùþ!¤#Õx$ +Ÿ°¤Vv=–•g‹†E›x¥SþÏ,h²8và‘뉋fj[ÈE¹í¼j F^à.Óo¸÷½0ñç–FÌ¢HýÀ S3ø¥ïŸR ¢¾u*£\©Ÿ8e‘ÎÈ£ÅÿÙ}{òÓlÒ‚²ÊH,Ì ¹Ö†˜Ãä3ëaô±÷/(;ȅש!%?}"Ä=kÐXNÑoW€Ú8¨FÍÔ°à(I˜(B$ð?¢MfYlÕ»9õ𬢻’,¥<®¢EwäñW¡àíO™!ºGõz|mŠN»=`0ôöLØC½!-T¸Üº¬Ÿ0Ú B|𼃹 A0hMÝ*!EoT/ÏlFýc·óÌh§ÿY¨·{S=F}¬hP‡zá–¦Î×Df¥—…"íˆy¡§T¼}ŠþUÕ#΋8N<Šüî}ýùêbþ‹o•_yw–q?ˆ•ß1=þF¯f~‡ÐÖƒ‘†M.£Ðmt”Ä=^Í“eÐýÃæ Âcו!s!‚ÀÖÉE³öÈB&‡Ÿ `‡n6.£iv &k­÷ÁæÍWÛtêäé 'm°”4C2ÂætÍØAµ6UôöDN“U;‡(ͱ¶±Šc›LŠœ»ñ~Œ",ÝE2ºà¶øÌiÌù‚;Åò?ð¡C,®T¯å¶ÍtôA\™ú(Zã~SVëUGé·IrKœ„BÀËë~Rš”tÁ-Á ú‡ßÜëÞnÔjÔÄÊ$“>uÉöT—sè—Ä*A¸›w¤!èoKÈXw`°·ð>Ñ 1¸~äﯦ-OPP¼0Œçȸ9`ë›êƒÎ&÷é;‘ù|¦å3[· ¢ o|cW!пM|C̲’.|VjÓô¨Û,^Ë<ê*›}™ ÷Ÿ—1,˜Ê +o$Ì1ˆx5Çz·rB^PY`aÔIWm‚ (q'³ÿ‰þÀ /Mî*ß(c¨²yŒPDž×1—Dh$–>jýÌq$ wc“ Ú²_'4u»``”6 –9Q#+Ô…:㹑 íÇu¢S¬G*†W͆ФN…Êð²wšÜ +s³Zá)ȯlBº›/X¤šiÜi œ¦™P=!߃SnµÖŒÊÐ(ÆhÀº+nAï(Èðoˆ(­O±‡|IzîÚJ+öO>Qb‡h÷ûûøQ¡§/ îçUµÅíò²ßzð,±Hå½ìØÀ +¼04{@”LV¿ˆÕè座£ Ï +îs¿ã\ä«7î7éÂáÒx ÌGaÁûŒ(Ùœ›âÏ,£šU9<½Gœ^œ¤¼ªþS + S· ‰Ù•‹ÆG8ÅF?I²R\ñGÄÀHs4§úç ù-}þ]*Nº=X +´-©ÄŸÀÿ[· »íÕ¦ã6 >.ÍåÌ¢³Œ–00@EÇi¡¿Ç­ÒEù(.~×ùŒ·ÕìHh)½ÛÂ}’r¬Œp!ˆ›e‚rÄÉœ"Q'ÄŒEØüïd—¥kßI®Ûˆ=†pýV±FáD¦D õr¦x8¶Û‚Â9Ý^7žÞŒoYDF7r'¸S¨Ä3½MÿíKß`RYÿµØªØ<\|ÅŠc.Jz) +~GÎıö+<ãÅâ \‘ö +&Þ"®5[Võñ’Š3¨A°W¦Úßbþü-Ž\ NþF&®çã ¸«µ\pºÑ_t~ˆœ’øg#Xênˆï‚‰j=H©­f×nÍt"úCL–=ê©‘B"¥OÈ3VŸÜmû+,¦"RT€=‘cãZ Ea'ô¬oÁ Þ@*²Í˜„9|bc]Hƒæ*oÈ®Q‰ÁíCfóû\[ÛmiÓÎ1R¶áȆ JÚ«JH§,FÉ%ÊÄCÒêÆ‰ªúL—¿¿ÐÙ½iß*AJ=gX×Ö[}ò:Cö‡²rÍÖ÷ªO.<ùÍÈ ŠÈ™ùÿ«qÍkÝšÝeN‡r½±ÍÐ…þ£†)ØçÙN—ÿ¯•2¦¢–¡ÅrgÙ»ø²8³2·«Áªý¶TÜ*hÀüb€Ž̹Ëâ~¤NìiŽåÝ¿u9¶Y,ï¯ v³kðÀÆ×R—º¼èåS—f–£uE»°æ×~ðiT—ÿ¹ðBcíA5è!¥˜'ûÍÂVsí ¹î‚¿-7ô)çcÂÓ¿Ð’Ÿ‘³œ‰?¹³b¼%~P˜Žz/ó¾y³N<ð^•;w,­4\Xq/Zö³î{ã@TüЦ¢4n?êJéå*#é¾…/mmF¯GóÀjH¨W¬Ú뵑à,$ŽîŠ™^ +À+‰~ñ÷¯ÔZÊP£„œzçlœ #ûAæùéჄjl+ ÉÌð[ØŒÁ¢ßŒ×dPE k¯:…ÁX!ˆ$Há +¹ß™ —y t8g±…µ^šç]êª ú;«@™½HÆÓ¦¦ßÐÁéÕ5°$çÇ›Õ0¶4 ¾åÌ2»+`Œ•Ÿ)[<Äè ½òšÀ’Ó…R }ÙÉ*ŸCl¤YøãÜÃE;ô¯CŠãüØØ`Jtñ-m Å¦Tœ6 +¿4aat$|]‚†ùÃýzØœƒôj˜¸x$Y°þæÄ4زcà‹ìùr47XŒƒ7…YI‘뤿PùÀMÁSRÁÆñéMû–À_P54 –©1~ZI ýƒeÉPäBtÄÝÀ8¥¾ÜÖ’€,C IRib+N⨭á/1ü±Ÿy^¹<ê.ìƒIÕ¬ßÄkÄwvæñ+ìO8ócši×ËèƒO¯ü¡aŠnIÓcÄßø> àÜpißpç-],mcå9‡ Rë°t$!5“JžZ®øx­‡É¶@0á)Òx|G·H¦­““.ÿª„JòH‡gk®ù³ñoSèßÌ.smEo)¤p¡A°…½ºÏ !÷&U +0çs—Ϋˣ`œÎ5Ñ=;°§•nÏÕ•­lPô^ÆoÓð:ž’ âŠýý%¼ôxÈU;|[ãÁJ ôwѼ ¿˜…#1Öú"½×L"v£±·et[ì·úé²Ú¸g1ŒÙ¦«€„XƒY ’Ž—ˆ`XŒjÆBÌ“·—q1ÿb_kXíSЂ9ÝÊ` ÓÛu@³™2h½‡Á=®­£^w uÆXÍz½¸îUB+ò¨v}1MòÎç ;@@cƒ6F§˜‘n7n¬§…QVï™}%Õïò1kÔÊq$ƒ°fñ]íMþég’N@ 7(Ø·¥~Ïœz´ã…Œ’ë† "4&”H@¿×rcÙ­É­¿*6G¢Ý5ÄÞªsÊJÿH×ÿm~¯‰$ðв.›½gÂdÝAÈö–…•TíÝ®9 +’cÿ•fíµºàÌBÞ-–ø_™_s,%Kh57vv` …pÒªU/`ÝSÅõ¢E¬ÈKfé,fà h­}_M.%‘_û¶‹7àg«M·3¤›ÌGZö¯·-D$éÆC˜©ß—¹1»ˆyEìLw_‹ Û½wEDDªJÓ¢kÍ"€ 2 ; à úá±e¡’„£A'PXàª"Ú…IH©›|¼b^KÓ°1`#3!Ù˜(°ýw‘­ä~A/`B[ö®!ê´X"ld`àhHÌÌnY æ +ŸˆI%ôéC”2˜dãÌŒE…’­IbPÁ„Ò™†ÊKG* +sÞ’` BéhбÌN{P<1Š0eðo …$`¬é¾l¿`}dHˆ +÷àÂJ*¡{Ëà„Ò%.m¼oÀÔIˆBRޤİ/$AÀÅ&ÒVúx ñ` U¨!„0-ñ¡àðF6¶Ä}bÞ€‰ƒÈj·ì`ÄáñP”F,xÀFf‚ÑŸfR© ¨˜& Z‘òˆV£Ú¼ÔÓÁ[f°XÇ'Ùio‚²0ƒhˆvÆf×5>ØXç.‰7ôFf50‘ÄjA7¡ÊKCÕF¼28 +«õFJ¶fÏÂf’™Ù‘÷±Ñý„€j½ÐÄ‚b`+¤áÉ,ç¡tú£Ò|Xçö±Ña AÆH4J”&xNÀ€0 ¡¢à¡b˜íŽ@_@°¯7ì¡&`]è)ýo Aís¢Eà`ƒ(ƒ:”ÞŽÄfv;K†!FéˆPùTdƈÀ€A]À¢Ôâk££8˜æ§¡Â  +0XÂ=¥uaJ_$"¾6m““‚`Xì7YqLDf³±ÇãÛ²’ƒ…Õ0T >‰ CEÇZS”Y“é¥(ãëOLEÞ«Ô…T›Ù“($å}¬>N0C±Ňåq¶Œ¡s¡ô("2D|-š—G›àyX×@aÊàÆKG#š… ÄK5bb˶ÌOª i\döÂx>@¥DËq–-ˆ/Ô7Š@ØíWê[°°xOä±r/ÆRê<#‘µñEp¯$»ƒÇ¶œ<… TG2)Ëû8y#5}š¦/µÁ¯Ô§ã`œ8˜ + ÐłдÚ¹I‰F•'³S†aË`‚”2¸aÀ¬ãØ>¸McR[¶eP’Yƒý­@¥Ö]º-ÛlžÌJ ØÈLH1fbÑŸf‚14°^X0E…ç²¼Š#$! Ñ:„D‡+8¬ëº—$OÃ1Ä/Æ"•º‚‘¡.茖ƒ"eö¡"ÚJAEÔF¢ÍÆt!Z‡ËW!-p\Ê`xÄ‘áÓ²Ú‰'àbŒÒ¢AðÐAˆB=ÙT°vËäz£V""Ôe“è”7©—Z"GsB°x‡k€«d’Jè +L•ˆPZ$ ‚‚«hDа6ÁÃu¦hAG  )³!”ÄÀìtçpℨ8¤„Æ,`tXPD0 +.Ÿ€j•DÖ¡~¡€E «­XLHÍHc“ÙƒGÔY:ËeË(!!•BéÓ€¶oË&V%¡ÞZ¨ÏãA€­I(!¥ÎÅñ÷™¾ù “é6 ‘å¡€/®Re Ò@z©&D»ì i%`°†ÈÔ‰T\¬ÖcCÀÉë\Z&`¸0(…¤%ÈPŠ + F¨¢uZHb$I´*)Îéô+ÝwY""¾-«Œ>WÃè/Ûh;¤f @™. FHi¬vd@б?Р8×-ª@<0„ïtN@fÅsK%ô–54üfQê0›ïÔÀtÉ`Ïæc¸°n™ªcðÁ+¥èO3Y(è4¥Ì$£­ÊÄ‚ù8u.#Nƒ…Ò¡ +¬‹•TBs ‹¬ãö¥ ¦Jw*@R¢íB&°ÏáA!~ ­(‚1PúH+‚‡5B±V€""³¨ÃÂ$1‹÷<¼Ó‚‚ˆNÞÆ ³÷Qê +0mX]<¾“‚G‹·ìÁC3;áH˜Dd0‚B‹dA;£ô–Íø$µ.VmY¨u±Z‰-ûLŒp•ÿ.»e[öAp9)Ám· +9y¡No‰-¦¯#T­IM]©+´¡di/ž“Gˆ¥'%ÏáuRûR‘€)¦Û·•¾„RWÊ@Ø Ðy/‚7KÁ ”É–mÙµe#›”f˶¬`û(B(!ÞÆmd–rñRRˆITžLpLg ñ*(0è%Bé -ð8Ú +…;dF…A¼RÇP2±ñL Øø2&›LJ=#=ˆ8Èà-óB{@s0'„Î0ä`dÆ„À‰UXô2c… Ñ¢`»—ˆ§PP±µÂ%Õ `m©äÅïS€b-¹<|[&0²€€±Œ me³À!!¥nËbÓé.âÑ("ƒ <«™˜¾ŠÓÈ­æ%Ú2Ó‡ì´wAz)¥d|<-hñ¸×FçPÒm´¥¿ >ì™\¾¾Ø¼ÔÀ‹aö]+>Œà­h+¯ê´R/õ´¶FHP™â–q\°Á”Êœ> +6vËH°“÷° ¿ol¼ …£ô‰”:1o¢‰¦nÂÀô•lðaËÈËC´J¨CÅÚФõa¶fÈ”l|§vÓÙ0¨Ã2¾uŒ0¸KIL`4V»@ÊÀº5pB§OêëJ¤„ + {#xp¡tB<¹t3R‘,èˆ!ãq4 ße¿I´•§£"YЇ‹ʉ{ð +Jo™ZZ$hG@VËÁD”-­¾Ë–¡4Ó—q¨@}–.¿’=}ý)ìK@'odó*u¨’ÉñBüœ<‹‡‡ ƒSrâë ñ8<‰TfC> Aø(u  ïQ@Œ‘Ø(Èì–M8CÊ,BÌÀº“ŧ"e¶Ó’Ù-‹üAÅ0kÐi¥D+yZ)Ñ¢*D1‰N=¢Gf‚3K`¬,@"€µe}i{J&FSbË&g¸ÿ. òc#*rªÀd(-½`¨\jP °ºe ­§ò +Q|,fC!A@¨A.Xx¤8"" ̈T»¹ˆPº 8Ö.E†ƒQ‘€j/"&“ÑŒÝ-ût"¾vVI¨ôBé‘K·±%0¸Ó0`êN \ˆ÷žÔÁ)ˆ,Òab'‹ü.K@"‚àâ“EÆKðˆØx +  .¹Tl?J]ÉEµ§t1ăBˆW ðy&Û€@Ù<™Ck+§I ƒUäÄÁ|)Of¿)³ŸH23ÛI¡^žÔÊ¥¢ÍêZxãXw±l¶TB{ ‡fD•Ìv0æ2*ˆ¸&P•–>¨‚¡réþwÙ“€SkA“f¸ˆ-hg„âÃ-ƒ æÄ‡u ¦ v8P°ðç‚b­Š(-UHM,èg4A-ÆD…$ÕUxDûUV«ùíg……7›“K·L“ˆQu44 +^ÁÂbË6$ :‰U´ôéèø(>ùú³ ê +B”õX0‰6µ ú bqò8e@ÀlÙ¤ÄõaJ‰6ðW©CqxoËJÍo|bA<žÕp¤ÚŽ­"…¥J+@X¨jU¼Þï¬+ "rVƒ¦ÔÒVK+@xò/éZy -`‰+àKxÅÏ)à¥v%Gºˆ×•,gV@øÀhgxÏ -¨ïdÀ¼H˨–— ذ„ -Zà¢dŸ2!bXîѫΠ·òŒÒ8ýÉO¾XIì„â7q|¯éÈ´Eä”{µLœŲûŽ endstream endobj 24 0 obj [/Indexed/DeviceRGB 255 25 0 R] endobj 25 0 obj <>stream +Ö¢\UAÁÚKÆA6¾6@xXוÍKEaaÔú‚„3zF‹ÒéÏf–?!1 ŽãÄÁø tšS‘ʬ§¢ ¥¢ Ö-‹Qu:"PÀÑÐȬ…)ƒA.x…‚Ñs0 Œ‘Nœ:DV'Ž“xÄA0 +'˜¡-“xX°ðdF! +t5t3$ÆqL t +²Cƒ8ó:q0Ñ¢Eªe`ˆøú¢êT“"­6s‰£µ4*lyÀÄ$:ݲ-Iˆ_ªs(}X"”žP,'OtÒ@u «m|œ¼8f±œ45ax’H…Å#ê” ‰,&/ÙøBTýH] :‰‘ò4@V{੼”Ãe´²ÀÁ_'Ò¨Lž Ì I¤*ùH``>[欉F޾²ßy kM* K X™Ù2 FcÕÞe»X¤8mÇaTÂhIp´[¦!ͨóFÜDã¢Íp"L%% ‰vËbKHG´!-Rq€‘H`d4êÉl‡ ‘Ùx‘‘ËQѦUCÊ,fód–dfÖC3»e™UïâÅ9iË4œ‡ÛKHÁËqé–U\v£áR8‹Ñ3X:”ŠŸLJ24ÛÅ#¶Ièj^ݲ®ëºŒ‘f:Lwê< "‘È •ÍdT[¦Éd2#½d2#]KÆH-œÆ¢ºDxË–u¥–ÁGˆ'àrÑ¢ðìfÕ"˜†ŠF>˜-³(°(‘@( ÁhŒ æ $:Ü•2Õn…¥5€6öÀ!ªÀ¾“„D÷.…B¢Ž€(ÀƒÁ2–†ùxÊÄ»x'”¨Ó‘Öˆ»º ˆHƒ¹ØŽz@V¯B%„CÂAQ(:êFÏÁPp¢åB&A{£ç`B¢ÃDDŒ,þr#\EuËH:&ASN°ŽÀ)¨³e#HÒy'K§òÑ`±áh­@Fç½wàO$C…é…fBJÝæb:¢¤x²9 ´›î¢¢ó"Bá6+—~I§%P(d‘˜g"#äàÏÁ¸F‰Ò¼ÏÁT"&8µxF- ňÄ>MqÁ¬, Šç``‡È;â9˜ˆxÆb±â`4¢‹x¦ó8|X>.à9}1Ñé +xFO- +Œ äáÓ"Á‰ä;$ „FÞ¶-Cx ðŒÆ5&ÁéÀÁÓ)Ö:<#X‚†µR† X›qx†Ãh¬žƒiTÂhMÏÁtH3â( µ\£’™žƒ¹„tDëÉlÇ€!e–c£ Ó…8Ïw +¢PÙ/àž«tŸÉÀð(]TVØ^è˜!ƒ–@Ëc‚(‘…G¢ø”x6ÈF°ïõÀ1Äiâñy¨ vCb¥Ïc ¤Ô=¬2R¦â4Ä´Âaj6ad“á* ž A‡@<ç fR1`#3!) ÀL` Ì A}xDÁÀô4, ò)8y +T§¹TJëñ¼” DbË¢ƒn™©…‘™4ÌR}’ ìÛ2Îå¥"“Š­0¨¤Q`-ÃCê[˜&JWH¬-h†ç-ë(‰pÌÆ–É‚}[f©€¸†ÌG)et&‰åhØd–bU‚} /#˜Ç0 )u%1oYI4Â4åd1}ΖhX˜I(Ä™I;xh& !™‰¥#¡2Ù²‚&iZ Z²@l¼‹ýL]Š$7vá4ñøübm³p†‚ôÌÞ2WÁB¸$æ…AêF[Kfh4°`á‘𡉷 CIç‘L,4ƒb:0½e&…˜·2x´YNÞ%¤ÔU:Èá‘À0=Á§¯ (Í–mç" "¢#ö§) ÀL¶Ìƒ²áâ‚} “ ª€àRà˜Ê½ƒ¡ÔùG{|¬-s(‰mYEa+¤\êaK^Ä%4Üò^EÄK¥÷<“ÏK.X;é>1¤Q°pÇAæCCT~Æ–q4ã`8nËH !™ÉÁ@Áe"F²ñ]¾‡W}Þët8¨®V°Ösp¡tIöu¥¹/5±`Zm™GIzž%3yѰ0†ó@3áÎŲeû’òT˜¾àñ7BZaöâ˜:ÌȈƆ-ÈÆQú.¢• `¦´tË*[v! é<‚‹ÇoYĆªä£)9Z ½âW‰™6žÈ$àä-ÀÉ׆J Xà-Ñ °°ÊÚ2ÓÈgË*Ñ%¡€!Dœëd8%œ˜¡6et(+àå¡\BÆ5ðÙ|>(›ƒØ×Ü(ƒA8š:õˆÞB—âØ£ƒOJb ”> ’h9V®¢û>„;\j@šXP‰k=J˜'"B`êR¢‹¸ÞÈÈȬ€eÄ(N ñ@:ÝÆ + Pð× UD{JAu"BÝÀ Iy(Öš8„Dzy©GÁ‡G> +¦®4#k½ÏK=Ô2è(ƒ±ñ2ð»<|“8±%¡ô ü'æ•`¨n¡ ²vË>£±è ãk +Ç·$—K$ôÑòHd­ÓÔ_fœ|lÙ–m™ôÜR +Of;­O“ÌÌrbÖH²ðRd|ý™: Õv&­­ 6Öx1ÌvF4¢‚Ë××F7ámŠT2@.ÑÂ'‹ŒÌ’|&X‰LÇÚŽ®Ó#JHʃ¨XØXÔ‰%¦!#»¦ÏÔ,`”!ùˆyžF‚…I +NÞ&à€A;b¦Œ‘o™“^:ápƒÄצ°îd¡‚…l2Û€AY&vÀ…ÈsáÙ"׈ë´e8ÕR(} .ŽE :1„=S÷`ª`­IC°Oz•É…xÌd#­ŠdA·,”☺‘Õëä¼Ñr € m 6ré@eC´Ñä㢃¡LP[&ÒLH`´! Sw¬Ö@] ¥.D“SaÈLHtøò%™-‰ dðÇ!Ô ÑŠ&­#[ÇX¥.•Âxo‚pðõ$ŽøÛ˜µñ…`kI6>Þ+ (8y" ¥®àöµˆf)©ˆ¯%\Á·Œd´gä£#`@;-"h}X–¾¯e§MÚÚC1ò4_£*:2õ“f5bÁ£É…KÞmì@‡*Ôã-é ˆCJ˜çpà™:‘RÆj+:ÜÅ!k(Bâ`xoÔjϨpha"Zï¢`áL¬µñE¼‚ÇII½ttùŒhX2™¶ Έ J+ZK¥D°-ÃHq|x4QÀàR°e%.àRK¡ô à‘‘ò:¤Œ©ã<`)/zb.UÀØx$ÎÆ7b!j„‰fË&\“‡ä S”Š?’ ÁÀ¾Ieòõ‰¡{è:52˜O E­öK%xëb„€µ*¢±X.ŸEh·¢Ð”Ö@Œ”G2Q`íä1öy>JæÃ ¦+ÔéPú,± þ`Hû!À|Ï£»ˆ–#¤ê,X+"€é¥¡kI,\¼eœABÀp rt@iÏ +@JF@VÛ‰P°Î!„š€u ß2Õ…h?#šeeЄf+)’hAšË×.aÉ`„X—Áìk "å= px¢RWb 8y! DÊ‹]XbÊ€±œ¼&¦ +#$[Æ8BC?ˇ‚ÃCH­tV ¾LfA' +¦n„Òré$–Y_…PµBØ2M„¨Ã“jU,L”&ðtCÈ¥?. ¯8J_‡H©{Ȉxi€”h >+JoÙ–¥Z¤Õ€8O$áÂÉ×[&J‰LH…ÆjC°¤(ÙøL¯ùÞƒ$ŠC23û)ÖˆBÁÆ>[ÖÀ ñJÓ·eÏ€©{ p(íiZÌð^ˆ·Q𬖠¸pƒèca€_/l¬í€hd6dAé´Hs@éÏ€ þ¨.J€÷ À “ãXñà-Û²ÕÐX‘@­Ñà²ác¸x(%L§ Ð× „£<Ÿ÷…úJ\û „”º±’!jL´˜É¥ D”¥d,'ïk™ºÁÆZ 6}Zñ€àsð¶,B‚!eV”pÉàÏÈÔ™€Ø3ž ¬cˆh8¨°p%bâòßE!å êüHf±X: +'¯ôñB<><€;-è‚cì7 +}”ºO‚…· "L,èˆ#³®’Ù + +„·e#(þHû‰y§ªðD4–%Bi’çð4P‚ᢃ‘lYZÔ≈ têC 74êÃl1}¢KÅÖž÷Qê.%üÅ\ï¥>äh»¬ëï($å ˆ>°Ï»¸¨pÈ{¦®!³û\@LBXØXMüèø,6H˜-ÓIÊabÎ öµ§5Â` `íAÈj'H)ƒdtHb“YŠCÊÕÐi ÄóR l•‘Á šÑ¾ÆÑrH+ZGQX¸`(4± ^HlËfëÃÞÃ:‡ˆÒDY8a‚²l,P°ðwÉlüî;)Rf3;C<Èæ¥$…˜çQp‰!`a…Ù øÐY0<þ>8¥ó !s,Òxfœ<’÷L]i);2‚ír¤Lº(`0ü@ÖT”|8{mt .(Ön*$\‚Q:ý- Þ2ÐÉ‚v"ÒAƒ¸g ƒ>¸-{ÀZÌ„Çß'!2uM,ÔŸÏÆëx°8y[6·Ì‚JL0° ›y×>{$²F"òu«qi¨<“#7ì¨Ì1܇RåNÝ×X~sä =r=³‘•ˆ Ä5Òyf'/lŸs_áÔèËýÍ}ä-z”²¡êr W“rºvœªÜ;öºK®¹³o(Õ!ùÍé2Ôlˆ´sÂ髬ÎérÖ¡µ7ûK>·pµÙqþtÿ¹Pcól®W@óþ쪪ÚÍYIæú4U¨‰±T"3jÿÌ+U¯&lµì¨‰º’šŸíž¬ÒL—k5_ß»å¿X,£«\ójýJ3çÊ5»R¹4ÒáKµ‚Û«Øj±Xõ­V«f6”ù‚®Ù¹Q³®’R²r„„f©h0kIhª"Q}P¡Hà 9+|S[®zñKUk¤jNMl¹\£ëSÓ/•+}ÅJfe´$.Æù yè´ß,£ÀÕòPpu¨2ÚGË#år‰„:M³æj‰|¬`Ã2kœþ;!éùcì¡6ä8ëÐ&Œp}zœ“S Ný]•Þ¿œœ$’¶>Û·åä4ëÐ2”„»F>6R—ì•‘\uº7\îæ ”ÏS67s#Üí÷ÆWè$ígŒ +wÆgÉÉØÃÈëÌSWr ãÔí)ç.·rrln©’û÷ì•y4aô•û;¡÷îÆe¹ÚÊÛp_ù™·ãn\8!Gvù +ö;7s°½{=êK^Ùr9þÙ1Nö~)#ÿGéÍñÆ}oç^jì~!Ç/zŒªß ]F]ér[ʸü½»ër*\ÎNŽ_eÔõ…ïP¥wËç©þ £Nç\Â_çÈíJvé/9îr¬'ŒpúrÿSûm÷ã”Íì]N’Öï ù%Ã}Vè3þOØ¡Íþý}#Œ®>×?=3:KÕu­™}Û}îtV÷-÷!ÇØ¯ ÊŽÛÎì å.{fžïí°ç\Nÿ£·òsÓÿýáœÊéÃ~ŸýBn_ý¡ïäÙ*”Íýÿœ:'Œ—SgÈ’›>µé’ù7¶„ìR÷—Ûw3’÷ÊwWØîÎF8gK73”S7ÂÿéPÆoŸ»¾>W¹¡l¨þQvŒ?·C‹ ~Cv(!ìmnÙþÍÅžÙGS7Tomö\„¬2ê„ý-ý£ë”s_ú\n¿ã܆ʜþüø“åtùÛ%Co%ävÜç¨P*ä /œ’_'½µŸú±îÜ—°!ô_ç)ã\ý)¹ýÖžu™ó)eÔ–QBÎßånË(£·|žeÇíoæþ°at¹†­­ŒquÆfæ¼=FŽ’á|È=l­9JÕ}ß(¹ï©ùÏcO÷‡\„­ý¿î”ËsŸ‹=¡N ¿=r³%œ½0îþä¤Ü÷Öé*Wr+[s}ÉyöKnFÈ:Y6/§?5ÈRê”-á¶Ï +Fç¤KÈ+¥k\æX¶öÚªºSêNúÔœ'Ãæ•q'·r²œ’Wõy¹[[8}ÂwåÈ\l÷¥J÷ö†Rò„«sí—®ݧöÆfõ•ÓžÇW²\†s8ۡΗ,§üwç&Oíç{ŒþP5Îø3Ní….9í)Ý·{%ÿrÝSƒsÎÉò¯rî­ÍmåÈ +ç;÷Ý=µ§³ÎçdÏŒµQÂ^×9[û’ÿå~„r{väþßɵ/KõºR%=:\9ݧ*ä¦k*”úê|®3–Ö=UYÆžqrñ#K•º6ǰ5Ž’Õ]¹’óŸÚúÏ—U>s¶¶ÑåËÖžë\ÿÌ<š».äéPYnÜ©Ðy—ÛŸš¯wkd–/c|•œô)á»ÏÈóY?yúœ™_ÊŽ\Gø!¯êŒÜsvÏŽq~œÊªÜloŸqB¸á„îðr±§öß2N•Ó›¹­ñ»s\Øák+t9™ãodn]Òã­îQ¹èS›ñWaïäW—a”=›“>5~8w¾÷d—eKÝö¹é c3ìÕ^.ÆÖ¾YB%œßÜþÌ>›½2Vdÿ–ÛR¶Êné;ãÔÈÜnKÿ† %ס~lí¸1¶Bm]èͽO-ú²j|WáÇe¸Ê½ÏŒ—²ÏvÎ}j¯êÛ»s¡\2”ýqÿ[]¶rí3ciÝòûwç”’ëoMÂoÕ(¥T ®ÔÕm)%sþ­=܆3ò¯t¨êS£œœ”Boí—ûoÍ™¥lÙë’§TÈYBf,-ÆŸQ_猑‹Ï¬ÿQjŒ’“ßÚäù²ªK…ªñ·ß=Jn~kí ¥|Ÿ½NÊ<GÈŸSØš?tž°£ÎÉÍžÚô}—rJ,¹—eoGøœúœr¥ä9gsë3ëЖ»Ê)'„ÜÂÖÖ™zœ¾Ì±ÏläÓt³WFбjÜÈÚpu›¾”ÎÒW¶Ê¸Òºæ™·Û×#Çê çŒûÏu﫜½êÿ[eC…Q¶B…Ëz„ a³³df®áÔX[ò”¾Ó#7ak¿;B©Ð!ǰ[ÊoéÊ_½á~|náÔ66O–ð£7§±µ–ËrjËÕ׿jèÝÛØÚ6ü‡ñ™S836'Gç²;DZµ(ç«N—ËÞü³ëØÜ8}·!”ZlÿÈÏ2ör[›þs²”Òur gÖ¡I‡‘['ä^ÆÖ$CîÈ*>Çpf( m³L%Ñ iöÑ6ù´ÏJ.™ Cñ òñÑzÈ<¿Ý=#瑵’UyÆ(9Ö¦wˆús!ç5ɳw;²ªTŽ£öeÔö¨ÜrkÏÿ¬ýãrQ7#is}BŽNî¹58™£Kè +™óݬCûí_uwŸ’›ìÚœÝܬr®CuNã*ä¯jhRªl %7|eŽG>­³$4Í>M3Œ-ëT•; ‘®à`€®Û€lT40²ñàèÀº8@#° "ˆ‡‰È‡a m´BŠDäë0¶ ôi›y4Ëj`¤’­Hšjúšjÿ¬I^mÆmy€¶-ky€0v3ξɓàhM$‘®F,XÂx±IÐ\ˆ¡²ÙT*-å&$:L±¨Â[$8Ïwªe¾ØLlÄÅa¨\ªEè—å( =F¨S”ÁÇ‚ÏÁÔYZG…-g³„ÿprχ*y{!»œÎûî½Fg—ëï»Ï=¾”ýp]_[ù«ÿ5([™5ciRFÕ©mÏ]¸Sf,í]µùóaäR[‡¶FÉñJ—zKÙ¿šjûRSM·›ÔíR©Ö[£²¢ÆåK¥éÕ»¦U,M»VìŠ0¶„‘[·a»ûGvwùj½d­\FÍëåšK×À^µ4.w•ëåú–Q%ôy£Oì®OÈr—[ݬø¿¬©š×jµÒ0”®q9WWªêREÕ©:³-B¹Ë>#ûdIHÞ¸³áîF’æK’SÊQÕêøbM~ùKãzVi\³]#_%5+¬ÖË¥-£ŒY‡óÇéûs¡ëÊ vVÆéò@†rÊ1>GÉÒ5’,³mNÞŽÏ»‘Q᮫Gø¼>yå³t•P¾F‡¾ÎºsÝ7J~_ù²~oŒÛ +[¿•ãöd8¥l¿[ÙåndÉwv«lfnéì­AÉÊΚ±´Ø½íÚîFßɼîë!ì‡Ðµ(yF(åFçÝÉõûò²r±]J¨sòÆíu}må†1FÈÒ]Nþݨü %kOž,þoôøÛÜÕºãO8WÊWÊÙ{å>œRJ_©]Ω²7öúF¨ çJÍý»ãr+œÍйœ +]v/«”RNˆ1rË=ŸeôæÙ°¥¶Œ0ªO *Ãߎ°cŒr®k+eÌX+{ö|åéš/¯|áOÈAe§ÌXÚÔ¸ï/5¶2sóô(w¾#Ç9å?ó¾z³4ìú²_5)#ä]]fÈ­³û}_N¥sðŸ¹mÖ&œ ¥êB¹ÌËÍeíB_ç ÿŒR6yµnngÞ Ω̃s5)¥”ûR}''á?„¥”P!K*wBéÞܽê„ÿ Ù÷!·T•Îý–ú*ùÕýBnŽó¥6iy£”Q¡+Œ=ãn3„û_²êTÙ*áäÙ%äÈBÈÊëÎëîú2~»žÕ½-—+>K3y¥Ò´«]óŠjT¡ +v«µ?y¥\9™[ùYÇJ×(wá¿r?ü¨Sålmç…Pʆ,cKÙQ¿nóú»ä…ÝP[*l¸ìº _aÇgتû¿½ 'œ!³ïþŒ}U5Bwn•²§þŒPÝã;üžÜqYeËÖ_ßQú®Œ½¾paä’a3»TwáN…Q?:ol†ñ¹Îgùq>7lÈ-çÂ)NÝöþ9•[5þQ¥QÍ–kX*ÕK£¯ŸÞ²E’СîêüÝßõ¡Œ®|é¬=·wj«Äܨº2j¯÷KÑ}²»”S£rqvT^Öò!Ôå¨*]êJžq_©ß,û×ýÝ]ò\–þ¯ßÛU²”sö*ûœ³!ïΩ»ðãT¨½ñ2Ü}î–~/”±—]'KÝÕñ›åïËݹ¶üegù¾?§ìõVdɹz•ô©q©OÇukB¨‘.µT%éågsrœÞ>;rüÿ*'”û²×ßµe„íêÏ‘Û_y#l]ï_ç"C)]{u}ªºä(#C©ïSU£ó»¿ÇÈÞª\dêüž7¶ô9u7nC÷¨Ó£Ê…§²fût¨÷òO•ð'lÝož2ÂU¸«êýÚ Ÿk×àlí~ÉþúìU Õ{e?Ô8wew7Icå “æ{KvØÑ#·¯Ì±á„’J•ÊÁÙ/§Ï)áÔen?¡zKfè1NȱnCæ8å.Ï“!T¸¬Víê%#d­Ô@Tid¿kV®TÃð5Ÿ'Is’„žuh.ãôòJ('ŒÏÅv†òŸF}ÙË뺓W!ÏŽÌRjd¸\ÃíÐŽþ®¹wÍ[ªÏ9Ù§spúܹ»qrœÜr[WrO†û{>Ï©rál¸+Y!”½/cëìÙ:cÃ΄êÐ%äÞå”ι>5B{÷WUádر#ë”Þç³Â—ÚŒ¼ý²§Âù¯quU£ÇŽÇ8ã{ôõ8çÆ~9÷yÎ~Žpu2¿î|2Ì:âÊÞsB¨\ïc̸þ +¡î÷î®¶ô¨¬qŸ¥Fí×lȧúr½Ÿuh’—ù›§Cwî:gÿ??w€¸œ%|Ö9§kqNe•üú³¡Æú“·Fv%w|–¼²w½áÆe'=„“‹íí+e7³Ãu‡q>üw_²Ã…qºœßÜï\ígir7:dïv_cü†Ë»³ç»¯3üø¯ú;¹Ý¡” +ÕUj½ÞÚ§”ÍÒõ5ês:5Þ©¾ %Ç÷îɱ®ˆ‹£å¡l6.ÀH‘»#ÇÜ#°b¬Ï’ˆ¨H\°“„GÆŸq:œQãs«i©J8T0˜‡B?«ª¾·<@.Øi³q€À88@› Lõê(a±¾N‡ƒ%c±X~dî¯=Ïí…¯+Ωìßsµömí~emÆèªq3–æNfw‡­ÿ³e䌥MéòåŒ[sÕÿ_µþž*Ÿ[=rý¬m| '„Ûó9mÖ^Fù+UNU(—µmgO[É”qhïÝÎ=¯}#ÇéÚn„r?Ws-7B¸„¼Œ±ûPÙ}uúÎæ—0òB8Y¡îT‰Ááòð(àéØ ÖúèèŽßÒ»eŒR²|5§J5 ]j^ürÍËÔ´Þ¥¬Ö„¤è/¥.ägÖö)=þÏ“Úî«pFvßg­´á\•·Fº«4,ÖÊ5¿ 5«ß—Ô¨Q½Ù½YU•‹½îý?¹£sTNWrCõçJ…1vü…ÍÍùô‰9ßw›[*ï>³|¾\Q¥rMÍ +¶V÷wMëUP³ëS²–ù™´³yöäåÈÜJÎ:ø9òÊ}g„ó]ÈêÊœs³$º¥7äž½þ²¾ûCw…+cË> Ä Ë%â!Yu¹wŒ,ãï”<¡ìùB9qå3ws=g‡Ê%A‰«¸åër¹ÜYšo•Jã.wÍË_Èïr¡†Ç‡§Ó 2ŒDæAÒt’bl£”sÎÉ5ÜÕ:–5¨ä³Ö‘8Lr ÇC)52 Ó,ŠE³±l–”€XB*VH@(" È¢Á`(…AaÃ`Q$b(È%$ÄgåCcÝG2Ø„yf:ÆÃt!Šž9NóºÊVtïz¨•¸Ài< ¸ OŸ½ Õ xS÷•c좴ô,Ùl ÐÂ¥çøS°G4^rE¨ ÐJ4z#[ÜY3Çx¯ÒQ[@òˆîr•îs”#Š—Ñ}WX?™yvé¡G¬| ûÍ…ÔyWÑ÷h¾g\Ø×^Àan^¡ ´ãºê‘Bè=µ0¥5¶Ìtsõoý£pŽAÓì>ifшsçZ)©rë>ÌiÔØ½††ÂSÂ{Ä–àÇi á‘ÎqKÙûu'lèÜVÿ*”ÉYxÌ-1òÝÂçyœÎáÊYCpRã.‡QáäÒ@àR°/Å1Ðþ^2}˜ë»¹ÍÝ¢¤­YüÙßZÇÌ*…tÚÈY:_”Úˆý;N/`.©AwãD‚^BýÈ׳š6BˆÒéƒõ“­ÂYpt…B̉78É” +—ÄÜé3„Vïîa&ìúò¸Är–« JP¨M†b.ÓL®žI/ãÚ£c:“œlËèM°´×B‡­V¸òa’%Û5 ?7éRdzÍàˆÄ¤5¡8&DZéZEÏDx¥cA™x“5ïŸc1í8ìÐJO»T ’›ܚD=ýJ׋Gª;3ï3Léžb?c¦àÁ7¬ëÌ‚É(«ÒÆÓ™zg~³úùÏõü0¢&YÊUA2Ž]%§ õ áÐM(OæåØåà_œÙhÑ;Gè1&^jÄšT䔑GüC»Ü‘W-‘±RF› +epÛmŸuôŽ›¥ ê1i8!KÔ]X˜é{š&FhNzwPÓ9\0£w¬KMøK#ƒ¼ Ómê%J(ïxªÇ¼ ¯¼ûîÒu6Ê;²ÍŒê¤Â.ïêÌéšÆò.½‘Ù¥iœi¡Á½k¾hÓ°š³îpîM4U—w_Ñ4L÷õÐÀ1jÔÁǨqj¢8¥"rƒÄäñRÀb„ºä9äÑËKÞÂÊRƈ’GÛehÈ4f(ynÂpØC(L¿â£õoáa†Û˜—T?“'Wÿú`Ο%?› Mà©äýí¼ŽM㷭䅔ͩ¥M +õœNa1½¦Q[É“ºâ{¬ö"ácVÙ/ æi•0,ÀFS†KÞûó€Æ*ÆÄÔþ ˜!ÏHÒ¶í!JVÍö¸O0åilÛnwm]WkKÖæB«‰òžÊTÂø3ù q0J#‰|4+«ÚAø“'²) Öè•.ܼ,ñ©”¡2J€aÊ÷Õ¼fOÇùòtU¶UÊèͺ ž³³Mš3:e.[°›éÞeõ¸þ]¾§b4Lc(¹[ ÅTiú$X4n°…ž:­}–)öD‰é` Õ‡§#E"y—äÊ*¼ëc|*Çó{ѱàxfÔ@TÛ)„½h)ƒñ*4Ì`-³À»g=Œ£N‘Íg|?†=BõƒcC›vöøµkÁ“*vFéI˹%89NÂØæ†ñ=EÔ7Š)äFÜRytZ ÈºÏ)äfb[µhLá |Ul;àª7ù$ ôq@X0jWᬱ ÝÖÂÕ÷uÕ(ïyEx7¢j”¡F H äŽÅÞÓ“¢$Ó ³& Å7:aU1Ûª„ÐÙ[¥rãIöQáXý y!Š<Ÿ8 h¬úì)שßÛ=I©#zÖ&ªTýWàèã{ݪyˆ"_²6·º¼ *“»>÷Ã1ã…Nc8kþñÏ4T +;ôüSœ™×Lž¾ vz›°kzx| ×°cbIùŸ>õ¯û´ŒÃ¦`µÿ¾P“›.oh„Zr¢°£0¶˜½™7j~z&¢»ºr˜[3# ãŸâx¨=A4«>æPDzdö©”ÕT]KÔk¿É°!ø¿ÉéÌ»%‚„‚oˆ°ÉúL±Cb¡•¢ óD›¿qȹ$q\ÆÎÕ•Œ™Ò”e²±ø ;¶-pNsLšÞ‹’%9ÐÊ:ð¤¹P_¥Ôk2i9}]]kž›å9‡uƒµúÍàNM€$9Bg©yB®Š.}º|ãóÅ7(f½Ño˜()Šõ¥ q}èLP6ÖuêºZÖ‡{Ç ä%̸C×s—´Û¥DU(ñ€k.ÙäDš%gYÏp*OЈ"{(¸¢³eaRɬÌnˆÞ6Kˆ”Í8ÓúV„‡}|Y]°Õh$WsçaDÉh˜'€†D“VXQR™¯cª²Ö¹ ™gß¾ g®1ä•Zß$8Ý÷+{Qn„fÊ>׈é¶€‰J§ÿ|F©…vJžáÅ‹î/&úÐàE\£ 1]&Ú¡¿"^0 ÿ8†çJÂ/Àã¾¢–Txˆ½*•ËÐÒ=ÃQÃ#4RÀG4L4è£ã™=$C-¹§ò·ÜFN@È3zÇPÒL™¹Åf…¦ÒQà/öI:ó´µÞä—ÐÏ#ºˆEÙè¯-âƒ%wðÂ7x·y =¨7—žõÇ‚fAnsŸ…øù¼nºÉª£pš2‰Ü8s/ã"âÑW˜=ÃÛûÅî¶5 +§y-\£õݨ“ÝŽ­ý_¢U'¢5Þ™Ç)xÅ­èÚ“ª÷°Äï±Ó­Sl_£PÉ A "•F˜­ +¨¯e=î0°Þ‹ÑˆîSev×£âr+ô¨¢&Ñ1åÃŽ`E # e‚çôVõ̆¢‡YíÕ¤ªäGo¼0«-Bü¶ç@Dqd|ÿDDq†ŠO›·£?òS;Å—q+‚£ºÿ%³AÖÚŸgwô=o3/Å}Ø-¡)fPAs=ù¤‘t7¨Ã5L_Ÿ÷ÑÁ³Ó¸±£Ir ,S¹ç>¿yb?Ò,³Z‰ÚËãî’H8#Ì¡ âxÀé²+&r²Å€c¬ÿ¹c)e¦ ÐÏ䔀¤0%} f66EÿÔ\»œ±{¾åÇC±ßÊ8‚m óáß^‹^í»øÏÊÙìçð#P(O©Ac7C÷g °¹ZÎØnž÷‚.–s±@ÈÓ&ÁAwäé\Òñ2_ò•z)ƒß ôáÓø”Î^…kÉmØb/Þ–À\x¸H`Ò?Ã-<Žrî`1ò®è²ý-Š5Á¹ËæÜœu-~˜¾0tpïè-9Kþê[íCb*döl:ÉÂmñÈú÷ºR¢Ö4¢Ÿ7Nñ¦j¥5ž¼µ¦·ù¦BUˆ¯D.'ø#QáÊÏ æÔ ´§cv;:K4‹Æ¾yó†ÿ“_¤®sÄ,6!AnùÌWÒÏnQPbaù€—¸¶Ð&ɧ¦‘´†ÔÞŒ…˜Êt¤Ò6”ã•̧Íþñçn.CYÂJVܦ8B»0§jô•k€jqÖÑLøJ +»­¹Í"²·"ÝZ™óÈnºÓµEí4¿L7\Å€%Lܵ´‘CÁpµ¨züD3ßLÕÕÓ±[†ÄL±à±ÄŠ$Ì(ŒÊC‘X¾4@' Út°ÊñälóT$ÑÆ §aÊÈ`»›âpÕêYä›d;rpî&J)mº–§’cX“vKÔÃcæP“‘Ôs ŠFàeƒ·— ^,`Nwà?‰ ù²Í4Y—iÊóvÃ.gZL5SÝjÃ!ŽÊV÷àÝ« [—z¨+MϾN„‚Ž,’Œ\Ô£lOýþ…³³T®\Ô}àsm¼I›œ‘.ê7EqZ)äeR¦ª óòüs‰7ñF™jvq.GSÏ( ŸkšÔžtÛ‹+uIâBH LDkªRÂO0Þ¬š\H YvVéù‡$õ:d€OB¹gš§Æ5#”G¶Òz®‰ë 9†h™©°&u-ü™¬)vKól–ÐK³’õ—“Çñcf–È`iú4œ¦y¡ã´LiØ·¿·ŠåٹǛùÉ»mîªI)/¶¼ÿØeŽ¿¿¨é^Õ­ZEõRìM§«4šTÙÄ2+S {‹ŽXϲ1‚ÿ„¡Àʺ4ÒUO±z};£¬ZÝ[”À^;ÀWáGÕ`[ðÙĈr¸%e:æêšàÞÝ%Ö`÷hñÈâÊž ·Uî=7ÎX/EÙ:º1Øg õÒÂ¥@ât‚-<†Þr[ù<ë9idÿÃ1*¦{¥ƒìu®³áŽn–‰ó-”ü—y5Õ=÷ˆƒº­«XbÜ”&žÝ_ º#w*ØàuñÃS‘Û¯F¥é‘RiU¤¥TjÍ@Ї--§ Ðs£40½o±ÕÁŽ«(,㾇øòéV3˜ü¢ê•üòÚÑŠ0©ZÕ5‘€v.rJVµ¥äìŸ^Ý"QJEx—~^)­ rꧣwHB¬-s3 +ñJÙ»­Ž99Á{Ž[ yàQü½NþÕ¹CSƒ¢Ü)«<¼×Xl¤Ã!IÒá…h™°¾(/t$Eü<·Ìø©óœ Û6í‘j¡êÈ e’ôê0 }”ù ÉX„¨]2wl¤Qàˆ˜˜VL¾R}èŒfÑ9 )MŠ:òZO”UŽzG¡ÝÖ38]‚/šÔO@´Ì…¨X8²7Uÿû±X<öì€x**¶ˆÊy|všý4ø¹ujÍãoñ9Óœ:÷¨'ü¿2ÙíãìxzãÃ3†ÿ1µÉÚèÃfcíè^«@ «‰s‡ñ )B¸hqé5®:K>ºì»kî–EïeÝxQ­@'°Š³(à.¤=Ý!_u+|äÄD ªœÄÀ°bØï¿tûc&½ŒRš Hô³Uõlì$ð§ˆÞƒ^,ýP +.‘±yö½¯hI3,šE,ð•3±0%aŒj7|r×Êp=øV¥`SÐ;1ùƒNÒUŒ ÌxÃR†GSbrVPA’E)¡°+MÒ͉t}hÇ;¨rÍZJ(.ÊÆJöœ/Ë3\?¬cîiÉÈ˫锂‹ýybÙÌ0–A1Wo”V/`P“ ÿ¤fÓ”Ôuðó ?t²ãȃ©”’duµÔoÒ#«Na‚½±àAú~‘} ¼S   ¼mÒ˜¥ŒÍB7‘ 'ÜÜ,² LÇ9_¢ò&ÊÂ^˜‚Ä…¬M"¿ÁYrß Ó¥­]›œ£q/ÖþÐʱp@<q½ÒŒÏåíEXk!Ö—Äo“-•u¢Àì0ƒaòËhyÖXÚ=ÄÚ…?Ž7'œP…„B7 Th ÂjÕk-Ï*>óq)£¦À¸ÈI…%x‰´L,uŽïþŠHæFÅ$xÜI’æþ/üG¿é±Vú¿-`¦{†ò“gèF2V–¸ÿOV¬áÔC˜)ôNW/«šÀG$-¶ÿ$c >œç±´²t1¡]¨‹i§{“Ø”ñžPHz>kúZ`dT¦>•xßÎa ]*OÿŸ¼J™Ÿ–toøvâRQè“õÁ)£r”8T!:Ê·´ÆÁŒbo §—gï,î *ÇvŠ(Óÿé×UÚwÝÀE0‰Ý@åQ¸ôû ¸0: 2YœPRÌ  KFüÅN!ÿ° Ø„«ç¬O‡ðbo„±=™êüEQUǧÿêiÝÕwwéÿ„$ÖÓ•ÌÿZó¿à=Å„¢ì+)øøˆÄÕzE¥mìJÍUKu¥¡³Ÿ2»õúú’^S¦| ï©T×¥®ÀÇ“Þíš=èLåMÝ=ƒÅkòòÅÞ·ˆFÖW“ït,žlgn€D 5 ¨ÿâÅ!¿f´ì=eªQôXKâÓj}Ñ×Ja¬öïbÉüß„.»ý‘¿Žævu:AÓÔ¯tfF\}nB•1úÝ02èÞm‡à²9›3é“#Û +ç’§‡”2Ôaœõõ}YéˆE$oœ1ôq}½vŠó9¢íC?)NÞÅã±îVÈ{Ÿ&®4 ÿ±î}v„/.0ÕØÑ\¸Êw¼î>Þ4Ýûô*†ôÜcKeÓÝzë7ÌnelÍ˸yÁZ3‡ ›O+$íb¤]A”ÞÒMÙ''…¤}§ûOíÛkÎói¦ÙO·‡E¯eL<~[j¨Ðîc +ê‘+ ÜsRÂG^)+¡Ì³{ý †‡dæÝ6|àÎÕ9ìN/´Ã)â}wg¯ш¦þ,NöoàÃWÜ8·á«ØÊäΔd#ª({WZߢ»kMOÉY5}£ðÈÓAq1Ú2NxÛKb&’Mã;²#˜TZ¢k®®A<“x`‘ÙÊUD-"`"*(nL³ HVc„tÚ£^®"ø½z™y¦’]ÁC-f¬v˜7žå š'Msu¨gvööÒø"ðóá æ³~ÁæWÝ5Œÿ£#ì¨~Be¯’‚˜_Ø‘ãd¢!´ªHχ LOˆ€Xšµ2ÿ^~Q`èþ»#Qw§-…7@ÓúÁÎ5ù²¯F¿ø5©vvcþ6!‰Ýüó@õ#ij $é_ ?KuÿÅ¥Œž¢ÝŵP¬.:¶¥×º ãTîºHÇi›ó-çʳ+¿&J ¨!Ñ»S`ýp—­¬‡–GŠ |N:4Π؟¡ž”3OlP„Ô‘’•Z|}k] ^áÌIÑJ Åá»òð¿ôFÁHîkt ’Xç8Îüî“Fƒ'6 IÊ7=f6xý’39èyûù"U '¨mlÒ¦õPØgZ1kÅB6TXr`+)P”T8a¨oC€oìCEàzü¯`8>,î(ƒðY3¤EŒp}©ú]Ö7¼%……œ}Qhhž*%x¥¥VØß¹fF’¬B†ÆÝKÞ䥆Žö§q5´±m±‡T ¢s+rláU":zIry .¿ F_—–t jDVRÄå$ç# ×LL&×)-Ê!%ìjœHÙA´RËŽŠ†ÇÉId5Ó ¶Á"EÁßG^F=ä÷Þù2¨Ìâ Kªö øÍÜF/†«@n¯4ÄÞA!cdú¦ë±LvsVÕî&Ôò÷ÐóóÊÊDÉFa ’ýé fyõl)ï%-úx¿ cÀ•Ƙ°K•NŽ+¨•)"Ï㤔øOXä ¢-ÒµÑ/±jÒO>¨K¬õò8ÓÍÅ“B"?¯y›Q<šˆtábvM?f9^¤«{Ìh0ˆi1î ÞnãÇÔü/äTRvèûáÇ?²?ðæÎDúFbui}òé釻ß!-=+Dö†R¹‚ï3еêâ-Éôˆ£üo)-®ë!ÀÝ­9nBþ%Û”?בø ÞC'Nfî.ÿ‘(z$z@'µ·I™»³ûdw©ŒáÁšO?–vo½aè©?$t÷;,¼I š¤ÌCÛpÌU‚@ÚFò{ÐE‹WΚmëâ:ÕTo"v&Pj6Xm^½ÒÖ“±rXf܇oýd8×"Hù„´ýz–ŽMP®®í.ƒíÌPÕd­ mŸ-Äõå6Ã[Ä|ýâîé¥jwŃ†ÅŒ´¯‚xZz-±ÞÂÝí9 +o0ÚnïJ8Éœ jœø¡Öª¦ƒ^±îØjð.òo†"~4äN¹ô×;6ó¤c/:¢žì³= ü°ù˜D›ÈÉ&2Ç‹ÏB%#“Þ2oÀÂ>m­e ­J%KÈÆªMuéŒÀôkï£ß"3?êè{êF¨¢£€%á ‰eKèùÐÃг|‡´J¶í[Û % øfÑÇš#™áxeÑ5-1EŠƒXZbÔ1Q ['u“E8ãÌ:ü€Æy²Ýò1q>ß“Ïø5¸re÷¤©Ç~g^ÖßߌëE¸¦µ¸`Óx^ ûÑÁç”ã™ü黾,ûZmGRö¼–aíˆF ÇúŠ<Æ•¼æ*Â>“þùBbŽ'qP¬PëxŸ­ÂÁpVIiž8/Hv¥ü&{ÞÅÊQ”@óR Óïa"&Ó¯½«%¶ý¥£Ãdb-¥E•ý[ “‰Ü…[IÎw0]AýÜZÌÃC®­çÜæ¢P³A¡Ý»Éù˦Ýd“" "i¤¯"¹Ì{+\…"ª'slÙ5¥9~VÏû!âþ~H„°6.­BÙ¨ÄuÞ¸ä¸ÿë"¼Ôþ·úñ6 É÷NxPB0&Úõ_bÛÊfÆQ»Q÷kù‰ï·D«ËÖ±3t +D“I;Êáµ ›ß*O¼ºbaÑÓ¡£O^-ðÌuþ³38‡!¯^å ¯^q«Þy릹ˆ}&’rõÓ°~ Ç΀XGY±ã”Ø,â²™º‰æ™§}°âúæY¶ÿiÕ2„I¤À3ý®XÜdËf±bO”}þåOh‹%§ ö¹È-°¸Úƒ&]ì¥å”Ž¢jTà€@S•Ò&Á&WÙ!mSÓÞ†Ô¾}lÆ1‰O›…ʉץòÞš‰pÎ5ÝÕjGœ+Q¤€c–éÔKBr°D¡—ìÄ{ùp¦%» Ó‰ —ï"D «×)»g¤3ù9[ÑêóÄ”óG +£jóžä@¦™Í&Lþ”ÂìæH fm/ékGDq#pRî{:Z¨ôÚZñ_‹´­ð8ƒ•+g»÷ ®Å&K/­pþŠ,¨0>mCè|ÐÆVæ`Îq÷RE!í*¹?ÞE™9põŽŽö·ˆQF›æí| vl m :»©øš«*-SWÒƒ[>Œª1ÜMzÈŸ½Yäâ3R ëMzordplfő՞(!Åä°µw)[y¶Ö÷&ÜüÂÒv •rà/tÈðË:ÝLLÒ%4ÙÄ}/À¦îʯ—&€ÆáïΫíå‰ Íó‘;5w>ˆ/;ñ¿=ϧN‡0{bä™ñ~„ ©"AQPåMUÒ,µom$u²ÿtM{íIL¨ü$Ë+¶š}ÃV ’zaxÆZ˜úž¼+e‚G‹laŠê‡|ÅY˜7ž*.vWª¯ßt­¢6©|r$ùâ]Th PÑÄ‘3lß»b +&"6lDÊ3fBU‹ÓÓ˜þpÉã‚9lÇ +Ínâ“×Ôá BdN«w’”N±”Ÿ ²ú>§¬{§hùN¥ß9°1c+™Y˜1 +xêH”P“YýaëPº5:­yÑô¢Pì´ÕƒhŒ¤”aÚò4L•;Ôô5 »3=ÎúKl,?¿((KÉn^0žÖ* ˜³ÓUÀà$úKiÞ%,9N‘©¾|Aûß}ÞRàM.œÕþWgµ9ê\…ྻᮅÿ·›Ò{#Î?©\—T:eJ~tñ‹Ý“Ÿ¾Òƒ@Ú“4@ô -'=˜sàH‰l)¤Åé¿ë‰°]·b3ÇÑ=Ã6‡Õí_Ë? ¡ì³ï‡!èò/„æ CHµ­]õ/„.†!XQ(ò/„û†0¬Y˜ý…eB™rîø{ã…M5²Zè/„à†P6½è/á†À6ÅÈB¡# C]Ü4оȪm]þ¾00§Y@¾¿º Cˆ¬ïçÚwþBÈ_BðÓÞLè}êQObX*ž0ŠþÈm\êY/¬Çy‹.uÛ¦àxÓqo“ÔQO +’d×­åÑzÌMËÓ¦Rü'ªpª-r À‘≸¨âkÚ]üåIBºÔ…BB\ ¯E×”Ä\/0Ù=䘠òTòµPM…Ó«Q1¬aÏl,wÁSÅX¼0²š° +gp|9)üà’™¸®Ëûå“͘B’¦yö¦uÙÕ®ñ¤œ×6­Š§÷ª)ÎpZºñÿIMA£OI]ñÄTÀú²Ô˜9³õ“žÅŽ{Š®¦ë§@‡ïUÎ%Øa–ÉiÄF‹`ëÓCêѤõ˜%¤œH(QëK=v£dÆæì¬‡P‰=—¼j(cújö„õðHñ$4Ì»RÏÖüxÆŸ’ÄxÆ6 ¸«)i–K0èf×åž¾ÌBJõåP‰¤ 츂…S»:Ö(\A´…éS5XþÆ“©.qتàµc¥&Ç:/ƒŠjpkÑiö¹Ïcª†ÛE6Ïá[;Ž(P#è¤P~&ÏÕ@ñ %œ´–¨“ b’¦Ã0ñ {6ó Š„ê‹¸;¯ÿ>á…ènVâA2õÔâ R•œhâê¥LÎv&/šäG–%.Sýùƒ¡N|±:ï$\å©k¦ÙÞŸ¡þ®¡$}zÞºŸC½KT?ï6²‰žÄ’óöh¨êv’AÛ/|m`5”íÞ™cŸ,N’Q!̽8=¹ÀpÔa®X×êçqËë162ÍPX÷mHÅ*¬©€i'ÍQ<¶&¿Oúr¯f¶ÔÇa £©Æo'ÍE^ƺ‡E™¦?ÂídnÉÍ4Å7a“j÷n ³Ð§Ô•*¾Îúb1Æî«9¼ø1ÈÅ[cMÕ×LQž`YÒ–ºœw¥ZqL/?Æú±¯YÅŒ´`<Çg¢ÛÑßX3ýQrù©3ƪ›x4Vi,æÿT8 Gƒ‹aH÷ï©£[t>«~GXn‘ùDܳþ¤bßxaù8R/i<#ÅòbÞ>ˆ`XŽ³Û¾í;@·k×ct•¦¤Ø.~]án'¸KîPŠeþËè’šDÕË­ ¬ À@g‚°Ly|%MZ¬‡B Ë+O ’[þ¸tÙ¬"‚u¤ý#&ów0öèëá$ápåäñr9?™ðåN E°j«¯4'Ìʧþ›2`ÕÄŠÕ9½OÃemÿ(àÔ±ýòw¶Ì•11k–Ç‘ñºÍ_æ:h’ü£•v`Üü6ZT/°ò¦ÿÀg;\rµ-þÂG± +„²Të%œdÿ5®ša®—ƒb¢:åTóï  ¿0½s™Â²ÐG7Rwš1Ãß#Ÿ Þa*ÔRƒÉÒ‡¸ͼ’cGø¤ºÛIGHу w>;5>Ì®xX"É{Ô`‹Æ{®„ö–°t2€;–Ða‰‘Á#÷K%8g0;¹°ÔÁ_-=†U)N{WBã(,¡l̼ž$Å™0¯–Ø•p"XîÿJÅNM íJ˜º®C[ëAaç$v~ovT•«~’ò)E\åPÌ'¥ßE•`Ý4è€ãVôIH‡í¯3Î×k@‡ÂuEEJÈ-uÄx¢Ë\Ñ<–5êµ¢£¢«`õþ6( 8s0øI„¢K&qécÆ›‰KE%vÅ-!Œx±ù»òV<¢s¢Z/ç;g×IÆ®ÇÏùŒåˇ´Ýﯯ¤ ‡%Ä›X]„IK?‡ª©%¥„ôZI j]Q·±¼Ø9%{»õ(ßšÀÍËCÊö`.+\…íŒ\‰T±¯–ˆ¿Ìì®òÇX}tN˜pd¥ +Ûb±bxqlŒæÑ( åÙO +û¸*†By$´ GÈPœwbü+ñ¶[xa:!¹Ù΢ß:_´ZÁ1šÙ¡ÕQõ – ’Ciá…äô.á =Y‹a>*¾_á¢"u“ø”Å¡„Ñ$t\òã0Ïe‡ktDÑC|N§ŒÊ¡R†¨3âðthµQùìÅÙ[h‹Ðë€è!ûWB(uˆn—?úW¾Š!Sƒ¶)ëùÛ¥GijqéRQ2Éf‹Kã: íRˆ»ŒòT€5¾ö¼1‹¾­—÷0,awèÕËS•ìùñн¾ÜsbL4^LëålL.:ð¹ÛD*ÚÍ‹[i¼óO¡×É•`jN¤F ³Óõqk×Ðñ +kF/O ·M¯:Œ'i¼`rÇ7)DøHÚøe²úª¬1Œ÷:bfïC ÆB+o|¼2>ÏzÀ:Öê•R£ÀɪÈN(þÓᲉ@´Ágž–§t-, ¾%_Tö‡pjZ¸hS›tÆ®ø®ÅÜ’Ô›3†Ê’ŽÙè-U:ì3wl ýÄ‚ÈцâbŒ´‘lSLšñ=UÈ"ñ^Ô|Š`ô'~•Å¥B±w½DM&y…Uõ¨%€Ô»4X©.ºb½ xõ °ØõG`Ê*íû7m·ûRÀž¬u]S/µƒ¦ˆd‚KwJ’Pé¡£e¢(nã¨(­ÓRN?¦j9¿öV`§ùBbJô +“¤ñÀØi½CmÂ…k­ã´ˆ%õHåM¯)R~Ÿ.úòê?œò«2Ÿ|Œõ6q%ð® +ND ÔZ†X#˜]`«c¡QgUWOà&ÿe”ÚÜ“à#üüÀ*çE‚#øÚ$â +óIµå½¾\kíp4RóE£’ûåÛ@æÆ€"¶Ü¿ZÊ#å£d$×° ò~²$ ¹{—NÐU`¤îNJ¤0W@÷‰)ü ºl² ±ÍmYn‚.¬¨–£´Ós›Üeȉ-7|%q·˜—å@íEœJíšk3nËÕ’•»^§²\ü8xw…Ê>Zrˆ[Zùîì3ås‰k4ée£ÙÉ•&§‡ˆÅIkG)ã ù=•zSö ¹{€$fw ì£]bi0)Ÿµ«å³°Lg«Â¿»Ž/„¬ì·[’~W.3)7'ÿ +ú±&9í³~ cz)Zm˜×a'˜ÚœèñCý~Püz™é~};o:ÄA|ã5×ã°¥µ³wŽÑÖ»’ÓÅ,ºQ—8‹ö1Z™%²` Se}ð$—˜tJìGV^ø;õü5Z& ýÑuÀqú&¡ñŠž8_±Åü‘¬Ú,ˤázc¬T PG–z¶2¼ŠÜíU1qÌh¦7`'ONìÍUSl7~Óhsñ|îšnˆŽ§1äRBâBÎë] +_‰õ‹@£Z3‚«ß³‘"pƒ‡¥@¸z¦^“iÅ`?"²»Ü^“HJƒuT;R TØ'ÕuªñG –éD˜º!wHÔ#A¡ê5ëY°ë¢Î2ñ,„z×¢¢ß êQS4HÙ_u&H…:*sj«4Gàö:­ $Tú‰š~üM¿…ÊGÔí¤pêį'蘨PjgsA‰Ú´¾³BP½‚“ ©Pg_ßšRì,TæÂüÌSkI³¦É˜g6ª}_¨PEDT·ç‡Pñœ½Ò˸}ëë µ„¨5§/B}€çؔլzÐ}…]Û%Ô§z Ÿ±ç’·æHú®÷3}PÓiIï™#ivaU„Ú:(AŸ©‡ŒsÃK hdÈÌô\á¥ü®:Px±fJåþV=¿KÊÝLñÍ>N©P¨> ]V×”™¦ f>¸Ü?˜æ!xcú̸¥1Vˆº}æfŠÎõT—ž|Æ‘IV3@À›(÷3ȆèùÔ+OY +3>áÙPÀÕ“÷uéWwÀ‡r:†Æÿ”݃Âö H`=ÉV‡ËýL„Ù7®-d~ÊBæù÷áh·I+,ñxäR€`°“‹ì J'þ]ÝÉ)˜JnPž›Çlký¤}!Hóéuœæ[Î…"·¹ôFN²‘O‘‰zL&§ôýÑ+¥ž8tÓKr³ ?¼þ•ùüÆ¢¯©5¡ä fg@­Ìu¶?}uñOÝïq:ÃÏÁ®¦Ô?I1ÖŒeØ+ùeÇqªL¹t&~?Aê.uxZK$?ÝIQŸV™ + =Ùè[.Ñ3æÐ¶§›„ÓõNߵ +èИJ=ý@í⦧þé˜Ú}³i`í›äŒqA\ìû¹kx2[æÆY%]€8él˜m¸¥RNܯÌ7ø tÓm͵ގ ùKBSµ7P>É©Ó=Cemê¯LxÍGƒØd`"IÞ~ L*鲬ާӶè_•ö¡¸ ù¿F%#‹>Þ¯êÒf 9TE¡ç42GÄŠü[YiÞÊgÕæÄ "æ–àhžW»8j‰‹›ø«Š>àG°ãÌ`Ì*ú£'@¯Ë7 HÀ¼÷¤:%8«·sÈŽ$oå ªãvuÙ-Ríª¢ÙÌÑ„Píóñ¤…»@“ƒ¼IÖr[[ ד¬þâÄvŽÈÂH4õCЇF”Þtôg®= »˜Ò(˜ïêfùò)~xPe\HOøÝ.7üU“!0³}ÅXá? ám5ý²ËŒ­Äó?1l¥„‰-¬9¼r+‰`\´ìœpÒÚ” ˜Ø¯¨§oK„‚³\†ã »‰J•¯E ²rOÓ®E•3üp¸¡š:Dhšœ-çzN@êl´#a:EÛ"M·º±Î‡4œ•¹Ž _„öž—gDDËIõ¤C¡Rs) á"sfò¿ûð¡õ¹I ¢“8æïñû-–%¡ZbPõÖãC ;Nð²h5Ý…ö°t÷»í3»çƒ£’Ô@ +ƒœð¢QiŒ6Rß +;eòÇξ÷¨ù‚ûUm·zá‘›~s¾õ ¢FnÒ¹Q£î´‘ù~mÑò cÛ¼Š^P Jãø‚°­(Îñ-É|¢·¢CqËgœ˜( V´ó<ór1¨èT‘ò§~׉zËo#‰ÜL_ÐЬP~7lQÉž00 [—§ÿZ©Ñ×\ÿ…Þ¢/¥QæÜŸ´®!Y°hÕ£Ñ`Pj…_]Ô“µFÃ;4d ê!0ø?i …‹Eá֔G¢d~õ2 r¨¶hpù‰œÎ¼l4¥-œt ´¦ON鎅b ý¿´iCêý¡‰-§•ŸïWS48-­äˆ«é(pŠXœ&tÚá˜ê”‚S•:͹pÇ8ý†ÿa­i¶À© +ÆŒ)Î NÓ4wP(ë”ùÄiÔQÐI/NÕÉÏýžÚã”/ðûXmäNð:•z³FHÄ´ÌtYZ‡a‚"Å] ™‘‹ÔË@0!Í—;ÉWiJáKRw `î{ºUÃU/±oói©;u‘ÁÙ‘ÿß\øl¹ ¢C}m­×IÆ&#©ÐdN§x7Éüü ±ÜµÊ=¦B‘¨€¶-˜ ›p¬—²‡Óɾ%ëº>=wL~›î:L+ÒaàÛÉ2_¶0@ç̨v4n…#µJª"-Ç(²P§Š‹(•>g¡{Üß~?ï„¶™ª¸éLÕ?êYý¬žÿ Eª*ýuøëþây<Õ0’@aM¥Ãˆ9¨)õn‘èŠ]$Ãç«Ë;¥X×Y„…˜Ò¤p1ܼ- L5=,欤þu±º—!¹ASÀ,TÜß~¹ °êËMW%RõF+«W¯àòÐÝ&…s…x æ^ˆÓlªñéÏ´<šSì„ÚmàV¹•—6©áˆ¬‚íÖjp.‘eCy"…T”ÇI˜‡§&’/z‘Â: >1ÒƒŽ%‚Û±½—GN×Ô+^¡©Óp*#5mm®#a²©S´x?…ÐcN§°Ž“Bò$6ça}¢£RµJÛBÕç²ïŪîŸÎv¨@K"Œ$Tû..˜r³ +½P5\â[Z)T$´«’™¨¸ƒÜðüšU¯Äí¡^'inGôÄdzv4ËÇBŽEˆZœÝ¤}Í5d#6²§0OÞ]¶ï‰ +™}œÍæ¢^ºIZSä¥"·Ì–øÅ î}šj¸J…[’QµJSGy~͆ʎ? Å¿§·pÛ$-(J¬[âaªHÕh0mÄAnîÆ§2”·° äz3¸(¾‰5šŽV÷0Uênq®™;ô±Â7Dnœ±Ø“ÆD*œÿÆÐ©±xm7jNþîƒå•îÌ7¦§×üä/YÐ1«ý€Ë¢Ó .rü¥2ãˆM€ãÊÓL<ý–‰y^?ê{úéKS´«„àäîTå‚’ìu¹Ž-ãK*‡x™1Üä‡p×89„¢%þb@â²F¹—\ý¸vN›n,·ü®‘PFD£Ïd£@¥TlËÛR˦ÛÉ;l g×'±IOîÚX@äÇæh:3s:®Ÿç_—^e~nØŽ6;ÑvvtÓj°GÒ'–B…7ìbÒíèÚ% ¢IœO:“i¢wåÝfRTåY—ÖS"éØlŒXv©}ÎnÄ ÎB*ߣÝÇÊ%Ö"ãdD׳ïP˜¿*0L&­òãdiÀÉ .y :u‚F*k„ÿãRØ¡]ï©$bî2oX,ðßœJnŽf&Ùæ™`ð‚LÿLo!Ÿ=6JÇá‘» â ô^2b- $Ïï>éžÀPVpLl 6oï>uHfôE–@¿<ߣµU$´¥MèŸæ¥+Å{¢.ˆúEYÊö/K»Fj*ü/&ä!HÜt@°zÚ7IXäéK0#/‚èCƒkaÓ_o† ¥oºJð +#0’6/-ÐØÐ¨‘fÑñØòc²vwwï,zÐÃRŸ”¯KŇlц­X,xˆYú­Í 1ˆ’ÈÁ†)ˆæ2k%¹£Ê9gˆaÜýÿ+1—ä&®ä¸ØÝ–ÃVŽ ¤ W‡ª%›Æ(4›Yúp?¯ªwþ©È„¥.­;Ürž}«àFO«ÍTª:¾T-óÇ2Úèåt¢L&§­šB×ÊTxTÜ×jï˧¨ÓSœýŒÿæ0æT’–$sF‹9´b4·g'ÍÛî¯JWZ©ÚòÇ_Úw¯ 5«(íêÒÝ»¬×>/5É™–¦;\*ãâ–n*ijýHÑ›‰Evg›ýÛð'³Íu{R$Ô×¢‹ ˜ž975õé4ÔÛU›ÒnÊÙöo¨‡v÷ýò?=µöx»¤øú¾öuÖÿ7rI1±¨é(”ˆ•{cËIN!Ö„ñRÄ*\²¬«ï65ê4ÌKˆÝ–älÅn9JX ´sÒ¦ƒ³Û…ÍÞ?O}M<£ "& Ž ÇW^ÌçæO￟ìӫʹ8Ò;¢)«”m *†ê-¬J·|²OŸxà€†*?ˆ`(=ûâߤNƒ $„D〣Õ,Õ+yQU„ж³Å*éC„qÐ8 /¥[Ø&˜‡ŠŒKô.ùh§WVÆ@A6®%î’’Þx•fX®;ñgVifW +XXXXP8 ¦A„ˆŠ#á`âH4(NƒipÅ`&$΃ƒ‘@ð3Œ®ˆ\ÿi<Á›†mIM±!+{˜+v¹ÆcPÖÖÚÑÕ«ˆº·mäs£ð™PÙ=Z^då•\I’ÃÉÑ0–tç£ïU™‡z¶1n¶Grœœ(ý”£Ü‚èaÅ()ôϼŸïx&5ZpsF­ÛW¦.½šì:R»»TM3ìºfwŠPÃe>J„å¨cÛ¢š‘!)I’ÒSh@¨ DZ4Ç«€ÀÃCãSY ‚ˆ N1Â0ƒ0‚c aNA©¦XȺ8è¡ë_]Ò¡ Òw-¼† d@iDÃ4ûÄmM±ÄÂc¿]†E& ¯ýR±žXúemÒ°Fm(ÏÂXHèÀ[jgÚl ÅZâ…@©ñŽ»Ñr=[6­wˆ´¥Æ¾š«nT„Ù´ OÙÔHÅZØÐp%J §õ`u¯+ÓÇp/ኮ‡öÙϤ´ñj°’“W»(÷YûP~¼•¬Üi|/¹åÉVMgb4ò>áZÝŠ7B –•¸³… Ñ« +±ïn‰e¥(º~~ö¸}·›ÊâNGB´±m@7/Wyf*êäÓÈ8[wÍÑK»‹fJ_cp?ó;ñ\áJ9æ¾ÊzL6ÂC4|ÁgÊÇk.š¹û„(Eõ 5Ëß~¬¹ÑÏ"pCF •û;9—kf«P$šþ¬^a…XeD_T)z ++áÅð_ý»ƒAÝ<Ä~Õ2ΕÞår?¤åXðšÊ£Á‡çÛk3EPN"ÜiËB‡£*,úÃ4õ¹ÑòÊ#ÆØ­‹Üx<ïqN œ‰¼#Fñ)ýÜF2‰òý> >¿[òsÆXéM˜é› ¨©þÆ»œð5©PB{æ%%I®Âø´4”NFhOT̽þ…wNœ1’¢¬f×g–¤YsHïýfQŽÐ¤u^sž¶vÎA‹Òî¥Dž ¦ +­ÕËÏ’Úù˜¼¨6Râ¼4?DIº‘Â+Òke]åô’n;ƒ\ý 8çéuLŠ’RÅs„õ:4›%¥mt …EY›bj=ZI)‡òy¤LìpÈ:éMp´ÙIz¹Rr®r]v^º,%é÷9ÁäÿPíâ£z½?•½R"—ŠÅŸÐBûüÁ"whåÎ!S”õÏÔbÚ?tÀu.Ên Qm_ô‰i§ÿHý<º™¢ìo»¼²)õ;¤<@)i&?. $µ¤azñ7=W6JX™Û¤ÔêÙ¦&rr$4ÐßÅXíWé΄PE,Î+‘E­ ºX„U‚* â9-Fª¹„s`e1QÕð\Ð)‹Ã\ÓV}öÖš—¾Yt÷ƒoæ‚oèz`33³O¿ÕªÛW$šõEðM&qÌ’ë¥Ç9ÝÅ£wÄ$;þ=Ú’ö&ö¦ÞzpÞ;b5¤ûíÜ¥÷»ÿº»ŽÛR§dõ•þl3ºtúd¹Q…ÆæNIž’^î…‘O!{ìÀ C,½OKìõÏœ¹%Vô‚íËc&x¡¸Ë¢òkb¿NUó|,ÑWPè¢Ñöu{‹‚éDÍ-¶y;=¿DXØ`wŒØwCâŠV {—Þ“_Ò5D…¨º™î-n2x'D}¬¹¸ÓLSùó§ÓL\?;ø’¢þP õrø@`GJÓE dT¤øÝ@衉Q¬Qœ¦Ó‹—ï +$"3%Í™mì°›{˜Ž <ét䤴ü 0‘³YocÒ‚ÏÈ9 +ÍsòÀ`´’fÖ@ƒšÃös HFæCMQÄz×~3V‹°ó=LÒ­Ò}Fü¨…]÷„UòËPkMOÈÚcÍr§ªwƒf|O:xú›PðZÊÈš\‚g¿ÏL`5˜ Â]®„0º&³Gͽ×)|5½½\÷ÊÊü#–ds…aEõ šœà…¦j–0&ȤÎM'‹ú¦é‚Fì€8ï”I6~‹¼Ó4ȦfKVÓËîô¢›©qçÆ2ß:XLagˆÔ„ɦӵ…LõÕoˆÌ|«d•Ôð¾Nì{üPcÓ‚lJØByÃøI›±)ƒv1@¦³õ"ñ—šBhSø=nÛC2™õóùͨè3¼—r;ÝI#ÓźøHàš¤«µFÄ}3 ¥{.±-€ËÈË ¥ðþbÂé:¢ô¼GW{®£Q|šîÔ]‡g*WmPð:kÍïä[8pkLÂ%Ád hKÄ0\D›ø)‡½iï$£Éi Ï]gRž ™÷è\< Œ0®ñSðDvq}Pfàû†uº7£*i£A‹’ÊÚÔ8þëP‘WDœ‘{íeás×1Áùkci]·Su}Ç[kßÛ&Éwáºþæu©|„-oº,äpk ió4ª Ñ#m^]«TÇóжw¹š½ÉÝt?„çS€dµ,ÝZYl Àrð2@hèñßrû)~¡ÇM{’ðʛê¦)ÉYtöÅqHþg>Te£ÖÐB'c‘¶­1¡«^æŠn™žƒ¤6ÐÌ'çVu@ÌÛp¤¯¹—¬êè–c%‹ž¥ÜiÖSzd*xÞ¸†ézÎCÑåˆ÷BäíhˆcÖÿmïj|\;\2Y°0ÞäuJh’ia›Ìdlbós·"ÒXÅã†çº¡2š?Ê×ÄÝ ”2ŸJ·¦£Df`ð‚àØh xÉ°Ãæî®|ŠßÛ<—ڱ㠟äÞä\FpnªÅ2äJŠæ„X5ñ×ìC80Ø ±v\Ädá þ6‘Iðø 9²veÑBE¹©TeU5K_;Ç#ͰEÈÇBèõW8ïà>0‚å±nÃ3œÁ³#ð +©$4Hü» ¹pÙÙ±ÐqÏ,åxÙ¤0Mäí„ë <‰À)ò˜%Ï ¶ÅÁ#÷ +w#y-þoÒbóƒâÝd\ÖY£Pdìv±º.qÿ$ÇJ¤ ïŠÓò iµ^v=øY”É•Dw”¢¬Bá¨ØQ3`2v^¨r æIŽ—m‹,£Gy5£šíeKÔÌÏBùË¢£f¦Sî–$-Ñ(j&¨Li!ÚQ3àãéeÉ?*jfÜò÷²ïcÕ5×'`'ÕѨû§5èe ¨>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream -H‰|SmPSg¾—po ²i%^sí½·êìê•–OËÒ‚|ˆ¦QÁÁ%(Q ˜PkWk!·¶D@QP¡Êò¡«°0Ò.Rˆ‚® -le¶ÌØö\|™Ù½aÿì¯ýóÌyΙóœsÞs^svÂp_)‰Ü·ëÝØ:R¯ÓnÚ£>œ®Ô9‚,Oã¼§3¿ÆB›‘åõë×1<|ž®l^C.¸cN8>6®Ír§¸Í[¼è·Œþ^Ü__ßeôãv¨´)jN~BoPg蹨ÌT­.K«SÔ*onGz:·,¡çtj½Z—ãpþ·#N£çÔCšZÇ)…àa¯S«8ƒN©Rg(uG9­#ò?ôÐÿ)Åi29A‹SdjLnœzN™©òT´ËURµÙ™F­÷öùPþñ‰,5À©Ô‡0 ÇVºbë0ì= ‹Ã°xS`ØJá ±XÌŠÝÃþ«ðZ'ÜÉàT*ò™EÎŒs©ó(Nœ]WÜÆÏ·á®o;ó…‹ñK…$XP7…Bá<s$âP²ô…x‰<¸lC(8É·S 9˜$ï_÷¿e‡Kv”/n¤ç&ä†2YtÔ<‰V€”†õ cº $èmö󨙦µÈ%¯Ý¼ï%lƒˆÎ޲’Ë9|ßDq®;ä½Þ†<‹L)Dk·_ŒâÂLJŠm¼Õ†oñÉ6t×,n¿OÀÛà95n²¹ø—ˆ ‹Öª25±DõõÖëéù›qQlÑÆ0„¶|é©Kò†àË~P ¹ÃÔtÔŒt®¹ŽÊ¹Ùk°Ñà;>ójfgOpkKžÕ6v ÈÆv UQ:†©Š&*kÚªÚéñº¤}¡AG¢ÙĨVR:÷bBåkb¦´pDÐq»«+tŽa b†_àåÓ y.â×{@ÄÌ /¿ÁKŒZ–¶»áŠ# Qf1l…c—®WÔT6¬¶FM‘F#CË6<ÿÇ8,N‹øˆE†B½¤õ–+µ%·iðèÜåobý~¯ˆß[Y‘ÅdG¹7zr‡hxgáN(;÷ײWRJhý§Fã)¶‚ 0‘ÂΠ»|Gðú)¨¤ý7PŸdcóÃ(öºDG'ý­’¡m3èqpa•AÏ‘8\¡IIg -Éò_l ÀTU—T™.¹ ¯¥Ê'qì#[QráO_1÷®´ÖuÐãroïý1Û——û؆wñÞ¢.aŽ`È(F_/ 3$Ü⧉naÚ^¾ùïî·¿ßùôÿØ9-†óy¼5?ÄXBWÐMÖ"–Ž>k¸öðlÎëçßèǦáÞ÷"¸ÁŸ¡ì/ô>Ú´ð.ü\á­§ðlØ´€XÖE½jZˆð˜ÿ÷âžý<{÷å+V’†"r`× /úÎÑüܲKçm(‘š‚ -3y ¶SÛKùó$|¿Ýú/ä²'-þ0k$¥ãωÒœdNˆ•M%QVËK)#ï¿ØÙÒCÏý-àwH¤Øî³·ù›OXc©ÑzA&AWó‡ð¹IÑ?O!—°È'è¢xÏ—ÉÕÇýåº?6Ñõ×Î}q‘-è' -óNèÄ“õ=,”ûrV,9må[ÁÛjµ^±’èuÔ*f.§üÁ͵ØmÅÀöö·_ñ_­â¨ÿÿÿÿÿµ€[j endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|SmPSg¾—po ²i%^sí½·êtu‹€J˧ˆ²´ ¢iTpp $J&ÔÚÆZ$Á­-ÐÁ" +*TY>tF@ÚåC +QÁB‘­Ì–Ûž‹/3»7ìŸýµž9Ï9sžsÎ{΋cÎNŽã+c·ïU$F¼{\§QªâuÚ »Õ‡²Ó•:Gåiœ÷tæW¹Qh#²¼~ý:†€o“åÍ«ÈywÌ ÇÇ^„k³„ÜCinc`à&/ú-¡¿·É××w ý¸m*mŠš“×Ôz.*3U«ËÒꔵʛۖžÎ-Iè9Z¯Öå8œÿíˆÓè9µÆ¦ÖqJ!xH#äëÔ*ΠSªÔJÝNëˆü=øJqšLNÐ♓§žSfª|íR•Tmv¦A§Që½}>”|Ì¡MFz*Ä’¼!ø²TCî055#m®£rnôl4øŽÏ¼šÙÑ\ÁšÅÒù§µ]²±]#hED”N§aª¢‰Êš¶ªvz¼.iohÐáh61ª•”Î>ŸPùšX…)-tÜ®ê +cˆ„áçxù4hž‰øµ13è˯ó£–ÅÍÄ.¸"ÄHE”Y ›áèÅk5• +-¤QS¤ÑÈPÆR£ Áÿ Ó">b¡P/©D}„årmÉ-<:wú›X¿?(â÷TVd1Ù‘DîõžÜ!Þ™ÿ¤ÊÎ}µìåÔ„ÒZÿ©Ñx’­†`L¤°3èîß¼~ +ªi¿…uÔ'ÙEGÙÀüðÊ=.ÑÑIï¢2´eaÀ=N ¬2è‡+4)éL!Yþ«m˜ªê’*ÓÅ"äµXCù$Žýjd+JÎÿù+æîåÖºz¼Cîí½/fëÒrÙð.Þ[Ô%̱†ŒbôÍâ01CÂM~šè¦íå›ÿî~ë‡Ï@ÿÓÒi8—GÁ[s#@Œ%tÝ`-béèÓ†«îËÆcÆ;"ý"Öʯˇ5Œ©Nkwʼ&‚`cû-ìwMm#_3vÝ}uˆ,r_b#5ñÍÔØuÅÞøäTù16¬2ñ›>Ygã=#É AÐ:€7MAÙ´èe>u©¨Ætãì÷篵µºô~wï'X#ƒ @ÀÐJ´rÂЛHôx3¸öµ_¹}“±§BÓw'«¦íÏÙ÷YFa¶ñ˜ÙüøZêEÓHôiaþç§Y•!)3žÞšØ5þ¢£ÿ1+‰=óÊúA?à>2ÙöÈR~ÄLÔþµ ‡–þ N#•-wÙúºªÛݲŸÂ:¢+á4ù¡+-]}²ŽœÆ´+L½R^îGÇíëoL×™,'X 'ìcN8¬dáÓ&{Øù9Hy´X° ”¤N±àá¼\wÛ$dLBú¤tÜæ1 wÈrsùÙóÌí²ÆÛ÷ézy(‹Z&¡]\a©(±2-å¹ÕFÕ˽YtuÄâÕtäTv&“{òXÎÉ,#Ù•“ÐEHNÊb IikÁ"”´¤šRd’óúù7úñ†i¸ûƒ®ó§)${Ç }€6Ì¿¿Wxë |ë6Ì#–5FQ¯šÖ"<&Äÿý¸§¿¼¸óò+IC9°s}ïh~ +nÚ¥s6”HMA…™Ü_Û©í¥üe¶Ãï6ÿ ¹†ìN‹?ÄIéxÁ3"„4'™beSI”ÕrÞRÊHçú/t¶ôг ø=)¶zÇìiþöÖXj´ž—IЕüa€|vR4ËÏQÈ%,ò1º ÞýerõQF©îOMtýÕ³_\` ú‰Â¼…:ñD} eà>€ÜKNYùcVð¶Z­—­$:hµŠ™K)ts-v[6ð†}™½Äí7üW+øyê?ÿÿÿÿØÏ[o endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref 0 31 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000019014 00000 n +0000020704 00000 n 0000000000 00000 f -0000019065 00000 n +0000020755 00000 n 0000000000 00000 f 0000000000 00000 f -0000022128 00000 n -0000022200 00000 n -0000022340 00000 n -0000023939 00000 n +0000023735 00000 n +0000023807 00000 n +0000023947 00000 n +0000025570 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000073499 00000 n -0000073315 00000 n -0000076083 00000 n -0000019477 00000 n -0000075970 00000 n -0000021626 00000 n -0000072741 00000 n -0000072789 00000 n -0000073383 00000 n -0000073414 00000 n -0000073829 00000 n -0000074161 00000 n -0000076108 00000 n -trailer <]>> startxref 76297 %%EOF \ No newline at end of file +0000085142 00000 n +0000084958 00000 n +0000087726 00000 n +0000021167 00000 n +0000087613 00000 n +0000023208 00000 n +0000084384 00000 n +0000084432 00000 n +0000085026 00000 n +0000085057 00000 n +0000085472 00000 n +0000085804 00000 n +0000087751 00000 n +trailer <<3C51EB0921F149FFAB3B407BB58EE666>]>> startxref 87940 %%EOF \ No newline at end of file From 30f6515dda4fb37d80fa87988f3711c38d9535fb Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 14 Jun 2024 12:10:00 -0500 Subject: [PATCH 012/357] Removed option for multiple extra mods --- CageUI/resources/web/CageUI/static/legend.svg | 101 +---------- CageUI/src/client/cageui.scss | 10 ++ .../components/CageDetailsModifications.tsx | 68 +++---- .../src/client/components/ModificationRow.tsx | 121 ++++--------- CageUI/src/client/components/RoomDisplay.tsx | 3 - CageUI/src/client/components/RoomLayout.tsx | 2 +- CageUI/src/client/components/helpers.ts | 170 +++++------------- CageUI/src/client/components/typings.ts | 45 +++-- 8 files changed, 134 insertions(+), 386 deletions(-) diff --git a/CageUI/resources/web/CageUI/static/legend.svg b/CageUI/resources/web/CageUI/static/legend.svg index ac92c9a88..75c0fb5f3 100644 --- a/CageUI/resources/web/CageUI/static/legend.svg +++ b/CageUI/resources/web/CageUI/static/legend.svg @@ -1,100 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Solid Divider - - - Protected Contact Divider - - - Visual Contact Divider - - - Privacy Divider - - - Standard Floor - - - Mesh Floor - - - Mesh Floor x2 - - - Play Cage - - - Extension - - - C-Tunnel - - - - - - - \ No newline at end of file +Solid DividerProtected Contact DividerVisual Contact DividerPrivacy DividerStandard FloorMesh FloorMesh Floor x2Play CageExtensionC-Tunnel \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index dbfed7ab8..664721c7f 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -281,4 +281,14 @@ .legend-header { margin-bottom: 20px; +} + +.new-mod-row-btn { + font-size: 40px; + background-color: transparent; + background-repeat: no-repeat; + border: none; + cursor: pointer; + overflow: hidden; + outline: none; } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx index 1dce4b988..e1bcd5f53 100644 --- a/CageUI/src/client/components/CageDetailsModifications.tsx +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -1,70 +1,43 @@ import * as React from 'react'; import { FC, useEffect, useState } from 'react'; -import { findAffCages, findDetails, getModOptions } from './helpers'; +import { findAffCages, getModOptions } from './helpers'; import { ModificationRow } from './ModificationRow'; import { useCurrentContext } from './ContextManager'; -import {ConfirmationPopup} from './ConfirmationPopup'; -import { Cage } from './typings'; +import { ConfirmationPopup } from './ConfirmationPopup'; interface CageDetailsModificationsProps { closeDetails: () => void; } export const CageDetailsModifications: FC = (props) => { const {closeDetails} = props; - const {saveMod, setRoom, clickedRack, clickedCagePartners, setIsEditing, isEditing, modRows, setModRows, cageDetails} = useCurrentContext(); + const {saveMod, setIsEditing, modRows, setModRows, cageDetails} = useCurrentContext(); const [isPopupOpen, setIsPopupOpen] = useState(false); - useEffect(() => { - console.log("I Render"); - }, []); // Toggles editing mode for cage mods const editMode = () => { - console.log("Add Mod"); setIsEditing(prevState => !prevState); } - useEffect(() => { - console.log("Load Details: ", cageDetails); + const newModRows = []; cageDetails.forEach((cage) => { - const newModRows = Object.keys(cage.cageState).map((key, idx) => { + const tempModRows = Object.keys(cage.cageState).map((key, idx) => { const modOptions = getModOptions(key); - if (Array.isArray(cage.cageState[key])) { // finds extra mods - return( - cage.cageState[key].map((mod, idx) => { - if (mod.name === "") return; - return( - - ); - })); - } else { // finds separators - return( - - ); - } + return( + + ); }); - setModRows(() => [...newModRows]); - }) - }, [cageDetails]); - - useEffect(() => { - console.log("MR: ", modRows); - }, [modRows]); + newModRows.push(...tempModRows); + }); + setModRows(() => [...newModRows]); + }, [cageDetails]); return (
@@ -78,7 +51,7 @@ export const CageDetailsModifications: FC = (prop

Modifications

diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index f98afec86..611631314 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -12,7 +12,7 @@ import { Cage, CageActionProps, CageNumber, DEFAULT_CAGE_TYPE, EHRCage, - GroupId, + GroupId, jsonDataType, LayoutDragProps, LayoutHistoryData, LocationCoords, @@ -29,6 +29,8 @@ import { import * as React from 'react'; import { testCagesInRoom } from '../layoutEditor/testData'; import { zoomTransform } from 'd3'; +import { SaveRowsOptions } from '@labkey/api/dist/labkey/query/Rows'; +import { ActionURL, Query } from '@labkey/api'; export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { layoutSvg.append("g").attr("class", "grid"); @@ -657,7 +659,6 @@ export const buildNewLocs = (prevRoomData: LayoutHistoryData[]): UnitLocations = cellY: roomItem.y_coord }); }) - return newUnitLocs; } @@ -817,7 +818,18 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection { + return new Promise((resolve, reject) => { + let options: SaveRowsOptions = { + commands: jsonData.commands, + containerPath: ActionURL.getContainer(), + success: (data) => {resolve(data)}, + failure: (data) => {reject(data)}, + }; + Query.saveRows(options); + }); +}; \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 5301f0740..c240610a8 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -1,5 +1,6 @@ import * as d3 from 'd3'; import * as React from 'react'; +import { Command } from '@labkey/api/dist/labkey/query/Rows'; type CageSize = { width: number; @@ -42,6 +43,10 @@ export interface LayoutHistoryData { x_coord: number; y_coord: number; scale: number; + start_date?: Date; + end_date?: Date; + room?: string; + rowid?: number; } export interface Page { @@ -519,3 +524,7 @@ export const DefaultCageState = { }, } } + +export interface jsonDataType { + commands: Array; +} \ No newline at end of file diff --git a/CageUI/src/client/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/layoutEditor/LayoutEditor.tsx index 86066c519..1468319ae 100644 --- a/CageUI/src/client/layoutEditor/LayoutEditor.tsx +++ b/CageUI/src/client/layoutEditor/LayoutEditor.tsx @@ -32,7 +32,7 @@ export const LayoutEditor: FC = (props) => { const prevRoomConfig: SelectRowsOptions = { schemaName: 'wnprc', queryName: 'layout_history', - columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale'], + columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid'], filterArray: [ Filter.create('room', roomName, Filter.Types.EQUALS), Filter.create('end_date', null, Filter.Types.ISBLANK) diff --git a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml index deaa67e30..25ca1ee7d 100644 --- a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml +++ b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml @@ -4,7 +4,9 @@ Layout History - + + true + From 5619a0c2502cb591d1fc2bbba6c1eb751ac01b79 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 21 Nov 2024 10:42:36 -0600 Subject: [PATCH 071/357] remove unused types/functions --- .../src/client/components/ContextManager.tsx | 27 +---- .../client/components/LayoutEditorHelpers.ts | 101 +++--------------- CageUI/src/client/components/typings.ts | 4 - 3 files changed, 16 insertions(+), 116 deletions(-) diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index 1f416d7e6..5a269f28a 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -5,7 +5,7 @@ import { CageNumber, DEFAULT_CAGE_TYPE, DEFAULT_PEN_TYPE, - GroupId, jsonDataType, + GroupId, LayoutHistoryData, LocationCoords, Page, PrevRoom, @@ -34,7 +34,7 @@ import { findNextGroupId, findRackInGroup, findSelectObjRack, - isRack, saveRowsDirect + isRack, } from './LayoutEditorHelpers'; import { BaseType } from 'd3'; import { Query } from '@labkey/api'; @@ -744,29 +744,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo } }); - - - /* - const jsonData: jsonDataType = { - commands: [{ - command: 'insertWithKeys', - schemaName: 'wnprc', - queryName: 'layout_history', - rows: dataToSave - },{ - command: 'update', - schemaName: 'wnprc', - queryName: 'layout_history', - rows: dataToSave - }] - } - - saveRowsDirect(jsonData).then((data) => { - - }).catch((err) => { - console.log("Error Saving Rows"); - })*/ - //Query.saveRows() } } diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index 611631314..99111d467 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -1,36 +1,36 @@ // Layout Editor Helpers import * as d3 from 'd3'; import { - convertCageNumToNum, - getTranslation, getTypeClassFromElement, + getTranslation, + getTypeClassFromElement, isTextEditable, parseGroupId, - parseRack, parseRoomItemNum, + parseRack, + parseRoomItemNum, parseRoomItemType } from './helpers'; import { Cage, - CageActionProps, CageNumber, DEFAULT_CAGE_TYPE, - EHRCage, - GroupId, jsonDataType, + CageActionProps, + CageNumber, + DEFAULT_CAGE_TYPE, + GroupId, LayoutDragProps, LayoutHistoryData, LocationCoords, - OffsetProps, PrevRoom, + OffsetProps, + PrevRoom, Rack, - RackActions, RackGroup, - RackTypes, Room, - RoomItem, - RoomItemClass, + RackActions, + RackGroup, + RackTypes, + Room, RoomObject, RoomObjectTypes, StartDragProps, UnitLocations } from './typings'; import * as React from 'react'; -import { testCagesInRoom } from '../layoutEditor/testData'; import { zoomTransform } from 'd3'; -import { SaveRowsOptions } from '@labkey/api/dist/labkey/query/Rows'; -import { ActionURL, Query } from '@labkey/api'; export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { layoutSvg.append("g").attr("class", "grid"); @@ -153,35 +153,6 @@ function resetNodeTranslationsWithZoom(targetNode, draggedNode, layoutSvg) { draggedNode.setAttribute("transform", `translate(${distanceX}, ${distanceY})`); } -function findNestedCageElement(parentId) { - // Find the parent element (in this case, the outermost element) - const parentElement = document.getElementById(parentId); - - if (!parentElement) { - console.error('Parent element not found'); - return null; - } - - // Use a recursive function to search through all nested elements - function searchNestedElements(element) { - // Check if the current element's ID starts with 'cage-' - if (element.id && element.id.startsWith('cage-')) { - return element; - } - - // If not found, search through child elements - for (let child of element.children) { - const result = searchNestedElements(child); - if (result) return result; - } - - return null; - } - - // Start the search from the parent element - return searchNestedElements(parentElement); -} - export function setupEditCageEvent( element: SVGTextElement, setClickedCage: (cageId: string) => void, @@ -233,12 +204,6 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack } = layoutDragProps; console.log("Performing Merge"); - //console.log("Racks: ", targetRack, draggedRack); - //console.log("Cages: ", targetCage, draggedCage); - - // Start cage count at the first cage in the target shape - // TODO fix this so that it matches correct types while maintaining their correct numbering system - //let newCageNums = convertCageNumToNum(targetRack.cages.find(cage => cage.id === 1).cageNum); function isConnected(selectionNode){ return !!selectionNode.closest(`[id*='group']`); @@ -528,32 +493,6 @@ export function createEndDragInLayout(props: LayoutDragProps) { console.log("#3: ", cellX, cellY, shape.node()); moveItem(shape.attr('id'), itemClass, cellX, cellY, transform.k); - - // Set rack state correctly with move/updated coords - - - /* - //Update all shape placements - if(shape.selectChildren().size() > 1) { - //group of groups - shape.selectChildren().each(function (d, index) { - const currChild = d3.select(this); - const cageNum = parseCage(currChild.attr('id')); - if(index === 0){ // When in a rack, only the cage at index 0 can snap to other cages - setCurrCage(cageNum); - } - const currCoords = getTranslation(currChild.attr('transform')); - const newX = currCoords.x + cellX; - const newY = currCoords.y + cellY; - moveCage(cageNum, newX, newY, transform.k); - }); - }else{ - // group of svg - const currCage = shape.select( '[id*="cage-"]'); - const cageNum = parseCage(currCage.attr('id')); - setCurrCage(cageNum); - moveCage(cageNum, cellX, cellY, transform.k); - }*/ } else { // remove rack from room /*console.log("deleting cage from room", getRackFromClass(shape.attr('class'))); @@ -821,15 +760,3 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection { - return new Promise((resolve, reject) => { - let options: SaveRowsOptions = { - commands: jsonData.commands, - containerPath: ActionURL.getContainer(), - success: (data) => {resolve(data)}, - failure: (data) => {reject(data)}, - }; - Query.saveRows(options); - }); -}; \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index c240610a8..0e5e47acd 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -523,8 +523,4 @@ export const DefaultCageState = { } }, } -} - -export interface jsonDataType { - commands: Array; } \ No newline at end of file From fb675cd2378d8eee57be7ef2f8ce4c3ae6f34fcf Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 21 Nov 2024 11:31:19 -0600 Subject: [PATCH 072/357] Fixed bug with racks and grouped racks not being hard locked to the grid when dragging and zooming the grid --- CageUI/src/client/components/Editor.tsx | 2 +- CageUI/src/client/components/LayoutEditorHelpers.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CageUI/src/client/components/Editor.tsx b/CageUI/src/client/components/Editor.tsx index 916bb433d..e6651a3ed 100644 --- a/CageUI/src/client/components/Editor.tsx +++ b/CageUI/src/client/components/Editor.tsx @@ -423,7 +423,7 @@ const Editor = () => { const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); // Apply zoom/pan to each individual "room-object" group, preserving their relative positions - layoutSvg.selectAll(".room-obj").each(function(d: any) { + layoutSvg.selectAll(".draggable").each(function(d: any) { const group = d3.select(this); // Use type assertion to tell TypeScript that d has x and y properties const newX = transform.applyX((d as { x: number }).x); diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index 99111d467..a2a96c407 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -309,11 +309,7 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack newGroup.attr('style', styleAttr); } - //Attach data from target to new shape - const targetData = targetRackShape.datum() as { x: number; y: number }; - if(targetData) { - newGroup.data([{x: targetData.x, y: targetData.y}]) - } + } else{ // action = connect @@ -356,6 +352,11 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack newGroup.attr('transform', transformAttr); } + //Attach data from target to new shape + const targetData = targetRackShape.datum() as { x: number; y: number }; + if(targetData) { + newGroup.data([{x: targetData.x, y: targetData.y}]) + } const addProps: LayoutDragProps = { gridSize: gridSize, From 3c9c50577b9e50a700be827b32edf3ba86e5844d Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Tue, 26 Nov 2024 14:33:39 -0600 Subject: [PATCH 073/357] Added the ability to delete cages from the layout editor --- CageUI/src/client/cageui.scss | 8 +- .../src/client/components/ContextManager.tsx | 143 +++++++--- CageUI/src/client/components/Editor.tsx | 244 ++++++++++-------- .../client/components/EditorContextMenu.tsx | 22 +- .../client/components/LayoutEditorHelpers.ts | 156 ++++++----- .../src/client/components/LayoutTooltip.tsx | 9 +- CageUI/src/client/components/RackTemplate.tsx | 28 -- .../client/components/RoomItemTemplate.tsx | 27 ++ CageUI/src/client/components/helpers.ts | 9 +- CageUI/src/client/components/typings.ts | 36 +-- .../src/client/layoutEditor/LayoutEditor.tsx | 3 +- CageUI/src/client/layoutEditor/testData.ts | 208 --------------- WNPRC_EHR/resources/data/lookup_sets.tsv | 4 +- .../queries/wnprc/layout_history.query.xml | 1 + .../postgresql/wnprc-22.010-22.011.sql | 75 +++++- WNPRC_EHR/resources/schemas/wnprc.xml | 13 +- 16 files changed, 494 insertions(+), 492 deletions(-) delete mode 100644 CageUI/src/client/components/RackTemplate.tsx create mode 100644 CageUI/src/client/components/RoomItemTemplate.tsx delete mode 100644 CageUI/src/client/layoutEditor/testData.ts diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 94f5eebf8..f2845eb38 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -146,7 +146,7 @@ .popup-overlay { display: block; /* Hidden by default */ position: fixed; /* Stay in place */ - z-index: 1; /* Sit on top */ + z-index: 2; /* Sit on top */ padding-top: 100px; /* Location of the box */ left: 0; top: 0; @@ -837,6 +837,8 @@ menu { background-color: white; font-weight: normal; white-space: nowrap; + min-width: max-content; + z-index: 1; } menu:hover { @@ -848,12 +850,12 @@ menu:hover > menu { display: block; } -menu > menu { +menu .menu-item { display: none; position: relative; top: -20px; left: 100%; - width: 55px; + width: 100%; } menu[title]:before { diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index 5a269f28a..a8c9e696b 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -4,7 +4,7 @@ import { Cage, CageNumber, DEFAULT_CAGE_TYPE, - DEFAULT_PEN_TYPE, + DEFAULT_PEN_TYPE, DeleteActions, GroupId, LayoutHistoryData, LocationCoords, @@ -13,21 +13,20 @@ import { RackActions, RackGroup, RackTypes, Room, - RoomItem, - RoomItemClass, + RoomItem, RoomItemClass, + RoomItemType, RoomObject, RoomObjectTypes, UnitLocations } from './typings'; import { convertCageNumToNum, - getTranslation, parseGroupId, + getTranslation, parseLongId, parseRoomItemNum, parseRoomItemType, - removeCircularReferences + removeCircularReferences, zeroPadName } from './helpers'; import * as d3 from 'd3'; -import { testCagesInRoom, testLayoutHistory, testRoomObj } from '../layoutEditor/testData'; import { addPrevRoomSvgs, buildNewLocalRoom, buildNewLocs, @@ -36,9 +35,7 @@ import { findSelectObjRack, isRack, } from './LayoutEditorHelpers'; -import { BaseType } from 'd3'; import { Query } from '@labkey/api'; -import { SaveRowsOptions, SaveRowsResponse } from '@labkey/api/dist/labkey/query/Rows'; import { ExtendedXMLHttpRequest } from '@labkey/api/dist/labkey/Utils'; import { RequestOptions } from '@labkey/api/dist/labkey/Ajax'; @@ -81,9 +78,11 @@ export interface LayoutContextType { room: Room; setRoom: React.Dispatch>; saveRoom: () => void; + layoutSvg: d3.Selection; + setLayoutSvg: React.Dispatch>>; unitLocs: UnitLocations; localRoom: Room; - addRoomItem: (itemClass: RoomItemClass, itemType: RackTypes | RoomObjectTypes, itemId: string, x: number, y: number, scale: number) => void; + addRoomItem: (itemType: RoomItemType, itemId: string, x: number, y: number, scale: number) => void; delRack: (rackId: string) => void; changeCageNum: (numBefore: number, numAfter: number) => void; cageNumChange: {before: number, after: number}; @@ -92,7 +91,7 @@ export interface LayoutContextType { getNextCageNum: (rackType: RackTypes) => number; selectedObj: string; setSelectedObj: React.Dispatch>; - delCage: () => void; + delCage: (cage: Cage, rack: Rack, rackGroup: RackGroup, action: DeleteActions) => void; scale: number; setScale: React.Dispatch>; } @@ -237,7 +236,10 @@ export const LayoutContextProvider: FC = ({children, prevRoo objects: [] }); + const [layoutSvg, setLayoutSvg] = useState>(null); + const [activeGroups, setActiveGroups] = useState([]); // Tracks currently active groups of racks + const [nextAvailGroup, setNextAvailGroup] = useState(`rack-group-1`); // Tracks currently active groups of racks const [cageNumChange, setCageNumChange] = useState<{before: number, after: number} | null>(null); const [selectedObj, setSelectedObj] = useState(null); @@ -246,9 +248,41 @@ export const LayoutContextProvider: FC = ({children, prevRoo // instead of tying scale to each location, manage one scale for the whole layout const [scale, setScale] = useState(1); + /* + Fixes the group ids of the rackGroups state in room and the svg ids for those state objects + */ + const fixGroupIds = () => { + + setLocalRoom((prevRoom) => { + + const sortedGroups = prevRoom.rackGroups.sort((groupA, groupB) => { + const aId = parseLongId(groupA.groupId); + const bId = parseLongId(groupB.groupId); + return aId - bId; + }); + + const newGroups: RackGroup[] = sortedGroups.map((group, index) => { + const groupSvg = layoutSvg.select(`[id=${group.groupId}]`); + const newId = index + 1; + if(!groupSvg.empty()){ // if a group svg exists for the group, rename to new group + groupSvg.attr('id', `rack-group-${newId}`); + } + return { + ...group, + groupId: `rack-group-${newId}` as GroupId + }; + }); + const lastId: number = parseLongId(newGroups[newGroups.length - 1].groupId); + setNextAvailGroup(`rack-group-${lastId + 1}` as GroupId); + return { + ...prevRoom, + rackGroups: newGroups + }; + }) + } + const addRack = (id: string, x: number, y: number, newScale: number, rackType: RackTypes) => { const newCageNum: CageNumber = `${rackType}-${getNextCageNum(rackType)}`; - const newGroupId: GroupId = `rack-group-${findNextGroupId(activeGroups)}`; const firstCage: Cage = { adjCages: undefined, cageState: undefined, @@ -280,15 +314,17 @@ export const LayoutContextProvider: FC = ({children, prevRoo }; const newRackGroup: RackGroup = { - groupId: newGroupId, + groupId: nextAvailGroup, racks: [newRack], x: x, y: y, scale: newScale, } - setActiveGroups(prevState => [...prevState, newGroupId]); - + setNextAvailGroup(prevState => { + const nextId = parseLongId(prevState) + 1; + return `rack-group-${nextId}` as GroupId + }) setLocalRoom(prevRoom => ({ ...prevRoom, rackGroups: [...prevRoom.rackGroups, newRackGroup] @@ -354,9 +390,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo }).concat(mergedRack) } - // When merging two racks we lose the dragged group - setActiveGroups(prevGroups => prevGroups.filter(group => group !== dragGroup.groupId)); - // Filter out the original racks and add the merged rack return ({ ...prevRoom, @@ -406,9 +439,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo }).filter((group): group is RackGroup => group !== null); // filter out the drag group - // When connecting two racks we lose the dragged group - setActiveGroups(prevGroups => prevGroups.filter(group => group !== dragGroup.groupId)); - // Return the updated room return { ...prevRoom, @@ -423,10 +453,12 @@ export const LayoutContextProvider: FC = ({children, prevRoo }else{ // action = connect connectLocalRacks(targetId, dragId, newGroup); } + // After merging / connecting fix the group ids so that they have no gaps + fixGroupIds(); } - const addRoomItem = (itemClass: RoomItemClass, itemType: RackTypes | RoomObjectTypes, itemId: string, x: number, y: number, scale: number) => { - if(itemClass === 'caging'){ + const addRoomItem = (itemType: RoomItemType, itemId: string, x: number, y: number, scale: number) => { + if(isRack(itemType)){ addRack(itemId, x, y, scale, itemType as RackTypes); }else{ const newRoomObj: RoomObject = { @@ -559,8 +591,48 @@ export const LayoutContextProvider: FC = ({children, prevRoo }));*/ } - const delCage = () => { - console.log("deleting: ", clickedCage) + // + const delCage = (cage: Cage, rack: Rack, rackGroup: RackGroup, action: DeleteActions) => { + console.log("deleting: ", selectedObj); + + setLocalRoom((prevRoom) => { + let updatedRoom: Room; + if(action === 'cage'){ // remove cage from rack, keep rack + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.map((group) => ({ + ...group, + racks: group.racks.map(r => ({ + ...r, + cages: r.cages.filter(c => c.cageNum !== cage.cageNum) + })) + } + )) + } + }else if(action === 'rack'){ // remove rack from rack group, keep rack group + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.map((group) => ({ + ...group, + racks: group.racks.filter((r) => r.itemId !== rack.itemId) + } + )) + } + }else if (action === 'group'){ // remove rack group + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.filter((group) => + group.groupId !== rackGroup.groupId + ) + } + } + return updatedRoom; + }); + + setUnitLocs((prevLocs) => ({ + ...prevLocs, + [rack.type.type]: prevLocs[rack.type.type].filter((loc) => loc.num !== cage.cageNum) + })); } const changeCageNum = (numBefore: number, numAfter: number) => { @@ -579,7 +651,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo prevRoom.rackGroups.forEach(group => { if(currRack) return; currRack = findSelectObjRack(group.racks, selectedObj) - }) + }); if (!currRack) return prevRoom; // If the clicked rack is not found, return the previous state @@ -594,7 +666,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo ...rack, cages: rack.cages.map((cage: Cage): Cage => cage.cageNum === selectedObj // Only update the cage with matching cageNum - ? { ...cage, cageNum: `${rack.type}-${numAfter}` } as Cage + ? { ...cage, cageNum: `${rack.type.type}-${numAfter}` } as Cage : cage ) } @@ -643,8 +715,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo const newLocalRoom: Room = buildNewLocalRoom(prevRoom); const newUnitLocs: UnitLocations = buildNewLocs(prevRoom.data); const newGroupIds: GroupId[] = newLocalRoom.rackGroups.map((group) => group.groupId); - const layoutSvg: d3.Selection - = d3.select('[id^=layout-svg]'); console.log("Load Data: ", prevRoom); console.log("New Room State: ", newLocalRoom); @@ -669,17 +739,19 @@ export const LayoutContextProvider: FC = ({children, prevRoo const newStartDate = new Date(); // TODO fix defaults by prmpting users to fill them in localRoom.rackGroups.forEach((group) => { + const groupId = parseLongId(group.groupId); group.racks.forEach((rack) => { + // if rack is a default, assign rack id to 0(default id) and use the defaults id as id in default_rack + const defaultId = rack.itemId.includes('default') ? parseLongId(rack.itemId) : null; + const newRackId = defaultId ? 0 : parseRoomItemNum(rack.itemId); rack.cages.forEach((cage) => { const cageLocData = unitLocs[rack.type.type].find((loc) => loc.num === cage.cageNum); - if(rack.itemId.includes('default')){ // TODO temp fix to assign group number as rack id - rack.itemId = `${parseGroupId(group.groupId)}`; - } const newCageData: LayoutHistoryData = { - cage: `${parseRoomItemNum(cage.cageNum)}`, + cage: zeroPadName(parseRoomItemNum(cage.cageNum), 4), // converts number into string with leading 0s end_date: null, - rack: rack.itemId, - rack_group: `${parseGroupId(group.groupId)}`, + rack: newRackId, + rack_group: groupId, + default_rack: defaultId, room: roomName, room_object: null, scale: group.scale, @@ -697,6 +769,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo cage: null, end_date: null, rack: null, + default_rack: null, rack_group: null, room: roomName, room_object: roomObj.type, @@ -751,6 +824,8 @@ export const LayoutContextProvider: FC = ({children, prevRoo { - const MAX_SNAP_DISTANCE = 100; // Adjust this value as needed - const SVG_WIDTH = 1290; - const SVG_HEIGHT = 810; - const SMALL_GRID_RATIO = 4; - const LARGE_GRID_RATIO = 8; - const GRID_SIZE = 30; + const SVG_WIDTH = 1290; // pixel width of the layout svg + const SVG_HEIGHT = 810; // pixel height of the layout svg + const SMALL_GRID_RATIO = 4; // number of cells for length/width of a small cage + const LARGE_GRID_RATIO = 8; // number of cells for length/width of a large cage + const GRID_SIZE = 30; // number of pixels of a cell for length/width const utilsRef = useRef(null); const [showGrid, setShowGrid] = useState(true); - const [addingRoomItem, setAddingRoomItem] = useState(false); - const [layoutSvg, setLayoutSvg] = useState>(null); const [pendingRoomUpdate, setPendingRoomUpdate] = useState(null); const [renameCage, setRenameCage] = useState(false); + const [changeRackType, setChangeRack] = useState(false); const [ctxMenuStyle, setCtxMenuStyle] = useState({ display: 'none', @@ -59,9 +63,10 @@ const Editor = () => { const { localRoom, + layoutSvg, + setLayoutSvg, addRoomItem, room, - delRack, changeCageNum, cageNumChange, moveObjLocation, @@ -74,10 +79,6 @@ const Editor = () => { saveRoom } = useLayoutContext(); - const handleClickRename = (event: React.MouseEvent) => { - event.stopPropagation(); - setRenameCage(true); - }; useEffect(() => { console.log("xxx Room: ", room); @@ -85,9 +86,12 @@ const Editor = () => { console.log("xxx Locs: ", unitLocs); }, [room, localRoom, unitLocs]); - // Effect checks for merging after a rack is moved + // Effect checks for merging/connecting after a rack is moved useEffect(() => { if(!selectedObj || cageNumChange) return; + const objSvg = d3.select(`#${selectedObj}`); + // return if selected object is not a rack group or rack + if(!objSvg.classed('rack') && !objSvg.classed('rack-group')) return; let mergeAvail: boolean = false; let targetCageLoc; @@ -111,12 +115,10 @@ const Editor = () => { // Temp object of cages within the dragged group const cagesInDragged: UnitLocations = (() => { - const tempLocs: UnitLocations = { - attachedPlayCage: [], - cage: [], - pen: [], - tempCage: [] - }; + // create empty unit locations object + const tempLocs: UnitLocations = Object.fromEntries( + Object.values(RackTypes).map(key => [key, [] as LocationCoords[]]) + ) as UnitLocations; draggedRackGroup.forEach((rack) => { tempLocs[rack.type.type] = unitLocs[rack.type.type].filter((unit) => draggedCagesGroup.includes(unit.num)) @@ -191,28 +193,24 @@ const Editor = () => { } if(mergeAvail) { - const targetShape = layoutSvg.select(`[id^="${targetCageLoc.num}"]`); + const targetShape = layoutSvg.select(`#${targetCageLoc.num}`); if(targetShape.empty()) return; // Sometimes it doesn't register a targetShape causing a random crash const targetRackShape = (targetShape.node() as SVGGElement).closest('[class*=rack]'); const {rack: targetRack, rackGroup: targetRackGroup} = findRackInGroup(targetRackShape.getAttribute('id'), localRoom.rackGroups); - const draggedShape = layoutSvg.select(`[id^="${draggedCageLoc.num}"]`); + const draggedShape = layoutSvg.select(`#${draggedCageLoc.num}`); const draggedRackShape = (draggedShape.node() as SVGGElement).closest('[class*=rack]'); const {rack: draggedRack, rackGroup: draggedRackGroup} = findRackInGroup(draggedRackShape.getAttribute('id'), localRoom.rackGroups); const layoutDragProps: LayoutDragProps = { - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - delRack: delRack, gridSize: GRID_SIZE, - layoutSvg: layoutSvg, - moveItem: moveObjLocation, - itemClass: 'caging', // only caging units can be connected/merged + moveItem: moveObjLocation }; const cageActionProps: CageActionProps = { - setEditCageNum: setSelectedObj, + setSelectedObj: setSelectedObj, setCtxMenuStyle: setCtxMenuStyle, } @@ -224,12 +222,12 @@ const Editor = () => { // This effect updates racks for adding to the room useEffect(() => { if(!pendingRoomUpdate) return; - const {draggedShape, cellX, cellY, itemId, updateItemType, itemTypeClass} = pendingRoomUpdate; + const {draggedShape, cellX, cellY, itemId, updateItemType} = pendingRoomUpdate; let group; draggedShape.classed('dragging', false); const transform = d3.zoomTransform(layoutSvg.node()); - if (itemTypeClass !== 'caging') { // adding dragged room object + if (!isRack(updateItemType)) { // adding dragged room object group = layoutSvg.append('g') .data([{x: cellX, y: cellY}]) .attr('class', "draggable room-obj") @@ -252,25 +250,21 @@ const Editor = () => { cageIdText.textContent = `${getNextCageNum(updateItemType as RackTypes)}`; - - placeAndScaleGroup(group, cellX, cellY, transform); } - addRoomItem(itemTypeClass, updateItemType, itemId, cellX, cellY, transform.k); + placeAndScaleGroup(group, cellX, cellY, transform); + + addRoomItem(updateItemType, itemId, cellX, cellY, transform.k); const addProps: LayoutDragProps = { gridSize: GRID_SIZE, - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - layoutSvg: layoutSvg, - delRack: delRack, - moveItem: moveObjLocation, - itemClass: itemTypeClass + moveItem: moveObjLocation }; // Reattach drag listeners for interaction within layout - group.call(d3.drag().on('start', createStartDragInLayout({setRoomItem: setSelectedObj})) - .on('drag', createDragInLayout({layoutSvg: layoutSvg})) + group.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) + .on('drag', createDragInLayout()) .on('end', createEndDragInLayout(addProps))); - // Reattach click listener for text editing + // attach click listener for context menu group.selectAll('text').each(function () { const textElement: SVGTextElement = d3.select(this).node() as SVGTextElement; textElement.setAttribute('contentEditable', 'true'); @@ -278,7 +272,7 @@ const Editor = () => { (textElement.children[0] as SVGTSpanElement).style.pointerEvents = "auto"; setupEditCageEvent(textElement, setSelectedObj, setCtxMenuStyle, updateItemType as RackTypes); }); - setAddingRoomItem(false); + setPendingRoomUpdate(null); }, [pendingRoomUpdate]); // Effect for handling the grid layout and drag effects on the layout and from the utils @@ -339,32 +333,16 @@ const Editor = () => { if (targetRect) { const cellX = targetRect.x; const cellY = targetRect.y; + const draggedNodeId = draggedShape.attr('id'); - // First expression is if dragged shape is a rack, the second is a room object. - const draggedNodeId = ((draggedShape.node() as SVGElement).firstChild.firstChild as SVGElement).getAttribute('id') || ((draggedShape.node() as SVGElement).firstChild as SVGElement).getAttribute('id'); - - let itemType: RoomItemClass; - let updateItemType: RackTypes | RoomObjectTypes; + const updateItemType: RoomItemType = parseWrapperId(draggedNodeId); let newId: string; - if(draggedNodeId.includes("pen")) { - updateItemType = RackTypes.Pen; - itemType = 'caging'; - }else if (draggedNodeId.includes('cage')) { - updateItemType = RackTypes.Cage; - itemType = 'caging'; - }else if (draggedNodeId.includes('door')) { - updateItemType = RoomObjectTypes.Door; - itemType = 'roomObj'; - }else if (draggedNodeId.includes('drain')) { - updateItemType = RoomObjectTypes.Drain; - itemType = 'roomObj'; - } - if(itemType === 'caging'){ + if(isRack(updateItemType)){ // get new id for rack const tempId = localRoom.rackGroups.reduce((max, group) => { const groupMax = group.racks.reduce((groupMax, rack) => { - return parseRoomItemNum(rack.itemId) > groupMax ? parseRoomItemNum(rack.itemId) : groupMax; + return parseLongId(rack.itemId) > groupMax ? parseLongId(rack.itemId) : groupMax; }, 0); return groupMax > max ? groupMax : max; }, 0) + 1; @@ -381,23 +359,14 @@ const Editor = () => { cellX: cellX, cellY: cellY, itemId: newId, - itemTypeClass: itemType, updateItemType: updateItemType }); - setAddingRoomItem(true); } else { draggedShape.remove(); } } }, [ localRoom, layoutSvg]); - // Cleanup for after updating rack - useEffect(() => { - if(!addingRoomItem){ - setPendingRoomUpdate(null); - } - }, [addingRoomItem]); - // After state is done updating for cage id change. refresh svg text and ids useEffect(() => { if(cageNumChange){ @@ -405,8 +374,7 @@ const Editor = () => { const objType = parseRoomItemType(selectedObj); let group = layoutSvg.select(`#${selectedObj}`).attr('id', `${objType}-${cageNumChange.after}`); (group.selectAll('tspan').node() as SVGTSpanElement).textContent = cageNumChange.after.toString(); - setCtxMenuStyle({ display: 'none', top: '0px', left: '0px' }); - setSelectedObj(null); + handleContextMenuClose(); } }, [cageNumChange]); @@ -415,15 +383,17 @@ const Editor = () => { .scaleExtent([0.6, 1]) .on("zoom", handleZoom); - // Create a drag behavior + // Create drag behavior for moving the grid const dragGrid = d3.drag() .on("drag", handleDrag); - // Function to handle zoom + // Function to handle zoom for grid function handleZoom(event) { const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); - // Apply zoom/pan to each individual "room-object" group, preserving their relative positions + + // Apply zoom/pan to each individual "draggable" group, preserving their relative positions layoutSvg.selectAll(".draggable").each(function(d: any) { + // d is the data object attached to anything that is placed in the grid at the highest group level for that object const group = d3.select(this); // Use type assertion to tell TypeScript that d has x and y properties const newX = transform.applyX((d as { x: number }).x); @@ -437,7 +407,7 @@ const Editor = () => { updateGrid(transform, SVG_WIDTH, SVG_HEIGHT, GRID_SIZE); } - // Function to handle drag + // Function to handle drag for grid movement function handleDrag(event) { const g = d3.select("g.grid"); const dx = event.dx; @@ -452,7 +422,7 @@ const Editor = () => { } useEffect(() => { - setLayoutSvg(d3.select('#layout-svg')); + setLayoutSvg(d3.select('#layout-svg') as d3.Selection); }, []); // remove grid if desired @@ -461,7 +431,7 @@ const Editor = () => { layoutSvg.select(".grid").selectAll('.cell').remove(); }, [showGrid]); - // load grid at load in or after it was cleared + // load grid at load in, or after it was disabled and re-enabled useEffect(() => { if(!layoutSvg || !showGrid) return; const updateGridProps = { @@ -474,7 +444,9 @@ const Editor = () => { layoutSvg.select("g.grid").call(dragGrid); }, [layoutSvg, showGrid]); + // closes cage editor context menu const handleContextMenuClose = () => { + if(renameCage || changeRackType) return; setCtxMenuStyle({ display: 'none', left: '', @@ -483,6 +455,63 @@ const Editor = () => { setSelectedObj(null); }; + const handleDelCage = () => { + // state in local room of cage, rack, and group that cage is apart of + const {cage: localCage, rack: localRack, rackGroup: localGroup} = findCageInGroup(selectedObj as CageNumber, localRoom.rackGroups); + + showLayoutEditorConfirmation(`Are you sure you want to delete ${localCage.cageNum}`).then((r) => { + if(r){ + let svgToRemove; + let deleteAction: DeleteActions; + let newSvgGroup; + let newRackType: RackTypes; + if(localRack.cages.length === 1){// one cage in rack, delete rack element + if(localGroup.racks.length === 1){// not in a rack group element + svgToRemove = layoutSvg.select(`#${localRack.itemId}`); + deleteAction = 'group'; + }else if (localGroup.racks.length === 2){ // in a rack group element, pull other rack out of group element into rack element + const rackToSave: Rack = localGroup.racks.find((rack) => rack.itemId !== localRack.itemId); + const rackSvg = layoutSvg.select(`#${rackToSave.itemId}`); + const newX = rackToSave.x + localGroup.x; + const newY = rackToSave.y + localGroup.y; + svgToRemove = layoutSvg.select(`#${localGroup.groupId}`); + deleteAction = 'rack'; + newRackType = rackToSave.type.type; + newSvgGroup = layoutSvg.append(() => rackSvg.node()) + .classed('draggable', true); + placeAndScaleGroup(newSvgGroup, newX, newY, zoomTransform(layoutSvg.node())); + }else{ // in a rack group element, no need to pull out other racks since there is still enough to make a group + svgToRemove = layoutSvg.select(`#${localRack.itemId}`); + deleteAction = 'rack'; + } + }else{ // multiple cages in rack, delete cage element + svgToRemove = layoutSvg.select(`#${localCage.cageNum}`); + deleteAction = 'cage'; + } + + // reattach listeners if new svg group was created + if(newSvgGroup){ + const addProps: LayoutDragProps = { + gridSize: GRID_SIZE, + moveItem: moveObjLocation + }; + newSvgGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) + .on('drag', createDragInLayout()) + .on('end', createEndDragInLayout(addProps))); + + // attach click listener for context menu + newSvgGroup.selectAll('text').each(function () { + const textElement: SVGTextElement = d3.select(this).node() as SVGTextElement; + setupEditCageEvent(textElement, setSelectedObj, setCtxMenuStyle, newRackType); + }); + } + svgToRemove.remove(); + delCage(localCage, localRack, localGroup, deleteAction); + handleContextMenuClose(); + } + }); + } + const handleDefaultSave = () => { console.log("Saving to default layout"); } @@ -500,35 +529,31 @@ const Editor = () => {
- - - + - - - +
- - @@ -536,7 +561,7 @@ const Editor = () => {
- {(renameCage) && + {(renameCage) && // Opens menu for renaming cage { changeCageNum(parseRoomItemNum(selectedObj), num); @@ -588,8 +613,9 @@ const Editor = () => {
setRenameCage(true)} + onClickChangeRack={() => setChangeRack(true)} /> ); diff --git a/CageUI/src/client/components/EditorContextMenu.tsx b/CageUI/src/client/components/EditorContextMenu.tsx index dfc73efe4..674fe574d 100644 --- a/CageUI/src/client/components/EditorContextMenu.tsx +++ b/CageUI/src/client/components/EditorContextMenu.tsx @@ -10,20 +10,22 @@ interface EditorContextMenuProps { left: string; }; onClickDelete: () => void; - onClickRename: (e: React.MouseEvent) => void; + onClickRename: () => void; + onClickChangeRack: () => void; } const EditorContextMenu: FC = (props) => { const { ctxMenuStyle, onClickDelete, - onClickRename + onClickRename, + onClickChangeRack } = props; const menuRef = useRef(null); const handleRenameClick = (e: React.MouseEvent) => { e.stopPropagation(); - onClickRename(e); + onClickRename(); }; const handleDeleteClick = (e: React.MouseEvent) => { @@ -31,6 +33,11 @@ const EditorContextMenu: FC = (props) => { onClickDelete(); }; + const handleChangeRack = (e: React.MouseEvent) => { + e.stopPropagation(); + onClickChangeRack(); + }; + return ( = (props) => { display: ctxMenuStyle.display, position: 'absolute', left: ctxMenuStyle.left, - top: ctxMenuStyle.top, - zIndex: 100, + top: ctxMenuStyle.top }} > - handleRenameClick(e)}> - - + + + ); }; diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index a2a96c407..ccf4ca686 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -4,7 +4,7 @@ import { getTranslation, getTypeClassFromElement, isTextEditable, - parseGroupId, + parseLongId, parseRack, parseRoomItemNum, parseRoomItemType @@ -24,7 +24,7 @@ import { RackActions, RackGroup, RackTypes, - Room, + Room, RoomItemClass, RoomItemType, RoomObject, RoomObjectTypes, StartDragProps, UnitLocations @@ -32,7 +32,20 @@ import { import * as React from 'react'; import { zoomTransform } from 'd3'; + +export const parseWrapperId = (input: string): RoomItemType => { + const regex = /^[a-zA-Z]+/; // matches "x_template_wrapper" + + const match = input.match(regex); + if (match) { // if a match return whatever x is (any string of chars) + return match[0] as RoomItemType; + } + return; +} + + export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { + layoutSvg.select('.grid').remove(); layoutSvg.append("g").attr("class", "grid"); updateGrid(d3.zoomIdentity, updateGridProps.width, updateGridProps.height, updateGridProps.gridSize); // Draw grid with the initial view } @@ -104,6 +117,38 @@ function showConfirmationPopup(): Promise { }); } +export function showLayoutEditorConfirmation(msg: string) { + return new Promise((resolve) => { + // Create a simple popup + const popup = d3.select('body').append('div') + .attr('class', 'popup') + .style('position', 'absolute') + .style('top', '50%') + .style('left', '50%') + .style('transform', 'translate(-50%, -50%)') + .style('background', 'white') + .style('padding', '20px') + .style('border', '1px solid black'); + + popup.append('p') + .text(msg); + + popup.append('button') + .text('Yes') + .on('click', () => { + popup.remove(); + resolve(true); + }); + + popup.append('button') + .text('No') + .on('click', () => { + popup.remove(); + resolve(false); + }); + }); +} + // Confirmation popup for merging two racks export function showLayoutEditorError(errorMsg: string) { return new Promise((resolve) => { @@ -194,13 +239,10 @@ export function setupEditCageEvent( export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRackGroup: RackGroup, dragRackGroup: RackGroup, doRackAction, layoutDragProps: LayoutDragProps, cageActionProps: CageActionProps) { if(!d3.select('.popup').empty()) return; const action: RackActions = await showConfirmationPopup(); + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); const { - layoutSvg, gridSize, - MAX_SNAP_DISTANCE, - delRack, - moveItem, - itemClass + moveItem } = layoutDragProps; console.log("Performing Merge"); @@ -216,7 +258,7 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack element.style = ""; } const textEle = d3.select(element).selectAll('text').node() as SVGTextElement; - setupEditCageEvent(textEle, cageActionProps.setEditCageNum, cageActionProps.setCtxMenuStyle, shapeType as RackTypes); + setupEditCageEvent(textEle, cageActionProps.setSelectedObj, cageActionProps.setCtxMenuStyle, shapeType as RackTypes); } // add starting x and y for each group to then increment its local subgroup coords by. @@ -308,9 +350,6 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack if (styleAttr) { newGroup.attr('style', styleAttr); } - - - } else{ // action = connect @@ -360,14 +399,10 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack const addProps: LayoutDragProps = { gridSize: gridSize, - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - layoutSvg: layoutSvg, - delRack: delRack, - moveItem: moveItem, - itemClass: itemClass + moveItem: moveItem }; - newGroup.call(d3.drag().on('start', createStartDragInLayout({setRoomItem: cageActionProps.setEditCageNum})) - .on('drag', createDragInLayout({layoutSvg: layoutSvg})) + newGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: cageActionProps.setSelectedObj})) + .on('drag', createDragInLayout()) .on('end', createEndDragInLayout(addProps))); doRackAction(action,targetRackId, draggedRackId, newGroup); @@ -435,23 +470,23 @@ export const getTargetRect =(x, y, gridSize, transform) => { export function createStartDragInLayout(startDragProps: StartDragProps) { return( function startDragInLayout(event) { - const {setRoomItem} = startDragProps; + const {setSelectedObj} = startDragProps; // Check if the parent element is editable, return if not if (isTextEditable(event)) { event.on('drag', null).on('end', null); // Detach drag and end events return; } - setRoomItem(d3.select(this).attr('id')); + setSelectedObj(d3.select(this).attr('id')); console.log('Drag Layout #1', parseRack(d3.select(this).attr('id'))); d3.select(this).raise().classed('active', true); } ); } -export function createDragInLayout(dragProps) { +export function createDragInLayout() { return( function dragInLayout(event) { - const {layoutSvg} = dragProps; + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); console.log('Drag Layout #2', event.x, event.y); const element = d3.select(this); const transform = d3.zoomTransform(layoutSvg.node()); @@ -470,19 +505,18 @@ export function createEndDragInLayout(props: LayoutDragProps) { function endDragInLayout(event) { const { gridSize, - layoutSvg, - delRack, - moveItem, - itemClass + moveItem } = props; const shape = d3.select(this); shape.classed('active', false); + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); + const transform = d3.zoomTransform(layoutSvg.node()); const {x,y} = getLayoutOffset({ clientX: event.sourceEvent.clientX, clientY: event.sourceEvent.clientY, - layoutSvg: layoutSvg}) + layoutSvg: layoutSvg}); const targetCell = getTargetRect(x, y, gridSize, transform); @@ -490,16 +524,10 @@ export function createEndDragInLayout(props: LayoutDragProps) { console.log('Drag Layout #3', shape, targetCell); const cellX = targetCell.x; const cellY = targetCell.y; + const shapeType: RoomItemClass = shape.classed('room-obj') ? 'roomObj' : 'caging'; placeAndScaleGroup(shape, cellX, cellY, transform); - console.log("#3: ", cellX, cellY, shape.node()); - moveItem(shape.attr('id'), itemClass, cellX, cellY, transform.k); - } else { - // remove rack from room - /*console.log("deleting cage from room", getRackFromClass(shape.attr('class'))); - const idToDel = parseInt(getRackFromClass(shape.attr('class'))); - delRack(idToDel); - shape.remove();*/ + moveItem(shape.attr('id'),shapeType, cellX, cellY, transform.k); } } ); @@ -526,11 +554,8 @@ export const areCagesInSameRack = (rack: Rack, cage1: LocationCoords, cage2: Loc return nums.includes(cage1.num) && nums.includes(cage2.num); } - - - // TODO might not be needed -export const isRack = (itemType: RackTypes | RoomObjectTypes): itemType is RackTypes => { +export const isRack = (itemType: RoomItemType): itemType is RackTypes => { return Object.values(RackTypes).includes(itemType as RackTypes); } @@ -544,7 +569,7 @@ export const findSelectObjRack = (racks: Rack[], obj: string): Rack => { // Finds the next avail group id number export const findNextGroupId = (groups: GroupId[]): number => { const groupNumbers = groups - .map(group => parseGroupId(group)) + .map(group => parseLongId(group)) .filter(num => num !== undefined) .sort((a, b) => a - b); @@ -566,35 +591,43 @@ export const findNextGroupId = (groups: GroupId[]): number => { // finds a rack in room/groups of racks if it exists and return the rack and rack group it is apart of export const findRackInGroup = (targetId: string, groups: RackGroup[]): {rack: Rack, rackGroup: RackGroup} | undefined => { - let targetRack: Rack | undefined; - let targetGroup: RackGroup | undefined; + for (const group of groups) { + const targetRack = group.racks.find(rack => rack.itemId === targetId); + if (targetRack) { + return { rack: targetRack, rackGroup: group }; + } + } + return undefined; +}; - targetGroup = groups.find((group: RackGroup) => - group.racks.some((rack: Rack) => rack.itemId === targetId) - ); - if (targetGroup) { - targetRack = targetGroup.racks.find((rack: Rack) => rack.itemId === targetId); +// finds a cage in room/groups of racks if it exists and return the rack, rack group and cage state +export const findCageInGroup = (targetId: CageNumber, groups: RackGroup[]): {cage: Cage, rack: Rack, rackGroup: RackGroup} | undefined => { + for (const group of groups) { + for (const rack of group.racks) { + const targetCage = rack.cages.find(cage => cage.cageNum === targetId); + if (targetCage) { + return { cage: targetCage, rack: rack, rackGroup: group }; + } + } } - return {rack: targetRack, rackGroup: targetGroup}; -} + return undefined; +}; // FUNCTIONS FOR LOADING IN PREVIOUS DATA export const buildNewLocs = (prevRoomData: LayoutHistoryData[]): UnitLocations => { - const newUnitLocs: UnitLocations = { - attachedPlayCage: [], - cage: [], - pen: [], - tempCage: [] - } + // Empty Unit locations object + const newUnitLocs: UnitLocations = Object.fromEntries( + Object.values(RackTypes).map(key => [key, [] as LocationCoords[]]) + ) as UnitLocations; prevRoomData.forEach(roomItem => { if(roomItem.room_object) return; // ignore room objects here // TODO find rack type for rack id newUnitLocs.cage.push({ - num: `cage-${roomItem.cage}` as CageNumber, // TODO num here should be RackType-roomItem.cage + num: `cage-${parseInt(roomItem.cage)}` as CageNumber, // TODO num here should be RackType-roomItem.cage cellX: roomItem.x_coord, cellY: roomItem.y_coord }); @@ -613,7 +646,7 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //check if a group exists for the groupId, if it does return, else create new group for the room const findOrAddGroup = (rackItem: LayoutHistoryData): RackGroup => { // groupId is a single number so check if the GroupId string contains it - let rackGroup: RackGroup = newLocalRoom.rackGroups.find(group => group.groupId.includes(rackItem.rack_group)) + let rackGroup: RackGroup = newLocalRoom.rackGroups.find(group => parseLongId(group.groupId) === rackItem.rack_group) if (!rackGroup) { //create new rack group if it doesn't exist rackGroup = { @@ -631,13 +664,15 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //TODO isActive here tells us if the rack is currently active in the numbering system //check if a rack exists for the rackId, if it does return, else create new rack for the group const findOrAddRack = (rackGroup: RackGroup, rackItem: LayoutHistoryData): Rack => { - let rack: Rack = rackGroup.racks.find(r => r.itemId === rackItem.rack); + // if rack is a default aka 0, then use its default ID + const rackIdToFind = rackItem.rack === 0 ? rackItem.default_rack : rackItem.rack; + let rack: Rack = rackGroup.racks.find(r => parseRoomItemNum(r.itemId) === rackIdToFind); if (!rack) { //create new rack if it doesn't exist rack = { cages: [], isActive: true, - itemId: rackItem.rack, + itemId: rackItem.rack === 0 ? `default-rack-${rackItem.default_rack}` : `rack-${rackItem.rack}`, type: DEFAULT_CAGE_TYPE, // TODO find the rack type in the database for rackId x: rackItem.x_coord - rackGroup.x, // subtract group coords from layout coords to get rack coords y: rackItem.y_coord - rackGroup.y @@ -650,7 +685,7 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { const addCageToRack = (rack: Rack, rackItem: LayoutHistoryData, group: RackGroup) => { const cage: Cage = { adjCages: undefined, - cageNum: `${RackTypes.Cage}-${rackItem.cage}` as CageNumber, // TODO depending on rack type this will change + cageNum: `${RackTypes.Cage}-${parseInt(rackItem.cage)}` as CageNumber, // TODO depending on rack type this will change cageState: undefined, height: 0, // TODO find height at time for cage in Cage History id: rack.cages.length + 1, // TODO this might not work depending on order of cages in array, fix this @@ -664,7 +699,6 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { rack.cages.push(cage); } - const handleRackItem = (rackItem: LayoutHistoryData) => { const rackGroup: RackGroup = findOrAddGroup(rackItem); const rack: Rack = findOrAddRack(rackGroup, rackItem); diff --git a/CageUI/src/client/components/LayoutTooltip.tsx b/CageUI/src/client/components/LayoutTooltip.tsx index 79078036a..844c5aec9 100644 --- a/CageUI/src/client/components/LayoutTooltip.tsx +++ b/CageUI/src/client/components/LayoutTooltip.tsx @@ -1,7 +1,12 @@ import * as React from 'react'; -import { FC, useState } from 'react'; +import { FC, ReactNode, useState } from 'react'; -export const LayoutTooltip: FC = ({ text, children }) => { +interface LayoutTooltipProps { + text: string; + children: ReactNode; +} + +export const LayoutTooltip: FC = ({ text, children }) => { const [isVisible, setIsVisible] = useState(false); return ( diff --git a/CageUI/src/client/components/RackTemplate.tsx b/CageUI/src/client/components/RackTemplate.tsx deleted file mode 100644 index 56d4dd2ca..000000000 --- a/CageUI/src/client/components/RackTemplate.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react'; -import { FC } from 'react'; -import { ActionURL } from '@labkey/api'; -import { Rack, RackTypes } from './typings'; -import { ReactSVG } from 'react-svg'; - -interface RackTemplateProps { - fileName: string, - divClassName: string; - className?: string -} -export const RackTemplate: FC = (props) => { - const {fileName, className, divClassName} = props; - - - return ( -
- -
- ); -} \ No newline at end of file diff --git a/CageUI/src/client/components/RoomItemTemplate.tsx b/CageUI/src/client/components/RoomItemTemplate.tsx new file mode 100644 index 000000000..3dcac4dec --- /dev/null +++ b/CageUI/src/client/components/RoomItemTemplate.tsx @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { FC, useEffect, useRef, useState } from 'react'; +import { ActionURL } from '@labkey/api'; +import { Rack, RackTypes, RoomItemType } from './typings'; +import { ReactSVG } from 'react-svg'; + +interface RoomItemTemplateProps { + fileName: string, + className?: string + type: RoomItemType; +} +export const RoomItemTemplate: FC = (props) => { + const {fileName, className, type} = props; + + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index b53971538..b61781dc9 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -11,7 +11,7 @@ import { Modifications, ModTypes, Rack, - RackTypes, + RackTypes, RoomItemType, SeparatorMod, SeparatorPosition, Separators, @@ -46,7 +46,7 @@ export const getRackFromClass = (classString: string) => { return rackId; } } -export const zeroPadName = (num, places) => {return('#' + String(num).padStart(places, '0'))}; +export const zeroPadName = (num, places) => {return(String(num).padStart(places, '0'))}; // Helper function to get the rack number export const parseRack = (input: string) => { const regex = /rack-(\d+)/; @@ -69,6 +69,7 @@ export const parseCage = (input: string) => { return; } + export const parseRoomItemNum = (input: string): number => { const regex = /\w+-(\d+)/; // matches "string-number" @@ -107,11 +108,11 @@ export const getTypeClassFromElement = (element) => { } -export const parseGroupId = (input: GroupId) => { +export const parseLongId = (input: string) => { const regex = /\w+-\w+-(\d+)/; // matches "string-string-number" const match = input.match(regex); - if (match) { + if (match) { // if a match return the number return parseInt(match[1]); } return; diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 0e5e47acd..d3a4d48c7 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -18,27 +18,21 @@ type PageViews = "Room" | "Rack" | "Cage"; export type RackActions = 'merge' | 'connect' | 'cancel'; export type GroupId = `rack-group-${number}`; -// Classification of the objects, caging is for racks, roomObj is for things placed in the room not applied to caging, cagingObj are like roomObjs but can be connected to caging units +export type RoomItemType = RackTypes | RoomObjectTypes; + +// Classification of the objects, caging is for racks, roomObj is for things placed in the room not applied to caging export type RoomItemClass = 'caging' | 'roomObj'; +// deletion actions for state management, cage = delete cage from rack, rack = delete rack from rack group, group = delete entire rack group +export type DeleteActions = 'cage' | 'rack' | 'group'; -export interface testLayoutHistoryData { - rowid: number; - objectId: string; // depending on object type this is either rack id or object row id - objectType: RoomObjectTypes | RackTypes; - startDate: string; - endDate: string | null; - x: number; // x position of either room object or rack group - y: number; // y position of either room object or rack group - scale: number; // scale of either room object or rack group - room: string // Room that either rack or object resides in -} export interface LayoutHistoryData { room_object: RoomObjectTypes | null; - rack_group: string | null; - rack: string | null; + rack_group: number | null; + rack: number | null; + default_rack: number | null; cage: string | null; x_coord: number; y_coord: number; @@ -69,29 +63,24 @@ export interface OffsetProps { export interface PendingRoomUpdate { draggedShape: any; - itemTypeClass: RoomItemClass; // classification of the item - updateItemType: RackTypes | RoomObjectTypes; + updateItemType: RoomItemType; cellX: number; cellY: number; itemId: string; } export interface CageActionProps { - setEditCageNum: React.Dispatch>; + setSelectedObj: React.Dispatch>; setCtxMenuStyle: React.Dispatch>; } export interface LayoutDragProps { gridSize: number; - MAX_SNAP_DISTANCE: number; - layoutSvg: d3.Selection; - delRack: (rackId: string) => void; moveItem: (itemId: string, type: RoomItemClass, x: number, y: number, k: number) => void; - itemClass: RoomItemClass; } export interface StartDragProps { - setRoomItem: React.Dispatch>; + setSelectedObj: React.Dispatch>; } export interface Cage { @@ -218,14 +207,13 @@ export enum RackTypes { Cage = "cage", Pen = "pen", TempCage = "tempCage", - PlayCage = "attachedPlayCage" + PlayCage = "playCage" } export enum CageType { Allentown = "allentown", Suburban = "suburban", Lenderking = "lenderking", - Nursury = "nursury", Unknown = "unknown" } diff --git a/CageUI/src/client/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/layoutEditor/LayoutEditor.tsx index 1468319ae..c4494ceb8 100644 --- a/CageUI/src/client/layoutEditor/LayoutEditor.tsx +++ b/CageUI/src/client/layoutEditor/LayoutEditor.tsx @@ -12,7 +12,6 @@ import {LayoutContextProvider } from '../components/ContextManager'; import DragAndDropGrid from '../components/Editor'; import { ActionURL } from '@labkey/api'; import Editor from '../components/Editor'; -import { testRoom } from './testData'; import { labkeyActionSelectWithPromise } from '../components/helpers'; interface RoomProps { @@ -32,7 +31,7 @@ export const LayoutEditor: FC = (props) => { const prevRoomConfig: SelectRowsOptions = { schemaName: 'wnprc', queryName: 'layout_history', - columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid'], + columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid', 'default_rack'], filterArray: [ Filter.create('room', roomName, Filter.Types.EQUALS), Filter.create('end_date', null, Filter.Types.ISBLANK) diff --git a/CageUI/src/client/layoutEditor/testData.ts b/CageUI/src/client/layoutEditor/testData.ts deleted file mode 100644 index a6a714912..000000000 --- a/CageUI/src/client/layoutEditor/testData.ts +++ /dev/null @@ -1,208 +0,0 @@ - -import { - CageType, - EHRCage, - EHRRackType, - EHRRoom, - LayoutHistoryData, - RackTypes, - RoomObjectTypes, testLayoutHistoryData -} from '../components/typings'; - -export const testCageModifications = [ - { - rowid: 1, - name: "Solid Divider" - }, - { - rowid: 2, - name: "Mesh Floor" - }, - { - rowid: 3, - name: "C-Tunnel" - } -]; - -export const testRoom: EHRRoom = { - rowid: 68, - room: "ab140", - building: "", - area: "AB-New", - housingType: null, - housingCondition: null, - maxCages: 26 -} - -export const testCageTypes1: EHRRackType = { - rowid: 3, - name: "cage-at-6.7", - type: RackTypes.Cage, - manufacturer: CageType.Allentown, - length: 31.0, - width: 31.25, - height: 33.0, - sqft: 6.7, - supportsTunnel: true, - abbreviation: "at", - description: "6.7 sq ft allentown cage" -} - -export const testCageTypes2: EHRRackType = { - rowid: 4, - name: "pen-uk-44", - type: RackTypes.Pen, - manufacturer: CageType.Unknown, - length: 122.0, - width: 52.0, - height: 98.5, - sqft: 44.0, - supportsTunnel: false, - abbreviation: "uk", - description: "44 sq ft pen" -} - -export const testCage1: EHRCage = { - rowid: 1, - location: "rck1-1", - position: "top", - cageNum: "0001", - rackNum: 1, - x: 0, - y: 0, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage2: EHRCage = { - rowid: 2, - location: "rck1-2", - position: "top", - cageNum: "0002", - rackNum: 2, - x: 120, - y: 0, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage3: EHRCage = { - rowid: 3, - location: "rck1-3", - position: "bottom", - cageNum: "0003", - rackNum: 3, - x: 0, - y: 120, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage4: EHRCage = { - rowid: 4, - location: "rck1-4", - position: "bottom", - cageNum: "0004", - rackNum: 4, - x: 120, - y: 120, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage5: EHRCage = { - rowid: 5, - location: "pen1-1", - position: "none", - cageNum: "0001", - rackNum: 1, - x: 0, - y: 0, - rack: "pen1", - cagetype: testCageTypes2, - room: testRoom.room -} - -export const testCage6: EHRCage = { - rowid: 6, - location: "rck2-1", - position: "none", - cageNum: "0005", - rackNum: 1, - x: 0, - y: 0, - rack: "rck2", - cagetype: testCageTypes1, - room: testRoom.room -} - -export const testCagesInRoom = [testCage1, testCage2,testCage3,testCage4,testCage5,testCage6] - -export const testRoomObj = { - rowid: 1, - type: "Door", - abbreviation: "d", -} -/* - If object type is caging then query the cages table for object id to get the cages in that rack, - then add local coords to rack coords to get the correct coords of each cage. - If object type is room then query the room objects table if needed. Since room objects don't use sub coords there is - no need to do this if you are loading a layout. Just place the correct object at the location as it is in layout history -*/ -export const testLayoutHistory: testLayoutHistoryData[] = [ - { - rowid: 1, - objectId: testCage1.rack, - objectType: RackTypes.Cage, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - }, - { - rowid: 2, - objectId: `${testRoomObj.rowid}`, - objectType: RoomObjectTypes.Door, - startDate: "2024-10-22", - endDate: null, - x: 300, - y: 300, - scale: 1, - room: testRoom.room - }, - { - rowid: 3, - objectId: testCage5.rack, - objectType: RackTypes.Pen, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - },{ - rowid: 4, - objectId: testCage6.rack, - objectType: RackTypes.Cage, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - }] - - - -export const testCageHistory = { - rowid: 1, - startDate: "2024-10-22", - endDate: null, - location: testCage1.location, - leftDivider: testCageModifications[0].rowid, - rightDivider: testCageModifications[0].rowid, - flooring: testCageModifications[1].rowid, - modification: testCageModifications[2].rowid -} diff --git a/WNPRC_EHR/resources/data/lookup_sets.tsv b/WNPRC_EHR/resources/data/lookup_sets.tsv index 5a3a7852a..f733a010f 100644 --- a/WNPRC_EHR/resources/data/lookup_sets.tsv +++ b/WNPRC_EHR/resources/data/lookup_sets.tsv @@ -12,7 +12,9 @@ birth_condition Birth Condition Field Values value value birth_type Birth Type Field Values value title blood_billed_by Blood Billed By Field Values value title blood_code_prefixes Blood Code Prefix Field Values value -chemistry_method Chemistry Method Field Values value +cageui_item_types Room Item Type Field Values value title +cageui_rack_manufacturers Rack Manufacturer Field Values value title +chemistry_method Chemistry Method Field Values value chow_types Chow Types Field Values value clinpath_collection_method Clinpath Collection Method Field Values value clinpath_sampletype Clinpath Sample Type Field Values value diff --git a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml index 25ca1ee7d..6524fe105 100644 --- a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml +++ b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml @@ -11,6 +11,7 @@ + diff --git a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql index 84884b1ec..591adb5c4 100644 --- a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql +++ b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql @@ -1,16 +1,22 @@ +--TODO Tables for CageUI, change before actual commit to snapshot to reflect correct version + +-- Table for storing layout history data, either room object or (rack_group, rack, cage) must exist +-- If rack = 0 than default_rack must not be null +-- If end_date is null, that is the current layout for the room DROP TABLE IF EXISTS wnprc.layout_history; CREATE TABLE wnprc.layout_history ( rowid SERIAL NOT NULL, room VARCHAR(50) NOT NULL, room_object VARCHAR(50), - rack_group VARCHAR(50), - rack VARCHAR(50), + rack_group INTEGER, + rack INTEGER, + default_rack INTEGER, cage VARCHAR(50), start_date TIMESTAMP NOT NULL, end_date TIMESTAMP, - x_coord DOUBLE PRECISION NOT NULL, - y_coord DOUBLE PRECISION NOT NULL, + x_coord INTEGER NOT NULL, + y_coord INTEGER NOT NULL, scale DOUBLE PRECISION NOT NULL, container entityid NOT NULL, createdby userid, @@ -18,5 +24,62 @@ CREATE TABLE wnprc.layout_history modifiedby userid, modified TIMESTAMP, CONSTRAINT PK_layout_history PRIMARY KEY (rowid), - CONSTRAINT FK_layout_history_container FOREIGN KEY (container) REFERENCES core.Containers (EntityId) -); \ No newline at end of file + CONSTRAINT FK_layout_history_container FOREIGN KEY (container) REFERENCES core.Containers (EntityId), + CONSTRAINT CHECK_layout_history_not_null CHECK ( + (room_object IS NOT NULL) OR + (rack_group IS NOT NULL AND rack IS NOT NULL AND cage IS NOT NULL) + ), + CONSTRAINT CHECK_layout_history_default_rack_not_null CHECK ( + (rack != 0) OR (default_rack IS NOT NULL) + ) +); + +INSERT INTO ehr_lookups.lookup_sets (setname, label, description, keyField, container) +select 'cageui_item_types' as setname, + 'Room Item Type Field Values' as label, + 'List of items that can be placed into the cageUI layout editor' as description, + 'value' as keyField, + container from ehr_lookups.lookup_sets where setname='ancestry'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'cage' as value, 'Caging' as category, 'Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'pen' as value, 'Caging' as category, 'Pen' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'tempCage' as value, 'Caging' as category, 'Temp Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'playCage' as value, 'Caging' as category, 'Play Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'door' as value, 'Room Object' as category, 'Door' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'drain' as value, 'Room Object' as category, 'Drain' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'roomDivider' as value, 'Room Object' as category, 'Room Divider' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +INSERT INTO ehr_lookups.lookup_sets (setname, label, description, keyField, container) +select 'cageui_rack_manufacturers' as setname, + 'Rack Manufacturer Field Values' as label, + 'List of rack manufacturers' as description, + 'value' as keyField, + container from ehr_lookups.lookup_sets where setname='ancestry'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'at' as value, 'Allentown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'sb' as value, 'Suburban' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'lk' as value, 'Lenderking' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'wnprc' as value, 'WNPRC' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'uk' as value, 'Unknown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; \ No newline at end of file diff --git a/WNPRC_EHR/resources/schemas/wnprc.xml b/WNPRC_EHR/resources/schemas/wnprc.xml index a277a3448..b2273bc99 100644 --- a/WNPRC_EHR/resources/schemas/wnprc.xml +++ b/WNPRC_EHR/resources/schemas/wnprc.xml @@ -340,11 +340,20 @@
- + + + ehr_lookups + rooms + room + + - + + + /EHR/cageDetails.view?room=${room}&cage=${cage}& + From 98d43b4c74a107fdb33b54faf5867bb11093620c Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Mon, 29 Apr 2024 11:35:07 -0500 Subject: [PATCH 074/357] Start Cage UI project --- CageUI/build.gradle | 4 + CageUI/module.properties | 4 + CageUI/package-lock.json | 13011 ++++++++++++++++++++++++ CageUI/package.json | 94 + CageUI/src/client/cageUI/CageHome.tsx | 10 + CageUI/src/client/cageUI/app.tsx | 11 + CageUI/src/client/cageUI/dev.tsx | 20 + CageUI/src/client/entryPoints.js | 8 + CageUI/tsconfig.json | 14 + 9 files changed, 13176 insertions(+) create mode 100644 CageUI/build.gradle create mode 100644 CageUI/module.properties create mode 100644 CageUI/package-lock.json create mode 100644 CageUI/package.json create mode 100644 CageUI/src/client/cageUI/CageHome.tsx create mode 100644 CageUI/src/client/cageUI/app.tsx create mode 100644 CageUI/src/client/cageUI/dev.tsx create mode 100644 CageUI/src/client/entryPoints.js create mode 100644 CageUI/tsconfig.json diff --git a/CageUI/build.gradle b/CageUI/build.gradle new file mode 100644 index 000000000..a7d1134a8 --- /dev/null +++ b/CageUI/build.gradle @@ -0,0 +1,4 @@ +import org.labkey.gradle.util.BuildUtils +plugins { + id 'org.labkey.build.fileModule' +} \ No newline at end of file diff --git a/CageUI/module.properties b/CageUI/module.properties new file mode 100644 index 000000000..77c261535 --- /dev/null +++ b/CageUI/module.properties @@ -0,0 +1,4 @@ +Module Class: org.labkey.cageui.CageUIModule +Name: CageUI +License: Apache 2.0 +LicenseURL: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json new file mode 100644 index 000000000..60e2bc597 --- /dev/null +++ b/CageUI/package-lock.json @@ -0,0 +1,13011 @@ +{ + "name": "CageUI", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "CageUI", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@labkey/api": "1.27.0", + "dayjs": "^1.11.8", + "react": "~18.3.1", + "react-bootstrap": "~2.10.2", + "react-bootstrap-typeahead": "6.3.2", + "react-dom": "~18.3.1", + "ts-loader": "^9.4.3", + "typescript": "^5.1.3", + "urijs": "^1.19.11" + }, + "devDependencies": { + "@babel/core": "7.24.4", + "@labkey/build": "6.16.1", + "@labkey/components": "2.390.4", + "@types/react": "~18.3.1", + "@types/react-bootstrap": "~0.32.32", + "@types/react-dom": "~18.3.0", + "better-npm-run": "0.1.1", + "css-loader": "^7.1.1", + "style-loader": "^4.0.0", + "webpack": "5.91.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", + "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs2": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.4.tgz", + "integrity": "sha512-ZCKqyUKt/Coimg+3Kafu43yNetgYnTXzNbEGAgxc81J5sI0qFNbQ613w7PNny+SmijAmGVroL0GDvx5rG/JI5Q==", + "dev": true, + "dependencies": { + "core-js": "^2.6.12", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", + "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "dependencies": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/core/node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "node_modules/@emotion/core/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "dependencies": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "node_modules/@emotion/css/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/css/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/css/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "dev": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "dev": true, + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "dev": true + }, + "node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "dev": true, + "dependencies": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/styled-base/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "dev": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "dev": true + }, + "node_modules/@floating-ui/core": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", + "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", + "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", + "dev": true + }, + "node_modules/@icons/material": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "dev": true, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.1.tgz", + "integrity": "sha512-LnFjVChaGY8cZVMwAIMjvA1XwQjZ/zIXHyh28IyJkyNkzof4Dkm1+KN9UIm3lHhREH4vs7XwZ0NpkZKnwOtEfg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.2.tgz", + "integrity": "sha512-4KMApTgb1Hvjz9Ue7unziJ1xNy3k6d2erp0hz1iXryXsf6LEM3KwN6YrfbqT0vqkUO8Tu+CSnvMia9cWX6YGVw==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.0.0", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.0.tgz", + "integrity": "sha512-Yz+xITJ3Y/w0DBISwPkBETP5/cITHXscjgQNZIkfrVz1V7/ahJY8vw+T+LZy/KtXgKuUWqu4GALAQ3bhGt9J8A==", + "dev": true, + "dependencies": { + "hyperdyperid": "^1.2.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@labkey/api": { + "version": "1.27.0", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/api/-/@labkey/api-1.27.0.tgz", + "integrity": "sha512-Hs1TahaNp1K3JrvdpGCB0m8as1JidJImxyRD6NG5UK897z90tK1L3o3PihjyoU3oJ11nV/iePXJbG31c4C44gQ==" + }, + "node_modules/@labkey/build": { + "version": "6.16.1", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-6.16.1.tgz", + "integrity": "sha512-nC7eVvOmx9Il86gyaAjNhVyzH8JcvMUiEmLPVJjhDYuQH/oBQADMbGUOSe9MDK4QMlEjBtP11ujAthnj3cIoYA==", + "dev": true, + "dependencies": { + "@babel/core": "~7.22.20", + "@babel/plugin-transform-class-properties": "~7.22.5", + "@babel/plugin-transform-object-rest-spread": "~7.22.15", + "@babel/preset-env": "~7.22.20", + "@babel/preset-react": "~7.22.15", + "@babel/preset-typescript": "~7.22.15", + "ajv": "~8.12.0", + "babel-loader": "~9.1.3", + "bootstrap-sass": "~3.4.3", + "circular-dependency-plugin": "~5.2.2", + "copy-webpack-plugin": "~11.0.0", + "cross-env": "~7.0.3", + "css-loader": "~6.8.1", + "fork-ts-checker-webpack-plugin": "~8.0.0", + "html-webpack-plugin": "~5.5.3", + "mini-css-extract-plugin": "~2.7.6", + "react-hot-loader": "~4.13.1", + "resolve-url-loader": "~5.0.0", + "rimraf": "~5.0.1", + "sass": "~1.67.0", + "sass-loader": "~13.3.2", + "style-loader": "~3.3.3", + "typescript": "~5.2.2", + "webpack": "~5.88.2", + "webpack-bundle-analyzer": "~4.9.1", + "webpack-cli": "~5.1.4", + "webpack-dev-server": "~4.15.1" + } + }, + "node_modules/@labkey/build/node_modules/@babel/core": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@labkey/build/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@labkey/build/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/css-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@labkey/build/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@labkey/build/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@labkey/build/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@labkey/build/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@labkey/build/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@labkey/build/node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@labkey/build/node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@labkey/build/node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@labkey/build/node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@labkey/build/node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@labkey/build/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@labkey/build/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@labkey/components": { + "version": "2.390.4", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-2.390.4.tgz", + "integrity": "sha512-qFfC9Z00Mojanew81IpdC1DsMLuP6mSFucqGLsSYYUqlWqicygMRsTSJe0bnaCNN0qRNczMKqVNUk1FQsay6jw==", + "dev": true, + "dependencies": { + "@labkey/api": "1.27.0", + "@testing-library/jest-dom": "~5.17.0", + "@testing-library/react": "~12.1.5", + "@testing-library/user-event": "~12.8.3", + "bootstrap": "~3.4.1", + "classnames": "~2.3.2", + "enzyme": "~3.11.0", + "font-awesome": "~4.7.0", + "formsy-react": "~1.1.5", + "formsy-react-components": "~1.1.0", + "history": "~4.7.2", + "immer": "~10.0.2", + "immutable": "~3.8.2", + "moment": "~2.29.3", + "moment-timezone": "~0.5.38", + "normalizr": "~3.6.1", + "numeral": "~2.0.6", + "react": "~16.14.0", + "react-beautiful-dnd": "~13.1.1", + "react-bootstrap": "~0.33.1", + "react-color": "~2.19.3", + "react-datepicker": "~4.17.0", + "react-dom": "~16.14.0", + "react-router": "~3.2.6", + "react-select": "~5.7.0", + "react-treebeard": "~3.2.4", + "vis-network": "~6.5.2" + }, + "peerDependencies": { + "immutable": "^3.8.2", + "react": "^16.0", + "react-bootstrap": "^0.33.1", + "react-dom": "^16.0" + } + }, + "node_modules/@labkey/components/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/@labkey/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@labkey/components/node_modules/react-bootstrap": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.33.1.tgz", + "integrity": "sha512-qWTRravSds87P8WC82tETy2yIso8qDqlIm0czsrduCaYAFtHuyLu0XDbUlfLXeRzqgwm5sRk2wRaTNoiVkk/YQ==", + "dev": true, + "dependencies": { + "@babel/runtime-corejs2": "^7.0.0", + "classnames": "^2.2.5", + "dom-helpers": "^3.2.0", + "invariant": "^2.2.4", + "keycode": "^2.2.0", + "prop-types": "^15.6.1", + "prop-types-extra": "^1.0.1", + "react-overlays": "^0.9.0", + "react-prop-types": "^0.4.0", + "react-transition-group": "^2.0.0", + "uncontrollable": "^7.0.2", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@labkey/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@labkey/components/node_modules/react-overlays": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.9.3.tgz", + "integrity": "sha512-u2T7nOLnK+Hrntho4p0Nxh+BsJl0bl4Xuwj/Y0a56xywLMetgAfyjnDVrudLXsNcKGaspoC+t3C1V80W9QQTdQ==", + "dev": true, + "dependencies": { + "classnames": "^2.2.5", + "dom-helpers": "^3.2.1", + "prop-types": "^15.5.10", + "prop-types-extra": "^1.0.1", + "react-transition-group": "^2.2.1", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@labkey/components/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dev": true, + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/@labkey/components/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", + "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.8.tgz", + "integrity": "sha512-6ndCv3oZ7r9vuP1Ok9KH55TM1/UkdBnP/fSraW0DFDMbPMzWKhVKeFAIEUCRCSdzayjZDcFYK6xbMlipN9dmMA==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "<18.0.0", + "react-dom": "<18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react": { + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "^0.16", + "csstype": "^3.0.2" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react-dom": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", + "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", + "dev": true, + "dependencies": { + "@types/react": "^17" + } + }, + "node_modules/@testing-library/user-event": { + "version": "12.8.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", + "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-bootstrap": { + "version": "0.32.36", + "resolved": "https://registry.npmjs.org/@types/react-bootstrap/-/react-bootstrap-0.32.36.tgz", + "integrity": "sha512-xldfs2zixagAFEafy/XzRvZH1NtjRnLfbgL0cZ2a0Eykz+iILE/Xa46tnUFcLln6ZBq1Qp9uArhIbkkuhBU30g==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dev": true, + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array.prototype.filter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.4.tgz", + "integrity": "sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-emotion/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/better-npm-run": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/better-npm-run/-/better-npm-run-0.1.1.tgz", + "integrity": "sha512-SBBYsUsb6bYcUMF9QUWy39GX5kzD4CoRBP11gx/k5jYkUr4Tr+irAokIeQX5FgfCRz0Q27rt8U0J4D2TlRgQFA==", + "dev": true, + "dependencies": { + "commander": "^2.9.0", + "dotenv": "^2.0.0", + "object-assign": "^4.0.1" + }, + "bin": { + "better-npm-run": "index.js", + "bnr": "index.js" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bootstrap-sass": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", + "integrity": "sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" + } + }, + "node_modules/classnames": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.3.tgz", + "integrity": "sha512-1inzZmicIFcmUya7PGtUQeXtcF7zZpPnxtQoYOrz0uiOBGlLFa4ik4361seYL2JCcRDIyfdFHiwQolESFlw+Og==" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-react-class": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "dev": true, + "dependencies": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dev": true, + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/css-loader": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.1.tgz", + "integrity": "sha512-OxIR5P2mjO1PSXk44bWuQ8XtMK4dpEqpIyERCx3ewOo3I8EmbcxMPUc5ScLtQfgXtOojoMv57So4V/C02HQLsw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dev": true, + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", + "integrity": "sha512-Y+zZAmv7p2zOdpyZcSIA+aIxohsyfTcNaMeh3YJn9exq85bQhso65Wz9IhjYYNB4zyvXnfi7Ae+FuygARljVJw==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, + "dependencies": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/enzyme-shallow-equal": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0", + "object-is": "^1.1.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", + "dev": true, + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/form-data-to-object": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", + "integrity": "sha512-F10KT6YgIq4CxmiMCZONnYN4PC5ommk8rLb4WmeahqDDszerxVwBrjqjXiedqUfNClMxDHj04KWGRK30aDnIpw==", + "dev": true + }, + "node_modules/formsy-react": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-1.1.6.tgz", + "integrity": "sha512-9IsV+XKQEcwvm7nZtyUTZBcl9SHgX2WKskVfvAKzQyJwMAqJ4E3Hf+6PM1E2dQo/MGYMM3pfECAbkDKwlKkp9g==", + "dev": true, + "dependencies": { + "form-data-to-object": "^0.2.0", + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react": "^15.6.1 || ^16.0.0 || ^17.0.0", + "react-dom": "^15.6.1 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/formsy-react-components": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/formsy-react-components/-/formsy-react-components-1.1.0.tgz", + "integrity": "sha512-GUgnIqXbXNPf7auP4nwk5PF6477r5UhdQoO1aNCvQajLarUu/Jj8PaxTCHu56tNGSlewACqRV44m8MrYOMzdTQ==", + "dev": true, + "dependencies": { + "classnames": "^2.2.5", + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "formsy-react": "^1.1.0", + "react": "^15.6.1 || ^16.0.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "dev": true, + "dependencies": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-element-map": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", + "dev": true, + "dependencies": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", + "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "dev": true + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keycode": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", + "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz", + "integrity": "sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "dev": true, + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalizr": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/normalizr/-/normalizr-3.6.2.tgz", + "integrity": "sha512-30qCybsBaCBciotorvuOZTCGEg2AXrJfADMT2Kk/lvpIAcipHdK0zc33nNtwKzyfQAqIJXAcqET6YgflYUgsoQ==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types-extra/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "dev": true + }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "dev": true + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz", + "integrity": "sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.8", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-bootstrap-typeahead": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/react-bootstrap-typeahead/-/react-bootstrap-typeahead-6.3.2.tgz", + "integrity": "sha512-N5Mb0WlSSMcD7Z0pcCypILgIuECybev0hl4lsnCa5lbXTnN4QdkuHLGuTLSlXBwm1ZMFpOc2SnsdSRgeFiF+Ow==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@popperjs/core": "^2.10.2", + "@restart/hooks": "^0.4.0", + "classnames": "^2.2.0", + "fast-deep-equal": "^3.1.1", + "invariant": "^2.2.1", + "lodash.debounce": "^4.0.8", + "prop-types": "^15.5.8", + "react-overlays": "^5.2.0", + "react-popper": "^2.2.5", + "scroll-into-view-if-needed": "^3.1.0", + "warning": "^4.0.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-bootstrap-typeahead/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-bootstrap/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-color": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", + "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", + "dev": true, + "dependencies": { + "@icons/material": "^0.2.4", + "lodash": "^4.17.15", + "lodash-es": "^4.17.15", + "material-colors": "^1.2.1", + "prop-types": "^15.5.10", + "reactcss": "^1.2.0", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-datepicker": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.17.0.tgz", + "integrity": "sha512-z50H44XbnkYlns7gVHzHK4jWAzLfvQehh5Lvindb09J97yVJKIbsmHs98D0f77tdZc3dSYM7oAqsFY55dBeOGQ==", + "dev": true, + "dependencies": { + "@popperjs/core": "^2.11.8", + "classnames": "^2.2.6", + "date-fns": "^2.30.0", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.13.0", + "react-popper": "^2.3.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-hot-loader": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.1.tgz", + "integrity": "sha512-ZlqCfVRqDJmMXTulUGic4lN7Ic1SXgHAFw7y/Jb7t25GBgTR0fYAJ8uY4mrpxjRyWGWmqw77qJQGnYbzCvBU7g==", + "dev": true, + "dependencies": { + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^3.3.0", + "loader-utils": "^2.0.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "@types/react": "^15.0.0 || ^16.0.0 || ^17.0.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-hot-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-onclickoutside": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", + "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", + "dev": true, + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x || ^18.x", + "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" + } + }, + "node_modules/react-overlays": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", + "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "dependencies": { + "@babel/runtime": "^7.13.8", + "@popperjs/core": "^2.11.6", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dom-helpers": "^5.2.0", + "prop-types": "^15.7.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/react-overlays/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-popper/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha512-IyjsJhDX9JkoOV9wlmLaS7z+oxYoIWhfzDcFy7inwoAKTu+VcVNrVpPmLeioJ94y6GeDRsnwarG1py5qofFQMg==", + "dev": true, + "dependencies": { + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.6.tgz", + "integrity": "sha512-nlxtQE8B22hb/JxdaslI1tfZacxFU8x8BJryXOnR2RxB4vc01zuHYAHAIgmBkdk1kzXaA25hZxK6KAH/+CXArw==", + "dev": true, + "dependencies": { + "create-react-class": "^15.5.1", + "history": "^3.0.0", + "hoist-non-react-statics": "^3.3.2", + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "prop-types": "^15.7.2", + "react-is": "^16.13.0", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/react-router/node_modules/history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha512-ABLnJwKEZGXGqWsXaKYD8NNle49ZbKs1WEBlxrFsQ8dIudZpO5NJaH8WJOqh5lXVhAq7bHksfirrobBmrT7qBw==", + "dev": true, + "dependencies": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "query-string": "^4.2.2", + "warning": "^3.0.0" + } + }, + "node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-select": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", + "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-select/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-treebeard": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/react-treebeard/-/react-treebeard-3.2.4.tgz", + "integrity": "sha512-TsvdUq2kbLavRXa8k4mmqfPse8HmSA9G9s1SZUtIpiYSccSwa0Tm6miMgx7DZ5gpKofQ+j/3Ua0rjsahM3/FQg==", + "dev": true, + "dependencies": { + "@emotion/core": "^10.0.10", + "@emotion/styled": "^10.0.10", + "deep-equal": "^1.0.1", + "shallowequal": "^1.1.0", + "velocity-react": "^1.4.1" + }, + "peerDependencies": { + "@babel/runtime": ">=7.0.0", + "@emotion/styled": "^10.0.10", + "prop-types": ">=15.7.2", + "react": ">=16.7.0", + "react-dom": ">=16.7.0" + } + }, + "node_modules/reactcss": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", + "dev": true, + "dependencies": { + "lodash": "^4.0.1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==", + "dev": true + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==", + "dev": true, + "dependencies": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", + "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sass/node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sonic-forest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.0.tgz", + "integrity": "sha512-yFO2N4uTUFtgKLw03WWFpN1iEwZySweMsa18XN3Kt0yYrlmVHunC2ZgM+437zDoKISAJHcH3Cg18U7d6tuSgSQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/velocity-animate": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.2.tgz", + "integrity": "sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==", + "dev": true + }, + "node_modules/velocity-react": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/velocity-react/-/velocity-react-1.4.3.tgz", + "integrity": "sha512-zvefGm85A88S3KdF9/dz5vqyFLAiwKYlXGYkHH2EbXl+CZUD1OT0a0aS1tkX/WXWTa/FUYqjBaAzAEFYuSobBQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.5", + "prop-types": "^15.5.8", + "react-transition-group": "^2.0.0", + "velocity-animate": "^1.4.0" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0", + "react-dom": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/velocity-react/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/velocity-react/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dev": true, + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/vis-network": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-6.5.2.tgz", + "integrity": "sha512-Dj5oEtZMUWuhq7D7dwdmxmtJgrK3kwfV4Ov/ePSrhPZgNdJlXzpeDZU/Eq0pKGyOAPLClemgVImc0bZpZ4Yafw==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "keycharm": "^0.2.0", + "moment": "^2.24.0", + "vis-data": "^6.2.1", + "vis-util": "^1.1.8" + } + }, + "node_modules/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", + "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/memfs": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.1.tgz", + "integrity": "sha512-36cVYFMaa9HNEYyvkyKCwker8DBmOdjWLrfekE/cHEKJ806fCfKNVhOJNvoyV/CrGSZDtfQPbhn0Zid0gbH0Hw==", + "dev": true, + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.2", + "@jsonjoy.com/util": "^1.1.0", + "sonic-forest": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/CageUI/package.json b/CageUI/package.json new file mode 100644 index 000000000..b8600d7ae --- /dev/null +++ b/CageUI/package.json @@ -0,0 +1,94 @@ +{ + "name": "CageUI", + "version": "1.0.0", + "description": "", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "storybook": "start-storybook -p 6006", + "build-storybook": "build-storybook", + "build": "better-npm-run build", + "start": "cross-env NODE_ENV=development LK_MODULE=WNPRC_EHR webpack-dev-server --config node_modules/@labkey/build/webpack/watch.config.js", + "build-prod": "better-npm-run build-prod", + "clean": "rimraf resources/web/gen && rimraf resources/views/gen" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@labkey/api": "1.27.0", + "dayjs": "^1.11.8", + "react": "~18.3.1", + "react-bootstrap": "~2.10.2", + "react-bootstrap-typeahead": "6.3.2", + "react-dom": "~18.3.1", + "typescript": "^5.1.3", + "ts-loader": "^9.4.3", + "urijs": "^1.19.11" + }, + "devDependencies": { + "@labkey/components": "2.390.4", + "@labkey/build": "6.16.1", + "@babel/core": "7.24.4", + "@types/react": "~18.3.1", + "@types/react-bootstrap": "~0.32.32", + "@types/react-dom": "~18.3.0", + "better-npm-run": "0.1.1", + "css-loader": "^7.1.1", + "style-loader": "^4.0.0", + "webpack": "5.91.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4" + }, + "betterScripts": { + "start": { + "command": "webpack serve --config node_modules/@labkey/build/webpack/watch.config.js", + "env": { + "NODE_ENV": "development" + } + }, + "build": { + "command": "webpack --config node_modules/@labkey/build/webpack/dev.config.js --color", + "env": { + "NODE_ENV": "development" + } + }, + "build-prod": { + "command": "webpack --config node_modules/@labkey/build/webpack/prod.config.js --color --progress --profile", + "env": { + "NODE_ENV": "production", + "PROD_SOURCE_MAP": "source-map" + } + } + }, + "jest": { + "globals": { + "LABKEY": {} + }, + "moduleFileExtensions": [ + "tsx", + "ts", + "js" + ], + "preset": "ts-jest", + "setupFilesAfterEnv": [ + "/test/jest.setup.ts" + ], + "testEnvironment": "jsdom", + "testMatch": null, + "testRegex": "(\\.(test|spec))\\.(ts|tsx)$", + "testResultsProcessor": "jest-teamcity-reporter", + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "isolatedModules": true, + "tsconfig": "node_modules/@labkey/build/webpack/tsconfig.json" + } + ] + } + } +} diff --git a/CageUI/src/client/cageUI/CageHome.tsx b/CageUI/src/client/cageUI/CageHome.tsx new file mode 100644 index 000000000..d68d04e68 --- /dev/null +++ b/CageUI/src/client/cageUI/CageHome.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import {FC} from 'react'; + + +export const CageHome: FC = () => { + + return( +
Hello world
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/app.tsx b/CageUI/src/client/cageUI/app.tsx new file mode 100644 index 000000000..767a06b5f --- /dev/null +++ b/CageUI/src/client/cageUI/app.tsx @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { createRoot } from 'react-dom/client'; +import { CageHome } from './CageHome'; + + +// Need to wait for container element to be available in labkey wrapper before render +window.addEventListener('DOMContentLoaded', (event) => { + createRoot(document.getElementById("app")).render( + + ); +}); \ No newline at end of file diff --git a/CageUI/src/client/cageUI/dev.tsx b/CageUI/src/client/cageUI/dev.tsx new file mode 100644 index 000000000..e572f44c0 --- /dev/null +++ b/CageUI/src/client/cageUI/dev.tsx @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { AppContainer } from 'react-hot-loader'; +import { createRoot } from 'react-dom/client'; +import { CageHome } from './CageHome'; + +const render = () => { + createRoot(document.getElementById("app")).render( + + + + ); +}; + +declare const module: any; + +if (module.hot) { + module.hot.accept(); +} + +render(); \ No newline at end of file diff --git a/CageUI/src/client/entryPoints.js b/CageUI/src/client/entryPoints.js new file mode 100644 index 000000000..95c6cc8d4 --- /dev/null +++ b/CageUI/src/client/entryPoints.js @@ -0,0 +1,8 @@ +module.exports = { + apps: [{ + name: "cage_interface", + title: "Cages Interface", + permission: "login", + path: './src/client/cageUI' + }] +}; diff --git a/CageUI/tsconfig.json b/CageUI/tsconfig.json new file mode 100644 index 000000000..2fd933b5e --- /dev/null +++ b/CageUI/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES5", + "jsx": "react", + "lib": ["dom","es2017", "dom.iterable"], + "sourceMap": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "downlevelIteration": true + }, + "exclude": [ + "resources" + ] +} From 9dd1518546831f09fbcd59424492b8d578ae3f39 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 2 May 2024 09:31:00 -0500 Subject: [PATCH 075/357] work on loading cage ui svg images --- CageUI/package-lock.json | 27 ++- CageUI/package.json | 7 +- .../resources/web/CageUI/static/AB140-167.svg | 1 + CageUI/src/client/cageUI/CageHome.tsx | 10 - CageUI/src/client/cageUI/RoomHome.tsx | 30 +++ CageUI/src/client/cageUI/app.tsx | 6 +- .../client/cageUI/components/RoomDisplay.tsx | 21 ++ .../client/cageUI/components/RoomHeader.tsx | 15 ++ .../client/cageUI/components/RoomLayout.tsx | 186 ++++++++++++++++++ .../client/cageUI/components/RoomLegend.tsx | 10 + CageUI/src/client/cageUI/dev.tsx | 5 +- CageUI/src/client/cageUI/testData.ts | 5 + CageUI/src/client/cageui.scss | 81 ++++++++ CageUI/src/client/components/helpers.ts | 39 ++++ CageUI/src/client/components/typings.ts | 9 + CageUI/src/client/entryPoints.js | 4 +- CageUI/src/client/rooms/AB140-167.svg | 1 + CageUI/src/client/rooms/Test.svg | 72 +++++++ 18 files changed, 509 insertions(+), 20 deletions(-) create mode 100644 CageUI/resources/web/CageUI/static/AB140-167.svg delete mode 100644 CageUI/src/client/cageUI/CageHome.tsx create mode 100644 CageUI/src/client/cageUI/RoomHome.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomDisplay.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomHeader.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomLayout.tsx create mode 100644 CageUI/src/client/cageUI/components/RoomLegend.tsx create mode 100644 CageUI/src/client/cageUI/testData.ts create mode 100644 CageUI/src/client/cageui.scss create mode 100644 CageUI/src/client/components/helpers.ts create mode 100644 CageUI/src/client/components/typings.ts create mode 100644 CageUI/src/client/rooms/AB140-167.svg create mode 100644 CageUI/src/client/rooms/Test.svg diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index 60e2bc597..330dbbe68 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -15,6 +15,7 @@ "react-bootstrap": "~2.10.2", "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", + "react-svg": "^16.1.34", "ts-loader": "^9.4.3", "typescript": "^5.1.3", "urijs": "^1.19.11" @@ -3300,6 +3301,16 @@ "tslib": "^2.4.0" } }, + "node_modules/@tanem/svg-injector": { + "version": "10.1.68", + "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", + "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "content-type": "^1.0.5", + "tslib": "^2.6.2" + } + }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -5181,7 +5192,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -10363,6 +10373,21 @@ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "dev": true }, + "node_modules/react-svg": { + "version": "16.1.34", + "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.34.tgz", + "integrity": "sha512-L4ak1qNFLgzVbHm0xQEpHoIOqb3um/B0ybahd3U2TKoGZxb0JaPVI5lsAhvSng2P1kcsYEok2Z7RpcKx7arJGw==", + "dependencies": { + "@babel/runtime": "^7.24.1", + "@tanem/svg-injector": "^10.1.68", + "@types/prop-types": "^15.7.12", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", diff --git a/CageUI/package.json b/CageUI/package.json index b8600d7ae..39a322dfb 100644 --- a/CageUI/package.json +++ b/CageUI/package.json @@ -25,14 +25,15 @@ "react-bootstrap": "~2.10.2", "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", - "typescript": "^5.1.3", + "react-svg": "^16.1.34", "ts-loader": "^9.4.3", + "typescript": "^5.1.3", "urijs": "^1.19.11" }, "devDependencies": { - "@labkey/components": "2.390.4", - "@labkey/build": "6.16.1", "@babel/core": "7.24.4", + "@labkey/build": "6.16.1", + "@labkey/components": "2.390.4", "@types/react": "~18.3.1", "@types/react-bootstrap": "~0.32.32", "@types/react-dom": "~18.3.0", diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg new file mode 100644 index 000000000..101490e5e --- /dev/null +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CageUI/src/client/cageUI/CageHome.tsx b/CageUI/src/client/cageUI/CageHome.tsx deleted file mode 100644 index d68d04e68..000000000 --- a/CageUI/src/client/cageUI/CageHome.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from 'react'; -import {FC} from 'react'; - - -export const CageHome: FC = () => { - - return( -
Hello world
- ); -} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/RoomHome.tsx b/CageUI/src/client/cageUI/RoomHome.tsx new file mode 100644 index 000000000..a19c8412b --- /dev/null +++ b/CageUI/src/client/cageUI/RoomHome.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import {FC} from 'react'; +import { RoomHeader } from './components/RoomHeader'; +import { RoomLegend } from './components/RoomLegend'; +import { RoomDisplay } from './components/RoomDisplay'; +import '../cageui.scss'; +import {Cage} from '../components/typings'; + +interface RoomProps { + room: { + name: string; + cages: Cage[]; + type: string; + } +} + +export const RoomHome: FC = (props) => { + const {room} = props; + return ( +
+ +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/app.tsx b/CageUI/src/client/cageUI/app.tsx index 767a06b5f..632f5dcc5 100644 --- a/CageUI/src/client/cageUI/app.tsx +++ b/CageUI/src/client/cageUI/app.tsx @@ -1,11 +1,13 @@ import * as React from 'react'; import { createRoot } from 'react-dom/client'; -import { CageHome } from './CageHome'; +import { RoomHome } from './RoomHome'; +import { testRoom } from './testData'; // Need to wait for container element to be available in labkey wrapper before render window.addEventListener('DOMContentLoaded', (event) => { + createRoot(document.getElementById("app")).render( - + ); }); \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomDisplay.tsx b/CageUI/src/client/cageUI/components/RoomDisplay.tsx new file mode 100644 index 000000000..0b89e7ac0 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomDisplay.tsx @@ -0,0 +1,21 @@ +import * as React from 'react'; +import { FC, useState } from 'react'; +import { Cage, Rack } from '../../components/typings'; +import {loadRoom} from '../../components/helpers'; +import { RoomLayout } from './RoomLayout'; + +interface DisplayProps { + type: string; // room type +} +export const RoomDisplay: FC = (props) => { + const {type} = props; + const [currRoom, setCurrRoom] = useState(loadRoom(type)); + // insert logic to find ro + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomHeader.tsx b/CageUI/src/client/cageUI/components/RoomHeader.tsx new file mode 100644 index 000000000..0f87b6148 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomHeader.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import {FC} from 'react'; + +interface HeaderProps { + name: string; +} +export const RoomHeader: FC = (props) => { + const {name} = props; + return ( +
+

Room

+

{name}

+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx new file mode 100644 index 000000000..14ce61cc4 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomLayout.tsx @@ -0,0 +1,186 @@ +import * as React from 'react'; +import {FC} from 'react'; +import { Cage, Rack } from '../../components/typings'; +import { ReactSVG } from 'react-svg'; +interface LayoutProps { + room: Rack[] +} + +interface CageProps { + cage: Cage; +} + +const CageItem: FC = (props) => { + const {cage} = props; + return ( +
+ + + + {cage.name} + + +
+ ); +} + +interface RackProps { + rack: Rack; +} +const RackItem: FC = (props) => { + const {rack} = props; + return ( +
+ {rack.cages.map((cage) => { + return( + + ); + })} +
+ ); +}; + +export const RoomLayout: FC = (props) => { + const {room}= props; + console.log(room); + const handleClick = (event) => { + const svgPoint = event.target.ownerSVGElement.createSVGPoint(); + svgPoint.x = event.clientX; + svgPoint.y = event.clientY; + + const path = event.target; + const pathBounds = path.getBoundingClientRect(); + const pathMatrix = path.getScreenCTM().inverse(); + const clickPoint = svgPoint.matrixTransform(pathMatrix); + + if (path.isPointInFill(clickPoint) || path.isPointInStroke(clickPoint)) { + console.log(`Clicked inside ${path.id}!`); + // Add your click event handling logic here + } + }; + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} + +/* + + +{room.map((rack) => { + return( + + ); +})} + */ + diff --git a/CageUI/src/client/cageUI/components/RoomLegend.tsx b/CageUI/src/client/cageUI/components/RoomLegend.tsx new file mode 100644 index 000000000..d1237b615 --- /dev/null +++ b/CageUI/src/client/cageUI/components/RoomLegend.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import {FC} from 'react'; + +export const RoomLegend: FC = () => { + return ( +
+

This is the Legend

+
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/cageUI/dev.tsx b/CageUI/src/client/cageUI/dev.tsx index e572f44c0..2f4114669 100644 --- a/CageUI/src/client/cageUI/dev.tsx +++ b/CageUI/src/client/cageUI/dev.tsx @@ -1,12 +1,13 @@ import * as React from 'react'; import { AppContainer } from 'react-hot-loader'; import { createRoot } from 'react-dom/client'; -import { CageHome } from './CageHome'; +import { RoomHome } from './RoomHome'; +import { testRoom } from './testData'; const render = () => { createRoot(document.getElementById("app")).render( - + ); }; diff --git a/CageUI/src/client/cageUI/testData.ts b/CageUI/src/client/cageUI/testData.ts new file mode 100644 index 000000000..4b930b793 --- /dev/null +++ b/CageUI/src/client/cageUI/testData.ts @@ -0,0 +1,5 @@ +export const testRoom = { + name: "ab140", + cages: [], + type: "ab", +} diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss new file mode 100644 index 000000000..23c5299ea --- /dev/null +++ b/CageUI/src/client/cageui.scss @@ -0,0 +1,81 @@ + +.room-header { + background-color: lightgreen; +} + +.room-legend { + flex: 1; + background-color: lightcoral; +} + +.room-display { + display: flex; + flex: 4; + background-color: lightblue; +} + +.room-container { + display: flex; + flex-direction: column; /* Arrange children in a column */ + height: 75vh; +} + +.room-sub-container { + display: flex; + flex: 1; /* Take up remaining space */ +} + +.room-header, .room-display, .room-legend { + padding: 10px; +} + +/* Media query for landscape orientation */ +@media screen and (orientation: portrait) { + .room-container { + flex-direction: column; + } + + .room-sub-container { + flex-direction: column; + } + + .room-legend, .room-display { + margin-right: 0; + margin-bottom: 5px; + } +} + +.room-header-name { + display: inline-block; + margin-left: 20px; +} +.room-header-text { + display: inline-block; +} + +.room-layout { + background-color: lightpink; + margin:0 auto + //background-image: url("./rooms/AB140-167.svg"); + //display: flex; + //max-width: 50%; + //flex-wrap: wrap; + //flex-direction: row; + //flex-flow: row; +} + + +.rack-container { + min-height: 100%; + max-width: 20%; + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.cage-container { + display: flex; + flex: 1 0; + max-width: fit-content; + box-sizing: border-box; +} \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts new file mode 100644 index 000000000..ceb0001f4 --- /dev/null +++ b/CageUI/src/client/components/helpers.ts @@ -0,0 +1,39 @@ +/* +console.log(zeroPad(5, 2)); // "05" +console.log(zeroPad(5, 4)); // "0005" +console.log(zeroPad(5, 6)); // "000005" + */ +import { Cage, Rack } from './typings'; + +export const zeroPad = (num, places) => String(num).padStart(places, '0') + + + +// load room racks +export const loadRoom = (type: string): Rack[] => { + const tempRoom: Rack[] = []; + let cageNum: number = 0; + + // generate default cages + const genCages = (cnt: number): Cage[] => { + const cages: Cage[] = []; + for (let i = 0; i < cnt; i++) { + const tempCage: Cage = { + id: cageNum, + name: zeroPad((cageNum + 1), 4) + } + cageNum++; + cages.push(tempCage); + } + return cages; + } + + if(type === "ab"){// 6 x 4 + for (let i = 0; i < 6; i++) { + const tempRack: Rack = {id: i, cages: genCages(4)} + tempRoom.push(tempRack) + } + } + + return tempRoom +} \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts new file mode 100644 index 000000000..ab7c52f10 --- /dev/null +++ b/CageUI/src/client/components/typings.ts @@ -0,0 +1,9 @@ +export interface Cage { + id: number + name: string; +} + +export interface Rack { + id: number + cages: Cage[] +} \ No newline at end of file diff --git a/CageUI/src/client/entryPoints.js b/CageUI/src/client/entryPoints.js index 95c6cc8d4..c11e4e476 100644 --- a/CageUI/src/client/entryPoints.js +++ b/CageUI/src/client/entryPoints.js @@ -1,7 +1,7 @@ module.exports = { apps: [{ - name: "cage_interface", - title: "Cages Interface", + name: "home", + title: "Cage Display", permission: "login", path: './src/client/cageUI' }] diff --git a/CageUI/src/client/rooms/AB140-167.svg b/CageUI/src/client/rooms/AB140-167.svg new file mode 100644 index 000000000..67b9f14b8 --- /dev/null +++ b/CageUI/src/client/rooms/AB140-167.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CageUI/src/client/rooms/Test.svg b/CageUI/src/client/rooms/Test.svg new file mode 100644 index 000000000..651ce573e --- /dev/null +++ b/CageUI/src/client/rooms/Test.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.59 + + + + + + + + + + + +0.30 + + + + + + + + + + + +0.11 + + + + + + + + + + + 100% + 89% + 70% + 59% + 41% + 30% + 11% + 0% + + TEST + TEST + From 109f94c1d54a8828d9b53adf335a7d4b3ae8567d Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 3 May 2024 11:37:06 -0500 Subject: [PATCH 076/357] Testing ReactSVG Library --- .../client/cageUI/components/RoomLayout.tsx | 98 +------------------ 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx index 14ce61cc4..6d603c9dd 100644 --- a/CageUI/src/client/cageUI/components/RoomLayout.tsx +++ b/CageUI/src/client/cageUI/components/RoomLayout.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import {FC} from 'react'; import { Cage, Rack } from '../../components/typings'; import { ReactSVG } from 'react-svg'; +import { ActionURL } from '@labkey/api'; interface LayoutProps { room: Rack[] } @@ -71,102 +72,7 @@ export const RoomLayout: FC = (props) => { return (
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
); } From 3995ebe40f285413381c6ce7f34d238755bd1b49 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 9 May 2024 11:08:18 -0500 Subject: [PATCH 077/357] Cage Review Popup added --- CageUI/package-lock.json | 435 ++++++++---------- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/cageUI/RoomHome.tsx | 9 +- .../client/cageUI/components/RoomLayout.tsx | 92 ---- CageUI/src/client/cageUI/testData.ts | 3 +- CageUI/src/client/cageui.scss | 82 +++- CageUI/src/client/components/CageDetails.tsx | 56 +++ .../{cageUI => }/components/RoomDisplay.tsx | 10 +- .../{cageUI => }/components/RoomHeader.tsx | 0 CageUI/src/client/components/RoomLayout.tsx | 61 +++ .../{cageUI => }/components/RoomLegend.tsx | 0 CageUI/src/client/components/helpers.ts | 32 +- CageUI/src/client/components/typings.ts | 25 +- CageUI/src/client/rooms/AB140-167.ai | 362 +++++++++++++++ CageUI/src/client/rooms/AB140-167.svg | 1 - CageUI/src/client/rooms/Test.svg | 72 --- 16 files changed, 804 insertions(+), 438 deletions(-) delete mode 100644 CageUI/src/client/cageUI/components/RoomLayout.tsx create mode 100644 CageUI/src/client/components/CageDetails.tsx rename CageUI/src/client/{cageUI => }/components/RoomDisplay.tsx (61%) rename CageUI/src/client/{cageUI => }/components/RoomHeader.tsx (100%) create mode 100644 CageUI/src/client/components/RoomLayout.tsx rename CageUI/src/client/{cageUI => }/components/RoomLegend.tsx (100%) create mode 100644 CageUI/src/client/rooms/AB140-167.ai delete mode 100644 CageUI/src/client/rooms/AB140-167.svg delete mode 100644 CageUI/src/client/rooms/Test.svg diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index 330dbbe68..629c6b3fb 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -107,12 +107,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -162,19 +162,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", - "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "semver": "^6.3.1" }, "engines": { @@ -252,12 +252,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -276,16 +276,16 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -307,9 +307,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -350,12 +350,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -374,12 +374,12 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -395,9 +395,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -413,40 +413,40 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -456,9 +456,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -842,12 +842,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", - "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -890,18 +890,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "globals": "^11.1.0" }, "engines": { @@ -928,12 +928,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1298,12 +1298,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1315,12 +1315,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1346,14 +1346,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", + "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1536,12 +1536,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1551,14 +1551,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", - "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { @@ -1785,9 +1785,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1796,9 +1796,9 @@ } }, "node_modules/@babel/runtime-corejs2": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.4.tgz", - "integrity": "sha512-ZCKqyUKt/Coimg+3Kafu43yNetgYnTXzNbEGAgxc81J5sI0qFNbQ613w7PNny+SmijAmGVroL0GDvx5rG/JI5Q==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.5.tgz", + "integrity": "sha512-cC9jiO6s/IN+xwCHYy1AGrcFJ4bwgIwb8HX1KaoEpRsznLlO4x9eBP6AX7RIeMSWlQqEj2WHox637OS8cDq6Ew==", "dev": true, "dependencies": { "core-js": "^2.6.12", @@ -1823,19 +1823,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1844,13 +1844,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2249,9 +2249,9 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", - "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", "dev": true, "dependencies": { "@floating-ui/core": "^1.0.0", @@ -2503,13 +2503,13 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.2.tgz", - "integrity": "sha512-4KMApTgb1Hvjz9Ue7unziJ1xNy3k6d2erp0hz1iXryXsf6LEM3KwN6YrfbqT0vqkUO8Tu+CSnvMia9cWX6YGVw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.3.tgz", + "integrity": "sha512-Q0SPAdmK6s5Fe3e1kcNvwNyk6e2+CxM8XZdGbf4abZG7nUO05KSie3/iX29loTBuY+75uVP6RixDSPVpotfzmQ==", "dev": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.0.0", + "@jsonjoy.com/util": "^1.1.2", "hyperdyperid": "^1.2.0", "thingies": "^1.20.0" }, @@ -2525,13 +2525,10 @@ } }, "node_modules/@jsonjoy.com/util": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.0.tgz", - "integrity": "sha512-Yz+xITJ3Y/w0DBISwPkBETP5/cITHXscjgQNZIkfrVz1V7/ahJY8vw+T+LZy/KtXgKuUWqu4GALAQ3bhGt9J8A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.2.tgz", + "integrity": "sha512-HOGa9wtE6LEz2I5mMQ2pMSjth85PmD71kPbsecs02nEUq3/Kw0wRK3gmZn5BCEB8mFLXByqPxjHgApoMwIPMKQ==", "dev": true, - "dependencies": { - "hyperdyperid": "^1.2.0" - }, "engines": { "node": ">=10.0" }, @@ -2661,13 +2658,10 @@ } }, "node_modules/@labkey/build/node_modules/css-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2737,18 +2731,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/@labkey/build/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@labkey/build/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -3007,12 +2989,6 @@ } } }, - "node_modules/@labkey/build/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@labkey/components": { "version": "2.390.4", "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-2.390.4.tgz", @@ -3227,9 +3203,9 @@ } }, "node_modules/@react-aria/ssr": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", - "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.3.tgz", + "integrity": "sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -3788,9 +3764,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", + "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -4886,9 +4862,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001616", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz", + "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==", "dev": true, "funding": [ { @@ -5370,26 +5346,11 @@ } } }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5397,12 +5358,6 @@ "node": ">=10" } }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -5850,9 +5805,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.750", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", - "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", + "version": "1.4.758", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.758.tgz", + "integrity": "sha512-/o9x6TCdrYZBMdGeTifAP3wlF/gVT+TtWJe3BSmtNh92Mw81U9hrYwW9OAGUh+sEOX/yz5e34sksqRruZbjYrw==", "dev": true }, "node_modules/emoji-regex": { @@ -5880,9 +5835,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6674,18 +6629,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -6705,13 +6648,10 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6731,12 +6671,6 @@ "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data-to-object": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", @@ -6804,9 +6738,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, "node_modules/fs.realpath": { @@ -7006,12 +6940,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -9028,9 +8963,9 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -11361,10 +11296,13 @@ } }, "node_modules/sonic-forest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.0.tgz", - "integrity": "sha512-yFO2N4uTUFtgKLw03WWFpN1iEwZySweMsa18XN3Kt0yYrlmVHunC2ZgM+437zDoKISAJHcH3Cg18U7d6tuSgSQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.2.tgz", + "integrity": "sha512-2rICdwIJi5kVlehMUVtJeHn3ohh5YZV4pDv0P0c1M11cRz/gXNViItpM94HQwfvnXuzybpqK0LZJgTa3lEwtAw==", "dev": true, + "dependencies": { + "tree-dump": "^1.0.0" + }, "engines": { "node": ">=10.0" }, @@ -11877,6 +11815,22 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", + "integrity": "sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -11949,24 +11903,10 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "bin": { "semver": "bin/semver.js" }, @@ -11993,11 +11933,6 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -12195,9 +12130,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz", + "integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==", "dev": true, "funding": [ { @@ -12214,7 +12149,7 @@ } ], "dependencies": { - "escalade": "^3.1.1", + "escalade": "^3.1.2", "picocolors": "^1.0.0" }, "bin": { @@ -12584,13 +12519,13 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.1.tgz", - "integrity": "sha512-36cVYFMaa9HNEYyvkyKCwker8DBmOdjWLrfekE/cHEKJ806fCfKNVhOJNvoyV/CrGSZDtfQPbhn0Zid0gbH0Hw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz", + "integrity": "sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==", "dev": true, "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.2", - "@jsonjoy.com/util": "^1.1.0", + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.1.2", "sonic-forest": "^1.0.0", "tslib": "^2.0.0" }, diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index 101490e5e..859db0a3a 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 \ No newline at end of file diff --git a/CageUI/src/client/cageUI/RoomHome.tsx b/CageUI/src/client/cageUI/RoomHome.tsx index a19c8412b..bb414c0b6 100644 --- a/CageUI/src/client/cageUI/RoomHome.tsx +++ b/CageUI/src/client/cageUI/RoomHome.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; import {FC} from 'react'; -import { RoomHeader } from './components/RoomHeader'; -import { RoomLegend } from './components/RoomLegend'; -import { RoomDisplay } from './components/RoomDisplay'; +import { RoomHeader } from '../components/RoomHeader'; +import { RoomLegend } from '../components/RoomLegend'; +import { RoomDisplay } from '../components/RoomDisplay'; import '../cageui.scss'; import {Cage} from '../components/typings'; @@ -10,7 +10,6 @@ interface RoomProps { room: { name: string; cages: Cage[]; - type: string; } } @@ -23,7 +22,7 @@ export const RoomHome: FC = (props) => { />
- +
); diff --git a/CageUI/src/client/cageUI/components/RoomLayout.tsx b/CageUI/src/client/cageUI/components/RoomLayout.tsx deleted file mode 100644 index 6d603c9dd..000000000 --- a/CageUI/src/client/cageUI/components/RoomLayout.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import * as React from 'react'; -import {FC} from 'react'; -import { Cage, Rack } from '../../components/typings'; -import { ReactSVG } from 'react-svg'; -import { ActionURL } from '@labkey/api'; -interface LayoutProps { - room: Rack[] -} - -interface CageProps { - cage: Cage; -} - -const CageItem: FC = (props) => { - const {cage} = props; - return ( -
- - - - {cage.name} - - -
- ); -} - -interface RackProps { - rack: Rack; -} -const RackItem: FC = (props) => { - const {rack} = props; - return ( -
- {rack.cages.map((cage) => { - return( - - ); - })} -
- ); -}; - -export const RoomLayout: FC = (props) => { - const {room}= props; - console.log(room); - const handleClick = (event) => { - const svgPoint = event.target.ownerSVGElement.createSVGPoint(); - svgPoint.x = event.clientX; - svgPoint.y = event.clientY; - - const path = event.target; - const pathBounds = path.getBoundingClientRect(); - const pathMatrix = path.getScreenCTM().inverse(); - const clickPoint = svgPoint.matrixTransform(pathMatrix); - - if (path.isPointInFill(clickPoint) || path.isPointInStroke(clickPoint)) { - console.log(`Clicked inside ${path.id}!`); - // Add your click event handling logic here - } - }; - - return ( -
- -
- ); -} - -/* - - -{room.map((rack) => { - return( - - ); -})} - */ - diff --git a/CageUI/src/client/cageUI/testData.ts b/CageUI/src/client/cageUI/testData.ts index 4b930b793..ce1d13f22 100644 --- a/CageUI/src/client/cageUI/testData.ts +++ b/CageUI/src/client/cageUI/testData.ts @@ -1,5 +1,4 @@ export const testRoom = { name: "ab140", - cages: [], - type: "ab", + cages: [] } diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 23c5299ea..5721770c1 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -64,7 +64,6 @@ //flex-flow: row; } - .rack-container { min-height: 100%; max-width: 20%; @@ -78,4 +77,85 @@ flex: 1 0; max-width: fit-content; box-sizing: border-box; +} + +.room-svg rect { + fill: none; + pointer-events: visibleFill; +} + +.room-svg tspan { + pointer-events: none; +} + +.details-overlay { + display: block; /* Hidden by default */ + position: fixed; /* Stay in place */ + z-index: 1; /* Sit on top */ + padding-top: 100px; /* Location of the box */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background-color: rgb(0,0,0); /* Fallback color */ + background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ +} + +.details-content { + background-color: lightgrey; + margin: auto; + padding: 10px; + border: 1px solid #888; + width: 80%; + height: 90%; + border-radius: 25px; +} + +.details-close-button { + float: right; + font-size: 48px; + font-weight: bold; + padding: 5px; + border: none; + background: none; +} + +.details-close-button:hover, +.details-close-button:focus { + color: #000; + text-decoration: none; + cursor: pointer; +} + +.details-header { + display: flex; + justify-content: space-between; + align-items: center; + + height: auto; + margin-inline: 10px +} + +.details-header h1 { + margin: 0; +} +.details-header button { + margin: 0; +} + + +.details-subheader { + padding-left: 10px; +} +.details-subheader h4{ + margin-top: 0; +} + +.details-divider { + width: calc(100% - 20px); /* Adjust width as needed */ + height: 4px; /* Adjust height as needed */ + background-color: darkgrey; /* Adjust color as needed */ + margin: 10px; /* Adjust margin as needed */ + border-radius: 5px; /* Adjust border radius for rounded corners */ } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx new file mode 100644 index 000000000..d0945c358 --- /dev/null +++ b/CageUI/src/client/components/CageDetails.tsx @@ -0,0 +1,56 @@ +import * as React from 'react'; +import { useState, FC, useRef, useEffect } from 'react'; +import { Cage } from './typings'; + +interface CageDetailsProps { + isOpen: boolean; + onClose: () => any; + cage: Cage; +} +export const CageDetails: FC = (props) => { + const { isOpen, onClose, cage } = props; + + const modalRef = useRef(null); + console.log(cage); + + // close modal if user clicks outside its bounds + useEffect(() => { + const handleClickOutside = (event) => { + if (modalRef.current && !modalRef.current.contains(event.target)) { + onClose(); + } + }; + + if (isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } else { + document.removeEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isOpen, onClose]); + + return ( + <> + {isOpen && ( +
+
+
+

Cage #{cage.name}

+ +
+
+

Total: 2

+

Status: OK

+
+
+
+
+ )} + + ); +}; diff --git a/CageUI/src/client/cageUI/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx similarity index 61% rename from CageUI/src/client/cageUI/components/RoomDisplay.tsx rename to CageUI/src/client/components/RoomDisplay.tsx index 0b89e7ac0..d12cfee35 100644 --- a/CageUI/src/client/cageUI/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -1,15 +1,15 @@ import * as React from 'react'; import { FC, useState } from 'react'; -import { Cage, Rack } from '../../components/typings'; -import {loadRoom} from '../../components/helpers'; +import { Cage, Rack } from './typings'; +import {loadRoom} from './helpers'; import { RoomLayout } from './RoomLayout'; interface DisplayProps { - type: string; // room type + name: string; // room type } export const RoomDisplay: FC = (props) => { - const {type} = props; - const [currRoom, setCurrRoom] = useState(loadRoom(type)); + const {name} = props; + const [currRoom, setCurrRoom] = useState(loadRoom(name)); // insert logic to find ro return (
diff --git a/CageUI/src/client/cageUI/components/RoomHeader.tsx b/CageUI/src/client/components/RoomHeader.tsx similarity index 100% rename from CageUI/src/client/cageUI/components/RoomHeader.tsx rename to CageUI/src/client/components/RoomHeader.tsx diff --git a/CageUI/src/client/components/RoomLayout.tsx b/CageUI/src/client/components/RoomLayout.tsx new file mode 100644 index 000000000..c4cb6c89e --- /dev/null +++ b/CageUI/src/client/components/RoomLayout.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { FC, useState } from 'react'; +import { Cage, Rack } from './typings'; +import { ReactSVG } from 'react-svg'; +import { ActionURL } from '@labkey/api'; +import { parseCage, parseRack } from './helpers'; +import { CageDetails } from './CageDetails'; + +interface LayoutProps { + room: Rack[] +} + +export const RoomLayout: FC = (props) => { + const {room} = props; + const [isOpen, setIsOpen] = useState(false); + const [clickedCage, setClickedCage] = useState(); + console.log(room); + + const openDetails = () => { + setIsOpen(true); + } + const closeDetails = () => { + setIsOpen(false); + } + + + const handleClick = (event) => { + const cage = event.target; + const rackId: number = parseInt(parseRack(cage.parentElement.id)); + const cageId: number = parseInt(parseCage(cage.id)); + const clickedRack = room.find(rack => rack.id === rackId); + const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); + + console.log(clickedRack, clickedCage); + setClickedCage(clickedCage); + openDetails(); + + }; + + return ( +
+ { + const cages = svg.querySelectorAll('rect'); + cages.forEach((cage) => { + cage.onclick = (event) => handleClick(event); + }) + console.log(cages); + }} + /> + +
+ ); +} diff --git a/CageUI/src/client/cageUI/components/RoomLegend.tsx b/CageUI/src/client/components/RoomLegend.tsx similarity index 100% rename from CageUI/src/client/cageUI/components/RoomLegend.tsx rename to CageUI/src/client/components/RoomLegend.tsx diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index ceb0001f4..52256afee 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -3,16 +3,33 @@ console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ -import { Cage, Rack } from './typings'; +import { Cage, Rack, RoomSchematics } from './typings'; export const zeroPad = (num, places) => String(num).padStart(places, '0') +export const parseRack = (input: string) => { + const regex = /cage\w-(\d+)/; + const match = input.match(regex); + if (match) { + return match[1]; + } + return; +} + +export const parseCage = (input: string) => { + const regex = /cage-(\d+)/; + const match = input.match(regex); + if (match) { + return match[1]; + } + return; +} // load room racks -export const loadRoom = (type: string): Rack[] => { +export const loadRoom = (name: string): Rack[] => { const tempRoom: Rack[] = []; - let cageNum: number = 0; + let cageNum: number = 1; // generate default cages const genCages = (cnt: number): Cage[] => { @@ -20,7 +37,7 @@ export const loadRoom = (type: string): Rack[] => { for (let i = 0; i < cnt; i++) { const tempCage: Cage = { id: cageNum, - name: zeroPad((cageNum + 1), 4) + name: zeroPad(cageNum, 4) } cageNum++; cages.push(tempCage); @@ -28,12 +45,11 @@ export const loadRoom = (type: string): Rack[] => { return cages; } - if(type === "ab"){// 6 x 4 - for (let i = 0; i < 6; i++) { - const tempRack: Rack = {id: i, cages: genCages(4)} + if(RoomSchematics[name]){ + for (let i = 0; i < RoomSchematics[name].rackNum; i++) { + const tempRack: Rack = {id: i + 1, cages: genCages(RoomSchematics[name].cageNum)} tempRoom.push(tempRack) } } - return tempRoom } \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index ab7c52f10..b08e4d03d 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -6,4 +6,27 @@ export interface Cage { export interface Rack { id: number cages: Cage[] -} \ No newline at end of file +} + +interface SchematicRoomProps { + [key: string]: { + rackNum: number; + cageNum: number; + } +} +const Schematics: SchematicRoomProps = { + "AB140-167.svg": { + rackNum: 6, + cageNum: 4 + } +} + +export const RoomSchematics = { + ab140: Schematics["AB140-167.svg"], + ab142: Schematics["AB140-167.svg"], + ab144: Schematics["AB140-167.svg"], + ab161: Schematics["AB140-167.svg"], + ab163: Schematics["AB140-167.svg"], + ab165: Schematics["AB140-167.svg"], + ab167: Schematics["AB140-167.svg"], +} diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai new file mode 100644 index 000000000..0de1964e6 --- /dev/null +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -0,0 +1,362 @@ +%PDF-1.6 %âãÏÓ +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator 28.5 (Macintosh) + 2024-05-07T12:24:20-05:00 + 2024-05-07T12:24:20-05:00 + 2024-05-07T12:24:20-05:00 + + + + 256 + 180 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 + + + + 1 + False + False + + 999.801147 + 699.900024 + Points + + + + + MyriadPro-Regular + Myriad Pro + Regular + Open Type + Version 2.106;PS 2.000;hotconv 1.0.70;makeotf.lib2.5.58329 + False + MyriadPro-Regular.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + Document + AIRobin + application/pdf + + + AB140-167 + + + proof:pdf + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + uuid:57daad66-f7db-5a47-945c-84b5ac48f946 + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WÁ®å4 Ý÷+º¤›Ilj· ˆÕObÉâ‰a„æ!Ͱà÷9NÚ´…ö¾^©£‘æ>·uâããã8o~|;¾y÷Öß~÷v> ~U§£âÿâÃxkæç߇_Ç¿ðÖþýüÃyÿ5ºóønÞüð‹ÿø{ø4†úþwì…G&¬¤ÌãóKõBˆ®$oÁG§1އàÅeQ{T\¡1'Ù¾ä(§‘g‚™’ ˆêyøeø AÀ÷Ÿ«á!,[#,–1%¬S­÷ÆFˆØcS[cñ¡à] šw“Òž“Gv¥D.dÕÅ ¯}–rìÄL. +ñÖ é +ÿw¤Ì¹º°P8éB‰Ì'¸"QÖ€²K: Ÿ†oŸ&r?ÿÑ©|ó~³užÞˆÑ^â'€IÖä¼÷i|z¾Š_?ý9|ÿôHíщ±<–˜ÎÛLv‘Ëæ…l§5¾ÊD×QYèNY(‚%”¦$ãu #a1=‚aŒ”Ôa„/ÀÈcõ] ^Ú¢*÷øØ¡ àû”«ºµ`ƒ-!á ')»NG-Áœe®)ã¬t&eÝÉ*_$È™Ê-¥:e §äbNÑ£¥šSÒWºÂB'¿•K¾Ž‰&bÔÊ#ø;={Pö”þ 'IÞÂ)×V[eæ¨öôÏ'¦ ¦›âK<ÝŒ™pÒ`æ±rfì¦tåN0V6PäZVã@ ‚¨dÕq@ê5—]§ã@%¾ Rpås9›|Rq …yVÌD¨iøÿ—›#Ÿ¨¾˜Oø=­X´´#æB±@¸ˆÞYÙq÷ÌO©, .l`‰Æ÷ß»eÌ«*t^ðls´CÒ*ª[v!a·}÷´.fA¯C‘C’ +*¡w–3:/W‹ ¼ët¤óÙå"ZJ‰ñLº“ ¬òLÁ¦ÄnÍ ·¢S*1'Ïjõâ]ZÓùŠÔ³¤íÙ.œ)•š¥Çðwzv Ü|Ámr 婲³rÄÿžì1†bÖóÚ“8 +ë[Î+²7Z6‡ã…¢é¬Gª¥×œÒ=ÊÊ…Cqçä± +Ž˜vptïCyE÷(^UÔÕ̪[ÃÕÊNÕï;©ÞœD¼Ô1ÉK.grÖ `J>ž)~ âÙ\â©_­£b8€Xr +rZñ!.Ч ÈHZ‡@wJv@ÜU<%Z@\9°L,±½'veç«l!¨¢§µnLôÑþÂÞÛ™x¬fQxLG0îèܸè0ÎvÞUúò%ޱ`Ü ëÃ8£Âãx#4`ÆÞv’ñ†Â( +ó†é0W;ÃóaÀ—Ñ£½¹„h_†ÖK¸àœö}±¬cµ<Âfle$E®Ì/¢XoÉQ©Ž¶Bµ¥¤–p6K›e=Vßèp™>ýh&®0V‚!Hð´îláÌÃTõlÁ+8k}œÍ< ‰Lš± ´hqJŒH0ˤ†ð†%쇋™Èîl7kv»mKØÊ«/@”4ÿŒ¼Ü +:jìà{œÏ–6;å@þ͈Bì†v6QGl_Ïv² ç8;S®u8/Žë(Sý|Ú<âÆ`ÁN¡ÁÔŠi +~²-ø ^ÿbB…±çgÙS9ê»G€¸9†%ÀnÏúƒ àä?Ãÿ¶ÁœaÂN+%b÷ŸþÄ|¨h…Ãõ9PÇܸªKø­õe³ePí±Æ@\Vvr~ QÕl¢ÕHÑT75;àƒ}0…h#k«L7»•I€oÿøÉyƒ¿ZÅgÎû³“ÀKx³9‡?Û¼ÉyFß–îÉ™6¶ÞW |Š«'w›þº:³A…¸Œ µÍ @LVÍJz=¶wBŒõuåkJRÓ{Í!´'έÍLlÍÜD\w@s«qI–Ù´¯6ô·©ßáÎØúZU;ÀiAµñ™H‹‰ÅXZ%å´˜HhàºøüÓé8{ƒž´¯*c ¦éºyDª½³G#3»8]"¯ÖóÒaÚ[kz³ÃñRkSÒfqb€ º;Û(qÜl÷èç'H(§RÅ(׸¤–¹yî´­œS”Ú5Õ,±ZOÏZæJ 6À6¬5ˆªÑ¾B{g)ûÚsžíH鵄’ÙF„ùA§f±À¶IÇr’8O%•kÄÄMg™¸f‰8®ìY +ývª=Áh ”cZm!•¢ÖkxR¬QMà-½=4³ÕtÎËëÐÚZ÷FjE7ë[i¢ÑÙ#œía~0c´Â*óK–Bï­--Ä9Ëž‡éHAUáì|Yɘ4â 3íeÐ:N]¥¸: S@ûÎÉÞéZÆ'_®ùLu‡K 4ãB×Z¾(>m®ËÄlíZ7Œ˜Ÿ°Éä5!”>±h=â? ï¿ÙŽŽZlDIíÔ_ý7Ô0”ëÌÕ (Ö©/u–YI°5VÓÚ@ðG­>r½Ç¶ß¿{;âç_ÿÿÿÿò'—b endstream endobj 23 0 obj <>stream +8;Z]a;%A4$&-U@nrrp)2gK;d!U%0Xh+urTb>"Er&BRSLCT`9&GF>PejFns,;VLI04TYM(k[Bs5UoLOCWE.,fq?,k/ +Uff.p.&:%X/GG5_c93C@mY*K`BY!;36J=hR!<<-"rr<$!s8N0$PuYQW~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/7/24 12:24 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -371.139245021352 858.326532935701 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -371.139245021352 858.326532935701 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX·GĤ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJHÃ:\ Ò¶m-ð®ën)© 16¦û » Ò ³ê{`Ì]Ÿï¿ÝšgÚÆkWT9åß’FÌh+ú$<'§«•P¨,û›IOŽ#Ø0¿[6ÀN† R$}C•êfÍžèZÂÃöì™Añ÷Ônf€Ó6¬†%©us$oÕÿç´+§û듞ëT€•íLJfhšckÀ€À“¡ÈM|ê«êØüù*8î¬ì§îÿ©Ý/Ïòû]ª9à°kW€‡í¯ù¶cª“-rüÀ½]õÇô˵w,×÷íÖo ·TûþŸ§\¸vt÷v_÷þ/·®Ïï6]òg¹ñßYŽ_'®u¿ð@b€¥ç:=µ¢Oâ^}Li–b‹Š<®gŠÍiÿ´×\ßöý‰ã[9]Ÿ¦à^÷FŸpáØÕà[vÇOÿôàßÚ—áøŽÍ«o—~Í)«rÞŸz­*—ÞØö¯éל’#éÁë¹æ´Tpk`õ1(=Ô»(vÏ9/ÅÛ†U– ðaQÞXy@QïÕÇt?ú˜%Ÿ_å²÷êcİ%K1üöjµé¶öÂ5K ’íÒ¶ìÖ·fVÎ8ö‚m­þ´KkæSÚ¿Ýx¶a–vÇf—j–]ï|ÇN­r&´ÇLÛ.Û}½.=‚pìò:žU¡Ó¯'ß_k¾ô¡cqJþ¿fi]«çxVioíΩ»v5SEqìÞ|öÔ{‘K»†Ys4»h¾æûžÑ°|åYõ?üW®Ô?ŽiÞ,y'Iz­>†‡&©‘!Í^Îðíz¾Š}ìúßÿåÖ.§rºn®éú ˜µ/ þö¯é°ÆñO;Xj¢ï!ÃR%»±›Ш¹-Ï0ë×Ú?¦_³J£áXµÒxŸgôÓ:K†[6,»¢zžcö €o7þ'.»exæˆÛ½?n8†S° ‹î öœ^¸nü‹}Û>œrïz¦X¿[« íAÇ虣}–cÉ.æ–+ŸÆÿËÕh÷·ÍÑê¯i½W΄ƒáúþüwVÁrèÓ¯üþL)qÇè;¶áà‰ËšB\ÿÛv=ZËþͬœ -v¿çÓ¸ØÔ.ìо—¹·«š¡ýmÔ“©8Y€QŠóïûÇ.ç•דY9¹:{|Ù;ÒºÖ3ÏHãÙ«qƒ’–Ñx×кv qÍ¢ñlÀHãÏÎÑ(ú²w.zR ;7=®…݇f÷œÍ—¾›cï šÝ$GÓ䤻'ÍôxæÑxæŽ6ÿ1ý‚?_ÆÐþËÕ|šÂàŽcîê«¥DæÐdfùòeöÜŸ»>Mλzk=‘)Ù+¯ž¦øZªØ Ò>MQÿ·Þhõg¹²›ÑÊW^Ú꫟öÈÚg &3ú2‡öeõ¿c˜mE¯¼ªhf£Z癞¸ìƒž8MÔF­k^ë`ir1$ýXŽb÷ÝãZX’|4;7CÑ“`÷¸&Ф†ÞÁÐIkcIö>ަùX‚£Ç5“wQ4LJc’£Ç5Òûp}iŽÏJYž8-Ì"Y–efÉvî»÷>KA5ËÊÒ,3Žf¥ +úЋ~ô¤/½éOúÔ«~õ¬ç`=‚!(‚#H‚%h‚'ˆ‚Y +ªà +® ò°‡>Ã0Ã1$Ã24Ã3DÃ4TÃ5dC.vÑ‹ Š¢8ФXЦxЍ˜Šª¸Š¬ÈÇ>ú1ÇpÇq$Çr4ÇsDÇtTÇudGNvÒ“ ’")’#Iž$J¦¤J®$Kò²—¾˰˱$˲4Ëì,Ñ2-Õr-Ù’›Ýô&h†¦hŽ&i–¦iž&j¦¦j®&kò³ŸþÏðÏñ$Ïò4ÏóDÕs=Ù“£YG= +¢!*¢#J¢%j¢'Š¢)ª¢+Ê¢<í©OÁ4LÅtLÉ´LÍôLÑ4MÕtMÙ”«]õ*¨†ª¨Ž*©–jfª§Šª©ªª«Êª|í«_Á\ÃU\Ç•\ËÕ\Ï]ÓU]ו]9ÛYÏ‚lÈŠìÈ’lÉšìÉ¢lʪìʲ¬Š¢¨‰’¨ˆ‚hGÙS=ϳ<Ç3<ýÉOÕDMÓ$ÍÐô&7×-Í2#K±ô%/W’Ys${*žb)ŽbÈ–` +f(h¦;›dúÞÕì4K“M_–d9–c)–b–YGÑsÌÆQÅ>öS4×0Íü šèèEŽb¶Škv’&HötL3s,GRÁѯcKf½§þ,Cz¿fbW®žcÈÁÎy$ó¨ïeW5ÍÐ=Ïó<ÍÓ<˳$ÏñO1<Áôg?ûÉOÖdÍÕ\MÕTÍÔLMÔ<ÍÓÌLÒÍÑÍÐ MÐôf7¹ÉM¶d˵TË´TË´D˳4˲$K²K± K°ô¥/{ÉK^²äJªdJf(y’&Y’$9’"’ éÉNr’ÙqÕÑñͱÇqÃýØG>²¢*¦"*šb)’¢(Šb(‚¢3.²áªa¢áš!Ž¡†!ö‡,¸‚*˜‚(h‚%H‚#(‚!‚ä ëW¯zÔŸÞô¦'ýèEú ôÝwÏ=ÛÕžö´£ýìf7{ÙÉ>ö°ƒì¾÷Î;ËWžr”ŸÜä&/9ÉG.r‘‡äžwž d¥ìE5¯q-S°´÷¿\Y%4Ç-øuëVFµÞhˆMñi·õÑ^96Ó¯9ý7ûhõexÕº]Îèþ²snv1µ+»1'¡)è9þäõUÏ«¯ +€oÕ§íúÀ,V¹5HKhŠ[õRíý€¿c¿òU0Çnúk7fšâ³ÞU«ç[õEª×¿íŸ«à»v9/¶S0¦¥º]>Z=ßð»jw}*hØõâyÝõ™Ðš"žgÖ²c5ªµn—#oäúß·ËIdóJ®Ð±¹ne˜‹9­ÉX2|ËpÍ‘gÍIäß)žS¯ŸÓ—ý˜¦Ý‡^û,ù`Ž¿°{ͽã¯~¥Ùµ暦Ý4»»*øuëO4{¦¹¬ÿÚ|fٵحYÿ–ᦿ[{çšv_¯˜ý­Vð»ð]»ô{}½ìYýo÷׬϶<à†ex%ÃßHv-vc°Ïò’]ëc/eŸzå•ô}¥“æ`Éð;«äü¯˜ :YÄ”Ésíª>×—gÖüÝ17~Åj—%ÇZ_¦rïùý¾€_§>y®Uîëû`Ûþñ=¿¡Ph³ÙT*_V©¬ë¹ž_öÊ®›[wýéo»)ù«Þ®?ýÅ©7^}ðêËæ:¶ºõŠ4à¿°øSïë-Û}åÿeþÖÍy~_åÒögÃ6 Çñ¿W?¾ç×c8Æú2®çxuÏrìª`Ö¿ÜX5ÀÿdæWžáÛþ1Øü}÷ËpSÙîë­çï˰ ¿þê­çØë“ÿ€˜ ¿ìXLg-ÛíÍ·žßê¿÷,{Ÿ«v_ÿuëû»[,¸@Ϫïýõ¯¿ÌŽS¯ì¾êÏúZ´[³ÜÚ¥¿ûÇq,õÉ3|«¾ý±d8®ÿm·üUßÿ5ë¿_ýY,÷}Y,ûæyžç/“a†ÿÿ_öU®û ðãÕ+¦ªa•û¹îú²Í÷ß¾5ß¿c*wýÜ8†ß¯J?– ×çgÃö¯?üž_é»ö¸5ëMíÇ,¶ÿ=Ç`Ÿ f¥ŒŽÝÿÃšã¹æp\fßò½æô•WŽË>óLzòò¿o7f}ØK±¤iz“{³w^z¥æÉ®Û4ÅRIÓ4¹×ÍÞÐL1l8d˜×›Ïr9)À‡EâûO¯¼ +ðoW®ÿŸ'²—¢6–]뢩ìšÙ{èͲä#èñÑ—ÚÈ}Iúp,½é…¥/5®y>’aÉA°“%i’×:'EÐô 8zÐ+ÅRó"Ø=Co‚Ýë$ØÐÍ ùӛËB-ôŽ›upZÁ§[þ·<§'f}ôDv»þ\Ì+¦)ïX<ÛßsVí‚ܘ½ëó$Æÿ3¦æø±«ú|VíbN¡×ö Ë¡úÇ1çaø¹ëó˳Fsða_GÑ,5°ƒœäÞwÎEÓCÍC’ )rnz ï1 +=35Ñã\ü·Ó¯:•4ù’¡íªÝ=× +y†aÖ÷”G[Çe\sØ,¾ïÿù,÷U9‘•“Ë4Çg¹vèVN.ó`×õO½bš7†cèÉ÷ÊÙµÛ}Õ3ûc˜=‰•óýïÿšÚc¬ïiÌ5çuáz@FsØ·<³.•£šs’æÞòg¹Mv¤šÃ®çxNmû«æšsËÿSÍ*ÇeàÈÆžsnz¦9jåö2 ÍÞy陦©õ°ÁÐä\$CP,G‚&È9çܳ¿¦p\Æ9©qλÆ5®9˜Q– ¿rlF9.Kpìšã¶mW€ì¦—e8ÀBïð] ýG~¢æø·«Ê3¬€]{ƒ‡=šãÇ7 â¸L‘Ðò\ÿ—›j°€IhŽzfE¯ôšCža»þ¢SY99.ã^è5…'QÏ·[ßv,Ž+šæ¨çÛýuÊq™Æ=°ñSó{6>œ ¶G=nå@Ñâ2Äš·OH*kBRñR¶§PìíæŒù¸{„zƒä1"]QX~¹#]§&iR+8‚ðÓe‘ܾ}Û’KµK—oߎݰ.Üuk#ë¡WÓÚP ÖN3H\Ö EVSkF$:-Xe‰sc;©%¢ž8¯'Âe Ï&Á8¼œsbõÙ~aóÆ=Äè„úD9TX‚ÍØBc¡`+XXvíà-Áæ27%ú\œ‡bÀY$z10Y´DM(~t\æ™tJƒM€Ë@RݶâÖšH!—ÆÍˆ²¼ab ŠË\C*AÏ„Í?Nbs͈xº4¶Ôé6Î{bl1E)±Þcû˜DŒmÀ£2¶þ¸,¶S£llW¤Û¸ìsÐbl¤Á“ % ïÌ®IÆ ^8-¸&pÓöGØ~Á$ýFOÏ/hÒ¨³S õ\æ¥+Îe^ºâ —¶F¨ç2Ò¨A¡ÑG áÇúTŸÚúÔ& Gá.A>á`$ B_ñÎ3—àz‚ËÈÜNè´  À0·k nç2Ï€!V4©D#Ѩ®¬=…!V|C¬¸ï\ö‡tsëû¼Ç¹èǹè‹Ç¹è ËžEmdµ³ˆËB³ã\t…x.:Â^ž‚F +Ð4j͈Bá)Ò—1ºEB¢ð´ŸÜÏ_œ6òâ´/NùŒ( +O5ˆŠÂ[Ç!¹Ð—pë8$Ù…V@BË.\I.4’€7Ç!é,"Ì4€`ÌÒ%Ü,j#f@.3 ‘´¼ºÃv hyZ^­ñ`m¤«pY‹=@ýV’ÊÑÝ•ƒJá¶ <—)dÛÀûÕE¼¼rÐP€);rÇ—§™ç²Œ; ¼S†¹< …¥¸¬ IG!¸F¨‡¦"ÅSX­1Pz\XäŽ$+¡¯F0ÄŠËDÿàóömÍH‚ËB'÷ó‚ÁAxÔãV†·˜¨oßD +Âe›éò„ÁííÛr™=‚ |]º"—ÁÂΦä¥+κ]eÀ|*åÖÈxÖM02„GÄNÓéX˜OEºN†îvªýB÷ç“úô©‡K rÍpÙŸ¯¦ìðâ´óy¡¹tI·Š +Ö›A:(PmƒéV{Fiiöx·$B_qšÔF:ÕžÑÎ?¸¬{Ì4¹ˆ2‡dãpY¬ÃX‘ޱ2¸¬Â%_PëãÔßúÐô\tÔãrÙœapk$ÒuZÛ`íj©5#êÈå( +ç„Z3âRY'Ò©›þ8N´ðùÀ‰t¹CQ裇}zt¤†^Žz\.‹c¬1Þ=‹FÊQ„˜‚ËŽM ®c#ÃQ€¿B†Ë:§((e[Ò¬£Ž¦´WÂ[sf–ûK°K¤° 6 +…ô¼×Q±Úð ¦5 +)%hw».¯ÙhQ¤°®Ý ¼á +c±ü{YˆÖõ¼ p‹–˜Ù¨]ƒAxBÍqtJ{%œ‹®HAà¯Xa@¯´ Ô5—ÅF#ä2ó•b:T ”öç!ÀBü„ï.š¦*MY~O`%P¹ŒDJ@,×%uMhGlq:TÆ­“-‰šo£8€—•êrªÍœõÔÏ +¢ü„ÀÎÑNpñÄ~œËhEº‰1—–/O´ë@#D¢Ù&¤dÁvÊú@"ìA@$“¥dQº`/žrYAç”]i VK6…‹!PPJ†°C”¥”0 +wmO>¦ô¶HÈ®›@Á#(} ´ën­ëz³^N¡ nÔ”‹ÃÖõ¶ >«äŒ¦¬Xrt'¡fP£nÂ&)(Ë n„¼;4;ƒº nIPÈe“Ej èq $%Ú2‘QõÈ~¼ñýÛò°•,» žÃÃ˹(õ![V5È~pÁ-ðÉ&ñp9 uÅ {—¦Ï* ¡sé\öI±¦Ú ©ŒG™=ኗ…×ë—m݇«¦Ë³@=ºÖ‚&t.+¿«1Ã^šð4™¸¤|„LÜ,° b‡«0RhÎ}!¤ .°‘Ab¡Ú~EƒØ(%˜=3&ƒ€Ãd€s§ðHœB_m_Š8ˆœË`­ch¶„abþðòÈZrC‡C°„IÄ+¥ö&¸-$â”RëÓ||sç2²Ôb>w¬!"œÕ墸T@<,qY"3q¯^Âã%r‡!Á̇s™ØP?õìyĶj±,»ÂeŸM¼á&OEµákÊ´fÊÒe·(Ï—õšE­ +õb8M^JЄ¹(;ý' +ç²Î^Žy¤[”hV0áǹÌ¡<º"¬kCID^Ôdø¡Õù›x<¹_ôê’€—®xÜŠ‘®ò™„2¶·C¯ã´6苳ª˜\f§Þ”û¯ëˆú$¦Ýa£H7ÑNµ‘.V ƒÆžQÒ5ú8¬†#»ÕûÝpqt“¶=5”80mYžÏ>`¥º£’ú|5¥>R)ñ¤3\ ÝÈe¨Ç}YÄHG (èÈ!ãù„÷0B;ì(ÒMüxJª¿ŽG§EÑŽê$p±j;{hºÆÞ‚Êe$‡8.&Ú$ÈÇCÚØ@-ÆÆecã2‘äÓØ<þ&¶¬í6K‚ ÛÜÑ:‚ÏŠªDÁRGa“^zf()ü-2èçí‰h>Ò‹'€ ¹ŒLt&`ç&ÚMÐ\ð((ƒBWª¯#Lö20RÎq“{qPƒ †Cà&•sYÇ@ñÔÀÀÌj~Ád5µ_Q’CVÎxVΠëC—ЂÇ@®A¿AVÞ…JªÏöB³‘Xõ#Ô«5RNBBR×á]3$Òm&ô¸ÌâŠtÛÈ´4¶ÔSuÛ¥n!¾ÆÖ%ºíd=cKuäÆö²}]Û˜»Ä€ž‚;pLb6ÍèVºâ·‹ +M2…“c"Ð1,\5a2ŸÙZ8—mޝÕ?Ä?[å¢`2ÝCë¯c¤+Qb¤“XPðnIºŽ´Ã-5 +µž©¤ú,•ã\ðoB¢nZ५/  PDûó¸Œþˆ‘NA‚|FoÅ»`Å&¾'ƶšDŒ­\¡ÛÇSu[Ù([Å$bla]+¶ÖètÞÑ}¦ûxã¸ðNìÓ7ÆtØääïQDóÒŠªs™|‘+^ãøx>¥ +OP€t#JŒt/È™E5^#ÁX‚% +(fdò9¼<‚ÚHB—*F:•tx9"Ó}üK‰$‰#—1´ÿΪ¯Še¥’~ÎOshÙ=Àõ^9ø ÷§^·<³ µ}äú_æ;v®XœVôñªsË3;jEŸVôU¿æ´¢ÏyÛ.æ¾å™mEŸÿr5­èS˜[?¦á;Že¾÷óWõçĘÃ}z³*'¡=è”ÿv˜vÓµûÚ}e÷þ„4íÖ Æt>,JýÛvY®UöW=Y€YvÉ1͆W³ö혻²*W4ÛÕZª˜­©à˜¦]íŽÍÜXsaí«Ü˜Öæ[{ÿ—µØ< ž5¬É°ËbÉð ¿_“gMvcZ‹Í¾m‡4OcUŽìj¶«ý^i²«±dX€kkòo  Ùšö[·ökWûöoê³³¾§òY.G+%ÂÞ¸u úvȃbØ•S¯X ôo·þòo»«v3õO=f|Û_pÕnæ× Yž3!K†Gñ–ÿ[yå9õ pëövSs­:;hNŸå¾*ÞWàØŽÅ*¹rbUŽÿ1 ]õ,À]Ÿ¯¹fÝXg€[·ðå¿æº¥šå9# 0«¬Êé½rÊŸgEµôÙx´~LÃqêO ¾åS«œÚÛ³ k³¬™•ó´]žš¼:Vñ™®c—ÊS^ßò‡kO ž[4¯hï­U¬zfÕ?vûULË*• ßÞ[«Z<Úë/`öÞZ5à¶ù ß©ùàËp¼ú¯çz±¼W«V2üY.]{®«vSœÏ«šŽ_ï–W©˜íÝò*þ~ §\Ö—UžMËó-Ï*U=›®ÿë¶lϦïo{6M“5Ⱥë/@ži8Vyôð-»³êÛ±—ž=z€Ã-è˜íÑÐÄ)Wþ*9¶²eÙµë·~ç— ) +8›O¢@{ÿíΩ–úš÷ñB‰˰÷R¹¼T­{ö^*R¾–Y°ý_/5ÌwüßùõÒ÷êÇ5Mó>z5M €kUÒÞ/ë¯&êßö-ÃuMÓ4ýzñmÏ-¯¦iÿ,÷{5m’q<«ÆÿcT5«ßŽy«Õüþ§<׋E×´ûºá¿U°ªÍ+¹’š-Ú-É8žU²§hØeÏß®¿€_³d·þ,7Ž]/5|ßé…cWt‚W0«rZ·K÷ØU}Xß>±dXÀœù1Ü ]ùS95ÿÊ® c´gÕz¿gͧ}Úã­H7¢`"îyœ È…$ j`àrRF¢µã²Ñ@Œtb×Z8iŸ ÉePl†Ð‘ˆbÁŠn1<¸?ó@޿ݽ?ž˜ô¶sÓýq.Sy£ûãi QÊݰc+])Lÿ1¾\,ƒò—’âÄžÀÍäSàëŠ`$Ÿ2¹J®oäúxÃãúxl _ÐM}|ö3âM©RŠR_(õqFEáMÊ ]Òǹ¬pоâA}Dúø[QA1aÛÒì”…‰ñ©Lp»‰éŒZ3r®l!³÷S( éã/ïðò‚@!Òu 1Ò®OæKœoâ|œ!~ÎÇë Áí%ÆÛa™‚Àú Ö¾( (œÁr>~šp>ÛB°{ÚÇlߌP¿`^îUÚs™‰‘¶¦¤ýxÌ¡(ÜÔ7'ëa¿Jäã’ê)$5¸$¢ #æíR¸ÁÀ¯ˆ7a.ÕÊe·#´ +1 Šé ÇŠw1Òu0ÄŠSÄH·ø‰“ûùç%8¿_¦ô®GX,F/3~egŽ9=zÚùæRFÆö‚gc“”ªaÓ:ÝÆeÄ×øJÕ°©®H·‰_c 5Šíp{D%]qùú¼m¼ª‡°iª_8Êóu G«,ñää/…_8HUXt¹Ct’;â@Q0˜¤C˜ûñðÃer.¸,È PˆÅÑiYMG5‚VUƒ)çø)ç +:.“’̨÷6sÙ,[^ôb¿'ÔòÉ«&ƒªÃ‡EÛ¼9óaÕ§ã„Ò;¥©â?Æšp™Êò²p—:h5ñ|t`­0þèÒóè$*˜Á<·È\ÆØ\½7xêùÌÛj>ƒ' d›¨^Ä ;n'ˆY¨I³ŠËø@›RpY‡Ë¸ŒË¼’!‘1-íÊmr°)%XÊŸžQgñ + y%´ŒÍ7z`ZËÔÃ)4QMÍô¶öûm¹ŒË¸ŒÄ b5—Ù‘r²¡ÕÄóiP(èCq[ºÝ˜Êe +Îqòî +*¼c  |©SýLçÌÇñ-Çä¢pxž5ÁÕoÜv‚‡óŸµ©q7F;á 8°ªe¡ãÁem§ÝF¡)Š™ÂeÛsFô oÞF/.ã2Çz²^\ö9€J/.»?¢+x]¡þQ9,­ÑQ”68M 0÷ã_²qÙŸì"vسQ@QVGX×Û‰5„@gÁÂ#)o‡±ðî`߀l¥÷GtÎedŒ`²£Pb¹¬¦eÆi;‰Êj:ªsÂiÆ©!¡«çšR ˆ‰ê +Uï(›|V.ðÜL¸ÌÙÚtæë Uw \“mÕ´}±xt„CJêú t¸ý«£ú†OÜ\¦ð\·4Eá ”Îe\nec{:ÁA‹±!¸Ì{TF­øJKTÿ M2§a‘êÀÕŽO~†A +šJYøç@‹“ÇM3.Û`5´c\Æj¨zbtÎe\f¸Ì¢Æ\‘ŽËíB‚ð¢:ôPF„{P +ƒôõL6"Löã5(”oAu¨óÁÁòû›|D,ê…DÊÉe˜Ö©wC@„ú`N XQøÊkJu¸Âò|O:AÍiûœ®ö™̎ösÚdPx.›¸4Ì-uF÷@,¥ÔÑ‚§¯ °Ãí9ÜFb¥j…".ã2Ëò˜tƒûÄxžê¸ŒË¶×ÉÃ@tº m«¨†Ë£G¸l&E:¸t F‹¶¿ /‰”³`$ŠÛˆŒ!x˜¦ze¨ÊÕœPüŠ~T‹AZo"å¼Hîo‚ù ë§ÇÄÖÇÊÕÔ4()çd)'—™ŽƒdI<šú`ÂÁÎij²¨³qš¯spÀ‚[«ò'LàW¼ÍX´ý²­x ,ÌÌý¸ÈefÜF:.Ûâ²!7··c˜à²Ï“<ÑõÁä‰kE¹ë„Ë\£s™'õ+„zÏešµØêèlÀÝj"Œ[Îf-8I]·6#jÝ@÷‰­@.¢ÉÙœs‚tuÝ+·C,¢±;‰„ …ÿê˜p™ã˜LŒË>£ c«ªn»¸"݆A| CÛ@±Ð°ž±¡žªÛ&žªÛLbï¾Ö°ëP¾;Uþ|=P Ï6`ÏG`²´ú¶¥:Ë2â>ÜcrÏH7¢`"1ÒÑ\Öé&"IG01 ×qHÞ”Ë"&D.§™_gM#߉ýøº8…"±ëŸ §SÌÀ£ä¹è¯“z°ŠöXemøUQÏï„M:Ì¡¬¦tžÔtÀVÇÄ`à2EEá”ù %Ç…'Ì.;©PîšRSÐQ +µÃxH:u«OËH5ežÀFѤ>°p:¹Að1O +ÖÞ(DºDEáÞAÁU( 6Æ1Ôîñv(Ù¨T_ €Ô*Â`³=vg¥BtbX›³@aœØ” Y¥5Êã©§VÁc²8©<ç2E“êŒOÁÚk™k}0•L‰Øç´Œ¥Šš8x€N”(ª¬Á„³AeÕæ¼4(ºŠÂåŒé"ohÅ9äã]©¡úE½aÁ•Ì\‹ð¬ÂuWŒ‡#[[ìsºjó?lé©2Â…¦)]PœØ7^*D|õ·¾î/c¬Äé6­ #7¶H +6S£ll t¡ØRÖ36§ê ‚n³¼'ÆÆ†q·MݦA|˼Gep>Qhò99Ñ‘pL¸på9g>ï êš´!QóÝ–F÷^¯óC(lH¢‡­íÔ‚Û àzkTX‚Ívk?8`ÈÆZð)ˆ–8ff©|P.Seî嘗Id:³©0ŠGËÀ¹î¢Ø4£<©a†Pëöø#0ÙųècpŒ&áó°çæ¡EKTAN‹9Yõ¶#Žíöiñ9C늯“ç#Y:r)Z² µ½®)Ÿ§˜Îè‚çž9b¤{¿s {nr&¶¡bõB@¤63¬pª¸Ð|&À¹ZKûáphü( œwXl,Ñdej(Ê 7¸ qûº¾=å)V‹ä«s]k]×DÅ#ÅoÐsâ«‘ÉÄ7„”W„»`PGò<:ytçÄÛZb;±ºn«]¨û ”ý´Üß„Ë`OÄ@2>dâ:“…ØÉœ°´ ù:HÕOË5±08ÑÆ2¨^ÙýH·fü›Ï*CC"±V¬Ú|è¥+®S ÉK^Êe^±A^@á%«úÔŽF£ÑˆQŸŽç2Ŭ``”"¸ýDp{úúj`ÄP¤jÁÚSÄŠÓ$šD“Dih´è\¶Âe¾øžK/OŠ“ûAÅgôÍŠÂÓìÅá\F.$· ’€úàIÀŽCr¡»¼ð$-/K3cËËréËš:žÃ^º¥eø–m๬r hÙ¾R9P¨ ‰í˜Ü¿t +ËGn +ÊäQ¾›<ÊsÙ;B=¥}‡ºR°zÕÏND=pTȹèjŠIÓë=;ºÓ±@qÏS0VE¬fp o𢋦ôPJ‚B§ í ¥jB®0r.,÷\– ã’$¡h‰õDx‘SÚŠå¥*. Z.0PxHCa\p–w*V¤RêˆPJIT°=MY Dþe Fœ¶“¨c‡š! O'Q?–_P,šv— +‚PDÄDá7ë¶ð¦ÐÀsrÙfÃv %”h{ΙOÃ.މë¤ ¸Fgdlÿ°1kGí”"¥iJbØ©^ŸÚS +hÁ¡sØ ôUƒÐa£Ñ€§ õ0B‘è *¬=E¬+ÄŠ&µièðâ|ÎEwÙŸ»ìÏ]öŸE\ãÅi'÷#Nîçš I@p»ÐEÇqádÇ!¹\èÖŒ|1K·¼, Ì4Ä,ÝòJ„ƒåe1$Ë+f¹!!fÅ+§ê),VàíÈw¡~;qÅë#üõ‡°I"wû&L¸P ÖÎÕ‚µÓ Rd5­Z°öÕ´5H«é°."kïjI--jI-yµ¤ª µ”ˆ±¯ÄYp.:Ú7£Õ“_1Óë%H”Òü †Ád+Œ üM E&>¢0†6K° Lþå1h¸é!¨XMR”^X„R‚žß*ØTS¾¤Pu²ôCaühV,ï,ÁËÂò]ÃCÅêAÀtxBH)k®ÛõÁ`b@/õ¨ŒÍ⩺Ë&-É´¬¦¥±™À³qb…_6áÄ(ïñüŠcª®· ”çcm:Õ+'Ø~Ïù `ZýãHÇe$ƧŸ—®¸"‘F¤Q—@vªí^ºò£ú4âdBL8ŽUÂaJG£Î?‘!¸ž¡¯:B_q‚„cE“hM¢I­ˆ@*X{šn +VbÅE]hqÙ,j#³¨ ¥\ s.zj³ç¢§.û󅢓?­üiåO‘?mäÓ‰>£ôä~~rÿÉýüÅi#\¶u’ØfÀ˜¥K,/‹‡™0fé‹=£—.±.=F›жt‰BlÜ«Jÿ"÷oïÁô§?b$nG"é+à䲎[ju«TõŽºÏ±  bò|¤/‚OŒ+vÀ#Šê?ß0¥ç¹“Ëœqjò|ÉDÕWŠÀ„¡rÅ7D'qBð1!„Ën“¡A ÃäQžõô¶“ +o¬8ù9T× êfæA(Q‘ATNÞ12(|é‘phÂTK FßæÕSVZkªÓXæ#ðLØ$ +µ½âzôîyØ“k’Ȩâ>a¡I{Y <¤ÒW¼²TÏe„²“9+/‚{D6^5¡%üYJ FG€ìÏYÇí†6+Õ×”ó¹É(ïê-6êšÅè+Ê—há$ãÒœ`r>gd ™‡¸Õð‰‰á¹L21­P6õy(¡>Ôp&„’üzÃ&‡êš\°ç;̧ªK^¯Ðœˆˆ' á²‡f[ýŠqu½SXnWœØ—(àdÎ ?ç2Ã7+ü傺&¯‰ÉóÙ™:Õ)¨ÎÅÕ†ÀŒS’…!ÒA"\æY8B‘¡Ã0ú#”¸ð‡É£|[¤ú¨ð’n²QM¬¶P_ñ‚Ή¸ŽÙÆvC…—t¤ÄýqºBp{ˆÑÑ—ÅÉ‚ÐWü¼,¸¬Q¾5\£sÓœ 2{†Î„›l()•Z'a"°ú ¸à$3¡èæˆýÉeÝ¡€ò$ÎǪxŒ8và+±Ê|—‹À,+ FoQ ÊÇhÉÉPFðé53Í¥ŒŽZ ç²ÉF½MFçP&”ÞXµ»T{FeÎè +ÂeNò$^.ª]<}æ€RW¢z. ]„·”ZøûhP“êþà%{ÀBD >E”¾Ü¤,|@ƒò\ŠÕ†*w¸ÀRá¹LˆXaÐû›@ &{ªH@즴¤¡HÝ6"Æ;õL„ð×Ežxx»‚—²pÆJé@×ÂÅé4Õu.›'&Ï×ÚtªobåéÜ{ƒä5'hS¤íÇa¡Åžt& ‚ís–ZÊWn«ÃŒ5Õ+,ó…è|ž‰ ÿÀïgJØ>’•åC;½pï¶-|Tò0©Ï¹Œ'záÑÐßh¶Ç…#8Û{ò¼æDº3”2úÂ0úÁ;B+® #Ÿ‚µSáë|ަ%ÂÇŠmht‘s.ºGa¢`Úà}ì!F?G½í ÷÷Iƒ®ð+¥m—T\]7^Òµ|qL&Ëú0€—²bhôI¥…?Þ¬"ÐðôÑ=“Ô1 â·8 nOc$Š™yÐG;£üê xˆJ‡yH‚×1:h1 À³±LK¶}]o^ÊV JŠKPJýä~.b¼v! £“öÍe°ѧðLœ°‹£·Jñ†§´ªë>g> &õy€M.|z eźø!Ô¹8—q@åç#µ'Çäò…*>6À~YÝpÒ,>§êiüøà°u<—}‹ ŠÕ™#Fº¨Ô±RÝ‚aÀ_œ‹~z¶¸tÅEŒtŠ‚C¬\–è/Á¨Ø‚ Ê›™sÑÙÆâr» +œ ã¢IÀt½ œ ØQ±¤] z\ÿþ‡šsÅsÑ-§—ÁƒËàQ@Y:‡øq¯6\£—¢ÎÚO°‚ 8>Äx;¤;Ti% &kÉ ëèc1HJÉe”ZMHbäãtGx"šrH1Òaês>J}¼¤:Ã5RÐpqÃTñ=a‡&—ÒCž+bÑö9Fg>.³_é…?0$ mÍYð9è¶34b¤c,"cg’ÙÔWD"«Ÿï™3± ¨Þ_aûùeái>Ÿ˜ñ=…)Ø¡S¸lÄxƒ4UK£f.Qpb¬8øJWœËW×o‚Ž84ªHA åE9ùÏ1*¼#dÀßBQ% +‰0BŠÁÅ„p¢…'¾sÑ j©½Ob¤cü ‚âx($]g\½…@sEǨð þ6”'ð\C0€òŸÉ±â“åä¥BÒM6®Ï×’ã¹l]`eá‚ðhÓöÄ@é.ð$! F'D(ˆƒÄEŒÀD®kôñÇŒÁžÀÜ®DQxâ,X;Åð¸ð`ù:f¤ô•\µ¾ƒ¤pÏEG#ò “Ë WCR@‚ˆáwÆMèM(|†76ðllÄ×2ŒÁßÄVè>3}YÄ ‚ª¿õ‰ôm¤ë:gíH¨Í5âIèS“Œ€£¿˜ÎªÚÌ ¤ºÎ…°çãP«ÿ00žÏRNEôøŠòzÓœ˜k9Ò:1"–çëTÊV¿¬PfŒþ:â„Ë +ˆKGÕ„œ'©k/­½tÅQ†bÃØ(žªÛec#0-­Å ˆ‘îû±à²Å"Ó}|a²}§@ElŠEùº.P(£…B‘é2)L}T +O$ÜBv9$‰—}l5‘é¸ìs™Ë–ÏlT=æ] <ÊEÖ\¶‘¸‰Dg26¥XÁÇVºÖè|! +œÌ>)˜Ð)%;ÜbmXà1¤%Z¯ß¼óqM(~̆‡ŠÕîb`²è× yÅ”mà»ÌU¸Fç,SÛóq})<âÄŠŸRdgñ°q) ½HÍâ 0N +•‰°B˜¥ž2p¨ëô«ÞõéD.ë  |é}±Xýç(Èg‡ò*¼ÜT—Xž™RÝ#µÎ-ü2} NP”Âp±Sdä²ðËz9áä€ù~ÓU B™ÏãɈ.«{'sƯwq˜_´Ýð'ÌyÉœ„¹°ŠÀ„Ò'Ô'è0ŒîmHðGilҲʧ‡Å‘… žÌƒ~rY¨R¶züØVÜ‘h-¼#žB“â"*˜(˜N"šÏâbR=æÄ“6t[8—ueo-Ü; bõ¤t4'ÈЀ4(¿E ]×t4(oÿ‹8‘A˜Ì*[Ž ‡³ Ý± !ÂeN[ñ'û Ý ÇÂ#Ûâ¹l–(¨á/š…¤xG…O©ª +~­³—”~0qYøÅS]“‡7g>.‹Ýmæ< °¶¿*. ÷N…w —¥ÞvÑ{Iyé¶»õšÄnÎ$ô“Õ)Ýâ©®É+Fg¾/£òçësPu„ MJ ÈË’:Z W=Ž÷…«¯Â[ìm$šÓ@¢z_\½s™É¦>§USœlp¤ujZãç˘¯“? ¬¸É;yñþ­ð2¨@šˆz\E›áL<§Éó® Ëóe..¨ÛŽÒU¯Oý¼ >…ù,k4Œ—rò¤÷’ʦ¹R}†öû‰kª_:ÕY&‚ G¼žÓb€¥:¶8ÂÖ `áC‚„L) Ÿx\]½—tDIáM¯ÖŒl×1R˜(ØXµ‘Qà.<¬„7KEj{hQO Î NB¦„gY­æ[̧ªo>žh‚VúŠ(+^@°&ÌŠ›R jå;ëÀfr9µS#ZÝrÊ|\¶99ÑDîüywñÄU"8“Œ(rLÒ¿à2SàzÛâEF¡ßŸ'à‚“4Œ®®¨kr€1y¾¦lõˆm ô›B°xŽiâO‘mt#ŠÀ…iCà#.¦í õ·¾Õ\®ÙäOá…e6Ñv»{¾>¦­N(Ág$”®8)µøœ\¶h™±¨ÔóºTÔ¢ !cF†Dd¤“ Jfóé8ÇGF.NJJ0(Ic‘0(ˆÂ‡Q QÉ1d« × +˜}ý‹¿ùMªÊš·¡\Ú{ÞÖšLAmt‰(Œ¦€ø¹ò=¯ksV†%ã 3Ô×¾% ­b{QгˆŸ(™M «–ÕE(öÐþCAøÏê†%;•€Ë8¶åËygŒ÷²6k=éQĈìÙ{•R†ËŠ*æ|=ÒâÊp™$/îÎ×΋°{eÿ‚¬.³¤¢LÙc¾B^¼È€í*õô”rÜÊ?¥}¾š©©ŸÇ¡ùÿ”}å [(hèëKQÕ|쇺â’ä+à ? 3÷òž//DË’ ©¤ÊŸyMHVo¨ å•yõ­:üÜ뇑ƒÖÇ­Å»¾×ö-ëy\ïß¿úùÒ®®Ÿ9–„îu*‰¢œ¼Ìÿšž[› UÖ,. ¶62‡:'Ês…†„^é=\RÍ_.­+NËãxaGi-1çBþ׆º 6¹»X†gzô6—Wª†_CŒRaµ\#^Lklþ èÕò­A°«×ã‹«e¯S½«<¦=J6&Ó2ûxÊ»3ñ Ve5Bï¬^”Þåë@jÝÚ*[µâ¬õþVZ#IÊà¨dem—ÄÀå ©;Šñý(‡SE°6*øº +çòŒ–$šLÑŒž²€ø]ÞŠ<èTtؽ ÞŒÀÍæ`UÐ$TÕGGCæá%«7ôÄ€1 Ž+eÝNsJÒߪ†À¯‰f¾ÎX™Ì‹ƒ.›;;8K¶¦…^“ù9†Ïò Ïþ}U‰pœIw%ô'ƒÂ§ïüi#[sŸåŠø“5§rd¤³8^Àó­r¨·_äåîæCô>˪ ³Ï6ªÊbûó…X5ô0˨ʚ¨ý«,õPTåØÏ°…«üÑtFÏ]?·ª…#÷w’Šã®¤É?BÆ·Gr2'VŠF5.O'4¬¬Ë"°úÌøNò*c`ñ¹ÑxbR‰6DîSC(”$¸h Ã­ +ÉtWþ™±±á^ÓF`Ãóƒ.£Üi­„‡=õP6§ ÑT7©JÐê¿G…–ð¨_¦—§Ñ2"§ˆ/­Ö\Þ?‹Xj5‚ÆC‡èÝ^i‹Ð"N-Ä®Úbsᢄ/ggï„  ìV”^ÖÕRc]Í„t`ÅnS¶Fsë%ýq<(ÐwŸe cï9è…SP±™8[í°J ½:^Zƒ8xEÇ=y¨ÿ…øµp¦•ú(aÌñ_3©vÇÐo>A]üYQÖJyÇ(:´2V1ßV–À#xÂŽ$»rA˹aÐe$FófjE1Û“› ±øc%«6m~ÿPÓâ´ùÔmÞÜ;¤ø¿çöŽÿ8u·ãœàå‰xsÚÀŒ)#Oùù´tZI›u@Io `û4¶P9ÖnäN©všÕ¨r%ßX²[3σY ÕM!»·>Nå—fñÙ¤C²P²!L°”ý Ë¥ûâ+Î%8õb+^Ëä•),© %7›ÅÀâIVÕvåË]%\¥C¡qƒ1î˰öxE»[ïb¤Û§æø¾0‰ÉÓ0ØÐ•&F{Iãî!mÍSà¾{@ƒÿÂãK×‚ÝæP8[‰Éû L“@¹T‡”œ#»$™Vc›I$HÀ°ÚÁØEwªïim¶…[(Ŭº^S‰Žv5RW“¾nž—i]gëóúÎ$P­މiµÅuãօл‡êC 7½Q¶³[´ó|³n³? „%ë‹ú5î˜UŒŠTý2p G²Š•T·“kë•ÆÅ<2Ûf¥™Zü¬{¬c„[Ü> M2»½UùyùÊu)ò2´‰JûQníç +‰¬]ù7yˆÖM’KŽ©*Y@&ÿ)5&tÞ\}ØAfó_;?ƒ×J’rŒ3´“îëºS9v&Ä+™Îô½3Ù •s*ZX»„猊ã‰Î`g®qU' ‚<·sà›LC“½%/ÌjècÓ ~ÔÖdd&„ß7áÈOæñSúŒ%ñòëL›Ñª¡œ V&mʺM#Êè܇r™|Ä:fe"‰PÎðËÁ&\,¼Õ)Bf3Å\b1‚-ºØA +ÎÊP$F”oO¨¡I(«J߯aü誯¶Ý‰RkpßéD»b¨tdÌ•7Om6þÏ´Ð}$;êæ º.ò¯™ÑD +Ë\P eí<›# gÀ¤ÒëL”0²Öp®2À€•^@YVñhMyÏþ ºÚÑ·WB:~Œ€t€Rß8Ù²´Â=Õ)*iEˆœ#ž@Â’A—É9¤®{ÖI©Ãu”.‡ÈÒJ³ËêU=˜Ùg¤¨–Ij?j÷'ÂOH-æ7žò‚¾õ=G˜}BdE¦tZ欵Œ‘žAí‘ÐPWÔÖ÷Ÿ< "ÜÜ ²¶‘@…\¨ÿÊÿol¶f}W==òOÎ>Àð':ˆ¹=ô-ªn,~ܪ 14TÓRáÐ±Ž„ %$M€.¬ë5=Û ×+Õ¾ kÞ9šGúú  Ž„9Òu«NËSœ»®ƒ3«›˜7XSЪ\?óÀ̲­¶)U±l°X­^õ‡~Š¢ Ø•kLµff© ­öjê]à¦iç/ãÕ{wGdd2_}Ñ*¬ufìœÌý¥ +|ñkࣻ-°:ÉÕŽè¿ûèù„]âVPÇ/îÀaAžR[,—GeÞPÈz'qô½…Z>N¬ôÆôVüúþ—g‘îç~”?$ê†yˆ‰ˆ +‘Q}¼å6Ä…[Ê‚ÆRúÌoRÅ£Œ÷-6ƒ™Õ—¸É „%çKÿ€à«gøñT77)²¼­›!âf®t$Öß~, +A;¹•Ñû¥ÆÚäÞ¼qÜmYx/)Ü=æ`³ºÛc¹ ±Li¦Õ¶és~ØÌ±ï|l£‡wWŒú2"}…ÆÁC®ä'ò2¬E¾ã‘¦Eæö‘³D,ŽÚˆ‰ÂgÅAïê•„=HÌòX*;ÚÃêŽ,Ïî‡mûÚŽæŸDšó*[ë#úªí’®4,ÅÛLmaÊøClÅ*³M®)yÉáœôD—8?­y‚Ù×£áåñx³üùÃf³%ùôê±âb<“#€`Ž`Ã\¼ÌgÝœ°-Αkå¸oG\2¬œ}°¸ãHζ¬3!÷ã|²Ê:ÇNŠìó58$óB`N²Ê­(km.öh¯öǰÏu%Û¥‹Å’Ź”ÞnÈ4ªo@Î#ŸÏ‚×å‰HúK/¾þ¶Pk˜ Á½$ò¹Ö2ê<Ü¥÷y¢ÌcÇWf‘èJxë.¡=ÝwsxbÒŸ®’~o|»Ï$Ŷš:¨õЏšŒÚ¶ì¬8ÿ•ÍÀñð'¼ÿ. yb´¿öWÜêRY¢6sÇÒÿ +ظÚ&”™öØhŽh€þ1µwE{£Î—U˾5ÿƒKTø™Œu¥(z0¡ Òdûºê·b'›¹ ódxîKëß&”¯…†Q!~ûÖÔYd»RÔU€Ùz\ ±š¥«ëÝ5× ¾4”VîŒ$f­^~†¯§XùÏDé¢q2áVöÃÆ< sM ž&Õì_Æg>ý]<Ó7ªÎ²oWzxø +(òD´ûs¼“.ÄïNÕœs0¬ç»ø|JGä;Íã:›Rîª==Wþ#€13M‚䂱ºBuû)²öB…_ÏEÍ v6ênÂîž?YιÌÀå‹×$j³Sè¦I"rð‘~<Êk½ðñj°ìèk®ò•Òø + !®)×õÝ ‚Mo›¬_æOä-<R«¿²[! ¶‚âóÁŸ·y­½ß6:ŒÐÞ©êµ›cp¥3Q°¼ÄÿêO~Ô»n^šuz³àsv¦MÃHl²ŠÓ5ë…J¤°ºH,=%¼^¥AÚdžƒZÑùé¦4h£ìm¢Ê>Õ¦úC澦m²ëá)Pœ`“ë¨^ƒþ“;„œn¾ø´ƒ–—g›:Óò×¹.hŒ·¹p²gó·´ÌëëWáSmn‡œvÚmý7ÖcHÀHÈšUÄqê§(«§‰ §˜Ã@ï4IFCRrY0å_­ÀÜÈYÃVSÂEûOæèÁÞ-Æcy•Mgm… ñ»©Ù©Doˆ›Ñ“2Wvác°®‘zuªˆÕ뇄pMu°úaOüÔdØ‹›¡5*/Nܹãõ`Ç’ERLãÈD‘û œdÕÂ2äyµÛv?#~ÕN=-Zœ4eYjžìuù˜€Ö€kmÝ«ÛùéÆ ÍwÑ@lÉâç¹ Hh¢Ô%z’3ï'lˆd±s/—És½¡&-l>þ är7$XÌŒôÔxÚçÐÛì]SmNäî2Ôî-ãbTÃwVMaªiœ‡}î}þC– ùÀJº¨Ú0ám*9ØË”€µ¹E;¨1ÞÆ—VRS%÷ÚT{ž9?ó2áÚ¤u|Í=Öç'rõõ{ƒWO z”¶lÓÖŽ]–!ùyZ‹»Ø+ó« £S*úÞܧª«Gr 4p=ßÒò¨¿%EBxñ™„›˜W‡ë“ÈJdñxôr~oÇh‚áã5øªº÷бH`2[uû°ÇYèœnþ «®×Ê•î$½äy4ñãùä<­˜p ½?†Jé_¬¤¢‘t7•cšGQA 5ÓG¢Mt:V;”퀋‰ÛÿÐa˜[\›ÇÃ’¡Ðq”ÿ¥Õ,DÙu'RQ‹ 4v@ \“628\tdõÞýa/´ÀnVß+NÇCÕ»>uZòy³ð î+"`íZ+$Õ|óðr„{ ‡zÀ½¬³!žVTűŸ@ÙFŽ‘ ˆ§}4»Bãs5¬M`)žøÀdÒ‹S‰0j¸à¶Q¯ÊWŸ¦šPч€<"Ë«—T‡˜"D¿‚Š5xãæP§ÔOèðb\üc‡Õ¨OÞŸƒCaóÌ3ùÅö’]zx_Í$îÃà"‡x_Œ¡ ŸÕ=¼NEÓÿ}.M›ÓÉC²IáÝÿÍBN» ¯ –p0LSG 9¢zSã­«Å_ö×mht¼úìUÙóÒPùeˆ·¦ZªÏ);r²ØÒø-NŒûæ É)]h?Vñ¥ÒÍ›[ð¥Ëdfc™]ý$u8lV4ö¡^<åy¦ê›üXÌx›¿ ÃA´ÂI³Ôy/ˋ懄[@1ð-’ȈûØî³Î°@÷ v»G!U´dZòö-´´˜±.u‡¹ Ĥï(Å%X¦b·!¥)öþ–뇰s‰àÚO À<žœTÜ3<ÝÆ¶{ÉùB-àÚ´”e*"®±~É6¦lí¥ªO•צô"ƒŠvï”;[>øxjç‹ÒxcOÚN´R¶û#°ñÄ’Ww¨CH|ÇÎã v_Ö7÷]ý¦Z}îΟ6ô0'Æ ð*fnJ';uVsrv4Ms lU{@Š=H–˺€ ß bMØtC"ivú\Š@÷”*iA"Å*³)»ûXZÀ‰ö‚âÂÆ'—ÉdÕq. ©šØß º^PÜÔVÔºüBzDØ»bVö{¬>±|F”ãUò!ˆ +x׸~än+£‚â0ÍÃüµY×+h r*] ¨ŠºªâÑ?d£—Èx©£,‹m”ùð +Íd}ä ÄLÇmF“±oýñ°îÝLŽ®ãE/äé±ß‡œšúRèÄq‡d<Þé¡Ff†¥*tã7äD]·9LÃý‡Q¯mÿX¨+ç+nnÂo0ÅÉí \|欔)þhEŠ€BÉeÅ·¹Ì«¬Á‚´¡¼ûŽôú ­JÉë{µ÷¨’}nQ³ípôìbõ”Éz%‚ûD]'~‰aiý&Â+²@Š™Ä3 äeŠÊ¾BøfጠÛ[á™hrлÁ6µ»‰c†œAÅ…öÄjŽ”ú3‹òĆâ…eúótkmËŸùü’±Þ¶ß’beà vþ¾†¦8V`§\« ®‹Á?6D‹Á±:y–2‘&ÎðAáz;\(…În@•TŸŸ÷”ð{ëêt+,/lÈ·­Sz]¼-Ÿ,ï°&k·c르ç+Ñ~¦€BàýP(-ò66 Š èjµ@ÆNÞ» ºN*'æoü“?¬ÿY; ª&ñ¨å-ÿ¤¿Oý…à Ý!µ3¨mF˜—ÕCfýmñ.ìœ z†¥¡Ìˆ¯1ÎÖ®†Ó³³Ÿ1<ù’º$*¡Àzca^6˜rbjz9ëW×çýQ&|ÊÉÏîJ­høšQ|ãSÓcÐ5nnQ‚Ig—¶;ÓâÐYj¢„¶#‡eáþÓ¹ ¾eµ'Ĥ!Áò«Æü«gõžßœ;Ìf·R~æ&þÁ¹Òé¹;ñ/•Ö¿©™… -¦¾KÊôoaœùF®,ðïw6iE™ù3kÙ]&²/ÕM…07¡cÏ×¹©À˜›ÜcHK%¨tʷÿÌÑU†’ÀÐØ3‹Mü ¥þmÎØNâàÕ"§7æ&ê;G"Ëngã_Ú'^b ˆ8ظŠ9bÿï÷½ÿÞ¶ÄÄç"_ôï[/&üKB-ô…>¢ñ©BE‹þeR§ÿ¾ Ï¢Õï{˜ÈíÀ¿7´Fõ¸îvÿ¤þEP†_‚h2'ÃBè_QwJhã£ÿN|‹(©WaUå© ÿO°¼ä×:ˆ˜3V!„ôÏÄØ¶X.ÙG¶c¬Þ²¢xÎä…Ýb\¥¶ú¿ï*Å1ºå—/¤.»•{NQºàÊCýAÃX±?(@!8¹AŽìÁâ¸`9Zµ†õßÛså6 G¨½öœP@¡⤧Œ;Èš–²d&éQþ@ðé8SOŒ?Ýü=α"?ÕŒ‹è^µØIÚ3—æàñê^ICþ\K=¾*ùä‡\ñ38ßUgt~üñ2§½&Un5Õä¼ò° FÊ«EùƪýZxQ!6xó'”dsU8öw;Ø#aâYíKiòÍX‰¶;äªê=]j)o\=Ϧy¨¶?Fk)ið&Õ\çn–+ÀåÕåž7W¹.¢WGÓ +Q®¹H] mŠs— *ðV¨×ÎÿŲˆŠôé»ùã®Â\“*BI€(`‚ËÇv!i`Þ²· +kÛâ "añ¢Å㌠”6ë%JW8©)ŒáàÓǰ£ùd›ª9ÕÛ é¢¤É‘€BºZ2qm_á3•™,þ>{å•·VªÏ!ûR°}¿Ø4ÃÕÍœõZí¿j3 üB½1žCÀ'õ÷B@¢Ï[æ1Ô« +¹N%e>‡zS² Îôt©7)›d5Ô›JNu=1òÙ º½áà‹ý2~A½¶âÙ9ÍŠ :–9£C_½#ØmHdP¢ì.0ÇÉE#ÓN£œfð%\MŒTZ=–Q¸PH€>c,!CVËc{¢ÎMœy¼ˆ\ô´ÓTõ܉ž1‹=у[Ro!ò(Î SqåHpn^¿¸Þ>áà á ŒÇFì +æ,ÝXsSv¢!).œƒsúŒYŒçŠËy±¾ScïÇ>»ÐCó4TdÉìQ;L‹ýý_¼ ðÏtñÿãùÇ‚[§U?ê¬_~.TMX=óåéYHhc½yº¡8×Xu`«ÞÂ^ŠƒèëH¨^Õ» ú,¤º9üD­zagO<ÆäÝ™âP…Woÿ]‰p–q~¯Þ +¼[8”ªwè5«#À^‹Œ„&tˆÌ»zó¾GvÕ;–WUN€¸»dWõ¢ÈÓW/jgB#Uï3¬¡¡_%éW½hfB.ëáÏôµg¸1ÑW¯H»‹Ý4ï²3Œç]¸“a®ù±—tù¯C´þºjc“åkJz¡Šþé 游§æiL½I ?ßÌFm±ððèš%"éŸôćy"¬‰ofÅLëW·L Ín'Ç[»ÂyìÃ×’®e}2Ÿ²ü}¡6CÝÛ.2ØÒ”)ôlp¬}¿w}y@úG¦´Öc™Üõ óäHŠm‡ çç ”1‹M: ½áŽn\Æ90·RÀ}¯¡`>.JGOâËÀñµ”Oo«‰°Æ’1~ #$ie;;Ñú_‰Ë—üûÆÖ}I«›4}¯¸ÝÝþšU†½ZÞÀ¬î–±Ï°Ÿ­ûŠÉ€YðD’LÛ­è¼·_Ûæ”½ÑØðïÁÓEPCŽg#ȯë`íimƬµx·j¬d3Wõñš=ZÖ…öÊ …­7ô›xw#­vñî6Ѓd]Çdó¤wW]CÌKl*ûêDf?~fï®™{ÞË™ïnh¼›Ùö˜ãg† Õ[t.qaøm-ŒwùÆyùdÿuÉ»K_¼èawñwywéw3/5+YG³ëß]0ºlÉyƒ½ww,®Ñ=ë¡â]@U¾»¤Pp¡pÆnœrÈðr›;ncÐÇK!;ƒÆ kãÕ÷áõºƒ¯6a.F.oíϬ‰¡™ÁAÞ+‡ºDˆßÔ[ɘÕÎi ì5üçê9Ú·ô+•ûQ-î5]»XÙóÛhYLò™K¥z´;I´":Øx?Ιߪç&¨›g—nY¦°w2‘YÔø\“FR¹ëÇûô3ZSVt×5¯\n +®Õà§«€éš÷e®kåY¡€m5Åâ8½Á~úai‚ N²ÜA ŒÜ'P¯BÊJ¯‹]ÚpðÆÄt¯K¹¤$o&Ã…i3ëa©Tßb/E.Òòü£ÈšýºEZz¬ÑììåÌfÄ$0¹‡£+µCl%톸–u²œ‡ÝQúy‚­³jÁf'kYÉÙe‚ßhëø·àÂ-»J¶¤4;‹ó<þëë 3÷Õ¨\T¿¿ØíÉ@~kääFM%CWÌÐà¿:ÑãR!ßÌcwˆ®qi])– +*¸Ð1 þ“†uIÛŽÞÁA$ü€Ã¼ªY”2Õ;žæ N0ÇðQmÀù|6‘Ù –áË^¶ø·´4fIË @¹jÙ#h+Îìu¶à×.LGà8`XWE‚çGŒÖ SW’^vØ-4¾'O÷{¹{,«*ð¢Ó­4’ŠpW¼§¬V6^…ý”ЪO†§Œ2”ngôŽÞɘb¥€:W1Ç-¥ŽÅWcp@ÀGWTDO^'Y¦™y¤¼£Û <ãòªOó0¸¼dK‰'¡kú·óHPâ\ÊÇ(x'Ð߬\ÉйLªˆBÊ*bïèÞ ø¥· - sH˜®² H÷÷‘È‹q¦t/öJ;@ª0ãÓÓ f˜„é{<õˆŠÐtÏ@5©_´‘8‰6Qq?afjí+#Ü&§…g®mm¯Œß1(rovŠ&(€ÿÂH•¡u‚¹¨Ciˆ4e „·~¡ Rå7«gJÛ¯ÓFe¤ŠV¯ÄRf" +^y\%+ðJØÁhÚë:à§2ÀßFÂJ ·2Æ ( ˜vïŽÏ‚¢)Šp…%`d³Qp<èEEñÈ«0Xø‚øûŽ›Ìm¾Ä,ã£d°Ø¥ÊÎaÙf1EhÆÖ=Õ—Iö ÏwÈH©Ó“ÄiC>A½T ^ƒ¥H¸‘ ¯¿€V!ÅÑ#¡hËJò{„ š,в}Íyä ?£uaúy?Žø€âÁÒ‘|³áe‡¸,ƒKΙÁßUÝeÂj÷9E;SŒÒF„‡VÏåz4KÊP@ø`‚ 8í¡é @>©-ÖœëÄ D¨ÃÔ¡ªW@aøGbÑ a’ü¥v9^ÙCà \ìfr&S– å„ȯ°5$DˆÁ¹o¥¯ó%³lA¨=ÒÜG¾:ÏÔAg;B"î8³ò{¾ßå¬\ÔšÙgÎÉbƒ(ß%weø«ˆ€ÿZîÒU$‰ÌÎÎí°:n£Å +ë2GLeaq×1pëMç3a°§ãr޲£c +%è9 ÜÓs夆YëèòˆOÉ{$²3ãÖ°Ê^ˆ&@W³iuˆ ¦f]Q,¼‡Í¿n€î‡¨ÓÿÐÅöc²k¹.Zgj¢ë&šk0›YÔþÂåÕÔ¯>âСüïÌpi¯îðKÛpIb&&sW½ò‚½í^ ™53î„€Öþ>¼b1b'¸7ÆÎä$?[´#=0+p–ÚGa¹¾c.ú¬ûKK?ú-#ñ)Èz³`Õ#aíŠ3׊éîÓ8eÒþã®HOY~§fÅWÒ’w‰G=+Úv){šw¹z Óöì ,¼ŽYL ÆòÆž´EÈI*þåý&zi~ ¦ú¸Êèš¼¾¾ŽG–†^ºíÞ)û/rñYÄÒ\¼¸oƒ%_)J¼;VK6þUwÄúB‚ºÿÊIñ6.©ÆÊùg©eà×á„Îc)^÷Òuàžš–eÙØÅ_²Z½=6éu+O`·òQLŽþ;20VÞ³Gûã5¯ÇÊ¬ÎøÕºƒ]R1Úÿk`Ü „UjZœ~0Æ5X68 +É~ ÁÿŸà2eWÉ1‹+n9 @~au;a©½Â3FêÜ—ò_œ"¨³àvX5®…æ&¢FŸ'#j +3&†#ÊÁiô›¾ /[·ä;%~|L¥À.Ƨ>N1£¥rÓŸ{ÍàÚéEÙ˜2A!“¢'pÝœF/K0-)@Ž›¨`–÷À˜¼iZR_‹ÓŽ!Wâf¥'*j3²¥Ya¥·¦BiOSð1僲šM‰Ð.Ý{]Ô„ßÿãBðAùч¥rq¢‹"·ö_˜OAÿ°í>‹Ø¯?è˜zµ̦Xåˆ=”1X›Ï‘ˆß# ±›áÙÄ2sÒ¾¡•œ˜±îÉBgk‹uø…ý‹»8 —HÇTB+{˜ˆó0e;@ë$%Y­úpõŒyŽ/ãöÍ Ö7–ó­Âø’_íW49»u|ˆ½IÛNò×r¤ne³ÑEŘÐÜ»þ˜JGuŒ-ÉšPR| ]ç$r+ï}æ× +Â)².~šŒSzÁ€p¹ŒÞÃíʨEí;íK½h-ÍVÝD®Äâ f£óvJ6C‡y>NqÞ¥À^ÒÔÍ$|Їû‹¹À‘ Xy9p#GÜùl‰ /…ÿu- ¥‘~cB~,Ö5YüæÿÙÓD šÑÆL}¬Ê +Oo<ç²¾f“Q½šqf†B¯¨®ýF… “úÞfjœ ~bÉÏRÀ öwÄVå‹^U†¢8C>­Ë| +¯.¬AY޵&ÕñÏXÐ~ôuum¡ªÃà3]?ò~0wNÓEÜÓâAƒv€ÁýƒgJ‚ÎÞ3Û‹©ü4wI²ß4;BúÂÖ1h3d¹Q¢––»2÷­ 7-.}3ˆãZ/–Ax[ÁFÕ/á^=‘ý Šœ¯é‘®çÙ¾™93[ •Úôßê5ÕãdÄ‘ŽC*W¶ ¡ACpé‰Xâ¼Ï„©Â$²˜U_eê 1Üå~h'ØJááÅì:Gn,Eú"/KkÅxä1粓<†ú0¨ oã‡/«$ü¦¦”¬u —YÐãMjÓ]c,)éxØR§q>ëâ˜ÆÐGëÝÿ‹½áË@!z¯_6³2öXæßa'‘–\êÑð„¼`œ åÞo™ëæºPö¯óòÜÅ(j^ûÑiÈ×Äa“fBÂñÝ<ŸC¡ŒQ4Äc©¦ƒÀoJÀŸ8ÄPkJ.ß]L‡®xvëÌ/ ¨n%Ònš(¥«:^ÎÓòaÞàf 'ž™­Eͼûg²À|=³Œšy™d3Œ‰ ²ûj¤š 1ÁÚÃBÑ«±ŸÛe*˜FIg…ÿÔ•‰éûFe\ÅÛËÝ-o¸ sÉæ½ò‹Îr@½€$ Œz”BkÔÌ<–W\ ̺ìO`b0ÆR ·IU0à+†ó Øè’7`ÆØY4x~¸‡šNv—a0»|´œGS¨I@­ÂXx`)Ú';%ê`i-mkEÈäèü2”w¼F{;õBJ*Ñ´ +¥Ë·# ˜Ô½š¾ªòšø—Òö4M,ûrÐëÏcÈy ËÇ›!õJØM×p­R"ÁK `¸‹Ç¹ùH±ü´·"0î]oL_YÝiI¶)wÒfn¢íÆŠ{=Š º˜´¸7¥¤T“Û6Þ†x|W"P2>w}[bz¹•— NÓ}9ÓÔõá©ã6¸¡-'™Å¶p +ãX±ˆ•NŠä©¯ù€3nQdYç‰*Üyí¼Øtj>'i”<ˇ`1 6?õ³ÎªŽGaÁ…"ªŽ;ÞkX»¸QÑ+#¸ N­ œPÉüfFhr•W ¨zDKG„ð •3*Hv@ƒG6Ù— ÀX‰Ç<­e<ªé_)|=Çýð]'¨Ÿ¡Ã7™„ßiýÝ4’r™T«îŽ·]ˆ”Ëayég˜”ƒWÊÀ«èXn´á0î.Çxåê#…Çñ¡¨ÜƒzÒr¯tÇèþ2À©¢9`”OOÒÇ»gT®JIXÚÇB€ì6”ÀºŒfN°ÅN[2‚˜yÙ³ÄV-J=T°¨þE'G¶1NV|‹Õ’ßUéˆYyŠÐâ”nµ‘gÛC¾ý¼<žÀÔqÍ”hÆÑ½XƒîmBD,›£ˆë÷´‹ ޹ᣥðrßß}¡0zgà¥ÿ» •Z¸úÇøðêKÂéµCðQ<>¢°§QŸ¶pe Ü÷à@0FÍ7ÛzÒës]ö’BO©¡êÄ-“ü.>NtyX¨ æiXú{”?‹<~[Ó ÀLGÛ°ö÷k¯ë¢aZðýÌ_VÜzêNœÑŽôä+d¾ÐŒ +l@`Ó… H‘%®gð´ò"@ƒP5– oÒƒ–„xKÂZP}àíü[]Ìÿ™m‰zÞB g9êWhöQì°ÉÚéB8èP’7/æ;ÜWb˜“¹.?0Š‹gÕvü•=®Ü)ÇFwÓIÔ]£‘{~ó,ÞT èš‚ C=U +Àée…Uç›W[üˆ›‘`öúÛ˜ŽÀ±Rz2“¬K ”×.ÙZ¿¤xÐ0ŠShP©ªþÏÍ0 +–¶êß?T †²ä²r$e'I8ŠLëT>’&k½CûçÊ—ÖEÎdË „b¿Gœ®ÕCØR‹aù4áÃKaʪ›â~ø‚R;Ø +/OúÕþ;Nv&Ía‡êÇ!¦Osù|¬ ¤ç—£\ì^`¼†R'k3óùÌ·Q·óÅ›e,¡Ïë¯ÆPÑZÉýåýªŽÎ¸°é,øžð·›m&z…d&&á¥7Ù½ËÏX„䈽gQlä¼j˜óv–„ +…R߂ュŠMºg#ŠÃçfîJ²‚kð*™ÙšýEƒ`×KP [%±!«,V!´l€—+¼¢yŠšr3pp|eSëO_ÂI¿#$è݈¡üªYñÄÚÐj¬:á@ÜŠc«´u†óxûR暈|;@ì˜÷€È™öÂ]LBml,_¼6®Ìxz”²74s¥ËƒÆ€«"(e68|'d™€À‘¸ØDbÜ ÔÚg½®·9®Ñ+ ìÙís¢Æd1¤ÞŒ\B¬I´«¯s8-²–"?­}³þk™Kƒ%7=¡}ÊÍ —;ákʨ©GáŒÔ=² ¶fÇ‚„n=]ûrcµ=]•X* {\?Ô¢n_u\<‹)ßÖCÀ´+QÜé*oãµÑ÷ϦJ*ÎXÎŒ÷ŒÞC"çÅ‘áàò™x $^Á·Áú?ùŠÖÇR€i] æÖº3½p Œh5b*^(G¤Ü!z\ÔXá*—f)X[zŽ|ûe¥Ê_1hÊâ¥Ô¬ Ljj!–Ä.ݲ5ç¨Ç‚ä¬@h"¦‚¿¡ª¥ŸR¢H¹Oˆ9ù…s’‘•9X«(gB°Äh£AµTx2 þó¿a>ŒIE +èz_Î/-ÞÑÄ 4+îp`O­xBØÓótW²Ç×gÞÆZ5Cœ"ÉóQµïÿ³´]ôMh }èqù%Ö†È'8‹‡òj”Ÿj¾x£Ô fr8>Šù¿™ÍÖÉê°g¼`¢°@—NyÍÿØ÷Ä#î¼Ëí4öú*øH2s[䢢Dʘ!" Aá™Âù€S©¯¶ð¾¸rg‰mWþ$AW|²K^ÃõÞÉOÙ˜Q±R…¦Ë?0Yå¼kN—$ÎvN _¡ºÑaEµ"{ ¶Ò®yr»*<„wAŢѼÃaÞÎ:Mïˆ +99¾ÅCJòò2ßPœ”cZ@ËÊ*¿Â‚, } ì~ÃïÙxîñ[µ1íd_ï¢`D€U›Òç6Ïw‚˜Žü2– ÏKo‹á4^껳nü.{¼ðõ“wæYãcï‘F1êPÆåÑè1‹Ø=°ñ9–N9›m¬D¦tòbD£“Ç„]X ×0@­Yã™~TÛV¬&³Ki'ÏP¨œº?ýNÕ} ›É‰Å¤Vî<Ž˜gœá!Ö$]-I«Þ&R+‹hqQ_sÀbÓúx!趸µ/gÚOŒó؈DÇ t0ƒ\52¨·E›« óõ„ ïµ#©4vE +%>E>ÉoOZÌ1\ÀGlÆ‚®9‡mœ÷^êóJÔ±'u#ìöt^Vo„þ`Šy”Ñ´p1uA¶×¤ªÌ².CÊÍ5R†ÁCÁò™dMBâlæ›ÄvÙÄe;Á3 6DÕ¯Þ9•1©‡ã3:K¢\£“z“9a)•¢¢ƒ“›ÂÞSHø¤v«èÞÉL! í&æWè +Òs¹7Û}ñʶŽYûÏy*¡&¤ÊR´M§„s¦Ù‡pÔ<¢–'¬ÒuäÍ|b)¢ +Òx†B(J¢‰Âq)1t$Á³q°¯h²Ã¨HáÆ>¢4$Ì=ÎP‡dW¦Â4@_€tÛN- Áø?bsÙ8üC¢‘c.4¿«•˺ÔAR(¯=¬+çK¬³€"24­—ÆÇâ!.`© +oíWœvÇÕÍVRòHLìfZz·ó7¢>yΘ0k)ú¢Ð ÷™@¦SÙì“î–¬`‘î¡”*o}§Â+õ€¼$'i=w¬¹"ÙNHn_¸èäåGäkºaŸÖ,¸w +‡WZGµ¥†^ÐÇÌÄ­%r"·%¨Ù1#YÑ£s7'‹ÓŸBÍ"öˆò¾ +@PÜ»³tjþ«-êr•“rdN%W,®õϬ²MÌn#à”€Ì R¿Ûý§¯º8ØxX3+ñ‡ZHn(uæ{8Y N–D4½Óää‹ÇÛoû9±é¿XÊ=¾SÒròip;á³b ž 8abÄUw‰hŒœšX©A·¢(XF½nu´/Ë!ž€*yß±…°jiI2[Æ]l h•íQ'¾XC±3¸«”ÀþýAüŸèc?yOв æ^—]#Œ„ð›['jý3­,Ó³Ñ=3)\„C½u†µž™­„´yœ¦©\ÄH.|¸&-Bn1èÐ8ª³&å¹:‚¥{À—1[ƒiú¨‹®{¼›Ghé7Ó<–,©YúŽ4WCùú”l(м˜©ú/ìÿôºÞvø:!ë›Qj¬ äy²0}ÃßDÓZYZ… £<ßÂS€Å<û†ú·S +c¯Ñí|¥k ]<Èe ·²qïbV®¤Î[§€ÓÔ =·W9i>,p'"<ЇX¨XÅÁ„z/ÛhÍ!mAA´“Ã5œËh£=ÛúWœcß«khi.PW +ÐUI©÷¤"ÑÎãp„x}†/“±M ™ß&Iy$S'6‡‰Vš¸(cEåôÏ)Gh«ñ9!¬ X‰iˆb‚ #‰{­zÞ£z¶š8 {W»¦Ž¹Z¡óðæ•$Â\œäT§¸ØÀëÙÙCÃÞƒºªC0[ ¨n¶VÈ{:ƒxv,ÑÃþeµn‘T›‹STSã&b™/{E†j¬ËÒDDA òa íQAŒ\ˆHsçÿ³æçÇëM“òºÐƒ)…7‚óƒSæ!m ù’Þ7™E—ZG1 —ˆÁÞKIŒr|© “û\²µöB=×SA~¢ÿÞ ôq9gø'xiZ=’•î‹ÑàæÃ"AðVþ!Tæ¹ÝTÃE™ƒFðG‰%DC £]gÕ õC×ÉÝ^XãK´÷ÙØâ™d!âi¢ +TPoĆ&”"¡æŸ¸[Ð}ñ.w2znÿ°UX¶¨S'Ži”;Æà’~±$µ)ªöO 6kŽí?¿8f<,·v×o¶õZ‚ÉD:s¤uSðíÑ[Yy¥àïѰóh¬³ý]uú 3îÿ!7f¶{6±C‹þ¦±u;¶…Ĩ&RDhíÉnïØóVÔXÈ,<1¼Ê¿x6U¬Ue‚3nh9Ñ[Y ýAPSñxœ}¼óaæõ.c¦ûÜ9˜3LZÐóÇH ÎïÑúŸ–+’SeH5§Ë+:3ž>ÏÏÙ›Ç aìÑI2ò°%·…eþš…Mws+c¾úlú'{ÿ¯‚ÂåÏÏþ øL*>(Û 8®…>w˜È€‡€. Ácg ×,bMJÆdJÆç›ñÛˆ=G•3ŸqNï'ýsú³¯TSï>OÁ/F…>Pþ×ð;:_}ÌmØt2ÿkÐ2=Ÿ{†¹Ôå™d$ìaCBA?V_×ýWâ$ûÑ\ç˜"c¶ã‹ 7•S„‚–Ò0¦¡r}h· üNjUNN úÃðs8×¹ñ¯6vŠ5%[x1ä’µij.LôIm5ž^ScSõT+c·ÿb'wçži¶øúÌçrޱ£«â‡ß‘høÄï-N)Á{à#ü±pŸ Èu/{ÅÆ<Ç•PÒt–mô} … Fž¢_V«ú!º"£4󦦤Sî†ÏG)Zá$?Å”Ý׉ÑÖý5¼¼ìÄuÕLŠíŽI¥¬ 2íÑÐg“û™ärÃ[ÙlR©¶è¦Ž–`³É|­…MÐÏ $g—ÕoŽ„t]¨RÍzGÕ1Önò´v·¯Ž`CE ³À›bÚÍeÇ<•@{tðÔ[DVΜ «Ç€Üîàqô>1益d¬õY{·#DxdEÌnÚrVZ6SM )šÞù.\pkvxº–¾-™Í˜¯‚ÆD¨/ ‡"GP9§–›åÓ¿o ºµ¶‡µŸ[7n9têëlŒÕ!VJ€¯óu ´â¿ps¦GÄ~BwþMþ„#ñQÕàñqX`á'é±j$æÍi§ñ8eÔ©{#Gïj‹O;˜d+¶‘‡å;à÷×Î묙»ñ¦Rð§©+ENòºîŽês2Ó‹B}¡K¬hS•\µH¾WzõT¾úÊ|"*‡¬×¤ûWר½7‰¶]Š·¥ª@µ¹VãqûJ tåÌú¥Í@7U?Ìì[”ýÚÓãDvöiµû¯;¨jthþxU<Ó±h=žr‘TÙäƒ,c%zÐü_…aE"gþm¯ÆÄ3kJOs¥íõÊ¡u-D¨QƧJjXýUŒäPõB¦‚æG’‘mYg/S9‘@' 8÷'0 ë…´ Ë&ãc +@Bи2<"–"1 +p(Å¡8”AÍÌ´Á1Z2@@RÀ$“ b +œ@(&5B 04 P@@ %y-`x´‹A4†d‚—…KLÆgCŠð`L +b‚/X¹&D>šÀ¡X8”A‹CÇ$A$FƳ9Ž€ +äPŸ ¢o—=XA +§sX +ÓMl8h|F\@ +@ Z² áP*¤eäs(ÏÆ33£à —µù˜HÏæ@@GgãðáP  +H.Žä$„åÒ0È8ÝË€Œ+£DÅãÓqòVˆNZ@›+fe€¦æ$Ä`Y®˜"ŒISÌÆ¢„/- ™Ń)gL €‚âA +$Òáɀb >+(`€¼ &(ãaÆã3S`cB9Ô†ƒ Áà„œF Ãé^„’&d¡ñÉør‰8È1®ÂsÂò0™f&`R^@ <Õ§ºe§pq¨6qaÅ¡@jŠtáR†äPŸAÑ*a't8äP œò¥pÔJ@©(àÁ ‹ ÈÀ J&˜)uPâ…ÆÇàô)aMh MW ˆC)ã*Qƒypà@É4 h8ŽÃá@»^:ž‹pãñá@!+XáP,"%ú©ø”l IèÕá €À¡6%ÓI~°t8nÁz¼èËÅ¡*Z‰E +@€ÔÁ‰¬ñ)@aÑ.ŒßH¤çO@Í©@Ž“ ^ŠÇGă+ˆáâ¡crÈkÃp±LØ`,Ðl h d‰ÅoR€!Ñá9H9…ð9ÅÄ€:rÁÊ•¡€"ãš@‚„¢ÏÆÎ¨ Ä (¡£áåšp±2dEd`d²ÈŽÐ…FÉÆq¨—„ÒÊõ²a`ãd6"H(3êHrhÇh”¦çp¨ÎÐ@Ɇ•’JFx€P j \ +8#!'Yßq8aAŒDCmB(4>× +2Ét4ÛÑOBÐÖ @ƃ"—nb6:j°Ñ¹ ˜ðh|D/ÙrfD¨$!(çŒå‡¦ÀšåR‰<]‡ Í„V¸<œäËŒ + =‚äâ(z³0&- „§Pb€B LÉ¡Zbl܆{´ËBÄ/¬…µAÉåT`r q¦vÑÚzÚdxC]ÄàÂB‚R(9D°Tˆ™h9™™ +Óq(ŽÏÁ¶Jd0€ÔrqlGEND0ÐB„G iT¢å\BzºL¹IØ\º!QñøX +×ÄKÑ5¨©).åÄè‰ä†‚ é..b#ƒ*€GÂé^: ¹y¹äæt ÄE!'&@+×ĈƒÆgdQB +m\.—ÁS(­ÆPŒÇÅaبˆ "‡zh‰K_RT<A€ÔA +ŒOmP0Ä‘`AȇR‰NR€• +=Б ”„9PtØHÀ¸tàP3Í„€„3 ¥•k@„J¤FŽr¨…ÆgÓCB‰÷%»X†P\äÈ `HQÈ–›m!™p€dŒ(4>!—ËåqQšÐ®ñ0Á‡Z‰Š=PÇèàP+áÅÔãÑ®¦’“”©á¼&pTcà +^ šC’qÈH¼\$¢X"E^D@"  +äP§)¦£H˜¡Lˆ ^-5Ä¥7—ã>¤‰'ãD,"NkÞ@#$,8LÇ¡ö“0ŽaC98B[C‚åRÜyÐЋ‡ÄaC]¸pX-yA¸¨c³âA5#`€DŸ ¥ˆ¥€Ê¡4:J8z J™‹i  @ÃT„Z—ˆ‹ËÊ…áp ]1¤F4˜ŒÏµÐJˆár’%q›µà¸8K€–‹ëÊ;H˜¼çß2/û×s™9)”œ§yÚzÎsžm.qIh)fXfjF 'JáØUÎËzìÔªx1û¶!²K€ÈmÍO£/™Nl®¬Oùµ+Zk=“ò1EŽïÝþ­™_B\:*ÝŸN¦S‰ß:•RÞr̵RJûV§¯÷Š[·®:kî¹Ú1c6r¶c‡¹ªÍ÷þ˜5îK»wÏÛa¨Iîx£+¡Õ¤~«TúµF¤”·Ú(%…Ô˜Û†š‘³ϻ٦†VóúÛ_s²M0©ŒJ£šQh€‘GMLªM‹‹uM»'-í¯Õß#Ë›®u|Íj¥dRÓRÂUSO•˜©ùøTJyª˜R^,L.#O“òb2ÍL|ª£*šŠµL*£Ò‹H¤¹Ü-›÷'6úz²c®Rµ5nçÖT¶¿#|¾ÌÜ^ÑßÕû·µánõîm““é“D|[mÌÞß’%³Kõî{݈ÙËr·úÌfÆkßÛ©ª¦RFhf`jF3¦ ÈúîµÖle¹Š©iºû×ÝÚsn— +u¯õ¿!Kæ +û7óïŸý!*žã®3M¥\úÚS¿ûQÙaZ5'“‘º¿{ãË[v˜”K¥¾Éí˜è͹jˆí›7çífúTF…}MóÿÿS™b5@µÊø¹ª )š«Ê”É3Zù8¡ù˜Iù "UõÛ–7Ï»DþÖœeõ«êÚÇͶ³ò|EÔ–w~,[Å×½n;†©'s^¶å†¬R¢êq¿³mÃ~Æ©Uf[ï½N¶ˆ”KŨŒ·»ûÎ>·úWMÍóÇí[v ¯“_·2Ó¯¨ÜÏÕÛS›/YÒ\•RŒTG]ÕQ'êswùQ™a:`€>†˜šš•Ð0м(p šHа¬8¡ù¨™¹N®b¨B 53×ç„CI\R/¢JU@“@‘DÕUÇÕUÌYybõ gL‰R^$8*åEâ‘r…‰C}4ØÁêh, x¸¸ˆûX8$` È8ÔxçSÁ 2™7P Ä…Œ@d‰§¢ÃÀËŸcLsÀ!€…A§e†CÁp^2>î8Ô/Ì(JCƒ6ÉtìRó9ɘ˜PðN(‚$e¢Cá=kÂUÉ8P4a‡N‚‰CçLØ¡s +ÊLØáÀ ä!Px‡â|(È6À ZBjA¢äø˜(`‡N» ‘«"ìÐAvè(˜:'òa‡Î'¢#”"ìÐB¹ `‡Îq¤`1Xðq©¸ +“G Cu(dÃD…BBD|l,0B¢S‰ãZPa + <=(dvèXk)¤ÁÌI…‚t”Cu°CÇ-Jøé`‡°J“áah¥vè°Ž +I'¬ŠT KY)dA‚U"b<È¡>¦†À*uDĨy*`¬ xCÝg‚E0Fhœ€3$”“—  %% + +#% + +*!„C%$” ˜t¨¤%a¡ƒ:êñP Jƒ:8aU$ PXÐ`‡Î†JGö b`øNärµ DT„4‡Îƒ: A<’’p!!€`ð°|jFX>q:“ !L L,¡æs Ëa:Kfó±0 á Àƒ‚gSÁ° “`@C!C£á@aF6nÁ†ã8”FÉ„À´€hN HÈà#ƒ¥À¥ÑÔpX´ƒÂ¡Ã&ì°#  4œSHA…‹V•vQ"ìº @©¸Ïš’Ui!Z>g ° øµ€H!`„ ¤Åb’EÓ¬Pé 0BO¨D=¤‘ˆÆå‘P´ËHIÁ‘—«ÀƒÑV"P8¹"€ô|µF'&Y÷¾Ö蟭“ò)ÅK‹™Ùägw[[O·Ÿ™¶ÔNÏ»önyß³½2[õ“½Ôm«‹§ëÚN÷½ñ5o÷¾·Ø´i6}Ýß×½×F~¶êùéþŠëÛ²q1"%e?¥mšÐÛjÿ‘õoZ«á£õ×H‰Ž(‚àwÍäoïeªq}6·¶ËÓ‘Õ'Éêüµ<Z¤k;ºkŠüû=¿á"3æÞ‘ÅÄUÎüv¿kÖuMLÖÜIr…RN£®~iÔVŠŽÜÒFZ+e¤h5“‰w”R ej¾³mËLõäc¿q§Éä%Óæµ•˜2²vdZ«O|V+ö›÷P$ò¶®˜m¿-º?óåJÛù/¶^"{l;‚›ÈÙ¾›±:b¶þïfv»U;g³ëï1ÇFÁ~øÚðÔŸ3æ¶ör#^¶îÖeæØT/ý÷1ÜåolxˆØXs¯÷ñ©§ºó+æc{{c«®­m6/þm3ßguÔöGÆê”KÕÚÞ››×ÕÛ}ê)ö2ÇÆž¥ÓòŽJwR‹4z·’¤kµö·L'SãQ©ù#Dëûââ1²E†¸ò´7êV:•Ðd²4²æZצ¶®ùÔN£ÇKoç®ö·–-wärï¾ÆÖÇì­ùß°¿™¶¼^ù¶±÷“mËP +is4:%©eZ>â·N¯KVk)¥‘H¤l¢PsìÅÿ_zæjcŸá)_bÕžå¼$«Têµ¾×dPOZÒGUûMWÓ›¨Ýµíc[ÖìßTSÿòSño›Ÿ·ãcÎU7ÿm}~Ú˜sk·Fï^æýYæo3çjÛuûDäLö¯ÜÙèÇ‹Ìÿ«˜í™‹‡ì‹ú¿—¯ÇšþûËÌ™{=Ûû>²mùªÛ­õZ+óÆŠùõ¾qz/cäln|ÕýötþöùéÇz¹{¨x«Çˇš©÷‹‰ÌÝÜ›¹á¹3~ÕÛGõvÖ+ÿÖrbdj£íVmZ£Ö#«9i­Ó‘ÐÒ©t2ñz«.ºž¢»¿ÿñÏÙB\ØÜ”&Mi¶uBv‹´iud-L§Ña³(¿“÷ºeª¶;DÖ¸w$ýý³ýe·{Woéç¬q_|ŒÛú–9wèÎ4*}ÛRJ)­ÆþiTZËGËÖ›~Ä¥dýqªòÝw¦ß^ò9;íê¶ÿÌ?TvÚo:™š›L£V:+…Û­VâµZ·Éò#1©K½M$Â{þ½uÆõkÏí×ËîvG´%æ5½mõ÷lDÖ¦ŒÇí”ý+ID{Õ{|oÌ’Ù¥R=öäVìÆ¬ÝÚ9ž³ÍdÿÍÆØØ›wÜø¿O™s¾¶ýÆo«ûÚ­-‘5rvjróVôgŸM¹ä¯6ë5o^ÖÈ”K…þ‰ÔƇÃáP&•QÌ0+4•i¦†Æ4£R™TF1¦šQeÀˆF…š1)`Ͱ,©;óÚ/ã·ˆ“[Sük}Ú,¹µßöÏ®ê?F<_edþ"‘ã¾.R.å1²&˜•êD‰öîwµ1UY·s¾kj2îÖˆÚòvãëUü­]ã7NgÞ´Ên‰ë,»ý¡¾?"CÿlšêçŒùOTDÕ­Û¢#ã÷*"6LÇÓKÔF¾äLÔ–-×ùš[yS“µ®*n;öDWG–üÚÚç*»·dn¾Êòê2ökªì­Y²_okw¬ÙëíÐ×QÝ&+"âú_#[þÏÖ›·ÏWÕ9ÿ–³Ûý²õfÜl Ñs}Ù³!²¼mß­‘1ŨÝÈ«mýE•òf'{6r^ï7æ_n¶üÈÈÞ[7oª®”Ú·zšËµÎóvßÊêËmïý‘‘µ=j_²ãçÆŸþëÌM׳W»½Ù¶¶ökÖ‹ýž|ÏÚjÅÜ”Ù[»—ñîÙo¾3¶Çãw†¬çáf¶SoÞlyQ½y[uÎÇæÚPY3•¹µBo ï›f²Õm-›g?7ãÖJ³ùòbsÆúÕòkú»Ü¬µVÌ|øŽùȬé÷ý5mÖmìÕû»!ò3wäÕû=GgèZí±çµ|egÈß:ïÓ5‘ÕéÞ¨ËúÜ®±Û2_ïD÷½†ÉÒµâÓ»Ã÷Ãg½_m~¶&zÃgèŸþžxljì›VØÙ’5Ýmí绺Úîù‡mÙž²ïiÛýSlš·èÍN¿ÊÖz:f7Û~ݾgOgÞeŸ_ñó¶¶Üwí{g§ï»¨ŠžŒLõ«þNÆc»Z=êeËëçe¬ªú›÷Ì\Ÿ*áÞ¿VŒÍ“Ù‘[;êkKeÆgº‡~ÎzÛîß5û­¾¯ý˜)UªTÿ.½é·g[²úù¡·²l­²yÞ®÷£³å¯pùÙ·s²n­°­³ëéã2å§"ªÝÃÎß>Ætlø×›ˆ ù«ÅU½–éì­yóî·|.ñ'rïÿv&»kcÚšµuâÝ·ÔÕ×ÖžÛ_Þ±×ÕýöݸÝ߻͚~ŬÞþüW“qÓ*y7¶nk>½^ÿÌÆØ2õp›G¬Þî±¶_}c¼Vüä[çÖÍ«ä~|^ý\ïtõCÝoì÷»i¶â)²Ö´bMïnÞÏÊŸ +!u¢J-—ÕQÝõ\Õ¿ýµdˆêËÚÙÎt»›ž27¶¦×§‡½Êx¿ºÆÝðšfã1Þ§D¹¯Ëv¿â»EE|lÇ{ïlWnȬ·®ÇtŸ*UªÎʈÿîLY+oÖ»æî§ ÷«F?ƒJíØÍ¯¦1¯uø‰X´rZø&–VÐñˆÉÙh)%aJ[‡Ä\Z$–a%tþEfd"Ø‹ÙÔéôR3½–bèBá–ÉžüËãìˆÁOÄå}çI‹¼;›^+ñ\b=O@0ŽgàTb q>D…*ðçd²ZWO±¦eëâð©Òt®t†Ñ\@A™¦Îéê7€Ô˜R³Á^æ± XÎŽI{‡@Õv±® $ÕÞ…ÁOÄ_Iü»+ÈQà¡c¤›E凫r{bFfz޹6ÎUcG¢ÄÎ OÊ¿16[Rã%ÿyû¯L(}à˜jÅðzg‰Ä:"ª)èÿäÝ^ìZÒ†6†ñ´q7i}‚‚*ÀÈst(ãù¼èÙÃj¦$0…½0ŽÔ'<›úŠp>ÁÇšhjA(ŒRnp‘y$ +iÓêæ+žÇ„ pÒ«PâŽhÃÀe†$½Pãë£øÏÜ‚$÷â"Q}À)k"×î_Ë’VøÏ$¿.7k³ã¢~’ù! Ñ1?“oëˆÇ¼³Žkò÷„)TÚ"‰{çGÍÕêT­cQÉ ÐŸ“—QSç}VÆ {ù°‘"Mb}(ç9M¦)·!tДïÇZ=üuº 1|Ž¡½M/eºÓ̃™Æi^ÚžaN=1©üR=P³ôžÉ6+ì´\(’µ„S¢.Êï–BåTÚpfô+4àHûIˆi|C¨1Ùû´3ò‹ÐW#ŽˆË´ ޳–€UºE ÃLèuŽë(³ãZºè»ƒ*‚ÍÉ]Å)þ™¿³"޵ê.¶xÃIÏô?%¦½$¢ˆ÷Æ4²Ú¹ßBtØBfÐèŽ!“ŒYž»íWh­jŸwº¸£±bÜAEv?wTËM¼Aÿ×PV(nÿ´ÄN4$Ý”¤°š¯€ùBçEòÑð¸EÎ\žßŸè!«ïÕõÞ~ªã8»âç¤ÇɹèÇ57•’ba<õ%ì8e–&âÑ8UâA ð5ê‘]¬ ¯g¸ƒÅ˜0<8©ßÈW<×44¤&–#&aÀñ€h£íNÑx-œ¢›|Ów~w“ÔYjÿNS^@RŽ‘–€|Ö žçÆ•Xÿ&ÈZƒÃÀ[ÍÅ—€ ¬×ŠE„í¢¦¢/ ølßfžkÕ ¯?>™2&-# ¹Â‹Où~LqÄA°™:ÆS„i„h㣃™· "„°4^9¶‰²h¥0…O:f:ÿ& bsë —1{iêÅöÎEdý²|´J8,³×ŵ̃ÃöL‘¤ ׯsá·FÓ,À’c›Õrè{º½CNð6m74}ÞTpôN'NÒk¨ê +qáÏ«w¼N;¾`ǫٚš¿™è"y—øò¸YšižüŸ Ò+#øt3½Ó 8©Sg9"BœmT BîÐÏeÛ­ G'L£8Àó…SúpWAØz„Ì$ ˆoü=ÑÄ¡[Éeª] ÑOúYf¯l”³ IŸ÷®Àœ9B=Áöد|}íN ²J1O½hA TA__ +¶+5Õ¾X§Ëûù¹–zœ6‚P<–smÈ6ò©!“&uo +eJ³eêž’¸¯~MDU'žÿ?5Îý´Ýû”Ü›ýl6R9úDš†¯_³©tö¡Ä\öùáGiò•ò@PMEct{p€Ò3馪ÆÂP4TwJõ„MŸYÀ°áϳ´µBìÓ&gS‚þ¯¾‹¦FF³ {¤á› âÔ.¬°ÎÉG(8ªO€¯Ëê+´ "F={Š­$¹ñGO±GD‹“‚ŠQç7–ß ¨5}@¬mDs1œ ž’á2\ îÀÓ÷‚±°…º(#Ý_lH]-]'²}-Wѵ2øÑtöˬ¬(…öÇùºo¼uÂ9 üâÆ +Ða}¤j~à `‡ýBÊ=¨øÍÑ¢m+Z«GÇSt9ªê9}ØýdtWi:Bõdô”ŒF %Šž M0ïÏ\[Â÷ÞÏíñ…IS0ý÷=¶+ž„åž;~™ÁF¹”¨Yé?· ÝüÇ&×5Q­cYUݼÖ4#Î\ qô´ $®ùç˜Çš§ô@â00äiƒ`! ¨*1½aRzsÆ ÄAØ05A ž~ºýf¥ øÁ²¼ØÄ7Á ;X\c]¬98n9ÊY_''Èí?´ÈõÅ‹&€ð¾7ÒÀ Ÿ”qò–÷AÓKãM{4KÏæCoÄÚ'ˆxʶñq +¸…ýZ ÛjôÔ1¦‡Åž¨Äè°ÒÜUVæ§»©äåVð³åöf¢ô‘yÈΑÄùIÓ Ý›‡Ëª$xh|W,æÏ]M† ¹Û5jqž;T%êÐàÓA;9…Çß_co÷²¹UŸüTß]Se#—§Èa8 £!=¡¬Få¾"ÒŽ\ˆÓ¨{É;“m:=.òBxÔ®˜_»šRËø>ëžÂ¨ +§,üÓÅ•E8…º,kˆhˤêòZÓ5ö¤Ñ¥Š•Â5áT:q ìc1ù*‚±Ž½¡Ø„…ÖtÕ}mX¿6öÔÓ]¡ºþKã÷ôž%½6¸·N›´ø0-‰Þ¤ã/ ºðu8 +‚@4} óÒàÓÿqQRpÃ'½Åä!ìõ}áØþ¸Ü;Ú ¥yD]¦(ž ÀKut×èìÖ}ib‚ØJäÁ*F¦Y.’pÒn‡Õ¢­ +©|’ÁÛ#r¾æÉ&:³£DcØ£Ó/ØË«Yô`9€Ž€ª-‚lÁr«I¸ÂP§½ké·3‚×ÙÔ¢­ÔX(`4„“ÑÀ™ ‡EC*mú\µ“]Σwáz°™ ù 5ޤ¡qkåÓ¶ç†àèõ«€4ò§ZÊG…Möæ¿1Uxïg¦Cfr’ÿ/‘Z¬’¯OE½JðVbÙ³ Eª¯¨bTÿò¬à‡|¡™u¯óüž§³5÷‹¹¶ˆª>þ§Àñ·Ý)ŸëhG—QŒü÷QºøÍñC¢CcIìûCYd¶ûc“¾/v[+˜¢D5ŽeR}ùC{î;>åÍ 2Š6¯BRÄÝx«¨Q&çžV ëyl‚ ØŒp©´¬o*zE.u²Üre_€_-Ò¡µ_Ìæ}æÂI…võGßL,¹‚K”àÂD‹BŽ {ÆF·_˜Àœ®{Æ»÷±°œ Þ(#P+;y¬Bƒ§‚±ò!¹´Ðˆ‰óÌ)«J[Ѱ 1?¬ƒñÒ-•¬O ÏiÛJ@ç?…7ŸVé {w0ÅÖŠl1uÉä¬\äþtp°· ~›R–_³ðóSÑÆõ+åÝQÌýW¯ÿjøxB]D¯çˆiK¬»Wî%ÉøSx»s5²?W ÿ`0Ø›öã-œ qgs®ßÀ‰7£™È¶óK +Uĉ³º™k%&„R}Òa(§*UjcS&æu¬ÂÜßÏ‹å§VL½2HûÊÚ¾M! ¿$†‰½EüuÓýHaa¡¶þ*{Lÿ¶ŒG1WO¾Œ çø#áG¡šËá0ÛoFZçÇY¾sKå5ûû`̘ûNÇMµlˆø;ÜÓ¾vB'XÓïå·nÄC$}^nÙWדõƒ„CÂóîùþísÛM)ý>Xb—&ªßî ––½,¯ªè#‰N¡ÿ¼±œ_{=ï'þ¼-¾òÔœ‰Nyh§wVΡÿ¼™JÃö¹•3×zÿyo·Á3&¡ºüÍÏ[ÿú ÷Áœ´ÂÚ^Ÿ‘C‰×…#˜KŠç B»?ïy«³3‹L‹Êôó†fJ‚©Ì{Þ@h¨¾ÜHØf—(”¦×sgü¼A[DI×qœ–Iž!5ámZ§¡Kf+>üç­6 Â‘ƒõ)[Xpðuå+êñÏû²"€«EtÊ^ ÊÅ9ý$ôóÖÛP abÜü¼×ßzöÚ™;4êlÿÕsñÿ¼Y@½"7kÍܬ¾õœku6Þž7ªøy£%‚ßR¬=ïêþy«Â7àÉÒ¶«Þ¥ý ‰îäPè¸=ÕŸw©´I©ç½ÏÞM¥ã $4g3¡¨ÒxzÞúϬr$=oÞøçSÜ¡ö¼e쟷ÒôC¨ç=/þ¼•ÒæVn…ô&_P<l¹„Ä%sÀRFÖ1uª_%…Fø@C( :bþ¤‡F¹±PƵd*[Ï$öØz‰)ù«QFÌÀ~kH(ÊÃFÝ[=qY_#Ç}kD×%2#,Äú*7H8Åÿˆ²†¨ç.>æ!YÙ†à;`„F8†ÐüZˆyÕ ÍoVk"fÕ=©)ìŽ0=†¶%C bS{¿`Mx dí½›pºwqR1ˆMmYå!5™ Ø+¥Lu\šrû¯ÔðŒæ€yL6#‹O¥ºrŒŸÀe7Cšà»þQTÂ?©|[¸Ö=ÿ•Úî¬>%Ž›ãÕ>׿ I[(Ú—(Êñ¬µ#sÛ@í{ß‚ü^ AüÈ*®4ÉbúØÎj‰q¯zXiX;>ÿŒ«2 ~gÜ žU3¸¬¬òä“ЀK†“¯é2‚¿½|f, ·ó-eE6ÚH}&‰ýlvA<τՋXºÌióïÜñ›òðû}–5‚<%ž»^a¤¡÷%"KÓ±:ö°SÏÐâi‰LíF‚v:Åâ)8æþ¹¡e§?\ŽF}!ÿi¶O[ñÆ 'Þ£þ®å—¿w¤¨^Ôq¸E—YM-‡È­ŒYB ɽªÒ‰&85Þ÷E_Np@¬›~ÇWy•vøX<£"É6q¹¦èqâ¸Úû¯›‰ÁAn„Æ£qÇKÜg¨LuDA<Œ«e”(¹RBdr}C aY¹8•££[¯J gŸO°~¾ÜH‘ÊŸ\­R‹ú¾«D.K‘Hûþ¢¶qûÞhmEFöÇŽ—ƾÀÄ夎Ü0T¨4„Œ¢Óá!@TÂ7s¥7Š[DK™ºœ„Ü-ÚK|Y¸&Ù,Õ)À6q©fƒ™Ã6iöÛ‡J*? +RªSqÇ~TÄ+ŠUo‘ôy~oÒnGW%(½ÌWÆÉºÏÉ8f¥À¤‡Ô]Ò5Llê]${²Zƒ +Oš`ÉþšÌp·ðÓOýFÄ‚ÛÇ,1»oèÕ/zHк2ŒTF(l>ê0‡$már~¿+¼Ç¥î•¤xuî.­vf…³"e9tµ¤–YáTdàHÏ—nÜCæ‘´,~D ”.qfÄHõì˜ÆuŸD{¥WFžû5Rd€<Éd¯!êwA—üA0$£ÚþoôånH qrgë³À{4½ÁãîÎð»óé…7 #÷ 5ƒs·F§ÿ@öš/¸£àîCîa.5åtwTð¶òFF§¢%%Xík Q÷a\änЂ0« ¡èn©á=i*I%q‚|HtéîmðÎæBqºjx[bc°`0X_Î Ÿ» ä`x;]Rof¢ÇÝ:ðiØþ“¦hÏ ¹Ô†Ü"ìbô»šdr÷´Xyù¡<³„“j DѶ¦òš!™Úæ…ËÑ”4m“ÝPk¦Äm®òdž‹ÿB:`žW»Å¾ÅO»™ôŠ%j[E&{¥¢7m‘|ï#GH­m ºB%c•Dõ}’ê±î¥¹M¦JÓÀH“Òa¹÷^¯~kÛtüÛ¶K!mk‹2!„ÓS¨m7™Û¬»e¦Éò¯é•ÆÜÚ6±{“¨‘|ìÁQQn¨á­¹cï¢øÄÅè Z==Öøs«ö?޼U"TtìrþèXíØíHTHÿ!4òM‘yBŠxEÎÆ]†ÌY¡PE„¨ÔŸ5ö}n팴#ÎNá[>;Aú‚Ãq¨.‚»pvd/8FsþÄÏ0[)K-Š( ýô-f¯>pØ&j[¸"ÔÆ³–ò&L/0Qž€&bÛžF‡´#3¼±uã÷ñɬT+ÁŒè°7žåº5µKÞÁ"=IL6÷Èü ÖzÔ=´—šAx$Ôt®½ ^°ĵ¦]‡(É›áõؑߞ]øfä&'1${x´)A'®ä)#Û!רPDˆí|¹‡þÒâdY'¤àµæ2¶ZrÚ2¿v\F˜{Þ„O>y£Ïl3ïŒ7¼nškiÉìMãfv~—ÍÀiZ:±·ådî×;ý†%§f€k1·›…0Z^½Ù9‘ÉJ±FÔìX4i°˜Ñ×[Ü’rà²mŸþØ»!ùA ûk/^"ùG˜ ·‘ÓÇ+ĽÓÿ·Ùý ¡íît ý[ä}Ú°´¬?@Ó¿Á¼[D¢®S—œIÆ|«s7‘zÓ¬ ”8Ébú§¦óä!7b¾Ö?cKÿSAW:ŠŠ£Ž7šºcköñ—h÷à +Hè8KÌé`ðG—?Dr­Ãþ«Øõ9©”ÔNÍ‘åã|ãÌ‘$шÄÁ>³q…Èû¢ÈIgX +‚M0.{¿¥oÕi˜%ï%´Ç*–ýz™Â±££IÒ}²XB—;IÇwr„ä¡úéFD`¸3ÊÍý\…ZÿOböbAÑ<½`‹âPyT®Únž‹å“Ge°´#6óÐÝá S€‹aÞsë²”"œ‹(8DÞa2ð”o‰L.: ’¥´ÿŒ‚IC)^ò3`Ä®3ä-‡¬¦cÃü‘& þÂŽoY–=rAp.HªOþµk»máñ +öÚµ†ìæá»ûþ@ +ßÂÚÕ—UÙSÉÂ&Mè½›p¢µÉö×6Ж]Àð’«)ÎWöÝn´”†æŠ„P£ÎlfÂjh•Єµ‚¯å«™£ :hžŸþz˜U;õšàhëÁµS5y”œŠg¡Ð­ö~)íͳ!*­qLêÙ§™ðýÊí%³PL ª}S¨½uÀ‘åDz—æ¶ÓÙ$˜g¶P¼“ÈL°u¿/Œø¦Qpú5žÏÍ!h'y¼”:TΪh8l~ÆŸÔ¸:mëÞÇÊ4¹ýnÿ~ôi'‚6P9Ba¹úæ Þ–ª“¡°’¼hv`BhÀ¥á 5K—¡ÚJ ~¬ú ×Ü#ûe@äËó4ªÚE¢hîѰ´¼|¾:Ý!^*,8-o[ΉòABbŠOyènjc߀}ÑËúgò Î#Oj1 @^çIV-‚sËÊj  º'vއî 2q­ цMéïp&qöX·“<Å u‘pý‚\ +­ÊQ0ÁìÄ®V7ÃJn}H]—@ˆì±IuœÒ°A—¹D€ý`—JÑ%ÌûR®òáÓþ\éêPú;¹ï4L¾»|ÝÖc§¹ç ”{hÙÕ«[#™Aîn3ä‚+4C8‡[']ûg^–ȰúÅ l“ÜÎAÄ…hl6¼-ËnÅ„³‹¬»ÌÆéåpHi@4Ô:ã‡xÆ`D¬,2«EÌ4´È:²¢íÑüCÚÏNF¥ U!‚\>ô¼øpô + øŽZÎ}PÇÉ-ÖÝ QZ VGÀw> ¼wKáõ‚C¤…—Ž{Z²G¶G§¦½—þö¨I‘=–›ñíQZŽÚΡßݳ¡ÁEÙ#LÀºø¶+°$¥è èV† Æ–¤­C&K¿|ú¶$íV†L¥–©œbIj•â¶:£“DÇÀÏ"b’œa¹˜¤ú85»Ÿ,IsŒù@Ÿ;W’%I7—‘ÙÄSµ$‰ÀÅeé(Ä.E1»òÞcÓf(¦©,]©w‚ÙÊ[fsWÌz>ší&w€hž—Ù0ŽbÞ @oË/Æÿð\ì¬e6Ë!»×S«‰˜µ­À›.O±f÷d<‹ÌöœŸE Àß«:©S×ÄLêoQËeÙÁº«8±ù§[#+йI ¹"Zǖ̆—y€ËÔ—X-‡Q”Ô2[D"vŠf8a\€[¦?@6).ƒ¸gkÝm^X#Ù[ºÆ±] ­ïX±”ƒ¢šMŒÇŠKYÜíÝÅ"ÒU¸±ðœæJ]HWàÁÚUQY¥«  ù4©Ê +)Vá@æ¥Òµ bÎ /]S¿XYh‚Apr^Œx¬dYZmœ@ux€ƒ1ÈÁYØÒ¬ÎXx«>IL¹÷Ò‚êR(ŽteD1–ÁA(0,V=ÑÑr Ì@¬Í…j,JÒõÞZ½þ6Ó!½ââ·Àa„¼D-pš:Õt”aÄOŠóVCIb¡þµå¤¬Ý=l«8hùŽÅš—ÇÛiŒìK3i`æ#@ó¯wõ„±[Ò߇…VHZ½Î(=/,šx^È.WJÒ©0©«²LrÂOh²;‹Fçz0ùÚiêm>@Уe‰â¹ƒÎZ,©hˆ…MZþ7­¾hÜ# õ‡Å럂æ=+%°Zq4TG­Ò“âŸátZö³\iÓWÑp¯"=Ðÿb¥'c£×X¼O 9Å•‘9¯kãY±"¬>× ‡Y’¾¨¬®ÜIy_‘­Á×"íeÌNUìŸ ¥¹‹·2¹¡jþ-V2ß +Ô³X{,ДU÷ÄÛâòòÇ~¥¨Ž¥N ¤Þb’±¨ µG½"7ž(ùXØ}`ÌïM!bu¾´ýž—•û±êNYŒÊ;:r¸ëR·|×Üñ:™ùX!ÇŽÍjPVÜR%ÛEKçemY¢Ão¾pù1¾–…±¤eTfì ,\rc-¢Lä­ú†8K0¤Y&Øœ}phe »rk9Â]ÕÝÜÚ>°°ë‡_bc%›Nyc™ŒìZÂ]¯XPÔ[Ô\‘| â¾ì†Så *]ïÉc+S É^Ds€[]Ѐ@AðäT +»qYÔÕÕûjÿWC ~_ÓÙæ^ã•M±Áê~ú +iÁÒ5ëÏp”ö+—&þô•Õ˜o +¿2sÌ›F³$F¢0¦í¡ÅÃJXAŒûˆ¯ :i‘H•ùåOÊ@dVl:ÃA½*wÅÄ:—eŸ¼bõèë`¬Ð:g5Ñ¥J±héX˜VX_Y£\¬% }ù9ÇeYð5c©Ö “”e²ÀrWÄYk¬Ã²´4^µÇ’[0”…Ž×ÚsƒQ–`S@ZLÎàáåe‘õX•Å$¯ÅXºU£¸¶¯Ð¯Çª»²„Óý’rŸq±Ô‘ØÆ>Μ%‡Ê·BV~/V©e½kq7Päã†rVÉ«‹uËŸуEID‚çyæü%L}S\CðÞמºØ–XQ§âG%¾i¼éêÏ ð†¨Æ0,§â œåkÌù( &Ú \¯‹å^!~šIk¿€Â'ÆÑ¯ï¦ ]’îÔì@wVóiÒŠÇÌ¿_–m}Òáħò‡÷ \‹f ³ü;Àê;{ªÏWûæÔø~X{üC~¦²9º4$d™fæÇ qÀ$ÖÁ$DA¯dIÚî +1£}Ì%fLF§ê@²X,ˆ2ZMuÇÛ©R ;jEÿ™qR:ˆ#à~&=rÏVÍs=_+èÙjz©êiÔ[ñž;¹wEÃååó¦ûz •­\w É»V'u*3žÚÿðoÃí’¨µ÷ù0—+öñ$ìx¯4o®1¡+7®•J—+ý.£‚+<Ñ+¾î €U+WŽÎVš¾ùÅÓ>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|Q}Lw¾£Ü«“zZ½»9²h†X±RQV¢ìªÀ¢£ÒCN¡ÅkAÍf„lq|´e›Ón2ƒ6@˜¶E!ò!C‚àt•M’™˜øþH¶k÷ÏþÚ?OÞç}ò>ïŽ`8ŽGlIÞ½%}ó;Ž ¼Éœ&XWïâ囟Ȉj\ —…Ph-r½xñb;7Ã%mË'C±œd-”jäÙÙµqq1Q>Ôú16ŠÑh4~Ô²›ÍÖýk8f³s66Å’c +­‚ÉΙ£ÙÍùù¬ßÂÆ +œŠ}É'byËñöm¡Œê¥Pœ"`–D,ê¢ÀG>—/ûü1$ ‰“b'å‹)JîŠ-wñK3pnFgçWQ(|5 +Arþ†‚A©†ÈIPÀaÈÙ +´œ9ù6åm]´H—½bmüž'°ôÝŒ1ŠóÅbÿdå‘P(™R^†’°©y:‘T¡›¾NâgÂI**GD÷âŒLÌA?9å× XáÓs¢šM{‚ØÄT+·nØAÔ7µ7ÝTÏ5ïLa*V%Æ"ŠÙšn”+J†á‹0‡Â´'Å«œmk¡Š›ûì#jÐLxŸy·ÝНfœråÓ‡W{Uãé£h©>Exº6•¨iè¨íTO´ìÝ“ ;˜Êd¥´“ÊÙ©I³ÆÁyIˆPïL¯¯|Ë€~îMág=À?’‰‘a ÷iÄ•QrôÃÂ:"n ½ñPA9å°Ÿkªn¨¹á"Ëù +žW¡ÿ WîBì}æ=2Q?OS¨4¡~ÂU×XuY aÝïÄ:í[Æõi»kª é¢dâÈ…[G†ÕðêÓ?A9iêÎhdêr2ÏdªmÇËË?dê!ž)ý z@3Š? µ’µv~%õAQÅ'‡™¸Ò¤ƒÆÝA©©{_GKUh£aÀ€z@z¥î’'ùýùtyöùÈS kë«jç*‚PÔBµ&küy9S]õåg§ékuí-]ê‰.CttÆöMþçÞÁ{ÄhY´Ç.—£‹ ÷/ —DÑ+mÛ'¶Ý ½üû¶G`ûu›GéS%¼27 +Äxf®™qÉ•c¯|wó†jbû8 +E¤Vi¸`¸ÇÓŽ2Bé‰ç³ÒãTQ“:XF;û¨õ™½.ævkÇè7ôŒpƒÛ JÎÈÚ@+Çb5~Á¸'-;Çp”I¬ÉºØ¯ê¾z}„V”>Ý ´â­Óð•Gö¤”:_Ñàhþô—SCMíA}·¯ÿ¯©@Š@1C‹‘ìÁ:XÔßùí—hy"!W¶97ï½âŒ ÊŠÊ:ƒ@+6R[ßD²ãe¥'?bÌö½–4õ¦¬ž‰Ç]Å ·xÔ Ñn·»ÎM¢\÷˜[NŸßÿ~È¢ÊàÁ—f‚gªB^O/ŸQÿÿÿÿÿXUi endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +0 31 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000018370 00000 n +0000000000 00000 f +0000018421 00000 n +0000000000 00000 f +0000000000 00000 f +0000021364 00000 n +0000021436 00000 n +0000021576 00000 n +0000023201 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000070538 00000 n +0000070354 00000 n +0000072471 00000 n +0000018833 00000 n +0000072358 00000 n +0000020901 00000 n +0000069780 00000 n +0000069828 00000 n +0000070422 00000 n +0000070453 00000 n +0000070737 00000 n +0000071057 00000 n +0000072496 00000 n +trailer <]>> startxref 72685 %%EOF \ No newline at end of file diff --git a/CageUI/src/client/rooms/AB140-167.svg b/CageUI/src/client/rooms/AB140-167.svg deleted file mode 100644 index 67b9f14b8..000000000 --- a/CageUI/src/client/rooms/AB140-167.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/CageUI/src/client/rooms/Test.svg b/CageUI/src/client/rooms/Test.svg deleted file mode 100644 index 651ce573e..000000000 --- a/CageUI/src/client/rooms/Test.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.59 - - - - - - - - - - - +0.30 - - - - - - - - - - - +0.11 - - - - - - - - - - - 100% - 89% - 70% - 59% - 41% - 30% - 11% - 0% - - TEST - TEST - From dfa97e23d5db49dcf365543df67311bae4d299b2 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 10 May 2024 16:02:41 -0500 Subject: [PATCH 078/357] Added some styles for modifictiona --- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/cageui.scss | 61 ++- CageUI/src/client/components/CageDetails.tsx | 90 +++- CageUI/src/client/components/RoomDisplay.tsx | 2 +- CageUI/src/client/components/RoomLayout.tsx | 40 +- CageUI/src/client/components/helpers.ts | 64 ++- CageUI/src/client/components/typings.ts | 144 +++++- CageUI/src/client/rooms/AB140-167.ai | 476 +++++++++--------- 8 files changed, 595 insertions(+), 284 deletions(-) diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index 859db0a3a..cf2aa9071 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 5721770c1..932eb6c34 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -131,7 +131,7 @@ .details-header { display: flex; justify-content: space-between; - align-items: center; + align-items: baseline; height: auto; margin-inline: 10px @@ -158,4 +158,63 @@ background-color: darkgrey; /* Adjust color as needed */ margin: 10px; /* Adjust margin as needed */ border-radius: 5px; /* Adjust border radius for rounded corners */ +} + +.details-modifications { + padding-left: 10px; +} + +.details-mod-header { + display: flex; + align-content: center; + align-items: baseline; +} + + +.details-add-mod { + float: right; + font-size: x-large; + padding: 5px; + border: none; + background: none; + margin-left: 20px; +} + +.details-add-mod:hover, +.details-add-mod:focus { + color: #000; + text-decoration: none; + cursor: pointer; +} + +.details-mod { + +} + +.details-modifications ul { + list-style-position: inside; + padding-left: 0; +} + +.details-modifications li { + font-size: large; +} + +.details-table { + font-family: arial, sans-serif; + border-collapse: collapse; + width: 20%; +} + +.details-table thead{ + font-size: large; +} + +.details-table td, th { + text-align: left; + padding: 8px; +} + +.details-table tr:nth-child(even) { + background-color: #dddddd; } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index d0945c358..bd1a683e7 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -9,9 +9,14 @@ interface CageDetailsProps { } export const CageDetails: FC = (props) => { const { isOpen, onClose, cage } = props; - const modalRef = useRef(null); - console.log(cage); + + if(!cage) return; + + const addMod = () => { + console.log("mod"); + + } // close modal if user clicks outside its bounds useEffect(() => { @@ -33,24 +38,71 @@ export const CageDetails: FC = (props) => { }, [isOpen, onClose]); return ( - <> - {isOpen && ( -
-
-
-

Cage #{cage.name}

- -
-
-

Total: 2

-

Status: OK

-
-
+
+
+
+

Cage #{cage.name}

+ +
+
+

Total: 2

+

Status: OK

+
+
+
+
+

Modifications

+
+
+ + + + + + + + + + + + + + + + {cage.cageState.extraMods.map((mod, idx) => { + if (mod.name === "") return; + return ( + + + + + ); + })} + +
ModAffected Cages
{cage.cageState.divider.name}#0003
{cage.cageState.floor.name}#0004
{mod.name}#testCageNum
+
    +
  • + {cage.cageState.divider.name} +
  • +
  • + {cage.cageState.floor.name} +
  • + {cage.cageState.extraMods.map((mod, idx) => { + if (mod.name === "") return; + return ( +
  • + {mod.name} +
  • + ); + })} +
- )} - +
+
); }; diff --git a/CageUI/src/client/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx index d12cfee35..1e0138b64 100644 --- a/CageUI/src/client/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -10,7 +10,7 @@ interface DisplayProps { export const RoomDisplay: FC = (props) => { const {name} = props; const [currRoom, setCurrRoom] = useState(loadRoom(name)); - // insert logic to find ro + // insert logic to find room return (
= (props) => { const {room} = props; const [isOpen, setIsOpen] = useState(false); const [clickedCage, setClickedCage] = useState(); - console.log(room); + const [clickedRack, setClickedRack] = useState(); + + console.log("Room: ", room); const openDetails = () => { setIsOpen(true); @@ -31,8 +33,10 @@ export const RoomLayout: FC = (props) => { const clickedRack = room.find(rack => rack.id === rackId); const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); - console.log(clickedRack, clickedCage); + console.log("Rack: ", clickedRack); + console.log("Cage: ", clickedCage); setClickedCage(clickedCage); + setClickedRack(clickedRack); openDetails(); }; @@ -48,14 +52,30 @@ export const RoomLayout: FC = (props) => { cages.forEach((cage) => { cage.onclick = (event) => handleClick(event); }) - console.log(cages); + }} + afterInjection={(svg) => { + // Parses seperators styling them correctly + for (let i = 0; i < room.length; i++) { + const currSeparators = room[i].separators; + const separators = svg.querySelector(`#seperators-${i + 1}`); + const children = [...separators.children]; + children.forEach((childNode) => { + const styles = currSeparators[parseSeparator(childNode.id)].styles; + styles.forEach((style) => { + changeStyleProperty(childNode, style.property, style.value); + }) + }) + } + }} /> - + {isOpen && + + }
); } diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 52256afee..0c1aac6bd 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -1,10 +1,10 @@ +import { Cage, CageState, Modifications, Rack, RackCombinors, RackTypes, RoomSchematics } from './typings'; + /* console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ -import { Cage, Rack, RoomSchematics } from './typings'; - export const zeroPad = (num, places) => String(num).padStart(places, '0') export const parseRack = (input: string) => { @@ -32,12 +32,24 @@ export const loadRoom = (name: string): Rack[] => { let cageNum: number = 1; // generate default cages - const genCages = (cnt: number): Cage[] => { + const genCages = (cnt: number, rackType: RackTypes): Cage[] => { const cages: Cage[] = []; for (let i = 0; i < cnt; i++) { + let cageState: CageState; + let position: string; + if(rackType === RackTypes.TwoOfTwo){ + cageState = { + divider: Modifications.solidDivider, + floor: Modifications.standardFloor, + extraMods: [Modifications.meshFloor] + } + position = i < 2 ? "top" : "bottom"; + } const tempCage: Cage = { id: cageNum, - name: zeroPad(cageNum, 4) + name: zeroPad(cageNum, 4), + cageState: cageState, + position: position } cageNum++; cages.push(tempCage); @@ -47,9 +59,51 @@ export const loadRoom = (name: string): Rack[] => { if(RoomSchematics[name]){ for (let i = 0; i < RoomSchematics[name].rackNum; i++) { - const tempRack: Rack = {id: i + 1, cages: genCages(RoomSchematics[name].cageNum)} + const rackId = i + 1; + const rackType: RackTypes = RoomSchematics[name].rackTypes.length === 1 ? RoomSchematics[name].rackTypes[0] : RoomSchematics[name].rackTypes[rackId]; + let separators; // either a divider or floor used to combine/seperate cages + if(rackType === RackTypes.TwoOfTwo) { + separators = RackCombinors.rackTwoOfTwo; + } + const tempRack: Rack = { + id: rackId, + type: rackType.toString(), + separators: separators, + cages: genCages(RoomSchematics[name].cageNum, rackType), + + } tempRoom.push(tempRack) } } return tempRoom +} + +// Changes stroke color of svg element nodes keeping the other styles. +export const changeStyleProperty = (element: Element, property: string, newValue: string): void => { + const styleAttr = element.getAttribute('style'); + if (styleAttr) { + const styles = styleAttr.split(';').map(style => style.trim()); + let updated = false; + const updatedStyles = styles.map(style => { + const [prop, value] = style.split(':').map(prop => prop.trim()); + if (prop.toLowerCase() === property.toLowerCase()) { + updated = true; + return `${property}: ${newValue}`; + } else { + return `${prop}: ${value}`; + } + }); + if (!updated) { + updatedStyles.push(`${property}: ${newValue}`); + } + const updatedStyleAttr = updatedStyles.join(';'); + element.setAttribute('style', updatedStyleAttr); + } else { + element.setAttribute('style', `${property}: ${newValue}`); + } +} + +export const parseSeparator = (input: string): string | null => { + const match = input.match(/^([^-]+)/); + return match ? match[0] : null; } \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index b08e4d03d..8ed675951 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -1,26 +1,153 @@ + export interface Cage { id: number name: string; + cageState: CageState; + position: string; +} + +interface RackTwoOfTwo { + topDivider: Modification, + bottomDivider: Modification, + leftFloor: Modification, + rightFloor: Modification } export interface Rack { - id: number - cages: Cage[] + id: number; + type: string; + cages: Cage[]; + separators: RackTwoOfTwo; //TODO add additional rack interfaces +} +export enum RackTypes { + OneOfOne, + TwoOfTwo, + Pen, + MultiHorizontal +} +export enum ModTypes { + StandardFloor, + MeshFloor, + NoFloor, + SolidDivider, + PCDivider, // protected contact + VCDivider, // visual contact + PrivacyDivider, + NoDivider, + CTunnel, + PopTop, + BumpOut, + PlayCage +} + +export interface Modification { + name: string; + mod: ModTypes; + styles: { + property: string; + value: string; + }[] } interface SchematicRoomProps { [key: string]: { rackNum: number; cageNum: number; + rackTypes: RackTypes[]; } } + + +export interface CageState { + divider: Modification | undefined; + floor: Modification | undefined; + extraMods: Modification[] | undefined; +} + const Schematics: SchematicRoomProps = { "AB140-167.svg": { rackNum: 6, - cageNum: 4 + cageNum: 4, + rackTypes: [RackTypes.TwoOfTwo], // rack types starting at cage 1 going up (single value means all racks the same) } } +//TODO finish styles +export const Modifications = { + standardFloor: { + name: "Standard Floor", + mod: ModTypes.StandardFloor, + styles: [{ + property: "stroke", + value: "black" + }] + }, + meshFloor: { + name: "Mesh Floor", + mod: ModTypes.MeshFloor, + styles: [ + { + property: "stroke", + value: "black" + }, + { + property: "stroke-dasharray", + value: "10" + } + ] + }, + noFloor: { + name: "No Floor", + mod: ModTypes.NoFloor, + styles: [ + { + property: "stroke", + value: "none" + } + ] + }, + solidDivider: { + name: "Solid Divider", + mod: ModTypes.SolidDivider, + styles: [{ + property: "stroke", + value: "black" + }] + }, + pcDivider: { + name: "Protected Contact Divider", + mod: ModTypes.PCDivider + }, + vcDivider: { + name: "Visual Contact Divider", + mod: ModTypes.VCDivider + }, + privacyDivider: { + name: "Privacy Divider", + mod: ModTypes.PrivacyDivider + }, + noDivider: { + name: "No Divider", + mod: ModTypes.NoDivider + }, + cTunnel: { + name: "C-Tunnel", + mod: ModTypes.CTunnel + }, + popTop: { + name: "Pop Top", + mod: ModTypes.PopTop + }, + bumpOut: { + name: "Bump Out", + mod: ModTypes.BumpOut + }, + playCage: { + name: "Play Cage", + mod: ModTypes.PlayCage + }, +} + export const RoomSchematics = { ab140: Schematics["AB140-167.svg"], ab142: Schematics["AB140-167.svg"], @@ -30,3 +157,14 @@ export const RoomSchematics = { ab165: Schematics["AB140-167.svg"], ab167: Schematics["AB140-167.svg"], } +export const RackCombinors = { + rackTwoOfTwo: { + topDivider: Modifications.solidDivider, + bottomDivider: Modifications.solidDivider, + leftFloor: Modifications.standardFloor, + rightFloor: Modifications.standardFloor + }, + rackOneOfOne: { + floor: Modifications.standardFloor + } +} \ No newline at end of file diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai index 0de1964e6..4f0692360 100644 --- a/CageUI/src/client/rooms/AB140-167.ai +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -1,5 +1,5 @@ %PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -15,16 +15,16 @@ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> Adobe Illustrator 28.5 (Macintosh) - 2024-05-07T12:24:20-05:00 - 2024-05-07T12:24:20-05:00 - 2024-05-07T12:24:20-05:00 + 2024-05-09T12:41:04-05:00 + 2024-05-09T12:41:04-05:00 + 2024-05-09T12:41:04-05:00 256 180 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUq82f8AKK6z/wAwNz/yZbFWOaH/ AIu/Qun/AFDn9R+rQ/VfU+r8/S9Meny/yuNK4qjv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+ d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/53v8Az+r4q7/ne/8AP6vi rv8Ane/8/q+Ku/53v/P6virv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+d7/z+r4q7/ne/wDP 6virv+d7/wA/q+Ku/wCd7/z+r4q7/ne/8/q+Ku/53v8Az+r4q7/ne/8AP6virv8Ane/8/q+Ku/53 v/P6virv+d7/AM/q+Ku/53v/AD+r4q7/AJ3v/P6virv+d7/z+r4q7/ne/wDP6virv+d7/wA/q+Ko DX/8YfoLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//9k= + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy 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 foLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//2Q== @@ -75,7 +75,7 @@ proof:pdf uuid:712efb46-fc53-7b49-8366-cae9cb172e0f - uuid:57daad66-f7db-5a47-945c-84b5ac48f946 + uuid:9bda2d32-406b-fc4e-a072-5de5d524f607 Adobe PDF library 17.00 @@ -101,262 +101,250 @@ - endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream -H‰´WÁ®å4 Ý÷+º¤›Ilj· ˆÕObÉâ‰a„æ!Ͱà÷9NÚ´…ö¾^©£‘æ>·uâããã8o~|;¾y÷Öß~÷v> ~U§£âÿâÃxkæç߇_Ç¿ðÖþýüÃyÿ5ºóønÞüð‹ÿø{ø4†úþwì…G&¬¤ÌãóKõBˆ®$oÁG§1އàÅeQ{T\¡1'Ù¾ä(§‘g‚™’ ˆêyøeø AÀ÷Ÿ«á!,[#,–1%¬S­÷ÆFˆØcS[cñ¡à] šw“Òž“Gv¥D.dÕÅ ¯}–rìÄL. -ñÖ é -ÿw¤Ì¹º°P8éB‰Ì'¸"QÖ€²K: Ÿ†oŸ&r?ÿÑ©|ó~³užÞˆÑ^â'€IÖä¼÷i|z¾Š_?ý9|ÿôHíщ±<–˜ÎÛLv‘Ëæ…l§5¾ÊD×QYèNY(‚%”¦$ãu #a1=‚aŒ”Ôa„/ÀÈcõ] ^Ú¢*÷øØ¡ àû”«ºµ`ƒ-!á ')»NG-Áœe®)ã¬t&eÝÉ*_$È™Ê-¥:e §äbNÑ£¥šSÒWºÂB'¿•K¾Ž‰&bÔÊ#ø;={Pö”þ 'IÞÂ)×V[eæ¨öôÏ'¦ ¦›âK<ÝŒ™pÒ`æ±rfì¦tåN0V6PäZVã@ ‚¨dÕq@ê5—]§ã@%¾ Rpås9›|Rq …yVÌD¨iøÿ—›#Ÿ¨¾˜Oø=­X´´#æB±@¸ˆÞYÙq÷ÌO©, .l`‰Æ÷ß»eÌ«*t^ðls´CÒ*ª[v!a·}÷´.fA¯C‘C’ -*¡w–3:/W‹ ¼ët¤óÙå"ZJ‰ñLº“ ¬òLÁ¦ÄnÍ ·¢S*1'Ïjõâ]ZÓùŠÔ³¤íÙ.œ)•š¥Çðwzv Ü|Ámr 婲³rÄÿžì1†bÖóÚ“8 -ë[Î+²7Z6‡ã…¢é¬Gª¥×œÒ=ÊÊ…Cqçä± -Ž˜vptïCyE÷(^UÔÕ̪[ÃÕÊNÕï;©ÞœD¼Ô1ÉK.grÖ `J>ž)~ âÙ\â©_­£b8€Xr -rZñ!.Ч ÈHZ‡@wJv@ÜU<%Z@\9°L,±½'veç«l!¨¢§µnLôÑþÂÞÛ™x¬fQxLG0îèܸè0ÎvÞUúò%ޱ`Ü ëÃ8£Âãx#4`ÆÞv’ñ†Â( -ó†é0W;ÃóaÀ—Ñ£½¹„h_†ÖK¸àœö}±¬cµ<Âfle$E®Ì/¢XoÉQ©Ž¶Bµ¥¤–p6K›e=Vßèp™>ýh&®0V‚!Hð´îláÌÃTõlÁ+8k}œÍ< ‰Lš± ´hqJŒH0ˤ†ð†%쇋™Èîl7kv»mKØÊ«/@”4ÿŒ¼Ü -:jìà{œÏ–6;å@þ͈Bì†v6QGl_Ïv² ç8;S®u8/Žë(Sý|Ú<âÆ`ÁN¡ÁÔŠi -~²-ø ^ÿbB…±çgÙS9ê»G€¸9†%ÀnÏúƒ àä?Ãÿ¶ÁœaÂN+%b÷ŸþÄ|¨h…Ãõ9PÇܸªKø­õe³ePí±Æ@\Vvr~ QÕl¢ÕHÑT75;àƒ}0…h#k«L7»•I€oÿøÉyƒ¿ZÅgÎû³“ÀKx³9‡?Û¼ÉyFß–îÉ™6¶ÞW |Š«'w›þº:³A…¸Œ µÍ @LVÍJz=¶wBŒõuåkJRÓ{Í!´'έÍLlÍÜD\w@s«qI–Ù´¯6ô·©ßáÎØúZU;ÀiAµñ™H‹‰ÅXZ%å´˜HhàºøüÓé8{ƒž´¯*c ¦éºyDª½³G#3»8]"¯ÖóÒaÚ[kz³ÃñRkSÒfqb€ º;Û(qÜl÷èç'H(§RÅ(׸¤–¹yî´­œS”Ú5Õ,±ZOÏZæJ 6À6¬5ˆªÑ¾B{g)ûÚsžíH鵄’ÙF„ùA§f±À¶IÇr’8O%•kÄÄMg™¸f‰8®ìY -ývª=Áh ”cZm!•¢ÖkxR¬QMà-½=4³ÕtÎËëÐÚZ÷FjE7ë[i¢ÑÙ#œía~0c´Â*óK–Bï­--Ä9Ëž‡éHAUáì|Yɘ4â 3íeÐ:N]¥¸: S@ûÎÉÞéZÆ'_®ùLu‡K 4ãB×Z¾(>m®ËÄlíZ7Œ˜Ÿ°Éä5!”>±h=â? ï¿ÙŽŽZlDIíÔ_ý7Ô0”ëÌÕ (Ö©/u–YI°5VÓÚ@ðG­>r½Ç¶ß¿{;âç_ÿÿÿÿò'—b endstream endobj 23 0 obj <>stream -8;Z]a;%A4$&-U@nrrp)2gK;d!U%0Xh+urTb>"Er&BRSLCT`9&GF>PejFns,;VLI04TYM(k[Bs5UoLOCWE.,fq?,k/ -Uff.p.&:%X/GG5_c93C@mY*K`BY!;36J=hR!<<-"rr<$!s8N0$PuYQW~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/7/24 12:24 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -371.139245021352 858.326532935701 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -371.139245021352 858.326532935701 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX·GĤ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJHÃ:\ Ò¶m-ð®ën)© 16¦û » Ò ³ê{`Ì]Ÿï¿ÝšgÚÆkWT9åß’FÌh+ú$<'§«•P¨,û›IOŽ#Ø0¿[6ÀN† R$}C•êfÍžèZÂÃöì™Añ÷Ônf€Ó6¬†%©us$oÕÿç´+§û듞ëT€•íLJfhšckÀ€À“¡ÈM|ê«êØüù*8î¬ì§îÿ©Ý/Ïòû]ª9à°kW€‡í¯ù¶cª“-rüÀ½]õÇô˵w,×÷íÖo ·TûþŸ§\¸vt÷v_÷þ/·®Ïï6]òg¹ñßYŽ_'®u¿ð@b€¥ç:=µ¢Oâ^}Li–b‹Š<®gŠÍiÿ´×\ßöý‰ã[9]Ÿ¦à^÷FŸpáØÕà[vÇOÿôàßÚ—áøŽÍ«o—~Í)«rÞŸz­*—ÞØö¯éל’#éÁë¹æ´Tpk`õ1(=Ô»(vÏ9/ÅÛ†U– ðaQÞXy@QïÕÇt?ú˜%Ÿ_å²÷êcİ%K1üöjµé¶öÂ5K ’íÒ¶ìÖ·fVÎ8ö‚m­þ´KkæSÚ¿Ýx¶a–vÇf—j–]ï|ÇN­r&´ÇLÛ.Û}½.=‚pìò:žU¡Ó¯'ß_k¾ô¡cqJþ¿fi]«çxVioíΩ»v5SEqìÞ|öÔ{‘K»†Ys4»h¾æûžÑ°|åYõ?üW®Ô?ŽiÞ,y'Iz­>†‡&©‘!Í^Îðíz¾Š}ìúßÿåÖ.§rºn®éú ˜µ/ þö¯é°ÆñO;Xj¢ï!ÃR%»±›Ш¹-Ï0ë×Ú?¦_³J£áXµÒxŸgôÓ:K†[6,»¢zžcö €o7þ'.»exæˆÛ½?n8†S° ‹î öœ^¸nü‹}Û>œrïz¦X¿[« íAÇ虣}–cÉ.æ–+ŸÆÿËÕh÷·ÍÑê¯i½W΄ƒáúþüwVÁrèÓ¯üþL)qÇè;¶áà‰ËšB\ÿÛv=ZËþͬœ -v¿çÓ¸ØÔ.ìо—¹·«š¡ýmÔ“©8Y€QŠóïûÇ.ç•דY9¹:{|Ù;ÒºÖ3ÏHãÙ«qƒ’–Ñx×кv qÍ¢ñlÀHãÏÎÑ(ú²w.zR ;7=®…݇f÷œÍ—¾›cï šÝ$GÓ䤻'ÍôxæÑxæŽ6ÿ1ý‚?_ÆÐþËÕ|šÂàŽcîê«¥DæÐdfùòeöÜŸ»>Mλzk=‘)Ù+¯ž¦øZªØ Ò>MQÿ·Þhõg¹²›ÑÊW^Ú꫟öÈÚg &3ú2‡öeõ¿c˜mE¯¼ªhf£Z癞¸ìƒž8MÔF­k^ë`ir1$ýXŽb÷ÝãZX’|4;7CÑ“`÷¸&Ф†ÞÁÐIkcIö>ަùX‚£Ç5“wQ4LJc’£Ç5Òûp}iŽÏJYž8-Ì"Y–efÉvî»÷>KA5ËÊÒ,3Žf¥ -úЋ~ô¤/½éOúÔ«~õ¬ç`=‚!(‚#H‚%h‚'ˆ‚Y -ªà -® ò°‡>Ã0Ã1$Ã24Ã3DÃ4TÃ5dC.vÑ‹ Š¢8ФXЦxЍ˜Šª¸Š¬ÈÇ>ú1ÇpÇq$Çr4ÇsDÇtTÇudGNvÒ“ ’")’#Iž$J¦¤J®$Kò²—¾˰˱$˲4Ëì,Ñ2-Õr-Ù’›Ýô&h†¦hŽ&i–¦iž&j¦¦j®&kò³ŸþÏðÏñ$Ïò4ÏóDÕs=Ù“£YG= -¢!*¢#J¢%j¢'Š¢)ª¢+Ê¢<í©OÁ4LÅtLÉ´LÍôLÑ4MÕtMÙ”«]õ*¨†ª¨Ž*©–jfª§Šª©ªª«Êª|í«_Á\ÃU\Ç•\ËÕ\Ï]ÓU]ו]9ÛYÏ‚lÈŠìÈ’lÉšìÉ¢lʪìʲ¬Š¢¨‰’¨ˆ‚hGÙS=ϳ<Ç3<ýÉOÕDMÓ$ÍÐô&7×-Í2#K±ô%/W’Ys${*žb)ŽbÈ–` -f(h¦;›dúÞÕì4K“M_–d9–c)–b–YGÑsÌÆQÅ>öS4×0Íü šèèEŽb¶Škv’&HötL3s,GRÁѯcKf½§þ,Cz¿fbW®žcÈÁÎy$ó¨ïeW5ÍÐ=Ïó<ÍÓ<˳$ÏñO1<Áôg?ûÉOÖdÍÕ\MÕTÍÔLMÔ<ÍÓÌLÒÍÑÍÐ MÐôf7¹ÉM¶d˵TË´TË´D˳4˲$K²K± K°ô¥/{ÉK^²äJªdJf(y’&Y’$9’"’ éÉNr’ÙqÕÑñͱÇqÃýØG>²¢*¦"*šb)’¢(Šb(‚¢3.²áªa¢áš!Ž¡†!ö‡,¸‚*˜‚(h‚%H‚#(‚!‚ä ëW¯zÔŸÞô¦'ýèEú ôÝwÏ=ÛÕžö´£ýìf7{ÙÉ>ö°ƒì¾÷Î;ËWžr”ŸÜä&/9ÉG.r‘‡äžwž d¥ìE5¯q-S°´÷¿\Y%4Ç-øuëVFµÞhˆMñi·õÑ^96Ó¯9ý7ûhõexÕº]Îèþ²snv1µ+»1'¡)è9þäõUÏ«¯ -€oÕ§íúÀ,V¹5HKhŠ[õRíý€¿c¿òU0Çnúk7fšâ³ÞU«ç[õEª×¿íŸ«à»v9/¶S0¦¥º]>Z=ßð»jw}*hØõâyÝõ™Ðš"žgÖ²c5ªµn—#oäúß·ËIdóJ®Ð±¹ne˜‹9­ÉX2|ËpÍ‘gÍIäß)žS¯ŸÓ—ý˜¦Ý‡^û,ù`Ž¿°{ͽã¯~¥Ùµ暦Ý4»»*øuëO4{¦¹¬ÿÚ|fٵحYÿ–ᦿ[{çšv_¯˜ý­Vð»ð]»ô{}½ìYýo÷׬϶<à†ex%ÃßHv-vc°Ïò’]ëc/eŸzå•ô}¥“æ`Éð;«äü¯˜ :YÄ”Ésíª>×—gÖüÝ17~Åj—%ÇZ_¦rïùý¾€_§>y®Uîëû`Ûþñ=¿¡Ph³ÙT*_V©¬ë¹ž_öÊ®›[wýéo»)ù«Þ®?ýÅ©7^}ðêËæ:¶ºõŠ4à¿°øSïë-Û}åÿeþÖÍy~_åÒögÃ6 Çñ¿W?¾ç×c8Æú2®çxuÏrìª`Ö¿ÜX5ÀÿdæWžáÛþ1Øü}÷ËpSÙîë­çï˰ ¿þê­çØë“ÿ€˜ ¿ìXLg-ÛíÍ·žßê¿÷,{Ÿ«v_ÿuëû»[,¸@Ϫïýõ¯¿ÌŽS¯ì¾êÏúZ´[³ÜÚ¥¿ûÇq,õÉ3|«¾ý±d8®ÿm·üUßÿ5ë¿_ýY,÷}Y,ûæyžç/“a†ÿÿ_öU®û ðãÕ+¦ªa•û¹îú²Í÷ß¾5ß¿c*wýÜ8†ß¯J?– ×çgÃö¯?üž_é»ö¸5ëMíÇ,¶ÿ=Ç`Ÿ f¥ŒŽÝÿÃšã¹æp\fßò½æô•WŽË>óLzòò¿o7f}ØK±¤iz“{³w^z¥æÉ®Û4ÅRIÓ4¹×ÍÞÐL1l8d˜×›Ïr9)À‡EâûO¯¼ -ðoW®ÿŸ'²—¢6–]뢩ìšÙ{èͲä#èñÑ—ÚÈ}Iúp,½é…¥/5®y>’aÉA°“%i’×:'EÐô 8zÐ+ÅRó"Ø=Co‚Ýë$ØÐÍ ùӛËB-ôŽ›upZÁ§[þ·<§'f}ôDv»þ\Ì+¦)ïX<ÛßsVí‚ܘ½ëó$Æÿ3¦æø±«ú|VíbN¡×ö Ë¡úÇ1çaø¹ëó˳Fsða_GÑ,5°ƒœäÞwÎEÓCÍC’ )rnz ï1 -=35Ñã\ü·Ó¯:•4ù’¡íªÝ=× -y†aÖ÷”G[Çe\sØ,¾ïÿù,÷U9‘•“Ë4Çg¹vèVN.ó`×õO½bš7†cèÉ÷ÊÙµÛ}Õ3ûc˜=‰•óýïÿšÚc¬ïiÌ5çuáz@FsØ·<³.•£šs’æÞòg¹Mv¤šÃ®çxNmû«æšsËÿSÍ*ÇeàÈÆžsnz¦9jåö2 ÍÞy陦©õ°ÁÐä\$CP,G‚&È9çܳ¿¦p\Æ9©qλÆ5®9˜Q– ¿rlF9.Kpìšã¶mW€ì¦—e8ÀBïð] ýG~¢æø·«Ê3¬€]{ƒ‡=šãÇ7 â¸L‘Ðò\ÿ—›j°€IhŽzfE¯ôšCža»þ¢SY99.ã^è5…'QÏ·[ßv,Ž+šæ¨çÛýuÊq™Æ=°ñSó{6>œ ¶G=nå@Ñâ2Äš·OH*kBRñR¶§PìíæŒù¸{„zƒä1"]QX~¹#]§&iR+8‚ðÓe‘ܾ}Û’KµK—oߎݰ.Üuk#ë¡WÓÚP ÖN3H\Ö EVSkF$:-Xe‰sc;©%¢ž8¯'Âe Ï&Á8¼œsbõÙ~aóÆ=Äè„úD9TX‚ÍØBc¡`+XXvíà-Áæ27%ú\œ‡bÀY$z10Y´DM(~t\æ™tJƒM€Ë@RݶâÖšH!—ÆÍˆ²¼ab ŠË\C*AÏ„Í?Nbs͈xº4¶Ôé6Î{bl1E)±Þcû˜DŒmÀ£2¶þ¸,¶S£llW¤Û¸ìsÐbl¤Á“ % ïÌ®IÆ ^8-¸&pÓöGØ~Á$ýFOÏ/hÒ¨³S õ\æ¥+Îe^ºâ —¶F¨ç2Ò¨A¡ÑG áÇúTŸÚúÔ& Gá.A>á`$ B_ñÎ3—àz‚ËÈÜNè´  À0·k nç2Ï€!V4©D#Ѩ®¬=…!V|C¬¸ï\ö‡tsëû¼Ç¹èǹè‹Ç¹è ËžEmdµ³ˆËB³ã\t…x.:Â^ž‚F -Ð4j͈Bá)Ò—1ºEB¢ð´ŸÜÏ_œ6òâ´/NùŒ( -O5ˆŠÂ[Ç!¹Ð—pë8$Ù…V@BË.\I.4’€7Ç!é,"Ì4€`ÌÒ%Ü,j#f@.3 ‘´¼ºÃv hyZ^­ñ`m¤«pY‹=@ýV’ÊÑÝ•ƒJá¶ <—)dÛÀûÕE¼¼rÐP€);rÇ—§™ç²Œ; ¼S†¹< …¥¸¬ IG!¸F¨‡¦"ÅSX­1Pz\XäŽ$+¡¯F0ÄŠËDÿàóömÍH‚ËB'÷ó‚ÁAxÔãV†·˜¨oßD -Âe›éò„ÁííÛr™=‚ |]º"—ÁÂΦä¥+κ]eÀ|*åÖÈxÖM02„GÄNÓéX˜OEºN†îvªýB÷ç“úô©‡K rÍpÙŸ¯¦ìðâ´óy¡¹tI·Š -Ö›A:(PmƒéV{Fiiöx·$B_qšÔF:ÕžÑÎ?¸¬{Ì4¹ˆ2‡dãpY¬ÃX‘ޱ2¸¬Â%_PëãÔßúÐô\tÔãrÙœapk$ÒuZÛ`íj©5#êÈå( -ç„Z3âRY'Ò©›þ8N´ðùÀ‰t¹CQ裇}zt¤†^Žz\.‹c¬1Þ=‹FÊQ„˜‚ËŽM ®c#ÃQ€¿B†Ë:§((e[Ò¬£Ž¦´WÂ[sf–ûK°K¤° 6 -…ô¼×Q±Úð ¦5 -)%hw».¯ÙhQ¤°®Ý ¼á -c±ü{YˆÖõ¼ p‹–˜Ù¨]ƒAxBÍqtJ{%œ‹®HAà¯Xa@¯´ Ô5—ÅF#ä2ó•b:T ”öç!ÀBü„ï.š¦*MY~O`%P¹ŒDJ@,×%uMhGlq:TÆ­“-‰šo£8€—•êrªÍœõÔÏ -¢ü„ÀÎÑNpñÄ~œËhEº‰1—–/O´ë@#D¢Ù&¤dÁvÊú@"ìA@$“¥dQº`/žrYAç”]i VK6…‹!PPJ†°C”¥”0 -wmO>¦ô¶HÈ®›@Á#(} ´ën­ëz³^N¡ nÔ”‹ÃÖõ¶ >«äŒ¦¬Xrt'¡fP£nÂ&)(Ë n„¼;4;ƒº nIPÈe“Ej èq $%Ú2‘QõÈ~¼ñýÛò°•,» žÃÃ˹(õ![V5È~pÁ-ðÉ&ñp9 uÅ {—¦Ï* ¡sé\öI±¦Ú ©ŒG™=ኗ…×ë—m݇«¦Ë³@=ºÖ‚&t.+¿«1Ã^šð4™¸¤|„LÜ,° b‡«0RhÎ}!¤ .°‘Ab¡Ú~EƒØ(%˜=3&ƒ€Ãd€s§ðHœB_m_Š8ˆœË`­ch¶„abþðòÈZrC‡C°„IÄ+¥ö&¸-$â”RëÓ||sç2²Ôb>w¬!"œÕ墸T@<,qY"3q¯^Âã%r‡!Á̇s™ØP?õìyĶj±,»ÂeŸM¼á&OEµákÊ´fÊÒe·(Ï—õšE­ -õb8M^JЄ¹(;ý' -ç²Î^Žy¤[”hV0áǹÌ¡<º"¬kCID^Ôdø¡Õù›x<¹_ôê’€—®xÜŠ‘®ò™„2¶·C¯ã´6苳ª˜\f§Þ”û¯ëˆú$¦Ýa£H7ÑNµ‘.V ƒÆžQÒ5ú8¬†#»ÕûÝpqt“¶=5”80mYžÏ>`¥º£’ú|5¥>R)ñ¤3\ ÝÈe¨Ç}YÄHG (èÈ!ãù„÷0B;ì(ÒMüxJª¿ŽG§EÑŽê$p±j;{hºÆÞ‚Êe$‡8.&Ú$ÈÇCÚØ@-ÆÆecã2‘äÓØ<þ&¶¬í6K‚ ÛÜÑ:‚ÏŠªDÁRGa“^zf()ü-2èçí‰h>Ò‹'€ ¹ŒLt&`ç&ÚMÐ\ð((ƒBWª¯#Lö20RÎq“{qPƒ †Cà&•sYÇ@ñÔÀÀÌj~Ád5µ_Q’CVÎxVΠëC—ЂÇ@®A¿AVÞ…JªÏöB³‘Xõ#Ô«5RNBBR×á]3$Òm&ô¸ÌâŠtÛÈ´4¶ÔSuÛ¥n!¾ÆÖ%ºíd=cKuäÆö²}]Û˜»Ä€ž‚;pLb6ÍèVºâ·‹ -M2…“c"Ð1,\5a2ŸÙZ8—mޝÕ?Ä?[å¢`2ÝCë¯c¤+Qb¤“XPðnIºŽ´Ã-5 -µž©¤ú,•ã\ðoB¢nZ५/  PDûó¸Œþˆ‘NA‚|FoÅ»`Å&¾'ƶšDŒ­\¡ÛÇSu[Ù([Å$bla]+¶ÖètÞÑ}¦ûxã¸ðNìÓ7ÆtØääïQDóÒŠªs™|‘+^ãøx>¥ -OP€t#JŒt/È™E5^#ÁX‚% -(fdò9¼<‚ÚHB—*F:•tx9"Ó}üK‰$‰#—1´ÿΪ¯Še¥’~ÎOshÙ=Àõ^9ø ÷§^·<³ µ}äú_æ;v®XœVôñªsË3;jEŸVôU¿æ´¢ÏyÛ.æ¾å™mEŸÿr5­èS˜[?¦á;Že¾÷óWõçĘÃ}z³*'¡=è”ÿv˜vÓµûÚ}e÷þ„4íÖ Æt>,JýÛvY®UöW=Y€YvÉ1͆W³ö혻²*W4ÛÕZª˜­©à˜¦]íŽÍÜXsaí«Ü˜Öæ[{ÿ—µØ< ž5¬É°ËbÉð ¿_“gMvcZ‹Í¾m‡4OcUŽìj¶«ý^i²«±dX€kkòo  Ùšö[·ökWûöoê³³¾§òY.G+%ÂÞ¸u úvȃbØ•S¯X ôo·þòo»«v3õO=f|Û_pÕnæ× Yž3!K†Gñ–ÿ[yå9õ pëövSs­:;hNŸå¾*ÞWàØŽÅ*¹rbUŽÿ1 ]õ,À]Ÿ¯¹fÝXg€[·ðå¿æº¥šå9# 0«¬Êé½rÊŸgEµôÙx´~LÃqêO ¾åS«œÚÛ³ k³¬™•ó´]žš¼:Vñ™®c—ÊS^ßò‡kO ž[4¯hï­U¬zfÕ?vûULË*• ßÞ[«Z<Úë/`öÞZ5à¶ù ß©ùàËp¼ú¯çz±¼W«V2üY.]{®«vSœÏ«šŽ_ï–W©˜íÝò*þ~ §\Ö—UžMËó-Ï*U=›®ÿë¶lϦïo{6M“5Ⱥë/@ži8Vyôð-»³êÛ±—ž=z€Ã-è˜íÑÐÄ)Wþ*9¶²eÙµë·~ç— ) -8›O¢@{ÿíΩ–úš÷ñB‰˰÷R¹¼T­{ö^*R¾–Y°ý_/5ÌwüßùõÒ÷êÇ5Mó>z5M €kUÒÞ/ë¯&êßö-ÃuMÓ4ýzñmÏ-¯¦iÿ,÷{5m’q<«ÆÿcT5«ßŽy«Õüþ§<׋E×´ûºá¿U°ªÍ+¹’š-Ú-É8žU²§hØeÏß®¿€_³d·þ,7Ž]/5|ßé…cWt‚W0«rZ·K÷ØU}Xß>±dXÀœù1Ü ]ùS95ÿÊ® c´gÕz¿gͧ}Úã­H7¢`"îyœ È…$ j`àrRF¢µã²Ñ@Œtb×Z8iŸ ÉePl†Ð‘ˆbÁŠn1<¸?ó@޿ݽ?ž˜ô¶sÓýq.Sy£ûãi QÊݰc+])Lÿ1¾\,ƒò—’âÄžÀÍäSàëŠ`$Ÿ2¹J®oäúxÃãúxl _ÐM}|ö3âM©RŠR_(õqFEáMÊ ]Òǹ¬pоâA}Dúø[QA1aÛÒì”…‰ñ©Lp»‰éŒZ3r®l!³÷S( éã/ïðò‚@!Òu 1Ò®OæKœoâ|œ!~ÎÇë Áí%ÆÛa™‚Àú Ö¾( (œÁr>~šp>ÛB°{ÚÇlߌP¿`^îUÚs™‰‘¶¦¤ýxÌ¡(ÜÔ7'ëa¿Jäã’ê)$5¸$¢ #æíR¸ÁÀ¯ˆ7a.ÕÊe·#´ -1 Šé ÇŠw1Òu0ÄŠSÄH·ø‰“ûùç%8¿_¦ô®GX,F/3~egŽ9=zÚùæRFÆö‚gc“”ªaÓ:ÝÆeÄ×øJÕ°©®H·‰_c 5Šíp{D%]qùú¼m¼ª‡°iª_8Êóu G«,ñää/…_8HUXt¹Ct’;â@Q0˜¤C˜ûñðÃer.¸,È PˆÅÑiYMG5‚VUƒ)çø)ç -:.“’̨÷6sÙ,[^ôb¿'ÔòÉ«&ƒªÃ‡EÛ¼9óaÕ§ã„Ò;¥©â?Æšp™Êò²p—:h5ñ|t`­0þèÒóè$*˜Á<·È\ÆØ\½7xêùÌÛj>ƒ' d›¨^Ä ;n'ˆY¨I³ŠËø@›RpY‡Ë¸ŒË¼’!‘1-íÊmr°)%XÊŸžQgñ - y%´ŒÍ7z`ZËÔÃ)4QMÍô¶öûm¹ŒË¸ŒÄ b5—Ù‘r²¡ÕÄóiP(èCq[ºÝ˜Êe -Îqòî -*¼c  |©SýLçÌÇñ-Çä¢pxž5ÁÕoÜv‚‡óŸµ©q7F;á 8°ªe¡ãÁem§ÝF¡)Š™ÂeÛsFô oÞF/.ã2Çz²^\ö9€J/.»?¢+x]¡þQ9,­ÑQ”68M 0÷ã_²qÙŸì"vسQ@QVGX×Û‰5„@gÁÂ#)o‡±ðî`߀l¥÷GtÎedŒ`²£Pb¹¬¦eÆi;‰Êj:ªsÂiÆ©!¡«çšR ˆ‰ê -Uï(›|V.ðÜL¸ÌÙÚtæë Uw \“mÕ´}±xt„CJêú t¸ý«£ú†OÜ\¦ð\·4Eá ”Îe\nec{:ÁA‹±!¸Ì{TF­øJKTÿ M2§a‘êÀÕŽO~†A -šJYøç@‹“ÇM3.Û`5´c\Æj¨zbtÎe\f¸Ì¢Æ\‘ŽËíB‚ð¢:ôPF„{P -ƒôõL6"Löã5(”oAu¨óÁÁòû›|D,ê…DÊÉe˜Ö©wC@„ú`N XQøÊkJu¸Âò|O:AÍiûœ®ö™̎ösÚdPx.›¸4Ì-uF÷@,¥ÔÑ‚§¯ °Ãí9ÜFb¥j…".ã2Ëò˜tƒûÄxžê¸ŒË¶×ÉÃ@tº m«¨†Ë£G¸l&E:¸t F‹¶¿ /‰”³`$ŠÛˆŒ!x˜¦ze¨ÊÕœPüŠ~T‹AZo"å¼Hîo‚ù ë§ÇÄÖÇÊÕÔ4()çd)'—™ŽƒdI<šú`ÂÁÎij²¨³qš¯spÀ‚[«ò'LàW¼ÍX´ý²­x ,ÌÌý¸ÈefÜF:.Ûâ²!7··c˜à²Ï“<ÑõÁä‰kE¹ë„Ë\£s™'õ+„zÏešµØêèlÀÝj"Œ[Îf-8I]·6#jÝ@÷‰­@.¢ÉÙœs‚tuÝ+·C,¢±;‰„ …ÿê˜p™ã˜LŒË>£ c«ªn»¸"݆A| CÛ@±Ð°ž±¡žªÛ&žªÛLbï¾Ö°ëP¾;Uþ|=P Ï6`ÏG`²´ú¶¥:Ë2â>ÜcrÏH7¢`"1ÒÑ\Öé&"IG01 ×qHÞ”Ë"&D.§™_gM#߉ýøº8…"±ëŸ §SÌÀ£ä¹è¯“z°ŠöXemøUQÏï„M:Ì¡¬¦tžÔtÀVÇÄ`à2EEá”ù %Ç…'Ì.;©PîšRSÐQ +µÃxH:u«OËH5ežÀFѤ>°p:¹Að1O -ÖÞ(DºDEáÞAÁU( 6Æ1Ôîñv(Ù¨T_ €Ô*Â`³=vg¥BtbX›³@aœØ” Y¥5Êã©§VÁc²8©<ç2E“êŒOÁÚk™k}0•L‰Øç´Œ¥Šš8x€N”(ª¬Á„³AeÕæ¼4(ºŠÂåŒé"ohÅ9äã]©¡úE½aÁ•Ì\‹ð¬ÂuWŒ‡#[[ìsºjó?lé©2Â…¦)]PœØ7^*D|õ·¾î/c¬Äé6­ #7¶H +6S£ll t¡ØRÖ36§ê ‚n³¼'ÆÆ†q·MݦA|˼Gep>Qhò99Ñ‘pL¸på9g>ï êš´!QóÝ–F÷^¯óC(lH¢‡­íÔ‚Û àzkTX‚Ívk?8`ÈÆZð)ˆ–8ff©|P.Seî嘗Id:³©0ŠGËÀ¹î¢Ø4£<©a†Pëöø#0ÙųècpŒ&áó°çæ¡EKTAN‹9Yõ¶#Žíöiñ9C늯“ç#Y:r)Z² µ½®)Ÿ§˜Îè‚çž9b¤{¿s {nr&¶¡bõB@¤63¬pª¸Ð|&À¹ZKûáphü( œwXl,Ñdej(Ê 7¸ qûº¾=å)V‹ä«s]k]×DÅ#ÅoÐsâ«‘ÉÄ7„”W„»`PGò<:ytçÄÛZb;±ºn«]¨û ”ý´Üß„Ë`OÄ@2>dâ:“…ØÉœ°´ ù:HÕOË5±08ÑÆ2¨^ÙýH·fü›Ï*CC"±V¬Ú|è¥+®S ÉK^Êe^±A^@á%«úÔŽF£ÑˆQŸŽç2Ŭ``”"¸ýDp{úúj`ÄP¤jÁÚSÄŠÓ$šD“Dih´è\¶Âe¾øžK/OŠ“ûAÅgôÍŠÂÓìÅá\F.$· ’€úàIÀŽCr¡»¼ð$-/K3cËËréËš:žÃ^º¥eø–m๬r hÙ¾R9P¨ ‰í˜Ü¿t -ËGn -ÊäQ¾›<ÊsÙ;B=¥}‡ºR°zÕÏND=pTȹèjŠIÓë=;ºÓ±@qÏS0VE¬fp o𢋦ôPJ‚B§ í ¥jB®0r.,÷\– ã’$¡h‰õDx‘SÚŠå¥*. Z.0PxHCa\p–w*V¤RêˆPJIT°=MY Dþe Fœ¶“¨c‡š! O'Q?–_P,šv— -‚PDÄDá7ë¶ð¦ÐÀsrÙfÃv %”h{ΙOÃ.މë¤ ¸Fgdlÿ°1kGí”"¥iJbØ©^ŸÚS +hÁ¡sØ ôUƒÐa£Ñ€§ õ0B‘è *¬=E¬+ÄŠ&µièðâ|ÎEwÙŸ»ìÏ]öŸE\ãÅi'÷#Nîçš I@p»ÐEÇqádÇ!¹\èÖŒ|1K·¼, Ì4Ä,ÝòJ„ƒåe1$Ë+f¹!!fÅ+§ê),VàíÈw¡~;qÅë#üõ‡°I"wû&L¸P ÖÎÕ‚µÓ Rd5­Z°öÕ´5H«é°."kïjI--jI-yµ¤ª µ”ˆ±¯ÄYp.:Ú7£Õ“_1Óë%H”Òü †Ád+Œ üM E&>¢0†6K° Lþå1h¸é!¨XMR”^X„R‚žß*ØTS¾¤Pu²ôCaühV,ï,ÁËÂò]ÃCÅêAÀtxBH)k®ÛõÁ`b@/õ¨ŒÍ⩺Ë&-É´¬¦¥±™À³qb…_6áÄ(ïñüŠcª®· ”çcm:Õ+'Ø~Ïù `ZýãHÇe$ƧŸ—®¸"‘F¤Q—@vªí^ºò£ú4âdBL8ŽUÂaJG£Î?‘!¸ž¡¯:B_q‚„cE“hM¢I­ˆ@*X{šn -VbÅE]hqÙ,j#³¨ ¥\ s.zj³ç¢§.û󅢓?­üiåO‘?mäÓ‰>£ôä~~rÿÉýüÅi#\¶u’ØfÀ˜¥K,/‹‡™0fé‹=£—.±.=F›жt‰BlÜ«Jÿ"÷oïÁô§?b$nG"é+à䲎[ju«TõŽºÏ±  bò|¤/‚OŒ+vÀ#Šê?ß0¥ç¹“Ëœqjò|ÉDÕWŠÀ„¡rÅ7D'qBð1!„Ën“¡A ÃäQžõô¶“ -o¬8ù9T× êfæA(Q‘ATNÞ12(|é‘phÂTK FßæÕSVZkªÓXæ#ðLØ$ -µ½âzôîyØ“k’Ȩâ>a¡I{Y <¤ÒW¼²TÏe„²“9+/‚{D6^5¡%üYJ FG€ìÏYÇí†6+Õ×”ó¹É(ïê-6êšÅè+Ê—há$ãÒœ`r>gd ™‡¸Õð‰‰á¹L21­P6õy(¡>Ôp&„’üzÃ&‡êš\°ç;̧ªK^¯Ðœˆˆ' á²‡f[ýŠqu½SXnWœØ—(àdÎ ?ç2Ã7+ü傺&¯‰ÉóÙ™:Õ)¨ÎÅÕ†ÀŒS’…!ÒA"\æY8B‘¡Ã0ú#”¸ð‡É£|[¤ú¨ð’n²QM¬¶P_ñ‚Ή¸ŽÙÆvC…—t¤ÄýqºBp{ˆÑÑ—ÅÉ‚ÐWü¼,¸¬Q¾5\£sÓœ 2{†Î„›l()•Z'a"°ú ¸à$3¡èæˆýÉeÝ¡€ò$ÎǪxŒ8và+±Ê|—‹À,+ FoQ ÊÇhÉÉPFðé53Í¥ŒŽZ ç²ÉF½MFçP&”ÞXµ»T{FeÎè -ÂeNò$^.ª]<}æ€RW¢z. ]„·”ZøûhP“êþà%{ÀBD >E”¾Ü¤,|@ƒò\ŠÕ†*w¸ÀRá¹LˆXaÐû›@ &{ªH@즴¤¡HÝ6"Æ;õL„ð×Ežxx»‚—²pÆJé@×ÂÅé4Õu.›'&Ï×ÚtªobåéÜ{ƒä5'hS¤íÇa¡Åžt& ‚ís–ZÊWn«ÃŒ5Õ+,ó…è|ž‰ ÿÀïgJØ>’•åC;½pï¶-|Tò0©Ï¹Œ'záÑÐßh¶Ç…#8Û{ò¼æDº3”2úÂ0úÁ;B+® #Ÿ‚µSáë|ަ%ÂÇŠmht‘s.ºGa¢`Úà}ì!F?G½í ÷÷Iƒ®ð+¥m—T\]7^Òµ|qL&Ëú0€—²bhôI¥…?Þ¬"ÐðôÑ=“Ô1 â·8 nOc$Š™yÐG;£üê xˆJ‡yH‚×1:h1 À³±LK¶}]o^ÊV JŠKPJýä~.b¼v! £“öÍe°ѧðLœ°‹£·Jñ†§´ªë>g> &õy€M.|z eźø!Ô¹8—q@åç#µ'Çäò…*>6À~YÝpÒ,>§êiüøà°u<—}‹ ŠÕ™#Fº¨Ô±RÝ‚aÀ_œ‹~z¶¸tÅEŒtŠ‚C¬\–è/Á¨Ø‚ Ê›™sÑÙÆâr» -œ ã¢IÀt½ œ ØQ±¤] z\ÿþ‡šsÅsÑ-§—ÁƒËàQ@Y:‡øq¯6\£—¢ÎÚO°‚ 8>Äx;¤;Ti% &kÉ ëèc1HJÉe”ZMHbäãtGx"šrH1Òaês>J}¼¤:Ã5RÐpqÃTñ=a‡&—ÒCž+bÑö9Fg>.³_é…?0$ mÍYð9è¶34b¤c,"cg’ÙÔWD"«Ÿï™3± ¨Þ_aûùeái>Ÿ˜ñ=…)Ø¡S¸lÄxƒ4UK£f.Qpb¬8øJWœËW×o‚Ž84ªHA åE9ùÏ1*¼#dÀßBQ% -‰0BŠÁÅ„p¢…'¾sÑ j©½Ob¤cü ‚âx($]g\½…@sEǨð þ6”'ð\C0€òŸÉ±â“åä¥BÒM6®Ï×’ã¹l]`eá‚ðhÓöÄ@é.ð$! F'D(ˆƒÄEŒÀD®kôñÇŒÁžÀÜ®DQxâ,X;Åð¸ð`ù:f¤ô•\µ¾ƒ¤pÏEG#ò “Ë WCR@‚ˆáwÆMèM(|†76ðllÄ×2ŒÁßÄVè>3}YÄ ‚ª¿õ‰ôm¤ë:gíH¨Í5âIèS“Œ€£¿˜ÎªÚÌ ¤ºÎ…°çãP«ÿ00žÏRNEôøŠòzÓœ˜k9Ò:1"–çëTÊV¿¬PfŒþ:â„Ë -ˆKGÕ„œ'©k/­½tÅQ†bÃØ(žªÛec#0-­Å ˆ‘îû±à²Å"Ó}|a²}§@ElŠEùº.P(£…B‘é2)L}T -O$ÜBv9$‰—}l5‘é¸ìs™Ë–ÏlT=æ] <ÊEÖ\¶‘¸‰Dg26¥XÁÇVºÖè|! -œÌ>)˜Ð)%;ÜbmXà1¤%Z¯ß¼óqM(~̆‡ŠÕîb`²è× yÅ”mà»ÌU¸Fç,SÛóq})<âÄŠŸRdgñ°q) ½HÍâ 0N -•‰°B˜¥ž2p¨ëô«ÞõéD.ë  |é}±Xýç(Èg‡ò*¼ÜT—Xž™RÝ#µÎ-ü2} NP”Âp±Sdä²ðËz9áä€ù~ÓU B™ÏãɈ.«{'sƯwq˜_´Ýð'ÌyÉœ„¹°ŠÀ„Ò'Ô'è0ŒîmHðGilҲʧ‡Å‘… žÌƒ~rY¨R¶züØVÜ‘h-¼#žB“â"*˜(˜N"šÏâbR=æÄ“6t[8—ueo-Ü; bõ¤t4'ÈЀ4(¿E ]×t4(oÿ‹8‘A˜Ì*[Ž ‡³ Ý± !ÂeN[ñ'û Ý ÇÂ#Ûâ¹l–(¨á/š…¤xG…O©ª -~­³—”~0qYøÅS]“‡7g>.‹Ýmæ< °¶¿*. ÷N…w —¥ÞvÑ{Iyé¶»õšÄnÎ$ô“Õ)Ýâ©®É+Fg¾/£òçësPu„ MJ ÈË’:Z W=Ž÷…«¯Â[ìm$šÓ@¢z_\½s™É¦>§USœlp¤ujZãç˘¯“? ¬¸É;yñþ­ð2¨@šˆz\E›áL<§Éó® Ëóe..¨ÛŽÒU¯Oý¼ >…ù,k4Œ—rò¤÷’ʦ¹R}†öû‰kª_:ÕY&‚ G¼žÓb€¥:¶8ÂÖ `áC‚„L) Ÿx\]½—tDIáM¯ÖŒl×1R˜(ØXµ‘Qà.<¬„7KEj{hQO Î NB¦„gY­æ[̧ªo>žh‚VúŠ(+^@°&ÌŠ›R jå;ëÀfr9µS#ZÝrÊ|\¶99ÑDîüywñÄU"8“Œ(rLÒ¿à2SàzÛâEF¡ßŸ'à‚“4Œ®®¨kr€1y¾¦lõˆm ô›B°xŽiâO‘mt#ŠÀ…iCà#.¦í õ·¾Õ\®ÙäOá…e6Ñv»{¾>¦­N(Ág$”®8)µøœ\¶h™±¨ÔóºTÔ¢ !cF†Dd¤“ Jfóé8ÇGF.NJJ0(Ic‘0(ˆÂ‡Q QÉ1d« × -˜}ý‹¿ùMªÊš·¡\Ú{ÞÖšLAmt‰(Œ¦€ø¹ò=¯ksV†%ã 3Ô×¾% ­b{QгˆŸ(™M «–ÕE(öÐþCAøÏê†%;•€Ë8¶åËygŒ÷²6k=éQĈìÙ{•R†ËŠ*æ|=ÒâÊp™$/îÎ×΋°{eÿ‚¬.³¤¢LÙc¾B^¼È€í*õô”rÜÊ?¥}¾š©©ŸÇ¡ùÿ”}å [(hèëKQÕ|쇺â’ä+à ? 3÷òž//DË’ ©¤ÊŸyMHVo¨ å•yõ­:üÜ뇑ƒÖÇ­Å»¾×ö-ëy\ïß¿úùÒ®®Ÿ9–„îu*‰¢œ¼Ìÿšž[› UÖ,. ¶62‡:'Ês…†„^é=\RÍ_.­+NËãxaGi-1çBþ׆º 6¹»X†gzô6—Wª†_CŒRaµ\#^Lklþ èÕò­A°«×ã‹«e¯S½«<¦=J6&Ó2ûxÊ»3ñ Ve5Bï¬^”Þåë@jÝÚ*[µâ¬õþVZ#IÊà¨dem—ÄÀå ©;Šñý(‡SE°6*øº -çòŒ–$šLÑŒž²€ø]ÞŠ<èTtؽ ÞŒÀÍæ`UÐ$TÕGGCæá%«7ôÄ€1 Ž+eÝNsJÒߪ†À¯‰f¾ÎX™Ì‹ƒ.›;;8K¶¦…^“ù9†Ïò Ïþ}U‰pœIw%ô'ƒÂ§ïüi#[sŸåŠø“5§rd¤³8^Àó­r¨·_äåîæCô>˪ ³Ï6ªÊbûó…X5ô0˨ʚ¨ý«,õPTåØÏ°…«üÑtFÏ]?·ª…#÷w’Šã®¤É?BÆ·Gr2'VŠF5.O'4¬¬Ë"°úÌøNò*c`ñ¹ÑxbR‰6DîSC(”$¸h Ã­ -ÉtWþ™±±á^ÓF`Ãóƒ.£Üi­„‡=õP6§ ÑT7©JÐê¿G…–ð¨_¦—§Ñ2"§ˆ/­Ö\Þ?‹Xj5‚ÆC‡èÝ^i‹Ð"N-Ä®Úbsᢄ/ggï„  ìV”^ÖÕRc]Í„t`ÅnS¶Fsë%ýq<(ÐwŸe cï9è…SP±™8[í°J ½:^Zƒ8xEÇ=y¨ÿ…øµp¦•ú(aÌñ_3©vÇÐo>A]üYQÖJyÇ(:´2V1ßV–À#xÂŽ$»rA˹aÐe$FófjE1Û“› ±øc%«6m~ÿPÓâ´ùÔmÞÜ;¤ø¿çöŽÿ8u·ãœàå‰xsÚÀŒ)#Oùù´tZI›u@Io `û4¶P9ÖnäN©všÕ¨r%ßX²[3σY ÕM!»·>Nå—fñÙ¤C²P²!L°”ý Ë¥ûâ+Î%8õb+^Ëä•),© %7›ÅÀâIVÕvåË]%\¥C¡qƒ1î˰öxE»[ïb¤Û§æø¾0‰ÉÓ0ØÐ•&F{Iãî!mÍSà¾{@ƒÿÂãK×‚ÝæP8[‰Éû L“@¹T‡”œ#»$™Vc›I$HÀ°ÚÁØEwªïim¶…[(Ŭº^S‰Žv5RW“¾nž—i]gëóúÎ$P­މiµÅuãօл‡êC 7½Q¶³[´ó|³n³? „%ë‹ú5î˜UŒŠTý2p G²Š•T·“kë•ÆÅ<2Ûf¥™Zü¬{¬c„[Ü> M2»½UùyùÊu)ò2´‰JûQníç -‰¬]ù7yˆÖM’KŽ©*Y@&ÿ)5&tÞ\}ØAfó_;?ƒ×J’rŒ3´“îëºS9v&Ä+™Îô½3Ù •s*ZX»„猊ã‰Î`g®qU' ‚<·sà›LC“½%/ÌjècÓ ~ÔÖdd&„ß7áÈOæñSúŒ%ñòëL›Ñª¡œ V&mʺM#Êè܇r™|Ä:fe"‰PÎðËÁ&\,¼Õ)Bf3Å\b1‚-ºØA -ÎÊP$F”oO¨¡I(«J߯aü誯¶Ý‰RkpßéD»b¨tdÌ•7Om6þÏ´Ð}$;êæ º.ò¯™ÑD -Ë\P eí<›# gÀ¤ÒëL”0²Öp®2À€•^@YVñhMyÏþ ºÚÑ·WB:~Œ€t€Rß8Ù²´Â=Õ)*iEˆœ#ž@Â’A—É9¤®{ÖI©Ãu”.‡ÈÒJ³ËêU=˜Ùg¤¨–Ij?j÷'ÂOH-æ7žò‚¾õ=G˜}BdE¦tZ欵Œ‘žAí‘ÐPWÔÖ÷Ÿ< "ÜÜ ²¶‘@…\¨ÿÊÿol¶f}W==òOÎ>Àð':ˆ¹=ô-ªn,~ܪ 14TÓRáÐ±Ž„ %$M€.¬ë5=Û ×+Õ¾ kÞ9šGúú  Ž„9Òu«NËSœ»®ƒ3«›˜7XSЪ\?óÀ̲­¶)U±l°X­^õ‡~Š¢ Ø•kLµff© ­öjê]à¦iç/ãÕ{wGdd2_}Ñ*¬ufìœÌý¥ -|ñkࣻ-°:ÉÕŽè¿ûèù„]âVPÇ/îÀaAžR[,—GeÞPÈz'qô½…Z>N¬ôÆôVüúþ—g‘îç~”?$ê†yˆ‰ˆ -‘Q}¼å6Ä…[Ê‚ÆRúÌoRÅ£Œ÷-6ƒ™Õ—¸É „%çKÿ€à«gøñT77)²¼­›!âf®t$Öß~, -A;¹•Ñû¥ÆÚäÞ¼qÜmYx/)Ü=æ`³ºÛc¹ ±Li¦Õ¶és~ØÌ±ï|l£‡wWŒú2"}…ÆÁC®ä'ò2¬E¾ã‘¦Eæö‘³D,ŽÚˆ‰ÂgÅAïê•„=HÌòX*;ÚÃêŽ,Ïî‡mûÚŽæŸDšó*[ë#úªí’®4,ÅÛLmaÊøClÅ*³M®)yÉáœôD—8?­y‚Ù×£áåñx³üùÃf³%ùôê±âb<“#€`Ž`Ã\¼ÌgÝœ°-Αkå¸oG\2¬œ}°¸ãHζ¬3!÷ã|²Ê:ÇNŠìó58$óB`N²Ê­(km.öh¯öǰÏu%Û¥‹Å’Ź”ÞnÈ4ªo@Î#ŸÏ‚×å‰HúK/¾þ¶Pk˜ Á½$ò¹Ö2ê<Ü¥÷y¢ÌcÇWf‘èJxë.¡=ÝwsxbÒŸ®’~o|»Ï$Ŷš:¨õЏšŒÚ¶ì¬8ÿ•ÍÀñð'¼ÿ. yb´¿öWÜêRY¢6sÇÒÿ -ظÚ&”™öØhŽh€þ1µwE{£Î—U˾5ÿƒKTø™Œu¥(z0¡ Òdûºê·b'›¹ ódxîKëß&”¯…†Q!~ûÖÔYd»RÔU€Ùz\ ±š¥«ëÝ5× ¾4”VîŒ$f­^~†¯§XùÏDé¢q2áVöÃÆ< sM ž&Õì_Æg>ý]<Ó7ªÎ²oWzxø -(òD´ûs¼“.ÄïNÕœs0¬ç»ø|JGä;Íã:›Rîª==Wþ#€13M‚䂱ºBuû)²öB…_ÏEÍ v6ênÂîž?YιÌÀå‹×$j³Sè¦I"rð‘~<Êk½ðñj°ìèk®ò•Òø - !®)×õÝ ‚Mo›¬_æOä-<R«¿²[! ¶‚âóÁŸ·y­½ß6:ŒÐÞ©êµ›cp¥3Q°¼ÄÿêO~Ô»n^šuz³àsv¦MÃHl²ŠÓ5ë…J¤°ºH,=%¼^¥AÚdžƒZÑùé¦4h£ìm¢Ê>Õ¦úC澦m²ëá)Pœ`“ë¨^ƒþ“;„œn¾ø´ƒ–—g›:Óò×¹.hŒ·¹p²gó·´ÌëëWáSmn‡œvÚmý7ÖcHÀHÈšUÄqê§(«§‰ §˜Ã@ï4IFCRrY0å_­ÀÜÈYÃVSÂEûOæèÁÞ-Æcy•Mgm… ñ»©Ù©Doˆ›Ñ“2Wvác°®‘zuªˆÕ뇄pMu°úaOüÔdØ‹›¡5*/Nܹãõ`Ç’ERLãÈD‘û œdÕÂ2äyµÛv?#~ÕN=-Zœ4eYjžìuù˜€Ö€kmÝ«ÛùéÆ ÍwÑ@lÉâç¹ Hh¢Ô%z’3ï'lˆd±s/—És½¡&-l>þ är7$XÌŒôÔxÚçÐÛì]SmNäî2Ôî-ãbTÃwVMaªiœ‡}î}þC– ùÀJº¨Ú0ám*9ØË”€µ¹E;¨1ÞÆ—VRS%÷ÚT{ž9?ó2áÚ¤u|Í=Öç'rõõ{ƒWO z”¶lÓÖŽ]–!ùyZ‹»Ø+ó« £S*úÞܧª«Gr 4p=ßÒò¨¿%EBxñ™„›˜W‡ë“ÈJdñxôr~oÇh‚áã5øªº÷бH`2[uû°ÇYèœnþ «®×Ê•î$½äy4ñãùä<­˜p ½?†Jé_¬¤¢‘t7•cšGQA 5ÓG¢Mt:V;”퀋‰ÛÿÐa˜[\›ÇÃ’¡Ðq”ÿ¥Õ,DÙu'RQ‹ 4v@ \“628\tdõÞýa/´ÀnVß+NÇCÕ»>uZòy³ð î+"`íZ+$Õ|óðr„{ ‡zÀ½¬³!žVTűŸ@ÙFŽ‘ ˆ§}4»Bãs5¬M`)žøÀdÒ‹S‰0j¸à¶Q¯ÊWŸ¦šPч€<"Ë«—T‡˜"D¿‚Š5xãæP§ÔOèðb\üc‡Õ¨OÞŸƒCaóÌ3ùÅö’]zx_Í$îÃà"‡x_Œ¡ ŸÕ=¼NEÓÿ}.M›ÓÉC²IáÝÿÍBN» ¯ –p0LSG 9¢zSã­«Å_ö×mht¼úìUÙóÒPùeˆ·¦ZªÏ);r²ØÒø-NŒûæ É)]h?Vñ¥ÒÍ›[ð¥Ëdfc™]ý$u8lV4ö¡^<åy¦ê›üXÌx›¿ ÃA´ÂI³Ôy/ˋ懄[@1ð-’ȈûØî³Î°@÷ v»G!U´dZòö-´´˜±.u‡¹ Ĥï(Å%X¦b·!¥)öþ–뇰s‰àÚO À<žœTÜ3<ÝÆ¶{ÉùB-àÚ´”e*"®±~É6¦lí¥ªO•צô"ƒŠvï”;[>øxjç‹ÒxcOÚN´R¶û#°ñÄ’Ww¨CH|ÇÎã v_Ö7÷]ý¦Z}îΟ6ô0'Æ ð*fnJ';uVsrv4Ms lU{@Š=H–˺€ ß bMØtC"ivú\Š@÷”*iA"Å*³)»ûXZÀ‰ö‚âÂÆ'—ÉdÕq. ©šØß º^PÜÔVÔºüBzDØ»bVö{¬>±|F”ãUò!ˆ -x׸~än+£‚â0ÍÃüµY×+h r*] ¨ŠºªâÑ?d£—Èx©£,‹m”ùð -Íd}ä ÄLÇmF“±oýñ°îÝLŽ®ãE/äé±ß‡œšúRèÄq‡d<Þé¡Ff†¥*tã7äD]·9LÃý‡Q¯mÿX¨+ç+nnÂo0ÅÉí \|欔)þhEŠ€BÉeÅ·¹Ì«¬Á‚´¡¼ûŽôú ­JÉë{µ÷¨’}nQ³ípôìbõ”Éz%‚ûD]'~‰aiý&Â+²@Š™Ä3 äeŠÊ¾BøfጠÛ[á™hrлÁ6µ»‰c†œAÅ…öÄjŽ”ú3‹òĆâ…eúótkmËŸùü’±Þ¶ß’beà vþ¾†¦8V`§\« ®‹Á?6D‹Á±:y–2‘&ÎðAáz;\(…În@•TŸŸ÷”ð{ëêt+,/lÈ·­Sz]¼-Ÿ,ï°&k·c르ç+Ñ~¦€BàýP(-ò66 Š èjµ@ÆNÞ» ºN*'æoü“?¬ÿY; ª&ñ¨å-ÿ¤¿Oý…à Ý!µ3¨mF˜—ÕCfýmñ.ìœ z†¥¡Ìˆ¯1ÎÖ®†Ó³³Ÿ1<ù’º$*¡Àzca^6˜rbjz9ëW×çýQ&|ÊÉÏîJ­høšQ|ãSÓcÐ5nnQ‚Ig—¶;ÓâÐYj¢„¶#‡eáþÓ¹ ¾eµ'Ĥ!Áò«Æü«gõžßœ;Ìf·R~æ&þÁ¹Òé¹;ñ/•Ö¿©™… -¦¾KÊôoaœùF®,ðïw6iE™ù3kÙ]&²/ÕM…07¡cÏ×¹©À˜›ÜcHK%¨tʷÿÌÑU†’ÀÐØ3‹Mü ¥þmÎØNâàÕ"§7æ&ê;G"Ëngã_Ú'^b ˆ8ظŠ9bÿï÷½ÿÞ¶ÄÄç"_ôï[/&üKB-ô…>¢ñ©BE‹þeR§ÿ¾ Ï¢Õï{˜ÈíÀ¿7´Fõ¸îvÿ¤þEP†_‚h2'ÃBè_QwJhã£ÿN|‹(©WaUå© ÿO°¼ä×:ˆ˜3V!„ôÏÄØ¶X.ÙG¶c¬Þ²¢xÎä…Ýb\¥¶ú¿ï*Å1ºå—/¤.»•{NQºàÊCýAÃX±?(@!8¹AŽìÁâ¸`9Zµ†õßÛså6 G¨½öœP@¡⤧Œ;Èš–²d&éQþ@ðé8SOŒ?Ýü=α"?ÕŒ‹è^µØIÚ3—æàñê^ICþ\K=¾*ùä‡\ñ38ßUgt~üñ2§½&Un5Õä¼ò° FÊ«EùƪýZxQ!6xó'”dsU8öw;Ø#aâYíKiòÍX‰¶;äªê=]j)o\=Ϧy¨¶?Fk)ið&Õ\çn–+ÀåÕåž7W¹.¢WGÓ -Q®¹H] mŠs— *ðV¨×ÎÿŲˆŠôé»ùã®Â\“*BI€(`‚ËÇv!i`Þ²· -kÛâ "añ¢Å㌠”6ë%JW8©)ŒáàÓǰ£ùd›ª9ÕÛ é¢¤É‘€BºZ2qm_á3•™,þ>{å•·VªÏ!ûR°}¿Ø4ÃÕÍœõZí¿j3 üB½1žCÀ'õ÷B@¢Ï[æ1Ô« -¹N%e>‡zS² Îôt©7)›d5Ô›JNu=1òÙ º½áà‹ý2~A½¶âÙ9ÍŠ :–9£C_½#ØmHdP¢ì.0ÇÉE#ÓN£œfð%\MŒTZ=–Q¸PH€>c,!CVËc{¢ÎMœy¼ˆ\ô´ÓTõ܉ž1‹=у[Ro!ò(Î SqåHpn^¿¸Þ>áà á ŒÇFì -æ,ÝXsSv¢!).œƒsúŒYŒçŠËy±¾ScïÇ>»ÐCó4TdÉìQ;L‹ýý_¼ ðÏtñÿãùÇ‚[§U?ê¬_~.TMX=óåéYHhc½yº¡8×Xu`«ÞÂ^ŠƒèëH¨^Õ» ú,¤º9üD­zagO<ÆäÝ™âP…Woÿ]‰p–q~¯Þ -¼[8”ªwè5«#À^‹Œ„&tˆÌ»zó¾GvÕ;–WUN€¸»dWõ¢ÈÓW/jgB#Uï3¬¡¡_%éW½hfB.ëáÏôµg¸1ÑW¯H»‹Ý4ï²3Œç]¸“a®ù±—tù¯C´þºjc“åkJz¡Šþé 游§æiL½I ?ßÌFm±ððèš%"éŸôćy"¬‰ofÅLëW·L Ín'Ç[»ÂyìÃ×’®e}2Ÿ²ü}¡6CÝÛ.2ØÒ”)ôlp¬}¿w}y@úG¦´Öc™Üõ óäHŠm‡ çç ”1‹M: ½áŽn\Æ90·RÀ}¯¡`>.JGOâËÀñµ”Oo«‰°Æ’1~ #$ie;;Ñú_‰Ë—üûÆÖ}I«›4}¯¸ÝÝþšU†½ZÞÀ¬î–±Ï°Ÿ­ûŠÉ€YðD’LÛ­è¼·_Ûæ”½ÑØðïÁÓEPCŽg#ȯë`íimƬµx·j¬d3Wõñš=ZÖ…öÊ …­7ô›xw#­vñî6Ѓd]Çdó¤wW]CÌKl*ûêDf?~fï®™{ÞË™ïnh¼›Ùö˜ãg† Õ[t.qaøm-ŒwùÆyùdÿuÉ»K_¼èawñwywéw3/5+YG³ëß]0ºlÉyƒ½ww,®Ñ=ë¡â]@U¾»¤Pp¡pÆnœrÈðr›;ncÐÇK!;ƒÆ kãÕ÷áõºƒ¯6a.F.oíϬ‰¡™ÁAÞ+‡ºDˆßÔ[ɘÕÎi ì5üçê9Ú·ô+•ûQ-î5]»XÙóÛhYLò™K¥z´;I´":Øx?Ιߪç&¨›g—nY¦°w2‘YÔø\“FR¹ëÇûô3ZSVt×5¯\n -®Õà§«€éš÷e®kåY¡€m5Åâ8½Á~úai‚ N²ÜA ŒÜ'P¯BÊJ¯‹]ÚpðÆÄt¯K¹¤$o&Ã…i3ëa©Tßb/E.Òòü£ÈšýºEZz¬ÑììåÌfÄ$0¹‡£+µCl%톸–u²œ‡ÝQúy‚­³jÁf'kYÉÙe‚ßhëø·àÂ-»J¶¤4;‹ó<þëë 3÷Õ¨\T¿¿ØíÉ@~kääFM%CWÌÐà¿:ÑãR!ßÌcwˆ®qi])– -*¸Ð1 þ“†uIÛŽÞÁA$ü€Ã¼ªY”2Õ;žæ N0ÇðQmÀù|6‘Ù –áË^¶ø·´4fIË @¹jÙ#h+Îìu¶à×.LGà8`XWE‚çGŒÖ SW’^vØ-4¾'O÷{¹{,«*ð¢Ó­4’ŠpW¼§¬V6^…ý”ЪO†§Œ2”ngôŽÞɘb¥€:W1Ç-¥ŽÅWcp@ÀGWTDO^'Y¦™y¤¼£Û <ãòªOó0¸¼dK‰'¡kú·óHPâ\ÊÇ(x'Ð߬\ÉйLªˆBÊ*bïèÞ ø¥· - sH˜®² H÷÷‘È‹q¦t/öJ;@ª0ãÓÓ f˜„é{<õˆŠÐtÏ@5©_´‘8‰6Qq?afjí+#Ü&§…g®mm¯Œß1(rovŠ&(€ÿÂH•¡u‚¹¨Ciˆ4e „·~¡ Rå7«gJÛ¯ÓFe¤ŠV¯ÄRf" -^y\%+ðJØÁhÚë:à§2ÀßFÂJ ·2Æ ( ˜vïŽÏ‚¢)Šp…%`d³Qp<èEEñÈ«0Xø‚øûŽ›Ìm¾Ä,ã£d°Ø¥ÊÎaÙf1EhÆÖ=Õ—Iö ÏwÈH©Ó“ÄiC>A½T ^ƒ¥H¸‘ ¯¿€V!ÅÑ#¡hËJò{„ š,в}Íyä ?£uaúy?Žø€âÁÒ‘|³áe‡¸,ƒKΙÁßUÝeÂj÷9E;SŒÒF„‡VÏåz4KÊP@ø`‚ 8í¡é @>©-ÖœëÄ D¨ÃÔ¡ªW@aøGbÑ a’ü¥v9^ÙCà \ìfr&S– å„ȯ°5$DˆÁ¹o¥¯ó%³lA¨=ÒÜG¾:ÏÔAg;B"î8³ò{¾ßå¬\ÔšÙgÎÉbƒ(ß%weø«ˆ€ÿZîÒU$‰ÌÎÎí°:n£Å -ë2GLeaq×1pëMç3a°§ãr޲£c -%è9 ÜÓs夆YëèòˆOÉ{$²3ãÖ°Ê^ˆ&@W³iuˆ ¦f]Q,¼‡Í¿n€î‡¨ÓÿÐÅöc²k¹.Zgj¢ë&šk0›YÔþÂåÕÔ¯>âСüïÌpi¯îðKÛpIb&&sW½ò‚½í^ ™53î„€Öþ>¼b1b'¸7ÆÎä$?[´#=0+p–ÚGa¹¾c.ú¬ûKK?ú-#ñ)Èz³`Õ#aíŠ3׊éîÓ8eÒþã®HOY~§fÅWÒ’w‰G=+Úv){šw¹z Óöì ,¼ŽYL ÆòÆž´EÈI*þåý&zi~ ¦ú¸Êèš¼¾¾ŽG–†^ºíÞ)û/rñYÄÒ\¼¸oƒ%_)J¼;VK6þUwÄúB‚ºÿÊIñ6.©ÆÊùg©eà×á„Îc)^÷Òuàžš–eÙØÅ_²Z½=6éu+O`·òQLŽþ;20VÞ³Gûã5¯ÇÊ¬ÎøÕºƒ]R1Úÿk`Ü „UjZœ~0Æ5X68 +É~ ÁÿŸà2eWÉ1‹+n9 @~au;a©½Â3FêÜ—ò_œ"¨³àvX5®…æ&¢FŸ'#j -3&†#ÊÁiô›¾ /[·ä;%~|L¥À.Ƨ>N1£¥rÓŸ{ÍàÚéEÙ˜2A!“¢'pÝœF/K0-)@Ž›¨`–÷À˜¼iZR_‹ÓŽ!Wâf¥'*j3²¥Ya¥·¦BiOSð1僲šM‰Ð.Ý{]Ô„ßÿãBðAùч¥rq¢‹"·ö_˜OAÿ°í>‹Ø¯?è˜zµ̦Xåˆ=”1X›Ï‘ˆß# ±›áÙÄ2sÒ¾¡•œ˜±îÉBgk‹uø…ý‹»8 —HÇTB+{˜ˆó0e;@ë$%Y­úpõŒyŽ/ãöÍ Ö7–ó­Âø’_íW49»u|ˆ½IÛNò×r¤ne³ÑEŘÐÜ»þ˜JGuŒ-ÉšPR| ]ç$r+ï}æ× +Â)².~šŒSzÁ€p¹ŒÞÃíʨEí;íK½h-ÍVÝD®Äâ f£óvJ6C‡y>NqÞ¥À^ÒÔÍ$|Їû‹¹À‘ Xy9p#GÜùl‰ /…ÿu- ¥‘~cB~,Ö5YüæÿÙÓD šÑÆL}¬Ê -Oo<ç²¾f“Q½šqf†B¯¨®ýF… “úÞfjœ ~bÉÏRÀ öwÄVå‹^U†¢8C>­Ë| -¯.¬AY޵&ÕñÏXÐ~ôuum¡ªÃà3]?ò~0wNÓEÜÓâAƒv€ÁýƒgJ‚ÎÞ3Û‹©ü4wI²ß4;BúÂÖ1h3d¹Q¢––»2÷­ 7-.}3ˆãZ/–Ax[ÁFÕ/á^=‘ý Šœ¯é‘®çÙ¾™93[ •Úôßê5ÕãdÄ‘ŽC*W¶ ¡ACpé‰Xâ¼Ï„©Â$²˜U_eê 1Üå~h'ØJááÅì:Gn,Eú"/KkÅxä1粓<†ú0¨ oã‡/«$ü¦¦”¬u —YÐãMjÓ]c,)éxØR§q>ëâ˜ÆÐGëÝÿ‹½áË@!z¯_6³2öXæßa'‘–\êÑð„¼`œ åÞo™ëæºPö¯óòÜÅ(j^ûÑiÈ×Äa“fBÂñÝ<ŸC¡ŒQ4Äc©¦ƒÀoJÀŸ8ÄPkJ.ß]L‡®xvëÌ/ ¨n%Ònš(¥«:^ÎÓòaÞàf 'ž™­Eͼûg²À|=³Œšy™d3Œ‰ ²ûj¤š 1ÁÚÃBÑ«±ŸÛe*˜FIg…ÿÔ•‰éûFe\ÅÛËÝ-o¸ sÉæ½ò‹Îr@½€$ Œz”BkÔÌ<–W\ ̺ìO`b0ÆR ·IU0à+†ó Øè’7`ÆØY4x~¸‡šNv—a0»|´œGS¨I@­ÂXx`)Ú';%ê`i-mkEÈäèü2”w¼F{;õBJ*Ñ´ -¥Ë·# ˜Ô½š¾ªòšø—Òö4M,ûrÐëÏcÈy ËÇ›!õJØM×p­R"ÁK `¸‹Ç¹ùH±ü´·"0î]oL_YÝiI¶)wÒfn¢íÆŠ{=Š º˜´¸7¥¤T“Û6Þ†x|W"P2>w}[bz¹•— NÓ}9ÓÔõá©ã6¸¡-'™Å¶p -ãX±ˆ•NŠä©¯ù€3nQdYç‰*Üyí¼Øtj>'i”<ˇ`1 6?õ³ÎªŽGaÁ…"ªŽ;ÞkX»¸QÑ+#¸ N­ œPÉüfFhr•W ¨zDKG„ð •3*Hv@ƒG6Ù— ÀX‰Ç<­e<ªé_)|=Çýð]'¨Ÿ¡Ã7™„ßiýÝ4’r™T«îŽ·]ˆ”Ëayég˜”ƒWÊÀ«èXn´á0î.Çxåê#…Çñ¡¨ÜƒzÒr¯tÇèþ2À©¢9`”OOÒÇ»gT®JIXÚÇB€ì6”ÀºŒfN°ÅN[2‚˜yÙ³ÄV-J=T°¨þE'G¶1NV|‹Õ’ßUéˆYyŠÐâ”nµ‘gÛC¾ý¼<žÀÔqÍ”hÆÑ½XƒîmBD,›£ˆë÷´‹ ޹ᣥðrßß}¡0zgà¥ÿ» •Z¸úÇøðêKÂéµCðQ<>¢°§QŸ¶pe Ü÷à@0FÍ7ÛzÒës]ö’BO©¡êÄ-“ü.>NtyX¨ æiXú{”?‹<~[Ó ÀLGÛ°ö÷k¯ë¢aZðýÌ_VÜzêNœÑŽôä+d¾ÐŒ -l@`Ó… H‘%®gð´ò"@ƒP5– oÒƒ–„xKÂZP}àíü[]Ìÿ™m‰zÞB g9êWhöQì°ÉÚéB8èP’7/æ;ÜWb˜“¹.?0Š‹gÕvü•=®Ü)ÇFwÓIÔ]£‘{~ó,ÞT èš‚ C=U -Àée…Uç›W[üˆ›‘`öúÛ˜ŽÀ±Rz2“¬K ”×.ÙZ¿¤xÐ0ŠShP©ªþÏÍ0 -–¶êß?T †²ä²r$e'I8ŠLëT>’&k½CûçÊ—ÖEÎdË „b¿Gœ®ÕCØR‹aù4áÃKaʪ›â~ø‚R;Ø -/OúÕþ;Nv&Ía‡êÇ!¦Osù|¬ ¤ç—£\ì^`¼†R'k3óùÌ·Q·óÅ›e,¡Ïë¯ÆPÑZÉýåýªŽÎ¸°é,øžð·›m&z…d&&á¥7Ù½ËÏX„䈽gQlä¼j˜óv–„ -…R߂ュŠMºg#ŠÃçfîJ²‚kð*™ÙšýEƒ`×KP [%±!«,V!´l€—+¼¢yŠšr3pp|eSëO_ÂI¿#$è݈¡üªYñÄÚÐj¬:á@ÜŠc«´u†óxûR暈|;@ì˜÷€È™öÂ]LBml,_¼6®Ìxz”²74s¥ËƒÆ€«"(e68|'d™€À‘¸ØDbÜ ÔÚg½®·9®Ñ+ ìÙís¢Æd1¤ÞŒ\B¬I´«¯s8-²–"?­}³þk™Kƒ%7=¡}ÊÍ —;ákʨ©GáŒÔ=² ¶fÇ‚„n=]ûrcµ=]•X* {\?Ô¢n_u\<‹)ßÖCÀ´+QÜé*oãµÑ÷ϦJ*ÎXÎŒ÷ŒÞC"çÅ‘áàò™x $^Á·Áú?ùŠÖÇR€i] æÖº3½p Œh5b*^(G¤Ü!z\ÔXá*—f)X[zŽ|ûe¥Ê_1hÊâ¥Ô¬ Ljj!–Ä.ݲ5ç¨Ç‚ä¬@h"¦‚¿¡ª¥ŸR¢H¹Oˆ9ù…s’‘•9X«(gB°Äh£AµTx2 þó¿a>ŒIE -èz_Î/-ÞÑÄ 4+îp`O­xBØÓótW²Ç×gÞÆZ5Cœ"ÉóQµïÿ³´]ôMh }èqù%Ö†È'8‹‡òj”Ÿj¾x£Ô fr8>Šù¿™ÍÖÉê°g¼`¢°@—NyÍÿØ÷Ä#î¼Ëí4öú*øH2s[䢢Dʘ!" Aá™Âù€S©¯¶ð¾¸rg‰mWþ$AW|²K^ÃõÞÉOÙ˜Q±R…¦Ë?0Yå¼kN—$ÎvN _¡ºÑaEµ"{ ¶Ò®yr»*<„wAŢѼÃaÞÎ:Mïˆ -99¾ÅCJòò2ßPœ”cZ@ËÊ*¿Â‚, } ì~ÃïÙxîñ[µ1íd_ï¢`D€U›Òç6Ïw‚˜Žü2– ÏKo‹á4^껳nü.{¼ðõ“wæYãcï‘F1êPÆåÑè1‹Ø=°ñ9–N9›m¬D¦tòbD£“Ç„]X ×0@­Yã™~TÛV¬&³Ki'ÏP¨œº?ýNÕ} ›É‰Å¤Vî<Ž˜gœá!Ö$]-I«Þ&R+‹hqQ_sÀbÓúx!趸µ/gÚOŒó؈DÇ t0ƒ\52¨·E›« óõ„ ïµ#©4vE -%>E>ÉoOZÌ1\ÀGlÆ‚®9‡mœ÷^êóJÔ±'u#ìöt^Vo„þ`Šy”Ñ´p1uA¶×¤ªÌ².CÊÍ5R†ÁCÁò™dMBâlæ›ÄvÙÄe;Á3 6DÕ¯Þ9•1©‡ã3:K¢\£“z“9a)•¢¢ƒ“›ÂÞSHø¤v«èÞÉL! í&æWè -Òs¹7Û}ñʶŽYûÏy*¡&¤ÊR´M§„s¦Ù‡pÔ<¢–'¬ÒuäÍ|b)¢ -Òx†B(J¢‰Âq)1t$Á³q°¯h²Ã¨HáÆ>¢4$Ì=ÎP‡dW¦Â4@_€tÛN- Áø?bsÙ8üC¢‘c.4¿«•˺ÔAR(¯=¬+çK¬³€"24­—ÆÇâ!.`© -oíWœvÇÕÍVRòHLìfZz·ó7¢>yΘ0k)ú¢Ð ÷™@¦SÙì“î–¬`‘î¡”*o}§Â+õ€¼$'i=w¬¹"ÙNHn_¸èäåGäkºaŸÖ,¸w -‡WZGµ¥†^ÐÇÌÄ­%r"·%¨Ù1#YÑ£s7'‹ÓŸBÍ"öˆò¾ -@PÜ»³tjþ«-êr•“rdN%W,®õϬ²MÌn#à”€Ì R¿Ûý§¯º8ØxX3+ñ‡ZHn(uæ{8Y N–D4½Óää‹ÇÛoû9±é¿XÊ=¾SÒròip;á³b ž 8abÄUw‰hŒœšX©A·¢(XF½nu´/Ë!ž€*yß±…°jiI2[Æ]l h•íQ'¾XC±3¸«”ÀþýAüŸèc?yOв æ^—]#Œ„ð›['jý3­,Ó³Ñ=3)\„C½u†µž™­„´yœ¦©\ÄH.|¸&-Bn1èÐ8ª³&å¹:‚¥{À—1[ƒiú¨‹®{¼›Ghé7Ó<–,©YúŽ4WCùú”l(м˜©ú/ìÿôºÞvø:!ë›Qj¬ äy²0}ÃßDÓZYZ… £<ßÂS€Å<û†ú·S -c¯Ñí|¥k ]<Èe ·²qïbV®¤Î[§€ÓÔ =·W9i>,p'"<ЇX¨XÅÁ„z/ÛhÍ!mAA´“Ã5œËh£=ÛúWœcß«khi.PW -ÐUI©÷¤"ÑÎãp„x}†/“±M ™ß&Iy$S'6‡‰Vš¸(cEåôÏ)Gh«ñ9!¬ X‰iˆb‚ #‰{­zÞ£z¶š8 {W»¦Ž¹Z¡óðæ•$Â\œäT§¸ØÀëÙÙCÃÞƒºªC0[ ¨n¶VÈ{:ƒxv,ÑÃþeµn‘T›‹STSã&b™/{E†j¬ËÒDDA òa íQAŒ\ˆHsçÿ³æçÇëM“òºÐƒ)…7‚óƒSæ!m ù’Þ7™E—ZG1 —ˆÁÞKIŒr|© “û\²µöB=×SA~¢ÿÞ ôq9gø'xiZ=’•î‹ÑàæÃ"AðVþ!Tæ¹ÝTÃE™ƒFðG‰%DC £]gÕ õC×ÉÝ^XãK´÷ÙØâ™d!âi¢ -TPoĆ&”"¡æŸ¸[Ð}ñ.w2znÿ°UX¶¨S'Ži”;Æà’~±$µ)ªöO 6kŽí?¿8f<,·v×o¶õZ‚ÉD:s¤uSðíÑ[Yy¥àïѰóh¬³ý]uú 3îÿ!7f¶{6±C‹þ¦±u;¶…Ĩ&RDhíÉnïØóVÔXÈ,<1¼Ê¿x6U¬Ue‚3nh9Ñ[Y ýAPSñxœ}¼óaæõ.c¦ûÜ9˜3LZÐóÇH ÎïÑúŸ–+’SeH5§Ë+:3ž>ÏÏÙ›Ç aìÑI2ò°%·…eþš…Mws+c¾úlú'{ÿ¯‚ÂåÏÏþ øL*>(Û 8®…>w˜È€‡€. Ácg ×,bMJÆdJÆç›ñÛˆ=G•3ŸqNï'ýsú³¯TSï>OÁ/F…>Pþ×ð;:_}ÌmØt2ÿkÐ2=Ÿ{†¹Ôå™d$ìaCBA?V_×ýWâ$ûÑ\ç˜"c¶ã‹ 7•S„‚–Ò0¦¡r}h· üNjUNN úÃðs8×¹ñ¯6vŠ5%[x1ä’µij.LôIm5ž^ScSõT+c·ÿb'wçži¶øúÌçrޱ£«â‡ß‘høÄï-N)Á{à#ü±pŸ Èu/{ÅÆ<Ç•PÒt–mô} … Fž¢_V«ú!º"£4󦦤Sî†ÏG)Zá$?Å”Ý׉ÑÖý5¼¼ìÄuÕLŠíŽI¥¬ 2íÑÐg“û™ärÃ[ÙlR©¶è¦Ž–`³É|­…MÐÏ $g—ÕoŽ„t]¨RÍzGÕ1Önò´v·¯Ž`CE ³À›bÚÍeÇ<•@{tðÔ[DVΜ «Ç€Üîàqô>1益d¬õY{·#DxdEÌnÚrVZ6SM )šÞù.\pkvxº–¾-™Í˜¯‚ÆD¨/ ‡"GP9§–›åÓ¿o ºµ¶‡µŸ[7n9têëlŒÕ!VJ€¯óu ´â¿ps¦GÄ~BwþMþ„#ñQÕàñqX`á'é±j$æÍi§ñ8eÔ©{#Gïj‹O;˜d+¶‘‡å;à÷×Î묙»ñ¦Rð§©+ENòºîŽês2Ó‹B}¡K¬hS•\µH¾WzõT¾úÊ|"*‡¬×¤ûWר½7‰¶]Š·¥ª@µ¹VãqûJ tåÌú¥Í@7U?Ìì[”ýÚÓãDvöiµû¯;¨jthþxU<Ó±h=žr‘TÙäƒ,c%zÐü_…aE"gþm¯ÆÄ3kJOs¥íõÊ¡u-D¨QƧJjXýUŒäPõB¦‚æG’‘mYg/S9‘@' 8÷'0 ë…´ Ë&ãc -@Bи2<"–"1 -p(Å¡8”AÍÌ´Á1Z2@@RÀ$“ b -œ@(&5B 04 P@@ %y-`x´‹A4†d‚—…KLÆgCŠð`L -b‚/X¹&D>šÀ¡X8”A‹CÇ$A$FƳ9Ž€ -äPŸ ¢o—=XA -§sX -ÓMl8h|F\@ -@ Z² áP*¤eäs(ÏÆ33£à —µù˜HÏæ@@GgãðáP  -H.Žä$„åÒ0È8ÝË€Œ+£DÅãÓqòVˆNZ@›+fe€¦æ$Ä`Y®˜"ŒISÌÆ¢„/- ™Ń)gL €‚âA -$Òáɀb >+(`€¼ &(ãaÆã3S`cB9Ô†ƒ Áà„œF Ãé^„’&d¡ñÉør‰8È1®ÂsÂò0™f&`R^@ <Õ§ºe§pq¨6qaÅ¡@jŠtáR†äPŸAÑ*a't8äP œò¥pÔJ@©(àÁ ‹ ÈÀ J&˜)uPâ…ÆÇàô)aMh MW ˆC)ã*Qƒypà@É4 h8ŽÃá@»^:ž‹pãñá@!+XáP,"%ú©ø”l IèÕá €À¡6%ÓI~°t8nÁz¼èËÅ¡*Z‰E -@€ÔÁ‰¬ñ)@aÑ.ŒßH¤çO@Í©@Ž“ ^ŠÇGă+ˆáâ¡crÈkÃp±LØ`,Ðl h d‰ÅoR€!Ñá9H9…ð9ÅÄ€:rÁÊ•¡€"ãš@‚„¢ÏÆÎ¨ Ä (¡£áåšp±2dEd`d²ÈŽÐ…FÉÆq¨—„ÒÊõ²a`ãd6"H(3êHrhÇh”¦çp¨ÎÐ@Ɇ•’JFx€P j \ -8#!'Yßq8aAŒDCmB(4>× -2Ét4ÛÑOBÐÖ @ƃ"—nb6:j°Ñ¹ ˜ðh|D/ÙrfD¨$!(çŒå‡¦ÀšåR‰<]‡ Í„V¸<œäËŒ - =‚äâ(z³0&- „§Pb€B LÉ¡Zbl܆{´ËBÄ/¬…µAÉåT`r q¦vÑÚzÚdxC]ÄàÂB‚R(9D°Tˆ™h9™™ -Óq(ŽÏÁ¶Jd0€ÔrqlGEND0ÐB„G iT¢å\BzºL¹IØ\º!QñøX -×ÄKÑ5¨©).åÄè‰ä†‚ é..b#ƒ*€GÂé^: ¹y¹äæt ÄE!'&@+×ĈƒÆgdQB -m\.—ÁS(­ÆPŒÇÅaبˆ "‡zh‰K_RT<A€ÔA -ŒOmP0Ä‘`AȇR‰NR€• -=Б ”„9PtØHÀ¸tàP3Í„€„3 ¥•k@„J¤FŽr¨…ÆgÓCB‰÷%»X†P\äÈ `HQÈ–›m!™p€dŒ(4>!—ËåqQšÐ®ñ0Á‡Z‰Š=PÇèàP+áÅÔãÑ®¦’“”©á¼&pTcà -^ šC’qÈH¼\$¢X"E^D@"  -äP§)¦£H˜¡Lˆ ^-5Ä¥7—ã>¤‰'ãD,"NkÞ@#$,8LÇ¡ö“0ŽaC98B[C‚åRÜyÐЋ‡ÄaC]¸pX-yA¸¨c³âA5#`€DŸ ¥ˆ¥€Ê¡4:J8z J™‹i  @ÃT„Z—ˆ‹ËÊ…áp ]1¤F4˜ŒÏµÐJˆár’%q›µà¸8K€–‹ëÊ;H˜¼çß2/û×s™9)”œ§yÚzÎsžm.qIh)fXfjF 'JáØUÎËzìÔªx1û¶!²K€ÈmÍO£/™Nl®¬Oùµ+Zk=“ò1EŽïÝþ­™_B\:*ÝŸN¦S‰ß:•RÞr̵RJûV§¯÷Š[·®:kî¹Ú1c6r¶c‡¹ªÍ÷þ˜5îK»wÏÛa¨Iîx£+¡Õ¤~«TúµF¤”·Ú(%…Ô˜Û†š‘³ϻ٦†VóúÛ_s²M0©ŒJ£šQh€‘GMLªM‹‹uM»'-í¯Õß#Ë›®u|Íj¥dRÓRÂUSO•˜©ùøTJyª˜R^,L.#O“òb2ÍL|ª£*šŠµL*£Ò‹H¤¹Ü-›÷'6úz²c®Rµ5nçÖT¶¿#|¾ÌÜ^ÑßÕû·µánõîm““é“D|[mÌÞß’%³Kõî{݈ÙËr·úÌfÆkßÛ©ª¦RFhf`jF3¦ ÈúîµÖle¹Š©iºû×ÝÚsn— -u¯õ¿!Kæ -û7óïŸý!*žã®3M¥\úÚS¿ûQÙaZ5'“‘º¿{ãË[v˜”K¥¾Éí˜è͹jˆí›7çífúTF…}MóÿÿS™b5@µÊø¹ª )š«Ê”É3Zù8¡ù˜Iù "UõÛ–7Ï»DþÖœeõ«êÚÇͶ³ò|EÔ–w~,[Å×½n;†©'s^¶å†¬R¢êq¿³mÃ~Æ©Uf[ï½N¶ˆ”KŨŒ·»ûÎ>·úWMÍóÇí[v ¯“_·2Ó¯¨ÜÏÕÛS›/YÒ\•RŒTG]ÕQ'êswùQ™a:`€>†˜šš•Ð0м(p šHа¬8¡ù¨™¹N®b¨B 53×ç„CI\R/¢JU@“@‘DÕUÇÕUÌYybõ gL‰R^$8*åEâ‘r…‰C}4ØÁêh, x¸¸ˆûX8$` È8ÔxçSÁ 2™7P Ä…Œ@d‰§¢ÃÀËŸcLsÀ!€…A§e†CÁp^2>î8Ô/Ì(JCƒ6ÉtìRó9ɘ˜PðN(‚$e¢Cá=kÂUÉ8P4a‡N‚‰CçLØ¡s -ÊLØáÀ ä!Px‡â|(È6À ZBjA¢äø˜(`‡N» ‘«"ìÐAvè(˜:'òa‡Î'¢#”"ìÐB¹ `‡Îq¤`1Xðq©¸ -“G Cu(dÃD…BBD|l,0B¢S‰ãZPa - <=(dvèXk)¤ÁÌI…‚t”Cu°CÇ-Jøé`‡°J“áah¥vè°Ž -I'¬ŠT KY)dA‚U"b<È¡>¦†À*uDĨy*`¬ xCÝg‚E0Fhœ€3$”“—  %% + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WQ¯Ý¶ ~÷¯Ðcî€ãHE‰¯ÉŠ‚¡ëö0 {¸k¹ëÚÈßßGÉ–íÖç\ÀA€œK[¤ø‘üHúí_ß»·Þ{÷îÏïÝðË਎êÿÜ¥‰¿þ0üÝýoíßß¾ÂH^ܧqL1»nxûí÷Þýø¿áê!ü?²vL°¤Ìîù¥ê¿ !ı$v—àã¨1ºÏCð2fQ{TÆB.‡Q²4RNŽFÎ1¥1À«çáûá;8Ý/Öð –«á–‹K vJ õݸ{\j6 +~ŒAó®`RÚSòˆŽÂ£”h YuQÂkŸ€¥ÜVb¦1 +ñV á +T¤Ì¹ª°P8¨B‰L'ŒE¢¬å1I耾Þ]§äþúcOåÛkø—Ù¹~ࣽÄO@&YÓè½Oîú2¼‰Oן†o®Ôέ´Ebx,¦çm&‘Ëæ…ì¦5>Ê”®[e¡;e¡p–Pš’¯k Æô ˈ€IFø +y¬¾ ØKû@Tå^>6@èD 8Ÿƒre·\p %$¼á$eWéVK0¥@™kÈ8+ YW²Ê r¤òc F©JYÂ!º˜Rôh©¦„ô•®°¤‡“ßÒ%Ÿ—‰FbÔÊ#ø{zö ì1ý!…N’¼…Sέ¶š™[5°Çö˜˜‚oŠ/ñp°Ìlˆ“¾Bf+gÆmJ7 Üé–• 97+1ƒÀ+Ùzu» ôšË®ÒíJœ R0Èò±˜M:©Œ …y”ÌD¨ièÿ>7·t + úb:>á÷0ÿ9Àhi#æD²€¸pˆÞ³²âîÌO©, Nl`=72¾GøÞ%(c_U¡ã„gÛ{¤ IÿRñPÝònÛGqëÈÅŒ"èy(r(`R@A%ô®Âr„ç%âÓ"ï*Ýây‰<æ"Z•J‰ñHÀº’-¬òHÁ¦ÄXnM _E‡XbJžÕêÅiÎW¨ž%mgc8q§TVp–ÃßÓ³å.á ¾&·PNÜ*{VnåöXC±ëy,íIF +믜WhoiÙ ÇIÓ³òX)G›Yù”;Ü·´l?ZNlc–¤¯3›DõXÀÎ"º¯t¯¤¨m¥ÈRäh¨JXŽ4…p”ʤÈÿÞ=[¾ˆìN¢’|f(¦‡€÷´ì€x•ø + H<¹À,·Ò¾Ï{ Ï‘ê ôšóC¼Ç \ œ¸÷œ”Wx¿râ§ŠÚ£º‚Yuk8ÂzBÙ©ú}¥[¬7%/uMò’Ë‘˜u%0˜’GŠˆ8d6•xhâ«uT, KNA3>Ä…ñt‌ÁytOɈ»Œ§D ˆ3–) ·²½GvåÑWÚ‚ QEsÝ2ÑWû{oÏÄc5‹ÂcºãÏ-ÆÑλ +_‚C¾D ÖݰÆ݅ЀwƒØIÜ…QâÛa®r.†çÓ€“Ñ£½ Þ¾ ØKøÀ18í|±¨ÃZv$!3¶’"V¦Q¬—4R©Šf¡ÊR’ƒ$œMÒ&YO„T A7Žø™Ž~6Ÿ,Ax²;K˜yتžÍyEΚGŸg±9A¢“&,(Í[|%†'ØeRÿ òöÃÅDD +ßlkv»l&Ìòê%M?#.—‚Žû8ùla³)‡ä_,1@BðÝÐÎ"êˆíô,'ûàt³2åZ‡³q|Ž2ÕãÓå_ æìäD­˜&ç'ÙœŸàõúw(¸Ÿålå¨ïîüæ»<è&€“þ ÿw ° æ>à´¦Dìû§?1*Záp}Ô1·\U„üÖú²]È¢G¨öX} .+¹;9?8 ¯ª›huÂD4ÕMuÁ|°“‹¶²†°Št“[™èöÀo™œ ü•}Ÿ%p¾ŸG ¼¸7‹³û³<Á›”gôÍtÎt±õ¾Zà“_=¸ÛðWëÌä²l©]b °‚lRÒÐë±½3Ð b¬¯k¾¦ 5¾×‚‹PâÜŠQÐÌÄlæF âzš[õK²Ì¢ÚÐ\¦~‡oÆÖ×*ÛNªÏHZŒ¤(ÆÒ*)§ED@Wãól¤nÖFzRÐn©Œ§ëå¡öVÌÌä2êây•ž—ÓÞ"i±†7/µ6%mŒÕÛÙnGD‰+çf¹{??A@9•JÎ@¹ú%µÌmþå¹Ó¶rNQjCÖT£Äj==k™+5ØÛ°FÔ ªF»…öÎ*Töµç<ÛH鵄î‘*“ÙV„ùAO1Äb1€l›ŽÅ$qžJ"*W‰Ï2qq\É3úÜT{‚h ”cZ]!5E­V'ð¤X£šÀ[x).|hb«éœ—סµµ®ÐŠnì[i墥³{8ËÂü`ÆhÂ*óK”Bï­-ŽÍÅ9Ê›,<ÓHAUav¾@¬Éˆä0ÃŒ{iuSW)cÝ‚†©  }çdïtr-㛓/WÇ|¦zC‰¥9šñA×ZÎFŠ6W31[;× #ö'\2éMp¥o,ZGü§á㟶«£[QR›ú«µÿ‚3bݹºÆŽêKÝeV§ÁV\ kZþ¨ÒW®óÚ†®àçúì¦?¾¸Õ&—ç¥úo®??]ðþÍŸþyý ¼2 ; 5vÉ]ÿcïž.ìÞüüÛoO‚Ÿ—é° mºsbÇ‹­ÙííØ'¿ùðÞ ÿÿÿÿÿÇjÁZ endstream endobj 23 0 obj <>stream +8;Z]!>7L`Y#Y"4]2s>G=Zs#a]-Rk-jn7)Y?a5[7T!b%o.Q+KWBp"chOZ3;DV!=6-p +j7]dtXX'!(-rYh`ZtJii[I11.#pX@WJo#3J:t!t.CS-c#5Y endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/9/24 12:41 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -372 858.900024414063 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -372 858.900024414063 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX$ºþLĹ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØA:ÓˆÁHƒP×uí a]wK)© 16¦$ à å ð-¿ªŠJžSŸè¸êY€»>_sÍšX•Ó{åü>Ú•=•Só]%»2ŒÑ<œUëýž5ŸöiU=§ÞŒ¹ëSõÞnÍ‚3 íaõªœòÛvw $G­—â¨V@ ’ì*Ôý(Š¿Q¾.Ùø}c8úF +ÕË–=áa{îÌŸøíÔnf€Ó6¬vNÎzã×sÚ•Ó}듞ë”4`FÛ'aâ2†+{À€ð"ÈÁ,ËRl àG0ä¥õ¦êØìIÁq`ewu¿žÚðʳ¬z]©9~Í·Kù‡]»L¶|HpØrüÀ½]õé—k;<î +®ïÛ­U1ÜJ=ìûõ¼1Ê…kW@woWåÞïË­ëó»KW€üªf¹ñªf9~ PxU³“}­[‹Ì(=ש© yî=ÀûáTNò‹ó;µÊ™ÐL«ÆxN©\ZœiÛe»/Ž]K»c³+5Ë®7FiïíÆ³ «´Ç^°­Õ/íÒZik*¸fiRò[»´-»õ­••Ó“ô!ŠUk]«çxNiªÚQwíjeå¼W/†,ɰł_Š<®gŠÍiØí×5×·ÍëÛÇ1¶rº>MÁ½î‰>ᱫÁ·ìŠ€=qü¦÷ï­½2ß±yõbn—~Í)«rT/êµÞpÊ¥7¶ýÖôkNGqôÿáÕ\sZ)¸%Z½˜XŒ†? Å—ðñ½‡a÷œs2¼mXeɰ/"ÁÛË ÕÛùa(Þ«Ó½èc–|¾)—½W/F~ߺG2_{µÚÐ1zæh/˱dÃ}8Ф]Ãl)–=,_ó}Ï(Hªä9õzxUr¥~ã˜æK’÷q¤çÏêÅp°µä¿ìä ßnçµQ1]¿÷ûrk—S9]· ×tý +˜µW@ýÚoM¿÷k¿iÿ¤úò’)Ù]”& Qs[žaÖ[k¼1ýšS Ç©•Æû<£ŸÖY2ܲaÙ Õ󳝸vã×Äe· Ïœ°ñÞîípÃ1Œ‚m8t·XpǤ‚ëö–+ŸÆ¼û~mû|c”{×3=ÀúÝ)XMh;Fß± ÿ€ë÷¶ÝŽÖ²ßŒVV΄»oçÓxØM\ÆÐïËÕh÷k¿5G«_Më½r&4– ×·çUÍ)X}š¢@{Å`Õ›)%Ô.ìÐ>—¹·«–*y5ô· cPN–âdF(Î{ßoìrTòj*+'W?´Õ«~Zöø2ÕHëZÏ:#g*”´ŒÆ»&€ÖµkgF×xvŽÄГ½óÐ!Øyéq ì,»ç£X‚œô½{ÿ,{9ŠeÉGv?–àèñ¬£ñÌm4þÆô ö|C{_®æÓwsW¯ZJdM`–/_f¿ñ€Ûs×gÉy×@¯q­'2E"SÉ«§)¾V*6´OSÔ¯ªÞhõËre7£©äUE3Õ:ÏlÔÄeÔÄi¡&j]óZÿdÉCpô")†Ýwk 9r±ì¼C?þîq- Ç})~°ü£Ç5‘{ÅÒ‡\$¿èq­ä= Kä ‚£èqmô¿'KÑãY)«Q§™$˲¬$ÙÎ}÷ÞgéW³Œ$K2ãhFªßƒ>ô¢=éKzÔ§^õ«g=ÿýûÿ?øÃ/þñ“¿üçG–~õ¯ýìç`=øA AA,ÁDÁTÁdAöЇ?Ã0Ã1$Ã2ÌxÈ‚+¨‚)ˆ‚'X‚#(‚!‚ì Ù¿~õ§ýå'ÿøÅ~ðÿï?ÿ¬_½êQúÒ—~ô¢=è³ï»ïž{¶«=íiGûÙË^v²]ì`ÿýwß{çå+O9ÊO^ò’“|ä"yÈAþ¹çg¬”©PÍk\Ë,Mõ¾\Y%4Ç-¿°Ê­[Õz£z4ÅK»-¦’c3ýšÓ÷†c­~U2¼jÝ.gt¿²snv1µ+»ñ+ÆØ*ùQ­e£`L+u»xêù†U«¦ €ïÔKÛõ›‚á8vÓ»>ïúlÝ.GÞÈœ—¥Zµxž?ñ<´–«Q­~ïÛM½·=ÀóÆ)ø®]Έé9~È뫞W¯šÐÚ[»1« a×Kh +– §Üú£%4ÅzPMõ®ç;õ†Ù¼’+tl®[fÅbNFk2– ß2\säYc +ùgŠgÔk€ÇôeoLÓîÇA¯½,ùÀ`÷š{ǯú‘eטkšv¿±ìZì¦`•[aÙ3Íe½¯ÍW’]‹ÝšõÞ2üÁôw§bª¹¦Ý×+f«¬Š]ø®]ú‹½¾Nö¬~o÷­YŸm¿ñ€–á• âØµØÁÞ{–¿?v­‹½”½ô€J^>Zÿ¾’Is°dX5§äõ¿¯˜ý1YÂõ“Ésí¦>×+Ϭù»cnüŠÕ.K޵¾,åÞ³ê{¼5ê“ç:å¾¾¶í7¾gÚl6•Ê—U*ëz®ç—©d׎ͭ»~é×vQò›RÍpýÒ_ŒRÅ«^}Ù\ÇV·^‘¼*X¬ŠQª×ûµlW%¿_öÎߺ9ÏïM¹´ýÙ°MÃqüÞ«7¾ç×ÇpŒõe2\ÏñêžåØMÁ¬9~¹qj€÷“˜Uò ßöƒÍßë¾2ÇR¶ûRÕó÷ʰ ¿Þ•ªžc¯O~ÄdøeÇb:kÙnlo¾õüV¯êžeïsÕîëU¹õýÝ-\ çÔ§zë·þ2;F©d÷U¿¬¯E»5Ë­]ú»ß8Ž¡>y†ïÔk,Žë÷¶¿[~SßûÖ¬WõÕ/‹åªb_‹Å¾yžçùËd†á÷}¿ìM¹î7À¯^±T §ÜÏu?Зm¾W÷æ{ïXÊ]?7ŽaÕ›J?– ×çgÃö[¿°êüHßµW€[³>±ÔÞ˜%Ãö{Ï1ØWþ¬”ѱûõ°æx®9—Ù·ü¾^sª’WŽË<óLjòò{ßnÌz°“aDzô%÷eïœôHÍ*¸nÉ_†dŽeYr¯—½¡•!ØpÈ0 ®7/Ëåp£/ +U¯I%¯¼·+×±“¡&’]ëa©‰}ìZÙ;èK’äâ÷¸èIMäž=(’¾ô@Ò“×<Gäÿ÷‘ËÑã’šCs¼phþÈ/½1ñ^9¹ Ô@ï¸Y&¦lºå÷–çÔ$ì5Ý®ß.æÓw,ží·s¿¬Úý¸1{×§)Œ_Õœ)5Ç»)Ï˪]Œ ôšÃ¾aT¿q¬Ã9zîú|åY£9xaoŠaIj¿>rï;çaé}P+Eÿñ!ç¥÷yáè•à×Bóð½Ý˜~½Ó¯œ¿ä"8‚¶«v_ô\+ +ä†Yo§”Ð8Úv8.ãšÃfÉð}¿ž—å¾*¦±rr™æxY® 2ýÊÉeþwÍQ¿¨WL£Šájò½rvív_õ̾1ÌšÂÊ©zUï«©Ý8Æz;¹æ¨\¸Ñö-Ϭ+寍&ÀÇ/Isoùe¹Mv¤šÃ®çxNmûMÍ5ç–ßW,5«—}‘ƒ=ç¼ôÊRÔHì$–½sÒ+ËRë )~°ä<Á’¢ù9çœ{öÛ)—q>jœó®qkŽf”%Ã*96£—}ò‹]s¼€mÛ »)ÇeŽ0€:|×@ÿ•_¨9ÞÛUåVÀ®7нÁÁŽž ÍñÆ7üá¸L‘Ðò\¿/7Õ`/&¡9ê™ =Òky†íú ™ÈÊÉq÷@¯):‰z¾Ýú¶cq\Ñ4G=ßî[§—iÜû5«Î†‡³q( 벟u¹ŒfVƒõg$‚µo Ò_ ‚uõóãYÁ:g~®S•‹,b&Už‹ž"Ö{vœŽÅ‰óô‘E¬n< Z×ÐECvH ›7…(´\4´*¦“ª9‹ç²—& ů#—ù£`y¨ +¢ ‚ +í§Y‚M@*PtFCfÁ»ã«G¤RêPH)TèL4™Q8Q¸Š%±œ¶›¨±ÃÖ ?žn¢z,oAY>4í.õ1E êƒÞŸé ±ê¸*­FJ74½Û¡õÂ;V}~.‹¤®²(/€sæ+„¤Ã/+( ‡µV³ËØþþÏKW6ê¡>å 0×õ)‰äuµiÄÉa±â ÇÊ'+žD>iœÂû Á‰D"‘á%¸„¾âŸÐW¡¯8Œ@ÄPœºJ°òÏk¨k§¬=E¬hR+¡I4©•„éBB°vÅG=ÎEO?Ðýr.3A D𜋞z—ýòî²]ö˹lµÐ"ã>£Nö´_ö´²§•øä²ïcæ‰ÂSnr_nr_Þ0¹/ÿ/Nëµ¥$¡à²‘Mþ…¦I­¤»|4ù›€cÒqÙEÀq¡/ÇäÂïÏä[^©•tXiø?f¹ì—[^K–¸ô —YžÃð —>±Xú䎄·š˜p@$B_qšÔ¶ìv\‚s«\–pLºÊaML:.«TÖĤm$]åV“NÀvœ(4h¡ŠÊ¸Ì–¼8mÆMî +ð…Â’Ü\¶n­¤£4H#ÔsY]“®Ì¯.BųºU!b& +ç€Z³Ð*]’ŽË2„/l¨ÂÇH—oU,‚#éÚAxšte ”a)Pó\éæÖ×3— -„b¬ ÖmK Cpg*yéªcp™Àf áXÁÖƒÇy¹§~šA:(N2¹/_ :‡—.íÇ\†¿(.kbÒ­¥btƽ!X;‡Kû[»`í«—Ñ)Á*3H6ê{Ìapû<‚!V<ÔJdO+éT{F;.{pÙœad>¡É¹޹ôI'†a8 +ðg/bÜáDáå£$º¡"ðÇq¡…£vàH:tÑH¹U"é2Ý÷=àÇÙtÑÕR[J +êÛú8õm}¨Ÿ碣—’–*þ:p$>ad"ßÙ´•Ò%éR{FŒƒŠÓ-á\¦X½E6„·°á2ULÓè F?TXcƒ€ÄÁV°°ìÚÁ[—¹¨Ðçâ +b‡RÀòÂá â,–@"ôBd.Z¡?:.+ªŽ)@<`Á‰[‚˜+PÈÏe¤ºmí5 ™_6Ĉ²¼aÀ «c@%Z¡ýy/K(é¿ ip"O¨ùÇ!í•p.º¿B²Â|/±Aê:6Š|œË2™ù\sD2ºFM—Æ–º$ÝÆQ™[LQJl•‰±y BŒMÔQ[\w[꜇£sÙb$:yõYý$r¿<¶/GTHÏÇuSá7”máÑ—`í¨"Ý´AŽŽH>ª-é,©kÌò›Z„y`E*@&èÙ€°ÈL*Í …DEƒ‚‚„ÎôÒæ2žþXíØ Þ¸Åj¾AZÞÖ8PÈÈa¶kÎ㈆Fcw»Vl¸ŒB~NïL ž€c¢˜Àuí8¨8¡¡!íô5qÙ¨“uŠk/°¨ù4 8½€…\vŠ|äVAmú! 1(¨˜Ö$èœZP—0ä2‰ÁQH˜ĵ¤#‰Ô"ûAŠù–´?Ï¥"Ñ= ¨å~Pq©LøÌ’öD³%B*G¨ Z|õn7«½ìÈ DüÈ%Ø©}–êÌD°¹ÌB€‘J‹NIŬ'ž! $$_¿FLnTL¯Ëà“åæÅeôÆöŒ4Ø.à$X׌ÕA XUH:PGsä âÚp™¢˜VI¦AðSƒ‚Q/ß”Àºæ²ö&¸=‘®¢ˆknBkrúŠ×®N qÁB‡`m,eE & â~ÃTò¹ÄeŽÐ—oK¨“@ËÃ’¡ÍÜù$%ÍK¹ bSc/ ‚ÂäáÒVy8£Ä¿ç½xÒr)ˆñð´\±MGS˜X…ËVÑÆÜ•²`‘á*)Ú2<`U®‘Ë +"é²_Nà¨pÆDƒä”0!Ó§ƒá\F÷ ·#Îoç*Þ ì(Ê(ŠüxoŒؘ¬ññ”Ôz1‡ˆ¡ Z~"iFvq”ÔJ@Õ€\ùâ2ôÃr‚Gò +¢yAY>ƒÏÄDX!tY‚Íe™gùˆÄºÖoa@"ÄnrsZ³ò;=¨8—­skTªå6ËìÇv»áÆj…?¨øÝT8dsc5—}% é^Øy= ]ËC:Èe+ê\ôöEŠÖak%]ŒÄ|¦ÝF‘naŒ=¨8iL¼ˆ;Åj†üøzÏŽŽË8 +ðÀB6DÊ9Q8ýRýí«têðã3«ô·ùæ2 4ù‡Š&÷uÌ™JO.6¢ÿH8 ‘•C¼tÅã6”të·ùt*A‚ð*¢`³¹,}M‚eÖóüib8.‰04ŸÆ‘ᘱ +Yñ{[8û·ós'éäeן¢à{FARäã´"ݘCd:ðãèé”RW9-Š +Œ<ÂeŽK‰v† +$¡ísÐbl¼A6¶ÐÄÓØ<®JlXÛm–Ä@·q™;ZGðYI‘è/ufpÒó0CIáïPA?ïŽDó‘^œhöîsÙ˜0ç%ÚËÏ\ðè'sBW©O@.”ìE$RÎqæ½8¨ÿ×pü²òŽ%:q”H4³š·P²\¦©ýŠ2TuBW¢\¿EVÞ>$v@õÈõª9‰”“˜Ô5%Axבt[‰ùžÅ%é¶Qiil©—ê¶K¹ËFˆ¯±u‰n;YÏØPrc{Ù¾®mÌMb¾§àf̦½ÂJWüvO 3S09LHǰpÕ“ù cká›ãkõq@¿g«\T&Ó­\CëW-,DIGžBI7±œ(†oƒjj=ƒRêk° +ÿĹà¤ÈÇaôVl± Vl\ªLŒm516ruRl/Õmdƒllƒcë:q\¸@ìÓ7ÆtØÁÄäï‘DóÒJªË¹â5çSº¡ð˜HÇeÛÛ €"Ý·&Ý búxrÅüç–RßÉ#/&泤'v“:ÛÙCÓ5¦*¨\6òÈÊ;«”úê,»R«›¨•´2\ì€:Ópý*ÈÊRê³=°ìfuSàˆ¬Â‰o¼D'ΠëCP%&êæ 9¡^*Z=E¡„öçqí %]‚ù¸ÏðÆ¦Ž2ŒÍãˆu›·:)¶Üblå€F±A\’në ¾Æ¡|ÅÖ;‘Î;  Ïtï…NçôH`´)ðþ«dPý*bÐù cÍê\û|™^ap!³dˆÍØl‰tâ)”t*þEãÌž—8 ’ŸDÿRJLÏAÅ%§Ít©¡¤SIGdº¨Ð¤O¡¤ã2†öªæÔ«†d¥’zÎOshÙ=Àûé½r>ÎÛv1µ yxjÆÜò̪^Ô N½5§ yÚgÅâŒÚ\¿—ù޼Ÿ6Äzm7åiÝ.mbɰ€9óÆpKD»²ç}¹š6ä¹oyfÛg^ÉÔlyYn»nŒ¢a—=¿vý +xë8žSj>`Éní¡æƒ8v;lÏ2¬Í²Vz8ë©Á·|Šm€7¦á8õ|6š‡³¢ŸIÇnÈT¿!Vå$`U;µ[†ñ«š_*šöâÛŽo›¦ãÛ®iÚ«iº‹/Ë}Á^M—cË«iº¦ip­jPšê•áÕ«&¼š¦Q^5 àÕ4m»j>à¨ùÀ«ãŸé:v¥ÜUÇ·üÂ5ê¹EÃñŠöTuŠUϬúÝÓr*e{ª:u{ª:ÕàÑn\¿fOU§Ü6¿á5¼2¯^U ¿,—®QœÇw=¯j:Vy·¼BÅlï–Wñ+à=›†Q.ë•oyN¥zìÙtýªÜ–íÙôýÚžMÓ=@íѰzH1«ç\°¼í¤›è„‰.'eZ;ð@õ8y.ó#Å©3yLlò³GI:o ”tž9` +E¡¤ YÞä*VoPŠ©Þƒb5ܤT_P½(”t^„¢z†È¥Š)üI$ò%ÒæPx.K¨ +ÆS‚$býu»ðuž}ŸP²J !þ0 %cå<±÷Q9D…g|BI÷]žÌ×±¤÷Ò@jCIu.J:ŸŠ)O ”Fuœª{M(é •iÉ ¢õCe§.îÏ ÁPÑ +úùà@Œ“ºæPŸÔkê‹£,TŸ$>™¯ó9LCwOŠæ€þ™5ÀýŽ,,¼ëÒÂÀÌ+qÊ0ÖÄ䎜2ÝǹŒË¸¬09ˆb㲑x~šÒÒØ,q€[Zý³uðIO½· DÛRVçã2Ô5@õÔYqV_#ñB¦'Zw—)H‘”õŒÈåml,s™xÐbˆ^ªÛ,Ž˜—ð‘‚|.:2A±ý/±Æt”½-<$¼Œi5—àýlƒ£ôsŠÕ*—qY¦%ù°3ð0ÅCüŒ\vp;C•Z'§☚§ù@ö ÈùtµŽ)ƒ þ#Pá3âá2.‰0¤ã2.óÄר +n#ñ11¶‚Ë jý1ÃÚ;…WRæ ´N¢å0W{€ûvŒ•ù4ŠêK0ØaäRgt.ã2Uº¢ úЇÞÉè~9—uP/ç2.S«É>p¤µ‚ ŠÔ5—qg%RÎ i)H½†â‹WA½ÂD°è‘ý„YNmWT­þ*e¾®UC3âbÚcþ|u†…s!¾pLÚäܾŒa.K±ŽÆcuXoƒŸoÞF/9óŒ­ô~Ý6¡£ o(Jœ&ó@d³ÙŽ`ín|²‹ØebOqPqX(”  ÏI°èL8›Q†±y%CBÃzƆz©N¼Ù~á +û€ýšTå˜B‰û«ó-lÞê©ûÓeá ÄňK¤O°P(éh:6à2;Æý—}‰» ™d—©Œ—qÙ_• õÉcƒ*¨×ýY™7; "sh¿ÙAY8—º×† u<ÕÔ"x˜ SÊs—!FW×=.3¥NîŠRÓï(Ї•*sqÙÒ¹,ä}qÚ£®e”alª66.“ü³±yXÏØ .I·mhc3€hĶiíAè6—ê¶‚ƒcC$ºÍ¢216Œ»ÍL t›ñ56ßQ/´â +zãâ /õ<—­ÏŸÈzò ê2·–ÁóeN‡C|¿ÝêÓE#à´ß´â/ —uŸ"0H?§IM¿ƒË`«Ã4`]©¡úŽËJŽ / TC$¡pÙ) U¶ÀälPYå Òº0$šµØlÄè©2Â…¦)]UÉLâ²É&¥úÂ@¤®I5e6a#DȬ,œš¿¢ÕRÖ[H9/“û31T´bZ7¦BîÂeš‚æ„¢‘rš¢H9Ë §À1²&umpZÝóù'ßfèΧQ„@¦ÝÀgPÀç}Tßø|ùºœ6f~5)”|&öãiÁÌm-‚j`õ®»b:ØØÚbžÓU—ïöÕÏ銴­J ..Ù1‰Æöu}wÀÃ*Úc•µáWE=¿fv˜CY  +¿«Ãì`‘Ë&öãWŠûˆï\tòÐ?NMƒXGÇsÑk™k}°Ðc'“ˆyN‹Xª¨‰ƒÇç$u!óôÁdÓµžÜÕ¼?“ÿ˜M‚µÔ·õ5 I—(œ(܃[I‹¶?“Ëx)¤œ£PÜJdÌÀÃÀaP¯Œ¹–©(sBæÌ8-a7QY@ê49Í85$T´zî¡i|„¦ç‘Êœ‰²å0·…3¹ŒóJÜ'XæÌ—­'?OHÏÛ÷š‘B‰ùÞc&°ëï`]9¡ñEºJDÚ5g…Ò›ËJ·#VW³]‹§] $2'~è,N¼%#B¼c´|½ ,7×’åŸÖ¬ÜÑ€@:’ãn+cXAøR­“Ë@†ÅWFEhj8æxzB«|¦T×ïWÃó¡#×Ë)Ãón>nC+ u½™X.[a’G×;”†°’V¬nh6-×Ì…–³¢Ë%ÎrL=ºxƒú-Ó,6ŽcRתÌ%2]Ù…R˜Å£eàÜ7¿3Ë6ïkDÂÃÕ·9ÐÑ«GÇymBÒ¢KM¦„¢5…b™¯Ű@˳ºÐÝ‚Q4eéy/-ÍÉe²0*×h‚apTÇs™ZRó#‘»ÈAÅã+b±¼‡á[>Wiø6ªr«DwW¸»ÀÖÌ.ð\Vñ•ƒ…•@E`­dÎx[ò™F¨_Pìíúˆ}ę܉mbŒP“Ü­*ô´ª6+\…V•@E¶Ò·ªQákÒ%é``eÀ|Õ5¤:¤AøÉЍ˜<ùPL:ÇÈ ð•Qo;—=Š—€ÊRÖó3Ê— ˆN>Ttœ‚’ :ž‡¦åÀqáuyÈôù°h;7ž:ciuC/Oybt ¨MÅè‡/=Ó)²ÂÅëqÀŸ\V#:©žnRTWÝù(®ÑûÀëuŽ ¹ f•Ë+ÅLÖÃïNÄãÂK‡ëë Fç²(qᤴâ—Ê÷\†A˜ý¤S&ÿ#êÉO¼üµè¯ÝìõäÉ.´ð‘á'Àw&ŸËzÉeáßCÒñL=‡&Hõ`&¦%z>.c”!yŸ¾( +?[N“ïX7œ;Y~õü5hÏ¢ˆ[«ãðXjÔýº€‡fŒX{¿x/dF*‰¶ß$„Ñ'£Æ½ªíÃÆe4—2:z—Œ®r™šºÕƒ.K©…? dqø¨‹Auð“Îb¡zéÕ–’ÛdLÞs ›U\¾e}¾kŽ\Ȇ +itD—ö„¹;•¤N}[_·8 nOc$JÉe™P}0H#Ô?•Nš ¨ ÄbõœÓÒkUjÃ;)Âù)#‰æã2L£’êu¢áÏɶ8üÑèËt’ ÖQ|mZ`‡Ã,¬kÛM„Gédá¨=ÀýÃÓ|"Ñþ‚§R=%,©ÄNœŠš™D¿i€Yñÿ:ˆT‰O)QH€’1üß¹è µÄx76Zxxð“N@ôWo)ØÆvøR±ŠÛáOT Õ?H.ûVÊzø4å¼.ë‘Ò¹LRºE®Ð€¸bàŸÍ‚ø£Q†±1¸*±)º™ƒ¾,!‚òÕ·õ‰ Ðäû–àöEA+éºÂç2ƒ|€™5çÂ1g†§ùnMÓ6`t›B°øXKÒ:7+øðUÃáhxm§IWÀûÂTæO1öc¸hƒÎÇ98Z6©Y.Vß!x½N.ã>­H]¿‹úðU÷ÀtþÈHŠ <:À%.\‚áÀß#¡vØÍàvÑꔂP/omC£¥´íg‰;DEx—†ŸŠ2gô%”t—ýrR'¡â!Ư&÷å=<}æ|ZÈâü¡÷“î’"Ño)Eç]„7;$øc!ëásÙ€—à*†êàm[¸YiáïBù‡AY¸)ù8‚&_EtTߥ$ÄÁ˜¸ÀB®Qƒ=y¢ðÄI°vÊO8V|ÑQBIw¡=šP}”oƒMÊèßbtKdâjFRbxÄ ±bÔ‚ˆ¡dM•ɇ=IêšímCd´·‡\æXÔ‡2x¸8W»›@Nþ@E]æ‰8u>Óe¡úc”¸ð6,uÎĉþ‚‰t\vOJóà:̼Ê'gzhÎÍ`r˜wKÒ: â¨ù(UëdpÕa–ŽÍ€ï "]¤³pHÀPáQлù8—!DŤôƪ•tæ&-!¼i %OxÖN1<.œË^i Û@“/: üÉsEÅJxÉC1éÌëåkÉqáãƒ@5`µ½ÌP +êI‡Râþ8]ýWºâÓÕuFˆv…Ž - J(é: +B_ñó²ðœËÚù$‚¹'C•¨ð¨…Ë~9 ?Îð$ÇCŠŒZŒ ã’t—ü³±™JK¶½<ž‹Ž² ü@IabJé¢{“ûòp´ý&¥ú^عF.’?7ÈxUãÉeQA?7î|1”lušÀ9ÿcbô DPñ!Œ‰tâ)ÄÔ¥ªHÛ×#»‚_1ú«7l7ûÓEá5q!sÊ1:ómBVÅÓOÅ™ot +|äÐ@T{F?Å%”„”Óù)/ŠÉP¬.&ŒHéŸRKêX¨nÁ0à¯?ÎE?A˜¶'Dm'ÖR´ŒC¬ø†Xñu\µ¾Ã¤ é”D?/Áy½Ñ ˆNþQp:|Ê)<™9m,Ÿ]!çg\4¡É_/¢ó‡Qá CsòŸcÅY®âþøPLºˆŠn»{Ж’F‡atµãzùü_þÿâð#\hᇚM€’K0„_XL¯‚å ¾/"øðÇH‚Ñ ü ¼Åð¸pPù:Gøq¯’!/¤=J(éVçe¡I­Äx¤»Si %;òX +R†„BR`ŽƒønBŒ/a®Ô“"§; »G‚é+þaQ8Q8í)m1ÕE†€‰`±½Ç¡OhÂ+ÊËéqÎ| ÂÈl/‹“ÿ¨ÌìH”sô!ðgHÇs5š¿œ€iauüÉe-ª9ùyNu]b¶® +A¼‰ %Ô‡oƒ–›R4"åð êuÀ1ù°pGR×éˈ„·ÍƒŠsÿyÏ7|ç(©»4)ßý㲯ñ}' +ÿN”Å—^Z‚ÍeÑwþ1N¾™¸Œ…Ë ƒ¡`t +ÿ¼F·8mnAÐ1 %Z×ë7o#.£|=æ]›ño3,õx2P ¤¨_—ºÑ¦{xlâRgN(¼JxQ #Å¡dƒÛ¶ÅZàöq"sAx7ÏlRDáD¹Mßdx¡ê?Ï í •àö^z~ãA°Æm(IÀ'g4¢|!áåìÜN$Â'• ¿N i·Â …² gJ˜Ãƒi{ïé­…Kì‰Â/: £Zˆ™:ù EÃèÑ©íóÈ óyT£î·©Ê1ÙUê0Óš£î2ž,^˜\fÆ>ôc^¬„O`Z ׬ëv~H ”êçXù8v=|t]O>E¼TOTJ&ÿ XûeáRCõ\†¨MÈ_ý_K•ÉW>‚æ4 œª?œ®ÃGÑõð3¥Q÷¹lKl翜æãV(Ç,µþü'uóTï??é$nzá§Y¶¤:&Þ¸xaT©¾2Àð'!UÐÏÊË|ˆ™±xÈtËš Š€æüŒËç„ÌFi=y.{m ž/AŠæ£Â±ðÒãXø§0iôW²ð¹kon°/1Õ?>¦ºH>L:sj»½-\ÜþXZ]V±ý¢A]æÌ=_ÇVù“CY\ø‡8Pøvø¡Ÿˆ2.~#J&ŸJ&OilçOA­æS€ÈV‡Œn oo«Û™ƒÂƒP¤C©á*î—Ť›,þá›^¯õéÜhÃþšE£º¦0àϺuA“R™3_…ÓôΖ\£sÙÁü'_Â\†? (Ñ¿(HDA&cȬxĨžà +øôŒÞŠï¨>7¡ 3afûòœ3ŸÀ¨Å1eÊ[ñøÂ1do-¼û$«O¢ßâbP<ø‰{»V“e0:—i$ÌT'¢ÃÇ|“ŽÌ™oDD½ÀçG1 /{káÞ9«_BYøItòhǸìÿœ ôËà*óubìù5vÇŸ³áÔû£3,üNL4•Ì\(ò·Ã>sa “`¼ÀÌ ßÎù¦æ3D¾V‡u”Ì)é°P݃ˆÝ÷>3Qx÷¡”>>0‡žé ûÓmPŸ”¨â9’ÒxÂF ß–uçã2Äo9Ìm|™<—‰ E'½ðû``Ã= ÉáÓ…̹pç;ˆjT¿\½·å_=×G…7,.°µpïð@%úÛÍèããDáë +9üJý‡_Ù¼TÏÜ3ãÖÉe…²3ž¶Šà˜—Å©óØC«7î|†÷Ûú¼Í þD¢“‡<­8ùÃeqá!—íþë[Qý5bu>˜ªGJ‰·m…§ÏªÞá1él«ùÐõðV—¤‚ǘ[Œ”Îe!9ž¶¡ÄýÄê|šÙê™Xtò˜ Ó5#ÓŸ}…éÀ$úÅXŸxH‘d€²ðôÅJøÿùI7Al'ozµ¥„ éŠ=2çÂÁO‡é²pƒê:Œ3ŸOtð™"LŒÎxEºÈØžË$½µpBm¢pï<¥PÛ¿äDájYRx.³0^¬‹/D Ïi¿+މ6£»Ô24¹¬U—yð`Œþ m‹ǽ‰Ì|ª +]ôSgBé\&¡à²®‡Ozoðq»¿GJ…blV Ûù[©Aç;8*©nqM¶w¨w Ûr™‰íé:1ý¬fÅ Òæä9Ûf?gõÎe*¸Ê|š‰þ‹`ñÛ™OÛ EuÃÈây0Ñ,*&Ø$.«|þÛ31ú…Ñ™õÆÅg/•9cƒ‰êcˆíü1wÉ|…€?&×è\æbZÈ?|.Û$‘®"ŸÃIL«·@™ïrú„æðçDEQ= UÈœ„Æô5Rà2®6 ŒÚRò²¤ŽÖÂÕŽcŽäDá‘cÅ-öŒzÇfÞ¬ô ‹çUˆJõDkáöÈ á¹L^±2ß—à0“¢9¿ 2 z‚¿Æú1ðòúædNˆðz;2g¾Crøë"³â›Êf;JQý¶)ª§Áƒr >ÿ櫸ïm‹ó8Ðq@£&ÿð íˆí|þu“`t.ƒ1¬Î‡ˆ±çÏH ¯¿½ØŸ4‹ê:bE`òrjÞ°Òäü’—!ÕêÛú4¢“ÿ(ÂÃ÷.&Ìœ]ºóõ"dÖ7Aª«¢èüÛ‡€ûÇ ÓYOº‰ûã‹Â‰Â=èd= ŸoÚóbQ?Ó@éšPÒ… «íšPÒmXL€ÚÎe#ÆÛ`æ´™€ +G‹Ò¡ÉW®S™Ö¨¤óõÉ\•’)„DfD0£ J†ãÙ¸ÇHD*FLJ2& “Šc¡@, …±† Qt1æÌÀËw»¥uñÚU,÷›/NE«ûòÓîuCYò7¾¿| ™0Åœì{qv竾ŸšÒùj׺…ÂjòeR§Ÿú?ÝÜΜù¨¸JÎWóÃút<îE`¾ŠDkJ}a`ª†¬Úf^Ç6GñÊοZ1[{êÒ³€†ñJ0 ¥ÌÂË¥)ï¥ ÐóŸkù½0V%òŒ"o Zµ9qÒú+=óÊM³ä h*G¥§e”Ö̃BbÜÆS͘/Îôâ‚¡>`›Ym–k £õ]Ä«E×z Y¯Öø ¼gäÕx—Ô£”Ÿn™ûMƒyþ’/ëê›O@ï4mtËù·=¹ivA Úì³J<Ö²£–™s­Ï N¼ï +r¿½ê½c»Íj0:ì€ï.Ií$óÂ;Ä«LÆ¿Á“€ç_³ý2(ºä1ïÝãEšˆ’_ù,ð±S 9ðFªÙth/ïhèGV‰óÕæSÕØ]f•^cè7³Æ­ª +¨šFC±_3+Äúgu¾e½²ð.ØZö:¥Û0'¼UÁ‹BùæagõéVuQÀÐÝgº'ì²pÙBJêï70~?8H…˜áX;C6~&ìyìÁÓVq°_tP@Ѧ?›Uà1xªyVÕ‚'w¯±ª’±*¯½u÷Ÿ‘÷Ÿš¦ª"úg•Ínæ´¥ªêGãT »Ü­]õêJò™ +Û:¯†øAr¡k¬Yqk66~„ÖU2!WŠ€¼ÕÞÞ”f)aK^«*‹­óÇ _õ¬ñ¾;ëÄbÞP†¿Â@ÇüÆ é»,Òr«fC ëËñ#j¡ý姆 €¨“ÝI•†–\Ví‘Ô"ãÜ„€Òs‚º4LµÄ®«Ebe K.³.³e‰Dk”ZÓõŸ_W¦Sí[h;.«ã&dï: ó¢iþZ‰Ù”© ¦e; %NÈÙµ9¶£ëJ3b ;µð0Áhßýc¥”pqþŽ½ÜšGPÂçegލ˜³NjK´{=)Àä +àÊ(ÑjæáBª„æñ¯U£ÌŠæÍu°¬<4Ô§2V_ íΕ•c–‹Êúy8µë±æÔ•Œ—ô¦š}ß—ö'îgš–¦}V¾¹mË^¡MÁmò;pIûÑÉ8rÔYóã•Öx2Èæ8ˆRx©W"ëÁÔ¤ak½F¹Au“&Xø-ŽHZcB½VYÆ.à|冓8í¤1¦ÇFTãŒEqÖ5ôÁXWž_á¬U ,ûÊšú«jÇ)H¥[¯Íý"p7ïT™<:è{Øs–¡¯&¨^=ˆNÙ C§£žÿTLK>„a›ŽKyiÌ0p§=x\¨ SMGÕî€Ù8y°LϤºë—ܪœ?è{[ØVíÏ5(èpŸuYÂ"í–eÉLÀx˵¸Lýàï uÀúÆC¶G< 8Dp9é ËN.ױŚïiã>Ñ–L¸;ž®¡÷BBXà+þ΋m¶^;óà…ÓhúšÞ/HŒ¸µ»§Êþ@ÀúÉW +8öwÓoÉ›CIœé“ŒËµD9B'U¤cLPj­h¯Ë³p¿ÑÀÂÎ,5ë¸Àé ƒ=DŽ Ñ×äòFbœFÈ‘©H‚-ÖÚeÑ&•gŸÆ¥q ìógÉž;8™ñÃâ•+þ +yIZý$«Ì¤5ìj +°W©˜¨sIbDO|ˆÿlÑ7TÛÝ4}öîR¨÷¢;–8ÿCÕÖ5™†zO0i:+úÍ‚ß}!®§k…ŽéMÙCõ1|ïµ?›î¹´ŠñBNë¢ã4nž,ËO$¥cà…¦)öMÍ›ìûÌ[d™™Üfü1ö w¨_ý$‡å&Åàg”1^.×|í>“ž&ƒâ´,‘ìÿR2úM÷‚ïç¨ðùQ/Q" ”)΢ΠR±)¤aNÒÊ¥ÕzóÆ4¤¥'·èˆHñ]_ðnt³uºçzwÀ=Ö‹ÈyP^gÓµ©ìT‘¥¶®ê¯,ا†’+¡t·n2”ZBJ*oÌ×.Ф?Ò*6„°Ìéœ.î7r’PX;îÎ×»\¦%W_EK²ž w¼ÑZ-pÌ wOa0`iŸÏ»S ðî’ëx<".çPz‘ £YJ=(—oú…NŠCä'a}z=>iÜOŠ +‘¥IŒÈÑ`u @v“œéT/_I1 D]áNù‰í`ø©1äùN/I-4ý1l=·ºVvï`˜ ^”+ée­rµÔ?ðš »•»2‡Ýë ‚nô¨úˆ"¹Çw•ƒ…|h +³3v$2p(o\­ñ¶…ºJ~”ÄÚ3\ªžù"ÍÃEí‚μ$&€[Œ4f¹J–鵆œ}VäÂ˼a5ø t†Ö±‹¿PÅT>4…™U ®ƒ­ç?Íg$±Lî>ŒÞ*͜Гè&;¥!„QfŽúŒ¥`Èý-•xx,"'üóF¾RJÂxC£17”r… 0³RD8ñ>Ë‹FZäzš¹÷7@)AýDKÕê‰}׊µ½ÒJV¯&Vo!V¢A©¡ W^†6&Fš(gÁnŸ™² D5`ù†-0ÀFˆ›r9~"Œ$O[v•®hJŒˆÑ ·pQ)‚þ._Uo™ªbg@‘®Š;]¦2{!0ømíßULEG§ç‰£²:n.ÌeÁÆ[ +Þ]*D=;ô–ÎpY%UmCDD} 7£2 fé1péM¨N; ó[w¢Â)Dè& )ý“㙕j5#«¹Œ‡ˆK…Ñp½I˜çGQJD¬e‚¢C¡v*ôPÃC _rÜQLt[Ý/©H2O áˉ»„…™Î˜Qþœ× *cN;Ž×µKDß4Í#àõ‘þ<€Ž‰¾b´¶aõD.ÃÝ%[i@ÁµûÆ‹©¢èü³o{ÞdxeÝî³;¸Ó“ÍID„y Ô'y _wmÛøbb#ØôÆác—_˜K¬«Zâ«§­Ï8Ûp½iÀÐ?+ýÉy[?ÃæÖä1Ø~àƒ0-ü:‘0 +ʃÿFÃ[•¶O¾2®;Ë’*݇ûÝ<¹¹!F¯)=3Ø‹ò¬fPU‚J.%óRV>Zò• \ú2ÃîQîê‰NoR¥šÐÑ;Ívªr@Û6rñÕ˜Ad]Õzk0Dÿ¼œDˆÉk™þUº¦Œ9Ô!ºmF]:LˆLó=ñâ°iµýèUj`w_ØO¿ì†ÚêÇ©ÒYÏ 0óE³„=åʃïÛüU)½•›¼c£¬ÚZ%a”Oa½oÏÖç‰ïž’ŽCø¹ÛˆúïVh¹{Îà;!õ‰Þ8[G‘\b}4ÂAÿú4öd‰ëŽ{šÐ|"ÅÊ; u%¸&.£‹HÖ]’¯‹ +µhmž€\PuôóŸFyœyBÔg’&¾KSœd "Ͷ:¹¤)Í|´Æ;é6èÕÅp<RÓ$g`à €BŒ=’œÒþ•Õ·¤°Méð˜Ìðdm¾ö)5+Çé+¨‚Í>ß ÃØ)N7Žu—n*Õ|J|?1ð¸öæ( Îr:­~ÉÇખˆ°™·xbH­Ä©ŒjO‹¹¤X\ô#݃éÃ媶§Ðýepè·©ÖÖë’iÖ¡äöO @'5Ë H²¸[¶ª{ö¦ ³ŒX +p¹0¿PµÍföÈè~­vì¼¾…<+»Nž1ÀæõªÎ(vêUL j'08ë?D€Xí½±=ˆʰg<‹^‘z[8G ¬xEÊšˆ{ÞÒ¢w´Š¾P "þóÍ;";¯Ë¦æøž_%€ßþ2瘿þ«sÁà.!oÔ •V<%8…ØGœmã[kLgqš±.׺ËÀ¥&‚@Ÿi8.«3b\æAÈ‚‡=JÍZD·«ÖD{²_›–Fô,®sÑþ«áÁ¥‹“­”¾Vð%f­ƒ0joµ¶¶€åÙLèïLâ¿ñ.sõÍÊ.×.k=sŒ…ºT¢<ކWÒl/‡ öô±hÂþŒÓZ‹Žjî…„rÁ…øCfc9ú¦ñÍŠDìêÑlü%ɽxTƒ©JØö£úvЭn'=qv +2õ!:°-õ?§8ü¾¾Œ@(ÍumÊt …F_ {y1ménÆõzÔŠ&ÛCàÀ2™hæì~4H2‡D“»^"™äæ‘öÏä6Àgç•Äm¹YF6¥9¥pˆèLª‹©;ÂÜ)JÜs[ËÆÄ…Ü)‚1ª ­²/bÿ½åv¾Ïð-«’ËX˜mˆÖ‰jÍÇ›ÔÑ6mÆ~-řθ…zí¾Oò2Ç&}±Ë÷DJ#T16v‡ ¹)DÉÁã¸/=wÖÐúM“Þ퓆õÜ£#,BžK…ì¾áε×øElóÀ¯GýCņ[uMH…ç¶Eb´‘ìëj£˜Ï[´0¨a€oÿeŽuï~¤îb3`ût¡Z]·­ïfYç§æsÄMØP‹Í­ÿCRx…hF@ʲ8ì)j@ÅÑÚÓ+I°ð;d“1¤13ÈwùüVD¤Ùê™kˆ¬÷‚Ť8Á³"3Œ–+)”µï%4+ „(µÛ‘Ó@`¦šÞç@CÃB@yYlwÇZ7p”@ÖW» Ü¹}Nƒm·¡K9¼ùvw5\ ðÞ˜C“¿»·ýÃnš’Háj}Zfð6é¨×ŸÚÅÒ’Kbs#s¸[.Ð22˜1Lh¼‚®gÒm„w&$\v` pŠ‹ìÜ?*ãnå àP'Öݽ@4'N³;å~-®ô3H¡»Ûoª'Tw?a÷’ìîxqÝ‘Á|ßì¾à-`+.åÎn¼°´Ð‡ÏW t÷ ÞÅe‰¾Òδ 'ë¾Ê³©‹D‘Ô§¹Ðöj ¬‘é~nÓç{l&:mÃ3:²ošrMÍ×äÁìPôJAO†>^yçöÀþ´Åó"ò©í³ +Jµw·N•y»àøU¢¦‹õÄÁ¸:BK°¸ $ÖvÐ@öj·ðÐ' ¶sç6L—ªùŒ¶M·«… ½o†x¯í;VnФRæ{ªÙ™öÅ¥Œ ²?|zLÛ+&lrÊ:“Z Ùy¬Ž –⓸e{<b~}ýˆOÍ®Ší‰=ðÉPbön߈¡4ń앙–á{`W 14R!`C,/0@á ×L¤ÅL:(k¹‰'»?Âæ„íû+o#˜`g •%T„-› Ï1uh/Ž{ÛÄÒ™»‰pÌ’þEÛ±-F[Ê_ Û“xö:2EÛN-±×°kºŽ¡m9¶<äÌÖÞlO>5O,3Ïi>&õš¨y’Ãra1ËV÷dòîŸü9ߌýÒ·ôŵÃ4â ­ÉÊàˆ‹aòmœä3 ü¨sé!Ãßµõ‹TzYñÕa.²"àÌžo\ŽÁ€ƒ :h7qįd't° ÝÚ\¨ñ€”Î×Þôwä‚ 0†’lgN¦ODoÈÀÇ^¾ô\t}¯{I¦¥ßJU³Cú±ìÈõªYbñV \ ò™‰½Å¬l§˜‘õm’¸`ˆ$¯%µÆ·ykj)S!+ò×îöËè'#?4Ð_†ƒ[ZõؼÍë§ò#U64lqs ÑÁ§ÂòßÄÝ]v E0i ìÑböJ~RäâæÃ¶F…ú!û/¶ÿÆ÷ +—ÛˆRúõZ§ÈX¡}:@K£¸´à¨{ú¥(µÛNýè·wÖDo?ÊûÏÈßàŠ38_އº³åN §´±åÝrüÄ)v?˦¨Ã‚íØï©ü‚ìŠÃ¢á^ûLÝÚ†lì¨ëfï òF€uy]sÀbÈ ÝµÛ€Þ@$ ôæð1V†b3ƒñd>¢±Ë ÊÐÏШý^Rä@°aÊ3Ð\¶•¾Á~?ªágߨè^)5ÐÈALM:Qq†´Ž$^m<–›K±"z®rÖƒåt•ÂØÚê†Dû]²ôÁþЇßl +"ßã&‘TŽ8¥ìhêz7&Y’ƒ“À¹ÝEm"ž}——ÎÄé›~Ò&¯§jdªdE›ÿ”}€^ÆJ)Wð'†ù’)¥»;ÊŸ +Ñ\µ ³›¤]É!wñî„[ÍYãdB— ÉmkZ§²÷Y´íޝSs^Sˆüêã… —ì+•´£{îø”'“V¶BÞêÆ‘þ—Àn¯ºhÖn. }‚­¬ZÏSƒ¯ºÝóÏ{3ðjúKKtõÐSUûÀ +Z®—놷g/€ê.ÞÏ>*,-K~+–Žs¿Wž5p©°×|µMÜÞjϪ*¿Þ.ryXÀ:’”†2ök:ƒRO€Xé<$)JCÿÀ!G9[ÔÉJþ•úŸ^vÛ&Ÿ¾+Ϣ؜Ã^à+¤åÄæ {…ݲÈÕƒi¯)Ö'=|¦™ŒÅ¬^í´€ðfvجÃrØQM&æùJc›×ödè¶vªÿ⚃‹ã§5Am<­ÈA‰iZ9r|x2æÜ5í¶ «‹×°uIŒ¥ÜK‹É„äI¶\pÿ\H6zU¸Õ_s·B£ð´@²½çíð1¿¡ù‚ÿÄ…ƒ UÙ«X÷­½ƒD»?ŠðŽ^"¦ÜÁµ´ê¶üÝnyè +,õa”­Ë 61-ò'UR#ý…wEÕñ†gƒÖ†Ýcöí‘#E^é380é‡Ð„ßΛ˫8O$«NÌA ÁDš½”ÊÆ´|á›±ŸçqúcCcwÅN?O‹C%“›X·” +u/KëÉÏÐMVÅAv<# ,Ѓ;~ûŠ .3sg JN+L†¤Â õ%°¹6Þ ÁÜ ÌØ^ÁSóyD䘋ÈÖ(°ø˜_ãoWœ'lf¨&“n9OÒÌw+Fo¾÷ññ2¾þdÝËúÁ˜þWÕxrH½â.Õ¯–é÷¤i³#©k<)IqÛÌï3gÑpÖÄà—_AÙYÇäugXoãI½?ο>žÐ‡ù¥“± 'Jœ¨ºÿX/“ÆÓÍ2Xƒ²»"UC‚¨¢÷Ë{<­vÂʵO"JHšBh{ìI4žÊë%ɽ (É&M|É)¯û¸2‚ +´†èÈÆ¤ø¹ß¸_óÕ÷{/trχ2{<â´<¾ޱ[\†¼°!Q¦µÖo_ønŠ%Dž˜„Çó6K•Öd"$†Ÿf~5#ÁSyX'=&YUâ÷-þ ðÜC%ŒãI®ñ+dQÎl5¼-¢¨yÃ:&ç%ŧ»s1þkò2c⻆í#‡Nг®æ¼µd—KÇDÂ>·Œµ†| ¦ˆ2Õ;ç±Q8C]•­oÝÏŸd7/TvùPÉ”§®>”ž0¥ ­JdK§.Ì|Žgõ2úÕJ‚Ç ä/†Ÿ2. 0ÄO)„À©+w%¨TWGo~›a¾V¶£Î¿Hרé&C¢ö¹ÔƳ:×KDÖÃpÛEÄŽÓT,_50O )ï;ª‹7f³eŽU¸GŽ7pœ:Ad,¸ËÄ1—.ôî…ÐÁ–?ÊðÌ輦_7v&”2Ty,dfãwèw:*tŒ±+í+.U; ýuÅ1%²Ã†íŠÜÀ îMõJ¾“éå׿åËl°þטýkß7|4#lüÛ²¸}剸÷U<¦¡YZÈô;ø¡.ËyUGî1øw€„RµþýÍ)Ãl,¹ V¬‚d—Ûk§âå&3­ñ0½#>4[|ˆN˜ÍRdXúwmL!c@§ø¬ª¥9zþÕ+?)¶¬J+«w‹fYƒu·t +ªÉsl¹µo üÛbÔ" ¢Âï,i«‘´8ƒçfÝÆíûù: É«S" \©Ø9'€ä·ÕÄÒV aÌ6ÖPVs¥‹t»Êm…œ×¡ ?Wy}ñ‚Ûq£Ô–+è,Ò2­)òuªú–JmDIU–s¬7hÔqÆ;x±tм¢N? ˆJ +š2mÔï”Ä£¤ÝD:‚Ö_¸óhu:Aù¢ŒL±Wa¼çÅwбÿè ë(¬bxµtDQ?ê@@pfÒ]G=mDÈ’L8&¼‚r΂Yóú„ *lÙrk³¿Ïš|1y¢ƒ"áÔ«f†[ÄÐ"Ñxáön)‰ cP›XUþ¦D`jÏäêäRŽ jZòAÚÙ¢^¦)¶šhqöáÂÈŽÞcQ‘²D^A¨ˆ±oR£‚Èâì²­pbò¹‹Së“Áƒç¦ð†¼v/J•AQêœâtGè1P7`”… 5‘ÑÊ& Êæwþxk=Ÿ§à/f`*øbÞs½ã„m9$PCäMÝH½wÛ­±^ŽÕ"ÑÁòˆ—çk¨wCUnK½îß3C½]*õîC °…¸tBjn9—z¡`ú¨œ‡zé¯l/y¨×N•°·;Hêià0)87L«yYK½®N .ÄÕ1·SWµuÜÛµ—Åk,ÏT1$Ë9®8QˆÞŒZÖ&G:·‚ÍOvÌn h…¡u tl'2vU¬eÒþ +F¶JF+(§ÐWû’¶VOZ Fâ"­ÀšIÓüˆpîçѱPÌ\&6”†r¢Jë*º;"vCåÓ›ƒÝ%H\'wg!ù;¢~Š»’õÀÕÅ>Šõ'»›´âÏ#T…ž<qÈŠyŸÿ-³É *~WbLYø’Ä]­bå{N¢ãQfÂ;Zæ^;*BƒÇ +<ÅÈ,ïUNðª‰VÌáÁWêö”Rœ5¹œ¯é>àqr`ó.R@Î(ß'‰!–ÌÞg4Ê~Õ"¾zG] ÇZñÎ̺E8ऑ+µFâ^®ßBfWo {KÁ/ž‰3²qÕëû¨³yõîŠH‡WBÖýºzwË$3U½ *õ*gX›*YU‚Dw€'›%Ìš’‘BXaÖý¬б¨N´_@=;Â/ªÞQèï±'S ÞxH€¾ñ¬ÄÇ~¯[¦¤¼×µÎhÛmÀnÙWC )¼Ê’®6)Ú¦õŒVBˆS±Üd{…÷¥À« 9_%²! ŠNö%½‡]¼è Ò ~÷÷ÙU4fåõ&Ý'8@ó¡m ˆ|Em]R¢€š÷ÂóeäáË÷zËXìï‚¿1BبÖ ›?Âaš[¨kðý·”ÑåIó5^¾SPY\¤¤f™$H…pû³íªYò±ºdl@?ó/2¸ö’&Û(¬ÙÌ™(m(”fPÑ^82¥­ÈÇ/Ë‘w›ôî²…^r‡€!væ´¡Zv°v’exâd¨´„!!â:܇RŸ@ùñnµò —¼ñ ì÷R9-ðw‰wΊ*Xæ¿www4å½%³ÕÃ9¿»µƒ_Û{ôwJZl‘´8RãзT KsŠâ]§b»ñÛ€w7šþÇÙiE¼»{¿KÛ Id+ ¢t½» e8p3ñîuá]AôLftV¼»bWmgF,Þ]X9p^'s"à±P\ˆÓbxÕ¾œNP´6(ã9©ÍîÍún|W=uá !H?ûOŸ›ÊL +ÞÎòÐÄÝLp%DN°I§7*ÓÊZæiõ=ºÔé+­›Øn6S¼£ÑÞ ¢¼fM¾cEJHXñº5 ³®Ù—F׊Õ𲱟ïœ:— OyÈz"¿Ñ”ô~<Ÿå"XæQ³ø×ã§ \ø”—›ÌÍí¯äøn´`ô>0J,ƨMÇ¥q$`V9Îy…[ÇÈaY@©@Ñ-¥ZÃi“†‡4Ê éUÔßëöïwª}vmpmïaÈg®H›V¿…¶/^ij‡o63Bñó7ÄŸˆÖFTÞòJÎzu3ÃñþT‚¨€û†Á¬d²åÌ!ý +O·Ó^œó³µ\Ὠ¶ ØÊ·Ö ´„•ƒqP¯w.»>DFƒ{p“ÏÓWHVÀ°='9Õºéfý)Ú©ÖÐñ0Úˆ²÷¨EsðŠø°¤b¸¡ýn†KP­‘¯ÑÍJhæžð~ŽÃ“²N¿è• ¢bþF3åÂmˆ¸WÑ—Yi1½ëZALZZýZ)˜–“ÓD¤ØK‡fNû]à/ Ø£ :ãnQz…½¾hw E,·\9Š[‘)5ºÍ$¯‚R¬µH»ðÌÇÀì—ür$²ÞóX—Á{Ýùwé@kÞóÄ+Ö8ôèkE*ŽSw»Èú†¹ Ž¥&±™ÍÂC•ýì–¶5t÷Â'ÛGÊÑÅRZô×6E÷äL­¨8ýz5⟌,ºPÑN\z„®îÅ÷\ÂõÑô*Áõ¼®tn%'£#2¡«G7æ÷áqts’PNÑp(ï¦Å!‘#.ºŸßt:º°ž‘£èutñÍ2°ÝARýÉêmð„I²´¨ïœ ×K¯ÿ:˜{¼w;íCì‚ßÔìöðécê~|Š8C"²ÏYTýëz‰bkóÓFmÞÃ.~”Žã+6*þ¨p‰.Üû<´"<‡©7b«ÿ’âpp†kqÒoÅÿÜ­Ý£Oó®dðC¼óZ¦˜Ù®XÅ.ö­¡ÞüSq•…íIóü0y•‰Õø,t¡p”·× +¦`á®=Šsn‡, +L³ÓUs¼¹ ‘GÂô5v¨ÁdMd©wÔ—/Mpî-zDÛ9®8õGFÅò(@´v’`½.qÂËÛNæT§Ò¸ÿÇ‹²çá>åQ8­šØ’X*9¢æg«—ûŸåŸ_ùÝJ”u&¢yY‹ +GÕ]h&À¾·Ã»—]}Š +¾íi™~ÀÑüÂj„o²ÜĘ'` vöЬ¦=Ä’ð¬úÌU5 "ÂW¨ÚUõcˆ$@å³ÖD ”Ê=÷Ä'¯ÆDæª=žŠü¢DÔı#"¨9d)µ ^ùFœS©íl¼G¶Ú¤­êxĆìá[‡Ý0!ð WÀº’;äܾ蕡¸½vWÈå²5²“i·f]ãê 9qû ª3@t{•²­ð¸BEg6/88'â«íâ1øW٠ߟ™] y%½\ö`su³hml¥‰j¨Â6ß‹á§Ëáå±`7Ï𪇱srÍ2'Ø&Ÿ*†ûüÍç³ïmgÀoDB3C6íI- ºÅ6œœÂ» ¨˜¨k§—§ò6–S9Ÿ9l–éP4`šÚôÈén\žk¬Ó ÈZ xžã+AÏ*=%ƒ©W›‡L¦õä]¾ã+ì{`‘¼K{Ǹ@mb1”cþ%¼±TÅ´¢”¸ý’TTO+‡û­zn1®ÒT› xºÁ3–r»ÝXÄ„·qϪ﬊ø:o lÂHQ©ÃXæxù¬í.@ä¼Pä³Î À*÷Ýð +ì‚]ÒfïÓæñÐBŠÐK¦u— í»™0 D]W_ÔVžûŒé¶„_!w§Ø¥ø:b)[àâ˜äÙ +HJŠýHƒÒA/¿-¼ÜË`·é‡ E¢Œ- ²ÞÚ×ÄÉN<ãóÑtCòª‹•³©ØtkØ/ ¡1¼ Mº.U)0^JzÙæŒËÅ£U„àŠšuùL6jöê”9oel^†*ÌPLd7s‹w§E{}te16S°8ûônŸ̽fZšfVîÀéó|’Ë–ÿPÏ9ê‰[‰ÕÖ,Å.5€Z$^ˆ ªðêûZc}!ÔØz‚*úü¯c¶a ô¿†;Ú‚zk‘Ï6q‡?(oDÝÓù{=w¸é”Àõ(‹œ„kI?"Ú±bØ TðF ùßQ<<ñÔPé_ü¾œU…G‰ñÊë„~p©?|7b¾½-ï¼ ÷áÜÍn|/>ŠfkÄš,ÌŒxé¿XF?úéﱌ¦‡¡~¨m‹¸ôHœå|Þ½u9bÉ•láa>|‡ŸÂö”œß‰ B‚E+ó”Ý•å-=õÎÎÙxxøÐ÷gc3Ñ™¥—¥/{s²ô,GA v¦_ÓKã¸óŸ·.@h eO®¾:´°ƒ©UÞŽH¼<»®”þ"#bzׯ¢°“„ÔËç]ÔÇñb8Ï~óc}879À?ÎF÷¬Ž!u{’;Øç̱LŒLRMDŸ+t}Å÷LxZ €ô?[ÈóuûíÆÀI‚Ü’j5xqk;EªC‘X®­oÜ®æiO×9·äÜ<‚M(¸’ÁõÚ5Q¨;KÈÉàÑô½1Íqg(~þ§%¾p•¼Ñ¬gOfxÌÊ¿ÕûƒóÆãHÓÐâ§„1 úuþס±ï¸‘ÙžÐ'3fgÃ…qNº6Â(@ÞD%Z˜|Q]­ým5Ú'"°òâ;ä²ÕDˆj®LÏðÖYÊÔÈøÇKݼDÊûÊ0Âýè9T~—žuŸÆÞ;öL_J¶håIµàòY Œ}8·ïQ‹ý"ÇOÏ+{†2Är €ýß–˜ºNN;¯‰÷U/­ì|‡™¹)5›‘Ÿ†äúòñ¯)œà1„æ`Ø/g²¶ìºõo6;Bº0åU–æ/úœæÜ¿wBE3ñ›¯À£ÐGs4Yº“ù~…¶–d+ÎüL‚všb%T3WÏ4TÃQžåÿè#œ–,<ª9¯äpù>Z^¢T¢!Æç_<,Zî¤Ô>ÑåÛºañÙ¾>„<ÛƒˆéOà£$%y6‹~WÙ r`/ó‹–üäžZõ'Œï1o´q~È­Oâ|ÇÙz3ìj¸v¥œ‰ýü_*¤a¼6Ðñò< +JœÛþvn=4[°Œxž|kލõjMÒ ètÍ\„‰a€å ŒšDA}±eù)¤K@ØýÙØÌ£|sEeá8¶IÊ6-Ð"ö—€ö/óØI\˜þ·©ýŸ6 ê—óBWWmú—œ9ã•LÊ@e̫׌”íQ?*}YrC¼“¡õb^8F=FWÚdù«ñÉ,Õ¼§À dkž&ísCjŠƒ›,=À–ÅǸ •Ȳã·y-Ó…Q¤¨±o5ƒHºm[)ߤ¶ƒ@mç¤Q÷(õñHL„9üTÎäVøEq[•X ½ã‘¢ÈašÊ:“FA¯¾X…ÆpQZg4 /¸æeçë1Ë:{ræTð¸ÑÎ&+\ÜV¦îö…¡pÂД + ãíÇãZŒ÷Á£¬’÷cz#~{P©‰ú’ýÚ©vCC¶ †ãމ鉮¼ËL?¹ìŒ…åÃ0)"B—ôu«3;.½ôAž%‘*´ ìü¬Ö™àÔàû}UÞ¨¥Àß½+§žƒ4AÔI£ûU¥UW»AcB.¸¿ó +dO}A’õràúA,7³Î*±ÆbxÒT1SxÌx£nT›HЬdOqÔûåĵ¢Ày¯ xé¬%¨9Ù2ÀìCölNçð&YïÉɪæe¶çÖÈ¢F*ÉÕ¸‰<2À]¢NS»©`*öær÷Y–¹¢öìºõFV°›Énù«ºìfnyÊÅ2Ax_Hƒ= ží¥.äa³žÂ4¾}cw¿ò•åÃ÷Ù±zæ2ñ”õácA‚OŸ7Š· Ã#ÎØ›}ʦ†õXÂ÷/˜ ^X¦\Kö‰"[ôhDß6•1˜‰‰Éœ?&hŠ1ƒ1|S&“[ÖÄ1 Û¶™hÙ)3Î5w' øœMƒ¦¼GËËg‡j1Eñ;PÏÍ~ñÀü0wÀƒªÑjæö Ç¤Ì];óêûµuòÓýŠn˜\²ßa^'ë›I‚å†K'+òw/œ™^üG¡˜B„ltRF4"âj¯[½{ifK™Ã¯õELïó¨)`ñ +]É3#ô ‹mÑ.Õ¾F~ÛÑ’.&fWlÐxøâ ›sÂ_‚Éwƒ|’®u‰Ôm‹‚õ¬Ñ C깃ñL~ïÑYö`e"îý;³ùy• €ËldQÖ‘¸Ý%†À”¼4œd™2Aó15ãv—¨Õ—o{©ò÷úÔ“_0¨á—Q’QCÓîêKƒÃˆYn«•¼|Qx͘sv" +£x—2VFw¢£r*בtCûÔÇP#ËÄ()“ÐΖH¼oDåy¬¶ ÙèßPv‰IÎ/ ed9­äB C&¦ßñ×+Ày^—^g°g§2© vm¡i-é0J-øÅ"s[Rry¨L#‹qx`7Ž¿{ÕFá.ÏýîÆaʽ43ŠŽò:)?²»vïCŒ>§š%åøì F%ûkúî\J(ð€ù1 Æ=õÂw Ì áý6ÇÈ-Ù³GÌÀÓÌìOK +L›¡/ÆŸ?ì8Ômí°dÐb˜—€ŸJ(±1 N`¨‡sëŽæ§¯Ý¸äRÁDΕËFü89N£Ì´„Ò¥Ä–í¿Œ²•Â×)™ó§Žb¡~^õXÏôv‹bØZ( #øÖ!®íŒîéxëw¼VH|Ò«†{æÀÌž´Nd“£÷Vj)6uÝ@€~,–·lv‰K96 Ý.•VŠ¿2ÇújA²¿5ŠåŒÀOc?+YâÖ#zIÒ6zØ+E*ÿWHq&€‚"åôŸL +?0X#á~ÈGt({!µžÐÁIÿx³&&‡¥)x*šuL—»¬1×z]LœÇ¢aÔ•&È §½â"‰ÄƸ“âr,?DÜïD¢¤}¥§Ÿ¨][ Þ‘gŠSy-EŸÙwþ¥®¡Šá‘²®a m¬¢èôI6¼) æ9`G2#$rä7’M¥DA:4¶"WV  Ð¥NøÜRWO^–m¡œuÄÊx›®C¹ì ¤Hféeµšå&WÞYBlz‰‡Ò±Z°:]m%ßVŠ=½éÔAÀ›þÔðØæ:ïZÒ ³Ôó¬·# A¢<9»dA»˜"§³U<'Å…Xy„÷’Å`¼LIåîí.™j‚n 2·ã,³B¤qèÄ<Ò¹s)ʧÔü7<¾qá<Àszå%+IofNʶ·Ü\Ì£xÐøÁLj•^ŠáŸMô¼QBEÜš³ÙMÇ–Ð×ÜO.©ÍkÕu)íB-L?´½–y+ Oú¢zŽå;âøQ×äX eÎVƒBíªøcÊêèG0*Aóy7÷ÿNô"ü üê‚k°äRÝ8­WjÍHA’ô9$­‰‘=À¾{{Ênf‚>À^ØYj†#…—`ǧ¹÷ãÙ¼…æ™ØzØûÂü&®~ÎÑ]¼ÞÏL%P½¹„-txÖ}Pv㧇|òâÆ½7E"¢m‚>0¥åë!iï¼K§îùö¿‡-R€Eýåµ–ò˜öºg¾„PõÛwO¨–wYðzéhOÚ:©éC8²DÑ•¼§ë¹]úwŠP;’•¯çzÜŸ·AÊ–!Z>cöøkà0) ‘ÕhÅåú,ÂT‰5Í¥º-k=“8kKö#¾zìµd(b{s t[r•^p\E´+ŸeÙnªŠ¥Aµÿ|FÔ1{t XxH®†ìÓä”uñ%‘¼'òd'.Ý&dšN!6¼=03C“DãN];9÷ªg/Èà;ÑÀE [Rt Õu(ÀÞzžÎ¿ÍгHR‹>"¤LGâˆÉ¤‰Vnck³F^÷“5T‰^ææ#Íä%$ÿ©MÑЗ2u6†€µà(!·Q‹IóCH–þ›z}ÃÞNóêÞ#¯“ –H ›iý@Óaé µ² cÏ'6›=pâ÷ƒ×wÐáÀÂév5Ýë€ ï§´«¡!AÝnŠ6Ês-~ÃÍ}ƒ„„ó€áïA€œ8n{ÖJù)hºá#,oÝY +•‰ŒÐ¡•#&k{aüƒ!SAPÑ–>ѾUÓÎæ«ÇaŒQMƒZ…|²„ô‡ÓFJô ®Ç*ý‡—§éµö/‰– ÿU Ê´Þõ¬¶ Ì)ejªaK˜€oqHI'°3_€Â‚}ì¡ÚZ\¾õ ž©îŽܨÆ4°h©!™Ü A³"LJÕÈæ‚pú®—1Ì8 +0U|CqÛÍ Nª­&µ¡Ã43Û$1hx~ Q@4êHÖbz1ƒNv3ûj@‰q‡ûOÒ¹äÁË¥9ûŠÓdöU€ìdˆš +ߨC¹Â1q6çw®—±b§”Û’ãØ!è Q‰_Ú)þÀ‰èr» ¦YØ"sLf1oÐ[;&‹ï?ãÐIûFæÊ;m§e‰)–§àÃO=8ä¹AáT©\=ëÐYhVM‡Žàþ7² Ÿ°ÞxàþÝÏ–Õš<Ú§’n¤°®[6 ¶{Û¥ D"žÞUŠ*,oz¬Zr„ÇÙ n-˜ê}“^Çœ‰w™ô¥ý‰´Žã˜59Lö?  ¢r+ùbªYôÂöë-PY2§— ©®pŸ,îéc\¹¤Ï\(IÉ~À†èMaÊ 1‹aG ºç±hnî}¸ê|FÅî?Ü6:¦‡çRëÈ“£Îõë„'ï‚$¢“ 5:œ\ð„_xeœÇ¡"æå¨ù(ÓØYƒ’goTߢä. ì$ HÒ“&Øí™þ°ív! Kb ·LÔZçU¿å$ï.8jK¿ú¢Í½Ye¥›×/,–úW"§¾òµªÚµ7§ñ¯Ýë`:Ió€$Taèý%ò8Çh ’|ræZ-0Ax îs(Á‘·Û\IRØs#¢çXÖ{€5'T¯Çf±CË:… èÓÍ—šhûÓâÛ=péåúû+ÙBÄm*dÁª’ÀNI~étbóFP·{,ɢ׿.-‹›O¡cq*?3– êÙÏññîÖZ4ÀTÖº5íö£¯ê?«!¹¶†±`†6Ý?×19îqi"âðÃV²PÐE¦õ“êà—dqq:“ !L L,¡æs Ëa:Kfó±0 á Àƒ‚gSÁ° “`@C!C£á@aF6nÁ†ã8”FÉ„À´€hN HÈà#ƒ¥À¥ÑÔpX´ƒÂ¡Ã&ì°#  4œSHA…‹V•vQ"ìº @©¸Ïš’Ui!Z>g ° øµ€H!`„ ¤Åb’EÓ¬Pé 0BO¨D=¤‘ˆÆå‘P´ËHIÁ‘—«ÀƒÑV"P8¹"€ô|µF'&Y÷¾Ö蟭“ò)ÅK‹™Ùägw[[O·Ÿ™¶ÔNÏ»önyß³½2[õ“½Ôm«‹§ëÚN÷½ñ5o÷¾·Ø´i6}Ýß×½×F~¶êùéþŠëÛ²q1"%e?¥mšÐÛjÿ‘õoZ«á£õ×H‰Ž(‚àwÍäoïeªq}6·¶ËÓ‘Õ'Éêüµ<Z¤k;ºkŠüû=¿á"3æÞ‘ÅÄUÎüv¿kÖuMLÖÜIr…RN£®~iÔVŠŽÜÒFZ+e¤h5“‰w”R ej¾³mËLõäc¿q§Éä%Óæµ•˜2²vdZ«O|V+ö›÷P$ò¶®˜m¿-º?óåJÛù/¶^"{l;‚›ÈÙ¾›±:b¶þïfv»U;g³ëï1ÇFÁ~øÚðÔŸ3æ¶ör#^¶îÖeæØT/ý÷1ÜåolxˆØXs¯÷ñ©§ºó+æc{{c«®­m6/þm3ßguÔöGÆê”KÕÚÞ››×ÕÛ}ê)ö2ÇÆž¥ÓòŽJwR‹4z·’¤kµö·L'SãQ©ù#Dëûââ1²E†¸ò´7êV:•Ðd²4²æZצ¶®ùÔN£ÇKoç®ö·–-wärï¾ÆÖÇì­ùß°¿™¶¼^ù¶±÷“mËP -is4:%©eZ>â·N¯KVk)¥‘H¤l¢PsìÅÿ_zæjcŸá)_bÕžå¼$«Têµ¾×dPOZÒGUûMWÓ›¨Ýµíc[ÖìßTSÿòSño›Ÿ·ãcÎU7ÿm}~Ú˜sk·Fï^æýYæo3çjÛuûDäLö¯ÜÙèÇ‹Ìÿ«˜í™‹‡ì‹ú¿—¯ÇšþûËÌ™{=Ûû>²mùªÛ­õZ+óÆŠùõ¾qz/cäln|ÕýötþöùéÇz¹{¨x«Çˇš©÷‹‰ÌÝÜ›¹á¹3~ÕÛGõvÖ+ÿÖrbdj£íVmZ£Ö#«9i­Ó‘ÐÒ©t2ñz«.ºž¢»¿ÿñÏÙB\ØÜ”&Mi¶uBv‹´iud-L§Ña³(¿“÷ºeª¶;DÖ¸w$ýý³ýe·{Woéç¬q_|ŒÛú–9wèÎ4*}ÛRJ)­ÆþiTZËGËÖ›~Ä¥dýqªòÝw¦ß^ò9;íê¶ÿÌ?TvÚo:™š›L£V:+…Û­VâµZ·Éò#1©K½M$Â{þ½uÆõkÏí×ËîvG´%æ5½mõ÷lDÖ¦ŒÇí”ý+ID{Õ{|oÌ’Ù¥R=öäVìÆ¬ÝÚ9ž³ÍdÿÍÆØØ›wÜø¿O™s¾¶ýÆo«ûÚ­-‘5rvjróVôgŸM¹ä¯6ë5o^ÖÈ”K…þ‰ÔƇÃáP&•QÌ0+4•i¦†Æ4£R™TF1¦šQeÀˆF…š1)`Ͱ,©;óÚ/ã·ˆ“[Sük}Ú,¹µßöÏ®ê?F<_edþ"‘ã¾.R.å1²&˜•êD‰öîwµ1UY·s¾kj2îÖˆÚòvãëUü­]ã7NgÞ´Ên‰ë,»ý¡¾?"CÿlšêçŒùOTDÕ­Û¢#ã÷*"6LÇÓKÔF¾äLÔ–-×ùš[yS“µ®*n;öDWG–üÚÚç*»·dn¾Êòê2ökªì­Y²_okw¬ÙëíÐ×QÝ&+"âú_#[þÏÖ›·ÏWÕ9ÿ–³Ûý²õfÜl Ñs}Ù³!²¼mß­‘1ŨÝÈ«mýE•òf'{6r^ï7æ_n¶üÈÈÞ[7oª®”Ú·zšËµÎóvßÊêËmïý‘‘µ=j_²ãçÆŸþëÌM׳W»½Ù¶¶ökÖ‹ýž|ÏÚjÅÜ”Ù[»—ñîÙo¾3¶Çãw†¬çáf¶SoÞlyQ½y[uÎÇæÚPY3•¹µBo ï›f²Õm-›g?7ãÖJ³ùòbsÆúÕòkú»Ü¬µVÌ|øŽùȬé÷ý5mÖmìÕû»!ò3wäÕû=GgèZí±çµ|egÈß:ïÓ5‘ÕéÞ¨ËúÜ®±Û2_ïD÷½†ÉÒµâÓ»Ã÷Ãg½_m~¶&zÃgèŸþžxljì›VØÙ’5Ýmí绺Úîù‡mÙž²ïiÛýSlš·èÍN¿ÊÖz:f7Û~ݾgOgÞeŸ_ñó¶¶Üwí{g§ï»¨ŠžŒLõ«þNÆc»Z=êeËëçe¬ªú›÷Ì\Ÿ*áÞ¿VŒÍ“Ù‘[;êkKeÆgº‡~ÎzÛîß5û­¾¯ý˜)UªTÿ.½é·g[²úù¡·²l­²yÞ®÷£³å¯pùÙ·s²n­°­³ëéã2å§"ªÝÃÎß>Ætlø×›ˆ ù«ÅU½–éì­yóî·|.ñ'rïÿv&»kcÚšµuâÝ·ÔÕ×ÖžÛ_Þ±×ÕýöݸÝ߻͚~ŬÞþüW“qÓ*y7¶nk>½^ÿÌÆØ2õp›G¬Þî±¶_}c¼Vüä[çÖÍ«ä~|^ý\ïtõCÝoì÷»i¶â)²Ö´bMïnÞÏÊŸ -!u¢J-—ÕQÝõ\Õ¿ýµdˆêËÚÙÎt»›ž27¶¦×§‡½Êx¿ºÆÝðšfã1Þ§D¹¯Ëv¿â»EE|lÇ{ïlWnȬ·®ÇtŸ*UªÎʈÿîLY+oÖ»æî§ ÷«F?ƒJíØÍ¯¦1¯uø‰X´rZø&–VÐñˆÉÙh)%aJ[‡Ä\Z$–a%tþEfd"Ø‹ÙÔéôR3½–bèBá–ÉžüËãìˆÁOÄå}çI‹¼;›^+ñ\b=O@0ŽgàTb q>D…*ðçd²ZWO±¦eëâð©Òt®t†Ñ\@A™¦Îéê7€Ô˜R³Á^æ± XÎŽI{‡@Õv±® $ÕÞ…ÁOÄ_Iü»+ÈQà¡c¤›E凫r{bFfz޹6ÎUcG¢ÄÎ OÊ¿16[Rã%ÿyû¯L(}à˜jÅðzg‰Ä:"ª)èÿäÝ^ìZÒ†6†ñ´q7i}‚‚*ÀÈst(ãù¼èÙÃj¦$0…½0ŽÔ'<›úŠp>ÁÇšhjA(ŒRnp‘y$ -iÓêæ+žÇ„ pÒ«PâŽhÃÀe†$½Pãë£øÏÜ‚$÷â"Q}À)k"×î_Ë’VøÏ$¿.7k³ã¢~’ù! Ñ1?“oëˆÇ¼³Žkò÷„)TÚ"‰{çGÍÕêT­cQÉ ÐŸ“—QSç}VÆ {ù°‘"Mb}(ç9M¦)·!tДïÇZ=üuº 1|Ž¡½M/eºÓ̃™Æi^ÚžaN=1©üR=P³ôžÉ6+ì´\(’µ„S¢.Êï–BåTÚpfô+4àHûIˆi|C¨1Ùû´3ò‹ÐW#ŽˆË´ ޳–€UºE ÃLèuŽë(³ãZºè»ƒ*‚ÍÉ]Å)þ™¿³"޵ê.¶xÃIÏô?%¦½$¢ˆ÷Æ4²Ú¹ßBtØBfÐèŽ!“ŒYž»íWh­jŸwº¸£±bÜAEv?wTËM¼Aÿ×PV(nÿ´ÄN4$Ý”¤°š¯€ùBçEòÑð¸EÎ\žßŸè!«ïÕõÞ~ªã8»âç¤ÇɹèÇ57•’ba<õ%ì8e–&âÑ8UâA ð5ê‘]¬ ¯g¸ƒÅ˜0<8©ßÈW<×44¤&–#&aÀñ€h£íNÑx-œ¢›|Ów~w“ÔYjÿNS^@RŽ‘–€|Ö žçÆ•Xÿ&ÈZƒÃÀ[ÍÅ—€ ¬×ŠE„í¢¦¢/ ølßfžkÕ ¯?>™2&-# ¹Â‹Où~LqÄA°™:ÆS„i„h㣃™· "„°4^9¶‰²h¥0…O:f:ÿ& bsë —1{iêÅöÎEdý²|´J8,³×ŵ̃ÃöL‘¤ ׯsá·FÓ,À’c›Õrè{º½CNð6m74}ÞTpôN'NÒk¨ê -qáÏ«w¼N;¾`ǫٚš¿™è"y—øò¸YšižüŸ Ò+#øt3½Ó 8©Sg9"BœmT BîÐÏeÛ­ G'L£8Àó…SúpWAØz„Ì$ ˆoü=ÑÄ¡[Éeª] ÑOúYf¯l”³ IŸ÷®Àœ9B=Áöد|}íN ²J1O½hA TA__ -¶+5Õ¾X§Ëûù¹–zœ6‚P<–smÈ6ò©!“&uo -eJ³eêž’¸¯~MDU'žÿ?5Îý´Ýû”Ü›ýl6R9úDš†¯_³©tö¡Ä\öùáGiò•ò@PMEct{p€Ò3馪ÆÂP4TwJõ„MŸYÀ°áϳ´µBìÓ&gS‚þ¯¾‹¦FF³ {¤á› âÔ.¬°ÎÉG(8ªO€¯Ëê+´ "F={Š­$¹ñGO±GD‹“‚ŠQç7–ß ¨5}@¬mDs1œ ž’á2\ îÀÓ÷‚±°…º(#Ý_lH]-]'²}-Wѵ2øÑtöˬ¬(…öÇùºo¼uÂ9 üâÆ -Ða}¤j~à `‡ýBÊ=¨øÍÑ¢m+Z«GÇSt9ªê9}ØýdtWi:Bõdô”ŒF %Šž M0ïÏ\[Â÷ÞÏíñ…IS0ý÷=¶+ž„åž;~™ÁF¹”¨Yé?· ÝüÇ&×5Q­cYUݼÖ4#Î\ qô´ $®ùç˜Çš§ô@â00äiƒ`! ¨*1½aRzsÆ ÄAØ05A ž~ºýf¥ øÁ²¼ØÄ7Á ;X\c]¬98n9ÊY_''Èí?´ÈõÅ‹&€ð¾7ÒÀ Ÿ”qò–÷AÓKãM{4KÏæCoÄÚ'ˆxʶñq -¸…ýZ ÛjôÔ1¦‡Åž¨Äè°ÒÜUVæ§»©äåVð³åöf¢ô‘yÈΑÄùIÓ Ý›‡Ëª$xh|W,æÏ]M† ¹Û5jqž;T%êÐàÓA;9…Çß_co÷²¹UŸüTß]Se#—§Èa8 £!=¡¬Få¾"ÒŽ\ˆÓ¨{É;“m:=.òBxÔ®˜_»šRËø>ëžÂ¨ -§,üÓÅ•E8…º,kˆhˤêòZÓ5ö¤Ñ¥Š•Â5áT:q ìc1ù*‚±Ž½¡Ø„…ÖtÕ}mX¿6öÔÓ]¡ºþKã÷ôž%½6¸·N›´ø0-‰Þ¤ã/ ºðu8 -‚@4} óÒàÓÿqQRpÃ'½Åä!ìõ}áØþ¸Ü;Ú ¥yD]¦(ž ÀKut×èìÖ}ib‚ØJäÁ*F¦Y.’pÒn‡Õ¢­ -©|’ÁÛ#r¾æÉ&:³£DcØ£Ó/ØË«Yô`9€Ž€ª-‚lÁr«I¸ÂP§½ké·3‚×ÙÔ¢­ÔX(`4„“ÑÀ™ ‡EC*mú\µ“]Σwáz°™ ù 5ޤ¡qkåÓ¶ç†àèõ«€4ò§ZÊG…Möæ¿1Uxïg¦Cfr’ÿ/‘Z¬’¯OE½JðVbÙ³ Eª¯¨bTÿò¬à‡|¡™u¯óüž§³5÷‹¹¶ˆª>þ§Àñ·Ý)ŸëhG—QŒü÷QºøÍñC¢CcIìûCYd¶ûc“¾/v[+˜¢D5ŽeR}ùC{î;>åÍ 2Š6¯BRÄÝx«¨Q&çžV ëyl‚ ØŒp©´¬o*zE.u²Üre_€_-Ò¡µ_Ìæ}æÂI…võGßL,¹‚K”àÂD‹BŽ {ÆF·_˜Àœ®{Æ»÷±°œ Þ(#P+;y¬Bƒ§‚±ò!¹´Ðˆ‰óÌ)«J[Ѱ 1?¬ƒñÒ-•¬O ÏiÛJ@ç?…7ŸVé {w0ÅÖŠl1uÉä¬\äþtp°· ~›R–_³ðóSÑÆõ+åÝQÌýW¯ÿjøxB]D¯çˆiK¬»Wî%ÉøSx»s5²?W ÿ`0Ø›öã-œ qgs®ßÀ‰7£™È¶óK -Uĉ³º™k%&„R}Òa(§*UjcS&æu¬ÂÜßÏ‹å§VL½2HûÊÚ¾M! ¿$†‰½EüuÓýHaa¡¶þ*{Lÿ¶ŒG1WO¾Œ çø#áG¡šËá0ÛoFZçÇY¾sKå5ûû`̘ûNÇMµlˆø;ÜÓ¾vB'XÓïå·nÄC$}^nÙWדõƒ„CÂóîùþísÛM)ý>Xb—&ªßî ––½,¯ªè#‰N¡ÿ¼±œ_{=ï'þ¼-¾òÔœ‰Nyh§wVΡÿ¼™JÃö¹•3×zÿyo·Á3&¡ºüÍÏ[ÿú ÷Áœ´ÂÚ^Ÿ‘C‰×…#˜KŠç B»?ïy«³3‹L‹Êôó†fJ‚©Ì{Þ@h¨¾ÜHØf—(”¦×sgü¼A[DI×qœ–Iž!5ámZ§¡Kf+>üç­6 Â‘ƒõ)[Xpðuå+êñÏû²"€«EtÊ^ ÊÅ9ý$ôóÖÛP abÜü¼×ßzöÚ™;4êlÿÕsñÿ¼Y@½"7kÍܬ¾õœku6Þž7ªøy£%‚ßR¬=ïêþy«Â7àÉÒ¶«Þ¥ý ‰îäPè¸=ÕŸw©´I©ç½ÏÞM¥ã $4g3¡¨ÒxzÞúϬr$=oÞøçSÜ¡ö¼e쟷ÒôC¨ç=/þ¼•ÒæVn…ô&_P<l¹„Ä%sÀRFÖ1uª_%…Fø@C( :bþ¤‡F¹±PƵd*[Ï$öØz‰)ù«QFÌÀ~kH(ÊÃFÝ[=qY_#Ç}kD×%2#,Äú*7H8Åÿˆ²†¨ç.>æ!YÙ†à;`„F8†ÐüZˆyÕ ÍoVk"fÕ=©)ìŽ0=†¶%C bS{¿`Mx dí½›pºwqR1ˆMmYå!5™ Ø+¥Lu\šrû¯ÔðŒæ€yL6#‹O¥ºrŒŸÀe7Cšà»þQTÂ?©|[¸Ö=ÿ•Úî¬>%Ž›ãÕ>׿ I[(Ú—(Êñ¬µ#sÛ@í{ß‚ü^ AüÈ*®4ÉbúØÎj‰q¯zXiX;>ÿŒ«2 ~gÜ žU3¸¬¬òä“ЀK†“¯é2‚¿½|f, ·ó-eE6ÚH}&‰ýlvA<τՋXºÌióïÜñ›òðû}–5‚<%ž»^a¤¡÷%"KÓ±:ö°SÏÐâi‰LíF‚v:Åâ)8æþ¹¡e§?\ŽF}!ÿi¶O[ñÆ 'Þ£þ®å—¿w¤¨^Ôq¸E—YM-‡È­ŒYB ɽªÒ‰&85Þ÷E_Np@¬›~ÇWy•vøX<£"É6q¹¦èqâ¸Úû¯›‰ÁAn„Æ£qÇKÜg¨LuDA<Œ«e”(¹RBdr}C aY¹8•££[¯J gŸO°~¾ÜH‘ÊŸ\­R‹ú¾«D.K‘Hûþ¢¶qûÞhmEFöÇŽ—ƾÀÄ夎Ü0T¨4„Œ¢Óá!@TÂ7s¥7Š[DK™ºœ„Ü-ÚK|Y¸&Ù,Õ)À6q©fƒ™Ã6iöÛ‡J*? -RªSqÇ~TÄ+ŠUo‘ôy~oÒnGW%(½ÌWÆÉºÏÉ8f¥À¤‡Ô]Ò5Llê]${²Zƒ -Oš`ÉþšÌp·ðÓOýFÄ‚ÛÇ,1»oèÕ/zHк2ŒTF(l>ê0‡$már~¿+¼Ç¥î•¤xuî.­vf…³"e9tµ¤–YáTdàHÏ—nÜCæ‘´,~D ”.qfÄHõì˜ÆuŸD{¥WFžû5Rd€<Éd¯!êwA—üA0$£ÚþoôånH qrgë³À{4½ÁãîÎð»óé…7 #÷ 5ƒs·F§ÿ@öš/¸£àîCîa.5åtwTð¶òFF§¢%%Xík Q÷a\änЂ0« ¡èn©á=i*I%q‚|HtéîmðÎæBqºjx[bc°`0X_Î Ÿ» ä`x;]Rof¢ÇÝ:ðiØþ“¦hÏ ¹Ô†Ü"ìbô»šdr÷´Xyù¡<³„“j DѶ¦òš!™Úæ…ËÑ”4m“ÝPk¦Äm®òdž‹ÿB:`žW»Å¾ÅO»™ôŠ%j[E&{¥¢7m‘|ï#GH­m ºB%c•Dõ}’ê±î¥¹M¦JÓÀH“Òa¹÷^¯~kÛtüÛ¶K!mk‹2!„ÓS¨m7™Û¬»e¦Éò¯é•ÆÜÚ6±{“¨‘|ìÁQQn¨á­¹cï¢øÄÅè Z==Öøs«ö?޼U"TtìrþèXíØíHTHÿ!4òM‘yBŠxEÎÆ]†ÌY¡PE„¨ÔŸ5ö}n팴#ÎNá[>;Aú‚Ãq¨.‚»pvd/8FsþÄÏ0[)K-Š( ýô-f¯>pØ&j[¸"ÔÆ³–ò&L/0Qž€&bÛžF‡´#3¼±uã÷ñɬT+ÁŒè°7žåº5µKÞÁ"=IL6÷Èü ÖzÔ=´—šAx$Ôt®½ ^°ĵ¦]‡(É›áõؑߞ]øfä&'1${x´)A'®ä)#Û!רPDˆí|¹‡þÒâdY'¤àµæ2¶ZrÚ2¿v\F˜{Þ„O>y£Ïl3ïŒ7¼nškiÉìMãfv~—ÍÀiZ:±·ådî×;ý†%§f€k1·›…0Z^½Ù9‘ÉJ±FÔìX4i°˜Ñ×[Ü’rà²mŸþØ»!ùA ûk/^"ùG˜ ·‘ÓÇ+ĽÓÿ·Ùý ¡íît ý[ä}Ú°´¬?@Ó¿Á¼[D¢®S—œIÆ|«s7‘zÓ¬ ”8Ébú§¦óä!7b¾Ö?cKÿSAW:ŠŠ£Ž7šºcköñ—h÷à -Hè8KÌé`ðG—?Dr­Ãþ«Øõ9©”ÔNÍ‘åã|ãÌ‘$шÄÁ>³q…Èû¢ÈIgX -‚M0.{¿¥oÕi˜%ï%´Ç*–ýz™Â±££IÒ}²XB—;IÇwr„ä¡úéFD`¸3ÊÍý\…ZÿOböbAÑ<½`‹âPyT®Únž‹å“Ge°´#6óÐÝá S€‹aÞsë²”"œ‹(8DÞa2ð”o‰L.: ’¥´ÿŒ‚IC)^ò3`Ä®3ä-‡¬¦cÃü‘& þÂŽoY–=rAp.HªOþµk»máñ -öÚµ†ìæá»ûþ@ -ßÂÚÕ—UÙSÉÂ&Mè½›p¢µÉö×6Ж]Àð’«)ÎWöÝn´”†æŠ„P£ÎlfÂjh•Єµ‚¯å«™£ :hžŸþz˜U;õšàhëÁµS5y”œŠg¡Ð­ö~)íͳ!*­qLêÙ§™ðýÊí%³PL ª}S¨½uÀ‘åDz—æ¶ÓÙ$˜g¶P¼“ÈL°u¿/Œø¦Qpú5žÏÍ!h'y¼”:TΪh8l~ÆŸÔ¸:mëÞÇÊ4¹ýnÿ~ôi'‚6P9Ba¹úæ Þ–ª“¡°’¼hv`BhÀ¥á 5K—¡ÚJ ~¬ú ×Ü#ûe@äËó4ªÚE¢hîѰ´¼|¾:Ý!^*,8-o[ΉòABbŠOyènjc߀}ÑËúgò Î#Oj1 @^çIV-‚sËÊj  º'vއî 2q­ цMéïp&qöX·“<Å u‘pý‚\ -­ÊQ0ÁìÄ®V7ÃJn}H]—@ˆì±IuœÒ°A—¹D€ý`—JÑ%ÌûR®òáÓþ\éêPú;¹ï4L¾»|ÝÖc§¹ç ”{hÙÕ«[#™Aîn3ä‚+4C8‡[']ûg^–ȰúÅ l“ÜÎAÄ…hl6¼-ËnÅ„³‹¬»ÌÆéåpHi@4Ô:ã‡xÆ`D¬,2«EÌ4´È:²¢íÑüCÚÏNF¥ U!‚\>ô¼øpô - øŽZÎ}PÇÉ-ÖÝ QZ VGÀw> ¼wKáõ‚C¤…—Ž{Z²G¶G§¦½—þö¨I‘=–›ñíQZŽÚΡßݳ¡ÁEÙ#LÀºø¶+°$¥è èV† Æ–¤­C&K¿|ú¶$íV†L¥–©œbIj•â¶:£“DÇÀÏ"b’œa¹˜¤ú85»Ÿ,IsŒù@Ÿ;W’%I7—‘ÙÄSµ$‰ÀÅeé(Ä.E1»òÞcÓf(¦©,]©w‚ÙÊ[fsWÌz>ší&w€hž—Ù0ŽbÞ @oË/Æÿð\ì¬e6Ë!»×S«‰˜µ­À›.O±f÷d<‹ÌöœŸE Àß«:©S×ÄLêoQËeÙÁº«8±ù§[#+йI ¹"Zǖ̆—y€ËÔ—X-‡Q”Ô2[D"vŠf8a\€[¦?@6).ƒ¸gkÝm^X#Ù[ºÆ±] ­ïX±”ƒ¢šMŒÇŠKYÜíÝÅ"ÒU¸±ðœæJ]HWàÁÚUQY¥«  ù4©Ê -)Vá@æ¥Òµ bÎ /]S¿XYh‚Apr^Œx¬dYZmœ@ux€ƒ1ÈÁYØÒ¬ÎXx«>IL¹÷Ò‚êR(ŽteD1–ÁA(0,V=ÑÑr Ì@¬Í…j,JÒõÞZ½þ6Ó!½ââ·Àa„¼D-pš:Õt”aÄOŠóVCIb¡þµå¤¬Ý=l«8hùŽÅš—ÇÛiŒìK3i`æ#@ó¯wõ„±[Ò߇…VHZ½Î(=/,šx^È.WJÒ©0©«²LrÂOh²;‹Fçz0ùÚiêm>@Уe‰â¹ƒÎZ,©hˆ…MZþ7­¾hÜ# õ‡Å럂æ=+%°Zq4TG­Ò“âŸátZö³\iÓWÑp¯"=Ðÿb¥'c£×X¼O 9Å•‘9¯kãY±"¬>× ‡Y’¾¨¬®ÜIy_‘­Á×"íeÌNUìŸ ¥¹‹·2¹¡jþ-V2ß -Ô³X{,ДU÷ÄÛâòòÇ~¥¨Ž¥N ¤Þb’±¨ µG½"7ž(ùXØ}`ÌïM!bu¾´ýž—•û±êNYŒÊ;:r¸ëR·|×Üñ:™ùX!ÇŽÍjPVÜR%ÛEKçemY¢Ão¾pù1¾–…±¤eTfì ,\rc-¢Lä­ú†8K0¤Y&Øœ}phe »rk9Â]ÕÝÜÚ>°°ë‡_bc%›Nyc™ŒìZÂ]¯XPÔ[Ô\‘| â¾ì†Så *]ïÉc+S É^Ds€[]Ѐ@AðäT -»qYÔÕÕûjÿWC ~_ÓÙæ^ã•M±Áê~ú -iÁÒ5ëÏp”ö+—&þô•Õ˜o -¿2sÌ›F³$F¢0¦í¡ÅÃJXAŒûˆ¯ :i‘H•ùåOÊ@dVl:ÃA½*wÅÄ:—eŸ¼bõèë`¬Ð:g5Ñ¥J±héX˜VX_Y£\¬% }ù9ÇeYð5c©Ö “”e²ÀrWÄYk¬Ã²´4^µÇ’[0”…Ž×ÚsƒQ–`S@ZLÎàáåe‘õX•Å$¯ÅXºU£¸¶¯Ð¯Çª»²„Óý’rŸq±Ô‘ØÆ>Μ%‡Ê·BV~/V©e½kq7Päã†rVÉ«‹uËŸуEID‚çyæü%L}S\CðÞמºØ–XQ§âG%¾i¼éêÏ ð†¨Æ0,§â œåkÌù( &Ú \¯‹å^!~šIk¿€Â'ÆÑ¯ï¦ ]’îÔì@wVóiÒŠÇÌ¿_–m}Òáħò‡÷ \‹f ³ü;Àê;{ªÏWûæÔø~X{üC~¦²9º4$d™fæÇ qÀ$ÖÁ$DA¯dIÚî -1£}Ì%fLF§ê@²X,ˆ2ZMuÇÛ©R ;jEÿ™qR:ˆ#à~&=rÏVÍs=_+èÙjz©êiÔ[ñž;¹wEÃååó¦ûz •­\w É»V'u*3žÚÿðoÃí’¨µ÷ù0—+öñ$ìx¯4o®1¡+7®•J—+ý.£‚+<Ñ+¾î €U+WŽÎVš¾ùÅÓ>stream +]hfôá …5t¿lÅvhÌà.ÇÔ5)’=ÐQ¼ŽkX·ÿv ^ÂÚìO +mU…(×Vw_O’’£ÌÅ^nÓÑ5DÒ.äÁ¤ÂM`7ú¨žèˆ Ñ› ½*¢Y r¥9LŸp°jê33ý$ÈšgËF9ª¥ÛìíàÆD ‡Ó‚æ³"Myç²±FHÅÝ)–%ÅM¸¢U£¸±¤,s#Ó-0”]Æ~V$„åå0%}8«º"uó"Å÷ÙWvëdž¡¨OÖÒ·Û¾¤×Õ­) +¾ïÕZ¾aliIÄ-#\ùAäµY«½62.`ãt.TØú&·³Û7S1’a·fIJ©ºÇìá¦ĶÔ7Ï…Ivâ‚;ø¿im -N‚ÂrùÔ¶vn ÄG)H;³ÌèÜÙ ¹ÈˆÿÕv\—gHéüÀ$T¡æÄ®¾0ÇÒñí°ÛPª¤‘â5C—Až]˜JØoÏÚÂù ÞL¤és‹ªn ,;ekOÀÌrM4ƒhePy^ȉxt襃iÀ󃩹ü¸ši»^ÿq-Æ®ÎvÐü&•Ù9 xtÒE<ï§h çIL$Bþ2«Þí¢(…9Ô¾þXdó¼¶!õ´’ꇡ@¥³3+%RªcâZgšÊç´m9ÀÒÈD'9å=°æ*tbê¤ÖQvpH æ9XbèH£Ò(m©ÃçØp¸Žf†œjŠRoF ÄY¨Ô ù–:M3®·Õ몶Øienù£2ï<ÁàÞ´‹®ãsŽÍƒßÉ“g—¥®ƒ]l½šþõ¦©1Œ§ãë¼Ü[æ¦ü'²+úW~ÀÒœâ¨{ êÄŸnûÎð1á®zþ1ÓÃýÙÑ;Ðòv}±ìNŠrö 쇪%2(hY Z…3A)´&‚Q‘ÇÍëãþ>2_+²Ú~ÃÄ5¿ r„ýi)HªüTè²éEÛåŠ3§áïù½>–\Æ­’$ŸCÆX²ææ ° %dóÞ|¨À«Ï +þ$ì…ýUP$ùùÙÖè’àZÚ:eiaåÀùµCp4$cć9 4 û“@1‘á +Äf fÍ14åϨ¯é]ÿ–RŠöìÍÔ¨§ÏÊã/f¥/“ƒ?/ü‘B®>lž¡Èg€ÿ/ß«p|ꎻë—ë©t Ú®>éË_/»Öu>¢$Íã¤ôópÙÌ>ÖH“Ps ÀUG ²YS YzÁòëõˆŒ[FÚß Z¹·¼2šë{»ÁI6p¸k×à ŒœRnú£ð ÊKÆI¡«ÔÚ} ›ñ+õqùu+•À©ð¹PK\\èïæ±±Fœk£â_ôð'´ Émeâtlú°I8Õ~W^â8òçê¯Øò‡“ýÓ¦_G Azà 'pqFˆdŒaÜû-)WMBdƒÛÆŸ98uÑSTr«cz8»ZùÜFúWþùCm‚9“V뤭›ª2á“4±m@BÀoi$éô>¿Ñ”–$þ!ŒŸ…TÅ¿‡ZÛ¢›f¾µu½RЋ†Ð&‡_NG?…· ¯rN"˜–ÿ¥®BhÎÆn’È5[£‹\/ª“²ŽáD‘E ½f1ééþ¶~ûì ÍèF +rÙeÛcAÀ考öã1ý?!¬Åa÷މ¸v¤år¶ž¦šò½³ßéó…7œðä¢Â.V3ó¿$5( ÛžóTWdsñçöÉì%"ÐGªn—®„®¾s{s¤àuæ‘LîP®¬Sé:~hbÎ:.7f¿¨½Ö<Ë%·yçðŸ2¨c(¤õ¨]ufÆÓ;/2JÑö…ßžüŒŒM›ÿù ò|&ý^d…Yù/N‹Ìhô2X#adÓ|:=[jy_y~+ÙµêP´Ú•«OÏ 5õ¦(uhO ¶ìaÑÖAÙß_Þ¼þSž[Š„ÿßøòjY€2¯Ë3íÝiXt„Ʊ|‰¢’Mjpß``9œ´Ðx•ŽÍœ˜§¥]ÿGä?Y’d{mfhgù¦ M_ ,«šƒkjÜï‹õ+"µˆcÓðaò¬í ô+B¹ID«ßöõ 07ô,ú‰Ê}U8Zõ¦†-D†™Æ#æ¬qÔnÑ+’Œ$CÎfç:FÓ®ˆˆH¶‘7LÝÚ5‹@ +¼ ôrä'ÄYðœLÊ.8ª*$¥|wâI†ð iB˜€œGca+¶ä“˜IEÈ“]¤"ÁaÓr*§uÉè‚çOÔA¼dÖå¤C¢a3€ÃTÊ`*%‰#d‘`ØÐlz…øXmF(„޼A³«"Ž*plT±‰OÐts:%(ƒŽŠj¶Ã±‘íD† UD@2#H…&@>%É1…d/ %‰I¸È8<@ªœ`hø¤ÁÄD 3WÖ0’m‹ +é]P$-‰Z'*?YQZÑH* yœ8xT"‡VE «â“¿"jPAh¡ ¢äDtà s‚ <«¢òd ‰c€8""Í +RB§Ì"áÀÒ†²1¢%LDR‰‡ƒ +‘K‹&@™ë”š’ly0É4 1já…" Ñç@‚€ˆƒé…`Á¥”€¼i,¬‰@%0sX:BD!-TÈ”ˆÄQð «@1ú$‚{È÷tf®UBƒ†N<ù«Ž6p«Ä ù €J*;#!Ïé!Tù8ÅBwÑC,|6ºàÑŽ†,90¬L©DhX™JÙ€ ŠPBñРY>‘ÔÔ‡På€/$]h­Pæ¢ÈhQˆÎ…*6. z2Ñ0,ÉW"ŠEdlq‰@KGæz9©x9©@p ™s™F¨AÄRIåNdÛbJyÒEåZÉ>©ÂDÍ4,©ŒI99h„&@ ÍB \6êtF4s•¨°ÜP QKF)ƒHYù °°pH$ ‹‡„mЮ@˜Hà„>róqá0e.ï€Ph†#œÒ¦@\€"2L²e±ˆ(I•ŽI¦ÈGf3/ª4­R)¡Rj†…g5!Íž¤J§lå¤à”VN  éÁ€(BI"Ÿü8µ€h‡FæZ>±€þ3BÁH¹T2W(dTJì„TBÐ9ÁÌåQÒÁÈZ0$°…_4+(àTˆ2å’ØØQf@dÐ HúÁ\V§Œ’Р.!ˆ ÇÉ‚¨âbE´ÂÀžMØ”²¢%Q!Ré¤\¨($s‘&F4Û™ %€Ãv²ð8NEB‹&$6J9+N”8Cg!z0ZdòZd@Êœ2"›ždÇ û0 *´‡Ü¬‚è6-¤@±¥`å*h%™IMM/ +(É0¤Pø à¼K¶¹XtqâIW]ð$  T™:IQÈ\X ¢VñrÊR z´yÙ| ˜ÈÞ¦2‹ +œ$ÈJ!)#ÌRŒ‚fG¨Q)xh¦)X(ÉJ)'ÆaEÒ“ȉÈ`ÀƒfÐÇã4|GÅÔ”fÐñ=¬¤‚BtÊ"L [ˆJP˜à€ðI†A¶$ tJFDIºt*pÓ‘±±¤>D*)Ì TTN ‰S¶°•Rd”Ó(\J$V¦Tþ'#(ù$PåJЦT2sY¨ˆ†C(ÀÈVÀ0@‘K¦ÅQ)'"“Ñ(•)¬Œ¥xB.¬udš%P§ _I²œœ2—‚•€Yˆ"@F´S:Uˆ +8·°4ËI I5l¢ÅË— €ÐÂŒ#K¹Y,%Â…F) ˜VH™ Í + rêhlh¶ TQîˆ@‰Ì0 ²’5RL"\v1±’à`’=w—R&¢ )'©åp‚/jP‚ÌJ*7:¥£"äùø’¨#Páqp哘ȅ… šíÔø$©å?,.s‰(6-Ä0 YÓ›\€6¡lSN Ÿ©`ijœ +‘ÆFv £#å¤ä€ˆf|t0²ÊH3 +R:t6X4 ËRòTÙÁH)2WCÄʼn'èCC†A¨á#2€PeHKD.t2×I@§ILŸdè hƒD¥ç\¦@¡QÊí”2#`’ x\(R*Ï~<.Ë LYBáA ,’™H!å:ù*QHÛBŠ_‘Ôc!X“iD¼ƒŠ PF« (¤òQòàhiHHЬnB¿†Í`©Ùl”Ÿt'™ áS*à }4tB™«•$KȨ…§‚=à +‘áTˆR2åêpѵl° 3}0².›OF h DÈè¡a$ÛˆL™òÒŸ)Í’\ÊՇР+p4”@°RÊ ”l¡“L–• +Í.6¥œ +‘F„³”Ä¢e¡51¢Š ‘¹ ÜC¶Éƒ £NqâIV]ð,¬H*2ÑÐÐÐYe¶„Íf®I*3v;™+óðT`ÇÁÍ,4XM (4 ÛòF6š)¤œ@öCDS U•dí´ YAÁÂ)sµN ‘ +QKSiÑgŠ…+¨•`Ø(å‹tR°Ì…ÊpÐXpËH¢qh¦ ¼“-kÁJD‘¥"¤aúdæJ^¸D`¦8"ð$±¡Ù‘$M.x2WÉ¡‚…œiŒ>™Ql$Й:<&°”Ò2×ÁG³ÂΆ££ÀBÔY••b,–$³—¢ PÃAF•—5Œ ˆ°ß”vã'‰‰l 6Jyáa@ôÀ"@&FS‘æ”&¹i‘ÕEÆ©M¾•Ì•‚q4+²N^|Uz‡` 4«à:(©€ÆÇ€ãD¢A³žÏH§€NÐ¥##i‰Aƒ"-Ldû°B)ÉV<+Iƒ‹ +>mP>!~l˜d† ‘Ä^pôAcSÊ ЉYH2âa,5¹Í\j’i”˜šÊÆ’D'̦¾””BžÌUÂ:tüé‚GDAZ@áhDBIf "©w ö°)9ø¤+9ødæZà@«Bä‚%d’°G%@@Z´’É %EåÚ q&2•“Žf®¬Sñ@b*e†ãšMœ`€ðð¬I“Ê$@¡š%hµ*DŸ ÈE–¹ZFj’¸hEÔBá#  «i§d£A”ä#j`šÈVc´‘y)8e§M€:Uª¸€´(å£ –žŽÄÆŠ Kæ:€Ÿd¸@  8‰À$ŽQ A¡Q•TfEær8 Ðlæ2µ`$U66µ2¦aJåç„„œ‡Ïæ”$¦Od*BôÑÔåƒáDt ¥œ@2Zô"Ú0ì'‚Ô¢ŽS ‚ˆE€‹"ÜäDò-‚ðHhÐŒÄà![0@2Û‘@hærPá’ò ÐdN›v£`þ=F÷LunÊŒyUïNtïìòÚàÀp6¿V-,V‹?ft¾êÛ”™¤’ââ–ùÑÝ9ÄöÚQ0¹¼‰¾ÿ.›vcÒŸU‘ÿÛc ‰ Kæö+¾d~mu/Gºïþ¹ S1—Ë€ißû÷\£"7L½P0ûXÛ_j>oÙq™îÝs¯Ù½í_'L:ºÕÿÿ×m›˜0¼¯¼ÛòjÉ0úr±XRRV*¨ ‘ ŒkÔ¹»ï;Å´{ЍÙïÜkŠyÞ}ëØŸÞØóô7s">lê0®ó9\vØRÓÚ­¨ŽÛes˜— óÉïêØ¥k]Œ¿ªã献3/Lçv"3ó¿öʘÿ]]Å÷ÉŽÜÐ%º¶ktßnû˜0ïáÛçO×µiK†Ùk ^/‘Ì5À…%Á BÃtâ!¢‚HXRÚÐ`AÅÅ¥dC€„dhh1)É)ÀpaÉ@"™«!ÃäuÀ„á$ Z6WÊ„A 61ÝŠyš˜wÉÂÊ´:Ð ’™¹$(Ä#se.’‘Ê'3—ˆ‹H±´Q ?ŠÁCSy<°‡x|FPb Àêt:-¤ÎG'¤E->HLJÃ9y8:R¤Ì\›Í&Ó9p‚°°éÈ\›Ífsppò€°†ƒÌEâ‘—‚„ÌŠ6V©õ8鬠8' D’RnX t (=À(±¬Ñ‚Ò¡@¡š•ŠÔ ˈ§2Fº!‘ RX5`(x0xØ@¤ö @¨ät|…¡”h +$:äi©ñ‘èÇ…"lÂǤqá0}*F-!èESáa ÀÚp 38‚„ÏÆc‚sšHÐl +ʃ_ *0sM°Ò¢)'¢ŠQ*[Z''%2 2À8™€F\‹‹&c¢Y‹RÈÓ bŽ…QFK¦E2ð€âáKâB…‘ÊñÑ-Ë: *à’`Òpà†‡Ì¥qp€A“€‘0…M5“,hx0h +u¢02@%V€dI*›Æ Ö$)ˆ„ý`(臀T~H ù¹H¥¡66$²)5²*Žþ,#S‘p%£‘l„  á¨ÑÂ̺èá+x(¼dÔâ„°4ŠŽ9ê¤‚Ó 88*2Õ¢xQÑL |Á *@øé¬“žQÅ» 2—§³N"EÉTaæP +ñˆJ„šB l¡(ÒAa³Y!ÈÆ†D–¹6j­>) +“Öæé…ý@1@%Űþ5 Œ b3Œ`ÀIÈC …m86N/ XqB'ÙfœXJ¢),*¤„H@±(s¹ Édô9±¬„N™ÖùÎ ‹ ¡Dh2£%º`1l4@|X$RŠ#›a`Hà0ÚhpÏHŠÂÄI(჉˜xær™ø€ÐÍ h&úL€:ëâ° BÒˆ.p‘M ˆd6ñ«la¤læ2É\) +%Ïhð 9J?d#8 "sU@¬ˆ*xâ%,°E²“IFRQyR4J96D^¶…ÝB$±:‰À–¹B-˜ÊCA ÁÚÆÃCàqÐ"”Œ +Ñk岆W’ +á2.±peÔ ŒF2s}2éeƒ]<%™«€d4á'VéÅàá@Á$S!1àèƒÄ>d(™EJÁ)cyQ92W3•d-ÍÀBD0’Ñ¢Ì5BÓ ah2 +l (1l´2n3Œã#0çãr€@ YNwƒZ Ö¡aÅч–5%pñÈ, ‡Êˆ#Â$3 ÒÂÏ烌<œ¤(°ød®$“TZ€!’—¡.x a0pa‰ BRºE€ ‘†Á‡f‰ —•V³(*'AjôI•„‘ÌÍ{)É8™Ë$s]˜62WF€AG¦‡Ës™Õ”d‰$¤…!.±Ð"4â@½85ÉZB2WæB˜HàØtD`‡“lÂàÔB +“‚Svú ¹Y´ž*'J™JI‡ÀED“¹P Ø$ÃHÀ”*ŠÂ¦ŽT!€PåɈ…Å`¤QZ`) K¢E™KÀÈÈ'p +ô"äVD*  ‡M)+X.@,›¹(B+¢ƒ UN„2D*-<ÐB‚˜Þ©2s‰PF-]¤>|DD‹Åâ²: 1àú`@ä~Wh-QÅE „-«ee'#£Ìõ@Àa…RHR„p¤òÉ&Ñ!Ï‚DªÚ¬„\.4|èPôÐ!G )e[yƒ=tȃ8ôccãà ÂÌuÐZÚÑå VS!ÀÔ N8R*:tð²N8B6øÍ:BŠ…âòœ8ÏCuq°`y˜ä¤YMy6!‚tȃÍ‚d.÷hN@hpBZQôhG‡<ë ñèÇQ4(ïF‡<)¹Ñ!$òàh£CÐÈ‚¤Ø†[ )glH3£C¬Xy4˜¼`d$ϤÄ2¨pi“'Áá£D ÍècŒ£,"XPò¬…†…Ê¢Cž± JMEȲè'0U2œ>!g J‹yš‡$eÑ!Ï^,<äÄ:`(2xȶb’Fi¢CžÎ +C)IF* é“"%C5U 6Ù ¶quôÇ@EÈ3"rà²É\™«á€@³ŠM P$ õD‹fÝ€ „>lLŒ(‡Éƈf.Šïd Òd®‘æB>©àB>I’@!©B”c€P’&š5Id"š¹Z4+'F‰c’í'7ZÔÙ@± tõÑô¥ 3Úx "Ò‹W„ ˆ<ŸÔ (°E„À„ÀÇC€’Aª…h”òµŽÀn!¥Th& <©ˆ—Ì>ˆRJ@Ý!•"‡Žô˜¤B†Õè“!K¶$FR_ ÑϤ”€<.ÿÉ®ËøÞ.ó#ujûã·ÛX—ä^{¿çíúmuGü®º»¨ÆÅP­Naø1Ôc­íÖê©8UÕ=íýÿFìm¯Mé/3Ý{e×õ¾:uÙ|×™»±ÝaãgŽ‘£KfÕçÞŽ¬»®ÞÙŽÝÛÕnÄ}ªý¾g{žoù9óÿŸWûlLf—ÜöÑ“u5s±ùö>wꜙKÉÿï[Ûk×gFìý¯­S^í—Ï9¾Æî÷îíQý=·©ïÜæ[Ý·Î]²{Üûmº»çg¶s¶o«gb¾w¢ÃgmìݶŸÉ Y¾,V¹\-ÖÌ)ì“SÕ:ö˜©tn¹M ¬Ï¹;UÛîcÈPé¸W-çe9L‘Q{3Æ‹¹U«Ÿµí=µýù›:͘ß{ÇUÝqӹǶN3$=æT/Ë©Ð=–ÚzØ*‘1fõcªÚl¹.‰ãw»Ôöü$ÍTädo|íXJÏz­Vb,ÜǰUŒõcc*Õóo­0Ùdúïïæu¯µë~T]÷˜cäÞCçÝëÛzß[ýe^mÎç}Ø¬Š¯¹t£W}ž®í¯Ü»·üï_ë[wÉüÓy¦Ó~Žw·]:fsÍìë‹ËþÝÖéº>EôçNñݦºßn¼O„Q—/'.¿u¸œüÏ5ºçð#§[·êö—Ÿ=ûïóÔ×÷Þu“;õäÔeX­øWŽ••Ï1ÂþYŒ¹üÄ]Jóešúߪöûsn»!{õöu¨¸(Ì[©æúŒ=u‰¥Ð1 +U½jzïÿô]rvëvæàÔämÕ÷÷½—ßjjóvíÈH«j•JÞW¡[-êaëRŒ­P›˜c±šQ+U*Iuõ_{;UݧíùGØR¥XOÅbEÇ4W(ŒQ,ƼՈ9Šß›1M¦çø­gªãwœï}{ܘuøžÓ5Û§cŽdÍV÷Žé­÷eªó÷nÈŒñ×êýöÛK×1ê‡ùë÷}ÃîTöunÏDÇtî¾Üí¥ÛE}ÈéÚ±%s¿§KÌL×¼Ÿcã>Ý÷ú7õÓŸ?×xß:ÇêÍùÈÞÿ…Òû^ûz~®¿ÏÖû.Œ¯ûçíÍoŸÃ×ÅMçöÒ5ÃSU‹›Q*l-–BýÃ4µŒ9±Z,×(•{Ÿ ¾ÿ89±³q6C¦-F”;UK•,¬¥*æRCg9†Þ-×B}¢6»2¯¿ûoê”9²÷ÜÑÓ9v?_ýwéïmf¿ìéüÚØ)i•bE¡ZšrªØCõc¸è*ÌWµr©TJ‰ä^:'©ÿQŸ*¯k¯>z«Wõ.¢0{Í)L¥rÆÞ™…µr[«ÚÏ4aøÝòês¦÷>×ñ§ãæžýÞíê>êëæ#»‡Ïac{q÷žãÃuíµ¯;ÏçÎíyú»îu©ÏÞ^cØ¡»×ÌVmÿÛ®žï›³ûÿ‘7ÕŸ*'f?ÎýÏgÔ_ìÕ÷üÜíu;?uÿø³±Óßew¾è|ÛóÄtÿâ»ÖçÜ:[$½=—ߟ¾~÷úú°•sS¤y±¹1Wuñ95»Ý½çÝ.ñ½Ö¿‹ü¹Ï_sž˜÷Î)g*ŠåPì¾bÅPÎQ˜{)ÆZ˜JlU)U‹Õü|—ó-šÜýý?_c†,Ýc)kWžJÇZÙkL1–âEaÜ(V …émRÎwígFÝuˆ™Íµ3‡¾ß|¯îQÝá¿}N¾æÚ3ÏÆNvŽÜ^; ‘…R½cÕJ¥˜ë÷X +¥b졸±g=ªUÚÏôغۈï¤t©µñ5\'å²ûW}Ìm¸>zV‹å‹…r*ÄVísªf̹³°‡©N¹ÊÙ™L‰ßÏȯ“ºoèÜ™9Öi*ºEö}ÿÔ3{Ývb;Üö¿#÷»øùÏuÓnÌ.öÓöMwÝëÎá[Õ~Ïê:=Ý•±]ÿ;n{í¯¿Žßó¯'ÿº¯Ólž­®«ížo¾o¯~¡èóz/ºçÍͳ/L¾×LmÆ÷NÕµÿÅŠ…%¥ÅùÀû8þà?ìý²É\&,.¨b^s/6\ ÓœÊéÈ.³á†AÙ¹×B½ŠÕj¬……ýês½‰1 õÒO51¼üçþþÓy{¨ Ù¢Tø­«¥êÇZªÕc/•±•Šó6?gLÓKç¾ü0_óvæÈv§z¶:l˜Ê»î1>vsíÙº3ãÃv˜$ïL½—ˆBUbžòÇTªg •Z=æP«UÊu;&yg«wâso¬KâUôwÞÚXwÄ"A©P.(Ò¨ —°20¬Y/³˜[«âgÌßQØsË6:Ì©´SnU›Ì%¬ FÀ’â‚ÂìõÁ€µ:ÁBA}0)«,‹ƒf1 J…-˜L«ÜîÔ=MÏÇOvct×¹ö×¾ºŸ9F»Ûýæû·ÏŸ}ýµdÆü{޵µíwŒÞñºîç—EC&“É\,”Ê)%-KŠK ‹…Ã"A©°\PP-$ Ë€ Š%ÃL)Ô¦ÞWûÖaSë_Æô…=‹•úÆæÝ×-•>Ç(ÆZ«Naÿ)Æ2…ba½…Jyº”[­TŠêÕjûõ‡½–3–ŸKF½÷ýQ¾bTKû¡{¨Ì­XŒaòcÛ—–SÖŠ%%宊î¹óÝÔÚÎm>:Çõ¦íܳûoˆñÇÎÄÇÛÙÞ›L˜ä_Î s]p¼tX-)%«u™ñ™×Sw›ûký·ºÚÚg®sÙì®ÑÙ„éw=ßµ¾öÜbÔ&¿¦îsÿ}fË÷êV÷ákÝߺFwî8_v¾óf¦K}‰‹šëÙ¨­šëÔ)¿Foßf]m¾¼›ì°ŸæÛ—Mû×¹WÞ~Ïi·{¼MÓeórë‡n·Ÿó¦ýÐÙ9Ä^u~óñË}Ï¥öffò{ôlÜÿê&§7;>Þ}­ÜêŸ?ïdu-ó)?î§.³)²{wþœ­û1ëžÍëø½ ³ÍêÚO=[Ñù]÷s{ãþììç:»ç‰Ý¶ôŽõ!&cV•s™?Ÿ™ó÷e»:·ëëo].«²úËl¾Ò5/ûþgÃnÇ‹Úí¹›Ûÿ±aû6;w¿·lävÎ×}ú~£¿mÝýÿîÖeC_×÷˜ç§Úéö¹òÃìÔåLÞ|ÍŒ¾Ì¬ÎÿïkíPyUý=¦óîg®—?““?Q×ß:r»·Îõg:{¯+ûsßäÞæö/UºŽ¼¸ÊíšsÅçð}{·cü÷ÙÙë>×Qö·ë×÷üºÝòSçuÞØ×ùCoÎéÿ´ñ›ãÅôc»mÏÏ~¾î܉øíYÿuºOì-{1­˜¬êpŸ{Þ¸ùeîsÏñ¾ÖO÷Öåöªn·/&Ÿs‰ïVµñ²sêžú··öŬº‡˜Íé^ë} ÷¿sûÌíÍùbºó_êg7·ïøèÖ{Ùµßç¿é.³¿½—Í‹Ïøòµ|‹aì§èô·_Ë~çŠß©o5öc\ßó\îývèéŽÛãçšï1ºÔ¦o1‹ˆùó›ócX_}5ŸËoù^ß?MÄÖlï“þ¨N›[fçóòú{úž˜Žãöc\Çü¸éV‘óyÃ}Œ:çòéKuoì¿ìøýôýëfn¯éovŽÛÝ»~÷¯áþcÎÝ|ÚÙvãïÚ‰y1Ÿ‹êý›[ïîã>+~··©’ñ1îi÷Ëvþrnw~[Æ|øš³c~DoϘwô‡ÝöRavQŸÛwß\;í}ø0ŸoS_Œº§Èüüó5îÇ$÷÷c‡¯µ¹/&¿~‹ûÉmû¯†ÓõÙ±S_º|tÖÌ–ýNÞE§úú9÷¼™ßé·ª_³ÿÙUû½um÷:×D|§û¿ûëÜ·{TÄöËËïÞ=ÙýÙ›ÛÇtïsïyµµ[Œ6³ºôeç‹ÎïU]§S]LvoÄ‹ÌØ?æ]'úæk#¿vîFÛ?¿y_ù¹¾}˜ËïÚó»[õMÜlÎ-¦WŸ»{þ½-û/R^­Kå”{_î{‹o÷q¾{tÚ2÷q¯«¿¶ìÎúîØnq»=[t\LçmÍA×î½]ª'¶æ¿LʿܘÓˆœ›ùé/ñŸ«¿m—Ý‹üÛò_*ÌîëíÌÿ÷Úöbž÷"º÷nK~ŒçÃÄÜ÷ž6îÅ´çú;í|ìˆüèÞ7n÷Ü·Ÿ·îŰjç{û6ùé?tU§Ï›_*Œsýÿk®U±Û=tîµ×‹yý~‹ŽüÐ]ç6³{í{1Ëéï5ÿ&›®Fk§§S× }1Üîö1ÏÙüÞ?tútSßæºÿ—ïéçoËÔ]õ÷ïÝ[úb’UÛÙ=§6å¿Z2 æÕºLÎm?ºtŠë‰¹ÊÞï±>îÌ·ø\>Ng ·SÍ]NvM‘×ÿ]v·Ýl|¿‰Ì®{ñ­£»·èè©îì\ÝWYŸª¶õÇ(îӜϮ½/†]ï:o께þz£¦käõl×-ý1éV_Ÿ·ãmè³/õ=îKlÌ'®;lÇÌ-Ýbrµ]·»Ö†þ×ó¯ÎýS™›ºÅ¸÷øüRyµ¹­[Œ§{Î\÷× ý1n¹¶>·ÙØ-æ¹ÿõ½Çø-ý.¾ëfs·˜§®ëßz7õ¿.80IÁ‹„é륃ÎÀbµZïT)_­ËÖ¢0g-c«Z9æ^§•j©®‰A¶÷;+o{¨ ™ê±P‹™s…½Uêaˆ)Ær¿…¹Tk…zù<Ùô.Q›Ý{oê4s›ë¼Ý¶>æ^ÖÜ÷ß¶N³fÏ÷Ûÿm’<Õ±ò[«ÊÄöi +S኱+æ¬ÊTašP±1í¨ô†q4 bDQÐ(‰ŒÝ£ X Æ"¹0ë>S6$B06$"HDQ0B€0A0ÆA,ÆÅs=H³µÕæ5žÊø‰£‚$¶vÓFã#g³is‘ת¡eM]‚3®ð:¢v'ûµì°/ÞÀ9ˆþ,ÊÑå-¹âè=` }ƒ%®ú«¶º“VÃB.n‘ˆrÌ.µýj¥Sì êeyÏ0^n zn}±~l¥DÝŒ;%E9®Âr´jÞT¯sÖ~Mhâ‡|Ðæ!Í^á8dÄÒ 7€1uÁ@Qb å” ¡ývƒ +„{˜€ƒŒ¾:3ƨÀÓb‰«éJ:± 8CL=ÏK™²S"J:¶…R^bß³„sk4éU&’C½ø-õqOïF5#Ê¥À _†ÙOyÉ~"€V~‹Ö;OJ×ȃHÓ[2T'^–ô$M)ã4gH*cüÜVÀ…¼LYŒõ|ezH]~^>Õ†ÎÇõ0¾*¦ÝUGÔúh"E$5Û`€J弘YoßE¼3µÚÄ»{¡–BDÈIºp×ùª¢éàõÒÍÜÊï V¥w8ÕcÚžõsm€7}RIÅ7:_:²ù­ÆÐ4žÌ÷¿#P2'0âƳÂ[DÔOqý3C{@©u•Úxábò6Q¤P¿sd¨†|’‡VÏ/ +à?,)K¢aPþãz®}²çÙæ£€É§CŸƒ:e,I.¦DahZ‰å²z©öP"C‡}làBq©2ñE­ô7n¼1Iö ä«s²5‘êø×‚Ã-ü‡ÂßÜ¢š•e+rÒŒŠð#‡è,Ä&ä鈛‘£ëÖ,ô„iUÚ"i]ç—ÌõwT½oP‡tJÇ>QÛHÎÇY™”À/™c;Q6ýõ¡$*t–bâ‡b¡|·Àõô(ÓAq}L½Âô’è¦~=?4žôÒˆU9ÔöIÅûÿ“ñ©6ÅÒmÄ>1¤“C²bMëMÉ]¢T|…˜ìPÆšÒL•QÖÔ€ã7a‚<™†yb¼OÓ®”U +˜¾Wá0V¦Õ¾µ$KGˆ1"uås‰ƒN\T‰ÒW+NF*ªˆ¹þbáD¿hÀÚ[Ð+Ôƒ¢“à©j^ZóñÞ0‹“Ìsì+ Töñzà’tuW·&Œ;Íu•´Vµà:çëé60ëÇñ¿[ÊØ=Ÿ”CX6ñæFü²â®@…æ¢5§UÒ AÖMI„µî÷rË/a¬' +êCàRxàûÉ@žfÇ¥éíÀÅ›z£‘êEóÔ»YVŽz,аé™ÐØ;ë^âIdËGra ²‰Wªªoøp[?ýމfó?úMéßCõ 9ºXñÑj 87 ðØ ~öt}DÍð²i!О|Ìâ³fQw]2]àpùrÍ^È3}Ƹ6ëý8@„øw7¹Ðšõümˆâ]a9·hYc ÅEÐ ¨z ˜‚Ý;' §Ñ {ù¾.þÈAŠú §Bè»i3ÓZ{Dñ«Å(q3‰Î¿ü¹ýIdÕèWHòþ3;‹Ù[#»wŽ1•fIIöèå»F/®åÚíØ€µÈýÒ¯Ñ2„C/¿Î†BðÜ{çžåÜž4݆Öóí× nVï2ëpõmpq¨¾Àzœ D|½Þ錴M,9„¨ìÔìTd„òN„¬`™fôäŸ@>6A6Ð;Óà êõ%jrANR A6Ê•ä‡nûXÃUs²!Ž©öÂÑ¿Mzõ@iì!ºN6~Á=¿ÆP¼$lVÎ „·ÇP/ì‚Í2nshD$8ý‡} +díú¸ÿbÿùë1N¦Û*y÷B¡@žɱ•D4NÅɈˆë¸Ì~ŒiQê’— X¥’Ö£l€óEʤˆéyíõ0£ÌT‘Ó 4]LD–Äsœâ5Æ~øÌûð…û,‰pÞ6…)_S"é¬ûT† >5¾RzI nC`×ú>ò÷pU3Iî«Cñ6t¸mÀ&§- ¤ðg%ÿkGég»†*q°·X¬2£-À,öv2Ð=—LJ@ ÍŒ'"aìÒ¸ìÚÏeÔ=0û?|£C2½¨{yÔ2kÍ-ƒÃêí(¹©¶ž¯ô€Âm™ðn³I "¶‰¸Ï3‰‹õÅýþ=x‘ x5Ž>4õïÉ7ßîÕŽçG8ÄxáCKkg1+È@üÀµmc iãd½è‡þÚ÷2èrqpuBŸT‘y +çø††9p’,PT¾‚iÕC°ØñâB "lž=7Š-UܨÛîIä”3¦F¥¾UêŸîúØ©³¯lòr@Ôʪɯ¨¹p¶ƒÙð†1ÇâáUÆpDt¿ûdy~‹‰˜¹<'FeªúÑõÞÚe·.æ<®½ñôž}’®«C±“—‘ª‹¿û<²! ­e|,ÒÍq1^ÀÆâ +âlzŠïªþé9VKP² ;}Ò–nšFÊÓyÈÔy‚Žåìl “K8%ŒëŽïbõ«;¶xzø¸øe˜r pñ½Ÿ£}ßnÄ&Õ–BÔ”c6½Óö‘˜huyÞ´’“J »ÏïQp– +S>Þm ÆZ ât[À^›7Úë“-/RXb²… –m€zµ9#ûÀÛ™ á"á›ÿKwz‰¯IÕuTr>ÜØzÓN¬–¡…żà„L=hk$˜dç"œ1‹›?tÞ½(ÀÞ§mbyz~”ëªâ"L{f·Š‹d£èˆÂhkOßc(ì¹€êF$o5Qå2?ßÈ‹¯ ü\BËTÆQý’d1²vÀ íkóu_¿ ¾Oã|ùæÖ+|2wº;ÔäNX¢^y.Üý7‡x7h¢±pNkšºÕ|Q[¬s‰²1(¿È=<BÂM?DD\®¨#X•ÿ;toœíOžÞÕ1=¶˜¶ˆvŽÐ²dz<Ô +G0d ¥¯Ò …KOŠ,¢å?ÑuH%´Lmôh£‹«,l¹`sÀ°å'#(‡g.fJ+Èv‘?Rv÷[ûãì´á¯ž®MÔÌ#“.þ€²¤§¯ñ‚(XàécŸ¿ªøö­7˜ò‡¦Š=ßeêÙ^›^rëüú㼌»(–¹ñ¢^´uhÐI³È\ê°gDß2/œ3Ž3e¸‘ð×ѯx ñ–0c‚lº¥‡RŒ¦QH$áðC±Þ2¢2·§Èe!™§~¨Þûºl¬‹9‰×côãÒ f¤•LZVøñÑ÷Ö;Ý–ÑÏ*˜px^CC¯åøWCý?Ñ_R¶b*ØXÖ–P´…„чÈÂaý5•âï ¤“5XðïY8}Gùl/ªaá„ahè¼~îÚsCãÐ]±/ .©ñÂN~]ç»kÑüU&4”ÄÉ»³Èò0ÀCÁÇEp‚šÒ°D1æ‡æ_ŽšsðEÉ¥Š]nòBv¹LùU¡® wšk½œLDÏOÐÂô┺%zÜÙÊ;¸!üm Þ‡UÇ¿?Ô æ€æØL/»ú£úþþÀ‚V§w²T‘;ý$×…?Á•ÀCDEÇ2˜­çS=@/‚L3ÞÙ©f¢õœ è­ò8ƒÇÖ³nL¥W©!Zæð/žŽeB^RŸŠŽ~„;îè ~Ãy4µªž ßÝôÃ1£*ÔЬòI ؉ +/8âɘ¬æ*GÿУ6‡ÐšÍÝVX¢³„³4¾X}kP¯µùüÖw-H…¢5TD°DÄ—TÁžÙø©H yUäÇ,¼ØÎj–9'ñÔǤp »j4‹ž ½‡÷ ‡ƒ™™þïtv04˜–qP†cÀ·òm’æŸÌ!›e®ñYæèøÜmw·ú|ÖøPÖÛ5Jè +VÂÌ.GÍÉ®•v¡ÖIqšRœ)uî á{dÉÖ›ØÌ¯.m>°Ê¹£3òŸXŠÎªÎ‹XÞ¢Qnêsù×¥XºBPÃü~{ò\RÕ˜#&Ê%üs%0Z +En™á«ãu¥TOÃÛWë¢êVe|cf]×ÔÝ‘þÏeqÔèD}9ôŽ”å’T)'¥‚ãã¬ÍÈ9Ûéa{ æ: Ì ±p&­-— j¥ŽÞ*„îÕŒàá›Á¡ì™¾>º˜$BwC.“dQÌ)„.†´z²~[F$B—hc.¤:’×Ãß‹¹&nÈü×ÐÅ•s1tqõDè}QL¼ÿ&B7W†\zËdqV“&ta¤´4€ôÒÁ¿×Ô)á(ØÛç˜(wWÞ^dJOW”±rK~¨%ÒKäP˜U®h&wp()ò›† –:fÞ…2¤é­K1‰asbí'È7Ì™@cz­+”Ç&ÅíL½KB"ß%æ™—§Ë@Îtîñwgx¿ ;ÃïÓÅÐÓdÔ|_g×ä ¯¡61€›að̰;Íd¸2 +«1gê| ]vžÈIlʽ +bá"3SÌTø«,Få¦ÖeÔ­†˜l +«9øu½¡¬“P— xþHòäöS¡¢i«–-‚ŽHZED̈U”gBl°žS1ÀF› j×r0 Sk"|÷rà],-¼ËÒî§¾çÀ¡i$þrG8/ pn()ªØQÿGìh¥Ü½!@ä²û3 æX¡ ƒþþAOÚ\2À^ü¡=ùò…áS1°fs¾]køqÀ½Å„€‰DHâÒNRLëþ!j:œT€ÂÞZª¼à K¯jaã/©£ÁéºMoOFs1§½'øÆÌ=ý¾pÕù34_›@ [Ý2·îD¶N9>dVÚäè…_³˜þa¢ÛUÉÕ¬¾gRˆÿÓ1ŒþÊ`ÿJÍT:u9éLãU;vs~‡Î9_ 1µÖ;lø]˜IOïâó3—i5‘…Á…‘¯ˆ¯} à/¶'}ø˜ÇqÉò~ ±îËŽÊÚÿ]­PAF“öžßåÚU>cngÏ×'dC·ƒð…Rï$½büÔ‰%ò’éu[µEİrë|ÛhX¹2É v¼×Ÿ)i­T潇jE€Þ; ž8°ŽÅZ¨™“MÓÓ|Ó[ ÷z„eíÀ#ø4$T•m˜ª‚ÄYªÿŸ¡ÝäSÁp3¢y·(a´yc<Ð ÏâK2 ‡Í´.ƒ±Ä]Ôÿ$Ð1¿n›%ç÷‰(ꀞýð]vöј˜¶øE¼…i^¯˜»_ÕtzsÃJD”€l£¼}ñF!l¦tl-©™wÕ§4Ïq=Ûm£îC´8¬KK‚üùTq&ƒ¬±ï&”í5NÁ?N÷Ù +$v’#‹>Ü£À,S\<¦*a§G” q ª}Rr;%^#Z!õÇ;+ £)š~ðÒ±U»FìH“ #Ú&×XÆy¯kdMk¼#-fùÃ,i­ÛºÎèÍ!ÁÍ´Å»^–£*–ðK´Ó¬v“iÝIw$= jëIQå”û,=kiØâô¸|Ù±|É fnàÝZ:ºww%z,”Šâï*Ø å@Ñ.Ű ðêŽru«$'Úÿ›QË{3<”ÔŒõ0ÅÎÎ#7gWÂG“Ÿðúâ„_Œ{NÖ }ï(‘ûH‘Ø?»ZVT`Ýw£J¤•—ß_+^|Aº ¹"EއdH 7 Âþ•î«ÅåSêkKâºã!”Âÿf6פŸû©(É¿€|§S±¼¶í臲CdVržwçgÖøoÒJP6šØ{SiìH<;þ:4Áï·ˆeÿÈOØ]9µç<È";³‘Xß´(R—Sx ƒß׬ÚÝœ~­;BnŸ39P²víü2@kW ñ­æÜϘ%vUdž‘}‰’¥/ Kõ@ÝM+Â:‘.w¦¿ïcÀ;Òœ=2DÍÜÝPÕ?¼šº< ¿ànLs$iIDÍw?@bð¾îF2¿ ¥X…0¬†–Dôº©Ÿ3TøþH ºb’.yx¿Ð8 e¦’èvw72ì‹Dxáîä~TQE l‘›€wìp7ˆÑ©&\,*1RÌn»Ëg¤Qš4ƒØ™% Í„Èvl§ +w®•´ˆÝ‡ø!r¼¶%^ï“EwFå5†7ÿ3¬Á±¨ŽÜO>ÝÈÁ1„Ê1ñ¦Ô¼Á¼„© Ú˜.‰­ø/3$g3ƒºŠ0OÆÄ¶äKĨËfNÌöû÷ +°†Ý•àӑGc‹Ìû ’Yzm¿þY<«Ño‹…x²Xè 4úWp¥ÊQ@5iF@ìY³ùÊ" ÄÞÃÕŠN(>Þ»¯úÂú ޾‹Í° +´Gr!èÉNt£n6ÿQ‘ ȵhqS}Gèq¾ÅÑåtLF²ÍMG)Ñ;d ‚*‚¤dÝ9Wšî¹£öß^Ûš0ÓÐ@°,“ú•AhDÉóكćLß_²Ž¬‰¬|o-]íP~Ð}P¯KÍͺA$3âÕ_n:qù† AXNƒåùÅ%ˆŠ[í Ð,Õc?ûïGTüz"¶Ûÿ¯Ù9§l!XM%µQ÷GØê6KÚÆún#¿µÑÇú±gáNWŸ$Z¤”=5ä€u'œ:€V+9>Ý\ó¶ºn¢ è¥Åø$5d¿ér1Œ˲¼PµTì·éФ^!…å|{V¸éø€¢éiÃò¨}¬9FÑàÝÄ ~ðÇMÏŠ!Síœ4ŠˆÒ³Šô³nCu&7†HEƒÔì͂М=ýM?ÿíCŠvë:V™ƒM±eèäfiД2ß‘ &´­®XÛ À7?º +,.–{‹HšU¾¨ödp³/7¨s•òÓºž'ñ=¶áíðvˆx¨Ä\´ çÊÒ1ÐÛ° Q;†²‚Z•`ãœóKû<ùÏr†Ñ ™I¬+3^=ê8€ìÓ:n eA‹‡vm™·}c˜iÑgíAû 0Þ¶e÷š¤[ áýåL%ô\í“_BÎ̯Ç"¥’&à ¡ÑÚÅö1Ã-…+®²M–zàÔEÄwR’ï‹STóÞç(ÍÖVT“n^ð¦®Á¾lvXµZ¨„ÊÔ\xM8£ÍWŠƒ"ïÃzè™: "Üt¬éÌúE "“’Èà²U¡tðxV™_šÁ›§(O8¿!wZ•:ÓÐX¿xo”vo¸ÃIy¤èØ.s‚ú²q¢˜«Ûe¡´>á{Ïà뜕iäPß®AƒÈz°™¨nÉDD‰ð|íRå‘-0W kYÔLE‚nM…zˆ+‹ÜŽØété¹m‚V ¯]¡Èä=ºÆ D÷dP2bÖ®œkG‚åe‚Åz_‡-„½Ôœ>kñ:¦ªˆÛ¿1žYX”¯.Ðâ ã H‡Ä­” ú‹úÓš‹MYšÐ®ƒöÏi€l©Ô¯¡ÉeÐû$–­ +®LO¶4„ø<“0¢®âúoMÕ%žx¯î%ÙNxÖ2¡åÖÅiî稃@‰]DI{ÕÉæ@DðŒ0ã,î굿¥ð_Ê5~’Ì6ÚVmÀ}½¡XYmð$‰KæIöɸ*Úõ°‘} +­6)Ë36Î72öég²O5éd£XB8À>)Ð%ã ¾YN[­'¦pÙ';¶ç† âÙË©Ë>YO¤ì“ÕÆTÂÁ†gÝŒß'ÓaÙ'¨çîvšÒ³¸j +~PE¦¸E/8‘g}Ÿ`P%ïgÔP3"Ò­BFûhšúÁ¥–:=°p}F°Ù#¡›¸åÙÏL>xϹ7#ЛÏôC…-jF Ÿ˜/²ïÉV(¸=ÜÜËb܇xê\›g1îZÚâºFJLu¿ÆRaàô]üZf$ÝßaöjÒXÓiF³«ªXz‰Ù˜gnˆÍ‡æ~ëÛÜÓi`áë0åkÅ32ƒÐÀÂÐowŒ7%¦°ºÊÅŽnBL®p&…kZ¤ÇGß ï¢ V™Ãdǰ.°håÑŠÖ§-¤(fŒ`a‘0)ºœHØS"¦ú6…‰ÚÀ{È&fx¹ÒÃëŸç<w«äÉñ‡iEzMx^ˆ H¤œÇK¯×qn°ôUá„åÚÊTèL´Ôo!pcðß/à÷XqÓuJQZLŽÓð1²Ãbƒ*‰'[៪à¼zÌuë”:x$Õ.ƒø@ŸÆGFþ2 íSFæ +ÐZLžÍP©Iƒïí«)¢×Ŭ$mÇOp`)òIR,•ìáqjp½ñh=«ÅüC¬ÊàðA>ƒÆzÓ'lÁ +–fR’†èû|áîÅ}M¤cd¸UÚÒŽø”™.ÿm&ÜI8æ¯7`À@¿¾\D*ä®D5Ü óÌÔ sBW•ÎEè(}·!//¡SBç| ¸ûs®ü™Ïf>kÊ +Ó9ÃZ¾etžtä0Önà@7÷Î]ø;Xš×Ü|çÊyC•-² Ê`Ò9¡€ÎÄ)Õ‰`‚̤AcdU^w¶¸¥ìÈÆä4IÛž<%ò<}Ö“¢=S VyƒÿÞÛ=ã ,ô¬kXÚ‚‚äÿ”AîxÓ¿¸ª¹ÌŽÄ˜I’Bh]Rzû·žpP‡[°4˜.;‚ᮓò2õíÉÞæThæMƨ‹½»]ªÞMs¸á¹Bpp#U/qQòÒ(×7˜ý L׃ìr´þ,3:rïnÁ¸›µBhïnRÝ w®O|ò2»[«öõ‚Hü~˜·»EXo$°’Ÿió¼×=š´P…f¸Ïª}^b¾¯Í%À(û¦!CE$7(ö€NŠù#,*§¸pDì“Ï6ú9bz{˜Œ†a?b”­ ´aå±ÄÖîô’xÕ0x@ŒáŽ}©Åè4ŒÊ –€õ;÷ Éyò˜q{ürÃ1CvîA5†¡„àt¬1«L!Ëãç +Ü©Rcð™>ŽÙ0Œ˜YAÄïÛଦnƒSÓ4Ã%zaìÛ„ýÛ×’j½Öz½s@\ Þ€°ÙP-~µ1lj ¯m$k>êp“Ev-±ZNbÑÞ©RJ AfZÀa±µ°¹ ªˆ­;†¥°ÃÞ”lØ’/ˆ…%êïU %þòÊ“·ÐÃæq™¯ð‚“?…Þ0ìDÁ,Ùz…S·>ÂpP °(–Hm{Ḁ̃͗ݫý€S¼–¤Xb ÌKK­ÅðYýJ¦3sæfW.‚ØÞ´+´½òEôûÄÙLYÓá%¥°£˜D“¼S8êô0661×®`‘¡˜›ÃI©Iøe¶-§¯F,–—‘•ñÌø[ò _«/@SÌ&ÉCÏ…)•Ù–Cœ²kU‰É “D§Èlq`öC“{™¬ ˜È¥ˆÇ¢•}ÎÖŠ>CÙlÑÊ’æÊ¨ ån:eÐÆúƒÈ¾Ö•ÐÚîŠ#v2››h8·Eƒ§È¶Ì†f#@ƒFÒñ• lMò…X½Z˜Z,#>I"â劮†¥+Lbazºr骘7xø­•Ø +ÁÐ \!ˆøùÑûz¶,$Q¨ÐæGºÖî¯s)³wE º{,ЗE‘h¨!¹LF2S¢¹æŠj á r Ç®Ž„ˆ³—pBÛÛP+¢$Òµ#O›}òX;&]Q`ÐK®2!Бƒs›ˆõ-]s8E+ ±¾¡‡|Z\òdÑÕ8sªêQ¦šËSŸDrÆ-‡þ)Äú®yž—³ƒ·}÷‚`&¶ï;y™mpL»½YS\kéqÑO§Aú’aç娳±JÔŠO8,f+¸êdG¢.{6Z%‹)L:{Ò^Cø(ªç!wè•ä9ðûX“Ô± 7 73WÂßÎÉÝ›ÉÅ1%÷žŠ.& Qðae©C…‘Ò:»4µC‹a˜{ÖV€¨®vëì}^¬´XÉr¼bA4˜,Öö÷|é^Vtò¸ÃnÂÞ‰ÿŸˆU0¬ÝêÓ%\е½É·W#{ÿ¸/„ΠÅ +Ã[I§+X,#œ²˜:Ãd¤XR¥çæB*P¾¬z¬rîeeßz‹å>V(eÑ­PÌM·K5V••=õ²iÃf§‘¤ñ×¼c%àUÉâÊ[+qY–^¹è‚“Çú8Êû$³–×X†oáêˆm ½g Ø£•ŸÜJSY@Ó&ŽE˜p¬Š:<]–<ÿkU¼ù²ÜsAjk$Œ²ØKè*.ÔÌ1ÖÑ‚±êîNJ.h鼯5ËsîM“çª Ð[ºö-@]ŸÄ]°kXŠÄ «³L^v-ž»&G‘uãÁ$Roew‰J·I×Ü!yÈ‹ßjËW@RP‘=óºt½hƒ;=^.·°|¦Ã&¬>ÁúðŠC<ûš¥gÀ$F—ÝfB‹ÍWë+±GyÒ¼âqÔÈÜOªÝ4ê+˜A[€(»-~%á XþV:à6¿âžŽœê¬Y𡨽 Û!d%.=^íÙ¼-tš ÕXQ,mÄäàÛêäiJÎ1!Ç‚hÆ—¥ï¡ôoŸT,- Ú¾œÀ²n±Hó¸üc¹–%àïòze¡]±jq,Ï‚f>+‹u`\P¯2#YCDªYYiDÀjO=Yå©[éD@\åi·I{¾oY¼‹ ÒxÐgúôƒÃä×.±y,¡²>ÑžS€ðóµÆc9]–ÎÏX·³O°Å¸c ZLã ×ñúX‰—ÅËeÖO÷)è_'·+V³juÀå4£èÄË7UƒN6–¨”WÛç¦c™ ò +/6b;w…e1Oï@Âi{Æ‹Eðÿ|šOOc‚Åuv¿@xŒâÝ%1Úžwp×à„øÆ‚[ë(A¼ßa)É•ra¼V6\¹¸Fpñzòžw¾€dÇ–iµ«Èzy!ò1V–b€šjѪHÖòËÌÓê±J&¦U¢zà6ÙÀ +¥'ßxYþ²ÀŠýå"ïý­‡-¡¿âe5ušZ‡sjé.Y¤¡©B¡éÀp*%KÒ'²ýŸ.§Œz“{Õw¯¿Ê´Î#”Þ]9ðíëËVÄ»r[W^9“Š#w(¯~—­xp¢žl…\¢c³õˆ:I®(<œò\‰½ÆWÇD¿9qækõÒƒÉV¨ËžäZ!&Wvl¶BRËÐùÆì-œpåÊdd«Ï g'’0jÅÍ÷¯“+¢1ËGÕ÷[–Ë•¤T°»«ô)_ãr…õÒO¶ßJÈüJ¹?溌ŸŠåª!8„UªŠ,dÕD;0ÁÀT—ëÀ^’5åed€þJ@“Kf ¼à!Ø€Åhž\·OD)á¥nó#œ‘ÿ•i0@Ÿ'x´á€iUúÙ?ºJ«> + +sŽ"N[%—pö!1’V±_›({e§rgbÔË×Q£cÑjµŠÑª2ɃzK4#÷ÇÉ{F¥ÎQ•×VUAFppædƒf=F©wÉ{Á:y®úùu’”Í31VµtÅQµ `ü¥¤ÚŽ­"…¥J+@X¨jU¼Þï¬+ "rVƒ¦ÔÒVK+@xò/éZy +`‰+àKxÅÏ)à¥v%Gºˆ×•,gV@øÀhgxÏ +¨ïdÀ¼H˨–— ذ„ +Zà¢dŸ2!bXîѫΠ·òŒÒ8ýÉO¾XIì„â7q|¯éÈ´Eä”{µLœŲûŽ endstream endobj 24 0 obj [/Indexed/DeviceRGB 255 25 0 R] endobj 25 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream -H‰|Q}Lw¾£Ü«“zZ½»9²h†X±RQV¢ìªÀ¢£ÒCN¡ÅkAÍf„lq|´e›Ón2ƒ6@˜¶E!ò!C‚àt•M’™˜øþH¶k÷ÏþÚ?OÞç}ò>ïŽ`8ŽGlIÞ½%}ó;Ž ¼Éœ&XWïâ囟Ȉj\ —…Ph-r½xñb;7Ã%mË'C±œd-”jäÙÙµqq1Q>Ôú16ŠÑh4~Ô²›ÍÖýk8f³s66Å’c -­‚ÉΙ£ÙÍùù¬ßÂÆ -œŠ}É'byËñöm¡Œê¥Pœ"`–D,ê¢ÀG>—/ûü1$ ‰“b'å‹)JîŠ-wñK3pnFgçWQ(|5 -Arþ†‚A©†ÈIPÀaÈÙ -´œ9ù6åm]´H—½bmüž'°ôÝŒ1ŠóÅbÿdå‘P(™R^†’°©y:‘T¡›¾NâgÂI**GD÷âŒLÌA?9å× XáÓs¢šM{‚ØÄT+·nØAÔ7µ7ÝTÏ5ïLa*V%Æ"ŠÙšn”+J†á‹0‡Â´'Å«œmk¡Š›ûì#jÐLxŸy·ÝНfœråÓ‡W{Uãé£h©>Exº6•¨iè¨íTO´ìÝ“ ;˜Êd¥´“ÊÙ©I³ÆÁyIˆPïL¯¯|Ë€~îMág=À?’‰‘a ÷iÄ•QrôÃÂ:"n ½ñPA9å°Ÿkªn¨¹á"Ëù -žW¡ÿ WîBì}æ=2Q?OS¨4¡~ÂU×XuY aÝïÄ:í[Æõi»kª é¢dâÈ…[G†ÕðêÓ?A9iêÎhdêr2ÏdªmÇËË?dê!ž)ý z@3Š? µ’µv~%õAQÅ'‡™¸Ò¤ƒÆÝA©©{_GKUh£aÀ€z@z¥î’'ùýùtyöùÈS kë«jç*‚PÔBµ&küy9S]õåg§ékuí-]ê‰.CttÆöMþçÞÁ{ÄhY´Ç.—£‹ ÷/ —DÑ+mÛ'¶Ý ½üû¶G`ûu›GéS%¼27 -Äxf®™qÉ•c¯|wó†jbû8 -E¤Vi¸`¸ÇÓŽ2Bé‰ç³ÒãTQ“:XF;û¨õ™½.ævkÇè7ôŒpƒÛ JÎÈÚ@+Çb5~Á¸'-;Çp”I¬ÉºØ¯ê¾z}„V”>Ý ´â­Óð•Gö¤”:_Ñàhþô—SCMíA}·¯ÿ¯©@Š@1C‹‘ìÁ:XÔßùí—hy"!W¶97ï½âŒ ÊŠÊ:ƒ@+6R[ßD²ãe¥'?bÌö½–4õ¦¬ž‰Ç]Å ·xÔ Ñn·»ÎM¢\÷˜[NŸßÿ~È¢ÊàÁ—f‚gªB^O/ŸQÿÿÿÿÿXUi endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|SmPSg¾—po ²i%^sí½·êìê•–OËÒ‚|ˆ¦QÁÁ%(Q ˜PkWk!·¶D@QP¡Êò¡«°0Ò.Rˆ‚® +le¶ÌØö\|™Ù½aÿì¯ýóÌyΙóœsÞs^svÂp_)‰Ü·ëÝØ:R¯ÓnÚ£>œ®Ô9‚,Oã¼§3¿ÆB›‘åõë×1<|ž®l^C.¸cN8>6®Ír§¸Í[¼è·Œþ^Ü__ßeôãv¨´)jN~BoPg蹨ÌT­.K«SÔ*onGz:·,¡çtj½Z—ãpþ·#N£çÔCšZÇ)…àa¯S«8ƒN©Rg(uG9­#ò?ôÐÿ)Åi29A‹SdjLnœzN™©òT´ËURµÙ™F­÷öùPþñ‰,5À©Ô‡0 ÇVºbë0ì= ‹Ã°xS`ØJá ±XÌŠÝÃþ«ðZ'ÜÉàT*ò™EÎŒs©ó(Nœ]WÜÆÏ·á®o;ó…‹ñK…$XP7…Bá<s$âP²ô…x‰<¸lC(8É·S 9˜$ï_÷¿e‡Kv”/n¤ç&ä†2YtÔ<‰V€”†õ cº $èmö󨙦µÈ%¯Ý¼ï%lƒˆÎ޲’Ë9|ßDq®;ä½Þ†<‹L)Dk·_ŒâÂLJŠm¼Õ†oñÉ6t×,n¿OÀÛà95n²¹ø—ˆ ‹Öª25±DõõÖëéù›qQlÑÆ0„¶|é©Kò†àË~P ¹ÃÔtÔŒt®¹ŽÊ¹Ùk°Ñà;>ójfgOpkKžÕ6v ÈÆv UQ:†©Š&*kÚªÚéñº¤}¡AG¢ÙĨVR:÷bBåkb¦´pDÐq»«+tŽa b†_àåÓ y.â×{@ÄÌ /¿ÁKŒZ–¶»áŠ# Qf1l…c—®WÔT6¬¶FM‘F#CË6<ÿÇ8,N‹øˆE†B½¤õ–+µ%·iðèÜåobý~¯ˆß[Y‘ÅdG¹7zr‡hxgáN(;÷ײWRJhý§Fã)¶‚ 0‘ÂΠ»|Gðú)¨¤ý7PŸdcóÃ(öºDG'ý­’¡m3èqpa•AÏ‘8\¡IIg +Éò_l ÀTU—T™.¹ ¯¥Ê'qì#[QráO_1÷®´ÖuÐãroïý1Û——û؆wñÞ¢.aŽ`È(F_/ 3$Ü⧉naÚ^¾ùïî·¿ßùôÿØ9-†óy¼5?ÄXBWÐMÖ"–Ž>k¸öðlÎëçßèǦáÞ÷"¸ÁŸ¡ì/ô>Ú´ð.ü\á­§ðlØ´€XÖE½jZˆð˜ÿ÷âžý<{÷å+V’†"r`× /úÎÑüܲKçm(‘š‚ +3y ¶SÛKùó$|¿Ýú/ä²'-þ0k$¥ãωÒœdNˆ•M%QVËK)#ï¿ØÙÒCÏý-àwH¤Øî³·ù›OXc©ÑzA&AWó‡ð¹IÑ?O!—°È'è¢xÏ—ÉÕÇýåº?6Ñõ×Î}q‘-è' +óNèÄ“õ=,”ûrV,9må[ÁÛjµ^±’èuÔ*f.§üÁ͵ØmÅÀöö·_ñ_­â¨ÿÿÿÿÿµ€[j endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref 0 31 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000018370 00000 n +0000019014 00000 n 0000000000 00000 f -0000018421 00000 n +0000019065 00000 n 0000000000 00000 f 0000000000 00000 f -0000021364 00000 n -0000021436 00000 n -0000021576 00000 n -0000023201 00000 n +0000022128 00000 n +0000022200 00000 n +0000022340 00000 n +0000023939 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000070538 00000 n -0000070354 00000 n -0000072471 00000 n -0000018833 00000 n -0000072358 00000 n -0000020901 00000 n -0000069780 00000 n -0000069828 00000 n -0000070422 00000 n -0000070453 00000 n -0000070737 00000 n -0000071057 00000 n -0000072496 00000 n -trailer <]>> startxref 72685 %%EOF \ No newline at end of file +0000073499 00000 n +0000073315 00000 n +0000076083 00000 n +0000019477 00000 n +0000075970 00000 n +0000021626 00000 n +0000072741 00000 n +0000072789 00000 n +0000073383 00000 n +0000073414 00000 n +0000073829 00000 n +0000074161 00000 n +0000076108 00000 n +trailer <]>> startxref 76297 %%EOF \ No newline at end of file From 40484746e748e6b4566718601bbde49a3c396a3e Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Mon, 13 May 2024 16:29:35 -0500 Subject: [PATCH 079/357] Work on modification table UI --- CageUI/src/client/cageui.scss | 2 +- CageUI/src/client/components/CageDetails.tsx | 60 +--------- .../components/CageDetailsModifications.tsx | 106 ++++++++++++++++++ CageUI/src/client/components/helpers.ts | 46 ++++++-- CageUI/src/client/components/typings.ts | 43 +++++-- 5 files changed, 184 insertions(+), 73 deletions(-) create mode 100644 CageUI/src/client/components/CageDetailsModifications.tsx diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 932eb6c34..5f8aac7cd 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -203,7 +203,7 @@ .details-table { font-family: arial, sans-serif; border-collapse: collapse; - width: 20%; + width: 30%; } .details-table thead{ diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index bd1a683e7..fc3727fad 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { useState, FC, useRef, useEffect } from 'react'; import { Cage } from './typings'; +import { CageDetailsModifications } from './CageDetailsModifications'; interface CageDetailsProps { isOpen: boolean; @@ -13,11 +14,6 @@ export const CageDetails: FC = (props) => { if(!cage) return; - const addMod = () => { - console.log("mod"); - - } - // close modal if user clicks outside its bounds useEffect(() => { const handleClickOutside = (event) => { @@ -51,57 +47,9 @@ export const CageDetails: FC = (props) => {

Status: OK

-
-
-

Modifications

- -
- - - - - - - - - - - - - - - - - {cage.cageState.extraMods.map((mod, idx) => { - if (mod.name === "") return; - return ( - - - - - ); - })} - -
ModAffected Cages
{cage.cageState.divider.name}#0003
{cage.cageState.floor.name}#0004
{mod.name}#testCageNum
-
    -
  • - {cage.cageState.divider.name} -
  • -
  • - {cage.cageState.floor.name} -
  • - {cage.cageState.extraMods.map((mod, idx) => { - if (mod.name === "") return; - return ( -
  • - {mod.name} -
  • - ); - })} -
-
+
); diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx new file mode 100644 index 000000000..83a2bcb47 --- /dev/null +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -0,0 +1,106 @@ +import * as React from 'react'; +import { FC, useEffect, useState } from 'react'; +import { Cage, Modifications, ModTypes } from './typings'; +import Select from 'react-select'; +import { convertLocationName } from './helpers'; +interface ModificationDetailsProps { + cage: Cage +} +export const CageDetailsModifications: FC = (props) => { + const {cage} = props; + + const [modRows, setModRows] = useState([]); + + const modOptions = Object.keys(Modifications).map((mod, idx) => ( + {value: Modifications[mod].mod, label: Modifications[mod].name} + )) + const addMod = () => { + console.log("Add Mod"); + } + + const changeMod = (event) => { + console.log(event); + console.log(cage); + } + + useEffect(() => { + const newModRows = Object.keys(cage.cageState).map((key, idx) => { + if (Array.isArray(cage.cageState[key])) { // finds extra mods + return( + cage.cageState[key].map((mod, idx) => { + if (mod.name === "") return; + return ( + + {convertLocationName(key)} + {mod.name} + #testCageNum + + ); + })); + } else { // finds separators + return ( + + {convertLocationName(key)} + + ( + Array.isArray(cage.cageState[key]) && + cage.cageState[key].some((item) => item.mod === mod.value) + ))} + onChange={changeMod} + styles={{ + control: (base) => ({ + ...base, + backgroundColor: 'inherit', + borderColor: 'inherit' + }), + indicatorsContainer: (base) => ({ + ...base, + color: 'inherit', + }), + indicatorSeparator: (base) => ({ + ...base, + backgroundColor: 'black', + }), + singleValue: (base) => ({ + ...base, + color: 'black', + }), + }} + /> + #testCageNum ); - })); + })); } else { // finds separators return ( @@ -52,16 +79,16 @@ export const CageDetailsModifications: FC = (props) => styles={{ control: (base) => ({ ...base, - backgroundColor: "inherit", - borderColor: "inherit" + backgroundColor: 'inherit', + borderColor: 'inherit' }), indicatorsContainer: (base) => ({ ...base, - color: "black", + color: 'inherit', }), indicatorSeparator: (base) => ({ ...base, - backgroundColor: "black", + backgroundColor: 'black', }), singleValue: (base) => ({ ...base, @@ -69,13 +96,13 @@ export const CageDetailsModifications: FC = (props) => }), }} /> - {/*cage.cageState[key].name*/} #0004 ); } }); + setModRows((prevState) => [...prevState, ...newModRows]); }, []); useEffect(() => { diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 9575b64a9..7fd11f47b 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -134,4 +134,24 @@ export const convertLocationName = (dividerName: string) => { const words = dividerName.split(/(?=[A-Z])/); const convertedWords = words.map((word) => convertToTitleCase(word)); return convertedWords.join(' '); +} + +export const getModOptions = (key) => { + const dividerOptions= []; + + const floorOptions = []; + + const extraOptions = []; + + Object.keys(Modifications).forEach((mod, idx) => { + if(mod.includes("Divider")){ + dividerOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + }else if(mod.includes("Floor")) { + floorOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + }else { + extraOptions.push({value: Modifications[mod].mod, label: Modifications[mod].name}); + } + }); + + return key.toLowerCase().includes("divider") ? dividerOptions : key.toLowerCase().includes("floor") ? floorOptions : extraOptions; } \ No newline at end of file From 60390bfc9863aa004b845270476ba09c4196e156 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Wed, 15 May 2024 14:31:11 -0500 Subject: [PATCH 081/357] Converted state management to context manager --- .../resources/web/CageUI/static/AB140-167.svg | 2 +- CageUI/src/client/components/CageDetails.tsx | 14 +- .../components/CageDetailsModifications.tsx | 114 ++++------------ .../src/client/components/ContextManager.ts | 25 ++++ .../src/client/components/ModificationRow.tsx | 88 ++++++++++++ CageUI/src/client/components/RoomDisplay.tsx | 29 +++- CageUI/src/client/components/RoomLayout.tsx | 25 ++-- CageUI/src/client/components/helpers.ts | 127 ++++++++++++++++-- CageUI/src/client/components/typings.ts | 86 ++++++++---- 9 files changed, 352 insertions(+), 158 deletions(-) create mode 100644 CageUI/src/client/components/ContextManager.ts create mode 100644 CageUI/src/client/components/ModificationRow.tsx diff --git a/CageUI/resources/web/CageUI/static/AB140-167.svg b/CageUI/resources/web/CageUI/static/AB140-167.svg index cf2aa9071..2c00ebe02 100644 --- a/CageUI/resources/web/CageUI/static/AB140-167.svg +++ b/CageUI/resources/web/CageUI/static/AB140-167.svg @@ -1 +1 @@ - 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file + 3 4 1 2 7 8 5 6 18 17 20 19 11 12 9 10 14 13 16 15 22 21 24 23 T op B ot t om B ot t om T op \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetails.tsx b/CageUI/src/client/components/CageDetails.tsx index fc3727fad..59de1ae11 100644 --- a/CageUI/src/client/components/CageDetails.tsx +++ b/CageUI/src/client/components/CageDetails.tsx @@ -2,17 +2,17 @@ import * as React from 'react'; import { useState, FC, useRef, useEffect } from 'react'; import { Cage } from './typings'; import { CageDetailsModifications } from './CageDetailsModifications'; +import { useCurrentContext } from './ContextManager'; interface CageDetailsProps { isOpen: boolean; onClose: () => any; - cage: Cage; } export const CageDetails: FC = (props) => { - const { isOpen, onClose, cage } = props; + const { isOpen, onClose } = props; const modalRef = useRef(null); - - if(!cage) return; + const {clickedCage} = useCurrentContext(); + if(!clickedCage) return; // close modal if user clicks outside its bounds useEffect(() => { @@ -37,7 +37,7 @@ export const CageDetails: FC = (props) => {
-

Cage #{cage.name}

+

Cage #{clickedCage.name}

@@ -47,9 +47,7 @@ export const CageDetails: FC = (props) => {

Status: OK

- +
); diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx index 70d2eaf3a..a157c06cf 100644 --- a/CageUI/src/client/components/CageDetailsModifications.tsx +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -1,113 +1,49 @@ import * as React from 'react'; import { FC, useEffect, useState } from 'react'; import { Cage } from './typings'; -import Select from 'react-select'; -import { convertLocationName, getModOptions } from './helpers'; -interface ModificationDetailsProps { - cage: Cage -} -export const CageDetailsModifications: FC = (props) => { - const {cage} = props; +import { getModOptions } from './helpers'; +import { ModificationRow } from './ModificationRow'; +import { useCurrentContext } from './ContextManager'; +export const CageDetailsModifications: FC = () => { const [modRows, setModRows] = useState([]); - + const {clickedCage, room} = useCurrentContext(); const addMod = () => { console.log("Add Mod"); } - const changeMod = (event) => { - console.log(event); - console.log(cage); - } - //TODO move table row to sep file to improve readability useEffect(() => { - const newModRows = Object.keys(cage.cageState).map((key, idx) => { + const newModRows = Object.keys(clickedCage.cageState).map((key, idx) => { const modOptions = getModOptions(key); - if (Array.isArray(cage.cageState[key])) { // finds extra mods + if (Array.isArray(clickedCage.cageState[key])) { // finds extra mods return( - cage.cageState[key].map((mod, idx) => { + clickedCage.cageState[key].map((mod, idx) => { if (mod.name === "") return; - return ( - - {convertLocationName(key)} - - ( - mod.value === cage.cageState[key].mod - ))} - onChange={changeMod} - styles={{ - control: (base) => ({ - ...base, - backgroundColor: 'inherit', - borderColor: 'inherit' - }), - indicatorsContainer: (base) => ({ - ...base, - color: 'inherit', - }), - indicatorSeparator: (base) => ({ - ...base, - backgroundColor: 'black', - }), - singleValue: (base) => ({ - ...base, - color: "black", - }), - }} - /> - - #0004 - + return( + ); } }); - setModRows((prevState) => [...prevState, ...newModRows]); }, []); - useEffect(() => { - console.log(modRows); - }, [modRows]); + return (
diff --git a/CageUI/src/client/components/ContextManager.ts b/CageUI/src/client/components/ContextManager.ts new file mode 100644 index 000000000..e82f6c576 --- /dev/null +++ b/CageUI/src/client/components/ContextManager.ts @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { createContext, useContext } from 'react'; +import { Cage, Rack } from './typings'; + +export interface CageContextType { + room: Rack[], + setRoom: React.Dispatch>, + clickedCage: Cage | null, + setClickedCage: React.Dispatch> | null, + clickedRack: Rack | null, + setClickedRack: React.Dispatch> | null, +} +export const CageContext = createContext(null); + +export const useCurrentContext = () => { + const context = useContext(CageContext); + + if (!context) { + throw new Error( + "useCurrentContext has to be used within " + ); + } + + return context; +}; \ No newline at end of file diff --git a/CageUI/src/client/components/ModificationRow.tsx b/CageUI/src/client/components/ModificationRow.tsx new file mode 100644 index 000000000..837ea0105 --- /dev/null +++ b/CageUI/src/client/components/ModificationRow.tsx @@ -0,0 +1,88 @@ +import * as React from 'react'; +import { FC, useEffect } from 'react'; +import { convertLocationName } from './helpers'; +import Select from 'react-select'; +import { Modifications, ModTypes } from './typings'; +import { useCurrentContext } from './ContextManager'; + + +interface ModificationRowProps { + modKey: string; + defaultMod: ModTypes; + modOptions: {value: ModTypes, label: string}[]; + affectedCages: string[]; +} +export const ModificationRow: FC = (props) => { + const { + modKey, + defaultMod, + modOptions, + affectedCages + } = props; + const { setRoom, clickedCage, clickedRack, setClickedCage} = useCurrentContext(); + const changeMod = (event) => { + + setClickedCage(prevState => ({ + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: { + ...prevState.cageState[modKey], + modData: Object.values(Modifications).find((mod) => mod.mod === event.value) + } + } + })); + } + + useEffect(() => { + setRoom(prevRoom => { + const updatedRoom = [...prevRoom]; + const clickedRackIndex = clickedRack.id - 1; + if (updatedRoom[clickedRackIndex]) { + // Create a deep copy of the cage state object + updatedRoom[clickedRackIndex].cages.find( + (cage) => cage.id === clickedCage.id + ).cageState = clickedCage.cageState; + } + return updatedRoom; + }) + }, [clickedCage.cageState]); + + return ( + + {convertLocationName(modKey)} + + ( + value={modOptions.find((mod) => ( mod.value === defaultMod ))} + isOptionSelected={(option, selectValue) => selectValue.some( + (val) => val.value === option.value + )} onChange={changeMod} styles={{ control: (base) => ({ @@ -128,7 +176,7 @@ export const ModificationRow: FC = (props) => { /> - {affectedCages.join(", ")} + {affectedCage} ); diff --git a/CageUI/src/client/components/RoomDisplay.tsx b/CageUI/src/client/components/RoomDisplay.tsx index f9af98b92..aedcd1c0f 100644 --- a/CageUI/src/client/components/RoomDisplay.tsx +++ b/CageUI/src/client/components/RoomDisplay.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { FC, useState, useEffect } from 'react'; import { Cage, Rack } from './typings'; -import {loadRoom} from './helpers'; +import { findDetails, loadRoom } from './helpers'; import { RoomLayout } from './RoomLayout'; import { CageContext } from './ContextManager'; @@ -13,9 +13,48 @@ export const RoomDisplay: FC = (props) => { const [room, setRoom] = useState([]); const [clickedCage, setClickedCage] = useState(); - const [clickedCagePartner, setClickedCagePartner] = useState(); - const [clickedRack, setClickedRack] = useState(); + const [clickedCagePartners, setClickedCagePartners] = useState(); const [cageDetails, setCageDetails] = useState([]); + const [clickedRack, setClickedRack] = useState(); + const [isEditing, setIsEditing] = useState(false); + const [modRows, setModRows] = useState([]); + const saveMod = () => { + console.log("Saving"); + setRoom(prevRoom => { + const updatedRoom = [...prevRoom]; + const clickedRackIndex = clickedRack.id - 1; + if (updatedRoom[clickedRackIndex]) { + // Create a deep copy of the cage state object + updatedRoom[clickedRackIndex].cages.find( + (cage) => cage.id === clickedCage.id + ).cageState = clickedCage.cageState; + + clickedCagePartners.forEach((cage) => { + updatedRoom[clickedRackIndex].cages.find( + (updateCage) => updateCage.id === cage.id + ).cageState = cage.cageState; + }) + } + console.log("Updated Room: ", updatedRoom, clickedCage, clickedCagePartners); + return updatedRoom; + }); + } + + useEffect(() => { + console.log("Room: ", room) + }, [room]); + + useEffect(() => { + console.log("clicked Cage: ", clickedCage) + }, [clickedCage]); + + useEffect(() => { + if(!clickedCage) return; + const newCageDetails: Cage[] = [clickedCage]; + findDetails(clickedCage, newCageDetails, clickedRack); + console.log("Find new cage", cageDetails, newCageDetails, clickedCage); + setCageDetails(newCageDetails); + }, [clickedCage]); useEffect(() => { @@ -32,10 +71,15 @@ export const RoomDisplay: FC = (props) => { setClickedCage, clickedRack, setClickedRack, - clickedCagePartner, - setClickedCagePartner, + clickedCagePartners, + setClickedCagePartners, + isEditing, + setIsEditing, + modRows, + setModRows, cageDetails, - setCageDetails + setCageDetails, + saveMod }}> diff --git a/CageUI/src/client/components/RoomLayout.tsx b/CageUI/src/client/components/RoomLayout.tsx index 490b6b7b3..a95497e4f 100644 --- a/CageUI/src/client/components/RoomLayout.tsx +++ b/CageUI/src/client/components/RoomLayout.tsx @@ -1,11 +1,10 @@ import * as React from 'react'; import { FC, useState } from 'react'; -import { Cage, ModTypes, RackTypes } from './typings'; +import { Cage } from './typings'; import { ReactSVG } from 'react-svg'; import { ActionURL } from '@labkey/api'; import { - changeStyleProperty, - getCageUnderneath, + changeStyleProperty, findCagePartners, getCageMod, getRackSeparators, parseCage, parseRack, @@ -15,7 +14,7 @@ import { CageDetails } from './CageDetails'; import { useCurrentContext } from './ContextManager'; export const RoomLayout: FC = () => { - const {room, setCageDetails, setClickedCage, setClickedRack, setClickedCagePartner, cageDetails} = useCurrentContext(); + const {room, setClickedCage, setClickedRack, setClickedCagePartners} = useCurrentContext(); const [isOpen, setIsOpen] = useState(false); const openDetails = () => { @@ -25,45 +24,19 @@ export const RoomLayout: FC = () => { setIsOpen(false); } - console.log("room: ", room); const handleClick = (event) => { const cage = event.target; - const rackId: number = parseInt(parseRack(cage.parentElement.id)); + const rackId: number = parseInt(parseRack(cage.id)); const cageId: number = parseInt(parseCage(cage.id)); - console.log("New Room: ", room); + //const cageId: number = room const clickedRack = room.find(rack => rack.id === rackId); - const clickedCage = clickedRack.cages.find(cage => cage.id === cageId); - let clickedCagePartner: Cage; - const newCageDetails: Cage[] = []; - if(clickedRack.type === RackTypes.TwoOfTwo){ - newCageDetails.push(clickedCage); - if(clickedCage.cageState.rightDivider){ - clickedCagePartner = clickedRack.cages.find(cage => cage.id === cageId + 1); - if(clickedCage.cageState.rightDivider.modData.mod === ModTypes.NoDivider){ - newCageDetails.push(clickedCagePartner); - } - }else if(clickedCage.cageState.leftDivider){ - clickedCagePartner = clickedRack.cages.find(cage => cage.id === cageId - 1); - if(clickedCage.cageState.leftDivider.modData.mod === ModTypes.NoDivider){ - newCageDetails.push(clickedCagePartner); - } - } - // TODO Add floors - if(clickedCage.cageState?.floor.modData.mod.mod === ModTypes.NoFloor){ - const totalCages = room.length * room[0].cages.length; - const bottomCageId = getCageUnderneath(totalCages, room[0].cages.length, clickedCage.id) - console.log("Floor: ", bottomCageId); - //newCageDetails.push(clickedRack.cages[3]); - } - } - console.log("New Rack: ", clickedRack); - console.log("New Cage: ", clickedCage); - console.log("New Cage Partner: ", clickedCagePartner); - console.log("New Cage details: ", cageDetails, newCageDetails); + const clickedCage = clickedRack.cages[cageId - 1]; + + const newCagePartners: Cage[] = [clickedCage]; + findCagePartners(clickedCage, clickedRack, newCagePartners); setClickedCage(clickedCage); setClickedRack(clickedRack); - setClickedCagePartner(clickedCagePartner); - setCageDetails(newCageDetails); + setClickedCagePartners(newCagePartners); openDetails(); }; @@ -79,6 +52,23 @@ export const RoomLayout: FC = () => { cages.forEach((cage) => { cage.onclick = (event) => handleClick(event); }) + // Update room numbers with following the current room layout + room.forEach((rack) => { + rack.cages.forEach((cage) => { + // Construct the expected text element ID + const textId = `text-${cage.id}-${rack.id + 1}`; + // Find the corresponding text element + const textElement = svg.querySelector(textId); + + if (textElement) { + // Get the tspan child and update its content + const tspanElement = textElement.querySelector('tspan'); + if (tspanElement) { + tspanElement.textContent = cage.id.toString(); + } + } + }); + }); }} afterInjection={(svg) => { // Parses seperators styling them correctly @@ -86,6 +76,27 @@ export const RoomLayout: FC = () => { const currSeparators = getRackSeparators(room[i]); const separators = svg.querySelector(`#seperators-${i + 1}`); const children = [...separators.children]; + const mods = svg.querySelector(`#modifications-${i + 1}`); + console.log("Room ", room[i]); + //Update modification svg props + [...mods.children].forEach((childNode) => { + const cageMod = getCageMod(childNode.id, room[i]); + const styles = cageMod?.styles + console.log(childNode.id, cageMod) + if(parseSeparator(childNode.id) === "CTunnel"){ // CTunnels have multiple sub styles + [...childNode.children].forEach((subChildNode) => { + styles?.forEach((style) => { + changeStyleProperty(subChildNode, style.property, style.value); + }) + }) + }else{ + styles?.forEach((style) => { + changeStyleProperty(childNode, style.property, style.value); + }) + } + }) + + // Update separator svg props children.forEach((childNode) => { const styles = currSeparators.find(sep => sep.position === parseSeparator(childNode.id)).mod.styles; styles.forEach((style) => { @@ -93,7 +104,6 @@ export const RoomLayout: FC = () => { }) }) } - }} /> {isOpen && diff --git a/CageUI/src/client/components/RoomLegend.tsx b/CageUI/src/client/components/RoomLegend.tsx index d1237b615..18273bef0 100644 --- a/CageUI/src/client/components/RoomLegend.tsx +++ b/CageUI/src/client/components/RoomLegend.tsx @@ -1,10 +1,19 @@ import * as React from 'react'; import {FC} from 'react'; +import { ActionURL } from '@labkey/api'; +import { changeStyleProperty, getRackSeparators, parseSeparator } from './helpers'; +import { ReactSVG } from 'react-svg'; export const RoomLegend: FC = () => { return (
-

This is the Legend

+

Legend

+ +
); } \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index 53093f416..4a9b3563e 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -6,6 +6,7 @@ import { DefaultCageState, Modification, Modifications, + ModTypes, Rack, RackTypes, RoomSchematics, @@ -20,19 +21,21 @@ console.log(zeroPad(5, 2)); // "05" console.log(zeroPad(5, 4)); // "0005" console.log(zeroPad(5, 6)); // "000005" */ + export const zeroPad = (num, places) => String(num).padStart(places, '0') +// Helper function to get the rack number export const parseRack = (input: string) => { - const regex = /cage\w-(\d+)/; + const regex = /^rect-\d-(\d)$/; const match = input.match(regex); if (match) { return match[1]; } return; } - +// Helper function to get the cage number export const parseCage = (input: string) => { - const regex = /cage-(\d+)/; + const regex = /rect-(\d+)/; const match = input.match(regex); if (match) { return match[1]; @@ -40,11 +43,36 @@ export const parseCage = (input: string) => { return; } +export const parseCageMod = (input: string) => { + const regex = /.*?-(\d+)/; + const match = input.match(regex); + if (match) { + return parseInt(match[1]); + } + return; +} + + // load room racks export const loadRoom = (name: string): Rack[] => { const tempRoom: Rack[] = []; let cageNum: number = 1; + let rackConfigs = []; + + const createAdjCages = () => { + const cageCnt = getTotalCagesInRoom(tempRoom); + tempRoom.forEach((rack) => { + rack.cages.forEach((cage) => { + cage.adjCages = { + leftCage: rack.cages.find((tmp) => tmp.id === cage.id - 1), + rightCage: rack.cages.find((tmp) => tmp.id === cage.id + 1), + floorCage: rack.cages.find((tmp) => tmp.id === getCageAboveOrBelow(cageCnt, cage.id, rackConfigs).cageUnderneathId), + ceilingCage: rack.cages.find((tmp) => tmp.id === getCageAboveOrBelow(cageCnt, cage.id, rackConfigs).cageAboveId), + } + }) + }) + } // generate default cages const genCages = (cnt: number, rackType: RackTypes): Cage[] => { @@ -53,21 +81,25 @@ export const loadRoom = (name: string): Rack[] => { let cageState: CageState; let position: CagePosition; let type: CageType; + let cagesPerRow: number; if(rackType === RackTypes.TwoOfTwo){ position = i < 2 ? "top" : "bottom"; + cagesPerRow = 2; type = 'cage'; Object.keys(DefaultCageState.rackTwoOfTwo).forEach((cagePos, idx) => { if(idx === i){ cageState = DefaultCageState.rackTwoOfTwo[cagePos]; } }) + rackConfigs.push({cagesPerRow: 2, rackHeight: 2}); } const tempCage: Cage = { id: cageNum, - name: zeroPad(cageNum, 4), + name: `#${zeroPad(cageNum, 4)}`, cageState: cageState, position: position, - type: type + type: type, + adjCages: undefined } cageNum++; cages.push(tempCage); @@ -83,11 +115,11 @@ export const loadRoom = (name: string): Rack[] => { const tempRack: Rack = { id: rackId, type: rackType, - cages: genCages(RoomSchematics[name].cageNum, rackType), - + cages: genCages(RoomSchematics[name].cageNum, rackType) } tempRoom.push(tempRack) } + createAdjCages(); } return tempRoom } @@ -127,20 +159,22 @@ const convertToTitleCase = (str: string) => { return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); } -export const convertLocationName = (dividerName: string) => { +// Helper function to convert object keys into location names +export const convertLocationName = (keyName: string) => { // Special cases - if (dividerName.toLowerCase() === 'floor') { + if (keyName.toLowerCase() === 'floor') { return 'Floor'; - } else if (dividerName.toLowerCase().includes('mods')) { + } else if (keyName.toLowerCase().includes('mods')) { return 'Extra Mod'; } // Default case - const words = dividerName.split(/(?=[A-Z])/); + const words = keyName.split(/(?=[A-Z])/); const convertedWords = words.map((word) => convertToTitleCase(word)); return convertedWords.join(' '); } +// Helper function to get the correct mods for the dropdowns in cage details export const getModOptions = (key) => { const dividerOptions= []; @@ -161,12 +195,13 @@ export const getModOptions = (key) => { return key.toLowerCase().includes("divider") ? dividerOptions : key.toLowerCase().includes("floor") ? floorOptions : extraOptions; } -const getCageDividers = (totalBoxes, position, boxId, direction) => { - const boxesPerRow = totalBoxes / 2; - const groupBoxId = (boxId - 1) % totalBoxes + 1; // Calculate the ID within the current group +// Helper function to find the cage divider positioning for the svg +const getCageDividers = (totalCages, position, cageId, direction) => { + const cagesPerRow = totalCages / 2; + const groupCageId = (cageId - 1) % totalCages + 1; // Calculate the ID within the current group // Check if the inputs are valid - if (groupBoxId < 1 || groupBoxId > totalBoxes) { + if (groupCageId < 1 || groupCageId > totalCages) { throw new Error('Invalid box ID'); } if (position !== "top" && position !== "bottom") { @@ -181,46 +216,70 @@ const getCageDividers = (totalBoxes, position, boxId, direction) => { let line = null; - // Determine the line for the top boxes - if (isTop && groupBoxId <= boxesPerRow) { - if (direction === "left" && groupBoxId > 1) { - line = groupBoxId - 1; - } else if (direction === "right" && groupBoxId < boxesPerRow) { - line = groupBoxId; + // Determine the line for the top cages + if (isTop && groupCageId <= cagesPerRow) { + if (direction === "left" && groupCageId > 1) { + line = groupCageId - 1; + } else if (direction === "right" && groupCageId < cagesPerRow) { + line = groupCageId; } } - // Determine the line for the bottom boxes - if (isBottom && groupBoxId > boxesPerRow) { - if (direction === "left" && (groupBoxId - boxesPerRow) > 1) { - line = groupBoxId - boxesPerRow - 1; - } else if (direction === "right" && (groupBoxId - boxesPerRow) < boxesPerRow) { - line = groupBoxId - boxesPerRow; + // Determine the line for the bottom cages + if (isBottom && groupCageId > cagesPerRow) { + if (direction === "left" && (groupCageId - cagesPerRow) > 1) { + line = groupCageId - cagesPerRow - 1; + } else if (direction === "right" && (groupCageId - cagesPerRow) < cagesPerRow) { + line = groupCageId - cagesPerRow; } } return line; } -// Function to find the box underneath given a box ID on top -export const getCageUnderneath = (totalCages, cagesPerRack, cageId) => { - - if (cageId < 1 || cageId > totalCages) { +// Function to find the cage underneath given a cage ID on top +export const getCageAboveOrBelow = (totalCages, boxId, rackConfigurations) => { + if (boxId < 1 || boxId > totalCages) { throw new Error('Invalid box ID'); } - // Determine the position within the rack (0-3) - const positionInRack = (cageId - 1) % cagesPerRack; + let cumulativeCages = 0; - // Check if the box is on the top row (position 0 or 1) - if (positionInRack < 2) { - // Calculate the ID of the box underneath - return cageId + 2; - } else { - return null; + for (const { cagesPerRow, rackHeight } of rackConfigurations) { + const cagesPerRack = cagesPerRow * rackHeight; + cumulativeCages += cagesPerRack; + + if (boxId <= cumulativeCages) { + // The box belongs to this rack + const positionInRack = (boxId - 1) % cagesPerRack; + const row = Math.floor(positionInRack / cagesPerRow); + + let cageUnderneathId = null; + let cageAboveId = null; + + // Determine the cage underneath + if (row < rackHeight - 1) { + cageUnderneathId = boxId + cagesPerRow; + cageUnderneathId = cageUnderneathId <= cumulativeCages ? cageUnderneathId : null; + } + + // Determine the cage above + if (row > 0) { + cageAboveId = boxId - cagesPerRow; + cageAboveId = cageAboveId > cumulativeCages - cagesPerRack ? cageAboveId : null; + } + + return { cageAboveId, cageUnderneathId }; + } } + + throw new Error('Box ID does not fit within the provided rack configurations'); } + +/* +remove duplicate separators + */ const removeDuplicatesByPosition = (arr) => { const uniquePositions = new Map(); @@ -233,6 +292,9 @@ const removeDuplicatesByPosition = (arr) => { return Array.from(uniquePositions.values()); } +/* +Finds the separator modifications that should be mapped to the svg + */ export const getRackSeparators = (rack: Rack): Separators => { const separators: Separators = []; for (const cage of rack.cages) { @@ -279,3 +341,224 @@ export const getRackSeparators = (rack: Rack): Separators => { } return(removeDuplicatesByPosition(separators)); } + +// Find the total number of cages in a room +export const getTotalCagesInRoom = (room) => { + return room.reduce((total, current) => { + return total + current.cages.length; + }, 0); +} + +// Finds the cages that are affected by the modification/separator +export const findAffCages = (mod: string | number, cage: Cage) => { + let affCageName; + if(mod === "rightDivider") { + affCageName = cage.adjCages.rightCage.name; + }else if(mod === "leftDivider"){ + affCageName = cage.adjCages.leftCage.name; + }else if(mod === "floor") { + affCageName = cage.adjCages.floorCage.name; + }else { // TODO Make sure these are correct + if(mod === ModTypes.PlayCage){ + affCageName = cage.name; + }else if(mod === ModTypes.Extension){ + affCageName = cage.name; + }else if(mod === ModTypes.CTunnel){ + if(cage.adjCages.floorCage){ + affCageName = cage.adjCages.floorCage.name; + }else if(cage.adjCages.ceilingCage){ + affCageName = cage.adjCages.ceilingCage.name; + } + } + } + if(affCageName){ + return affCageName; + }else{ + return; + } +} + +export const findCagePartners = (cage: Cage, rack: Rack, newCages: Cage[]) => { + //Check if cage has right divider + if(cage.adjCages.rightCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.rightCage.id))){ + newCages.push(cage.adjCages.rightCage); + } + // left divider + if(cage.adjCages.leftCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.leftCage.id))){ + newCages.push(cage.adjCages.leftCage); + + } // floor + if(cage.adjCages.floorCage && + !(newCages.find((tmpCage) => tmpCage.id === cage.adjCages.floorCage.id))){ + newCages.push(cage.adjCages.floorCage); + } +} + +export const changeCageModArray = (updateId: number, setClickedCagePartners, modKey: string, event, setSaveDelete?, extModId?, isDone?) => { + if(event === "delete"){ + setClickedCagePartners(prevState => { + return prevState.map(cage => + cage.id === updateId ? { + ...cage, + cageState: { + ...cage.cageState, + [modKey]: cage.cageState[modKey].filter(obj => obj.modData.id !== extModId) + } + } : cage + ); + }); + setSaveDelete(isDone); + }else { + setClickedCagePartners(prevState => { + return prevState.map(cage => + cage.id === updateId ? { + ...cage, + cageState: { + ...cage.cageState, + [modKey]: { + ...cage.cageState[modKey], + modData: { + ...cage.cageState[modKey].modData, + mod: Object.values(Modifications).find(mod => mod.mod === event.value) + } + } + } + } : cage + ); + }); + } +} + +export const changeCageMod = (setClickedCage, modKey: string, event, updateId?: number, setSaveDelete?: any) => { + if(modKey === "extraMods"){ + + setClickedCage(prevState => { + if(event === "delete"){ + setSaveDelete(true); + return { + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: prevState.cageState[modKey].filter(obj => obj.modData.id !== updateId) + } + } + } + const modIndex = prevState.cageState[modKey].findIndex( + mod => mod.modData.id === updateId + ); + if (modIndex !== -1) { + const updatedMods = prevState.cageState[modKey].map((mod, index) => + index === modIndex + ? { + ...mod, + modData: { + ...mod.modData, + mod: Object.values(Modifications).find( + (mod) => mod.mod === event.value + ) + } + } + : mod + ); + return { + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: updatedMods + } + }; + }else{ + console.log("Error: Cannot edit mod that doesn't exist") + } + }); + } + else{ + setClickedCage(prevState => ({ + ...prevState, + cageState: { + ...prevState.cageState, + [modKey]: { + ...prevState.cageState[modKey], + modData: { + ...prevState.cageState[modKey].modData, + mod: Object.values(Modifications).find((mod) => mod.mod === event.value) + } + } + } + })); + } +} + +/* +Recursive helper function to find all the modifications attached to a cage. +It is recursive because if a cage has no divider/floor, it should combine and repeat. + */ +export const findDetails = (clickedCage, cageDetails, rack) => { + let newCage: Cage + + Object.keys(clickedCage.cageState).forEach((key) => { + if(key === "rightDivider"){ + if(clickedCage.cageState.rightDivider.modData.mod.mod === ModTypes.NoDivider){ + newCage = clickedCage.adjCages.rightCage; + if(cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + }else if(key === "leftDivider") { + if(clickedCage.cageState.leftDivider.modData.mod.mod === ModTypes.NoDivider){ + newCage = clickedCage.adjCages.leftCage + if(cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + }else if(key === "floor") { + if (clickedCage.cageState.floor.modData.mod.mod === ModTypes.NoFloor) { + newCage = clickedCage.adjCages.floorCage; + if (cageDetails.find(cage => cage.id === newCage.id)) return; + cageDetails.push(newCage); + findDetails(newCage, cageDetails, rack); + } + } + }) + +} + + +const cleanString = (name: string) => { + return name.toLowerCase().replace(/[\s-]/g, ''); +} +export const getCageMod = (modId: string, rack: Rack) => { + const rackPos = parseCageMod(modId); + const cage = rack.cages[rackPos - 1]; + const mod = parseSeparator(modId); + let cageMod: Modification; + if(cage.cageState.extraMods?.length > 0){ + cage.cageState.extraMods.forEach((extMod, idx) => { + const cleanName = cleanString(extMod.modData.mod.name) + const cleanModName = cleanString(mod); + if(cleanName === cleanModName){ + cageMod = cage.cageState.extraMods[idx].modData.mod; + return cageMod; + } + }) + // if ctunnel mod check floor cage as well. (delete later I think) + // This is only here because the two ctunnels are not linked? + // What i mean is. if a cage doesn't have a ctunnel, the bottom one wont have it either + if(mod === "CTunnel") { + if(cage.adjCages.floorCage?.cageState.extraMods.length > 0){ + cage.adjCages.floorCage.cageState.extraMods.forEach((extMod, idx) => { + const cleanName = cleanString(extMod.modData.mod.name); + if(cleanName !== "ctunnel") return; + const cleanModName = cleanString(mod); + if(cleanName === cleanModName){ + cageMod = cage.adjCages.floorCage.cageState.extraMods.find((tmpMod) => + tmpMod.modData.mod.mod === ModTypes.CTunnel).modData.mod; + } + }) + } + } + } + return cageMod +} \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 2b5f285ec..40886cbfe 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -5,10 +5,22 @@ export interface Cage { name: string; cageState: CageState; position: string; - type: CageType + type: CageType; + adjCages: AdjCages | undefined; } - +export interface AdjCages { + leftCage: Cage | undefined; + rightCage: Cage | undefined; + floorCage: Cage | undefined; + ceilingCage: Cage | undefined; +} +export interface CageState { + leftDivider: {modData: SeparatorMod} | undefined; + rightDivider: {modData: SeparatorMod} | undefined; + floor: {modData: SeparatorMod} | undefined; + extraMods: CageMods | undefined; +} export interface Rack { id: number; type: RackTypes; @@ -31,8 +43,7 @@ export enum ModTypes { PrivacyDivider, NoDivider, CTunnel, - PopTop, - BumpOut, + Extension, PlayCage } @@ -64,13 +75,16 @@ export interface SeparatorMod { } export type Separators = SeparatorMod[]; -export interface CageState { - leftDivider: {modData: Modification, affCages: string[]} | undefined; - rightDivider: {modData: Modification, affCages: string[]} | undefined; - floor: {modData: SeparatorMod, affCages: string[]} | undefined; - extraMods: {modData: Modification, affCages: string[]}[] | undefined; +export interface CageMod { + modData: { + mod: Modification, + id: number; + } } +export type CageMods = CageMod[]; + + const Schematics: SchematicRoomProps = { "AB140-167.svg": { @@ -104,7 +118,7 @@ export const Modifications = { } ] }, - meshFloorX2: { // TODO figure out styling for this double mesh + meshFloorX2: { name: "Mesh Floor x2", mod: ModTypes.MeshFloorX2, styles: [ @@ -114,7 +128,10 @@ export const Modifications = { }, { property: "stroke-dasharray", - value: "10" + value: "10 5 10" + },{ + property: "stroke-width", + value: "2" } ] }, @@ -139,17 +156,44 @@ export const Modifications = { pcDivider: { name: "Protected Contact Divider", mod: ModTypes.PCDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "2 5 2" + },{ + property: "stroke-width", + value: "5" + }] }, vcDivider: { name: "Visual Contact Divider", mod: ModTypes.VCDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "5 5 5 2" + },{ + property: "stroke-width", + value: "5" + }] }, privacyDivider: { name: "Privacy Divider", mod: ModTypes.PrivacyDivider, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-dasharray", + value: "1 1 1 1 1 1" + },{ + property: "stroke-width", + value: "5" + }] }, noDivider: { name: "No Divider", @@ -162,22 +206,42 @@ export const Modifications = { cTunnel: { name: "C-Tunnel", mod: ModTypes.CTunnel, - styles: [] - }, - popTop: { - name: "Pop Top", - mod: ModTypes.PopTop, - styles: [] + styles: [{ + property: "stroke", + value: "black", + },{ + property: "stroke-width", + value: "1px", + } + ] }, - bumpOut: { - name: "Bump Out", - mod: ModTypes.BumpOut, - styles: [] + extension: { + name: "Extension", + mod: ModTypes.Extension, + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-width", + value: "1px" + },{ + property: "fill", + value: "#FCB017" + }] }, playCage: { name: "Play Cage", mod: ModTypes.PlayCage, - styles: [] + styles: [{ + property: "stroke", + value: "black" + },{ + property: "stroke-width", + value: "1px" + },{ + property: "fill", + value: "#6D88C4" + }] }, } @@ -190,61 +254,40 @@ export const RoomSchematics = { ab165: Schematics["AB140-167.svg"], ab167: Schematics["AB140-167.svg"], } -export const RackSeparators = { - rackTwoOfTwo: { - topDivider: Modifications.solidDivider, - bottomDivider: Modifications.solidDivider, - leftFloor: Modifications.standardFloor, - rightFloor: Modifications.standardFloor - }, - rackOneOfOne: { - floor: Modifications.standardFloor - }, - pen: { - - }, - penRack: { - - }, - rackHorizontal: { - topDivider: Modifications.solidDivider, - bottomDivider: Modifications.solidDivider, - floor: Modifications.standardFloor, - } -} - // TODO Change mod Data to access from mod + +// This is based off the Cage State interface. export const DefaultCageState = { rackTwoOfTwo: { posA: { rightDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.topDivider, position: "T1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "T1"} as SeparatorMod, + }, floor: { - modData: {type: "floor", mod: RackSeparators.rackTwoOfTwo.leftFloor, position: "F1"} as SeparatorMod, - affCage: []}, - extraMods: [{modData: Modifications.popTop, affCage: ["#0001", "#0002"]}] + modData: {type: "floor", mod: Modifications.standardFloor, position: "F1"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.extension, id: 1}}, {modData: {mod: Modifications.cTunnel, id: 2}}] as CageMods }, posB: { leftDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.topDivider, position: "T1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "T1"} as SeparatorMod + }, floor: { - modData: {type: "floor", mod: RackSeparators.rackTwoOfTwo.rightFloor, position: "F2"} as SeparatorMod, - affCage: []}, - extraMods: [] + modData: {type: "floor", mod: Modifications.standardFloor, position: "F2"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.playCage, id: 1}}] }, posC: { rightDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.bottomDivider, position: "B1"} as SeparatorMod, - affCage: []}, - extraMods: [] + modData: {type: "divider", mod: Modifications.solidDivider, position: "B1"} as SeparatorMod + }, + extraMods: [{modData: {mod: Modifications.cTunnel, id: 2}}] }, posD: { leftDivider: { - modData: {type: "divider", mod: RackSeparators.rackTwoOfTwo.bottomDivider, position: "B1"} as SeparatorMod, - affCage: []}, + modData: {type: "divider", mod: Modifications.solidDivider, position: "B1"} as SeparatorMod + }, extraMods: [] }, } diff --git a/CageUI/src/client/rooms/AB140-167.ai b/CageUI/src/client/rooms/AB140-167.ai index 4f0692360..98b1934e4 100644 --- a/CageUI/src/client/rooms/AB140-167.ai +++ b/CageUI/src/client/rooms/AB140-167.ai @@ -1,5 +1,5 @@ %PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[19 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -13,18 +13,20 @@ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> Adobe Illustrator 28.5 (Macintosh) - 2024-05-09T12:41:04-05:00 - 2024-05-09T12:41:04-05:00 - 2024-05-09T12:41:04-05:00 + 2024-06-05T11:48:31-05:00 + 2024-06-05T11:48:31-05:00 + 2024-06-05T11:48:31-05:00 256 180 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 foLUfrvP6n9Vm+s+n9W5+l6bc+Nf2uNaYq//2Q== + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAtAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7v5Z8h+Rp/Lekzz+XdMl mls7d5ZXs7dmZmiUszMUqST1OKpl/wAq88gf9SzpX/SDbf8ANGKu/wCVeeQP+pZ0r/pBtv8AmjFX f8q88gf9SzpX/SDbf80Yq7/lXnkD/qWdK/6Qbb/mjFXf8q88gf8AUs6V/wBINt/zRirv+VeeQP8A qWdK/wCkG2/5oxV3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+kG2/5oxV3/ACrzyB/1LOlf9INt /wA0Yq7/AJV55A/6lnSv+kG2/wCaMVd/yrzyB/1LOlf9INt/zRirv+VeeQP+pZ0r/pBtv+aMVd/y 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 a/tca0xV/9k= @@ -65,8 +67,8 @@ - Document AIRobin + Document application/pdf @@ -74,8 +76,26 @@ proof:pdf - uuid:712efb46-fc53-7b49-8366-cae9cb172e0f - uuid:9bda2d32-406b-fc4e-a072-5de5d524f607 + xmp.did:bf330944-a919-4e93-b25d-11598668e36f + uuid:1b5ec34a-48a6-d242-b1d0-dbec528becc4 + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + + uuid:61a58e70-f21e-424e-ac4e-d6364d561ca8 + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + uuid:712efb46-fc53-7b49-8366-cae9cb172e0f + default + + + + + saved + xmp.iid:bf330944-a919-4e93-b25d-11598668e36f + 2024-06-04T14:52:54-05:00 + Adobe Illustrator 28.5 (Macintosh) + / + + + Adobe PDF library 17.00 @@ -101,250 +121,314 @@ - endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream -H‰´WQ¯Ý¶ ~÷¯Ðcî€ãHE‰¯ÉŠ‚¡ëö0 {¸k¹ëÚÈßßGÉ–íÖç\ÀA€œK[¤ø‘üHúí_ß»·Þ{÷îÏïÝðË਎êÿÜ¥‰¿þ0üÝýoíßß¾ÂH^ܧqL1»nxûí÷Þýø¿áê!ü?²vL°¤Ìîù¥ê¿ !ı$v—àã¨1ºÏCð2fQ{TÆB.‡Q²4RNŽFÎ1¥1À«çáûá;8Ý/Öð –«á–‹K vJ õݸ{\j6 -~ŒAó®`RÚSòˆŽÂ£”h YuQÂkŸ€¥ÜVb¦1 -ñV á -T¤Ì¹ª°P8¨B‰L'ŒE¢¬å1I耾Þ]§äþúcOåÛkø—Ù¹~ࣽÄO@&YÓè½Oîú2¼‰Oן†o®Ôέ´Ebx,¦çm&‘Ëæ…ì¦5>Ê”®[e¡;e¡p–Pš’¯k Æô ˈ€IFø -y¬¾ ØKû@Tå^>6@èD 8Ÿƒre·\p %$¼á$eWéVK0¥@™kÈ8+ YW²Ê r¤òc F©JYÂ!º˜Rôh©¦„ô•®°¤‡“ßÒ%Ÿ—‰FbÔÊ#ø{zö ì1ý!…N’¼…Sέ¶š™[5°Çö˜˜‚oŠ/ñp°Ìlˆ“¾Bf+gÆmJ7 Üé–• 97+1ƒÀ+Ùzu» ôšË®ÒíJœ R0Èò±˜M:©Œ …y”ÌD¨ièÿ>7·t - úb:>á÷0ÿ9Àhi#æD²€¸pˆÞ³²âîÌO©, Nl`=72¾GøÞ%(c_U¡ã„gÛ{¤ IÿRñPÝònÛGqëÈÅŒ"èy(r(`R@A%ô®Âr„ç%âÓ"ï*Ýây‰<æ"Z•J‰ñHÀº’-¬òHÁ¦ÄXnM _E‡XbJžÕêÅiÎW¨ž%mgc8q§TVp–ÃßÓ³å.á ¾&·PNÜ*{VnåöXC±ëy,íIF -믜WhoiÙ ÇIÓ³òX)G›Yù”;Ü·´l?ZNlc–¤¯3›DõXÀÎ"º¯t¯¤¨m¥ÈRäh¨JXŽ4…p”ʤÈÿÞ=[¾ˆìN¢’|f(¦‡€÷´ì€x•ø - H<¹À,·Ò¾Ï{ Ï‘ê ôšóC¼Ç \ œ¸÷œ”Wx¿râ§ŠÚ£º‚Yuk8ÂzBÙ©ú}¥[¬7%/uMò’Ë‘˜u%0˜’GŠˆ8d6•xhâ«uT, KNA3>Ä…ñt‌ÁytOɈ»Œ§D ˆ3–) ·²½GvåÑWÚ‚ QEsÝ2ÑWû{oÏÄc5‹ÂcºãÏ-ÆÑλ -_‚C¾D ÖݰÆ݅ЀwƒØIÜ…QâÛa®r.†çÓ€“Ñ£½ Þ¾ ØKøÀ18í|±¨ÃZv$!3¶’"V¦Q¬—4R©Šf¡ÊR’ƒ$œMÒ&YO„T A7Žø™Ž~6Ÿ,Ax²;K˜yتžÍyEΚGŸg±9A¢“&,(Í[|%†'ØeRÿ òöÃÅDD -ßlkv»l&Ìòê%M?#.—‚Žû8ùla³)‡ä_,1@BðÝÐÎ"êˆíô,'ûàt³2åZ‡³q|Ž2ÕãÓå_ æìäD­˜&ç'ÙœŸàõúw(¸Ÿålå¨ïîüæ»<è&€“þ ÿw ° æ>à´¦Dìû§?1*Záp}Ô1·\U„üÖú²]È¢G¨öX} .+¹;9?8 ¯ª›huÂD4ÕMuÁ|°“‹¶²†°Št“[™èöÀo™œ ü•}Ÿ%p¾ŸG ¼¸7‹³û³<Á›”gôÍtÎt±õ¾Zà“_=¸ÛðWëÌä²l©]b °‚lRÒÐë±½3Ð b¬¯k¾¦ 5¾×‚‹PâÜŠQÐÌÄlæF âzš[õK²Ì¢ÚÐ\¦~‡oÆÖ×*ÛNªÏHZŒ¤(ÆÒ*)§ED@Wãól¤nÖFzRÐn©Œ§ëå¡öVÌÌä2êây•ž—ÓÞ"i±†7/µ6%mŒÕÛÙnGD‰+çf¹{??A@9•JÎ@¹ú%µÌmþå¹Ó¶rNQjCÖT£Äj==k™+5ØÛ°FÔ ªF»…öÎ*Töµç<ÛH鵄î‘*“ÙV„ùAO1Äb1€l›ŽÅ$qžJ"*W‰Ï2qq\É3úÜT{‚h ”cZ]!5E­V'ð¤X£šÀ[x).|hb«éœ—סµµ®ÐŠnì[i墥³{8ËÂü`ÆhÂ*óK”Bï­-ŽÍÅ9Ê›,<ÓHAUav¾@¬Éˆä0ÃŒ{iuSW)cÝ‚†©  }çdïtr-㛓/WÇ|¦zC‰¥9šñA×ZÎFŠ6W31[;× #ö'\2éMp¥o,ZGü§á㟶«£[QR›ú«µÿ‚3bݹºÆŽêKÝeV§ÁV\ kZþ¨ÒW®óÚ†®àçúì¦?¾¸Õ&—ç¥úo®??]ðþÍŸþyý ¼2 ; 5vÉ]ÿcïž.ìÞüüÛoO‚Ÿ—é° mºsbÇ‹­ÙííØ'¿ùðÞ ÿÿÿÿÿÇjÁZ endstream endobj 23 0 obj <>stream -8;Z]!>7L`Y#Y"4]2s>G=Zs#a]-Rk-jn7)Y?a5[7T!b%o.Q+KWBp"chOZ3;DV!=6-p -j7]dtXX'!(-rYh`ZtJii[I11.#pX@WJo#3J:t!t.CS-c#5Y endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 5/9/24 12:41 PM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -372 858.900024414063 0.797871330847602 0 8284.92864278206 8260.36088924119 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -372 858.900024414063 0.797871330847602 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX$ºþLĹ : EDÎ ¬ÀÀ,À:Õ»Pº&¤ØA:ÓˆÁHƒP×uí a]wK)© 16¦$ à å ð-¿ªŠJžSŸè¸êY€»>_sÍšX•Ó{åü>Ú•=•Só]%»2ŒÑ<œUëýž5ŸöiU=§ÞŒ¹ëSõÞnÍ‚3 íaõªœòÛvw $G­—â¨V@ ’ì*Ôý(Š¿Q¾.Ùø}c8úF -ÕË–=áa{îÌŸøíÔnf€Ó6¬vNÎzã×sÚ•Ó}듞ë”4`FÛ'aâ2†+{À€ð"ÈÁ,ËRl àG0ä¥õ¦êØìIÁq`ewu¿žÚðʳ¬z]©9~Í·Kù‡]»L¶|HpØrüÀ½]õé—k;<î -®ïÛ­U1ÜJ=ìûõ¼1Ê…kW@woWåÞïË­ëó»KW€üªf¹ñªf9~ PxU³“}­[‹Ì(=ש© yî=ÀûáTNò‹ó;µÊ™ÐL«ÆxN©\ZœiÛe»/Ž]K»c³+5Ë®7FiïíÆ³ «´Ç^°­Õ/íÒZik*¸fiRò[»´-»õ­••Ó“ô!ŠUk]«çxNiªÚQwíjeå¼W/†,ɰł_Š<®gŠÍiØí×5×·ÍëÛÇ1¶rº>MÁ½î‰>ᱫÁ·ìŠ€=qü¦÷ï­½2ß±yõbn—~Í)«rT/êµÞpÊ¥7¶ýÖôkNGqôÿáÕ\sZ)¸%Z½˜XŒ†? Å—ðñ½‡a÷œs2¼mXeɰ/"ÁÛË ÕÛùa(Þ«Ó½èc–|¾)—½W/F~ߺG2_{µÚÐ1zæh/˱dÃ}8Ф]Ãl)–=,_ó}Ï(Hªä9õzxUr¥~ã˜æK’÷q¤çÏêÅp°µä¿ìä ßnçµQ1]¿÷ûrk—S9]· ×tý -˜µW@ýÚoM¿÷k¿iÿ¤úò’)Ù]”& Qs[žaÖ[k¼1ýšS Ç©•Æû<£ŸÖY2ܲaÙ Õ󳝸vã×Äe· Ïœ°ñÞîípÃ1Œ‚m8t·XpǤ‚ëö–+ŸÆ¼û~mû|c”{×3=ÀúÝ)XMh;Fß± ÿ€ë÷¶ÝŽÖ²ßŒVV΄»oçÓxØM\ÆÐïËÕh÷k¿5G«_Më½r&4– ×·çUÍ)X}š¢@{Å`Õ›)%Ô.ìÐ>—¹·«–*y5ô· cPN–âdF(Î{ßoìrTòj*+'W?´Õ«~Zöø2ÕHëZÏ:#g*”´ŒÆ»&€ÖµkgF×xvŽÄГ½óÐ!Øyéq ì,»ç£X‚œô½{ÿ,{9ŠeÉGv?–àèñ¬£ñÌm4þÆô ö|C{_®æÓwsW¯ZJdM`–/_f¿ñ€Ûs×gÉy×@¯q­'2E"SÉ«§)¾V*6´OSÔ¯ªÞhõËre7£©äUE3Õ:ÏlÔÄeÔÄi¡&j]óZÿdÉCpô")†Ýwk 9r±ì¼C?þîq- Ç})~°ü£Ç5‘{ÅÒ‡\$¿èq­ä= Kä ‚£èqmô¿'KÑãY)«Q§™$˲¬$ÙÎ}÷ÞgéW³Œ$K2ãhFªßƒ>ô¢=éKzÔ§^õ«g=ÿýûÿ?øÃ/þñ“¿üçG–~õ¯ýìç`=øA AA,ÁDÁTÁdAöЇ?Ã0Ã1$Ã2ÌxÈ‚+¨‚)ˆ‚'X‚#(‚!‚ì Ù¿~õ§ýå'ÿøÅ~ðÿï?ÿ¬_½êQúÒ—~ô¢=è³ï»ïž{¶«=íiGûÙË^v²]ì`ÿýwß{çå+O9ÊO^ò’“|ä"yÈAþ¹çg¬”©PÍk\Ë,Mõ¾\Y%4Ç-¿°Ê­[Õz£z4ÅK»-¦’c3ýšÓ÷†c­~U2¼jÝ.gt¿²snv1µ+»ñ+ÆØ*ùQ­e£`L+u»xêù†U«¦ €ïÔKÛõ›‚á8vÓ»>ïúlÝ.GÞÈœ—¥Zµxž?ñ<´–«Q­~ïÛM½·=ÀóÆ)ø®]Έé9~È뫞W¯šÐÚ[»1« a×Kh -– §Üú£%4ÅzPMõ®ç;õ†Ù¼’+tl®[fÅbNFk2– ß2\säYc -ùgŠgÔk€ÇôeoLÓîÇA¯½,ùÀ`÷š{ǯú‘eטkšv¿±ìZì¦`•[aÙ3Íe½¯ÍW’]‹ÝšõÞ2üÁôw§bª¹¦Ý×+f«¬Š]ø®]ú‹½¾Nö¬~o÷­YŸm¿ñ€–á• âØµØÁÞ{–¿?v­‹½”½ô€J^>Zÿ¾’Is°dX5§äõ¿¯˜ý1YÂõ“Ésí¦>×+Ϭù»cnüŠÕ.K޵¾,åÞ³ê{¼5ê“ç:å¾¾¶í7¾gÚl6•Ê—U*ëz®ç—©d׎ͭ»~é×vQò›RÍpýÒ_ŒRÅ«^}Ù\ÇV·^‘¼*X¬ŠQª×ûµlW%¿_öÎߺ9ÏïM¹´ýÙ°MÃqüÞ«7¾ç×ÇpŒõe2\ÏñêžåØMÁ¬9~¹qj€÷“˜Uò ßöƒÍßë¾2ÇR¶ûRÕó÷ʰ ¿Þ•ªžc¯O~ÄdøeÇb:kÙnlo¾õüV¯êžeïsÕîëU¹õýÝ-\ çÔ§zë·þ2;F©d÷U¿¬¯E»5Ë­]ú»ß8Ž¡>y†ïÔk,Žë÷¶¿[~SßûÖ¬WõÕ/‹åªb_‹Å¾yžçùËd†á÷}¿ìM¹î7À¯^±T §ÜÏu?Зm¾W÷æ{ïXÊ]?7ŽaÕ›J?– ×çgÃö[¿°êüHßµW€[³>±ÔÞ˜%Ãö{Ï1ØWþ¬”ѱûõ°æx®9—Ù·ü¾^sª’WŽË<óLjòò{ßnÌz°“aDzô%÷eïœôHÍ*¸nÉ_†dŽeYr¯—½¡•!ØpÈ0 ®7/Ëåp£/ -U¯I%¯¼·+×±“¡&’]ëa©‰}ìZÙ;èK’äâ÷¸èIMäž=(’¾ô@Ò“×<Gäÿ÷‘ËÑã’šCs¼phþÈ/½1ñ^9¹ Ô@ï¸Y&¦lºå÷–çÔ$ì5Ý®ß.æÓw,ží·s¿¬Úý¸1{×§)Œ_Õœ)5Ç»)Ï˪]Œ ôšÃ¾aT¿q¬Ã9zîú|åY£9xaoŠaIj¿>rï;çaé}P+Eÿñ!ç¥÷yáè•à×Bóð½Ý˜~½Ó¯œ¿ä"8‚¶«v_ô\+ -ä†Yo§”Ð8Úv8.ãšÃfÉð}¿ž—å¾*¦±rr™æxY® 2ýÊÉeþwÍQ¿¨WL£Šájò½rvív_õ̾1ÌšÂÊ©zUï«©Ý8Æz;¹æ¨\¸Ñö-Ϭ+寍&ÀÇ/Isoùe¹Mv¤šÃ®çxNmûMÍ5ç–ßW,5«—}‘ƒ=ç¼ôÊRÔHì$–½sÒ+ËRë )~°ä<Á’¢ù9çœ{öÛ)—q>jœó®qkŽf”%Ã*96£—}ò‹]s¼€mÛ »)ÇeŽ0€:|×@ÿ•_¨9ÞÛUåVÀ®7нÁÁŽž ÍñÆ7üá¸L‘Ðò\¿/7Õ`/&¡9ê™ =Òky†íú ™ÈÊÉq÷@¯):‰z¾Ýú¶cq\Ñ4G=ßî[§—iÜû5«Î†‡³q( 벟u¹ŒfVƒõg$‚µo Ò_ ‚uõóãYÁ:g~®S•‹,b&Už‹ž"Ö{vœŽÅ‰óô‘E¬n< Z×ÐECvH ›7…(´\4´*¦“ª9‹ç²—& ů#—ù£`y¨ -¢ ‚ -í§Y‚M@*PtFCfÁ»ã«G¤RêPH)TèL4™Q8Q¸Š%±œ¶›¨±ÃÖ ?žn¢z,oAY>4í.õ1E êƒÞŸé ±ê¸*­FJ74½Û¡õÂ;V}~.‹¤®²(/€sæ+„¤Ã/+( ‡µV³ËØþþÏKW6ê¡>å 0×õ)‰äuµiÄÉa±â ÇÊ'+žD>iœÂû Á‰D"‘á%¸„¾âŸÐW¡¯8Œ@ÄPœºJ°òÏk¨k§¬=E¬hR+¡I4©•„éBB°vÅG=ÎEO?Ðýr.3A D𜋞z—ýòî²]ö˹lµÐ"ã>£Nö´_ö´²§•øä²ïcæ‰ÂSnr_nr_Þ0¹/ÿ/Nëµ¥$¡à²‘Mþ…¦I­¤»|4ù›€cÒqÙEÀq¡/ÇäÂïÏä[^©•tXiø?f¹ì—[^K–¸ô —YžÃð —>±Xú䎄·š˜p@$B_qšÔ¶ìv\‚s«\–pLºÊaML:.«TÖĤm$]åV“NÀvœ(4h¡ŠÊ¸Ì–¼8mÆMî +ð…Â’Ü\¶n­¤£4H#ÔsY]“®Ì¯.BųºU!b& -ç€Z³Ð*]’ŽË2„/l¨ÂÇH—oU,‚#éÚAxšte ”a)Pó\éæÖ×3— -„b¬ ÖmK Cpg*yéªcp™Àf áXÁÖƒÇy¹§~šA:(N2¹/_ :‡—.íÇ\†¿(.kbÒ­¥btƽ!X;‡Kû[»`í«—Ñ)Á*3H6ê{Ìapû<‚!V<ÔJdO+éT{F;.{pÙœad>¡É¹޹ôI'†a8 -ðg/bÜáDáå£$º¡"ðÇq¡…£vàH:tÑH¹U"é2Ý÷=àÇÙtÑÕR[J -êÛú8õm}¨Ÿ碣—’–*þ:p$>ad"ßÙ´•Ò%éR{FŒƒŠÓ-á\¦X½E6„·°á2ULÓè F?TXcƒ€ÄÁV°°ìÚÁ[—¹¨Ðçâ -b‡RÀòÂá â,–@"ôBd.Z¡?:.+ªŽ)@<`Á‰[‚˜+PÈÏe¤ºmí5 ™_6Ĉ²¼aÀ «c@%Z¡ýy/K(é¿ ip"O¨ùÇ!í•p.º¿B²Â|/±Aê:6Š|œË2™ù\sD2ºFM—Æ–º$ÝÆQ™[LQJl•‰±y BŒMÔQ[\w[꜇£sÙb$:yõYý$r¿<¶/GTHÏÇuSá7”máÑ—`í¨"Ý´AŽŽH>ª-é,©kÌò›Z„y`E*@&èÙ€°ÈL*Í …DEƒ‚‚„ÎôÒæ2žþXíØ Þ¸Åj¾AZÞÖ8PÈÈa¶kÎ㈆Fcw»Vl¸ŒB~NïL ž€c¢˜Àuí8¨8¡¡!íô5qÙ¨“uŠk/°¨ù4 8½€…\vŠ|äVAmú! 1(¨˜Ö$èœZP—0ä2‰ÁQH˜ĵ¤#‰Ô"ûAŠù–´?Ï¥"Ñ= ¨å~Pq©LøÌ’öD³%B*G¨ Z|õn7«½ìÈ DüÈ%Ø©}–êÌD°¹ÌB€‘J‹NIŬ'ž! $$_¿FLnTL¯Ëà“åæÅeôÆöŒ4Ø.à$X׌ÕA XUH:PGsä âÚp™¢˜VI¦AðSƒ‚Q/ß”Àºæ²ö&¸=‘®¢ˆknBkrúŠ×®N qÁB‡`m,eE & â~ÃTò¹ÄeŽÐ—oK¨“@ËÃ’¡ÍÜù$%ÍK¹ bSc/ ‚ÂäáÒVy8£Ä¿ç½xÒr)ˆñð´\±MGS˜X…ËVÑÆÜ•²`‘á*)Ú2<`U®‘Ë -"é²_Nà¨pÆDƒä”0!Ó§ƒá\F÷ ·#Îoç*Þ ì(Ê(ŠüxoŒؘ¬ññ”Ôz1‡ˆ¡ Z~"iFvq”ÔJ@Õ€\ùâ2ôÃr‚Gò -¢yAY>ƒÏÄDX!tY‚Íe™gùˆÄºÖoa@"ÄnrsZ³ò;=¨8—­skTªå6ËìÇv»áÆj…?¨øÝT8dsc5—}% é^Øy= ]ËC:Èe+ê\ôöEŠÖak%]ŒÄ|¦ÝF‘naŒ=¨8iL¼ˆ;Åj†üøzÏŽŽË8 -ðÀB6DÊ9Q8ýRýí«têðã3«ô·ùæ2 4ù‡Š&÷uÌ™JO.6¢ÿH8 ‘•C¼tÅã6”të·ùt*A‚ð*¢`³¹,}M‚eÖóüib8.‰04ŸÆ‘ᘱ -Yñ{[8û·ós'éäeן¢à{FARäã´"ݘCd:ðãèé”RW9-Š -Œ<ÂeŽK‰v† -$¡ísÐbl¼A6¶ÐÄÓØ<®JlXÛm–Ä@·q™;ZGðYI‘è/ufpÒó0CIáïPA?ïŽDó‘^œhöîsÙ˜0ç%ÚËÏ\ðè'sBW©O@.”ìE$RÎqæ½8¨ÿ×pü²òŽ%:q”H4³š·P²\¦©ýŠ2TuBW¢\¿EVÞ>$v@õÈõª9‰”“˜Ô5%Axבt[‰ùžÅ%é¶Qiil©—ê¶K¹ËFˆ¯±u‰n;YÏØPrc{Ù¾®mÌMb¾§àf̦½ÂJWüvO 3S09LHǰpÕ“ù cká›ãkõq@¿g«\T&Ó­\CëW-,DIGžBI7±œ(†oƒjj=ƒRêk° +ÿĹà¤ÈÇaôVl± Vl\ªLŒm516ruRl/Õmdƒllƒcë:q\¸@ìÓ7ÆtØÁÄäï‘DóÒJªË¹â5çSº¡ð˜HÇeÛÛ €"Ý·&Ý búxrÅüç–RßÉ#/&泤'v“:ÛÙCÓ5¦*¨\6òÈÊ;«”úê,»R«›¨•´2\ì€:Ópý*ÈÊRê³=°ìfuSàˆ¬Â‰o¼D'ΠëCP%&êæ 9¡^*Z=E¡„öçqí %]‚ù¸ÏðÆ¦Ž2ŒÍãˆu›·:)¶Üblå€F±A\’në ¾Æ¡|ÅÖ;‘Î;  Ïtï…NçôH`´)ðþ«dPý*bÐù cÍê\û|™^ap!³dˆÍØl‰tâ)”t*þEãÌž—8 ’ŸDÿRJLÏAÅ%§Ít©¡¤SIGdº¨Ð¤O¡¤ã2†öªæÔ«†d¥’zÎOshÙ=Àûé½r>ÎÛv1µ yxjÆÜò̪^Ô N½5§ yÚgÅâŒÚ\¿—ù޼Ÿ6Äzm7åiÝ.mbɰ€9óÆpKD»²ç}¹š6ä¹oyfÛg^ÉÔlyYn»nŒ¢a—=¿vý -xë8žSj>`Éní¡æƒ8v;lÏ2¬Í²Vz8ë©Á·|Šm€7¦á8õ|6š‡³¢ŸIÇnÈT¿!Vå$`U;µ[†ñ«š_*šöâÛŽo›¦ãÛ®iÚ«iº‹/Ë}Á^M—cË«iº¦ip­jPšê•áÕ«&¼š¦Q^5 àÕ4m»j>à¨ùÀ«ãŸé:v¥ÜUÇ·üÂ5ê¹EÃñŠöTuŠUϬúÝÓr*e{ª:u{ª:ÕàÑn\¿fOU§Ü6¿á5¼2¯^U ¿,—®QœÇw=¯j:Vy·¼BÅlï–Wñ+à=›†Q.ë•oyN¥zìÙtýªÜ–íÙôýÚžMÓ=@íѰzH1«ç\°¼í¤›è„‰.'eZ;ð@õ8y.ó#Å©3yLlò³GI:o ”tž9` -E¡¤ YÞä*VoPŠ©Þƒb5ܤT_P½(”t^„¢z†È¥Š)üI$ò%ÒæPx.K¨ -ÆS‚$býu»ðuž}ŸP²J !þ0 %cå<±÷Q9D…g|BI÷]žÌ×±¤÷Ò@jCIu.J:ŸŠ)O ”Fuœª{M(é •iÉ ¢õCe§.îÏ ÁPÑ -úùà@Œ“ºæPŸÔkê‹£,TŸ$>™¯ó9LCwOŠæ€þ™5ÀýŽ,,¼ëÒÂÀÌ+qÊ0ÖÄ䎜2ÝǹŒË¸¬09ˆb㲑x~šÒÒØ,q€[Zý³uðIO½· DÛRVçã2Ô5@õÔYqV_#ñB¦'Zw—)H‘”õŒÈåml,s™xÐbˆ^ªÛ,Ž˜—ð‘‚|.:2A±ý/±Æt”½-<$¼Œi5—àýlƒ£ôsŠÕ*—qY¦%ù°3ð0ÅCüŒ\vp;C•Z'§☚§ù@ö ÈùtµŽ)ƒ þ#Pá3âá2.‰0¤ã2.óÄר -n#ñ11¶‚Ë jý1ÃÚ;…WRæ ´N¢å0W{€ûvŒ•ù4ŠêK0ØaäRgt.ã2Uº¢ úЇÞÉè~9—uP/ç2.S«É>p¤µ‚ ŠÔ5—qg%RÎ i)H½†â‹WA½ÂD°è‘ý„YNmWT­þ*e¾®UC3âbÚcþ|u†…s!¾pLÚäܾŒa.K±ŽÆcuXoƒŸoÞF/9óŒ­ô~Ý6¡£ o(Jœ&ó@d³ÙŽ`ín|²‹ØebOqPqX(”  ÏI°èL8›Q†±y%CBÃzƆz©N¼Ù~á -û€ýšTå˜B‰û«ó-lÞê©ûÓeá ÄňK¤O°P(éh:6à2;Æý—}‰» ™d—©Œ—qÙ_• õÉcƒ*¨×ýY™7; "sh¿ÙAY8—º×† u<ÕÔ"x˜ SÊs—!FW×=.3¥NîŠRÓï(Ї•*sqÙÒ¹,ä}qÚ£®e”alª66.“ü³±yXÏØ .I·mhc3€hĶiíAè6—ê¶‚ƒcC$ºÍ¢216Œ»ÍL t›ñ56ßQ/´â -zãâ /õ<—­ÏŸÈzò ê2·–ÁóeN‡C|¿ÝêÓE#à´ß´â/ —uŸ"0H?§IM¿ƒË`«Ã4`]©¡úŽËJŽ / TC$¡pÙ) U¶ÀälPYå Òº0$šµØlÄè©2Â…¦)]UÉLâ²É&¥úÂ@¤®I5e6a#DȬ,œš¿¢ÕRÖ[H9/“û31T´bZ7¦BîÂeš‚æ„¢‘rš¢H9Ë §À1²&umpZÝóù'ßfèΧQ„@¦ÝÀgPÀç}Tßø|ùºœ6f~5)”|&öãiÁÌm-‚j`õ®»b:ØØÚbžÓU—ïöÕÏ銴­J ..Ù1‰Æöu}wÀÃ*Úc•µáWE=¿fv˜CY  -¿«Ãì`‘Ë&öãWŠûˆï\tòÐ?NMƒXGÇsÑk™k}°Ðc'“ˆyN‹Xª¨‰ƒÇç$u!óôÁdÓµžÜÕ¼?“ÿ˜M‚µÔ·õ5 I—(œ(܃[I‹¶?“Ëx)¤œ£PÜJdÌÀÃÀaP¯Œ¹–©(sBæÌ8-a7QY@ê49Í85$T´zî¡i|„¦ç‘Êœ‰²å0·…3¹ŒóJÜ'XæÌ—­'?OHÏÛ÷š‘B‰ùÞc&°ëï`]9¡ñEºJDÚ5g…Ò›ËJ·#VW³]‹§] $2'~è,N¼%#B¼c´|½ ,7×’åŸÖ¬ÜÑ€@:’ãn+cXAøR­“Ë@†ÅWFEhj8æxzB«|¦T×ïWÃó¡#×Ë)Ãón>nC+ u½™X.[a’G×;”†°’V¬nh6-×Ì…–³¢Ë%ÎrL=ºxƒú-Ó,6ŽcRתÌ%2]Ù…R˜Å£eàÜ7¿3Ë6ïkDÂÃÕ·9ÐÑ«GÇymBÒ¢KM¦„¢5…b™¯Ű@˳ºÐÝ‚Q4eéy/-ÍÉe²0*×h‚apTÇs™ZRó#‘»ÈAÅã+b±¼‡á[>Wiø6ªr«DwW¸»ÀÖÌ.ð\Vñ•ƒ…•@E`­dÎx[ò™F¨_Pìíúˆ}ę܉mbŒP“Ü­*ô´ª6+\…V•@E¶Ò·ªQákÒ%é``eÀ|Õ5¤:¤AøÉЍ˜<ùPL:ÇÈ ð•Qo;—=Š—€ÊRÖó3Ê— ˆN>Ttœ‚’ :ž‡¦åÀqáuyÈôù°h;7ž:ciuC/Oybt ¨MÅè‡/=Ó)²ÂÅëqÀŸ\V#:©žnRTWÝù(®ÑûÀëuŽ ¹ f•Ë+ÅLÖÃïNÄãÂK‡ëë Fç²(qᤴâ—Ê÷\†A˜ý¤S&ÿ#êÉO¼üµè¯ÝìõäÉ.´ð‘á'Àw&ŸËzÉeáßCÒñL=‡&Hõ`&¦%z>.c”!yŸ¾( -?[N“ïX7œ;Y~õü5hÏ¢ˆ[«ãðXjÔýº€‡fŒX{¿x/dF*‰¶ß$„Ñ'£Æ½ªíÃÆe4—2:z—Œ®r™šºÕƒ.K©…? dqø¨‹Auð“Îb¡zéÕ–’ÛdLÞs ›U\¾e}¾kŽ\Ȇ -itD—ö„¹;•¤N}[_·8 nOc$JÉe™P}0H#Ô?•Nš ¨ ÄbõœÓÒkUjÃ;)Âù)#‰æã2L£’êu¢áÏɶ8üÑèËt’ ÖQ|mZ`‡Ã,¬kÛM„Gédá¨=ÀýÃÓ|"Ñþ‚§R=%,©ÄNœŠš™D¿i€Yñÿ:ˆT‰O)QH€’1üß¹è µÄx76Zxxð“N@ôWo)ØÆvøR±ŠÛáOT Õ?H.ûVÊzø4å¼.ë‘Ò¹LRºE®Ð€¸bàŸÍ‚ø£Q†±1¸*±)º™ƒ¾,!‚òÕ·õ‰ Ðäû–àöEA+éºÂç2ƒ|€™5çÂ1g†§ùnMÓ6`t›B°øXKÒ:7+øðUÃáhxm§IWÀûÂTæO1öc¸hƒÎÇ98Z6©Y.Vß!x½N.ã>­H]¿‹úðU÷ÀtþÈHŠ <:À%.\‚áÀß#¡vØÍàvÑꔂP/omC£¥´íg‰;DEx—†ŸŠ2gô%”t—ýrR'¡â!Ư&÷å=<}æ|ZÈâü¡÷“î’"Ño)Eç]„7;$øc!ëásÙ€—à*†êàm[¸YiáïBù‡AY¸)ù8‚&_EtTߥ$ÄÁ˜¸ÀB®Qƒ=y¢ðÄI°vÊO8V|ÑQBIw¡=šP}”oƒMÊèßbtKdâjFRbxÄ ±bÔ‚ˆ¡dM•ɇ=IêšímCd´·‡\æXÔ‡2x¸8W»›@Nþ@E]æ‰8u>Óe¡úc”¸ð6,uÎĉþ‚‰t\vOJóà:̼Ê'gzhÎÍ`r˜wKÒ: â¨ù(UëdpÕa–ŽÍ€ï "]¤³pHÀPáQлù8—!DŤôƪ•tæ&-!¼i %OxÖN1<.œË^i Û@“/: üÉsEÅJxÉC1éÌëåkÉqáãƒ@5`µ½ÌP -êI‡Râþ8]ýWºâÓÕuFˆv…Ž - J(é: -B_ñó²ðœËÚù$‚¹'C•¨ð¨…Ë~9 ?Îð$ÇCŠŒZŒ ã’t—ü³±™JK¶½<ž‹Ž² ü@IabJé¢{“ûòp´ý&¥ú^عF.’?7ÈxUãÉeQA?7î|1”lušÀ9ÿcbô DPñ!Œ‰tâ)ÄÔ¥ªHÛ×#»‚_1ú«7l7ûÓEá5q!sÊ1:ómBVÅÓOÅ™ot -|äÐ@T{F?Å%”„”Óù)/ŠÉP¬.&ŒHéŸRKêX¨nÁ0à¯?ÎE?A˜¶'Dm'ÖR´ŒC¬ø†Xñu\µ¾Ã¤ é”D?/Áy½Ñ ˆNþQp:|Ê)<™9m,Ÿ]!çg\4¡É_/¢ó‡Qá CsòŸcÅY®âþøPLºˆŠn»{Ж’F‡atµãzùü_þÿâð#\hᇚM€’K0„_XL¯‚å ¾/"øðÇH‚Ñ ü ¼Åð¸pPù:Gøq¯’!/¤=J(éVçe¡I­Äx¤»Si %;òX -R†„BR`ŽƒønBŒ/a®Ô“"§; »G‚é+þaQ8Q8í)m1ÕE†€‰`±½Ç¡OhÂ+ÊËéqÎ| ÂÈl/‹“ÿ¨ÌìH”sô!ðgHÇs5š¿œ€iauüÉe-ª9ùyNu]b¶® -A¼‰ %Ô‡oƒ–›R4"åð êuÀ1ù°pGR×éˈ„·ÍƒŠsÿyÏ7|ç(©»4)ßý㲯ñ}' -ÿN”Å—^Z‚ÍeÑwþ1N¾™¸Œ…Ë ƒ¡`t -ÿ¼F·8mnAÐ1 %Z×ë7o#.£|=æ]›ño3,õx2P ¤¨_—ºÑ¦{xlâRgN(¼JxQ #Å¡dƒÛ¶ÅZàöq"sAx7ÏlRDáD¹Mßdx¡ê?Ï í •àö^z~ãA°Æm(IÀ'g4¢|!áåìÜN$Â'• ¿N i·Â …² gJ˜Ãƒi{ïé­…Kì‰Â/: £Zˆ™:ù EÃèÑ©íóÈ óyT£î·©Ê1ÙUê0Óš£î2ž,^˜\fÆ>ôc^¬„O`Z ׬ëv~H ”êçXù8v=|t]O>E¼TOTJ&ÿ XûeáRCõ\†¨MÈ_ý_K•ÉW>‚æ4 œª?œ®ÃGÑõð3¥Q÷¹lKl翜æãV(Ç,µþü'uóTï??é$nzá§Y¶¤:&Þ¸xaT©¾2Àð'!UÐÏÊË|ˆ™±xÈtËš Š€æüŒËç„ÌFi=y.{m ž/AŠæ£Â±ðÒãXø§0iôW²ð¹kon°/1Õ?>¦ºH>L:sj»½-\ÜþXZ]V±ý¢A]æÌ=_ÇVù“CY\ø‡8Pøvø¡Ÿˆ2.~#J&ŸJ&OilçOA­æS€ÈV‡Œn oo«Û™ƒÂƒP¤C©á*î—Ť›,þá›^¯õéÜhÃþšE£º¦0àϺuA“R™3_…ÓôΖ\£sÙÁü'_Â\†? (Ñ¿(HDA&cȬxĨžà -øôŒÞŠï¨>7¡ 3afûòœ3ŸÀ¨Å1eÊ[ñøÂ1do-¼û$«O¢ßâbP<ø‰{»V“e0:—i$ÌT'¢ÃÇ|“ŽÌ™oDD½ÀçG1 /{káÞ9«_BYøItòhǸìÿœ ôËà*óubìù5vÇŸ³áÔû£3,üNL4•Ì\(ò·Ã>sa “`¼ÀÌ ßÎù¦æ3D¾V‡u”Ì)é°P݃ˆÝ÷>3Qx÷¡”>>0‡žé ûÓmPŸ”¨â9’ÒxÂF ß–uçã2Äo9Ìm|™<—‰ E'½ðû``Ã= ÉáÓ…̹pç;ˆjT¿\½·å_=×G…7,.°µpïð@%úÛÍèããDáë -9üJý‡_Ù¼TÏÜ3ãÖÉe…²3ž¶Šà˜—Å©óØC«7î|†÷Ûú¼Í þD¢“‡<­8ùÃeqá!—íþë[Qý5bu>˜ªGJ‰·m…§ÏªÞá1él«ùÐõðV—¤‚ǘ[Œ”Îe!9ž¶¡ÄýÄê|šÙê™Xtò˜ Ó5#ÓŸ}…éÀ$úÅXŸxH‘d€²ðôÅJøÿùI7Al'ozµ¥„ éŠ=2çÂÁO‡é²pƒê:Œ3ŸOtð™"LŒÎxEºÈØžË$½µpBm¢pï<¥PÛ¿äDájYRx.³0^¬‹/D Ïi¿+މ6£»Ô24¹¬U—yð`Œþ m‹ǽ‰Ì|ª -]ôSgBé\&¡à²®‡Ozoðq»¿GJ…blV Ûù[©Aç;8*©nqM¶w¨w Ûr™‰íé:1ý¬fÅ Òæä9Ûf?gõÎe*¸Ê|š‰þ‹`ñÛ™OÛ EuÃÈây0Ñ,*&Ø$.«|þÛ31ú…Ñ™õÆÅg/•9cƒ‰êcˆíü1wÉ|…€?&×è\æbZÈ?|.Û$‘®"ŸÃIL«·@™ïrú„æðçDEQ= UÈœ„Æô5Rà2®6 ŒÚRò²¤ŽÖÂÕŽcŽäDá‘cÅ-öŒzÇfÞ¬ô ‹çUˆJõDkáöÈ á¹L^±2ß—à0“¢9¿ 2 z‚¿Æú1ðòúædNˆðz;2g¾Crøë"³â›Êf;JQý¶)ª§Áƒr >ÿ櫸ïm‹ó8Ðq@£&ÿð íˆí|þu“`t.ƒ1¬Î‡ˆ±çÏH ¯¿½ØŸ4‹ê:bE`òrjÞ°Òäü’—!ÕêÛú4¢“ÿ(ÂÃ÷.&Ìœ]ºóõ"dÖ7Aª«¢èüÛ‡€ûÇ ÓYOº‰ûã‹Â‰Â=èd= ŸoÚóbQ?Ó@éšPÒ… «íšPÒmXL€ÚÎe#ÆÛ`æ´™€ -G‹Ò¡ÉW®S™Ö¨¤óõÉ\•’)„DfD0£ J†ãÙ¸ÇHD*FLJ2& “Šc¡@, …±† Qt1æÌÀËw»¥uñÚU,÷›/NE«ûòÓîuCYò7¾¿| ™0Åœì{qv竾ŸšÒùj׺…ÂjòeR§Ÿú?ÝÜΜù¨¸JÎWóÃút<îE`¾ŠDkJ}a`ª†¬Úf^Ç6GñÊοZ1[{êÒ³€†ñJ0 ¥ÌÂË¥)ï¥ ÐóŸkù½0V%òŒ"o Zµ9qÒú+=óÊM³ä h*G¥§e”Ö̃BbÜÆS͘/Îôâ‚¡>`›Ym–k £õ]Ä«E×z Y¯Öø ¼gäÕx—Ô£”Ÿn™ûMƒyþ’/ëê›O@ï4mtËù·=¹ivA Úì³J<Ö²£–™s­Ï N¼ï -r¿½ê½c»Íj0:ì€ï.Ií$óÂ;Ä«LÆ¿Á“€ç_³ý2(ºä1ïÝãEšˆ’_ù,ð±S 9ðFªÙth/ïhèGV‰óÕæSÕØ]f•^cè7³Æ­ª -¨šFC±_3+Äúgu¾e½²ð.ØZö:¥Û0'¼UÁ‹BùæagõéVuQÀÐÝgº'ì²pÙBJêï70~?8H…˜áX;C6~&ìyìÁÓVq°_tP@Ѧ?›Uà1xªyVÕ‚'w¯±ª’±*¯½u÷Ÿ‘÷Ÿš¦ª"úg•Ínæ´¥ªêGãT »Ü­]õêJò™ -Û:¯†øAr¡k¬Yqk66~„ÖU2!WŠ€¼ÕÞÞ”f)aK^«*‹­óÇ _õ¬ñ¾;ëÄbÞP†¿Â@ÇüÆ é»,Òr«fC ëËñ#j¡ý姆 €¨“ÝI•†–\Ví‘Ô"ãÜ„€Òs‚º4LµÄ®«Ebe K.³.³e‰Dk”ZÓõŸ_W¦Sí[h;.«ã&dï: ó¢iþZ‰Ù”© ¦e; %NÈÙµ9¶£ëJ3b ;µð0Áhßýc¥”pqþŽ½ÜšGPÂçegލ˜³NjK´{=)Àä -àÊ(ÑjæáBª„æñ¯U£ÌŠæÍu°¬<4Ô§2V_ íΕ•c–‹Êúy8µë±æÔ•Œ—ô¦š}ß—ö'îgš–¦}V¾¹mË^¡MÁmò;pIûÑÉ8rÔYóã•Öx2Èæ8ˆRx©W"ëÁÔ¤ak½F¹Au“&Xø-ŽHZcB½VYÆ.à|冓8í¤1¦ÇFTãŒEqÖ5ôÁXWž_á¬U ,ûÊšú«jÇ)H¥[¯Íý"p7ïT™<:è{Øs–¡¯&¨^=ˆNÙ C§£žÿTLK>„a›ŽKyiÌ0p§=x\¨ SMGÕî€Ù8y°LϤºë—ܪœ?è{[ØVíÏ5(èpŸuYÂ"í–eÉLÀx˵¸Lýàï uÀúÆC¶G< 8Dp9é ËN.ױŚïiã>Ñ–L¸;ž®¡÷BBXà+þ΋m¶^;óà…ÓhúšÞ/HŒ¸µ»§Êþ@ÀúÉW -8öwÓoÉ›CIœé“ŒËµD9B'U¤cLPj­h¯Ë³p¿ÑÀÂÎ,5ë¸Àé ƒ=DŽ Ñ×äòFbœFÈ‘©H‚-ÖÚeÑ&•gŸÆ¥q ìógÉž;8™ñÃâ•+þ -yIZý$«Ì¤5ìj -°W©˜¨sIbDO|ˆÿlÑ7TÛÝ4}öîR¨÷¢;–8ÿCÕÖ5™†zO0i:+úÍ‚ß}!®§k…ŽéMÙCõ1|ïµ?›î¹´ŠñBNë¢ã4nž,ËO$¥cà…¦)öMÍ›ìûÌ[d™™Üfü1ö w¨_ý$‡å&Åàg”1^.×|í>“ž&ƒâ´,‘ìÿR2úM÷‚ïç¨ðùQ/Q" ”)΢ΠR±)¤aNÒÊ¥ÕzóÆ4¤¥'·èˆHñ]_ðnt³uºçzwÀ=Ö‹ÈyP^gÓµ©ìT‘¥¶®ê¯,ا†’+¡t·n2”ZBJ*oÌ×.Ф?Ò*6„°Ìéœ.î7r’PX;îÎ×»\¦%W_EK²ž w¼ÑZ-pÌ wOa0`iŸÏ»S ðî’ëx<".çPz‘ £YJ=(—oú…NŠCä'a}z=>iÜOŠ -‘¥IŒÈÑ`u @v“œéT/_I1 D]áNù‰í`ø©1äùN/I-4ý1l=·ºVvï`˜ ^”+ée­rµÔ?ðš »•»2‡Ýë ‚nô¨úˆ"¹Çw•ƒ…|h -³3v$2p(o\­ñ¶…ºJ~”ÄÚ3\ªžù"ÍÃEí‚μ$&€[Œ4f¹J–鵆œ}VäÂ˼a5ø t†Ö±‹¿PÅT>4…™U ®ƒ­ç?Íg$±Lî>ŒÞ*͜Гè&;¥!„QfŽúŒ¥`Èý-•xx,"'üóF¾RJÂxC£17”r… 0³RD8ñ>Ë‹FZäzš¹÷7@)AýDKÕê‰}׊µ½ÒJV¯&Vo!V¢A©¡ W^†6&Fš(gÁnŸ™² D5`ù†-0ÀFˆ›r9~"Œ$O[v•®hJŒˆÑ ·pQ)‚þ._Uo™ªbg@‘®Š;]¦2{!0ømíßULEG§ç‰£²:n.ÌeÁÆ[ -Þ]*D=;ô–ÎpY%UmCDD} 7£2 fé1péM¨N; ó[w¢Â)Dè& )ý“㙕j5#«¹Œ‡ˆK…Ñp½I˜çGQJD¬e‚¢C¡v*ôPÃC _rÜQLt[Ý/©H2O áˉ»„…™Î˜Qþœ× *cN;Ž×µKDß4Í#àõ‘þ<€Ž‰¾b´¶aõD.ÃÝ%[i@ÁµûÆ‹©¢èü³o{ÞdxeÝî³;¸Ó“ÍID„y Ô'y _wmÛøbb#ØôÆác—_˜K¬«Zâ«§­Ï8Ûp½iÀÐ?+ýÉy[?ÃæÖä1Ø~àƒ0-ü:‘0 -ʃÿFÃ[•¶O¾2®;Ë’*݇ûÝ<¹¹!F¯)=3Ø‹ò¬fPU‚J.%óRV>Zò• \ú2ÃîQîê‰NoR¥šÐÑ;Ívªr@Û6rñÕ˜Ad]Õzk0Dÿ¼œDˆÉk™þUº¦Œ9Ô!ºmF]:LˆLó=ñâ°iµýèUj`w_ØO¿ì†ÚêÇ©ÒYÏ 0óE³„=åʃïÛüU)½•›¼c£¬ÚZ%a”Oa½oÏÖç‰ïž’ŽCø¹ÛˆúïVh¹{Îà;!õ‰Þ8[G‘\b}4ÂAÿú4öd‰ëŽ{šÐ|"ÅÊ; u%¸&.£‹HÖ]’¯‹ -µhmž€\PuôóŸFyœyBÔg’&¾KSœd "Ͷ:¹¤)Í|´Æ;é6èÕÅp<RÓ$g`à €BŒ=’œÒþ•Õ·¤°Méð˜Ìðdm¾ö)5+Çé+¨‚Í>ß ÃØ)N7Žu—n*Õ|J|?1ð¸öæ( Îr:­~ÉÇખˆ°™·xbH­Ä©ŒjO‹¹¤X\ô#݃éÃ媶§Ðýepè·©ÖÖë’iÖ¡äöO @'5Ë H²¸[¶ª{ö¦ ³ŒX -p¹0¿PµÍföÈè~­vì¼¾…<+»Nž1ÀæõªÎ(vêUL j'08ë?D€Xí½±=ˆʰg<‹^‘z[8G ¬xEÊšˆ{ÞÒ¢w´Š¾P "þóÍ;";¯Ë¦æøž_%€ßþ2瘿þ«sÁà.!oÔ •V<%8…ØGœmã[kLgqš±.׺ËÀ¥&‚@Ÿi8.«3b\æAÈ‚‡=JÍZD·«ÖD{²_›–Fô,®sÑþ«áÁ¥‹“­”¾Vð%f­ƒ0joµ¶¶€åÙLèïLâ¿ñ.sõÍÊ.×.k=sŒ…ºT¢<ކWÒl/‡ öô±hÂþŒÓZ‹Žjî…„rÁ…øCfc9ú¦ñÍŠDìêÑlü%ɽxTƒ©JØö£úvЭn'=qv -2õ!:°-õ?§8ü¾¾Œ@(ÍumÊt …F_ {y1ménÆõzÔŠ&ÛCàÀ2™hæì~4H2‡D“»^"™äæ‘öÏä6Àgç•Äm¹YF6¥9¥pˆèLª‹©;ÂÜ)JÜs[ËÆÄ…Ü)‚1ª ­²/bÿ½åv¾Ïð-«’ËX˜mˆÖ‰jÍÇ›ÔÑ6mÆ~-řθ…zí¾Oò2Ç&}±Ë÷DJ#T16v‡ ¹)DÉÁã¸/=wÖÐúM“Þ퓆õÜ£#,BžK…ì¾áε×øElóÀ¯GýCņ[uMH…ç¶Eb´‘ìëj£˜Ï[´0¨a€oÿeŽuï~¤îb3`ût¡Z]·­ïfYç§æsÄMØP‹Í­ÿCRx…hF@ʲ8ì)j@ÅÑÚÓ+I°ð;d“1¤13ÈwùüVD¤Ùê™kˆ¬÷‚Ť8Á³"3Œ–+)”µï%4+ „(µÛ‘Ó@`¦šÞç@CÃB@yYlwÇZ7p”@ÖW» Ü¹}Nƒm·¡K9¼ùvw5\ ðÞ˜C“¿»·ýÃnš’Háj}Zfð6é¨×ŸÚÅÒ’Kbs#s¸[.Ð22˜1Lh¼‚®gÒm„w&$\v` pŠ‹ìÜ?*ãnå àP'Öݽ@4'N³;å~-®ô3H¡»Ûoª'Tw?a÷’ìîxqÝ‘Á|ßì¾à-`+.åÎn¼°´Ð‡ÏW t÷ ÞÅe‰¾Òδ 'ë¾Ê³©‹D‘Ô§¹Ðöj ¬‘é~nÓç{l&:mÃ3:²ošrMÍ×äÁìPôJAO†>^yçöÀþ´Åó"ò©í³ -Jµw·N•y»àøU¢¦‹õÄÁ¸:BK°¸ $ÖvÐ@öj·ðÐ' ¶sç6L—ªùŒ¶M·«… ½o†x¯í;VnФRæ{ªÙ™öÅ¥Œ ²?|zLÛ+&lrÊ:“Z Ùy¬Ž –⓸e{<b~}ýˆOÍ®Ší‰=ðÉPbön߈¡4ń앙–á{`W 14R!`C,/0@á ×L¤ÅL:(k¹‰'»?Âæ„íû+o#˜`g •%T„-› Ï1uh/Ž{ÛÄÒ™»‰pÌ’þEÛ±-F[Ê_ Û“xö:2EÛN-±×°kºŽ¡m9¶<äÌÖÞlO>5O,3Ïi>&õš¨y’Ãra1ËV÷dòîŸü9ߌýÒ·ôŵÃ4â ­ÉÊàˆ‹aòmœä3 ü¨sé!Ãßµõ‹TzYñÕa.²"àÌžo\ŽÁ€ƒ :h7qįd't° ÝÚ\¨ñ€”Î×Þôwä‚ 0†’lgN¦ODoÈÀÇ^¾ô\t}¯{I¦¥ßJU³Cú±ìÈõªYbñV \ ò™‰½Å¬l§˜‘õm’¸`ˆ$¯%µÆ·ykj)S!+ò×îöËè'#?4Ð_†ƒ[ZõؼÍë§ò#U64lqs ÑÁ§ÂòßÄÝ]v E0i ìÑböJ~RäâæÃ¶F…ú!û/¶ÿÆ÷ -—ÛˆRúõZ§ÈX¡}:@K£¸´à¨{ú¥(µÛNýè·wÖDo?ÊûÏÈßàŠ38_އº³åN §´±åÝrüÄ)v?˦¨Ã‚íØï©ü‚ìŠÃ¢á^ûLÝÚ†lì¨ëfï òF€uy]sÀbÈ ÝµÛ€Þ@$ ôæð1V†b3ƒñd>¢±Ë ÊÐÏШý^Rä@°aÊ3Ð\¶•¾Á~?ªágߨè^)5ÐÈALM:Qq†´Ž$^m<–›K±"z®rÖƒåt•ÂØÚê†Dû]²ôÁþЇßl -"ßã&‘TŽ8¥ìhêz7&Y’ƒ“À¹ÝEm"ž}——ÎÄé›~Ò&¯§jdªdE›ÿ”}€^ÆJ)Wð'†ù’)¥»;ÊŸ -Ñ\µ ³›¤]É!wñî„[ÍYãdB— ÉmkZ§²÷Y´íޝSs^Sˆüêã… —ì+•´£{îø”'“V¶BÞêÆ‘þ—Àn¯ºhÖn. }‚­¬ZÏSƒ¯ºÝóÏ{3ðjúKKtõÐSUûÀ -Z®—놷g/€ê.ÞÏ>*,-K~+–Žs¿Wž5p©°×|µMÜÞjϪ*¿Þ.ryXÀ:’”†2ök:ƒRO€Xé<$)JCÿÀ!G9[ÔÉJþ•úŸ^vÛ&Ÿ¾+Ϣ؜Ã^à+¤åÄæ {…ݲÈÕƒi¯)Ö'=|¦™ŒÅ¬^í´€ðfvجÃrØQM&æùJc›×ödè¶vªÿ⚃‹ã§5Am<­ÈA‰iZ9r|x2æÜ5í¶ «‹×°uIŒ¥ÜK‹É„äI¶\pÿ\H6zU¸Õ_s·B£ð´@²½çíð1¿¡ù‚ÿÄ…ƒ UÙ«X÷­½ƒD»?ŠðŽ^"¦ÜÁµ´ê¶üÝnyè -,õa”­Ë 61-ò'UR#ý…wEÕñ†gƒÖ†Ýcöí‘#E^é380é‡Ð„ßΛ˫8O$«NÌA ÁDš½”ÊÆ´|á›±ŸçqúcCcwÅN?O‹C%“›X·” -u/KëÉÏÐMVÅAv<# ,Ѓ;~ûŠ .3sg JN+L†¤Â õ%°¹6Þ ÁÜ ÌØ^ÁSóyD䘋ÈÖ(°ø˜_ãoWœ'lf¨&“n9OÒÌw+Fo¾÷ññ2¾þdÝËúÁ˜þWÕxrH½â.Õ¯–é÷¤i³#©k<)IqÛÌï3gÑpÖÄà—_AÙYÇäugXoãI½?ο>žÐ‡ù¥“± 'Jœ¨ºÿX/“ÆÓÍ2Xƒ²»"UC‚¨¢÷Ë{<­vÂʵO"JHšBh{ìI4žÊë%ɽ (É&M|É)¯û¸2‚ -´†èÈÆ¤ø¹ß¸_óÕ÷{/trχ2{<â´<¾ޱ[\†¼°!Q¦µÖo_ønŠ%Dž˜„Çó6K•Öd"$†Ÿf~5#ÁSyX'=&YUâ÷-þ ðÜC%ŒãI®ñ+dQÎl5¼-¢¨yÃ:&ç%ŧ»s1þkò2c⻆í#‡Nг®æ¼µd—KÇDÂ>·Œµ†| ¦ˆ2Õ;ç±Q8C]•­oÝÏŸd7/TvùPÉ”§®>”ž0¥ ­JdK§.Ì|Žgõ2úÕJ‚Ç ä/†Ÿ2. 0ÄO)„À©+w%¨TWGo~›a¾V¶£Î¿Hרé&C¢ö¹ÔƳ:×KDÖÃpÛEÄŽÓT,_50O )ï;ª‹7f³eŽU¸GŽ7pœ:Ad,¸ËÄ1—.ôî…ÐÁ–?ÊðÌ輦_7v&”2Ty,dfãwèw:*tŒ±+í+.U; ýuÅ1%²Ã†íŠÜÀ îMõJ¾“éå׿åËl°þטýkß7|4#lüÛ²¸}剸÷U<¦¡YZÈô;ø¡.ËyUGî1øw€„RµþýÍ)Ãl,¹ V¬‚d—Ûk§âå&3­ñ0½#>4[|ˆN˜ÍRdXúwmL!c@§ø¬ª¥9zþÕ+?)¶¬J+«w‹fYƒu·t -ªÉsl¹µo üÛbÔ" ¢Âï,i«‘´8ƒçfÝÆíûù: É«S" \©Ø9'€ä·ÕÄÒV aÌ6ÖPVs¥‹t»Êm…œ×¡ ?Wy}ñ‚Ûq£Ô–+è,Ò2­)òuªú–JmDIU–s¬7hÔqÆ;x±tм¢N? ˆJ -š2mÔï”Ä£¤ÝD:‚Ö_¸óhu:Aù¢ŒL±Wa¼çÅwбÿè ë(¬bxµtDQ?ê@@pfÒ]G=mDÈ’L8&¼‚r΂Yóú„ *lÙrk³¿Ïš|1y¢ƒ"áÔ«f†[ÄÐ"Ñxáön)‰ cP›XUþ¦D`jÏäêäRŽ jZòAÚÙ¢^¦)¶šhqöáÂÈŽÞcQ‘²D^A¨ˆ±oR£‚Èâì²­pbò¹‹Së“Áƒç¦ð†¼v/J•AQêœâtGè1P7`”… 5‘ÑÊ& Êæwþxk=Ÿ§à/f`*øbÞs½ã„m9$PCäMÝH½wÛ­±^ŽÕ"ÑÁòˆ—çk¨wCUnK½îß3C½]*õîC °…¸tBjn9—z¡`ú¨œ‡zé¯l/y¨×N•°·;Hêià0)87L«yYK½®N .ÄÕ1·SWµuÜÛµ—Åk,ÏT1$Ë9®8QˆÞŒZÖ&G:·‚ÍOvÌn h…¡u tl'2vU¬eÒþ -F¶JF+(§ÐWû’¶VOZ Fâ"­ÀšIÓüˆpîçѱPÌ\&6”†r¢Jë*º;"vCåÓ›ƒÝ%H\'wg!ù;¢~Š»’õÀÕÅ>Šõ'»›´âÏ#T…ž<qÈŠyŸÿ-³É *~WbLYø’Ä]­bå{N¢ãQfÂ;Zæ^;*BƒÇ -<ÅÈ,ïUNðª‰VÌáÁWêö”Rœ5¹œ¯é>àqr`ó.R@Î(ß'‰!–ÌÞg4Ê~Õ"¾zG] ÇZñÎ̺E8ऑ+µFâ^®ßBfWo {KÁ/ž‰3²qÕëû¨³yõîŠH‡WBÖýºzwË$3U½ *õ*gX›*YU‚Dw€'›%Ìš’‘BXaÖý¬б¨N´_@=;Â/ªÞQèï±'S ÞxH€¾ñ¬ÄÇ~¯[¦¤¼×µÎhÛmÀnÙWC )¼Ê’®6)Ú¦õŒVBˆS±Üd{…÷¥À« 9_%²! ŠNö%½‡]¼è Ò ~÷÷ÙU4fåõ&Ý'8@ó¡m ˆ|Em]R¢€š÷ÂóeäáË÷zËXìï‚¿1BبÖ ›?Âaš[¨kðý·”ÑåIó5^¾SPY\¤¤f™$H…pû³íªYò±ºdl@?ó/2¸ö’&Û(¬ÙÌ™(m(”fPÑ^82¥­ÈÇ/Ë‘w›ôî²…^r‡€!væ´¡Zv°v’exâd¨´„!!â:܇RŸ@ùñnµò —¼ñ ì÷R9-ðw‰wΊ*Xæ¿www4å½%³ÕÃ9¿»µƒ_Û{ôwJZl‘´8RãзT KsŠâ]§b»ñÛ€w7šþÇÙiE¼»{¿KÛ Id+ ¢t½» e8p3ñîuá]AôLftV¼»bWmgF,Þ]X9p^'s"à±P\ˆÓbxÕ¾œNP´6(ã9©ÍîÍún|W=uá !H?ûOŸ›ÊL -ÞÎòÐÄÝLp%DN°I§7*ÓÊZæiõ=ºÔé+­›Øn6S¼£ÑÞ ¢¼fM¾cEJHXñº5 ³®Ù—F׊Õ𲱟ïœ:— OyÈz"¿Ñ”ô~<Ÿå"XæQ³ø×ã§ \ø”—›ÌÍí¯äøn´`ô>0J,ƨMÇ¥q$`V9Îy…[ÇÈaY@©@Ñ-¥ZÃi“†‡4Ê éUÔßëöïwª}vmpmïaÈg®H›V¿…¶/^ij‡o63Bñó7ÄŸˆÖFTÞòJÎzu3ÃñþT‚¨€û†Á¬d²åÌ!ý -O·Ó^œó³µ\Ὠ¶ ØÊ·Ö ´„•ƒqP¯w.»>DFƒ{p“ÏÓWHVÀ°='9Õºéfý)Ú©ÖÐñ0Úˆ²÷¨EsðŠø°¤b¸¡ýn†KP­‘¯ÑÍJhæžð~ŽÃ“²N¿è• ¢bþF3åÂmˆ¸WÑ—Yi1½ëZALZZýZ)˜–“ÓD¤ØK‡fNû]à/ Ø£ :ãnQz…½¾hw E,·\9Š[‘)5ºÍ$¯‚R¬µH»ðÌÇÀì—ür$²ÞóX—Á{Ýùwé@kÞóÄ+Ö8ôèkE*ŽSw»Èú†¹ Ž¥&±™ÍÂC•ýì–¶5t÷Â'ÛGÊÑÅRZô×6E÷äL­¨8ýz5⟌,ºPÑN\z„®îÅ÷\ÂõÑô*Áõ¼®tn%'£#2¡«G7æ÷áqts’PNÑp(ï¦Å!‘#.ºŸßt:º°ž‘£èutñÍ2°ÝARýÉêmð„I²´¨ïœ ×K¯ÿ:˜{¼w;íCì‚ßÔìöðécê~|Š8C"²ÏYTýëz‰bkóÓFmÞÃ.~”Žã+6*þ¨p‰.Üû<´"<‡©7b«ÿ’âpp†kqÒoÅÿÜ­Ý£Oó®dðC¼óZ¦˜Ù®XÅ.ö­¡ÞüSq•…íIóü0y•‰Õø,t¡p”·× -¦`á®=Šsn‡, -L³ÓUs¼¹ ‘GÂô5v¨ÁdMd©wÔ—/Mpî-zDÛ9®8õGFÅò(@´v’`½.qÂËÛNæT§Ò¸ÿÇ‹²çá>åQ8­šØ’X*9¢æg«—ûŸåŸ_ùÝJ”u&¢yY‹ +GÕ]h&À¾·Ã»—]}Š -¾íi™~ÀÑüÂj„o²ÜĘ'` vöЬ¦=Ä’ð¬úÌU5 "ÂW¨ÚUõcˆ$@å³ÖD ”Ê=÷Ä'¯ÆDæª=žŠü¢DÔı#"¨9d)µ ^ùFœS©íl¼G¶Ú¤­êxĆìá[‡Ý0!ð WÀº’;äܾ蕡¸½vWÈå²5²“i·f]ãê 9qû ª3@t{•²­ð¸BEg6/88'â«íâ1øW٠ߟ™] y%½\ö`su³hml¥‰j¨Â6ß‹á§Ëáå±`7Ï𪇱srÍ2'Ø&Ÿ*†ûüÍç³ïmgÀoDB3C6íI- ºÅ6œœÂ» ¨˜¨k§—§ò6–S9Ÿ9l–éP4`šÚôÈén\žk¬Ó ÈZ xžã+AÏ*=%ƒ©W›‡L¦õä]¾ã+ì{`‘¼K{Ǹ@mb1”cþ%¼±TÅ´¢”¸ý’TTO+‡û­zn1®ÒT› xºÁ3–r»ÝXÄ„·qϪ﬊ø:o lÂHQ©ÃXæxù¬í.@ä¼Pä³Î À*÷Ýð -ì‚]ÒfïÓæñÐBŠÐK¦u— í»™0 D]W_ÔVžûŒé¶„_!w§Ø¥ø:b)[àâ˜äÙ -HJŠýHƒÒA/¿-¼ÜË`·é‡ E¢Œ- ²ÞÚ×ÄÉN<ãóÑtCòª‹•³©ØtkØ/ ¡1¼ Mº.U)0^JzÙæŒËÅ£U„àŠšuùL6jöê”9oel^†*ÌPLd7s‹w§E{}te16S°8ûônŸ̽fZšfVîÀéó|’Ë–ÿPÏ9ê‰[‰ÕÖ,Å.5€Z$^ˆ ªðêûZc}!ÔØz‚*úü¯c¶a ô¿†;Ú‚zk‘Ï6q‡?(oDÝÓù{=w¸é”Àõ(‹œ„kI?"Ú±bØ TðF ùßQ<<ñÔPé_ü¾œU…G‰ñÊë„~p©?|7b¾½-ï¼ ÷áÜÍn|/>ŠfkÄš,ÌŒxé¿XF?úéﱌ¦‡¡~¨m‹¸ôHœå|Þ½u9bÉ•láa>|‡ŸÂö”œß‰ B‚E+ó”Ý•å-=õÎÎÙxxøÐ÷gc3Ñ™¥—¥/{s²ô,GA v¦_ÓKã¸óŸ·.@h eO®¾:´°ƒ©UÞŽH¼<»®”þ"#bzׯ¢°“„ÔËç]ÔÇñb8Ï~óc}879À?ÎF÷¬Ž!u{’;Øç̱LŒLRMDŸ+t}Å÷LxZ €ô?[ÈóuûíÆÀI‚Ü’j5xqk;EªC‘X®­oÜ®æiO×9·äÜ<‚M(¸’ÁõÚ5Q¨;KÈÉàÑô½1Íqg(~þ§%¾p•¼Ñ¬gOfxÌÊ¿ÕûƒóÆãHÓÐâ§„1 úuþס±ï¸‘ÙžÐ'3fgÃ…qNº6Â(@ÞD%Z˜|Q]­ým5Ú'"°òâ;ä²ÕDˆj®LÏðÖYÊÔÈøÇKݼDÊûÊ0Âýè9T~—žuŸÆÞ;öL_J¶håIµàòY Œ}8·ïQ‹ý"ÇOÏ+{†2Är €ýß–˜ºNN;¯‰÷U/­ì|‡™¹)5›‘Ÿ†äúòñ¯)œà1„æ`Ø/g²¶ìºõo6;Bº0åU–æ/úœæÜ¿wBE3ñ›¯À£ÐGs4Yº“ù~…¶–d+ÎüL‚všb%T3WÏ4TÃQžåÿè#œ–,<ª9¯äpù>Z^¢T¢!Æç_<,Zî¤Ô>ÑåÛºañÙ¾>„<ÛƒˆéOà£$%y6‹~WÙ r`/ó‹–üäžZõ'Œï1o´q~È­Oâ|ÇÙz3ìj¸v¥œ‰ýü_*¤a¼6Ðñò< -JœÛþvn=4[°Œxž|kލõjMÒ ètÍ\„‰a€å ŒšDA}±eù)¤K@ØýÙØÌ£|sEeá8¶IÊ6-Ð"ö—€ö/óØI\˜þ·©ýŸ6 ê—óBWWmú—œ9ã•LÊ@e̫׌”íQ?*}YrC¼“¡õb^8F=FWÚdù«ñÉ,Õ¼§À dkž&ísCjŠƒ›,=À–ÅǸ •Ȳã·y-Ó…Q¤¨±o5ƒHºm[)ߤ¶ƒ@mç¤Q÷(õñHL„9üTÎäVøEq[•X ½ã‘¢ÈašÊ:“FA¯¾X…ÆpQZg4 /¸æeçë1Ë:{ræTð¸ÑÎ&+\ÜV¦îö…¡pÂД - ãíÇãZŒ÷Á£¬’÷cz#~{P©‰ú’ýÚ©vCC¶ †ãމ鉮¼ËL?¹ìŒ…åÃ0)"B—ôu«3;.½ôAž%‘*´ ìü¬Ö™àÔàû}UÞ¨¥Àß½+§žƒ4AÔI£ûU¥UW»AcB.¸¿ó -dO}A’õràúA,7³Î*±ÆbxÒT1SxÌx£nT›HЬdOqÔûåĵ¢Ày¯ xé¬%¨9Ù2ÀìCölNçð&YïÉɪæe¶çÖÈ¢F*ÉÕ¸‰<2À]¢NS»©`*öær÷Y–¹¢öìºõFV°›Énù«ºìfnyÊÅ2Ax_Hƒ= ží¥.äa³žÂ4¾}cw¿ò•åÃ÷Ù±zæ2ñ”õácA‚OŸ7Š· Ã#ÎØ›}ʦ†õXÂ÷/˜ ^X¦\Kö‰"[ôhDß6•1˜‰‰Éœ?&hŠ1ƒ1|S&“[ÖÄ1 Û¶™hÙ)3Î5w' øœMƒ¦¼GËËg‡j1Eñ;PÏÍ~ñÀü0wÀƒªÑjæö Ç¤Ì];óêûµuòÓýŠn˜\²ßa^'ë›I‚å†K'+òw/œ™^üG¡˜B„ltRF4"âj¯[½{ifK™Ã¯õELïó¨)`ñ -]É3#ô ‹mÑ.Õ¾F~ÛÑ’.&fWlÐxøâ ›sÂ_‚Éwƒ|’®u‰Ôm‹‚õ¬Ñ C깃ñL~ïÑYö`e"îý;³ùy• €ËldQÖ‘¸Ý%†À”¼4œd™2Aó15ãv—¨Õ—o{©ò÷úÔ“_0¨á—Q’QCÓîêKƒÃˆYn«•¼|Qx͘sv" -£x—2VFw¢£r*בtCûÔÇP#ËÄ()“ÐΖH¼oDåy¬¶ ÙèßPv‰IÎ/ ed9­äB C&¦ßñ×+Ày^—^g°g§2© vm¡i-é0J-øÅ"s[Rry¨L#‹qx`7Ž¿{ÕFá.ÏýîÆaʽ43ŠŽò:)?²»vïCŒ>§š%åøì F%ûkúî\J(ð€ù1 Æ=õÂw Ì áý6ÇÈ-Ù³GÌÀÓÌìOK -L›¡/ÆŸ?ì8Ômí°dÐb˜—€ŸJ(±1 N`¨‡sëŽæ§¯Ý¸äRÁDΕËFü89N£Ì´„Ò¥Ä–í¿Œ²•Â×)™ó§Žb¡~^õXÏôv‹bØZ( #øÖ!®íŒîéxëw¼VH|Ò«†{æÀÌž´Nd“£÷Vj)6uÝ@€~,–·lv‰K96 Ý.•VŠ¿2ÇújA²¿5ŠåŒÀOc?+YâÖ#zIÒ6zØ+E*ÿWHq&€‚"åôŸL -?0X#á~ÈGt({!µžÐÁIÿx³&&‡¥)x*šuL—»¬1×z]LœÇ¢aÔ•&È §½â"‰ÄƸ“âr,?DÜïD¢¤}¥§Ÿ¨][ Þ‘gŠSy-EŸÙwþ¥®¡Šá‘²®a m¬¢èôI6¼) æ9`G2#$rä7’M¥DA:4¶"WV  Ð¥NøÜRWO^–m¡œuÄÊx›®C¹ì ¤Hféeµšå&WÞYBlz‰‡Ò±Z°:]m%ßVŠ=½éÔAÀ›þÔðØæ:ïZÒ ³Ôó¬·# A¢<9»dA»˜"§³U<'Å…Xy„÷’Å`¼LIåîí.™j‚n 2·ã,³B¤qèÄ<Ò¹s)ʧÔü7<¾qá<Àszå%+IofNʶ·Ü\Ì£xÐøÁLj•^ŠáŸMô¼QBEÜš³ÙMÇ–Ð×ÜO.©ÍkÕu)íB-L?´½–y+ Oú¢zŽå;âøQ×äX eÎVƒBíªøcÊêèG0*Aóy7÷ÿNô"ü üê‚k°äRÝ8­WjÍHA’ô9$­‰‘=À¾{{Ênf‚>À^ØYj†#…—`ǧ¹÷ãÙ¼…æ™ØzØûÂü&®~ÎÑ]¼ÞÏL%P½¹„-txÖ}Pv㧇|òâÆ½7E"¢m‚>0¥åë!iï¼K§îùö¿‡-R€Eýåµ–ò˜öºg¾„PõÛwO¨–wYðzéhOÚ:©éC8²DÑ•¼§ë¹]úwŠP;’•¯çzÜŸ·AÊ–!Z>cöøkà0) ‘ÕhÅåú,ÂT‰5Í¥º-k=“8kKö#¾zìµd(b{s t[r•^p\E´+ŸeÙnªŠ¥Aµÿ|FÔ1{t XxH®†ìÓä”uñ%‘¼'òd'.Ý&dšN!6¼=03C“DãN];9÷ªg/Èà;ÑÀE [Rt Õu(ÀÞzžÎ¿ÍгHR‹>"¤LGâˆÉ¤‰Vnck³F^÷“5T‰^ææ#Íä%$ÿ©MÑЗ2u6†€µà(!·Q‹IóCH–þ›z}ÃÞNóêÞ#¯“ –H ›iý@Óaé µ² cÏ'6›=pâ÷ƒ×wÐáÀÂév5Ýë€ ï§´«¡!AÝnŠ6Ês-~ÃÍ}ƒ„„ó€áïA€œ8n{ÖJù)hºá#,oÝY -•‰ŒÐ¡•#&k{aüƒ!SAPÑ–>ѾUÓÎæ«ÇaŒQMƒZ…|²„ô‡ÓFJô ®Ç*ý‡—§éµö/‰– ÿU Ê´Þõ¬¶ Ì)ejªaK˜€oqHI'°3_€Â‚}ì¡ÚZ\¾õ ž©îŽܨÆ4°h©!™Ü A³"LJÕÈæ‚pú®—1Ì8 -0U|CqÛÍ Nª­&µ¡Ã43Û$1hx~ Q@4êHÖbz1ƒNv3ûj@‰q‡ûOÒ¹äÁË¥9ûŠÓdöU€ìdˆš -ߨC¹Â1q6çw®—±b§”Û’ãØ!è Q‰_Ú)þÀ‰èr» ¦YØ"sLf1oÐ[;&‹ï?ãÐIûFæÊ;m§e‰)–§àÃO=8ä¹AáT©\=ëÐYhVM‡Žàþ7² Ÿ°ÞxàþÝÏ–Õš<Ú§’n¤°®[6 ¶{Û¥ D"žÞUŠ*,oz¬Zr„ÇÙ n-˜ê}“^Çœ‰w™ô¥ý‰´Žã˜59Lö?  ¢r+ùbªYôÂöë-PY2§— ©®pŸ,îéc\¹¤Ï\(IÉ~À†èMaÊ 1‹aG ºç±hnî}¸ê|FÅî?Ü6:¦‡çRëÈ“£Îõë„'ï‚$¢“ 5:œ\ð„_xeœÇ¡"æå¨ù(ÓØYƒ’goTߢä. ì$ HÒ“&Øí™þ°ív! Kb ·LÔZçU¿å$ï.8jK¿ú¢Í½Ye¥›×/,–úW"§¾òµªÚµ7§ñ¯Ýë`:Ió€$Taèý%ò8Çh ’|ræZ-0Ax îs(Á‘·Û\IRØs#¢çXÖ{€5'T¯Çf±CË:… èÓÍ—šhûÓâÛ=péåúû+ÙBÄm*dÁª’ÀNI~étbóFP·{,ɢ׿.-‹›O¡cq*?3– êÙÏññîÖZ4ÀTÖº5íö£¯ê?«!¹¶†±`†6Ý?×19îqi"âðÃV²PÐE¦õ“êà—dq2_+²Ú~ÃÄ5¿ r„ýi)HªüTè²éEÛåŠ3§áïù½>–\Æ­’$ŸCÆX²ææ ° %dóÞ|¨À«Ï -þ$ì…ýUP$ùùÙÖè’àZÚ:eiaåÀùµCp4$cć9 4 û“@1‘á -Äf fÍ14åϨ¯é]ÿ–RŠöìÍÔ¨§ÏÊã/f¥/“ƒ?/ü‘B®>lž¡Èg€ÿ/ß«p|ꎻë—ë©t Ú®>éË_/»Öu>¢$Íã¤ôópÙÌ>ÖH“Ps ÀUG ²YS YzÁòëõˆŒ[FÚß Z¹·¼2šë{»ÁI6p¸k×à ŒœRnú£ð ÊKÆI¡«ÔÚ} ›ñ+õqùu+•À©ð¹PK\\èïæ±±Fœk£â_ôð'´ Émeâtlú°I8Õ~W^â8òçê¯Øò‡“ýÓ¦_G Azà 'pqFˆdŒaÜû-)WMBdƒÛÆŸ98uÑSTr«cz8»ZùÜFúWþùCm‚9“V뤭›ª2á“4±m@BÀoi$éô>¿Ñ”–$þ!ŒŸ…TÅ¿‡ZÛ¢›f¾µu½RЋ†Ð&‡_NG?…· ¯rN"˜–ÿ¥®BhÎÆn’È5[£‹\/ª“²ŽáD‘E ½f1ééþ¶~ûì ÍèF -rÙeÛcAÀ考öã1ý?!¬Åa÷މ¸v¤år¶ž¦šò½³ßéó…7œðä¢Â.V3ó¿$5( ÛžóTWdsñçöÉì%"ÐGªn—®„®¾s{s¤àuæ‘LîP®¬Sé:~hbÎ:.7f¿¨½Ö<Ë%·yçðŸ2¨c(¤õ¨]ufÆÓ;/2JÑö…ßžüŒŒM›ÿù ò|&ý^d…Yù/N‹Ìhô2X#adÓ|:=[jy_y~+ÙµêP´Ú•«OÏ 5õ¦(uhO ¶ìaÑÖAÙß_Þ¼þSž[Š„ÿßøòjY€2¯Ë3íÝiXt„Ʊ|‰¢’Mjpß``9œ´Ðx•ŽÍœ˜§¥]ÿGä?Y’d{mfhgù¦ M_ ,«šƒkjÜï‹õ+"µˆcÓðaò¬í ô+B¹ID«ßöõ 07ô,ú‰Ê}U8Zõ¦†-D†™Æ#æ¬qÔnÑ+’Œ$CÎfç:FÓ®ˆˆH¶‘7LÝÚ5‹@ -¼ ôrä'ÄYðœLÊ.8ª*$¥|wâI†ð iB˜€œGca+¶ä“˜IEÈ“]¤"ÁaÓr*§uÉè‚çOÔA¼dÖå¤C¢a3€ÃTÊ`*%‰#d‘`ØÐlz…øXmF(„޼A³«"Ž*plT±‰OÐts:%(ƒŽŠj¶Ã±‘íD† UD@2#H…&@>%É1…d/ %‰I¸È8<@ªœ`hø¤ÁÄD 3WÖ0’m‹ -é]P$-‰Z'*?YQZÑH* yœ8xT"‡VE «â“¿"jPAh¡ ¢äDtà s‚ <«¢òd ‰c€8""Í -RB§Ì"áÀÒ†²1¢%LDR‰‡ƒ -‘K‹&@™ë”š’ly0É4 1já…" Ñç@‚€ˆƒé…`Á¥”€¼i,¬‰@%0sX:BD!-TÈ”ˆÄQð «@1ú$‚{È÷tf®UBƒ†N<ù«Ž6p«Ä ù €J*;#!Ïé!Tù8ÅBwÑC,|6ºàÑŽ†,90¬L©DhX™JÙ€ ŠPBñРY>‘ÔÔ‡På€/$]h­Pæ¢ÈhQˆÎ…*6. z2Ñ0,ÉW"ŠEdlq‰@KGæz9©x9©@p ™s™F¨AÄRIåNdÛbJyÒEåZÉ>©ÂDÍ4,©ŒI99h„&@ ÍB \6êtF4s•¨°ÜP QKF)ƒHYù °°pH$ ‹‡„mЮ@˜Hà„>róqá0e.ï€Ph†#œÒ¦@\€"2L²e±ˆ(I•ŽI¦ÈGf3/ª4­R)¡Rj†…g5!Íž¤J§lå¤à”VN  éÁ€(BI"Ÿü8µ€h‡FæZ>±€þ3BÁH¹T2W(dTJì„TBÐ9ÁÌåQÒÁÈZ0$°…_4+(àTˆ2å’ØØQf@dÐ HúÁ\V§Œ’Р.!ˆ ÇÉ‚¨âbE´ÂÀžMØ”²¢%Q!Ré¤\¨($s‘&F4Û™ %€Ãv²ð8NEB‹&$6J9+N”8Cg!z0ZdòZd@Êœ2"›ždÇ û0 *´‡Ü¬‚è6-¤@±¥`å*h%™IMM/ -(É0¤Pø à¼K¶¹XtqâIW]ð$  T™:IQÈ\X ¢VñrÊR z´yÙ| ˜ÈÞ¦2‹ -œ$ÈJ!)#ÌRŒ‚fG¨Q)xh¦)X(ÉJ)'ÆaEÒ“ȉÈ`ÀƒfÐÇã4|GÅÔ”fÐñ=¬¤‚BtÊ"L [ˆJP˜à€ðI†A¶$ tJFDIºt*pÓ‘±±¤>D*)Ì TTN ‰S¶°•Rd”Ó(\J$V¦Tþ'#(ù$PåJЦT2sY¨ˆ†C(ÀÈVÀ0@‘K¦ÅQ)'"“Ñ(•)¬Œ¥xB.¬udš%P§ _I²œœ2—‚•€Yˆ"@F´S:Uˆ -8·°4ËI I5l¢ÅË— €ÐÂŒ#K¹Y,%Â…F) ˜VH™ Í - rêhlh¶ TQîˆ@‰Ì0 ²’5RL"\v1±’à`’=w—R&¢ )'©åp‚/jP‚ÌJ*7:¥£"äùø’¨#Páqp哘ȅ… šíÔø$©å?,.s‰(6-Ä0 YÓ›\€6¡lSN Ÿ©`ijœ -‘ÆFv £#å¤ä€ˆf|t0²ÊH3 -R:t6X4 ËRòTÙÁH)2WCÄʼn'èCC†A¨á#2€PeHKD.t2×I@§ILŸdè hƒD¥ç\¦@¡QÊí”2#`’ x\(R*Ï~<.Ë LYBáA ,’™H!å:ù*QHÛBŠ_‘Ôc!X“iD¼ƒŠ PF« (¤òQòàhiHHЬnB¿†Í`©Ùl”Ÿt'™ áS*à }4tB™«•$KȨ…§‚=à -‘áTˆR2åêpѵl° 3}0².›OF h DÈè¡a$ÛˆL™òÒŸ)Í’\ÊՇР-p4”@°RÊ ”l¡“L–• -Í.6¥œ -‘F„³”Ä¢e¡51¢Š ‘¹ ÜC¶Éƒ £NqâIV]ð,¬H*2ÑÐÐÐYe¶„Íf®I*3v;™+óðT`ÇÁÍ,4XM (4 ÛòF6š)¤œ@öCDS U•dí´ YAÁÂ)sµN ‘ -QKSiÑgŠ…+¨•`Ø(å‹tR°Ì…ÊpÐXpËH¢qh¦ ¼“-kÁJD‘¥"¤aúdæJ^¸D`¦8"ð$±¡Ù‘$M.x2WÉ¡‚…œiŒ>™Ql$Й:<&°”Ò2×ÁG³ÂΆ££ÀBÔY••b,–$³—¢ PÃAF•—5Œ ˆ°ß”vã'‰‰l 6Jyáa@ôÀ"@&FS‘æ”&¹i‘ÕEÆ©M¾•Ì•‚q4+²N^|Uz‡` 4«à:(©€ÆÇ€ãD¢A³žÏH§€NÐ¥##i‰Aƒ"-Ldû°B)ÉV<+Iƒ‹ ->mP>!~l˜d† ‘Ä^pôAcSÊ ЉYH2âa,5¹Í\j’i”˜šÊÆ’D'̦¾””BžÌUÂ:tüé‚GDAZ@áhDBIf "©w ö°)9ø¤+9ødæZà@«Bä‚%d’°G%@@Z´’É %EåÚ q&2•“Žf®¬Sñ@b*e†ãšMœ`€ðð¬I“Ê$@¡š%hµ*DŸ ÈE–¹ZFj’¸hEÔBá#  «i§d£A”ä#j`šÈVc´‘y)8e§M€:Uª¸€´(å£ –žŽÄÆŠ Kæ:€Ÿd¸@  8‰À$ŽQ A¡Q•TfEær8 Ðlæ2µ`$U66µ2¦aJåç„„œ‡Ïæ”$¦Od*BôÑÔåƒáDt ¥œ@2Zô"Ú0ì'‚Ô¢ŽS ‚ˆE€‹"ÜäDò-‚ðHhÐŒÄà![0@2Û‘@hærPá’ò ÐdN›v£`þ=F÷LunÊŒyUïNtïìòÚàÀp6¿V-,V‹?ft¾êÛ”™¤’ââ–ùÑÝ9ÄöÚQ0¹¼‰¾ÿ.›vcÒŸU‘ÿÛc ‰ Kæö+¾d~mu/Gºïþ¹ S1—Ë€ißû÷\£"7L½P0ûXÛ_j>oÙq™îÝs¯Ù½í_'L:ºÕÿÿ×m›˜0¼¯¼ÛòjÉ0úr±XRRV*¨ ‘ ŒkÔ¹»ï;Å´{ЍÙïÜkŠyÞ}ëØŸÞØóô7s">lê0®ó9\vØRÓÚ­¨ŽÛes˜— óÉïêØ¥k]Œ¿ªã献3/Lçv"3ó¿öʘÿ]]Å÷ÉŽÜÐ%º¶ktßnû˜0ïáÛçO×µiK†Ùk ^/‘Ì5À…%Á BÃtâ!¢‚HXRÚÐ`AÅÅ¥dC€„dhh1)É)ÀpaÉ@"™«!ÃäuÀ„á$ Z6WÊ„A 61ÝŠyš˜wÉÂÊ´:Ð ’™¹$(Ä#se.’‘Ê'3—ˆ‹H±´Q ?ŠÁCSy<°‡x|FPb Àêt:-¤ÎG'¤E->HLJÃ9y8:R¤Ì\›Í&Ó9p‚°°éÈ\›Ífsppò€°†ƒÌEâ‘—‚„ÌŠ6V©õ8鬠8' D’RnX t (=À(±¬Ñ‚Ò¡@¡š•ŠÔ ˈ§2Fº!‘ RX5`(x0xØ@¤ö @¨ät|…¡”h -$:äi©ñ‘èÇ…"lÂǤqá0}*F-!èESáa ÀÚp 38‚„ÏÆc‚sšHÐl -ʃ_ *0sM°Ò¢)'¢ŠQ*[Z''%2 2À8™€F\‹‹&c¢Y‹RÈÓ bŽ…QFK¦E2ð€âáKâB…‘ÊñÑ-Ë: *à’`Òpà†‡Ì¥qp€A“€‘0…M5“,hx0h -u¢02@%V€dI*›Æ Ö$)ˆ„ý`(臀T~H ù¹H¥¡66$²)5²*Žþ,#S‘p%£‘l„  á¨ÑÂ̺èá+x(¼dÔâ„°4ŠŽ9ê¤‚Ó 88*2Õ¢xQÑL |Á *@øé¬“žQÅ» 2—§³N"EÉTaæP -ñˆJ„šB l¡(ÒAa³Y!ÈÆ†D–¹6j­>) -“Öæé…ý@1@%Űþ5 Œ b3Œ`ÀIÈC …m86N/ XqB'ÙfœXJ¢),*¤„H@±(s¹ Édô9±¬„N™ÖùÎ ‹ ¡Dh2£%º`1l4@|X$RŠ#›a`Hà0ÚhpÏHŠÂÄI(჉˜xær™ø€ÐÍ h&úL€:ëâ° BÒˆ.p‘M ˆd6ñ«la¤læ2É\) -%Ïhð 9J?d#8 "sU@¬ˆ*xâ%,°E²“IFRQyR4J96D^¶…ÝB$±:‰À–¹B-˜ÊCA ÁÚÆÃCàqÐ"”Œ -Ñk岆W’ -á2.±peÔ ŒF2s}2éeƒ]<%™«€d4á'VéÅàá@Á$S!1àèƒÄ>d(™EJÁ)cyQ92W3•d-ÍÀBD0’Ñ¢Ì5BÓ ah2 -l (1l´2n3Œã#0çãr€@ YNwƒZ Ö¡aÅч–5%pñÈ, ‡Êˆ#Â$3 ÒÂÏ烌<œ¤(°ød®$“TZ€!’—¡.x a0pa‰ BRºE€ ‘†Á‡f‰ —•V³(*'AjôI•„‘ÌÍ{)É8™Ë$s]˜62WF€AG¦‡Ës™Õ”d‰$¤…!.±Ð"4â@½85ÉZB2WæB˜HàØtD`‡“lÂàÔB -“‚Svú ¹Y´ž*'J™JI‡ÀED“¹P Ø$ÃHÀ”*ŠÂ¦ŽT!€PåɈ…Å`¤QZ`) K¢E™KÀÈÈ'p -ô"äVD*  ‡M)+X.@,›¹(B+¢ƒ UN„2D*-<ÐB‚˜Þ©2s‰PF-]¤>|DD‹Åâ²: 1àú`@ä~Wh-QÅE „-«ee'#£Ìõ@Àa…RHR„p¤òÉ&Ñ!Ï‚DªÚ¬„\.4|èPôÐ!G )e[yƒ=tȃ8ôccãà ÂÌuÐZÚÑå VS!ÀÔ N8R*:tð²N8B6øÍ:BŠ…âòœ8ÏCuq°`y˜ä¤YMy6!‚tȃÍ‚d.÷hN@hpBZQôhG‡<ë ñèÇQ4(ïF‡<)¹Ñ!$òàh£CÐÈ‚¤Ø†[ )glH3£C¬Xy4˜¼`d$ϤÄ2¨pi“'Áá£D ÍècŒ£,"XPò¬…†…Ê¢Cž± JMEȲè'0U2œ>!g J‹yš‡$eÑ!Ï^,<äÄ:`(2xȶb’Fi¢CžÎ -C)IF* é“"%C5U 6Ù ¶quôÇ@EÈ3"rà²É\™«á€@³ŠM P$ õD‹fÝ€ „>lLŒ(‡Éƈf.Šïd Òd®‘æB>©àB>I’@!©B”c€P’&š5Id"š¹Z4+'F‰c’í'7ZÔÙ@± tõÑô¥ 3Úx "Ò‹W„ ˆ<ŸÔ (°E„À„ÀÇC€’Aª…h”òµŽÀn!¥Th& <©ˆ—Ì>ˆRJ@Ý!•"‡Žô˜¤B†Õè“!K¶$FR_ ÑϤ”€<.ÿÉ®ËøÞ.ó#ujûã·ÛX—ä^{¿çíúmuGü®º»¨ÆÅP­Naø1Ôc­íÖê©8UÕ=íýÿFìm¯Mé/3Ý{e×õ¾:uÙ|×™»±ÝaãgŽ‘£KfÕçÞŽ¬»®ÞÙŽÝÛÕnÄ}ªý¾g{žoù9óÿŸWûlLf—ÜöÑ“u5s±ùö>wꜙKÉÿï[Ûk×gFìý¯­S^í—Ï9¾Æî÷îíQý=·©ïÜæ[Ý·Î]²{Üûmº»çg¶s¶o«gb¾w¢ÃgmìݶŸÉ Y¾,V¹\-ÖÌ)ì“SÕ:ö˜©tn¹M ¬Ï¹;UÛîcÈPé¸W-çe9L‘Q{3Æ‹¹U«Ÿµí=µýù›:͘ß{ÇUÝqӹǶN3$=æT/Ë©Ð=–ÚzØ*‘1fõcªÚl¹.‰ãw»Ôöü$ÍTädo|íXJÏz­Vb,ÜǰUŒõcc*Õóo­0Ùdúïïæu¯µë~T]÷˜cäÞCçÝëÛzß[ýe^mÎç}Ø¬Š¯¹t£W}ž®í¯Ü»·üï_ë[wÉüÓy¦Ó~Žw·]:fsÍìë‹ËþÝÖéº>EôçNñݦºßn¼O„Q—/'.¿u¸œüÏ5ºçð#§[·êö—Ÿ=ûïóÔ×÷Þu“;õäÔeX­øWŽ••Ï1ÂþYŒ¹üÄ]Jóešúߪöûsn»!{õöu¨¸(Ì[©æúŒ=u‰¥Ð1 -U½jzïÿô]rvëvæàÔämÕ÷÷½—ßjjóvíÈH«j•JÞW¡[-êaëRŒ­P›˜c±šQ+U*Iuõ_{;UݧíùGØR¥XOÅbEÇ4W(ŒQ,ƼՈ9Šß›1M¦çø­gªãwœï}{ܘuøžÓ5Û§cŽdÍV÷Žé­÷eªó÷nÈŒñ×êýöÛK×1ê‡ùë÷}ÃîTöunÏDÇtî¾Üí¥ÛE}ÈéÚ±%s¿§KÌL×¼Ÿcã>Ý÷ú7õÓŸ?×xß:ÇêÍùÈÞÿ…Òû^ûz~®¿ÏÖû.Œ¯ûçíÍoŸÃ×ÅMçöÒ5ÃSU‹›Q*l-–BýÃ4µŒ9±Z,×(•{Ÿ ¾ÿ89±³q6C¦-F”;UK•,¬¥*æRCg9†Þ-×B}¢6»2¯¿ûoê”9²÷ÜÑÓ9v?_ýwéïmf¿ìéüÚØ)i•bE¡ZšrªØCõc¸è*ÌWµr©TJ‰ä^:'©ÿQŸ*¯k¯>z«Wõ.¢0{Í)L¥rÆÞ™…µr[«ÚÏ4aøÝòês¦÷>×ñ§ãæžýÞíê>êëæ#»‡Ïac{q÷žãÃuíµ¯;ÏçÎíyú»îu©ÏÞ^cØ¡»×ÌVmÿÛ®žï›³ûÿ‘7ÕŸ*'f?ÎýÏgÔ_ìÕ÷üÜíu;?uÿø³±Óßew¾è|ÛóÄtÿâ»ÖçÜ:[$½=—ߟ¾~÷úú°•sS¤y±¹1Wuñ95»Ý½çÝ.ñ½Ö¿‹ü¹Ï_sž˜÷Î)g*ŠåPì¾bÅPÎQ˜{)ÆZ˜JlU)U‹Õü|—ó-šÜýý?_c†,Ýc)kWžJÇZÙkL1–âEaÜ(V …émRÎwígFÝuˆ™Íµ3‡¾ß|¯îQÝá¿}N¾æÚ3ÏÆNvŽÜ^; ‘…R½cÕJ¥˜ë÷X -¥b졸±g=ªUÚÏôغۈï¤t©µñ5\'å²ûW}Ìm¸>zV‹å‹…r*ÄVísªf̹³°‡©N¹ÊÙ™L‰ßÏȯ“ºoèÜ™9Öi*ºEö}ÿÔ3{Ývb;Üö¿#÷»øùÏuÓnÌ.öÓöMwÝëÎá[Õ~Ïê:=Ý•±]ÿ;n{í¯¿Žßó¯'ÿº¯Ólž­®«ížo¾o¯~¡èóz/ºçÍͳ/L¾×LmÆ÷NÕµÿÅŠ…%¥ÅùÀû8þà?ìý²É\&,.¨b^s/6\ ÓœÊéÈ.³á†AÙ¹×B½ŠÕj¬……ýês½‰1 õÒO51¼üçþþÓy{¨ Ù¢Tø­«¥êÇZªÕc/•±•Šó6?gLÓKç¾ü0_óvæÈv§z¶:l˜Ê»î1>vsíÙº3ãÃv˜$ïL½—ˆBUbžòÇTªg •Z=æP«UÊu;&yg«wâso¬KâUôwÞÚXwÄ"A©P.(Ò¨ —°20¬Y/³˜[«âgÌßQØsË6:Ì©´SnU›Ì%¬ FÀ’â‚ÂìõÁ€µ:ÁBA}0)«,‹ƒf1 J…-˜L«ÜîÔ=MÏÇOvct×¹ö×¾ºŸ9F»Ûýæû·ÏŸ}ýµdÆü{޵µíwŒÞñºîç—EC&“É\,”Ê)%-KŠK ‹…Ã"A©°\PP-$ Ë€ Š%ÃL)Ô¦ÞWûÖaSë_Æô…=‹•úÆæÝ×-•>Ç(ÆZ«Naÿ)Æ2…ba½…Jyº”[­TŠêÕjûõ‡½–3–ŸKF½÷ýQ¾bTKû¡{¨Ì­XŒaòcÛ—–SÖŠ%%宊î¹óÝÔÚÎm>:Çõ¦íܳûoˆñÇÎÄÇÛÙÞ›L˜ä_Î s]p¼tX-)%«u™ñ™×Sw›ûký·ºÚÚg®sÙì®ÑÙ„éw=ßµ¾öÜbÔ&¿¦îsÿ}fË÷êV÷ákÝߺFwî8_v¾óf¦K}‰‹šëÙ¨­šëÔ)¿Foßf]m¾¼›ì°ŸæÛ—Mû×¹WÞ~Ïi·{¼MÓeórë‡n·Ÿó¦ýÐÙ9Ä^u~óñË}Ï¥öffò{ôlÜÿê&§7;>Þ}­ÜêŸ?ïdu-ó)?î§.³)²{wþœ­û1ëžÍëø½ ³ÍêÚO=[Ñù]÷s{ãþììç:»ç‰Ý¶ôŽõ!&cV•s™?Ÿ™ó÷e»:·ëëo].«²úËl¾Ò5/ûþgÃnÇ‹Úí¹›Ûÿ±aû6;w¿·lävÎ×}ú~£¿mÝýÿîÖeC_×÷˜ç§Úéö¹òÃìÔåLÞ|ÍŒ¾Ì¬ÎÿïkíPyUý=¦óîg®—?““?Q×ß:r»·Îõg:{¯+ûsßäÞæö/UºŽ¼¸ÊíšsÅçð}{·cü÷ÙÙë>×Qö·ë×÷üºÝòSçuÞØ×ùCoÎéÿ´ñ›ãÅôc»mÏÏ~¾î܉øíYÿuºOì-{1­˜¬êpŸ{Þ¸ùeîsÏñ¾ÖO÷Öåöªn·/&Ÿs‰ïVµñ²sêžú··öŬº‡˜Íé^ë} ÷¿sûÌíÍùbºó_êg7·ïøèÖ{Ùµßç¿é.³¿½—Í‹Ïøòµ|‹aì§èô·_Ë~çŠß©o5öc\ßó\îývèéŽÛãçšï1ºÔ¦o1‹ˆùó›ócX_}5ŸËoù^ß?MÄÖlï“þ¨N›[fçóòú{úž˜Žãöc\Çü¸éV‘óyÃ}Œ:çòéKuoì¿ìøýôýëfn¯éovŽÛÝ»~÷¯áþcÎÝ|ÚÙvãïÚ‰y1Ÿ‹êý›[ïîã>+~··©’ñ1îi÷Ëvþrnw~[Æ|øš³c~DoϘwô‡ÝöRavQŸÛwß\;í}ø0ŸoS_Œº§Èüüó5îÇ$÷÷c‡¯µ¹/&¿~‹ûÉmû¯†ÓõÙ±S_º|tÖÌ–ýNÞE§úú9÷¼™ßé·ª_³ÿÙUû½um÷:×D|§û¿ûëÜ·{TÄöËËïÞ=ÙýÙ›ÛÇtïsïyµµ[Œ6³ºôeç‹ÎïU]§S]LvoÄ‹ÌØ?æ]'úæk#¿vîFÛ?¿y_ù¹¾}˜ËïÚó»[õMÜlÎ-¦WŸ»{þ½-û/R^­Kå”{_î{‹o÷q¾{tÚ2÷q¯«¿¶ìÎúîØnq»=[t\LçmÍA×î½]ª'¶æ¿LʿܘÓˆœ›ùé/ñŸ«¿m—Ý‹üÛò_*ÌîëíÌÿ÷Úöbž÷"º÷nK~ŒçÃÄÜ÷ž6îÅ´çú;í|ìˆüèÞ7n÷Ü·Ÿ·îŰjç{û6ùé?tU§Ï›_*Œsýÿk®U±Û=tîµ×‹yý~‹ŽüÐ]ç6³{í{1Ëéï5ÿ&›®Fk§§S× }1Üîö1ÏÙüÞ?tútSßæºÿ—ïéçoËÔ]õ÷ïÝ[úb’UÛÙ=§6å¿Z2 æÕºLÎm?ºtŠë‰¹ÊÞï±>îÌ·ø\>Ng ·SÍ]NvM‘×ÿ]v·Ýl|¿‰Ì®{ñ­£»·èè©îì\ÝWYŸª¶õÇ(îӜϮ½/†]ï:o께þz£¦käõl×-ý1éV_Ÿ·ãmè³/õ=îKlÌ'®;lÇÌ-Ýbrµ]·»Ö†þ×ó¯ÎýS™›ºÅ¸÷øüRyµ¹­[Œ§{Î\÷× ý1n¹¶>·ÙØ-æ¹ÿõ½Çø-ý.¾ëfs·˜§®ëßz7õ¿.80IÁ‹„é륃ÎÀbµZïT)_­ËÖ¢0g-c«Z9æ^§•j©®‰A¶÷;+o{¨ ™ê±P‹™s…½Uêaˆ)Ær¿…¹Tk…zù<Ùô.Q›Ý{oê4s›ë¼Ý¶>æ^ÖÜ÷ß¶N³fÏ÷Ûÿm’<Õ±ò[«ÊÄöi -S኱+æ¬ÊTašP±1í¨ô†q4 bDQÐ(‰ŒÝ£ X Æ"¹0ë>S6$B06$"HDQ0B€0A0ÆA,ÆÅs=H³µÕæ5žÊø‰£‚$¶vÓFã#g³is‘ת¡eM]‚3®ð:¢v'ûµì°/ÞÀ9ˆþ,ÊÑå-¹âè=` }ƒ%®ú«¶º“VÃB.n‘ˆrÌ.µýj¥Sì êeyÏ0^n zn}±~l¥DÝŒ;%E9®Âr´jÞT¯sÖ~Mhâ‡|Ðæ!Í^á8dÄÒ 7€1uÁ@Qb å” ¡ývƒ -„{˜€ƒŒ¾:3ƨÀÓb‰«éJ:± 8CL=ÏK™²S"J:¶…R^bß³„sk4éU&’C½ø-õqOïF5#Ê¥À _†ÙOyÉ~"€V~‹Ö;OJ×ȃHÓ[2T'^–ô$M)ã4gH*cüÜVÀ…¼LYŒõ|ezH]~^>Õ†ÎÇõ0¾*¦ÝUGÔúh"E$5Û`€J弘YoßE¼3µÚÄ»{¡–BDÈIºp×ùª¢éàõÒÍÜÊï V¥w8ÕcÚžõsm€7}RIÅ7:_:²ù­ÆÐ4žÌ÷¿#P2'0âƳÂ[DÔOqý3C{@©u•Úxábò6Q¤P¿sd¨†|’‡VÏ/ -à?,)K¢aPþãz®}²çÙæ£€É§CŸƒ:e,I.¦DahZ‰å²z©öP"C‡}làBq©2ñE­ô7n¼1Iö ä«s²5‘êø×‚Ã-ü‡ÂßÜ¢š•e+rÒŒŠð#‡è,Ä&ä鈛‘£ëÖ,ô„iUÚ"i]ç—ÌõwT½oP‡tJÇ>QÛHÎÇY™”À/™c;Q6ýõ¡$*t–bâ‡b¡|·Àõô(ÓAq}L½Âô’è¦~=?4žôÒˆU9ÔöIÅûÿ“ñ©6ÅÒmÄ>1¤“C²bMëMÉ]¢T|…˜ìPÆšÒL•QÖÔ€ã7a‚<™†yb¼OÓ®”U -˜¾Wá0V¦Õ¾µ$KGˆ1"uås‰ƒN\T‰ÒW+NF*ªˆ¹þbáD¿hÀÚ[Ð+Ôƒ¢“à©j^ZóñÞ0‹“Ìsì+ Töñzà’tuW·&Œ;Íu•´Vµà:çëé60ëÇñ¿[ÊØ=Ÿ”CX6ñæFü²â®@…æ¢5§UÒ AÖMI„µî÷rË/a¬' -êCàRxàûÉ@žfÇ¥éíÀÅ›z£‘êEóÔ»YVŽz,аé™ÐØ;ë^âIdËGra ²‰Wªªoøp[?ýމfó?úMéßCõ 9ºXñÑj 87 ðØ ~öt}DÍð²i!О|Ìâ³fQw]2]àpùrÍ^È3}Ƹ6ëý8@„øw7¹Ðšõümˆâ]a9·hYc ÅEÐ ¨z ˜‚Ý;' §Ñ {ù¾.þÈAŠú §Bè»i3ÓZ{Dñ«Å(q3‰Î¿ü¹ýIdÕèWHòþ3;‹Ù[#»wŽ1•fIIöèå»F/®åÚíØ€µÈýÒ¯Ñ2„C/¿Î†BðÜ{çžåÜž4݆Öóí× nVï2ëpõmpq¨¾Àzœ D|½Þ錴M,9„¨ìÔìTd„òN„¬`™fôäŸ@>6A6Ð;Óà êõ%jrANR A6Ê•ä‡nûXÃUs²!Ž©öÂÑ¿Mzõ@iì!ºN6~Á=¿ÆP¼$lVÎ „·ÇP/ì‚Í2nshD$8ý‡} -díú¸ÿbÿùë1N¦Û*y÷B¡@žɱ•D4NÅɈˆë¸Ì~ŒiQê’— X¥’Ö£l€óEʤˆéyíõ0£ÌT‘Ó 4]LD–Äsœâ5Æ~øÌûð…û,‰pÞ6…)_S"é¬ûT† >5¾RzI nC`×ú>ò÷pU3Iî«Cñ6t¸mÀ&§- ¤ðg%ÿkGég»†*q°·X¬2£-À,öv2Ð=—LJ@ ÍŒ'"aìÒ¸ìÚÏeÔ=0û?|£C2½¨{yÔ2kÍ-ƒÃêí(¹©¶ž¯ô€Âm™ðn³I "¶‰¸Ï3‰‹õÅýþ=x‘ x5Ž>4õïÉ7ßîÕŽçG8ÄxáCKkg1+È@üÀµmc iãd½è‡þÚ÷2èrqpuBŸT‘y -çø††9p’,PT¾‚iÕC°ØñâB "lž=7Š-UܨÛîIä”3¦F¥¾UêŸîúØ©³¯lòr@Ôʪɯ¨¹p¶ƒÙð†1ÇâáUÆpDt¿ûdy~‹‰˜¹<'FeªúÑõÞÚe·.æ<®½ñôž}’®«C±“—‘ª‹¿û<²! ­e|,ÒÍq1^ÀÆâ -âlzŠïªþé9VKP² ;}Ò–nšFÊÓyÈÔy‚Žåìl “K8%ŒëŽïbõ«;¶xzø¸øe˜r pñ½Ÿ£}ßnÄ&Õ–BÔ”c6½Óö‘˜huyÞ´’“J »ÏïQp– -S>Þm ÆZ ât[À^›7Úë“-/RXb²… –m€zµ9#ûÀÛ™ á"á›ÿKwz‰¯IÕuTr>ÜØzÓN¬–¡…żà„L=hk$˜dç"œ1‹›?tÞ½(ÀÞ§mbyz~”ëªâ"L{f·Š‹d£èˆÂhkOßc(ì¹€êF$o5Qå2?ßÈ‹¯ ü\BËTÆQý’d1²vÀ íkóu_¿ ¾Oã|ùæÖ+|2wº;ÔäNX¢^y.Üý7‡x7h¢±pNkšºÕ|Q[¬s‰²1(¿È=<BÂM?DD\®¨#X•ÿ;toœíOžÞÕ1=¶˜¶ˆvŽÐ²dz<Ô -G0d ¥¯Ò …KOŠ,¢å?ÑuH%´Lmôh£‹«,l¹`sÀ°å'#(‡g.fJ+Èv‘?Rv÷[ûãì´á¯ž®MÔÌ#“.þ€²¤§¯ñ‚(XàécŸ¿ªøö­7˜ò‡¦Š=ßeêÙ^›^rëüú㼌»(–¹ñ¢^´uhÐI³È\ê°gDß2/œ3Ž3e¸‘ð×ѯx ñ–0c‚lº¥‡RŒ¦QH$áðC±Þ2¢2·§Èe!™§~¨Þûºl¬‹9‰×côãÒ f¤•LZVøñÑ÷Ö;Ý–ÑÏ*˜px^CC¯åøWCý?Ñ_R¶b*ØXÖ–P´…„чÈÂaý5•âï ¤“5XðïY8}Gùl/ªaá„ahè¼~îÚsCãÐ]±/ .©ñÂN~]ç»kÑüU&4”ÄÉ»³Èò0ÀCÁÇEp‚šÒ°D1æ‡æ_ŽšsðEÉ¥Š]nòBv¹LùU¡® wšk½œLDÏOÐÂô┺%zÜÙÊ;¸!üm Þ‡UÇ¿?Ô æ€æØL/»ú£úþþÀ‚V§w²T‘;ý$×…?Á•ÀCDEÇ2˜­çS=@/‚L3ÞÙ©f¢õœ è­ò8ƒÇÖ³nL¥W©!Zæð/žŽeB^RŸŠŽ~„;îè ~Ãy4µªž ßÝôÃ1£*ÔЬòI ؉ -/8âɘ¬æ*GÿУ6‡ÐšÍÝVX¢³„³4¾X}kP¯µùüÖw-H…¢5TD°DÄ—TÁžÙø©H yUäÇ,¼ØÎj–9'ñÔǤp »j4‹ž ½‡÷ ‡ƒ™™þïtv04˜–qP†cÀ·òm’æŸÌ!›e®ñYæèøÜmw·ú|ÖøPÖÛ5Jè -VÂÌ.GÍÉ®•v¡ÖIqšRœ)uî á{dÉÖ›ØÌ¯.m>°Ê¹£3òŸXŠÎªÎ‹XÞ¢Qnêsù×¥XºBPÃü~{ò\RÕ˜#&Ê%üs%0Z -En™á«ãu¥TOÃÛWë¢êVe|cf]×ÔÝ‘þÏeqÔèD}9ôŽ”å’T)'¥‚ãã¬ÍÈ9Ûéa{ æ: Ì ±p&­-— j¥ŽÞ*„îÕŒàá›Á¡ì™¾>º˜$BwC.“dQÌ)„.†´z²~[F$B—hc.¤:’×Ãß‹¹&nÈü×ÐÅ•s1tqõDè}QL¼ÿ&B7W†\zËdqV“&ta¤´4€ôÒÁ¿×Ô)á(ØÛç˜(wWÞ^dJOW”±rK~¨%ÒKäP˜U®h&wp()ò›† –:fÞ…2¤é­K1‰asbí'È7Ì™@cz­+”Ç&ÅíL½KB"ß%æ™—§Ë@Îtîñwgx¿ ;ÃïÓÅÐÓdÔ|_g×ä ¯¡61€›að̰;Íd¸2 -«1gê| ]vžÈIlʽ -bá"3SÌTø«,Få¦ÖeÔ­†˜l -«9øu½¡¬“P— xþHòäöS¡¢i«–-‚ŽHZED̈U”gBl°žS1ÀF› j×r0 Sk"|÷rà],-¼ËÒî§¾çÀ¡i$þrG8/ pn()ªØQÿGìh¥Ü½!@ä²û3 æX¡ ƒþþAOÚ\2À^ü¡=ùò…áS1°fs¾]køqÀ½Å„€‰DHâÒNRLëþ!j:œT€ÂÞZª¼à K¯jaã/©£ÁéºMoOFs1§½'øÆÌ=ý¾pÕù34_›@ [Ý2·îD¶N9>dVÚäè…_³˜þa¢ÛUÉÕ¬¾gRˆÿÓ1ŒþÊ`ÿJÍT:u9éLãU;vs~‡Î9_ 1µÖ;lø]˜IOïâó3—i5‘…Á…‘¯ˆ¯} à/¶'}ø˜ÇqÉò~ ±îËŽÊÚÿ]­PAF“öžßåÚU>cngÏ×'dC·ƒð…Rï$½büÔ‰%ò’éu[µEİrë|ÛhX¹2É v¼×Ÿ)i­T潇jE€Þ; ž8°ŽÅZ¨™“MÓÓ|Ó[ ÷z„eíÀ#ø4$T•m˜ª‚ÄYªÿŸ¡ÝäSÁp3¢y·(a´yc<Ð ÏâK2 ‡Í´.ƒ±Ä]Ôÿ$Ð1¿n›%ç÷‰(ꀞýð]vöј˜¶øE¼…i^¯˜»_ÕtzsÃJD”€l£¼}ñF!l¦tl-©™wÕ§4Ïq=Ûm£îC´8¬KK‚üùTq&ƒ¬±ï&”í5NÁ?N÷Ù -$v’#‹>Ü£À,S\<¦*a§G” q ª}Rr;%^#Z!õÇ;+ £)š~ðÒ±U»FìH“ #Ú&×XÆy¯kdMk¼#-fùÃ,i­ÛºÎèÍ!ÁÍ´Å»^–£*–ðK´Ó¬v“iÝIw$= jëIQå”û,=kiØâô¸|Ù±|É fnàÝZ:ºww%z,”Šâï*Ø å@Ñ.Ű ðêŽru«$'Úÿ›QË{3<”ÔŒõ0ÅÎÎ#7gWÂG“Ÿðúâ„_Œ{NÖ }ï(‘ûH‘Ø?»ZVT`Ýw£J¤•—ß_+^|Aº ¹"EއdH 7 Âþ•î«ÅåSêkKâºã!”Âÿf6פŸû©(É¿€|§S±¼¶í臲CdVržwçgÖøoÒJP6šØ{SiìH<;þ:4Áï·ˆeÿÈOØ]9µç<È";³‘Xß´(R—Sx ƒß׬ÚÝœ~­;BnŸ39P²víü2@kW ñ­æÜϘ%vUdž‘}‰’¥/ Kõ@ÝM+Â:‘.w¦¿ïcÀ;Òœ=2DÍÜÝPÕ?¼šº< ¿ànLs$iIDÍw?@bð¾îF2¿ ¥X…0¬†–Dôº©Ÿ3TøþH ºb’.yx¿Ð8 e¦’èvw72ì‹Dxáîä~TQE l‘›€wìp7ˆÑ©&\,*1RÌn»Ëg¤Qš4ƒØ™% Í„Èvl§ -w®•´ˆÝ‡ø!r¼¶%^ï“EwFå5†7ÿ3¬Á±¨ŽÜO>ÝÈÁ1„Ê1ñ¦Ô¼Á¼„© Ú˜.‰­ø/3$g3ƒºŠ0OÆÄ¶äKĨËfNÌöû÷ +°†Ý•àӑGc‹Ìû ’Yzm¿þY<«Ño‹…x²Xè 4úWp¥ÊQ@5iF@ìY³ùÊ" ÄÞÃÕŠN(>Þ»¯úÂú ޾‹Í° -´Gr!èÉNt£n6ÿQ‘ ȵhqS}Gèq¾ÅÑåtLF²ÍMG)Ñ;d ‚*‚¤dÝ9Wšî¹£öß^Ûš0ÓÐ@°,“ú•AhDÉóكćLß_²Ž¬‰¬|o-]íP~Ð}P¯KÍͺA$3âÕ_n:qù† AXNƒåùÅ%ˆŠ[í Ð,Õc?ûïGTüz"¶Ûÿ¯Ù9§l!XM%µQ÷GØê6KÚÆún#¿µÑÇú±gáNWŸ$Z¤”=5ä€u'œ:€V+9>Ý\ó¶ºn¢ è¥Åø$5d¿ér1Œ˲¼PµTì·éФ^!…å|{V¸éø€¢éiÃò¨}¬9FÑàÝÄ ~ðÇMÏŠ!Síœ4ŠˆÒ³Šô³nCu&7†HEƒÔì͂М=ýM?ÿíCŠvë:V™ƒM±eèäfiД2ß‘ &´­®XÛ À7?º -,.–{‹HšU¾¨ödp³/7¨s•òÓºž'ñ=¶áíðvˆx¨Ä\´ çÊÒ1ÐÛ° Q;†²‚Z•`ãœóKû<ùÏr†Ñ ™I¬+3^=ê8€ìÓ:n eA‹‡vm™·}c˜iÑgíAû 0Þ¶e÷š¤[ áýåL%ô\í“_BÎ̯Ç"¥’&à ¡ÑÚÅö1Ã-…+®²M–zàÔEÄwR’ï‹STóÞç(ÍÖVT“n^ð¦®Á¾lvXµZ¨„ÊÔ\xM8£ÍWŠƒ"ïÃzè™: "Üt¬éÌúE "“’Èà²U¡tðxV™_šÁ›§(O8¿!wZ•:ÓÐX¿xo”vo¸ÃIy¤èØ.s‚ú²q¢˜«Ûe¡´>á{Ïà뜕iäPß®AƒÈz°™¨nÉDD‰ð|íRå‘-0W kYÔLE‚nM…zˆ+‹ÜŽØété¹m‚V ¯]¡Èä=ºÆ D÷dP2bÖ®œkG‚åe‚Åz_‡-„½Ôœ>kñ:¦ªˆÛ¿1žYX”¯.Ðâ ã H‡Ä­” ú‹úÓš‹MYšÐ®ƒöÏi€l©Ô¯¡ÉeÐû$–­ -®LO¶4„ø<“0¢®âúoMÕ%žx¯î%ÙNxÖ2¡åÖÅiî稃@‰]DI{ÕÉæ@DðŒ0ã,î굿¥ð_Ê5~’Ì6ÚVmÀ}½¡XYmð$‰KæIöɸ*Úõ°‘} -­6)Ë36Î72öég²O5éd£XB8À>)Ð%ã ¾YN[­'¦pÙ';¶ç† âÙË©Ë>YO¤ì“ÕÆTÂÁ†gÝŒß'ÓaÙ'¨çîvšÒ³¸j -~PE¦¸E/8‘g}Ÿ`P%ïgÔP3"Ò­BFûhšúÁ¥–:=°p}F°Ù#¡›¸åÙÏL>xϹ7#ЛÏôC…-jF Ÿ˜/²ïÉV(¸=ÜÜËb܇xê\›g1îZÚâºFJLu¿ÆRaàô]üZf$ÝßaöjÒXÓiF³«ªXz‰Ù˜gnˆÍ‡æ~ëÛÜÓi`áë0åkÅ32ƒÐÀÂÐowŒ7%¦°ºÊÅŽnBL®p&…kZ¤ÇGß ï¢ V™Ãdǰ.°håÑŠÖ§-¤(fŒ`a‘0)ºœHØS"¦ú6…‰ÚÀ{È&fx¹ÒÃëŸç<w«äÉñ‡iEzMx^ˆ H¤œÇK¯×qn°ôUá„åÚÊTèL´Ôo!pcðß/à÷XqÓuJQZLŽÓð1²Ãbƒ*‰'[៪à¼zÌuë”:x$Õ.ƒø@ŸÆGFþ2 íSFæ +ÐZLžÍP©Iƒïí«)¢×Ŭ$mÇOp`)òIR,•ìáqjp½ñh=«ÅüC¬ÊàðA>ƒÆzÓ'lÁ -–fR’†èû|áîÅ}M¤cd¸UÚÒŽø”™.ÿm&ÜI8æ¯7`À@¿¾\D*ä®D5Ü óÌÔ sBW•ÎEè(}·!//¡SBç| ¸ûs®ü™Ïf>kÊ -Ó9ÃZ¾etžtä0Önà@7÷Î]ø;Xš×Ü|çÊyC•-² Ê`Ò9¡€ÎÄ)Õ‰`‚̤AcdU^w¶¸¥ìÈÆä4IÛž<%ò<}Ö“¢=S VyƒÿÞÛ=ã ,ô¬kXÚ‚‚äÿ”AîxÓ¿¸ª¹ÌŽÄ˜I’Bh]Rzû·žpP‡[°4˜.;‚ᮓò2õíÉÞæThæMƨ‹½»]ªÞMs¸á¹Bpp#U/qQòÒ(×7˜ý L׃ìr´þ,3:rïnÁ¸›µBhïnRÝ w®O|ò2»[«öõ‚Hü~˜·»EXo$°’Ÿió¼×=š´P…f¸Ïª}^b¾¯Í%À(û¦!CE$7(ö€NŠù#,*§¸pDì“Ï6ú9bz{˜Œ†a?b”­ ´aå±ÄÖîô’xÕ0x@ŒáŽ}©Åè4ŒÊ –€õ;÷ Éyò˜q{ürÃ1CvîA5†¡„àt¬1«L!Ëãç -Ü©Rcð™>ŽÙ0Œ˜YAÄïÛଦnƒSÓ4Ã%zaìÛ„ýÛ×’j½Öz½s@\ Þ€°ÙP-~µ1lj ¯m$k>êp“Ev-±ZNbÑÞ©RJ AfZÀa±µ°¹ ªˆ­;†¥°ÃÞ”lØ’/ˆ…%êïU %þòÊ“·ÐÃæq™¯ð‚“?…Þ0ìDÁ,Ùz…S·>ÂpP °(–Hm{Ḁ̃͗ݫý€S¼–¤Xb ÌKK­ÅðYýJ¦3sæfW.‚ØÞ´+´½òEôûÄÙLYÓá%¥°£˜D“¼S8êô0661×®`‘¡˜›ÃI©Iøe¶-§¯F,–—‘•ñÌø[ò _«/@SÌ&ÉCÏ…)•Ù–Cœ²kU‰É “D§Èlq`öC“{™¬ ˜È¥ˆÇ¢•}ÎÖŠ>CÙlÑÊ’æÊ¨ ån:eÐÆúƒÈ¾Ö•ÐÚîŠ#v2››h8·Eƒ§È¶Ì†f#@ƒFÒñ• lMò…X½Z˜Z,#>I"â劮†¥+Lbazºr骘7xø­•Ø -ÁÐ \!ˆøùÑûz¶,$Q¨ÐæGºÖî¯s)³wE º{,ЗE‘h¨!¹LF2S¢¹æŠj á r Ç®Ž„ˆ³—pBÛÛP+¢$Òµ#O›}òX;&]Q`ÐK®2!Бƒs›ˆõ-]s8E+ ±¾¡‡|Z\òdÑÕ8sªêQ¦šËSŸDrÆ-‡þ)Äú®yž—³ƒ·}÷‚`&¶ï;y™mpL»½YS\kéqÑO§Aú’aç娳±JÔŠO8,f+¸êdG¢.{6Z%‹)L:{Ò^Cø(ªç!wè•ä9ðûX“Ô± 7 73WÂßÎÉÝ›ÉÅ1%÷žŠ.& Qðae©C…‘Ò:»4µC‹a˜{ÖV€¨®vëì}^¬´XÉr¼bA4˜,Öö÷|é^Vtò¸ÃnÂÞ‰ÿŸˆU0¬ÝêÓ%\е½É·W#{ÿ¸/„ΠÅ -Ã[I§+X,#œ²˜:Ãd¤XR¥çæB*P¾¬z¬rîeeßz‹å>V(eÑ­PÌM·K5V••=õ²iÃf§‘¤ñ×¼c%àUÉâÊ[+qY–^¹è‚“Çú8Êû$³–×X†oáêˆm ½g Ø£•ŸÜJSY@Ó&ŽE˜p¬Š:<]–<ÿkU¼ù²ÜsAjk$Œ²ØKè*.ÔÌ1ÖÑ‚±êîNJ.h鼯5ËsîM“çª Ð[ºö-@]ŸÄ]°kXŠÄ «³L^v-ž»&G‘uãÁ$Roew‰J·I×Ü!yÈ‹ßjËW@RP‘=óºt½hƒ;=^.·°|¦Ã&¬>ÁúðŠC<ûš¥gÀ$F—ÝfB‹ÍWë+±GyÒ¼âqÔÈÜOªÝ4ê+˜A[€(»-~%á XþV:à6¿âžŽœê¬Y𡨽 Û!d%.=^íÙ¼-tš ÕXQ,mÄäàÛêäiJÎ1!Ç‚hÆ—¥ï¡ôoŸT,- Ú¾œÀ²n±Hó¸üc¹–%àïòze¡]±jq,Ï‚f>+‹u`\P¯2#YCDªYYiDÀjO=Yå©[éD@\åi·I{¾oY¼‹ ÒxÐgúôƒÃä×.±y,¡²>ÑžS€ðóµÆc9]–ÎÏX·³O°Å¸c ZLã ×ñúX‰—ÅËeÖO÷)è_'·+V³juÀå4£èÄË7UƒN6–¨”WÛç¦c™ ò -/6b;w…e1Oï@Âi{Æ‹Eðÿ|šOOc‚Åuv¿@xŒâÝ%1Úžwp×à„øÆ‚[ë(A¼ßa)É•ra¼V6\¹¸Fpñzòžw¾€dÇ–iµ«Èzy!ò1V–b€šjѪHÖòËÌÓê±J&¦U¢zà6ÙÀ -¥'ßxYþ²ÀŠýå"ïý­‡-¡¿âe5ušZ‡sjé.Y¤¡©B¡éÀp*%KÒ'²ýŸ.§Œz“{Õw¯¿Ê´Î#”Þ]9ðíëËVÄ»r[W^9“Š#w(¯~—­xp¢žl…\¢c³õˆ:I®(<œò\‰½ÆWÇD¿9qækõÒƒÉV¨ËžäZ!&Wvl¶BRËÐùÆì-œpåÊdd«Ï g'’0jÅÍ÷¯“+¢1ËGÕ÷[–Ë•¤T°»«ô)_ãr…õÒO¶ßJÈüJ¹?溌ŸŠåª!8„UªŠ,dÕD;0ÁÀT—ëÀ^’5åed€þJ@“Kf ¼à!Ø€Åhž\·OD)á¥nó#œ‘ÿ•i0@Ÿ'x´á€iUúÙ?ºJ«> + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 23 0 R/TrimBox[0.0 0.0 999.801 699.9]/Type/Page/PieceInfo<>>> endobj 21 0 obj <>stream +H‰´WËŽÝDÝû+z™Aºîê÷6EBŠäJ,b1D(òûœª~ØN|3×7F#ÍLÙ]¯SU§ËO¿{®ž¾|nÔ³¯Ÿ«éýdT,EUð;«NUüû·éGõÞòÏ/&«ÉDõA§ƒK꥚ž¾xeÔ›¦÷ÊÊ!üÖÞD¯<ÁRñ^Ý?ˆþÃd­Ó9xu²Æéâœz7YuŠ…eI%«câ1hJA‘ö‰ † -¢ºŸ^Mß·hþ~³ðYp ›ì”ËV[[Êì5icœ:‘¦âáþBT'¯].OF‡$rÊòÛ 'IÊêP"ÔO°DQÎgò©$!†‚„ËR%#Pè9›Õ ydQd "Ç‘Ž>±TªT’Ht¶®}Ç¢,X‚)t»]òÐL¬IºÄØ"z×Å<„è8±X…9KŽ6k/¥IšBÍÿqaDùã3‹@*rIÐÅ ™M°åÅ ôO¬ú ¸œ²NÎ 8Ÿ´gØà9ç BìœmvžOwÖð +SB9ò0Ž–ó$Ç›sgµá`[h‹äÔ‚o2ßÒ'ZöáUŸÙƒ-š·G€¸½³s€Cî Œ-Á¦ßÓÿ¨ì #LÚâ$—$jÃxÂ:”‹¤ãå9²v©ÖJLê+ý¸=B·;‰|^È#Èþ "XD%jÚD €‰¨õ„àðâ-Dçu°vt•k›XèŽÈŸ+Ù pú ûh>.`÷ïu´~¯‹=ü.·ôšrϾšà4LjÐIƒ·¸¸køÅº÷œ*†‹«LÙ&°XiÈ*…bG?Öwœ4ÑÉk©W©Î»`ˆY„’Oµ#È,²ÍTˆ¼x¹I\1Å.òidkǃS㻢må5™v$Wj$ÄÇCšyHÑŒ¹vR +³@­ãýAÒŠêÚ(O°eXG)¥:ÓâÜj#D"c9ë2G.ÒýÌ0õ-ŠæÞª¯½ÃÊ8y$Aâݳwt‹n\—Gôý õ!ËpZJW”63ºÔ™¶¶spQ¹AÉæôTrïT0JI5W‡D×”a¡¾ãÁ(áœ{¾RF/=‚L2 ÛÔŒCÌŒäl+©ŸZK¸â%bòuÎyA‰¼[È}ÆxN`•@½ QJT)P‚À“ÌDÕ’gxÉÍóPÅÚÓ)ͯm¥µ¡ hcYÙgi‘Ë9"ìòH¡?è9²»À »˜Q²ƒ[+Ž5ÄŽòª +÷S»RÐU¸; Jñ"DR¸Ãxöʪ«dô ׳Ñè +O@ ‹ +¸?& Ì$Ùåh²ªQÎ:4š6‰—˜Ž0ëœc†˜UÓÃ4!”±±¹âßN¯¿Â´Ø}Jæ%Ô[?Ì›Ï =ŒÉpÞÍ&V“e—Yo'^IàÖŠþ‘›àk¸ý~zvž°¾ü==Û_8”ókf ƒ\Ï÷ªýóA¡ ù<þ`ö°è©óÃôÓ“óŸw'¼ò×ÝÏçoa’5ø4 ®Aűgw'¯žüùï¿wÚa¾Ðé3'6¢X›]{ÿæ¼gF;P|m8^€…¿E´Ÿ ÇËróEÑã\ˆW«âwƒ-ÛJèW$¹¡dXAˆ6âr2¸*†Cƒ›4¸ËJ ¤ì×:L¡ô‰2J1Aôf/«´¶è5ìgVD#[pzI qnAªFF‘n#ŠæSüÄjEÚCQò6z…]MÒ[á¨Ò¾Ï:&º‘F‘V9õ-ï›—ÏÕôÿÿÿÿþÿó¸ endstream endobj 23 0 obj <>stream +8;Z]"CD)7B%#"BS(Z[WJBuT52:j(77#sU80aCd=\!i35ieG_`PAj(MlqZ.m94[2JO[* +7'l!$;VR_P<"]Z%8bBTU(KmQ@SB1:\U%U$oY"4Hhc"P%7I@@]pGG+ahGH_]L2a?Fh +JkkT_Sj81I)lt(Q)?5O65VG_m&;2'e6pU,>MDRa?lJ>'?9D>qA3$4+__>?guPZgfG +*ni^_>Q0`F7Q1)!^ESPW!@^b;fW@]B81srC!<<'!!!*'!!s&$HLe7~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Levi Cameron) () %%Title: (AB140-167.ai) %%CreationDate: 6/5/24 11:48 AM %%Canvassize: 16383 %%BoundingBox: 0 0 1000 700 %%HiResBoundingBox: 0.000003934268534 0.000075009436841 999.801194481468 699.900024414063 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 999.801147460938 699.900024414063 %AI3_TemplateBox: 500.5 349.400024414063 500.5 349.400024414063 %AI3_TileBox: 103.900573730469 43.9500122070313 895.900573730469 655.950012207031 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -93.5355339766138 832.122376430948 1.60471369401015 0 7890.35160330797 7960.53595322348 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -93.5355339766138 832.122376430948 1.60471369401015 1716 951 18 0 0 6 58 0 1 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-459 -191.099975585938 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(µ/ýXÔsêáãÅ; EDÎ ¬ÀÀ,À:Õ»Pº&¤ØJB vÐáB ƒÔu]\ªëÚN)© 1«¸† ° q š õêk>ÞÃþ?u‹å‚ÃÓ–9XÑ 0@ØÃoäG’dX·Xîouñ7Ùª[W€^¯¾&õUs,}•ûrVô‡c¸ý.Uür7UÐÌ +¡gV€Ý^qMÇT'N,à÷5[³èåKCü:–rçºfá?·¯ÛR Ðõý7ź3+€³5Û²õ±ó\zò€šŒ½¬ø·1üøm ¿¯<Ñ¿9š É{±­þôŸ=* vçôÛXåÂ"Oc¼bnû7¦E‹þkp?Z“ëXG#/åBóô쪻ƒb8’!ÉAò×ul~c Ǫà·ðEë丹(Êqh¤¨‰ßö$c·f?ŸNÅ@ôüëÿbgÖs)] íeÿ§†ÝYž¿€XûæOÿYþõéûþ“ûQ;ÿ¶ÿF̾lJð˜M³óæ4»¬?küW~Å*Mv_•6ÿ•¶ß86=¯¾fÀÏÐõ§éò¿)¶žcy€Ô«U.ºÐX°Û¢]˜Íqüª_€[³ï?mY »±çeÿÇÓö¿fkЀÚ}Ý”K»£ºÅr?§ÖW‡ÆcrìÑ>‹±`V£iœ_Ê…VÃOÛfÖ…hÞiËØšEÉNO_ÿzM»Ó“©r’—Üä'GyÊU¾;ï½ûþu°‡]ìc'{ÙÍ~v´§]íÛsß½÷Ÿ}èEŸžô¥7ýéQŸzÕïýóß÷_ø‰ßø‘_ù™ßù¡_ú©ß9ØA~ † Ž –  ž +¦  +f;äa}ø…`†b8†dX†fx†h˜†j¸E.vÑ‹ŸŠ¡(Š£HŠ¥hЧˆŠ©¨Š{äcýøàŽâ˜#9–£9ž#:¦£:n’“ôäG‚dHŠäH’dIšäI¢dJªä.yÙK_~%X†¥XŽ%Y–¥Yž%Z¦¥ZfÛäf7½ù™ š¢9š¤Yš¦yš¨™šª¹O~öÓŸß žá)žãIžåižç‰žé©žåhG=ú¡ ¢"š(‰–¨‰ž(Ц¨Šî”§=õé—‚i˜Šé˜’i™šé™¢išªéV¹ÚU¯~*¨†ª¨Ž*©–ª©ž*ª¦ªª†)˜~©OyºSMQ=Q-QÑÑìC=ÊѦ'zž§y–'yŠgx~g?÷™š¨iš¤)š éMnª%Zš%Y†åWör—)y’$)’ éÉM¦ã9fä(ŽàèÇ=¦â)’¢(‚¢¹¨†hh†d(†`èCªåzô;ÃL}†z3ô ÚÓ±‹=åhVŠ;ü|çÙXŽaç*™f"'w*f©èÃŽ~T?üü—õ/í(ÙGžu4+Ë1ÌT”<É“4=:žåHŽã8ŽYÈQ1U0QðOAуé‡ö/+Cÿñ³›ã×}ïif‚éFËðÛžï=ÉÔ=ÍÌ,ÉQ4C3?ß¹¹ÍmfÛTKµLË-Ïò4Ë’,Çr˰ K°˯üJ_ú²—½ä%/w©¦$Jf(y’&Y’%I’#9’"’ ’éÉNv’“›TGuLGtO°ËúæIäôü°šWŒ3Ö±7¦ÿ§þ¬™ ±¯ZÏå |oH ò_Vú¬™Õœ¾®AèÚ…EócŸ½¿TÏå‡cŽà»>† 9jžû-îÞùÞ ÙùO#Ão{Ñ‹àÞdç7ÝÐבŸ×Ànoð×ì+¿~èä/¥'wø‰íšÙ—ÏŒ8v]Öÿ˜Ú6×϶e[ƒÐ,Ø­ëú,öu9‰—rË4Èg±´èä/å–uÏ5ÈüS¯§}ݘyêüRr­f_s¬þ×UOà¥lû?gfßëñìiYw°Ñ t ǪKž¦&@ü¾¿¤±5üYìFƒÙ§¡çøOšþªxöÔðÅT1ºm™÷Ç¿¯ï½ÉŽ$Cm ?>~Éù;’$5þ¡ÿȽAñóàöÏ“~ï½wGÿkÙ¶loQÛ{smk[ƒ ›,ØmáXln[æGr òàÒ4+fÏmË6¥0€ñƒp®}ݽPƒüšEáØe¸l'†ü±?n– òßÚ m[ÆXh 8žÿ‹=5WÀ×,4È«`7v Ç.=ÿÑi¼”Û–íîë㳘ãšk:ö¾MƒÌqÍþùܶLÛüTÜ–§°n`Ãyôy[M05­ää€þ–·¡¿å™=†” n~XËiR´û•ðL.›âØHýÓY/¤kÂtl.‰vˆ<Ù\§Ø\t ÿÐÙ²6Æyp‘ƒ'.ªÁQˆˆÂƒAá€aÑ3d¯†-cS#ϵÂå@݇D¢Ý,ÕP*}rƒ ÒhÑ+ÀmÙ!‘h?•ú +‘w5ˆ…°ƒeô[Vš×,¬¥“€‡‡°šê~ ¨Æçú R‹H{Ý N8…?L‰¢æíyF:5” ÎHI\ï°‰¬4¾["ó#I¼½e +xÜx®X2]$oƒ§Ì£pº&\ÁÓž…ô(„Ú“£B9 +ÔQà™F½š>e¢åà[Ö  :š‰¤"©ÿ–|ëߊËò6^aôŽ¥Ðèæ7H¹É8 àÇñÑß&K&¡v!O>ÇéJ%q‚eô§UAk^Ø„qŒ 9F(è„!—LñgÍá@«"£«ôÎHoÙ>}l†"XˆÍ»iu…GÂ2J1={<Œxp84¡gF!Rà¥ÞÖYÆêÇËØ @( Š;ÏD» ÎHŸÿ´e$>"̪m͸!'ô@ØrnJ‚[óÉ€já`vhZ¤Ï€{FèÁlJ€ß–MƒÅb âIÛ:24“˜ÁL@ ”b}i¯s¡ +…'d f˜'Ú(‘‹‚Õ‘¦p +‹Q;@°. ŠÖÁ^ýŽ¡V9¤¯Šƒ¤“X}Ò¥iÁNzË0QÉÔ8ð”PMŠÚËb¢èóK<ÁàÇåôX~$;¯-“8Ý£ý+Äy¼ôÁ ¾yv¬¶h ¶`)%Å’„‹«s°e Xpp0€pJ'›‡A(íÞ²ôqP)<. an‡ª胇fùDÁÆfFO´»æ .;R`có–y&Î(á>ãû¼"ÜÁ«G8Æ·eiªlðõ› +F+QX'\lÔø.ò©¸ã,€15Ñî’¸øŠÂ†ŠÍÐçí´Ž!Ü–y_æ‹§eÙò«õ…DìÂKf_€>oÇ,“/Äõ–i4"Š$63<±#$D£êD…¶Œ$êx¡!Iw¤;Wû]Á —z‡&ŠŽ* +ô–ÿdÙ"f•±n —³'Çã@6žÊ‹FV[¢Ö˜­úBé·²„ê°ËÇ^l›_Iâm™qÀwSl> ÏÛÇú˜TÞn!«iˆ[²e irGû•ÌG!”Ðröc|FУÐívQ˜ÀV®€Yp…-cI)É-/ªÑô&nÂ* {ì: abôztÀËú3áx¥×VxAç·L\ T<ߤÉÉP|èfhƒ2W*o>j† ´”§¢ö*u#aöžã)è „Hº9j§b•ó¤ºeœ¹§¦£¤ùR @°pgß ’ts¢PI-@AðÁœrP¡¥4,(ól‘HÝK&\Ôøãšp‰yÎNÅ2üo…-#)¼G[p…RíŽBj~^tŸgZSß1¶H%FË~a«]³(Qes8A*ÎÙ(‚fãEij ¯Å=EÂô Â%ƒh6\ºe1sþè¡N¸N8 +e@xú+¤H¢µC0©¼+’n/ŒQ’xÛ5kFáu¹ŒÂ–íÉQHFŽÂ¸B1 + NÅÆÇø(\FŽÂ7Ï $³b ^è\ ‡%PN½&M8^⼨8œ/uý”Œ^` ‘p[¶¡;ý 0Îèë…CEèQ®X÷X“ÊCuc¦¢ñ0'Jí¨Ê5îÌ3µtËÄ-I7g™TÞÌ}$gjqô’ŠV•—Z€Æ²;{GIwãcRyt÷‘\Œv ’Héj;ä9Á Úí$8(Ó ; Òn`!ˆX@Úë¶LnQ’x»oö£€’6Žã +Ý +Å(´Ü–£@p…ˆkÂ> +ïQX<£Ð +?®C"_ßpÞæ‡Ï§M`re Dð/í+ ÂÇCˆ3‹oY,ämøÅ±*&LÁ[‰Å ¢À ×nO Æ*ê)x…áèGÓ' ,ä¤J´{‚êP> +N8´”h·bÃyÛK(œˆ'Ü–9´ßƪ‚ãår‚JOƒhœ_J/«ø!Î/¥€*ÖÔp¬òŽÕºŽ@}V,Ïü3q+×h:i\ÕŸ=ë4À­#PM³šKYjn —!¿”m€ÿÊî{‚x¨£<©éÅ+ø’Š1ñ§ç/àÏ﫺TœÀ¾)ÙuÑ]*N`ÁìüY,ý¾¬‹j¥öþ6~µ²Ü½5ýÖ´,¿5=Ër7Ë2?‹}¹Ý,“â,ËÜÕ¤´öÃîê£t³,Ç­n–ån–å¶KÅ ©N³]*NØ©8¡›_ÕŽeZž©n~kø»3æ¸%»ïªkgU×Î*Ö³æÿ²¯ «Tt×Î*^wí¬j èdö¿€¸kgÕ€šÞµ[§â„»ïê·©Yå~+Ï;µ÷[Ïñj–ß¶«áU*Fw5¼z¿€ÿv´ì¦XÖ‡k8V©øÛÑòü[¶Ew´\º£e¹“˜;yV'Àk÷Uuòn ³±êÓ±VŽ;y€_»-äÝÉtòoŠ…¿ +Ž­hf;znçøÕh O‡´0ÐÚ_³ñ©¥>Ö:Ñâ×°Û½\^ªù·ê¸{©f™}ÕnªKÅ ©OǺÕ*nÿSëÅ’]:†]-†5ò¿XÎ:Õ5«ëÔªY™õé vÄ›—UÎZE= Mà}c•fZÌl ³5¨«bô“evõx_>‹õ¸`WÃYÿ3—3kÊ?ÚÁİ Ži´»ŠµOÇ´—…a–K¾h4«µT1ZS¹¯,³Z‹°¯Æj°«Õ®öUì+kq­µÿÃZ,0ÇšÃÕ`—e} Ž5˜}e-ø4-Ò:õÀ¬F³ÚÝ•³ v°´ÿ–­µÚoÕÚŸYíÓ¿Z´ÿ¿¦ß¥>AM³jGŽC5üÛK Ç縇X°KàšÙÍËC½[}MͦâYUºä–ßò× }Z4€W:öªàKÀÎkïll€s×Ìnæ?€×Oÿ¯ +Áîšcê¹|ųúº,œzÅZ¡_³ó‡ÿ§Àvkú£ÝÍp Fÿ+ž[ªŽ7Þ•Ù“»µÛ¦\å¾±ç¿XÎ夢žÎ/¥ç­æïyÿ®gwú¿²[¿±ÍÀ‚Z×"@ÜbaЩu_vtrWîüG*êYÀÎèÝÌ ?ÓRÍì-.¥Ö[˜…]ò¤篫¶ß»šßº±µVýÕ*ÕÀ¿m]K«f=s)Çâyu_Y.ë~ˆ¾¼f=uÌñ4OhçXõ?®¦žËö×ìÌr7 M€vgvt)á¿–HÄæ:-JöÏ¥Ïç§ìèE$GÞ¦¼ØÅ0ôò³ãÃsñ{ˆ Øª'ùGòo5N†âÌn°¯L»(×Ü¥ãOzÿGÛµê¿TÒ—¸Ž•Ú¥l[Vö.š}u®ÜбL»/;¿±Š¥Õ±Ø¥Ša×SÚ¯Ù7¦]MãoìåÒÚüeVÖHZkÝ™¥ PÁfefçZ#/%kÖúØ¿¦4®Íñ«´vfãT=³y)Ùz€Ò¾€™/ˆM9žÏÓ:‰ß"ŸïûOnc¸sl髯ÉtÅsM׬üŠOõ´?õJY÷e5·†Ù°à×ڇݷŽÅpAïûϹ½oL½”®Ýñ.ì‹ÚU±r‡¦ÿ,¿âÓC±ûÿº«xö´Tn‹€—_Ūõêk\XTƒ@÷½G°¦]”»|w4~\ãâ~Ÿ^­:«¯ñ †þ¼ ØÆ‹ý’ÑS¿Y¸Á1Ix‚ }ÐJíBžlÙ„%rlkå[¶e[ƸhRü±eÁÁIƒ4Û2‡eË ŠlatoË(® WØŠ+ ÀÂäu„Çø(8ÌÃÈ0GaoCRQqLBÙr)䩬1­á†Ä»)áoý;óè8Þ{¸`ö&bB{¬%™=B:W›1`‰ºo™Jà™~Ë4/Ì#Ræy’ Zí-S½ã~(ê¾e[–‚%«sF}:ôÔ2¨4Nª¾e[¦]ï¶ì¤B±i +==ä 'Vè@̵e  ß²‘‹ämªà(8æ™Q°6ŽBëËGaË&¾|@jw® WèÈ0G!’…Îc| \Ó©¸ÂABËQP, +¸¦=9 +ê÷r…Ê¢€+pÞ£Ð?¨#ÑV›!w\[ä]ß²TÓõ2IQÃ1]•B ò6¨„‡)¼k×,ÉìgãqxVZífËxW œ¡ò„ž²e°RA `œévnËLÌ& PÄH4±l +Qõ âé˜0º¥´qM2«Q b‡À +—yžò!D'qiË(Ú’y.Í–¸#)F•9¡ºgÅÒS„bιZÊ ¥ö*IjV6†FêG$²eœeš‘ÐRVÂÐR’ÏDdQæI´8(äQ}ÝÈÉ* ³ã–ó‚á–u™@û#äá5yÁŒÝ2-Ì¥ßhVã5€ö-“°*¾˜ ŠÊàò6È å¯ÒòuŠzË6Á:áÒŲPc›å4ʘØ*Ä@¥k&¿Ì£¡Ò%YWÔEdø¤ˆM8tŸçúóyÛEMþ¢*í¾.hé•° +w=–t`±p™îO!•r·ŒqR½ýx©6¯ðÊÜcݳ‚;è¦X6ø o-v*%R1,b š.è"A T–>ŠQåÁàŠ+E±i¥Q¼@\1H9ý-ï9L¸ÅeÙ»NZ2íU¶l›@Ki@½ëÖ @æÔ¡Sò$Ø LF%v”£ *g@UV¶ì(9%“ í»3Ï·>+ Õ¦\-H¥Ðè`•-Û:Óæ ˜xã-D)ªÇ”±ëtƒÉÔøN 6 g/!M·ááI¸PK0Ò³geÊzËL5$6_1=‡%=,6¨ø4P»+Fûs¬;͘ꮤ¤º½ÌI7ä‰p%Æ7ð½\|]†ÁSµÊ-û˜~`…㩈%h”Âå)Iq¼~=@žIrýí8 ßñöI¥{ ôÍsá¤nY +›p­ð#Iq +Z1iÅæ§³nN|X·JR÷„²Õ]ùTÜÛ1{a³4 +ežQx[l8’©4 bo^ücÖ~ž Ð6וN^ pžW',%0¸ótZ0ÖÓ(¶ñVÑë´@«ŒÌA#˜Å€C’ ŸiqP® +KÓºÄL +rë+4 ص•ñ„€„%ƒ÷QË–1êKÁP€0Qäø- +6{—Í…` n|²=¼™Õ(”ôFá=ÿÒ˜ƒ‡^£'ÄøUn]à¸vuØ”DÇñ©ÒwL¦Vy–C)dxN8DäAD¾þõß2:užŠ‘DÑI#‰¢‡ói>Í'¾€Ô&‰¢Ÿói>­˜Áú0ðÕÃÀWf°NËO3X ÖÑH±ÚŠL±*­ E'D +‘ŒîÁ@Y6eÙŒódÿ~yÖ—g€H'öï-SœØŸ‘3Ù–‘3Œ%³)DÅ@(™Œìa`$Âû†S0¯ÅAxÌ‹Y@Þc^•]P.…tA©YôÁŒ.(œ¨cðiVÛÂâ,,zRO¸“Å¢'”z£Ôî°XX•M¤tlnµ£Ä¨ 55:jB;jBMsL”ecË:¤váW ai¯{µ'Ã2’?ô8¨aa"¢g…Fí +‘–¸øŠʱ~t ¡¿>ˆCÈÙ¤º%¨Ø\b|¦6±Œþó[d¶ª†'@œ•ºy‚j  Jß<ÂG‡ŠÍ Cdž·Œ„tÃgçÓ³ùa- ©ñÝùAL§â +•„–£DbŠkåNé;N1ª(FÔUÙ´+Ç;ÄÇ to¥DÒÞ1ÓÒ+QÓéoÀëÎíéT‰T*‘xwv¤-ëÇâñ5°Ëkà« 3ð0ƒÕ€€dà+ÎÀW»`YÉ%¹$—F¤ó<· ¦XíÇÅ£x Q¢à9Õ²ÁOý7ƒÄ^ ”e+0d™ÙDŸ‘Ågä Q|F. @(±J#1 Ǽ0F"bŽQd8æ…1dxL&žÆpŠ…žÔóioY·°,(„Žê¡£Z$óÓû<ºb£ ÖS2GYvš¦éáQ𤅑AÊ¥4EØ2Æ_ã„Uxú–¡&´'<˜“$ÚýÆÔPÓ=ŒOcð @Ã@鳌«‰“’8ã/µ­¯IB +Åj©Séë8*6oÙÂÑ´HŸ'+ên™×ªº"[cË6•ç ˜ +Ó+‹8ïÆe<óO$Ó±ªñ½&Ê‚á焸eô0X]ê¢8„¢‚ÃêeÕ@”±ilAÅfRÉtB&–ÑS>ΆSP–ݪ$Õ³r4–(<ƈ£  Ì? Ï<¹ IN„9Õ˜µWÔT\™V¢tÎéQšÙk.ý–IÎÌFY–¿%_¼ñ`)áÉK +³a­•§Âmèƒ.`z¯;Wtª&™ýÜ0Éìg©Ôqó‰´Áà²Ú Ȫ/ «!Hý$q‰¢÷% @|kà«í |•øjà  G ÒíuÔ åPƒ”ŸŠ•\Z'rI.­“QãlL RÎð)²ÁOOTÿ½e‘H$@eƒŸÝEÿÍ]´‹þ{ËâÑ:5²-Dâ`ÐêaÐ +ƒÖIÿ8¾-ó /VAYö¹Oìß'öïljýÛ¿<+ˆ´’“cËÄMDñY.­.ã7Å nË2Œœ9 @(™]‡(óâNë„ÃÀH„÷1 ‹þóJ`²E†S¶ “è Èp +Ã)µ¬ÑÅ#*øjË¥µEtóÃ*žݲ̈́Â]é‚ÂmÙ%á’.(ë£4á.5º p4e‘¿ÉdøT¶eôäåY³RgÌØA·°,Ö¤Þ²´°N8Ë£D2û–ÍóèÊzÊ*ÚÍk«ˆ,Û#Z+‡éšp[¶‘(ú¡’(zltõµUž ·Î"‰¢Ë£+[˜ Y`vXß2 ·<¾1°ˆ1ø”#u¨ìJN`÷”©;WœcË: È +f&:ÏßêeG)Á@Y¶èÄþ"|ƒ-KdV¯É |ŠÀȤ +—š¸ÈÁuÇ ý$2«_郔§[&Ÿ)ì(Ñ)O Þ8, +ËcL±Ú£uƒÖ ‡Ò±Ém™À–ÅÇ&4¢xkÙš §|bäàzt#¶%P–íY|j¡‚”Äõ¶ ÄlóÞ 70p6ç–N¯× +?£@f8#ŠçàŽëÍ%ØhË&‡ëÅpÂ¥¢‰ëÁ›W—h7_I*÷Ì„êú¹è›GdžãµñyèE]ÈŒªÄƒR„YØ]À„â’ƒHÚOµá¡ˆ‹jË|ÊÀò3ANqKˆÃV^²dƒ XyIVÌ>ˆ ˜>SPóiÂW¾õïFgy[6Ði¹*1™•âi Éìˆèý*•ÀôòñòLX·^z±M©*§ÇòÆ«HªÏÐ ·$•–·bPTˆ% «Pl™ˆ&Ú*<ºàÄ!«oÀ^›Òý @ž&Dð®ÔÊUEþ¥W Ìæ¢KwíOîà ‹zp=Mgå™^‚𨠴34>íüñWé]©XÙ`<\n™aQ(=hæP]>=u¨ ‚ê&‚fµ¹-C ˜þ!@­<î°>^å–z{9!¬E4V®²§ƒ»¥‚y]OŒ=Îˬ[†¡Y+/($£W* ëq\»ò…ÈàÒ3ŠÚaô£¿˜]éâÇ™'›²BË)~¸”-î  Ó{ä”ëy¡uË:‘öÔˇÑ)Š„é)•ƒëy +hH‚¬¶ ßJ&SH»zØ`ÌÆðT6 +ØÆ³­öIb-º€Yè,|Ë$ ‡gÐÁìs»Œ-þ9Eà²Á™°ÊœZ7%Œ„°èkê¼)aúÃ×¢}Ë.ŠŠGR|@•¾Ô¸8¾e\`˶¬'` +8NýwJ«6/0BD/ÀWÌNMÿµ.Ìh”Z`%Ññ6¼Ùx*©¦ëåüÚp^ahw·ƒw¸¸œo^G/-Þ„öˆ$…Ù…GŠóœß@*¡ÄbÃ9¨[zT¼,c­öø4ª8ôú”[Ö½ í«IðŸ&´È-Ôj“ +˜·²†$œÇÂB£Ç•S/a©•«‚’_Ô¥X>FEÂôëgâzà\oÙ–§ƒ£ +£‡kå“‚7•xpȺt îì5E%¼):0Ûõů®cOÆøÌF¬Jß²-y¨¸åãq½-ó eËÈ‚¹ô²Q†T o¶[f"U¸áoÊù‘º¶œh¬¼VãÇGÜôƒ¨…8¥gf‹vÉb8aÅÂËhå5ÁÜ2rdr3õwɺ¢såYµy¿>‘\TÀAõ“¶ õ/F/L$Wí©4 K/%ñÆÛˆ°£¸¾¾H…³2”>ñù½eêeÝ,šð[æcõ–!T.cwSbH®¿7•ó²Ç`óe%Þx%OÁ[™7–§raºþØPH8W;4Aèz!AéeÍá0=V¨œº,Æ/@Òð÷d‚•Ç)½ÇÙa$¼kB;Ütö"~ž¿·È¡ãÁì”=3{±e¢9á/ =zI~‘8L‡Åxã-R¥U +z ,2Øü–%ÐX/ÉS#Þ2/oP]rñ¸wS[†JVÌŽ˜ +T¬ÇítÙÈìH„U^¡Á¥Þæt_yãqP Ógä‚[î ¬âèT~†*Ž^<7¨ÒJN^˜pËPÄE…Ù[Æ=eƒ£/9ÅSKº_§ˆ4)nml. Y8¸7AYvjú„!!£›ÐõÊF!á·ln`~…Œ¾uU/7ÄHT‘ *ž1ÝÒ»$)ŽWøÁÆë¼èÒÓÂ^¢ŸØ¿G‰ðb‹>è”K +³GîÁìF¢è[¶e{ "–Œ¦ë›”üñ²§By±RüÅbx¶«ƒ°è#‘Á¥Ÿ¬Å£¿å)è-jow×D³ppQ’ú»»PÖÉ–m™„Ep¼,c‹ƒN¸¬]‡^VXÑj#Þæ”%ñÆs„š— žÒÓ%Ú=EWÐ.ä‰wY1;rѤ8h*PñµM¹çH´;Á|lYÁuÊ–S÷ßB´rŠt=Ùj¼d=T|Ü” ~Al*¾e¢¤„ÙTÿÂÚ#Älžè6!6Ür¹*¦fÂñ,”FÂs¨œ PÐ.¯å©w¶¨â¯EBüØ²Ž´Èì°óüí°&œD\1Ûà ’Ä!¤0[õíæ·Œì‚Jˆ‰D•ÐOár¤¥GS±ÎþÄ&­2!–7ÞarrUêv–+œÌSQh2¿e Òô·4áÔ•ã­ühúÙ(½—ènž™JXÉ l媄¤é;”ª¿³†oYEt`¶zÆï q5\‚p®<•yfs¾b¶dµñÐÖlð-C}(>¥\o€“&|2J“^–p/a­§!|<©lñÃFÕKLÈ3=èÄX})¥ùÄFÓ«šÕî +Ò¶ó;‘ÒOΕ?Ðßò8iŠê1ƒŒ§â½§Y—(S X˜bù2˜lJ”}`6gK9gQ&EííÆeÙ]T²~wVoï8‚A½ +ÂÂ9à„?ÖÊ9à„ë°"߸­|ËDM§¿ ªCùÕ”Gß–.Ôi‰ngDWaÃkºRôA_œoË˸ X“ÎÈ€Îk)ülÑ$œD\„>x|g^œ¤Äh T¤#Ý@oj!!£;Bà„ó.ÐÆãÔ’·¹©@Õ±¨ø'\?CU7N.§¸ !Å;œp]Zøæ€œp"?TÂÊ/‡5hVÎi]'ÜJÂêZ.rdRÛÙ@ÁÛÁ3à„UAX팉qRQ‘Â;>}ÐÐÛ°DÑ2>ÐÛŠƒÂ ¢øî€²ìG‹>èŽÖrêÉÛ$Ì¥Jáßñv‚ò-»,ÖIʕ̮9`Îöƒ UŠ$9NH´ª`6&Aê¥>’CµWÁL‚ôëq¢)ó¼¥BgçÌ×6X)NY„6ÞG`© ¸ŒXZ8 ÓǬ‚Ísã¡Ñ]™öm^ ÔÆ‘.(µµá¼½e[¶e‡IÂ0áD…-#…e¨Á!1BƒlL‹‡ +œ[>ç«h±ò„“õñ¶ÌdRüDlV[ JÏ™t£Jb õÁ–1J’SíIæ? +ê÷nY˜Ðr„Š+` ±nÑ%¸lp{TÅ<Ó¿ÂYÃMµÆì“„°è°fåx[&r=Ó«ÍÂE *6£[¶e›Ö$¤ +|M@%L<*qË®¡s)S«ô\Fž +ç±q<Ñd@õp.]kÆSE‹î n)mÙ–„n„Û²-ë…÷(ØÇ"„0rbŠ-C  ÓÇ)ç–}QqXWÐ* ¤’Ò›§c¬Çy\Ðn‚¹Ê6qß²-kÏ•|€ÀW{ô)¤úï-û¤þÞ²-C!é‰N€œ3Ã@ ™ç-Û2Ï*´”spv†?®ƒ9… ¸!ˆ`ä% ƒZ9ã’hñ×hãq+ +V$¬få±/ÖËw`ö–ÞŒ§"W$>JH2(".,Æ"Á0 ‡bÆ‘Da ‘c™0p—#-[»­‚¸)+^km© ‚ªÂ"~yuÙhSÍ#FáDì4ú2Ò‚ŒÚô†Â®™T(Sã21ƒJ¢æašq_4¤9ayÏ]«üu;R”f„¹”J´¬Y4ŸE]ƒä¤R@3ã-ŠFô‚ºû‰ ¾‚r3Ÿm*4eùê"—ÝEA_gzšò“Šî>nYÄ[ —ú.t™Sn]nú“ƒbâVØò¼c l±ýÕÝåÓæ”Î~ÜAjÑKGjðêý1'U²(òPfè?ªÎ¡£ZµnndG¼±Î{ÑxÔvžNᥭ†ìŒóÖ8–? úêƒ|]£Ö½nÜ4«¹–éô÷³]™55÷7ÛúሩÚó +¬OÚm_—ð)Æ{ê2ãY•kÓ›:ˆóP¥ÖêÌ©òð(R@༑I“3¼XúQ‰I +C–ÌB×dG“3©‚ü¦ØâÜ +¹"̼›ˆË÷³Æ&^f½<…ÙŠþ=}— Èf¨-š<á&Q‰ðÄqá6tº÷è™ÞbÓdJM¦@7ºvtgÇé3Ù9…‡ƒº]ch}ØvœÔEwE ·äž*çØÒ—yYþ,gñ‹¥¿Û€†öïK§kBh¼¶UòÆ5­¢†Ë ·ä]|cíªÏö"û `) ´¥@þͤNUh9O–]D`p 2ˆÈ-¤§¼ÐÛ‘sMöÝž8­ÞÝÿ6!¯9{̯ž‰¨l³L íPD§Ò~4'ÛIC|È,J7è’Îâ’Å#ŒD3ÿ{2/êl@´«®ÛT×NžÝØ„µ–e›woÀ‚^†.ZvhØz@à'ûáÒSƈ¥ãËrþ¤•8À½D¶ ñ©ÏÛsn#lžÇlE¯Ã 86oæjœívÕ€þA|kÆ).6ˆ¾C™HÇAФŸ„qøâÿo«²È•°›_A$´ “¦w[Èü¡¼lcý ÿЕ^7ù° à9A]†ãYXoE"@!l£.d¾Nzö±(Y9ÇlŠå£¾þ•ð㔋 ‰B<’5o†œñY4‡°¦vÉh ƒõš‚f“q»5æ •ÊÎ Ž¥êÍYnµy¨l{…éâW›b!º ž”èøý=Ô¿‡S€ã5û‹(çýál„n¯ÎO¼¹[©*º2â4'ϻ鹰’såSÿ “ubº·/&$NÎn"cé¹€˜`Þ™*¨žÄùLRsP9b–žÊY¥(XߺËQo“t>ÝZ†¼«TnAzP§çªa*j¥à2ÊÒLyËQF®oÓË\ªˆUÆo…n‘ØjÓRÍ5ýÔ9óÆÜ”A‚>i”µôÙ;W{@r G`úLFJÎWâäú«šLI£^ssê³lÿßÁÊ;ŒŽšB<+]âpÖ–€ê’q.–qf;c9FЫÿ$ëR³ÌáËó8 +é™öêÙŸ+‹”?€ôBHPúŒ}øG —Ѽë\謡)•Éæ¯XäºïnP`áR-FDeú™Ñº#F‚î +¡6ðž#×i 䥻î󸭦ǹý´lv„ù'û~¬k,Ê8’`äØä‘(Ò­$þ–eªgnËûÜ´œ‰µI‘Ìmu„[)Bó4ò&ÎEª¨@@rЗ „½ÑIȶ¹‹HÑÇ2èYC]Èrâݸxœ×¾cÛví¦”Ž>¾öÛ~ ?yÝ·àßÖ$ª›X‡ªjþ©‰$«ÈžOBÕL¦'E +;ÀÝ$™…)‰BmçnÆuË~·MŽê8±TI함\‡ÿË)ìjHŠ“¬Ÿ.j/_éeØJ¢D÷;¡|ð½eŠw½C$ÖMW!ìõÓ¢1ùÜíMcoîŽL{IÛg9ÕpK*R‰ ˜/m‘4RèVv a'€[ÞXGXc&Bn!½v"UK_·ÛاÛ4©nB¦#Í™['BÇ Z¡Ê©’ð¦HÇê2T!{* ‡çã ¿9üg|›’™M[fÐmý0™ké#&UÅï°lEîBË”`È®@'ÎpòùÆ<1%¢fd^ú¸˜k¢çÙg³ê&a¢Z?™ØÉ‘tšq°AQÝ1"[¥fðc•zY[¡³2Å»ÐºÌØâ Ü`q!çh¦µ¢î•ûNgËåÙÜS|ý E5ÒtŸ––'œ™ré»Iaø m6¿jÞØUe±\ äêɱÐýÉ$JJòo7Œú ƒ"‡—Ü +‰Ly²`i~ô載8<òÿÆÔ{!nWèï8¶[æÛ +øÒåKö=¤Aj+Ýo™ r¾«÷ô 6»­ØÆïKJb ú†“úJù9:í±ŒÀò£Š³Çæ`îJÃõY C–Þ{1Æ^j/žú)ëÔx [hnÜ-L¬Ò|LbH}S<-ZÂ1R¡vîžN}4>aÒžbî_Öp¿ÔGIÁÊ½Ž‘±ÎÓÒÊØšÔQ ÐÃ=°j°¹ÐÓÙ_‡š# áä’©YëÎ6wtŸ-:–mßò(«Š¼…„çæÕÅ;KvB1û`9A&Xÿïb#Pc?1â†ÙU ÅõŠt²…sîÈ`ƒWÔv‰¸ø¶´»VQ]h'â@\¾¡bdFÁ½2‡†ç¼oZ©Å«¿L…ð¿€Æz-¦ÓßMNÞHE-ôÕúùáø +™õqPëé×`êViñ•UÖ)nÒÄ*x­Ã±K¾ #f„0> YöÑèû»—›´ÜNÃfú2 u[pÄÌÅ¢Ýö!¯«î ï–¯ó£ÍçR˜°á‹Mqþ‡máEœhB …1dqúSôCÅI$µU’ðìï°•1Oc„Î7Ìò9wVô<+²Ö™á™‹‚•¼8ɲ"þ3Œ®+iñKõ#4„Ü DVmáÓP@ òš¾a yÄBàï²MwŠ­›1Ê4=€ìh¼ ¬‚öùeÛfÝqyxÓÅݨ¡¼2®á 'o8QkwÏéúQ@4Ë^wÛ×+Â'>â+DBà ë¨ùœ2~ÔÑRK ©|#u7'ÐrÌ%4 ‚.›t¯„wû&/ó5æ`×EÖÇ5ìnzŽÞ) ìénœƒ ޳ìÂÇŠëóÌt·(áýýI!én*»çÜÍ9ÌË.üÞõJq~v ‹·p¾}¡»áÍÙ•h7HÚPmcù?òœd‘Hž|„mK–o~{¬q{¼¡±c³Ð´½':ü­iææZt¯8ÃlDz¥—'ï0^…æ6Üþ‹K”ò"+Õ6AåªÚïl¬xËxÁ Q¢Bõ€ÅV‹%h[F~k{^½¼xèÙPÛ¿sûäK•µFÛ§/·ŸCð2ÚÙ.ži)íIÈq"¤t!y–éw"\`¢²¶¸‘G‰#ÖMXyC±nåˆv¦™\YΊüAfC¤ª²â Ó‘kCÈÜJò3Kéyk‹Á6G[s;¶ÛðìvdFÛ³´£a…é¨¯í ¶åÌâTÞ,5žøpž‚ ˆMó9Ô™ÀÍ“~”‰–ÝõÈ=³\ýÒɼÙûKêÑ!kGKù.ÉeY"Š›dlœÕ3 }$P·!d +Ç‹]Œz4üÕݹ-EŒNè?_ó­fiMqÀd5tp Ý±jL‡à£HÎ÷Ü´-s‚$ŒEHJ›#NOD{È|^>H®åº¦Œ×`‰$Ú¥wÞK²JúñêH¾R ®^bgöç.ê™é·Å|²Š˜ëÛÝA\õ"‰Ñ’$µFNo k2…WfùSÀûeèNæÁÐ@Uw·ê#¢ð +­_“ÜPÅ5¤‰dFòt7ZÙ'Š€MÒˆîò¦È5«FˆvN¨FPöO¬ÿÖ+·å¥ôÒkA$h…Þv€BÒ+h¤¨ëÆRWµK›œzÄo+ÕDƒ?Êçûéo²±GpîÏuy1NÑÇ6°eš…Sðý,Z% +Õ–cû©ˆ²§€è{õ0uð ²k£.ט¬ÎÉ?AêúK³3Rn¨#Ýæè k¤)`cc¥(öEÔ £ÞˆWIÐ ý[ÖFí¯ EŒÁ#Ïö²ÿ éCâ{O†—¬QQ½Ru  ‰ƒÏœtsÄV¶ŽÅ]íÛ•{y±FB®"Þ»M•ø` ·º}>’]€òTúHýI36ÝôßCØÈŽÐw +v4uOÞýNY’… sUà\‘aMDŽßO±á„Ò™‘×AÜdÚdEûôÄD/™¥Ô_'ãp I•R2<ÝÝ%åè„Áoî8¡— ¥HH8WÒÌ]üˆÂ@‘扸âdBR,Âm³¯­¢§²wœ´í*¯Ó_ŠL|‹±‡ÌÔLM–´!Ùßÿ”ÌHËèjuI›~?Áª[]œC·~.MK‹ìa;Tm:Wƒ˜nëqO|ûxÅz¥=´z˜¦jyf5—ë„èf„·¡gg€(Ô¥t¤&Ïú§, &f–Šõ~]ÏŽhiáu¬ÚJ¿MÕ~¨¥¤7.R-YrkO$}^[ +ö{žùnO·‚68ää<}¼í9›-SÁ’žýO,Û çS@ÄŠ‰gû¯î°µO…pâyæaG*ØÁ¦·ë\A|l›ÌÉ­¾iZ—ðšù.ªÃt ¢jHÌõJ‹%ÆŠ×uÌP‡ÚÙžöàš1GбžVÅÚ>\‘lsAå}Ô+Ä›ãcÚ^V©_ñê`K¿)'íW{R¢Ï÷wy^*kð©¶ß•Ķړ­z±ž'ðH+>Åc'M ÀþïB²íUá·T˜›Å…ERøžËÙp H‰üSw‡©ÊŽënnwðÓì^¼“3¢t/w- 5Wõ%~¼Óãº0ÛoØc T&›GôFÕNj,~aÏ«F¾áš„µ1;—“—,ÇŒÄpô‡Èã·/„ΫøñÅ«UWÒÄsÀ˜¤†½ÞÑ™5Æ Ã’ŸÇwvGÀŒC+vúyZ(¥¨d{ëïJ}EÈ2)óg+KïCœK8F’c¼æl~YAíhæ¾¹‘œ>.è0  1&µqêI8tKàÙ©ãef|_ÙBƒÔ…Íq~Þhõ‡Êr­œãªfæø­‘}§f0L+v¹ ;{©e×!Ⳬü S}naÜ.ø•³x’Õû­wGå-1ÚQò.ÐjÙ¾MÄÓ)©gŒÂ¦Ã°«Çö4nt•% )ÿFš——ÿíºß`”u·Q¤Úwl6Ýça˜í5ûL%ôgàî4¤ˆïi•ñ©!­ßY^ê‘r?z•¼ò ¦ã«‚ ˆNð +â¾oxÂÏ%ùV<¡ÅéFÒ9¸*çãAÄ®O²y\¬A!)žØ?®Â…kdT»ˆk=¨,tOg¡¹åº˜OÈÜ!¤âÉM)3{YdÚ‰í±³öÖ5–S/¤PAˆ+HÍ'//g»ö¦ç5.#üM #1‡ìüm‚]#“€ Àðżݵì$-Ø«0¬Œ’ý‚h¦<¥€ho¡NhOä›$fQÜØ΅ŒI´8j¼’ZÝQÆ~ T=:ÖNcKùà<¸ä‰—Y £Yž„S7Ö(ɆÁ˜`Ø×FË>z`Å “ìÌezæŒ hqLKƒÆÜÉÙ´²¾dÆDhèÍÌÇÍBÊŽ+,£HÑ tË!3VgÝÉ8%Ž…•l„åãº"0DKÀJ;ïG_®ãUïIOP¬µˆÅRqhP|žL:=’Éuà46ç)ã|Ö¹ÄÙE¤M 7¦™c )†Ê›¢Ém¹déMò4+6 ßpñ6½~ÐY·œÙýÖÒÅm<]ªá ¸°ê—]»[ÒdîÈàOˆäÇv#ð;£bj²ö h5ññ¨ˆpV›<—3:ÐxÚø§AO„a&ÓÉX§è™A¬7ûÆ“cõ,Cš²KU{$rÕ{Œyžãá˜|yzüênírNCzfkOô}gÝ4œ¡Âbj¿äõš*¿‘iE›ùUHŠœÊ“1©˜}nÕ¢6ÀýÀ=ÔY`|¹ZW!7ç h«‘lQ§Í{Äžœ#Þmº{—˜1P€²’'SÅvy8ºÊmÌj‡òb™Ýç hš 6`lò €˜€25úœ«‘ª8¾TêºR¾IDþ¤ÐyÑçÊ.Aåâ2uÑíC±ö4”®_ªñSŒº$1CTíéWK^´¤Éï¿:d ûÓ’Ÿtt/©«äJ©þsÞr$~skþ¸lgŸ7L®¼éG¾?JÕÃYF×k4t ½ b»†é8‹’'˜G îÁÅ;‚Ù²oîÍï „€ºÔ@ nùgݘã—GöB¢`Ce0³o0ÉΊ„¨eCU{ Qõ·c‡~²£ú8°ƒ1i§ª}ŒNÕÎÜ*sÌö^Ô°U‘»Á=ž^©’§oޏRžŒ²SŸ[¤o˲R.w…HH¬¿²–0´€îO²Ýî +Ým˜ÿ”~Y²;æP€¨Æf¬ ´:Üò€¾òÖxO»øäÛBËL!бW +͹Æl[§÷=ðÄ©*­z8­ JÌ âfù@²ŠPGHÿ+( CÖGO«Ð‘z†úðä¼_ºÍ'ˆóô¿³ÿUBÑßfWÀ3a r{H=®š!pµˆK[¢u€¸È‰ _,ìKåÁv*3oZZÝ®©0•02ø]ÍòkÔÑfàÁ‡8*#½—Ýì±&ù +BÚ^LíääÅè$ {H3Z‚{Ò:$Á]°ý̈¬6ç´+VA¢UUôÌ=ÉÍBî¾ïÜS€µØþ·¬9Qm¥ójœ7+\Y×ÜäßXƒ!b-¸T©/þÍ•¯ä¸T¥€ í"ü+dÃè_´-ùÍY¬qx%ôﺧèñÈMnsÓÞ½ tÊðïû€1¾`Þbn +¶ñUÃä™›âA&ÔìÿÖÄРNG ”vÖ¿u»Jüö+¿<’PmýKÿ)•ãKü[+‰ù )ëá_¾Ã|Ëu墈ùHé]Ö¿KËŒJÿªÕ +Y»e«¬„–­jB'[Žüжœ`a‘®pvK6­é¨Ž§ã¹V· õ}ŽÆ¤äUÕW6ý`@ûØj" V¾1C»B(²_I~Á¯rËa@ö±E(ŠU®T<–g›“ʼ`Ïâþ¥59¾NsjÑÿ2Ôÿr~ûí"ÎÂc'Ž,SUTÅ⛒£Œ1Zfš’è”´ÌŽçú‹Æj­îC§b-êb¸ìUË{:øN9ÀÖ`¥°+NxQIŒT¥‚±™,tUOØ,®A¼§!­}4=ú§ìfy/“¶Ðèǯ·ö¶q“¯Ó_Qàh\ÝÒ,¨‹Øù­H4¸QQJÂŽÔ”U}d•@5Ø3¡œr)W/Àõ–ÌÜmº"Ù(a¦ -ÐDsº·…좊P ß z€ˆˆf£àO+e!f…‡ŠÈ?Ÿ½l\dŸÌt ¸¦ÂëíUŒ¢¤þ…Šm[p©é¬aºcPÈjhY¾›¡/õ€ç+õ|óè˜ñÁW–y_ãM•~Ï!Æm²˜ÔkÄn‰èåkÌ!6xªÚ¾l³†zy¨Â²ÔëtÿÅ2Ô«ÜRïÝkµC ãçþ–h©÷KQa¨7v•½Æ³õfÁ©’y;ÛI½8‚SSÊQÀà "©7îc1.4Šml…¿öhz™ªHÖ2lj+ +iwU˪s¨‚Ù­€[ÉrÓ €0¹r°²@"˨ôäV +½›3Á¦xûªÊú@ +Q|4Ù¸#(!&„º ‰ˆ?ÅPì£ùŸÏæW¼ë¨1“ÜsÌó$”¶Š‡ÆçqúG™Í¼“VMaÆ._M[\Š‹Øò™²ì­…bb‚¯ðíi¢˜vâ=ß‹~Übr°y÷Â4ëQ>kÉßq/8ǯŰ—ØŒR؆¯à²Ep t³Çà\+É~+ÒT^…,;æ÷D¸•&ëR.ä•q…»Ácç’f(ç¶B uQÿ)Ó¦² è$³ÿñ¨µ—º[¥†K›ƪ84ËÕÜ|‡ ΡÚ3ñYÕ+M»Á Òö®Íª×¡›h„‹©È«Þi„N,Ve²‘Ì+g˜mÕpvõš¸@•µ‚ƒ™±—8P,À‹+uád~®oóä«78{kô pÀ™´^õ*~T"¿z¹‹È©œé6^½!É@·ªöž½…j3Œ*•Œ˜ Á;ZfXYØëd¤*¬ðŠÀ9«ïﱨ¸?'õ/Ô;á—…WWè¿{ “q³Þ`èQßlky㣅w +Á()âuŽšÃc‰d·?·!4d¼Á°¤š›”Ŧéé#ämXn¹^)ÜRnS†0ÍÞ˜¾­±BÙõhì.×ï„Vx”îº_}«´Iç Gù˜Ù*Æ©¨¢bËp[@M¼°rDøò•×@ßç‚)7º³ë üðGE°Ça*ÁõÿÞ1r%uižôË÷8Ø‹¤Æë* 5!?‹€>Ö BÞªKÞ…ö³%  }B+…Áš \,ëXq†øØ …$¹õKœM±eîpµw×ðXÑB˜j0ú=Y¾ «p §KÂ,ÿ\ˆ±aÙ3 tü„”ˆw­Ê£°äe‡ðË KeË)†ß8ÞÝÌÎÌÈÞ]ÑĈ÷NKV*";2–¿»„²ÓpÛ[ñ»;CZÝQ8ˆó +\§TÈ¥y4ñn„X×i|7àÝÕ£ÿq4;eï®ìw5 ü`DÞw×X„N×V¼ë^D_ƺãÝÄèªTfLñîf+ïé:‰&€ ÇA ÃÓØ—ÒåÛ £&JqvoP^t±®ÇíÁýO\±Ë¥ÆütÜd3)”l讇¹YïJ8r…~ÝYZ:+Ë´ÇÕ7íR¦Y¡¡Äž³™#Ž&ÇÌ Sð"xò¥-RŠÅ’€· +(m›u[_bV²YêǾsï\Rxj@žŠ|“¦ŒòC¼ø‹ }ºo_—O0>¸dS˜š›H¹RãÝHÃèÁ¨`;Œq8²D%`I§Q‡˜¤Ç`¼,,  ‚ç–=²á´e÷e]é%±ïuu÷Ãâ>Ëmþçâp0ÇT¤ÍÕ‡­– f"ñìÕ7ÃŒ-ó§ÃoL¨…ŸU%nyb¡;ûp|*+§€/†5x²(³x……è˜óŠ?Ù W¸fwÙVÐä@ F)í¨Ê±ºR¨P]Þ`E{îäéw'£ŽL:'™¡Z¿´zùLò‘ªõaœ Œ, ìž«ÿ¬Š˜|Ø•üÇ“~w(ªÖej”`%>ÙÌåq?/ÍIÝNÔŽ þÇü­xÊý^àFàôíNE—&©¶_H b£Ò*‘ÂÅüŸ¼ ¾Æ^24gÚ0êBzIxx +‚BÜED)ä}É»cࢹ 8»r¡¸EGø";¨©å6¼JãʸPänà3mP¿¤ØâC€úž{; ^²ó,®-2¼&ÞZqˆõkB)*N]æBݱȋâ˜Äî2›éŒãûlvkè®·I¶¨îuËZ½%”EðR­1RŒzý@5Ò6£“ÝÿÒjRaûG7{ñ­•âè¢þ*¡F^'”[M'­_=)磋Ñû(s>ºÿ$ħhŠ”×Ýb—È=‹®©o«Ž®gŠ(ºú:ºGd™²E7~Tϰ:Ô?aÌGØð|õóØ6.Ý­,ðÐ#Á}£ 32ú.Iç’ý‡’mFˆß‹!Óú¤É+Ñ…µe§8íÃxÿ+™3àC¹xò¡D¶ô`b°Nu—¿˜¶=˜ý²«R`ÂΕ¦ß&?_X—á‹&š8>ÄYŠcQ@IÚcq„ÊžÑÎ<Šþ„üŪÝñ~| p?‹ä‘@rÖîç¾""«ÁMÚƒÅü-Ji E;ý‡Ôt–uDån8Õî.¡Æ]DaœM.M¼£÷AnÀ¢¸õŸ [Uè +g9I™‰|ë‹Ä¢‰Û‹¹¦-Õ³Øp“ÍÑð1ah³5˜èñhÄ~ÌHvQÛ×Þyï“X•ÂA_x™ õ•am¹íÍÄY …R˜U~(V¿“5ÐQæ°¼MGð„OÇñ‡Àß*ô›Lˆlùæ°vÛî +c.ÛtM»9ëºR\x/ñë¨Ù‡ÉœQª©j…—î +±œY±àh¦ˆ¯FÿáßÄ=ýº$vmÏ+ ååónéfw²±×“Õ¦1„}0ï{|œÃcÁ6È«lž6çZ䓱-À§€;êøslg1Þ€ÕL +›6-}ÝÂWKaUÁ˜ +¶ÓÕµòH‡°üÍ\¥ê‘ ðL¨nºrº‹1“kñ`P[_<ÏåJø³ª(å‚ľã[ó€˜iy>y÷4|¥ù=â!ï>û ¨M6ŒÚ˜ì¯‹rL:.%{’ÊÙ­¼_—!ÅUÆiï‘°¤É&®¶û…EÛqì÷Ìnñì"#¼1eŸ;E±Ã ŽåüºÍK²¦ÄQÑ Uxs˜ÁíŒv«› ¦]˜w‚Ãm™ýÛ0* va`–|®¾ÏÑöFDdÃ`I·Å4[Ñ`õ¿/†/zO(0íc+àPÒï¡üo[øÑÛ3“»Û2ÏjüEÜ`ÐÒøÜ«öõ>ÙÅÍ}ÔnX{U Å"nú +Ö Æâ*Æ`T׎h±þëÔî¹ ¤¶ñÚÜ8/Hùp¤‘Ýo|Â<×QfÄѬuøFœ–½XPr t ‡µ~8É̈˜Tzdƒå^ÄýxrÄé•÷pJ¸;Œ/}{‰-™æ€,wŠOe·Är[›žk³ì\è{EmžXpG´Éã—œTA0ÀUß©†…ÄŸvÖ8^ÿçÕL,„s²wVß÷-1Ôâ°#/ûºKQ¥ ˆ=0½®1ÅkìÄFª4ãÌûãRyñ8O¯_ˆó}8‡d¢³À°=“cˆ÷=I6ìËhm4åȼTcä +ø¼‚œyß«) +ýǃ¼In³tS‹ä-_MGuÊ¿HU)2æ…[ÉÕ¤Ã1׹Ɯ“>¢³¥ 'WÒ²ÞÉÕð±ºCüœÖÜ}ß'k¾ŸùÌðs„ùóù¢U†ƒÍŒ »px*A+÷®Þ$Ÿ7xAz–õ„ñ³ß4½¦Å¾þ<ãÄ6™j«Hùh=XI~x"Ûˆíˆ$”hƒÉ_/€uU=ûÛnôª\ëíÜã²]á\yÎPº3Î.õÈÌ1Þî¼*Êʨ:;ýÄ p™ƒCugdÆïØI8¿(êѲlOà]æY”ÇðpÒôQÅ4‘C}—~æ°£ZPþÿu±îí‘ÀOÍ[o+Ya&Ý•ú°æýC’ðòº½(ÜnB{2Ì’3@[fÇøc3›yANI—Ä£øé²ÓصÑN½4û¤Ù°ÂÛqúhŽÞIwÑ1ÛÐЯŒKVõ ‰ÔÑ´C)Öø¹:ÍCݵòÿÃÁ¾D›½Q̓ Šíã‘è=¤J¼g}NK‹gϲ>&…‘Š®n°ŸËõ§ Fó{K"ÈÈýY|I»ZÐ ·ú²œjò .(ºµª7Ø|&Æ)È5èÄ‘ g£ÍðáþA™ö¦ý¥' G»À×óˆ(‘­ús¿¥ûlÁèâ5è­%ôðÍÍ7I_Vw;ˆ…NŒe)È»0®5É©úŠò+!©O@`°§±‘€ö>F†Ía—‰m“~lZ¦®E¥_:%ìTæYpÁް¦†:‚m–¥ò Y^á®z…/Ág üñ^ÍKð¡¥¾Õö´W‚O÷²BšMFeNð=DªfuB Ú—‰å<›É<µ>Wõçd«=½›|(Žeƒƒß%=È +ËÎǤÙ3dÊÌÂyáÂRV¤v5ÜMM&®­¨6ï˜âl§º¨÷Ç{£÷±=&a4Â*9 +¤ÀiV ëñ)ÞH‡zXÆmÜ¢X¯ï$ {XÈ­Ó â\ñrÚÙÅ­7ɉy4ðDiç·FÃV˜â6!×PÒn°:(øÏ5ÉÀ‹ Sj¬·w´‚ªÛÊ;¾ãâ>ùÑ&o>¹AõLLlS×4;n|<~¢ä•5áiÇ\l§àf]úથãÿ•çÉ=Ù…PYáR:MB´å¯ÑÊ¢æÊOb4ÂxWûHLò¿éšª,Ãbµ’+\„Þ(ýxÂûtþj0)]m»™ƒI]— +)uxªxL†`)Uí–$eIt‡-¦ÆÀaf»¯_•¬°­<ð€ÇÏÈà×Ì3¥•›$él~D°?š#ÿ3rG0?‘I´Qá#êF([NÏ…_”ñ0裫ït(5‘=Ìûêœì¶d+Ü_Õ—b3*žª]_Œó—™xMòašBK7„ØoÄÎøDF(£ø’ BùŽZB»ùpÒ”‡3 £m]¸œf¹9Ð¥Á»²Oû‚’mCw†&™TMº®C”‚Dzë³ +Ò aô‰ð7!«MŒ¨éHQ®|[‘i•£šíQ1 Œ=–È­ë¨FˬlLil+ ÐjøÊZ¬uþº‘ËÒjÛ'‰º‡Tý^m~{sŽ¥¨ŠýÖ(áïŒÆËádIu/J¤7I tŠÿ¤…µY@s§Qæì Ró箢 L¹•#Ùþ!¤#Õx$ +Ÿ°¤Vv=–•g‹†E›x¥SþÏ,h²8và‘뉋fj[ÈE¹í¼j F^à.Óo¸÷½0ñç–FÌ¢HýÀ S3ø¥ïŸR ¢¾u*£\©Ÿ8e‘ÎÈ£ÅÿÙ}{òÓlÒ‚²ÊH,Ì ¹Ö†˜Ãä3ëaô±÷/(;ȅש!%?}"Ä=kÐXNÑoW€Ú8¨FÍÔ°à(I˜(B$ð?¢MfYlÕ»9õ𬢻’,¥<®¢EwäñW¡àíO™!ºGõz|mŠN»=`0ôöLØC½!-T¸Üº¬Ÿ0Ú B|𼃹 A0hMÝ*!EoT/ÏlFýc·óÌh§ÿY¨·{S=F}¬hP‡zá–¦Î×Df¥—…"íˆy¡§T¼}ŠþUÕ#΋8N<Šüî}ýùêbþ‹o•_yw–q?ˆ•ß1=þF¯f~‡ÐÖƒ‘†M.£Ðmt”Ä=^Í“eÐýÃæ Âcו!s!‚ÀÖÉE³öÈB&‡Ÿ `‡n6.£iv &k­÷ÁæÍWÛtêäé 'm°”4C2ÂætÍØAµ6UôöDN“U;‡(ͱ¶±Šc›LŠœ»ñ~Œ",ÝE2ºà¶øÌiÌù‚;Åò?ð¡C,®T¯å¶ÍtôA\™ú(Zã~SVëUGé·IrKœ„BÀËë~Rš”tÁ-Á ú‡ßÜëÞnÔjÔÄÊ$“>uÉöT—sè—Ä*A¸›w¤!èoKÈXw`°·ð>Ñ 1¸~äﯦ-OPP¼0Œçȸ9`ë›êƒÎ&÷é;‘ù|¦å3[· ¢ o|cW!пM|C̲’.|VjÓô¨Û,^Ë<ê*›}™ ÷Ÿ—1,˜Ê +o$Ì1ˆx5Çz·rB^PY`aÔIWm‚ (q'³ÿ‰þÀ /Mî*ß(c¨²yŒPDž×1—Dh$–>jýÌq$ wc“ Ú²_'4u»``”6 –9Q#+Ô…:㹑 íÇu¢S¬G*†W͆ФN…Êð²wšÜ +s³Zá)ȯlBº›/X¤šiÜi œ¦™P=!߃SnµÖŒÊÐ(ÆhÀº+nAï(Èðoˆ(­O±‡|IzîÚJ+öO>Qb‡h÷ûûøQ¡§/ îçUµÅíò²ßzð,±Hå½ìØÀ +¼04{@”LV¿ˆÕè座£ Ï +îs¿ã\ä«7î7éÂáÒx ÌGaÁûŒ(Ùœ›âÏ,£šU9<½Gœ^œ¤¼ªþS + S· ‰Ù•‹ÆG8ÅF?I²R\ñGÄÀHs4§úç ù-}þ]*Nº=X +´-©ÄŸÀÿ[· »íÕ¦ã6 >.ÍåÌ¢³Œ–00@EÇi¡¿Ç­ÒEù(.~×ùŒ·ÕìHh)½ÛÂ}’r¬Œp!ˆ›e‚rÄÉœ"Q'ÄŒEØüïd—¥kßI®Ûˆ=†pýV±FáD¦D õr¦x8¶Û‚Â9Ý^7žÞŒoYDF7r'¸S¨Ä3½MÿíKß`RYÿµØªØ<\|ÅŠc.Jz) +~GÎıö+<ãÅâ \‘ö +&Þ"®5[Võñ’Š3¨A°W¦Úßbþü-Ž\ NþF&®çã ¸«µ\pºÑ_t~ˆœ’øg#Xênˆï‚‰j=H©­f×nÍt"úCL–=ê©‘B"¥OÈ3VŸÜmû+,¦"RT€=‘cãZ Ea'ô¬oÁ Þ@*²Í˜„9|bc]Hƒæ*oÈ®Q‰ÁíCfóû\[ÛmiÓÎ1R¶áȆ JÚ«JH§,FÉ%ÊÄCÒêÆ‰ªúL—¿¿ÐÙ½iß*AJ=gX×Ö[}ò:Cö‡²rÍÖ÷ªO.<ùÍÈ ŠÈ™ùÿ«qÍkÝšÝeN‡r½±ÍÐ…þ£†)ØçÙN—ÿ¯•2¦¢–¡ÅrgÙ»ø²8³2·«Áªý¶TÜ*hÀüb€Ž̹Ëâ~¤NìiŽåÝ¿u9¶Y,ï¯ v³kðÀÆ×R—º¼èåS—f–£uE»°æ×~ðiT—ÿ¹ðBcíA5è!¥˜'ûÍÂVsí ¹î‚¿-7ô)çcÂÓ¿Ð’Ÿ‘³œ‰?¹³b¼%~P˜Žz/ó¾y³N<ð^•;w,­4\Xq/Zö³î{ã@TüЦ¢4n?êJéå*#é¾…/mmF¯GóÀjH¨W¬Ú뵑à,$ŽîŠ™^ +À+‰~ñ÷¯ÔZÊP£„œzçlœ #ûAæùéჄjl+ ÉÌð[ØŒÁ¢ßŒ×dPE k¯:…ÁX!ˆ$Há +¹ß™ —y t8g±…µ^šç]êª ú;«@™½HÆÓ¦¦ßÐÁéÕ5°$çÇ›Õ0¶4 ¾åÌ2»+`Œ•Ÿ)[<Äè ½òšÀ’Ó…R }ÙÉ*ŸCl¤YøãÜÃE;ô¯CŠãüØØ`Jtñ-m Å¦Tœ6 +¿4aat$|]‚†ùÃýzØœƒôj˜¸x$Y°þæÄ4زcà‹ìùr47XŒƒ7…YI‘뤿PùÀMÁSRÁÆñéMû–À_P54 –©1~ZI ýƒeÉPäBtÄÝÀ8¥¾ÜÖ’€,C IRib+N⨭á/1ü±Ÿy^¹<ê.ìƒIÕ¬ßÄkÄwvæñ+ìO8ócši×ËèƒO¯ü¡aŠnIÓcÄßø> àÜpißpç-],mcå9‡ Rë°t$!5“JžZ®øx­‡É¶@0á)Òx|G·H¦­““.ÿª„JòH‡gk®ù³ñoSèßÌ.smEo)¤p¡A°…½ºÏ !÷&U +0çs—Ϋˣ`œÎ5Ñ=;°§•nÏÕ•­lPô^ÆoÓð:ž’ âŠýý%¼ôxÈU;|[ãÁJ ôwѼ ¿˜…#1Öú"½×L"v£±·et[ì·úé²Ú¸g1ŒÙ¦«€„XƒY ’Ž—ˆ`XŒjÆBÌ“·—q1ÿb_kXíSЂ9ÝÊ` ÓÛu@³™2h½‡Á=®­£^w uÆXÍz½¸îUB+ò¨v}1MòÎç ;@@cƒ6F§˜‘n7n¬§…QVï™}%Õïò1kÔÊq$ƒ°fñ]íMþég’N@ 7(Ø·¥~Ïœz´ã…Œ’ë† "4&”H@¿×rcÙ­É­¿*6G¢Ý5ÄÞªsÊJÿH×ÿm~¯‰$ðв.›½gÂdÝAÈö–…•TíÝ®9 +’cÿ•fíµºàÌBÞ-–ø_™_s,%Kh57vv` …pÒªU/`ÝSÅõ¢E¬ÈKfé,fà h­}_M.%‘_û¶‹7àg«M·3¤›ÌGZö¯·-D$éÆC˜©ß—¹1»ˆyEìLw_‹ Û½wEDDªJÓ¢kÍ"€ 2 ; à úá±e¡’„£A'PXàª"Ú…IH©›|¼b^KÓ°1`#3!Ù˜(°ýw‘­ä~A/`B[ö®!ê´X"ld`àhHÌÌnY æ +ŸˆI%ôéC”2˜dãÌŒE…’­IbPÁ„Ò™†ÊKG* +sÞ’` BéhбÌN{P<1Š0eðo …$`¬é¾l¿`}dHˆ +÷àÂJ*¡{Ëà„Ò%.m¼oÀÔIˆBRޤİ/$AÀÅ&ÒVúx ñ` U¨!„0-ñ¡àðF6¶Ä}bÞ€‰ƒÈj·ì`ÄáñP”F,xÀFf‚ÑŸfR© ¨˜& Z‘òˆV£Ú¼ÔÓÁ[f°XÇ'Ùio‚²0ƒhˆvÆf×5>ØXç.‰7ôFf50‘ÄjA7¡ÊKCÕF¼28 +«õFJ¶fÏÂf’™Ù‘÷±Ñý„€j½ÐÄ‚b`+¤áÉ,ç¡tú£Ò|Xçö±Ña AÆH4J”&xNÀ€0 ¡¢à¡b˜íŽ@_@°¯7ì¡&`]è)ýo Aís¢Eà`ƒ(ƒ:”ÞŽÄfv;K†!FéˆPùTdƈÀ€A]À¢Ôâk££8˜æ§¡Â  +0XÂ=¥uaJ_$"¾6m““‚`Xì7YqLDf³±ÇãÛ²’ƒ…Õ0T >‰ CEÇZS”Y“é¥(ãëOLEÞ«Ô…T›Ù“($å}¬>N0C±Ňåq¶Œ¡s¡ô("2D|-š—G›àyX×@aÊàÆKG#š… ÄK5bb˶ÌOª i\döÂx>@¥DËq–-ˆ/Ô7Š@ØíWê[°°xOä±r/ÆRê<#‘µñEp¯$»ƒÇ¶œ<… TG2)Ëû8y#5}š¦/µÁ¯Ô§ã`œ8˜ + ÐłдÚ¹I‰F•'³S†aË`‚”2¸aÀ¬ãØ>¸McR[¶eP’Yƒý­@¥Ö]º-ÛlžÌJ ØÈLH1fbÑŸf‚14°^X0E…ç²¼Š#$! Ñ:„D‡+8¬ëº—$OÃ1Ä/Æ"•º‚‘¡.茖ƒ"eö¡"ÚJAEÔF¢ÍÆt!Z‡ËW!-p\Ê`xÄ‘áÓ²Ú‰'àbŒÒ¢AðÐAˆB=ÙT°vËäz£V""Ôe“è”7©—Z"GsB°x‡k€«d’Jè +L•ˆPZ$ ‚‚«hDа6ÁÃu¦hAG  )³!”ÄÀìtçpℨ8¤„Æ,`tXPD0 +.Ÿ€j•DÖ¡~¡€E «­XLHÍHc“ÙƒGÔY:ËeË(!!•BéÓ€¶oË&V%¡ÞZ¨ÏãA€­I(!¥ÎÅñ÷™¾ù “é6 ‘å¡€/®Re Ò@z©&D»ì i%`°†ÈÔ‰T\¬ÖcCÀÉë\Z&`¸0(…¤%ÈPŠ + F¨¢uZHb$I´*)Îéô+ÝwY""¾-«Œ>WÃè/Ûh;¤f @™. FHi¬vd@б?Р8×-ª@<0„ïtN@fÅsK%ô–54üfQê0›ïÔÀtÉ`Ïæc¸°n™ªcðÁ+¥èO3Y(è4¥Ì$£­ÊÄ‚ù8u.#Nƒ…Ò¡ +¬‹•TBs ‹¬ãö¥ ¦Jw*@R¢íB&°ÏáA!~ ­(‚1PúH+‚‡5B±V€""³¨ÃÂ$1‹÷<¼Ó‚‚ˆNÞÆ ³÷Qê +0mX]<¾“‚G‹·ìÁC3;áH˜Dd0‚B‹dA;£ô–Íø$µ.VmY¨u±Z‰-ûLŒp•ÿ.»e[öAp9)Ám· +9y¡No‰-¦¯#T­IM]©+´¡di/ž“Gˆ¥'%ÏáuRûR‘€)¦Û·•¾„RWÊ@Ø Ðy/‚7KÁ ”É–mÙµe#›”f˶¬`û(B(!ÞÆmd–rñRRˆITžLpLg ñ*(0è%Bé -ð8Ú +…;dF…A¼RÇP2±ñL Øø2&›LJ=#=ˆ8Èà-óB{@s0'„Î0ä`dÆ„À‰UXô2c… Ñ¢`»—ˆ§PP±µÂ%Õ `m©äÅïS€b-¹<|[&0²€€±Œ me³À!!¥nËbÓé.âÑ("ƒ <«™˜¾ŠÓÈ­æ%Ú2Ó‡ì´wAz)¥d|<-hñ¸×FçPÒm´¥¿ >ì™\¾¾Ø¼ÔÀ‹aö]+>Œà­h+¯ê´R/õ´¶FHP™â–q\°Á”Êœ> +6vËH°“÷° ¿ol¼ …£ô‰”:1o¢‰¦nÂÀô•lðaËÈËC´J¨CÅÚФõa¶fÈ”l|§vÓÙ0¨Ã2¾uŒ0¸KIL`4V»@ÊÀº5pB§OêëJ¤„ + {#xp¡tB<¹t3R‘,èˆ!ãq4 ße¿I´•§£"YЇ‹ʉ{ð +Jo™ZZ$hG@VËÁD”-­¾Ë–¡4Ó—q¨@}–.¿’=}ý)ìK@'odó*u¨’ÉñBüœ<‹‡‡ ƒSrâë ñ8<‰TfC> Aø(u  ïQ@Œ‘Ø(Èì–M8CÊ,BÌÀº“ŧ"e¶Ó’Ù-‹üAÅ0kÐi¥D+yZ)Ñ¢*D1‰N=¢Gf‚3K`¬,@"€µe}i{J&FSbË&g¸ÿ. òc#*rªÀd(-½`¨\jP °ºe ­§ò +Q|,fC!A@¨A.Xx¤8"" ̈T»¹ˆPº 8Ö.E†ƒQ‘€j/"&“ÑŒÝ-ût"¾vVI¨ôBé‘K·±%0¸Ó0`êN \ˆ÷žÔÁ)ˆ,Òab'‹ü.K@"‚àâ“EÆKðˆØx +  .¹Tl?J]ÉEµ§t1ăBˆW ðy&Û€@Ù<™Ck+§I ƒUäÄÁ|)Of¿)³ŸH23ÛI¡^žÔÊ¥¢ÍêZxãXw±l¶TB{ ‡fD•Ìv0æ2*ˆ¸&P•–>¨‚¡réþwÙ“€SkA“f¸ˆ-hg„âÃ-ƒ æÄ‡u ¦ v8P°ðç‚b­Š(-UHM,èg4A-ÆD…$ÕUxDûUV«ùíg……7›“K·L“ˆQu44 +^ÁÂbË6$ :‰U´ôéèø(>ùú³ ê +B”õX0‰6µ ú bqò8e@ÀlÙ¤ÄõaJ‰6ðW©CqxoËJÍo|bA<žÕp¤ÚŽ­"…¥J+@X¨jU¼Þï¬+ "rVƒ¦ÔÒVK+@xò/éZy -`‰+àKxÅÏ)à¥v%Gºˆ×•,gV@øÀhgxÏ -¨ïdÀ¼H˨–— ذ„ -Zà¢dŸ2!bXîѫΠ·òŒÒ8ýÉO¾XIì„â7q|¯éÈ´Eä”{µLœŲûŽ endstream endobj 24 0 obj [/Indexed/DeviceRGB 255 25 0 R] endobj 25 0 obj <>stream +Ö¢\UAÁÚKÆA6¾6@xXוÍKEaaÔú‚„3zF‹ÒéÏf–?!1 ŽãÄÁø tšS‘ʬ§¢ ¥¢ Ö-‹Qu:"PÀÑÐȬ…)ƒA.x…‚Ñs0 Œ‘Nœ:DV'Ž“xÄA0 +'˜¡-“xX°ðdF! +t5t3$ÆqL t +²Cƒ8ó:q0Ñ¢Eªe`ˆøú¢êT“"­6s‰£µ4*lyÀÄ$:ݲ-Iˆ_ªs(}X"”žP,'OtÒ@u «m|œ¼8f±œ45ax’H…Å#ê” ‰,&/ÙøBTýH] :‰‘ò4@V{੼”Ãe´²ÀÁ_'Ò¨Lž Ì I¤*ùH``>[欉F޾²ßy kM* K X™Ù2 FcÕÞe»X¤8mÇaTÂhIp´[¦!ͨóFÜDã¢Íp"L%% ‰vËbKHG´!-Rq€‘H`d4êÉl‡ ‘Ùx‘‘ËQѦUCÊ,fód–dfÖC3»e™UïâÅ9iË4œ‡ÛKHÁËqé–U\v£áR8‹Ñ3X:”ŠŸLJ24ÛÅ#¶Ièj^ݲ®ëºŒ‘f:Lwê< "‘È •ÍdT[¦Éd2#½d2#]KÆH-œÆ¢ºDxË–u¥–ÁGˆ'àrÑ¢ðìfÕ"˜†ŠF>˜-³(°(‘@( ÁhŒ æ $:Ü•2Õn…¥5€6öÀ!ªÀ¾“„D÷.…B¢Ž€(ÀƒÁ2–†ùxÊÄ»x'”¨Ó‘Öˆ»º ˆHƒ¹ØŽz@V¯B%„CÂAQ(:êFÏÁPp¢åB&A{£ç`B¢ÃDDŒ,þr#\EuËH:&ASN°ŽÀ)¨³e#HÒy'K§òÑ`±áh­@Fç½wàO$C…é…fBJÝæb:¢¤x²9 ´›î¢¢ó"Bá6+—~I§%P(d‘˜g"#äàÏÁ¸F‰Ò¼ÏÁT"&8µxF- ňÄ>MqÁ¬, Šç``‡È;â9˜ˆxÆb±â`4¢‹x¦ó8|X>.à9}1Ñé +xFO- +Œ äáÓ"Á‰ä;$ „FÞ¶-Cx ðŒÆ5&ÁéÀÁÓ)Ö:<#X‚†µR† X›qx†Ãh¬žƒiTÂhMÏÁtH3â( µ\£’™žƒ¹„tDëÉlÇ€!e–c£ Ó…8Ïw +¢PÙ/àž«tŸÉÀð(]TVØ^è˜!ƒ–@Ëc‚(‘…G¢ø”x6ÈF°ïõÀ1Äiâñy¨ vCb¥Ïc ¤Ô=¬2R¦â4Ä´Âaj6ad“á* ž A‡@<ç fR1`#3!) ÀL` Ì A}xDÁÀô4, ò)8y +T§¹TJëñ¼” DbË¢ƒn™©…‘™4ÌR}’ ìÛ2Îå¥"“Š­0¨¤Q`-ÃCê[˜&JWH¬-h†ç-ë(‰pÌÆ–É‚}[f©€¸†ÌG)et&‰åhØd–bU‚} /#˜Ç0 )u%1oYI4Â4åd1}ΖhX˜I(Ä™I;xh& !™‰¥#¡2Ù²‚&iZ Z²@l¼‹ýL]Š$7vá4ñøübm³p†‚ôÌÞ2WÁB¸$æ…AêF[Kfh4°`á‘𡉷 CIç‘L,4ƒb:0½e&…˜·2x´YNÞ%¤ÔU:Èá‘À0=Á§¯ (Í–mç" "¢#ö§) ÀL¶Ìƒ²áâ‚} “ ª€àRà˜Ê½ƒ¡ÔùG{|¬-s(‰mYEa+¤\êaK^Ä%4Üò^EÄK¥÷<“ÏK.X;é>1¤Q°pÇAæCCT~Æ–q4ã`8nËH !™ÉÁ@Áe"F²ñ]¾‡W}Þët8¨®V°Ösp¡tIöu¥¹/5±`Zm™GIzž%3yѰ0†ó@3áÎŲeû’òT˜¾àñ7BZaöâ˜:ÌȈƆ-ÈÆQú.¢• `¦´tË*[v! é<‚‹ÇoYĆªä£)9Z ½âW‰™6žÈ$àä-ÀÉ׆J Xà-Ñ °°ÊÚ2ÓÈgË*Ñ%¡€!Dœëd8%œ˜¡6et(+àå¡\BÆ5ðÙ|>(›ƒØ×Ü(ƒA8š:õˆÞB—âØ£ƒOJb ”> ’h9V®¢û>„;\j@šXP‰k=J˜'"B`êR¢‹¸ÞÈÈȬ€eÄ(N ñ@:ÝÆ + Pð× UD{JAu"BÝÀ Iy(Öš8„Dzy©GÁ‡G> +¦®4#k½ÏK=Ô2è(ƒ±ñ2ð»<|“8±%¡ô ü'æ•`¨n¡ ²vË>£±è ãk +Ç·$—K$ôÑòHd­ÓÔ_fœ|lÙ–m™ôÜR +Of;­O“ÌÌrbÖH²ðRd|ý™: Õv&­­ 6Öx1ÌvF4¢‚Ë××F7ámŠT2@.ÑÂ'‹ŒÌ’|&X‰LÇÚŽ®Ó#JHʃ¨XØXÔ‰%¦!#»¦ÏÔ,`”!ùˆyžF‚…I +NÞ&à€A;b¦Œ‘o™“^:ápƒÄצ°îd¡‚…l2Û€AY&vÀ…ÈsáÙ"׈ë´e8ÕR(} .ŽE :1„=S÷`ª`­IC°Oz•É…xÌd#­ŠdA·,”☺‘Õëä¼Ñr € m 6ré@eC´Ñä㢃¡LP[&ÒLH`´! Sw¬Ö@] ¥.D“SaÈLHtøò%™-‰ dðÇ!Ô ÑŠ&­#[ÇX¥.•Âxo‚pðõ$ŽøÛ˜µñ…`kI6>Þ+ (8y" ¥®àöµˆf)©ˆ¯%\Á·Œd´gä£#`@;-"h}X–¾¯e§MÚÚC1ò4_£*:2õ“f5bÁ£É…KÞmì@‡*Ôã-é ˆCJ˜çpà™:‘RÆj+:ÜÅ!k(Bâ`xoÔjϨpha"Zï¢`áL¬µñE¼‚ÇII½ttùŒhX2™¶ Έ J+ZK¥D°-ÃHq|x4QÀàR°e%.àRK¡ô à‘‘ò:¤Œ©ã<`)/zb.UÀØx$ÎÆ7b!j„‰fË&\“‡ä S”Š?’ ÁÀ¾Ieòõ‰¡{è:52˜O E­öK%xëb„€µ*¢±X.ŸEh·¢Ð”Ö@Œ”G2Q`íä1öy>JæÃ ¦+ÔéPú,± þ`Hû!À|Ï£»ˆ–#¤ê,X+"€é¥¡kI,\¼eœABÀp rt@iÏ +@JF@VÛ‰P°Î!„š€u ß2Õ…h?#šeeЄf+)’hAšË×.aÉ`„X—Áìk "å= px¢RWb 8y! DÊ‹]XbÊ€±œ¼&¦ +#$[Æ8BC?ˇ‚ÃCH­tV ¾LfA' +¦n„Òré$–Y_…PµBØ2M„¨Ã“jU,L”&ðtCÈ¥?. ¯8J_‡H©{Ȉxi€”h >+JoÙ–¥Z¤Õ€8O$áÂÉ×[&J‰LH…ÆjC°¤(ÙøL¯ùÞƒ$ŠC23û)ÖˆBÁÆ>[ÖÀ ñJÓ·eÏ€©{ p(íiZÌð^ˆ·Q𬖠¸pƒèca€_/l¬í€hd6dAé´Hs@éÏ€ þ¨.J€÷ À “ãXñà-Û²ÕÐX‘@­Ñà²ác¸x(%L§ Ð× „£<Ÿ÷…úJ\û „”º±’!jL´˜É¥ D”¥d,'ïk™ºÁÆZ 6}Zñ€àsð¶,B‚!eV”pÉàÏÈÔ™€Ø3ž ¬cˆh8¨°p%bâòßE!å êüHf±X: +'¯ôñB<><€;-è‚cì7 +}”ºO‚…· "L,èˆ#³®’Ù + +„·e#(þHû‰y§ªðD4–%Bi’çð4P‚ᢃ‘lYZÔ≈ têC 74êÃl1}¢KÅÖž÷Qê.%üÅ\ï¥>äh»¬ëï($å ˆ>°Ï»¸¨pÈ{¦®!³û\@LBXØXMüèø,6H˜-ÓIÊabÎ öµ§5Â` `íAÈj'H)ƒdtHb“YŠCÊÕÐi ÄóR l•‘Á šÑ¾ÆÑrH+ZGQX¸`(4± ^HlËfëÃÞÃ:‡ˆÒDY8a‚²l,P°ðwÉlüî;)Rf3;C<Èæ¥$…˜çQp‰!`a…Ù øÐY0<þ>8¥ó !s,Òxfœ<’÷L]i);2‚ír¤Lº(`0ü@ÖT”|8{mt .(Ön*$\‚Q:ý- Þ2ÐÉ‚v"ÒAƒ¸g ƒ>¸-{ÀZÌ„Çß'!2uM,ÔŸÏÆëx°8y[6·Ì‚JL0° ›y×>{$²F"òu«qi¨<“#7ì¨Ì1܇RåNÝ×X~sä =r=³‘•ˆ Ä5Òyf'/lŸs_áÔèËýÍ}ä-z”²¡êr W“rºvœªÜ;öºK®¹³o(Õ!ùÍé2Ôlˆ´sÂ髬ÎérÖ¡µ7ûK>·pµÙqþtÿ¹Pcól®W@óþ쪪ÚÍYIæú4U¨‰±T"3jÿÌ+U¯&lµì¨‰º’šŸíž¬ÒL—k5_ß»å¿X,£«\ójýJ3çÊ5»R¹4ÒáKµ‚Û«Øj±Xõ­V«f6”ù‚®Ù¹Q³®’R²r„„f©h0kIhª"Q}P¡Hà 9+|S[®zñKUk¤jNMl¹\£ëSÓ/•+}ÅJfe´$.Æù yè´ß,£ÀÕòPpu¨2ÚGË#år‰„:M³æj‰|¬`Ã2kœþ;!éùcì¡6ä8ëÐ&Œp}zœ“S Ný]•Þ¿œœ$’¶>Û·åä4ëÐ2”„»F>6R—ì•‘\uº7\îæ ”ÏS67s#Üí÷ÆWè$ígŒ +wÆgÉÉØÃÈëÌSWr ãÔí)ç.·rrln©’û÷ì•y4aô•û;¡÷îÆe¹ÚÊÛp_ù™·ãn\8!Gvù +ö;7s°½{=êK^Ùr9þÙ1Nö~)#ÿGéÍñÆ}oç^jì~!Ç/zŒªß ]F]ér[ʸü½»ër*\ÎNŽ_eÔõ…ïP¥wËç©þ £Nç\Â_çÈíJvé/9îr¬'ŒpúrÿSûm÷ã”Íì]N’Öï ù%Ã}Vè3þOØ¡Íþý}#Œ®>×?=3:KÕu­™}Û}îtV÷-÷!ÇØ¯ ÊŽÛÎì å.{fžïí°ç\Nÿ£·òsÓÿýáœÊéÃ~ŸýBn_ý¡ïäÙ*”Íýÿœ:'Œ—SgÈ’›>µé’ù7¶„ìR÷—Ûw3’÷ÊwWØîÎF8gK73”S7ÂÿéPÆoŸ»¾>W¹¡l¨þQvŒ?·C‹ ~Cv(!ìmnÙþÍÅžÙGS7Tomö\„¬2ê„ý-ý£ë”s_ú\n¿ã܆ʜþüø“åtùÛ%Co%ävÜç¨P*ä /œ’_'½µŸú±îÜ—°!ô_ç)ã\ý)¹ýÖžu™ó)eÔ–QBÎßånË(£·|žeÇíoæþ°at¹†­­ŒquÆfæ¼=FŽ’á|È=l­9JÕ}ß(¹ï©ùÏcO÷‡\„­ý¿î”ËsŸ‹=¡N ¿=r³%œ½0îþä¤Ü÷Öé*Wr+[s}ÉyöKnFÈ:Y6/§?5ÈRê”-á¶Ï +Fç¤KÈ+¥k\æX¶öÚªºSêNúÔœ'Ãæ•q'·r²œ’Wõy¹[[8}ÂwåÈ\l÷¥J÷ö†Rò„«sí—®ݧöÆfõ•ÓžÇW²\†s8ۡΗ,§üwç&Oíç{ŒþP5Îø3Ní….9í)Ý·{%ÿrÝSƒsÎÉò¯rî­ÍmåÈ +ç;÷Ý=µ§³ÎçdÏŒµQÂ^×9[û’ÿå~„r{väþßɵ/KõºR%=:\9ݧ*ä¦k*”úê|®3–Ö=UYÆžqrñ#K•º6ǰ5Ž’Õ]¹’óŸÚúÏ—U>s¶¶ÑåËÖžë\ÿÌ<š».äéPYnÜ©Ðy—ÛŸš¯wkd–/c|•œô)á»ÏÈóY?yúœ™_ÊŽ\Gø!¯êŒÜsvÏŽq~œÊªÜloŸqB¸á„îðr±§öß2N•Ó›¹­ñ»s\Øák+t9™ãodn]Òã­îQ¹èS›ñWaïäW—a”=›“>5~8w¾÷d—eKÝö¹é c3ìÕ^.ÆÖ¾YB%œßÜþÌ>›½2Vdÿ–ÛR¶Êné;ãÔÈÜnKÿ† %ס~lí¸1¶Bm]èͽO-ú²j|WáÇe¸Ê½ÏŒ—²ÏvÎ}j¯êÛ»s¡\2”ýqÿ[]¶rí3ciÝòûwç”’ëoMÂoÕ(¥T ®ÔÕm)%sþ­=܆3ò¯t¨êS£œœ”Boí—ûoÍ™¥lÙë’§TÈYBf,-ÆŸQ_猑‹Ï¬ÿQjŒ’“ßÚäù²ªK…ªñ·ß=Jn~kí ¥|Ÿ½NÊ<GÈŸSØš?tž°£ÎÉÍžÚô}—rJ,¹—eoGøœúœr¥ä9gsë3ëЖ»Ê)'„ÜÂÖÖ™zœ¾Ì±ÏläÓt³WFбjÜÈÚpu›¾”ÎÒW¶Ê¸Òºæ™·Û×#Çê çŒûÏu﫜½êÿ[eC…Q¶B…Ëz„ a³³df®áÔX[ò”¾Ó#7ak¿;B©Ð!ǰ[ÊoéÊ_½á~|náÔ66O–ð£7§±µ–ËrjËÕ׿jèÝÛØÚ6ü‡ñ™S836'Gç²;DZµ(ç«N—ËÞü³ëØÜ8}·!”ZlÿÈÏ2ör[›þs²”Òur gÖ¡I‡‘['ä^ÆÖ$CîÈ*>Çpf( m³L%Ñ iöÑ6ù´ÏJ.™ Cñ òñÑzÈ<¿Ý=#瑵’UyÆ(9Ö¦wˆús!ç5ɳw;²ªTŽ£öeÔö¨ÜrkÏÿ¬ýãrQ7#is}BŽNî¹58™£Kè +™óݬCûí_uwŸ’›ìÚœÝܬr®CuNã*ä¯jhRªl %7|eŽG>­³$4Í>M3Œ-ëT•; ‘®à`€®Û€lT40²ñàèÀº8@#° "ˆ‡‰È‡a m´BŠDäë0¶ ôi›y4Ëj`¤’­Hšjúšjÿ¬I^mÆmy€¶-ky€0v3ξɓàhM$‘®F,XÂx±IÐ\ˆ¡²ÙT*-å&$:L±¨Â[$8Ïwªe¾ØLlÄÅa¨\ªEè—å( =F¨S”ÁÇ‚ÏÁÔYZG…-g³„ÿprχ*y{!»œÎûî½Fg—ëï»Ï=¾”ýp]_[ù«ÿ5([™5ciRFÕ©mÏ]¸Sf,í]µùóaäR[‡¶FÉñJ—zKÙ¿šjûRSM·›ÔíR©Ö[£²¢ÆåK¥éÕ»¦U,M»VìŠ0¶„‘[·a»ûGvwùj½d­\FÍëåšK×À^µ4.w•ëåú–Q%ôy£Oì®OÈr—[ݬø¿¬©š×jµÒ0”®q9WWªêREÕ©:³-B¹Ë>#ûdIHÞ¸³áîF’æK’SÊQÕêøbM~ùKãzVi\³]#_%5+¬ÖË¥-£ŒY‡óÇéûs¡ëÊ vVÆéò@†rÊ1>GÉÒ5’,³mNÞŽÏ»‘Q᮫Gø¼>yå³t•P¾F‡¾ÎºsÝ7J~_ù²~oŒÛ +[¿•ãöd8¥l¿[ÙåndÉwv«lfnéì­AÉÊΚ±´Ø½íÚîFßɼîë!ì‡Ðµ(yF(åFçÝÉõûò²r±]J¨sòÆíu}må†1FÈÒ]Nþݨü %kOž,þoôøÛÜÕºãO8WÊWÊÙ{å>œRJ_©]Ω²7öúF¨ çJÍý»ãr+œÍйœ +]v/«”RNˆ1rË=ŸeôæÙ°¥¶Œ0ªO *Ãߎ°cŒr®k+eÌX+{ö|åéš/¯|áOÈAe§ÌXÚÔ¸ï/5¶2sóô(w¾#Ç9å?ó¾z³4ìú²_5)#ä]]fÈ­³û}_N¥sðŸ¹mÖ&œ ¥êB¹ÌËÍeíB_ç ÿŒR6yµnngÞ Ω̃s5)¥”ûR}''á?„¥”P!K*wBéÞܽê„ÿ Ù÷!·T•Îý–ú*ùÕýBnŽó¥6iy£”Q¡+Œ=ãn3„û_²êTÙ*áäÙ%äÈBÈÊëÎëîú2~»žÕ½-—+>K3y¥Ò´«]óŠjT¡ +v«µ?y¥\9™[ùYÇJ×(wá¿r?ü¨Sålmç…Pʆ,cKÙQ¿nóú»ä…ÝP[*l¸ìº _aÇgتû¿½ 'œ!³ïþŒ}U5Bwn•²§þŒPÝã;üžÜqYeËÖ_ßQú®Œ½¾paä’a3»TwáN…Q?:ol†ñ¹Îgùq>7lÈ-çÂ)NÝöþ9•[5þQ¥QÍ–kX*ÕK£¯ŸÞ²E’СîêüÝßõ¡Œ®|é¬=·wj«Äܨº2j¯÷KÑ}²»”S£rqvT^Öò!Ôå¨*]êJžq_©ß,û×ýÝ]ò\–þ¯ßÛU²”sö*ûœ³!ïΩ»ðãT¨½ñ2Ü}î–~/”±—]'KÝÕñ›åïËݹ¶üegù¾?§ìõVdɹz•ô©q©OÇukB¨‘.µT%éågsrœÞ>;rüÿ*'”û²×ßµe„íêÏ‘Û_y#l]ï_ç"C)]{u}ªºä(#C©ïSU£ó»¿ÇÈÞª\dêüž7¶ô9u7nC÷¨Ó£Ê…§²fût¨÷òO•ð'lÝož2ÂU¸«êýÚ Ÿk×àlí~ÉþúìU Õ{e?Ô8wew7Icå “æ{KvØÑ#·¯Ì±á„’J•ÊÁÙ/§Ï)áÔen?¡zKfè1NȱnCæ8å.Ï“!T¸¬Víê%#d­Ô@Tid¿kV®TÃð5Ÿ'Is’„žuh.ãôòJ('ŒÏÅv†òŸF}ÙË뺓W!ÏŽÌRjd¸\ÃíÐŽþ®¹wÍ[ªÏ9Ù§spúܹ»qrœÜr[WrO†û{>Ï©rál¸+Y!”½/cëìÙ:cÃ΄êÐ%äÞå”ι>5B{÷WUádر#ë”Þç³Â—ÚŒ¼ý²§Âù¯quU£ÇŽÇ8ã{ôõ8çÆ~9÷yÎ~Žpu2¿î|2Ì:âÊÞsB¨\ïc̸þ +¡î÷î®¶ô¨¬qŸ¥Fí×lȧúr½Ÿuh’—ù›§Cwî:gÿ??w€¸œ%|Ö9§kqNe•üú³¡Æú“·Fv%w|–¼²w½áÆe'=„“‹íí+e7³Ãu‡q>üw_²Ã…qºœßÜï\ígir7:dïv_cü†Ë»³ç»¯3üø¯ú;¹Ý¡” +ÕUj½ÞÚ§”ÍÒõ5ês:5Þ©¾ %Ç÷îɱ®ˆ‹£å¡l6.ÀH‘»#ÇÜ#°b¬Ï’ˆ¨H\°“„GÆŸq:œQãs«i©J8T0˜‡B?«ª¾·<@.Øi³q€À88@› Lõê(a±¾N‡ƒ%c±X~dî¯=Ïí…¯+Ωìßsµömí~emÆèªq3–æNfw‡­ÿ³e䌥MéòåŒ[sÕÿ_µþž*Ÿ[=rý¬m| '„Ûó9mÖ^Fù+UNU(—µmgO[É”qhïÝÎ=¯}#ÇéÚn„r?Ws-7B¸„¼Œ±ûPÙ}uúÎæ—0òB8Y¡îT‰Ááòð(àéØ ÖúèèŽßÒ»eŒR²|5§J5 ]j^ürÍËÔ´Þ¥¬Ö„¤è/¥.ägÖö)=þÏ“Úî«pFvßg­´á\•·Fº«4,ÖÊ5¿ 5«ß—Ô¨Q½Ù½YU•‹½îý?¹£sTNWrCõçJ…1vü…ÍÍùô‰9ßw›[*ï>³|¾\Q¥rMÍ +¶V÷wMëUP³ëS²–ù™´³yöäåÈÜJÎ:ø9òÊ}g„ó]ÈêÊœs³$º¥7äž½þ²¾ûCw…+cË> Ä Ë%â!Yu¹wŒ,ãï”<¡ìùB9qå3ws=g‡Ê%A‰«¸åër¹ÜYšo•Jã.wÍË_Èïr¡†Ç‡§Ó 2ŒDæAÒt’bl£”sÎÉ5ÜÕ:–5¨ä³Ö‘8Lr ÇC)52 Ó,ŠE³±l–”€XB*VH@(" È¢Á`(…AaÃ`Q$b(È%$ÄgåCcÝG2Ø„yf:ÆÃt!Šž9NóºÊVtïz¨•¸Ài< ¸ OŸ½ Õ xS÷•c좴ô,Ùl ÐÂ¥çøS°G4^rE¨ ÐJ4z#[ÜY3Çx¯ÒQ[@òˆîr•îs”#Š—Ñ}WX?™yvé¡G¬| ûÍ…ÔyWÑ÷h¾g\Ø×^Àan^¡ ´ãºê‘Bè=µ0¥5¶Ìtsõoý£pŽAÓì>ifшsçZ)©rë>ÌiÔØ½††ÂSÂ{Ä–àÇi á‘ÎqKÙûu'lèÜVÿ*”ÉYxÌ-1òÝÂçyœÎáÊYCpRã.‡QáäÒ@àR°/Å1Ðþ^2}˜ë»¹ÍÝ¢¤­YüÙßZÇÌ*…tÚÈY:_”Úˆý;N/`.©AwãD‚^BýÈ׳š6BˆÒéƒõ“­ÂYpt…B̉78É” +—ÄÜé3„Vïîa&ìúò¸Är–« JP¨M†b.ÓL®žI/ãÚ£c:“œlËèM°´×B‡­V¸òa’%Û5 ?7éRdzÍàˆÄ¤5¡8&DZéZEÏDx¥cA™x“5ïŸc1í8ìÐJO»T ’›ܚD=ýJ׋Gª;3ï3Léžb?c¦àÁ7¬ëÌ‚É(«ÒÆÓ™zg~³úùÏõü0¢&YÊUA2Ž]%§ õ áÐM(OæåØåà_œÙhÑ;Gè1&^jÄšT䔑GüC»Ü‘W-‘±RF› +epÛmŸuôŽ›¥ ê1i8!KÔ]X˜é{š&FhNzwPÓ9\0£w¬KMøK#ƒ¼ Ómê%J(ïxªÇ¼ ¯¼ûîÒu6Ê;²ÍŒê¤Â.ïêÌéšÆò.½‘Ù¥iœi¡Á½k¾hÓ°š³îpîM4U—w_Ñ4L÷õÐÀ1jÔÁǨqj¢8¥"rƒÄäñRÀb„ºä9äÑËKÞÂÊRƈ’GÛehÈ4f(ynÂpØC(L¿â£õoáa†Û˜—T?“'Wÿú`Ο%?› Mà©äýí¼ŽM㷭䅔ͩ¥M +õœNa1½¦Q[É“ºâ{¬ö"ácVÙ/ æi•0,ÀFS†KÞûó€Æ*ÆÄÔþ ˜!ÏHÒ¶í!JVÍö¸O0åilÛnwm]WkKÖæB«‰òžÊTÂø3ù q0J#‰|4+«ÚAø“'²) Öè•.ܼ,ñ©”¡2J€aÊ÷Õ¼fOÇùòtU¶UÊèͺ ž³³Mš3:e.[°›éÞeõ¸þ]¾§b4Lc(¹[ ÅTiú$X4n°…ž:­}–)öD‰é` Õ‡§#E"y—äÊ*¼ëc|*Çó{ѱàxfÔ@TÛ)„½h)ƒñ*4Ì`-³À»g=Œ£N‘Íg|?†=BõƒcC›vöøµkÁ“*vFéI˹%89NÂØæ†ñ=EÔ7Š)äFÜRytZ ÈºÏ)äfb[µhLá |Ul;àª7ù$ ôq@X0jWᬱ ÝÖÂÕ÷uÕ(ïyEx7¢j”¡F H äŽÅÞÓ“¢$Ó ³& Å7:aU1Ûª„ÐÙ[¥rãIöQáXý y!Š<Ÿ8 h¬úì)שßÛ=I©#zÖ&ªTýWàèã{ݪyˆ"_²6·º¼ *“»>÷Ã1ã…Nc8kþñÏ4T +;ôüSœ™×Lž¾ vz›°kzx| ×°cbIùŸ>õ¯û´ŒÃ¦`µÿ¾P“›.oh„Zr¢°£0¶˜½™7j~z&¢»ºr˜[3# ãŸâx¨=A4«>æPDzdö©”ÕT]KÔk¿É°!ø¿ÉéÌ»%‚„‚oˆ°ÉúL±Cb¡•¢ óD›¿qȹ$q\ÆÎÕ•Œ™Ò”e²±ø ;¶-pNsLšÞ‹’%9ÐÊ:ð¤¹P_¥Ôk2i9}]]kž›å9‡uƒµúÍàNM€$9Bg©yB®Š.}º|ãóÅ7(f½Ño˜()Šõ¥ q}èLP6ÖuêºZÖ‡{Ç ä%̸C×s—´Û¥DU(ñ€k.ÙäDš%gYÏp*OЈ"{(¸¢³eaRɬÌnˆÞ6Kˆ”Í8ÓúV„‡}|Y]°Õh$WsçaDÉh˜'€†D“VXQR™¯cª²Ö¹ ™gß¾ g®1ä•Zß$8Ý÷+{Qn„fÊ>׈é¶€‰J§ÿ|F©…vJžáÅ‹î/&úÐàE\£ 1]&Ú¡¿"^0 ÿ8†çJÂ/Àã¾¢–Txˆ½*•ËÐÒ=ÃQÃ#4RÀG4L4è£ã™=$C-¹§ò·ÜFN@È3zÇPÒL™¹Åf…¦ÒQà/öI:ó´µÞä—ÐÏ#ºˆEÙè¯-âƒ%wðÂ7x·y =¨7—žõÇ‚fAnsŸ…øù¼nºÉª£pš2‰Ü8s/ã"âÑW˜=ÃÛûÅî¶5 +§y-\£õݨ“ÝŽ­ý_¢U'¢5Þ™Ç)xÅ­èÚ“ª÷°Äï±Ó­Sl_£PÉ A "•F˜­ +¨¯e=î0°Þ‹ÑˆîSev×£âr+ô¨¢&Ñ1åÃŽ`E # e‚çôVõ̆¢‡YíÕ¤ªäGo¼0«-Bü¶ç@Dqd|ÿDDq†ŠO›·£?òS;Å—q+‚£ºÿ%³AÖÚŸgwô=o3/Å}Ø-¡)fPAs=ù¤‘t7¨Ã5L_Ÿ÷ÑÁ³Ó¸±£Ir ,S¹ç>¿yb?Ò,³Z‰ÚËãî’H8#Ì¡ âxÀé²+&r²Å€c¬ÿ¹c)e¦ ÐÏ䔀¤0%} f66EÿÔ\»œ±{¾åÇC±ßÊ8‚m óáß^‹^í»øÏÊÙìçð#P(O©Ac7C÷g °¹ZÎØnž÷‚.–s±@ÈÓ&ÁAwäé\Òñ2_ò•z)ƒß ôáÓø”Î^…kÉmØb/Þ–À\x¸H`Ò?Ã-<Žrî`1ò®è²ý-Š5Á¹ËæÜœu-~˜¾0tpïè-9Kþê[íCb*döl:ÉÂmñÈú÷ºR¢Ö4¢Ÿ7Nñ¦j¥5ž¼µ¦·ù¦BUˆ¯D.'ø#QáÊÏ æÔ ´§cv;:K4‹Æ¾yó†ÿ“_¤®sÄ,6!AnùÌWÒÏnQPbaù€—¸¶Ð&ɧ¦‘´†ÔÞŒ…˜Êt¤Ò6”ã•̧Íþñçn.CYÂJVܦ8B»0§jô•k€jqÖÑLøJ +»­¹Í"²·"ÝZ™óÈnºÓµEí4¿L7\Å€%Lܵ´‘CÁpµ¨züD3ßLÕÕÓ±[†ÄL±à±ÄŠ$Ì(ŒÊC‘X¾4@' Út°ÊñälóT$ÑÆ §aÊÈ`»›âpÕêYä›d;rpî&J)mº–§’cX“vKÔÃcæP“‘Ôs ŠFàeƒ·— ^,`Nwà?‰ ù²Í4Y—iÊóvÃ.gZL5SÝjÃ!ŽÊV÷àÝ« [—z¨+MϾN„‚Ž,’Œ\Ô£lOýþ…³³T®\Ô}àsm¼I›œ‘.ê7EqZ)äeR¦ª óòüs‰7ñF™jvq.GSÏ( ŸkšÔžtÛ‹+uIâBH LDkªRÂO0Þ¬š\H YvVéù‡$õ:d€OB¹gš§Æ5#”G¶Òz®‰ë 9†h™©°&u-ü™¬)vKól–ÐK³’õ—“Çñcf–È`iú4œ¦y¡ã´LiØ·¿·ŠåٹǛùÉ»mîªI)/¶¼ÿØeŽ¿¿¨é^Õ­ZEõRìM§«4šTÙÄ2+S {‹ŽXϲ1‚ÿ„¡Àʺ4ÒUO±z};£¬ZÝ[”À^;ÀWáGÕ`[ðÙĈr¸%e:æêšàÞÝ%Ö`÷hñÈâÊž ·Uî=7ÎX/EÙ:º1Øg õÒÂ¥@ât‚-<†Þr[ù<ë9idÿÃ1*¦{¥ƒìu®³áŽn–‰ó-”ü—y5Õ=÷ˆƒº­«XbÜ”&žÝ_ º#w*ØàuñÃS‘Û¯F¥é‘RiU¤¥TjÍ@Ї--§ Ðs£40½o±ÕÁŽ«(,㾇øòéV3˜ü¢ê•üòÚÑŠ0©ZÕ5‘€v.rJVµ¥äìŸ^Ý"QJEx—~^)­ rꧣwHB¬-s3 +ñJÙ»­Ž99Á{Ž[ yàQü½NþÕ¹CSƒ¢Ü)«<¼×Xl¤Ã!IÒá…h™°¾(/t$Eü<·Ìø©óœ Û6í‘j¡êÈ e’ôê0 }”ù ÉX„¨]2wl¤Qàˆ˜˜VL¾R}èŒfÑ9 )MŠ:òZO”UŽzG¡ÝÖ38]‚/šÔO@´Ì…¨X8²7Uÿû±X<öì€x**¶ˆÊy|všý4ø¹ujÍãoñ9Óœ:÷¨'ü¿2ÙíãìxzãÃ3†ÿ1µÉÚèÃfcíè^«@ «‰s‡ñ )B¸hqé5®:K>ºì»kî–EïeÝxQ­@'°Š³(à.¤=Ý!_u+|äÄD ªœÄÀ°bØï¿tûc&½ŒRš Hô³Uõlì$ð§ˆÞƒ^,ýP +.‘±yö½¯hI3,šE,ð•3±0%aŒj7|r×Êp=øV¥`SÐ;1ùƒNÒUŒ ÌxÃR†GSbrVPA’E)¡°+MÒ͉t}hÇ;¨rÍZJ(.ÊÆJöœ/Ë3\?¬cîiÉÈ˫锂‹ýybÙÌ0–A1Wo”V/`P“ ÿ¤fÓ”Ôuðó ?t²ãȃ©”’duµÔoÒ#«Na‚½±àAú~‘} ¼S   ¼mÒ˜¥ŒÍB7‘ 'ÜÜ,² LÇ9_¢ò&ÊÂ^˜‚Ä…¬M"¿ÁYrß Ó¥­]›œ£q/ÖþÐʱp@<q½ÒŒÏåíEXk!Ö—Äo“-•u¢Àì0ƒaòËhyÖXÚ=ÄÚ…?Ž7'œP…„B7 Th ÂjÕk-Ï*>óq)£¦À¸ÈI…%x‰´L,uŽïþŠHæFÅ$xÜI’æþ/üG¿é±Vú¿-`¦{†ò“gèF2V–¸ÿOV¬áÔC˜)ôNW/«šÀG$-¶ÿ$c >œç±´²t1¡]¨‹i§{“Ø”ñžPHz>kúZ`dT¦>•xßÎa ]*OÿŸ¼J™Ÿ–toøvâRQè“õÁ)£r”8T!:Ê·´ÆÁŒbo §—gï,î *ÇvŠ(Óÿé×UÚwÝÀE0‰Ý@åQ¸ôû ¸0: 2YœPRÌ  KFüÅN!ÿ° Ø„«ç¬O‡ðbo„±=™êüEQUǧÿêiÝÕwwéÿ„$ÖÓ•ÌÿZó¿à=Å„¢ì+)øøˆÄÕzE¥mìJÍUKu¥¡³Ÿ2»õúú’^S¦| ï©T×¥®ÀÇ“Þíš=èLåMÝ=ƒÅkòòÅÞ·ˆFÖW“ït,žlgn€D 5 ¨ÿâÅ!¿f´ì=eªQôXKâÓj}Ñ×Ja¬öïbÉüß„.»ý‘¿Žævu:AÓÔ¯tfF\}nB•1úÝ02èÞm‡à²9›3é“#Û +ç’§‡”2Ôaœõõ}YéˆE$oœ1ôq}½vŠó9¢íC?)NÞÅã±îVÈ{Ÿ&®4 ÿ±î}v„/.0ÕØÑ\¸Êw¼î>Þ4Ýûô*†ôÜcKeÓÝzë7ÌnelÍ˸yÁZ3‡ ›O+$íb¤]A”ÞÒMÙ''…¤}§ûOíÛkÎói¦ÙO·‡E¯eL<~[j¨Ðîc +ê‘+ ÜsRÂG^)+¡Ì³{ý †‡dæÝ6|àÎÕ9ìN/´Ã)â}wg¯ш¦þ,NöoàÃWÜ8·á«ØÊäΔd#ª({WZߢ»kMOÉY5}£ðÈÓAq1Ú2NxÛKb&’Mã;²#˜TZ¢k®®A<“x`‘ÙÊUD-"`"*(nL³ HVc„tÚ£^®"ø½z™y¦’]ÁC-f¬v˜7žå š'Msu¨gvööÒø"ðóá æ³~ÁæWÝ5Œÿ£#ì¨~Be¯’‚˜_Ø‘ãd¢!´ªHχ LOˆ€Xšµ2ÿ^~Q`èþ»#Qw§-…7@ÓúÁÎ5ù²¯F¿ø5©vvcþ6!‰Ýüó@õ#ij $é_ ?KuÿÅ¥Œž¢ÝŵP¬.:¶¥×º ãTîºHÇi›ó-çʳ+¿&J ¨!Ñ»S`ýp—­¬‡–GŠ |N:4Π؟¡ž”3OlP„Ô‘’•Z|}k] ^áÌIÑJ Åá»òð¿ôFÁHîkt ’Xç8Îüî“Fƒ'6 IÊ7=f6xý’39èyûù"U '¨mlÒ¦õPØgZ1kÅB6TXr`+)P”T8a¨oC€oìCEàzü¯`8>,î(ƒðY3¤EŒp}©ú]Ö7¼%……œ}Qhhž*%x¥¥VØß¹fF’¬B†ÆÝKÞ䥆Žö§q5´±m±‡T ¢s+rláU":zIry .¿ F_—–t jDVRÄå$ç# ×LL&×)-Ê!%ìjœHÙA´RËŽŠ†ÇÉId5Ó ¶Á"EÁßG^F=ä÷Þù2¨Ìâ Kªö øÍÜF/†«@n¯4ÄÞA!cdú¦ë±LvsVÕî&Ôò÷ÐóóÊÊDÉFa ’ýé fyõl)ï%-úx¿ cÀ•Ƙ°K•NŽ+¨•)"Ï㤔øOXä ¢-ÒµÑ/±jÒO>¨K¬õò8ÓÍÅ“B"?¯y›Q<šˆtábvM?f9^¤«{Ìh0ˆi1î ÞnãÇÔü/äTRvèûáÇ?²?ðæÎDúFbui}òé釻ß!-=+Dö†R¹‚ï3еêâ-Éôˆ£üo)-®ë!ÀÝ­9nBþ%Û”?בø ÞC'Nfî.ÿ‘(z$z@'µ·I™»³ûdw©ŒáÁšO?–vo½aè©?$t÷;,¼I š¤ÌCÛpÌU‚@ÚFò{ÐE‹WΚmëâ:ÕTo"v&Pj6Xm^½ÒÖ“±rXf܇oýd8×"Hù„´ýz–ŽMP®®í.ƒíÌPÕd­ mŸ-Äõå6Ã[Ä|ýâîé¥jwŃ†ÅŒ´¯‚xZz-±ÞÂÝí9 +o0ÚnïJ8Éœ jœø¡Öª¦ƒ^±îØjð.òo†"~4äN¹ô×;6ó¤c/:¢žì³= ü°ù˜D›ÈÉ&2Ç‹ÏB%#“Þ2oÀÂ>m­e ­J%KÈÆªMuéŒÀôkï£ß"3?êè{êF¨¢£€%á ‰eKèùÐÃг|‡´J¶í[Û % øfÑÇš#™áxeÑ5-1EŠƒXZbÔ1Q ['u“E8ãÌ:ü€Æy²Ýò1q>ß“Ïø5¸re÷¤©Ç~g^ÖßߌëE¸¦µ¸`Óx^ ûÑÁç”ã™ü黾,ûZmGRö¼–aíˆF ÇúŠ<Æ•¼æ*Â>“þùBbŽ'qP¬PëxŸ­ÂÁpVIiž8/Hv¥ü&{ÞÅÊQ”@óR Óïa"&Ó¯½«%¶ý¥£Ãdb-¥E•ý[ “‰Ü…[IÎw0]AýÜZÌÃC®­çÜæ¢P³A¡Ý»Éù˦Ýd“" "i¤¯"¹Ì{+\…"ª'slÙ5¥9~VÏû!âþ~H„°6.­BÙ¨ÄuÞ¸ä¸ÿë"¼Ôþ·úñ6 É÷NxPB0&Úõ_bÛÊfÆQ»Q÷kù‰ï·D«ËÖ±3t +D“I;Êáµ ›ß*O¼ºbaÑÓ¡£O^-ðÌuþ³38‡!¯^å ¯^q«Þy릹ˆ}&’rõÓ°~ Ç΀XGY±ã”Ø,â²™º‰æ™§}°âúæY¶ÿiÕ2„I¤À3ý®XÜdËf±bO”}þåOh‹%§ ö¹È-°¸Úƒ&]ì¥å”Ž¢jTà€@S•Ò&Á&WÙ!mSÓÞ†Ô¾}lÆ1‰O›…ʉץòÞš‰pÎ5ÝÕjGœ+Q¤€c–éÔKBr°D¡—ìÄ{ùp¦%» Ó‰ —ï"D «×)»g¤3ù9[ÑêóÄ”óG +£jóžä@¦™Í&Lþ”ÂìæH fm/ékGDq#pRî{:Z¨ôÚZñ_‹´­ð8ƒ•+g»÷ ®Å&K/­pþŠ,¨0>mCè|ÐÆVæ`Îq÷RE!í*¹?ÞE™9põŽŽö·ˆQF›æí| vl m :»©øš«*-SWÒƒ[>Œª1ÜMzÈŸ½Yäâ3R ëMzordplfő՞(!Åä°µw)[y¶Ö÷&ÜüÂÒv •rà/tÈðË:ÝLLÒ%4ÙÄ}/À¦îʯ—&€ÆáïΫíå‰ Íó‘;5w>ˆ/;ñ¿=ϧN‡0{bä™ñ~„ ©"AQPåMUÒ,µom$u²ÿtM{íIL¨ü$Ë+¶š}ÃV ’zaxÆZ˜úž¼+e‚G‹laŠê‡|ÅY˜7ž*.vWª¯ßt­¢6©|r$ùâ]Th PÑÄ‘3lß»b +&"6lDÊ3fBU‹ÓÓ˜þpÉã‚9lÇ +Ínâ“×Ôá BdN«w’”N±”Ÿ ²ú>§¬{§hùN¥ß9°1c+™Y˜1 +xêH”P“YýaëPº5:­yÑô¢Pì´ÕƒhŒ¤”aÚò4L•;Ôô5 »3=ÎúKl,?¿((KÉn^0žÖ* ˜³ÓUÀà$úKiÞ%,9N‘©¾|Aûß}ÞRàM.œÕþWgµ9ê\…ྻᮅÿ·›Ò{#Î?©\—T:eJ~tñ‹Ý“Ÿ¾Òƒ@Ú“4@ô -'=˜sàH‰l)¤Åé¿ë‰°]·b3ÇÑ=Ã6‡Õí_Ë? ¡ì³ï‡!èò/„æ CHµ­]õ/„.†!XQ(ò/„û†0¬Y˜ý…eB™rîø{ã…M5²Zè/„à†P6½è/á†À6ÅÈB¡# C]Ü4оȪm]þ¾00§Y@¾¿º Cˆ¬ïçÚwþBÈ_BðÓÞLè}êQObX*ž0ŠþÈm\êY/¬Çy‹.uÛ¦àxÓqo“ÔQO +’d×­åÑzÌMËÓ¦Rü'ªpª-r À‘≸¨âkÚ]üåIBºÔ…BB\ ¯E×”Ä\/0Ù=䘠òTòµPM…Ó«Q1¬aÏl,wÁSÅX¼0²š° +gp|9)üà’™¸®Ëûå“͘B’¦yö¦uÙÕ®ñ¤œ×6­Š§÷ª)ÎpZºñÿIMA£OI]ñÄTÀú²Ô˜9³õ“žÅŽ{Š®¦ë§@‡ïUÎ%Øa–ÉiÄF‹`ëÓCêѤõ˜%¤œH(QëK=v£dÆæì¬‡P‰=—¼j(cújö„õðHñ$4Ì»RÏÖüxÆŸ’ÄxÆ6 ¸«)i–K0èf×åž¾ÌBJõåP‰¤ 츂…S»:Ö(\A´…éS5XþÆ“©.qتàµc¥&Ç:/ƒŠjpkÑiö¹Ïcª†ÛE6Ïá[;Ž(P#è¤P~&ÏÕ@ñ %œ´–¨“ b’¦Ã0ñ {6ó Š„ê‹¸;¯ÿ>á…ènVâA2õÔâ R•œhâê¥LÎv&/šäG–%.Sýùƒ¡N|±:ï$\å©k¦ÙÞŸ¡þ®¡$}zÞºŸC½KT?ï6²‰žÄ’óöh¨êv’AÛ/|m`5”íÞ™cŸ,N’Q!̽8=¹ÀpÔa®X×êçqËë162ÍPX÷mHÅ*¬©€i'ÍQ<¶&¿Oúr¯f¶ÔÇa £©Æo'ÍE^ƺ‡E™¦?ÂídnÉÍ4Å7a“j÷n ³Ð§Ô•*¾Îúb1Æî«9¼ø1ÈÅ[cMÕ×LQž`YÒ–ºœw¥ZqL/?Æú±¯YÅŒ´`<Çg¢ÛÑßX3ýQrù©3ƪ›x4Vi,æÿT8 Gƒ‹aH÷ï©£[t>«~GXn‘ùDܳþ¤bßxaù8R/i<#ÅòbÞ>ˆ`XŽ³Û¾í;@·k×ct•¦¤Ø.~]án'¸KîPŠeþËè’šDÕË­ ¬ À@g‚°Ly|%MZ¬‡B Ë+O ’[þ¸tÙ¬"‚u¤ý#&ów0öèëá$ápåäñr9?™ðåN E°j«¯4'Ìʧþ›2`ÕÄŠÕ9½OÃemÿ(àÔ±ýòw¶Ì•11k–Ç‘ñºÍ_æ:h’ü£•v`Üü6ZT/°ò¦ÿÀg;\rµ-þÂG± +„²Të%œdÿ5®ša®—ƒb¢:åTóï  ¿0½s™Â²ÐG7Rwš1Ãß#Ÿ Þa*ÔRƒÉÒ‡¸ͼ’cGø¤ºÛIGHу w>;5>Ì®xX"É{Ô`‹Æ{®„ö–°t2€;–Ða‰‘Á#÷K%8g0;¹°ÔÁ_-=†U)N{WBã(,¡l̼ž$Å™0¯–Ø•p"XîÿJÅNM íJ˜º®C[ëAaç$v~ovT•«~’ò)E\åPÌ'¥ßE•`Ý4è€ãVôIH‡í¯3Î×k@‡ÂuEEJÈ-uÄx¢Ë\Ñ<–5êµ¢£¢«`õþ6( 8s0øI„¢K&qécÆ›‰KE%vÅ-!Œx±ù»òV<¢s¢Z/ç;g×IÆ®ÇÏùŒåˇ´Ýﯯ¤ ‡%Ä›X]„IK?‡ª©%¥„ôZI j]Q·±¼Ø9%{»õ(ßšÀÍËCÊö`.+\…íŒ\‰T±¯–ˆ¿Ìì®òÇX}tN˜pd¥ +Ûb±bxqlŒæÑ( åÙO +û¸*†By$´ GÈPœwbü+ñ¶[xa:!¹Ù΢ß:_´ZÁ1šÙ¡ÕQõ – ’Ciá…äô.á =Y‹a>*¾_á¢"u“ø”Å¡„Ñ$t\òã0Ïe‡ktDÑC|N§ŒÊ¡R†¨3âðthµQùìÅÙ[h‹Ðë€è!ûWB(uˆn—?úW¾Š!Sƒ¶)ëùÛ¥GijqéRQ2Éf‹Kã: íRˆ»ŒòT€5¾ö¼1‹¾­—÷0,awèÕËS•ìùñн¾ÜsbL4^LëålL.:ð¹ÛD*ÚÍ‹[i¼óO¡×É•`jN¤F ³Óõqk×Ðñ +kF/O ·M¯:Œ'i¼`rÇ7)DøHÚøe²úª¬1Œ÷:bfïC ÆB+o|¼2>ÏzÀ:Öê•R£ÀɪÈN(þÓᲉ@´Ágž–§t-, ¾%_Tö‡pjZ¸hS›tÆ®ø®ÅÜ’Ô›3†Ê’ŽÙè-U:ì3wl ýÄ‚ÈцâbŒ´‘lSLšñ=UÈ"ñ^Ô|Š`ô'~•Å¥B±w½DM&y…Uõ¨%€Ô»4X©.ºb½ xõ °ØõG`Ê*íû7m·ûRÀž¬u]S/µƒ¦ˆd‚KwJ’Pé¡£e¢(nã¨(­ÓRN?¦j9¿öV`§ùBbJô +“¤ñÀØi½CmÂ…k­ã´ˆ%õHåM¯)R~Ÿ.úòê?œò«2Ÿ|Œõ6q%ð® +ND ÔZ†X#˜]`«c¡QgUWOà&ÿe”ÚÜ“à#üüÀ*çE‚#øÚ$â +óIµå½¾\kíp4RóE£’ûåÛ@æÆ€"¶Ü¿ZÊ#å£d$×° ò~²$ ¹{—NÐU`¤îNJ¤0W@÷‰)ü ºl² ±ÍmYn‚.¬¨–£´Ós›Üeȉ-7|%q·˜—å@íEœJíšk3nËÕ’•»^§²\ü8xw…Ê>Zrˆ[Zùîì3ås‰k4ée£ÙÉ•&§‡ˆÅIkG)ã ù=•zSö ¹{€$fw ì£]bi0)Ÿµ«å³°Lg«Â¿»Ž/„¬ì·[’~W.3)7'ÿ +ú±&9í³~ cz)Zm˜×a'˜ÚœèñCý~Püz™é~};o:ÄA|ã5×ã°¥µ³wŽÑÖ»’ÓÅ,ºQ—8‹ö1Z™%²` Se}ð$—˜tJìGV^ø;õü5Z& ýÑuÀqú&¡ñŠž8_±Åü‘¬Ú,ˤázc¬T PG–z¶2¼ŠÜíU1qÌh¦7`'ONìÍUSl7~Óhsñ|îšnˆŽ§1äRBâBÎë] +_‰õ‹@£Z3‚«ß³‘"pƒ‡¥@¸z¦^“iÅ`?"²»Ü^“HJƒuT;R TØ'ÕuªñG –éD˜º!wHÔ#A¡ê5ëY°ë¢Î2ñ,„z×¢¢ß êQS4HÙ_u&H…:*sj«4Gàö:­ $Tú‰š~üM¿…ÊGÔí¤pêį'蘨PjgsA‰Ú´¾³BP½‚“ ©Pg_ßšRì,TæÂüÌSkI³¦É˜g6ª}_¨PEDT·ç‡Pñœ½Ò˸}ëë µ„¨5§/B}€çؔլzÐ}…]Û%Ô§z Ÿ±ç’·æHú®÷3}PÓiIï™#ivaU„Ú:(AŸ©‡ŒsÃK hdÈÌô\á¥ü®:Px±fJåþV=¿KÊÝLñÍ>N©P¨> ]V×”™¦ f>¸Ü?˜æ!xcú̸¥1Vˆº}æfŠÎõT—ž|Æ‘IV3@À›(÷3ȆèùÔ+OY +3>áÙPÀÕ“÷uéWwÀ‡r:†Æÿ”݃Âö H`=ÉV‡ËýL„Ù7®-d~ÊBæù÷áh·I+,ñxäR€`°“‹ì J'þ]ÝÉ)˜JnPž›Çlký¤}!Hóéuœæ[Î…"·¹ôFN²‘O‘‰zL&§ôýÑ+¥ž8tÓKr³ ?¼þ•ùüÆ¢¯©5¡ä fg@­Ìu¶?}uñOÝïq:ÃÏÁ®¦Ô?I1ÖŒeØ+ùeÇqªL¹t&~?Aê.uxZK$?ÝIQŸV™ + =Ùè[.Ñ3æÐ¶§›„ÓõNߵ +èИJ=ý@í⦧þé˜Ú}³i`í›äŒqA\ìû¹kx2[æÆY%]€8él˜m¸¥RNܯÌ7ø tÓm͵ގ ùKBSµ7P>É©Ó=Cemê¯LxÍGƒØd`"IÞ~ L*鲬ާӶè_•ö¡¸ ù¿F%#‹>Þ¯êÒf 9TE¡ç42GÄŠü[YiÞÊgÕæÄ "æ–àhžW»8j‰‹›ø«Š>àG°ãÌ`Ì*ú£'@¯Ë7 HÀ¼÷¤:%8«·sÈŽ$oå ªãvuÙ-Ríª¢ÙÌÑ„Píóñ¤…»@“ƒ¼IÖr[[ ד¬þâÄvŽÈÂH4õCЇF”Þtôg®= »˜Ò(˜ïêfùò)~xPe\HOøÝ.7üU“!0³}ÅXá? ám5ý²ËŒ­Äó?1l¥„‰-¬9¼r+‰`\´ìœpÒÚ” ˜Ø¯¨§oK„‚³\†ã »‰J•¯E ²rOÓ®E•3üp¸¡š:Dhšœ-çzN@êl´#a:EÛ"M·º±Î‡4œ•¹Ž _„öž—gDDËIõ¤C¡Rs) á"sfò¿ûð¡õ¹I ¢“8æïñû-–%¡ZbPõÖãC ;Nð²h5Ý…ö°t÷»í3»çƒ£’Ô@ +ƒœð¢QiŒ6Rß +;eòÇξ÷¨ù‚ûUm·zá‘›~s¾õ ¢FnÒ¹Q£î´‘ù~mÑò cÛ¼Š^P Jãø‚°­(Îñ-É|¢·¢CqËgœ˜( V´ó<ór1¨èT‘ò§~׉zËo#‰ÜL_ÐЬP~7lQÉž00 [—§ÿZ©Ñ×\ÿ…Þ¢/¥QæÜŸ´®!Y°hÕ£Ñ`Pj…_]Ô“µFÃ;4d ê!0ø?i …‹Eá֔G¢d~õ2 r¨¶hpù‰œÎ¼l4¥-œt ´¦ON鎅b ý¿´iCêý¡‰-§•ŸïWS48-­äˆ«é(pŠXœ&tÚá˜ê”‚S•:͹pÇ8ý†ÿa­i¶À© +ÆŒ)Î NÓ4wP(ë”ùÄiÔQÐI/NÕÉÏýžÚã”/ðûXmäNð:•z³FHÄ´ÌtYZ‡a‚"Å] ™‘‹ÔË@0!Í—;ÉWiJáKRw `î{ºUÃU/±oói©;u‘ÁÙ‘ÿß\øl¹ ¢C}m­×IÆ&#©ÐdN§x7Éüü ±ÜµÊ=¦B‘¨€¶-˜ ›p¬—²‡Óɾ%ëº>=wL~›î:L+ÒaàÛÉ2_¶0@ç̨v4n…#µJª"-Ç(²P§Š‹(•>g¡{Üß~?ï„¶™ª¸éLÕ?êYý¬žÿ Eª*ýuøëþây<Õ0’@aM¥Ãˆ9¨)õn‘èŠ]$Ãç«Ë;¥X×Y„…˜Ò¤p1ܼ- L5=,欤þu±º—!¹ASÀ,TÜß~¹ °êËMW%RõF+«W¯àòÐÝ&…s…x æ^ˆÓlªñéÏ´<šSì„ÚmàV¹•—6©áˆ¬‚íÖjp.‘eCy"…T”ÇI˜‡§&’/z‘Â: >1ÒƒŽ%‚Û±½—GN×Ô+^¡©Óp*#5mm®#a²©S´x?…ÐcN§°Ž“Bò$6ça}¢£RµJÛBÕç²ïŪîŸÎv¨@K"Œ$Tû..˜r³ +½P5\â[Z)T$´«’™¨¸ƒÜðüšU¯Äí¡^'inGôÄdzv4ËÇBŽEˆZœÝ¤}Í5d#6²§0OÞ]¶ï‰ +™}œÍæ¢^ºIZSä¥"·Ì–øÅ î}šj¸J…[’QµJSGy~͆ʎ? Å¿§·pÛ$-(J¬[âaªHÕh0mÄAnîÆ§2”·° äz3¸(¾‰5šŽV÷0Uênq®™;ô±Â7Dnœ±Ø“ÆD*œÿÆÐ©±xm7jNþîƒå•îÌ7¦§×üä/YÐ1«ý€Ë¢Ó .rü¥2ãˆM€ãÊÓL<ý–‰y^?ê{úéKS´«„àäîTå‚’ìu¹Ž-ãK*‡x™1Üä‡p×89„¢%þb@â²F¹—\ý¸vN›n,·ü®‘PFD£Ïd£@¥TlËÛR˦ÛÉ;l g×'±IOîÚX@äÇæh:3s:®Ÿç_—^e~nØŽ6;ÑvvtÓj°GÒ'–B…7ìbÒíèÚ% ¢IœO:“i¢wåÝfRTåY—ÖS"éØlŒXv©}ÎnÄ ÎB*ߣÝÇÊ%Ö"ãdD׳ïP˜¿*0L&­òãdiÀÉ .y :u‚F*k„ÿãRØ¡]ï©$bî2oX,ðßœJnŽf&Ùæ™`ð‚LÿLo!Ÿ=6JÇá‘» â ô^2b- $Ïï>éžÀPVpLl 6oï>uHfôE–@¿<ߣµU$´¥MèŸæ¥+Å{¢.ˆúEYÊö/K»Fj*ü/&ä!HÜt@°zÚ7IXäéK0#/‚èCƒkaÓ_o† ¥oºJð +#0’6/-ÐØÐ¨‘fÑñØòc²vwwï,zÐÃRŸ”¯KŇlц­X,xˆYú­Í 1ˆ’ÈÁ†)ˆæ2k%¹£Ê9gˆaÜýÿ+1—ä&®ä¸ØÝ–ÃVŽ ¤ W‡ª%›Æ(4›Yúp?¯ªwþ©È„¥.­;Ürž}«àFO«ÍTª:¾T-óÇ2Úèåt¢L&§­šB×ÊTxTÜ×jï˧¨ÓSœýŒÿæ0æT’–$sF‹9´b4·g'ÍÛî¯JWZ©ÚòÇ_Úw¯ 5«(íêÒÝ»¬×>/5É™–¦;\*ãâ–n*ijýHÑ›‰Evg›ýÛð'³Íu{R$Ô×¢‹ ˜ž975õé4ÔÛU›ÒnÊÙöo¨‡v÷ýò?=µöx»¤øú¾öuÖÿ7rI1±¨é(”ˆ•{cËIN!Ö„ñRÄ*\²¬«ï65ê4ÌKˆÝ–älÅn9JX ´sÒ¦ƒ³Û…ÍÞ?O}M<£ "& Ž ÇW^ÌçæO￟ìӫʹ8Ò;¢)«”m *†ê-¬J·|²OŸxà€†*?ˆ`(=ûâߤNƒ $„D〣Õ,Õ+yQU„ж³Å*éC„qÐ8 /¥[Ø&˜‡ŠŒKô.ùh§WVÆ@A6®%î’’Þx•fX®;ñgVifW +XXXXP8 ¦A„ˆŠ#á`âH4(NƒipÅ`&$΃ƒ‘@ð3Œ®ˆ\ÿi<Á›†mIM±!+{˜+v¹ÆcPÖÖÚÑÕ«ˆº·mäs£ð™PÙ=Z^då•\I’ÃÉÑ0–tç£ïU™‡z¶1n¶Grœœ(ý”£Ü‚èaÅ()ôϼŸïx&5ZpsF­ÛW¦.½šì:R»»TM3ìºfwŠPÃe>J„å¨cÛ¢š‘!)I’ÒSh@¨ DZ4Ç«€ÀÃCãSY ‚ˆ N1Â0ƒ0‚c aNA©¦XȺ8è¡ë_]Ò¡ Òw-¼† d@iDÃ4ûÄmM±ÄÂc¿]†E& ¯ýR±žXúemÒ°Fm(ÏÂXHèÀ[jgÚl ÅZâ…@©ñŽ»Ñr=[6­wˆ´¥Æ¾š«nT„Ù´ OÙÔHÅZØÐp%J §õ`u¯+ÓÇp/ኮ‡öÙϤ´ñj°’“W»(÷YûP~¼•¬Üi|/¹åÉVMgb4ò>áZÝŠ7B –•¸³… Ñ« +±ïn‰e¥(º~~ö¸}·›ÊâNGB´±m@7/Wyf*êäÓÈ8[wÍÑK»‹fJ_cp?ó;ñ\áJ9æ¾ÊzL6ÂC4|ÁgÊÇk.š¹û„(Eõ 5Ëß~¬¹ÑÏ"pCF •û;9—kf«P$šþ¬^a…XeD_T)z ++áÅð_ý»ƒAÝ<Ä~Õ2ΕÞår?¤åXðšÊ£Á‡çÛk3EPN"ÜiËB‡£*,úÃ4õ¹ÑòÊ#ÆØ­‹Üx<ïqN œ‰¼#Fñ)ýÜF2‰òý> >¿[òsÆXéM˜é› ¨©þÆ»œð5©PB{æ%%I®Âø´4”NFhOT̽þ…wNœ1’¢¬f×g–¤YsHïýfQŽÐ¤u^sž¶vÎA‹Òî¥Dž ¦ +­ÕËÏ’Úù˜¼¨6Râ¼4?DIº‘Â+Òke]åô’n;ƒ\ý 8çéuLŠ’RÅs„õ:4›%¥mt …EY›bj=ZI)‡òy¤LìpÈ:éMp´ÙIz¹Rr®r]v^º,%é÷9ÁäÿPíâ£z½?•½R"—ŠÅŸÐBûüÁ"whåÎ!S”õÏÔbÚ?tÀu.Ên Qm_ô‰i§ÿHý<º™¢ìo»¼²)õ;¤<@)i&?. $µ¤azñ7=W6JX™Û¤ÔêÙ¦&rr$4ÐßÅXíWé΄PE,Î+‘E­ ºX„U‚* â9-Fª¹„s`e1QÕð\Ð)‹Ã\ÓV}öÖš—¾Yt÷ƒoæ‚oèz`33³O¿ÕªÛW$šõEðM&qÌ’ë¥Ç9ÝÅ£wÄ$;þ=Ú’ö&ö¦ÞzpÞ;b5¤ûíÜ¥÷»ÿº»ŽÛR§dõ•þl3ºtúd¹Q…ÆæNIž’^î…‘O!{ìÀ C,½OKìõÏœ¹%Vô‚íËc&x¡¸Ë¢òkb¿NUó|,ÑWPè¢Ñöu{‹‚éDÍ-¶y;=¿DXØ`wŒØwCâŠV {—Þ“_Ò5D…¨º™î-n2x'D}¬¹¸ÓLSùó§ÓL\?;ø’¢þP õrø@`GJÓE dT¤øÝ@衉Q¬Qœ¦Ó‹—ï +$"3%Í™mì°›{˜Ž <ét䤴ü 0‘³YocÒ‚ÏÈ9 +ÍsòÀ`´’fÖ@ƒšÃös HFæCMQÄz×~3V‹°ó=LÒ­Ò}Fü¨…]÷„UòËPkMOÈÚcÍr§ªwƒf|O:xú›PðZÊÈš\‚g¿ÏL`5˜ Â]®„0º&³Gͽ×)|5½½\÷ÊÊü#–ds…aEõ šœà…¦j–0&ȤÎM'‹ú¦é‚Fì€8ï”I6~‹¼Ó4ȦfKVÓËîô¢›©qçÆ2ß:XLagˆÔ„ɦӵ…LõÕoˆÌ|«d•Ôð¾Nì{üPcÓ‚lJØByÃøI›±)ƒv1@¦³õ"ñ—šBhSø=nÛC2™õóùͨè3¼—r;ÝI#ÓźøHàš¤«µFÄ}3 ¥{.±-€ËÈË ¥ðþbÂé:¢ô¼GW{®£Q|šîÔ]‡g*WmPð:kÍïä[8pkLÂ%Ád hKÄ0\D›ø)‡½iï$£Éi Ï]gRž ™÷è\< Œ0®ñSðDvq}Pfàû†uº7£*i£A‹’ÊÚÔ8þëP‘WDœ‘{íeás×1Áùkci]·Su}Ç[kßÛ&Éwáºþæu©|„-oº,äpk ió4ª Ñ#m^]«TÇóжw¹š½ÉÝt?„çS€dµ,ÝZYl Àrð2@hèñßrû)~¡ÇM{’ðʛê¦)ÉYtöÅqHþg>Te£ÖÐB'c‘¶­1¡«^æŠn™žƒ¤6ÐÌ'çVu@ÌÛp¤¯¹—¬êè–c%‹ž¥ÜiÖSzd*xÞ¸†ézÎCÑåˆ÷BäíhˆcÖÿmïj|\;\2Y°0ÞäuJh’ia›Ìdlbós·"ÒXÅã†çº¡2š?Ê×ÄÝ ”2ŸJ·¦£Df`ð‚àØh xÉ°Ãæî®|ŠßÛ<—ڱ㠟äÞä\FpnªÅ2äJŠæ„X5ñ×ìC80Ø ±v\Ädá þ6‘Iðø 9²veÑBE¹©TeU5K_;Ç#ͰEÈÇBèõW8ïà>0‚å±nÃ3œÁ³#ð +©$4Hü» ¹pÙÙ±ÐqÏ,åxÙ¤0Mäí„ë <‰À)ò˜%Ï ¶ÅÁ#÷ +w#y-þoÒbóƒâÝd\ÖY£Pdìv±º.qÿ$ÇJ¤ ïŠÓò iµ^v=øY”É•Dw”¢¬Bá¨ØQ3`2v^¨r æIŽ—m‹,£Gy5£šíeKÔÌÏBùË¢£f¦Sî–$-Ñ(j&¨Li!ÚQ3àãéeÉ?*jfÜò÷²ïcÕ5×'`'ÕѨû§5èe ¨>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream -H‰|SmPSg¾—po ²i%^sí½·êìê•–OËÒ‚|ˆ¦QÁÁ%(Q ˜PkWk!·¶D@QP¡Êò¡«°0Ò.Rˆ‚® -le¶ÌØö\|™Ù½aÿì¯ýóÌyΙóœsÞs^svÂp_)‰Ü·ëÝØ:R¯ÓnÚ£>œ®Ô9‚,Oã¼§3¿ÆB›‘åõë×1<|ž®l^C.¸cN8>6®Ír§¸Í[¼è·Œþ^Ü__ßeôãv¨´)jN~BoPg蹨ÌT­.K«SÔ*onGz:·,¡çtj½Z—ãpþ·#N£çÔCšZÇ)…àa¯S«8ƒN©Rg(uG9­#ò?ôÐÿ)Åi29A‹SdjLnœzN™©òT´ËURµÙ™F­÷öùPþñ‰,5À©Ô‡0 ÇVºbë0ì= ‹Ã°xS`ØJá ±XÌŠÝÃþ«ðZ'ÜÉàT*ò™EÎŒs©ó(Nœ]WÜÆÏ·á®o;ó…‹ñK…$XP7…Bá<s$âP²ô…x‰<¸lC(8É·S 9˜$ï_÷¿e‡Kv”/n¤ç&ä†2YtÔ<‰V€”†õ cº $èmö󨙦µÈ%¯Ý¼ï%lƒˆÎ޲’Ë9|ßDq®;ä½Þ†<‹L)Dk·_ŒâÂLJŠm¼Õ†oñÉ6t×,n¿OÀÛà95n²¹ø—ˆ ‹Öª25±DõõÖëéù›qQlÑÆ0„¶|é©Kò†àË~P ¹ÃÔtÔŒt®¹ŽÊ¹Ùk°Ñà;>ójfgOpkKžÕ6v ÈÆv UQ:†©Š&*kÚªÚéñº¤}¡AG¢ÙĨVR:÷bBåkb¦´pDÐq»«+tŽa b†_àåÓ y.â×{@ÄÌ /¿ÁKŒZ–¶»áŠ# Qf1l…c—®WÔT6¬¶FM‘F#CË6<ÿÇ8,N‹øˆE†B½¤õ–+µ%·iðèÜåobý~¯ˆß[Y‘ÅdG¹7zr‡hxgáN(;÷ײWRJhý§Fã)¶‚ 0‘ÂΠ»|Gðú)¨¤ý7PŸdcóÃ(öºDG'ý­’¡m3èqpa•AÏ‘8\¡IIg -Éò_l ÀTU—T™.¹ ¯¥Ê'qì#[QráO_1÷®´ÖuÐãroïý1Û——û؆wñÞ¢.aŽ`È(F_/ 3$Ü⧉naÚ^¾ùïî·¿ßùôÿØ9-†óy¼5?ÄXBWÐMÖ"–Ž>k¸öðlÎëçßèǦáÞ÷"¸ÁŸ¡ì/ô>Ú´ð.ü\á­§ðlØ´€XÖE½jZˆð˜ÿ÷âžý<{÷å+V’†"r`× /úÎÑüܲKçm(‘š‚ -3y ¶SÛKùó$|¿Ýú/ä²'-þ0k$¥ãωÒœdNˆ•M%QVËK)#ï¿ØÙÒCÏý-àwH¤Øî³·ù›OXc©ÑzA&AWó‡ð¹IÑ?O!—°È'è¢xÏ—ÉÕÇýåº?6Ñõ×Î}q‘-è' -óNèÄ“õ=,”ûrV,9må[ÁÛjµ^±’èuÔ*f.§üÁ͵ØmÅÀöö·_ñ_­â¨ÿÿÿÿÿµ€[j endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 19 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 18 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <>stream +H‰|SmPSg¾—po ²i%^sí½·êtu‹€J˧ˆ²´ ¢iTpp $J&ÔÚÆZ$Á­-ÐÁ" +*TY>tF@ÚåC +QÁB‘­Ì–Ûž‹/3»7ìŸýµž9Ï9sžsÎ{΋cÎNŽã+c·ïU$F¼{\§QªâuÚ »Õ‡²Ó•:Gåiœ÷tæW¹Qh#²¼~ý:†€o“åÍ«ÈywÌ ÇÇ^„k³„ÜCinc`à&/ú-¡¿·É××w ý¸m*mŠš“×Ôz.*3U«ËÒꔵʛۖžÎ-Iè9Z¯Öå8œÿíˆÓè9µÆ¦ÖqJ!xH#äëÔ*ΠSªÔJÝNëˆü=øJqšLNÐ♓§žSfª|íR•Tmv¦A§Që½}>”|Ì¡MFz*Ä’¼!ø²TCî055#m®£rnôl4øŽÏ¼šÙÑ\ÁšÅÒù§µ]²±]#hED”N§aª¢‰Êš¶ªvz¼.iohÐáh61ª•”Î>ŸPùšX…)-tÜ®ê +cˆ„áçxù4hž‰øµ13è˯ó£–ÅÍÄ.¸"ÄHE”Y ›áèÅk5• +-¤QS¤ÑÈPÆR£ Áÿ Ó">b¡P/©D}„årmÉ-<:wú›X¿?(â÷TVd1Ù‘DîõžÜ!Þ™ÿ¤ÊÎ}µìåÔ„ÒZÿ©Ñx’­†`L¤°3èîß¼~ +ªi¿…uÔ'ÙEGÙÀüðÊ=.ÑÑIï¢2´eaÀ=N ¬2è‡+4)éL!Yþ«m˜ªê’*ÓÅ"äµXCù$Žýjd+JÎÿù+æîåÖºz¼Cîí½/fëÒrÙð.Þ[Ô%̱†ŒbôÍâ01CÂM~šè¦íå›ÿî~ë‡Ï@ÿÓÒi8—GÁ[s#@Œ%tÝ`-béèÓ†«îËÆcÆ;"ý"Öʯˇ5Œ©Nkwʼ&‚`cû-ìwMm#_3vÝ}uˆ,r_b#5ñÍÔØuÅÞøäTù16¬2ñ›>Ygã=#É AÐ:€7MAÙ´èe>u©¨Ætãì÷篵µºô~wï'X#ƒ @ÀÐJ´rÂЛHôx3¸öµ_¹}“±§BÓw'«¦íÏÙ÷YFa¶ñ˜ÙüøZêEÓHôiaþç§Y•!)3žÞšØ5þ¢£ÿ1+‰=óÊúA?à>2ÙöÈR~ÄLÔþµ ‡–þ N#•-wÙúºªÛݲŸÂ:¢+á4ù¡+-]}²ŽœÆ´+L½R^îGÇíëoL×™,'X 'ìcN8¬dáÓ&{Øù9Hy´X° ”¤N±àá¼\wÛ$dLBú¤tÜæ1 wÈrsùÙóÌí²ÆÛ÷ézy(‹Z&¡]\a©(±2-å¹ÕFÕ˽YtuÄâÕtäTv&“{òXÎÉ,#Ù•“ÐEHNÊb IikÁ"”´¤šRd’óúù7úñ†i¸ûƒ®ó§)${Ç }€6Ì¿¿Wxë |ë6Ì#–5FQ¯šÖ"<&Äÿý¸§¿¼¸óò+IC9°s}ïh~ +nÚ¥s6”HMA…™Ü_Û©í¥üe¶Ãï6ÿ ¹†ìN‹?ÄIéxÁ3"„4'™beSI”ÕrÞRÊHçú/t¶ôг ø=)¶zÇìiþöÖXj´ž—IЕüa€|vR4ËÏQÈ%,ò1º ÞýerõQF©îOMtýÕ³_\` ú‰Â¼…:ñD} eà>€ÜKNYùcVð¶Z­—­$:hµŠ™K)ts-v[6ð†}™½Äí7üW+øyê?ÿÿÿÿØÏ[o endstream endobj 22 0 obj <> endobj 20 0 obj [19 0 R] endobj 30 0 obj <> endobj xref 0 31 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000019014 00000 n +0000020704 00000 n 0000000000 00000 f -0000019065 00000 n +0000020755 00000 n 0000000000 00000 f 0000000000 00000 f -0000022128 00000 n -0000022200 00000 n -0000022340 00000 n -0000023939 00000 n +0000023735 00000 n +0000023807 00000 n +0000023947 00000 n +0000025570 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000073499 00000 n -0000073315 00000 n -0000076083 00000 n -0000019477 00000 n -0000075970 00000 n -0000021626 00000 n -0000072741 00000 n -0000072789 00000 n -0000073383 00000 n -0000073414 00000 n -0000073829 00000 n -0000074161 00000 n -0000076108 00000 n -trailer <]>> startxref 76297 %%EOF \ No newline at end of file +0000085142 00000 n +0000084958 00000 n +0000087726 00000 n +0000021167 00000 n +0000087613 00000 n +0000023208 00000 n +0000084384 00000 n +0000084432 00000 n +0000085026 00000 n +0000085057 00000 n +0000085472 00000 n +0000085804 00000 n +0000087751 00000 n +trailer <<3C51EB0921F149FFAB3B407BB58EE666>]>> startxref 87940 %%EOF \ No newline at end of file From fe72e7be47caf03ae826b1ce4da8ad929b4fba94 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 14 Jun 2024 12:10:00 -0500 Subject: [PATCH 085/357] Removed option for multiple extra mods --- CageUI/resources/web/CageUI/static/legend.svg | 101 +---------- CageUI/src/client/cageui.scss | 10 ++ .../components/CageDetailsModifications.tsx | 68 +++---- .../src/client/components/ModificationRow.tsx | 121 ++++--------- CageUI/src/client/components/RoomDisplay.tsx | 3 - CageUI/src/client/components/RoomLayout.tsx | 2 +- CageUI/src/client/components/helpers.ts | 170 +++++------------- CageUI/src/client/components/typings.ts | 45 +++-- 8 files changed, 134 insertions(+), 386 deletions(-) diff --git a/CageUI/resources/web/CageUI/static/legend.svg b/CageUI/resources/web/CageUI/static/legend.svg index ac92c9a88..75c0fb5f3 100644 --- a/CageUI/resources/web/CageUI/static/legend.svg +++ b/CageUI/resources/web/CageUI/static/legend.svg @@ -1,100 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Solid Divider - - - Protected Contact Divider - - - Visual Contact Divider - - - Privacy Divider - - - Standard Floor - - - Mesh Floor - - - Mesh Floor x2 - - - Play Cage - - - Extension - - - C-Tunnel - - - - - - - \ No newline at end of file +Solid DividerProtected Contact DividerVisual Contact DividerPrivacy DividerStandard FloorMesh FloorMesh Floor x2Play CageExtensionC-Tunnel \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index dbfed7ab8..664721c7f 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -281,4 +281,14 @@ .legend-header { margin-bottom: 20px; +} + +.new-mod-row-btn { + font-size: 40px; + background-color: transparent; + background-repeat: no-repeat; + border: none; + cursor: pointer; + overflow: hidden; + outline: none; } \ No newline at end of file diff --git a/CageUI/src/client/components/CageDetailsModifications.tsx b/CageUI/src/client/components/CageDetailsModifications.tsx index 1dce4b988..e1bcd5f53 100644 --- a/CageUI/src/client/components/CageDetailsModifications.tsx +++ b/CageUI/src/client/components/CageDetailsModifications.tsx @@ -1,70 +1,43 @@ import * as React from 'react'; import { FC, useEffect, useState } from 'react'; -import { findAffCages, findDetails, getModOptions } from './helpers'; +import { findAffCages, getModOptions } from './helpers'; import { ModificationRow } from './ModificationRow'; import { useCurrentContext } from './ContextManager'; -import {ConfirmationPopup} from './ConfirmationPopup'; -import { Cage } from './typings'; +import { ConfirmationPopup } from './ConfirmationPopup'; interface CageDetailsModificationsProps { closeDetails: () => void; } export const CageDetailsModifications: FC = (props) => { const {closeDetails} = props; - const {saveMod, setRoom, clickedRack, clickedCagePartners, setIsEditing, isEditing, modRows, setModRows, cageDetails} = useCurrentContext(); + const {saveMod, setIsEditing, modRows, setModRows, cageDetails} = useCurrentContext(); const [isPopupOpen, setIsPopupOpen] = useState(false); - useEffect(() => { - console.log("I Render"); - }, []); // Toggles editing mode for cage mods const editMode = () => { - console.log("Add Mod"); setIsEditing(prevState => !prevState); } - useEffect(() => { - console.log("Load Details: ", cageDetails); + const newModRows = []; cageDetails.forEach((cage) => { - const newModRows = Object.keys(cage.cageState).map((key, idx) => { + const tempModRows = Object.keys(cage.cageState).map((key, idx) => { const modOptions = getModOptions(key); - if (Array.isArray(cage.cageState[key])) { // finds extra mods - return( - cage.cageState[key].map((mod, idx) => { - if (mod.name === "") return; - return( - - ); - })); - } else { // finds separators - return( - - ); - } + return( + + ); }); - setModRows(() => [...newModRows]); - }) - }, [cageDetails]); - - useEffect(() => { - console.log("MR: ", modRows); - }, [modRows]); + newModRows.push(...tempModRows); + }); + setModRows(() => [...newModRows]); + }, [cageDetails]); return (
@@ -78,7 +51,7 @@ export const CageDetailsModifications: FC = (prop

Modifications

diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index f98afec86..611631314 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -12,7 +12,7 @@ import { Cage, CageActionProps, CageNumber, DEFAULT_CAGE_TYPE, EHRCage, - GroupId, + GroupId, jsonDataType, LayoutDragProps, LayoutHistoryData, LocationCoords, @@ -29,6 +29,8 @@ import { import * as React from 'react'; import { testCagesInRoom } from '../layoutEditor/testData'; import { zoomTransform } from 'd3'; +import { SaveRowsOptions } from '@labkey/api/dist/labkey/query/Rows'; +import { ActionURL, Query } from '@labkey/api'; export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { layoutSvg.append("g").attr("class", "grid"); @@ -657,7 +659,6 @@ export const buildNewLocs = (prevRoomData: LayoutHistoryData[]): UnitLocations = cellY: roomItem.y_coord }); }) - return newUnitLocs; } @@ -817,7 +818,18 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection { + return new Promise((resolve, reject) => { + let options: SaveRowsOptions = { + commands: jsonData.commands, + containerPath: ActionURL.getContainer(), + success: (data) => {resolve(data)}, + failure: (data) => {reject(data)}, + }; + Query.saveRows(options); + }); +}; \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 5301f0740..c240610a8 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -1,5 +1,6 @@ import * as d3 from 'd3'; import * as React from 'react'; +import { Command } from '@labkey/api/dist/labkey/query/Rows'; type CageSize = { width: number; @@ -42,6 +43,10 @@ export interface LayoutHistoryData { x_coord: number; y_coord: number; scale: number; + start_date?: Date; + end_date?: Date; + room?: string; + rowid?: number; } export interface Page { @@ -519,3 +524,7 @@ export const DefaultCageState = { }, } } + +export interface jsonDataType { + commands: Array; +} \ No newline at end of file diff --git a/CageUI/src/client/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/layoutEditor/LayoutEditor.tsx index 86066c519..1468319ae 100644 --- a/CageUI/src/client/layoutEditor/LayoutEditor.tsx +++ b/CageUI/src/client/layoutEditor/LayoutEditor.tsx @@ -32,7 +32,7 @@ export const LayoutEditor: FC = (props) => { const prevRoomConfig: SelectRowsOptions = { schemaName: 'wnprc', queryName: 'layout_history', - columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale'], + columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid'], filterArray: [ Filter.create('room', roomName, Filter.Types.EQUALS), Filter.create('end_date', null, Filter.Types.ISBLANK) diff --git a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml index deaa67e30..25ca1ee7d 100644 --- a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml +++ b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml @@ -4,7 +4,9 @@ Layout History - + + true + From 57b0fda64aa05022ecaeff8f9ad13e4898e1c0d3 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 21 Nov 2024 10:42:36 -0600 Subject: [PATCH 144/357] remove unused types/functions --- .../src/client/components/ContextManager.tsx | 27 +---- .../client/components/LayoutEditorHelpers.ts | 101 +++--------------- CageUI/src/client/components/typings.ts | 4 - 3 files changed, 16 insertions(+), 116 deletions(-) diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index 1f416d7e6..5a269f28a 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -5,7 +5,7 @@ import { CageNumber, DEFAULT_CAGE_TYPE, DEFAULT_PEN_TYPE, - GroupId, jsonDataType, + GroupId, LayoutHistoryData, LocationCoords, Page, PrevRoom, @@ -34,7 +34,7 @@ import { findNextGroupId, findRackInGroup, findSelectObjRack, - isRack, saveRowsDirect + isRack, } from './LayoutEditorHelpers'; import { BaseType } from 'd3'; import { Query } from '@labkey/api'; @@ -744,29 +744,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo } }); - - - /* - const jsonData: jsonDataType = { - commands: [{ - command: 'insertWithKeys', - schemaName: 'wnprc', - queryName: 'layout_history', - rows: dataToSave - },{ - command: 'update', - schemaName: 'wnprc', - queryName: 'layout_history', - rows: dataToSave - }] - } - - saveRowsDirect(jsonData).then((data) => { - - }).catch((err) => { - console.log("Error Saving Rows"); - })*/ - //Query.saveRows() } } diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index 611631314..99111d467 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -1,36 +1,36 @@ // Layout Editor Helpers import * as d3 from 'd3'; import { - convertCageNumToNum, - getTranslation, getTypeClassFromElement, + getTranslation, + getTypeClassFromElement, isTextEditable, parseGroupId, - parseRack, parseRoomItemNum, + parseRack, + parseRoomItemNum, parseRoomItemType } from './helpers'; import { Cage, - CageActionProps, CageNumber, DEFAULT_CAGE_TYPE, - EHRCage, - GroupId, jsonDataType, + CageActionProps, + CageNumber, + DEFAULT_CAGE_TYPE, + GroupId, LayoutDragProps, LayoutHistoryData, LocationCoords, - OffsetProps, PrevRoom, + OffsetProps, + PrevRoom, Rack, - RackActions, RackGroup, - RackTypes, Room, - RoomItem, - RoomItemClass, + RackActions, + RackGroup, + RackTypes, + Room, RoomObject, RoomObjectTypes, StartDragProps, UnitLocations } from './typings'; import * as React from 'react'; -import { testCagesInRoom } from '../layoutEditor/testData'; import { zoomTransform } from 'd3'; -import { SaveRowsOptions } from '@labkey/api/dist/labkey/query/Rows'; -import { ActionURL, Query } from '@labkey/api'; export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { layoutSvg.append("g").attr("class", "grid"); @@ -153,35 +153,6 @@ function resetNodeTranslationsWithZoom(targetNode, draggedNode, layoutSvg) { draggedNode.setAttribute("transform", `translate(${distanceX}, ${distanceY})`); } -function findNestedCageElement(parentId) { - // Find the parent element (in this case, the outermost element) - const parentElement = document.getElementById(parentId); - - if (!parentElement) { - console.error('Parent element not found'); - return null; - } - - // Use a recursive function to search through all nested elements - function searchNestedElements(element) { - // Check if the current element's ID starts with 'cage-' - if (element.id && element.id.startsWith('cage-')) { - return element; - } - - // If not found, search through child elements - for (let child of element.children) { - const result = searchNestedElements(child); - if (result) return result; - } - - return null; - } - - // Start the search from the parent element - return searchNestedElements(parentElement); -} - export function setupEditCageEvent( element: SVGTextElement, setClickedCage: (cageId: string) => void, @@ -233,12 +204,6 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack } = layoutDragProps; console.log("Performing Merge"); - //console.log("Racks: ", targetRack, draggedRack); - //console.log("Cages: ", targetCage, draggedCage); - - // Start cage count at the first cage in the target shape - // TODO fix this so that it matches correct types while maintaining their correct numbering system - //let newCageNums = convertCageNumToNum(targetRack.cages.find(cage => cage.id === 1).cageNum); function isConnected(selectionNode){ return !!selectionNode.closest(`[id*='group']`); @@ -528,32 +493,6 @@ export function createEndDragInLayout(props: LayoutDragProps) { console.log("#3: ", cellX, cellY, shape.node()); moveItem(shape.attr('id'), itemClass, cellX, cellY, transform.k); - - // Set rack state correctly with move/updated coords - - - /* - //Update all shape placements - if(shape.selectChildren().size() > 1) { - //group of groups - shape.selectChildren().each(function (d, index) { - const currChild = d3.select(this); - const cageNum = parseCage(currChild.attr('id')); - if(index === 0){ // When in a rack, only the cage at index 0 can snap to other cages - setCurrCage(cageNum); - } - const currCoords = getTranslation(currChild.attr('transform')); - const newX = currCoords.x + cellX; - const newY = currCoords.y + cellY; - moveCage(cageNum, newX, newY, transform.k); - }); - }else{ - // group of svg - const currCage = shape.select( '[id*="cage-"]'); - const cageNum = parseCage(currCage.attr('id')); - setCurrCage(cageNum); - moveCage(cageNum, cellX, cellY, transform.k); - }*/ } else { // remove rack from room /*console.log("deleting cage from room", getRackFromClass(shape.attr('class'))); @@ -821,15 +760,3 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection { - return new Promise((resolve, reject) => { - let options: SaveRowsOptions = { - commands: jsonData.commands, - containerPath: ActionURL.getContainer(), - success: (data) => {resolve(data)}, - failure: (data) => {reject(data)}, - }; - Query.saveRows(options); - }); -}; \ No newline at end of file diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index c240610a8..0e5e47acd 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -523,8 +523,4 @@ export const DefaultCageState = { } }, } -} - -export interface jsonDataType { - commands: Array; } \ No newline at end of file From 579774aea62ca71a2935f42078f98d58a6b5e547 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 21 Nov 2024 11:31:19 -0600 Subject: [PATCH 145/357] Fixed bug with racks and grouped racks not being hard locked to the grid when dragging and zooming the grid --- CageUI/src/client/components/Editor.tsx | 2 +- CageUI/src/client/components/LayoutEditorHelpers.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CageUI/src/client/components/Editor.tsx b/CageUI/src/client/components/Editor.tsx index 916bb433d..e6651a3ed 100644 --- a/CageUI/src/client/components/Editor.tsx +++ b/CageUI/src/client/components/Editor.tsx @@ -423,7 +423,7 @@ const Editor = () => { const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); // Apply zoom/pan to each individual "room-object" group, preserving their relative positions - layoutSvg.selectAll(".room-obj").each(function(d: any) { + layoutSvg.selectAll(".draggable").each(function(d: any) { const group = d3.select(this); // Use type assertion to tell TypeScript that d has x and y properties const newX = transform.applyX((d as { x: number }).x); diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index 99111d467..a2a96c407 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -309,11 +309,7 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack newGroup.attr('style', styleAttr); } - //Attach data from target to new shape - const targetData = targetRackShape.datum() as { x: number; y: number }; - if(targetData) { - newGroup.data([{x: targetData.x, y: targetData.y}]) - } + } else{ // action = connect @@ -356,6 +352,11 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack newGroup.attr('transform', transformAttr); } + //Attach data from target to new shape + const targetData = targetRackShape.datum() as { x: number; y: number }; + if(targetData) { + newGroup.data([{x: targetData.x, y: targetData.y}]) + } const addProps: LayoutDragProps = { gridSize: gridSize, From 95de13a79e5e59f10e7d0e41b8cbc410ed8b3760 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Tue, 26 Nov 2024 14:33:39 -0600 Subject: [PATCH 146/357] Added the ability to delete cages from the layout editor --- CageUI/src/client/cageui.scss | 8 +- .../src/client/components/ContextManager.tsx | 143 +++++++--- CageUI/src/client/components/Editor.tsx | 244 ++++++++++-------- .../client/components/EditorContextMenu.tsx | 22 +- .../client/components/LayoutEditorHelpers.ts | 156 ++++++----- .../src/client/components/LayoutTooltip.tsx | 9 +- CageUI/src/client/components/RackTemplate.tsx | 28 -- .../client/components/RoomItemTemplate.tsx | 27 ++ CageUI/src/client/components/helpers.ts | 9 +- CageUI/src/client/components/typings.ts | 36 +-- .../src/client/layoutEditor/LayoutEditor.tsx | 3 +- CageUI/src/client/layoutEditor/testData.ts | 208 --------------- WNPRC_EHR/resources/data/lookup_sets.tsv | 4 +- .../queries/wnprc/layout_history.query.xml | 1 + .../postgresql/wnprc-22.010-22.011.sql | 75 +++++- WNPRC_EHR/resources/schemas/wnprc.xml | 13 +- 16 files changed, 494 insertions(+), 492 deletions(-) delete mode 100644 CageUI/src/client/components/RackTemplate.tsx create mode 100644 CageUI/src/client/components/RoomItemTemplate.tsx delete mode 100644 CageUI/src/client/layoutEditor/testData.ts diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index 94f5eebf8..f2845eb38 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -146,7 +146,7 @@ .popup-overlay { display: block; /* Hidden by default */ position: fixed; /* Stay in place */ - z-index: 1; /* Sit on top */ + z-index: 2; /* Sit on top */ padding-top: 100px; /* Location of the box */ left: 0; top: 0; @@ -837,6 +837,8 @@ menu { background-color: white; font-weight: normal; white-space: nowrap; + min-width: max-content; + z-index: 1; } menu:hover { @@ -848,12 +850,12 @@ menu:hover > menu { display: block; } -menu > menu { +menu .menu-item { display: none; position: relative; top: -20px; left: 100%; - width: 55px; + width: 100%; } menu[title]:before { diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index 5a269f28a..a8c9e696b 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -4,7 +4,7 @@ import { Cage, CageNumber, DEFAULT_CAGE_TYPE, - DEFAULT_PEN_TYPE, + DEFAULT_PEN_TYPE, DeleteActions, GroupId, LayoutHistoryData, LocationCoords, @@ -13,21 +13,20 @@ import { RackActions, RackGroup, RackTypes, Room, - RoomItem, - RoomItemClass, + RoomItem, RoomItemClass, + RoomItemType, RoomObject, RoomObjectTypes, UnitLocations } from './typings'; import { convertCageNumToNum, - getTranslation, parseGroupId, + getTranslation, parseLongId, parseRoomItemNum, parseRoomItemType, - removeCircularReferences + removeCircularReferences, zeroPadName } from './helpers'; import * as d3 from 'd3'; -import { testCagesInRoom, testLayoutHistory, testRoomObj } from '../layoutEditor/testData'; import { addPrevRoomSvgs, buildNewLocalRoom, buildNewLocs, @@ -36,9 +35,7 @@ import { findSelectObjRack, isRack, } from './LayoutEditorHelpers'; -import { BaseType } from 'd3'; import { Query } from '@labkey/api'; -import { SaveRowsOptions, SaveRowsResponse } from '@labkey/api/dist/labkey/query/Rows'; import { ExtendedXMLHttpRequest } from '@labkey/api/dist/labkey/Utils'; import { RequestOptions } from '@labkey/api/dist/labkey/Ajax'; @@ -81,9 +78,11 @@ export interface LayoutContextType { room: Room; setRoom: React.Dispatch>; saveRoom: () => void; + layoutSvg: d3.Selection; + setLayoutSvg: React.Dispatch>>; unitLocs: UnitLocations; localRoom: Room; - addRoomItem: (itemClass: RoomItemClass, itemType: RackTypes | RoomObjectTypes, itemId: string, x: number, y: number, scale: number) => void; + addRoomItem: (itemType: RoomItemType, itemId: string, x: number, y: number, scale: number) => void; delRack: (rackId: string) => void; changeCageNum: (numBefore: number, numAfter: number) => void; cageNumChange: {before: number, after: number}; @@ -92,7 +91,7 @@ export interface LayoutContextType { getNextCageNum: (rackType: RackTypes) => number; selectedObj: string; setSelectedObj: React.Dispatch>; - delCage: () => void; + delCage: (cage: Cage, rack: Rack, rackGroup: RackGroup, action: DeleteActions) => void; scale: number; setScale: React.Dispatch>; } @@ -237,7 +236,10 @@ export const LayoutContextProvider: FC = ({children, prevRoo objects: [] }); + const [layoutSvg, setLayoutSvg] = useState>(null); + const [activeGroups, setActiveGroups] = useState([]); // Tracks currently active groups of racks + const [nextAvailGroup, setNextAvailGroup] = useState(`rack-group-1`); // Tracks currently active groups of racks const [cageNumChange, setCageNumChange] = useState<{before: number, after: number} | null>(null); const [selectedObj, setSelectedObj] = useState(null); @@ -246,9 +248,41 @@ export const LayoutContextProvider: FC = ({children, prevRoo // instead of tying scale to each location, manage one scale for the whole layout const [scale, setScale] = useState(1); + /* + Fixes the group ids of the rackGroups state in room and the svg ids for those state objects + */ + const fixGroupIds = () => { + + setLocalRoom((prevRoom) => { + + const sortedGroups = prevRoom.rackGroups.sort((groupA, groupB) => { + const aId = parseLongId(groupA.groupId); + const bId = parseLongId(groupB.groupId); + return aId - bId; + }); + + const newGroups: RackGroup[] = sortedGroups.map((group, index) => { + const groupSvg = layoutSvg.select(`[id=${group.groupId}]`); + const newId = index + 1; + if(!groupSvg.empty()){ // if a group svg exists for the group, rename to new group + groupSvg.attr('id', `rack-group-${newId}`); + } + return { + ...group, + groupId: `rack-group-${newId}` as GroupId + }; + }); + const lastId: number = parseLongId(newGroups[newGroups.length - 1].groupId); + setNextAvailGroup(`rack-group-${lastId + 1}` as GroupId); + return { + ...prevRoom, + rackGroups: newGroups + }; + }) + } + const addRack = (id: string, x: number, y: number, newScale: number, rackType: RackTypes) => { const newCageNum: CageNumber = `${rackType}-${getNextCageNum(rackType)}`; - const newGroupId: GroupId = `rack-group-${findNextGroupId(activeGroups)}`; const firstCage: Cage = { adjCages: undefined, cageState: undefined, @@ -280,15 +314,17 @@ export const LayoutContextProvider: FC = ({children, prevRoo }; const newRackGroup: RackGroup = { - groupId: newGroupId, + groupId: nextAvailGroup, racks: [newRack], x: x, y: y, scale: newScale, } - setActiveGroups(prevState => [...prevState, newGroupId]); - + setNextAvailGroup(prevState => { + const nextId = parseLongId(prevState) + 1; + return `rack-group-${nextId}` as GroupId + }) setLocalRoom(prevRoom => ({ ...prevRoom, rackGroups: [...prevRoom.rackGroups, newRackGroup] @@ -354,9 +390,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo }).concat(mergedRack) } - // When merging two racks we lose the dragged group - setActiveGroups(prevGroups => prevGroups.filter(group => group !== dragGroup.groupId)); - // Filter out the original racks and add the merged rack return ({ ...prevRoom, @@ -406,9 +439,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo }).filter((group): group is RackGroup => group !== null); // filter out the drag group - // When connecting two racks we lose the dragged group - setActiveGroups(prevGroups => prevGroups.filter(group => group !== dragGroup.groupId)); - // Return the updated room return { ...prevRoom, @@ -423,10 +453,12 @@ export const LayoutContextProvider: FC = ({children, prevRoo }else{ // action = connect connectLocalRacks(targetId, dragId, newGroup); } + // After merging / connecting fix the group ids so that they have no gaps + fixGroupIds(); } - const addRoomItem = (itemClass: RoomItemClass, itemType: RackTypes | RoomObjectTypes, itemId: string, x: number, y: number, scale: number) => { - if(itemClass === 'caging'){ + const addRoomItem = (itemType: RoomItemType, itemId: string, x: number, y: number, scale: number) => { + if(isRack(itemType)){ addRack(itemId, x, y, scale, itemType as RackTypes); }else{ const newRoomObj: RoomObject = { @@ -559,8 +591,48 @@ export const LayoutContextProvider: FC = ({children, prevRoo }));*/ } - const delCage = () => { - console.log("deleting: ", clickedCage) + // + const delCage = (cage: Cage, rack: Rack, rackGroup: RackGroup, action: DeleteActions) => { + console.log("deleting: ", selectedObj); + + setLocalRoom((prevRoom) => { + let updatedRoom: Room; + if(action === 'cage'){ // remove cage from rack, keep rack + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.map((group) => ({ + ...group, + racks: group.racks.map(r => ({ + ...r, + cages: r.cages.filter(c => c.cageNum !== cage.cageNum) + })) + } + )) + } + }else if(action === 'rack'){ // remove rack from rack group, keep rack group + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.map((group) => ({ + ...group, + racks: group.racks.filter((r) => r.itemId !== rack.itemId) + } + )) + } + }else if (action === 'group'){ // remove rack group + updatedRoom = { + ...prevRoom, + rackGroups: prevRoom.rackGroups.filter((group) => + group.groupId !== rackGroup.groupId + ) + } + } + return updatedRoom; + }); + + setUnitLocs((prevLocs) => ({ + ...prevLocs, + [rack.type.type]: prevLocs[rack.type.type].filter((loc) => loc.num !== cage.cageNum) + })); } const changeCageNum = (numBefore: number, numAfter: number) => { @@ -579,7 +651,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo prevRoom.rackGroups.forEach(group => { if(currRack) return; currRack = findSelectObjRack(group.racks, selectedObj) - }) + }); if (!currRack) return prevRoom; // If the clicked rack is not found, return the previous state @@ -594,7 +666,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo ...rack, cages: rack.cages.map((cage: Cage): Cage => cage.cageNum === selectedObj // Only update the cage with matching cageNum - ? { ...cage, cageNum: `${rack.type}-${numAfter}` } as Cage + ? { ...cage, cageNum: `${rack.type.type}-${numAfter}` } as Cage : cage ) } @@ -643,8 +715,6 @@ export const LayoutContextProvider: FC = ({children, prevRoo const newLocalRoom: Room = buildNewLocalRoom(prevRoom); const newUnitLocs: UnitLocations = buildNewLocs(prevRoom.data); const newGroupIds: GroupId[] = newLocalRoom.rackGroups.map((group) => group.groupId); - const layoutSvg: d3.Selection - = d3.select('[id^=layout-svg]'); console.log("Load Data: ", prevRoom); console.log("New Room State: ", newLocalRoom); @@ -669,17 +739,19 @@ export const LayoutContextProvider: FC = ({children, prevRoo const newStartDate = new Date(); // TODO fix defaults by prmpting users to fill them in localRoom.rackGroups.forEach((group) => { + const groupId = parseLongId(group.groupId); group.racks.forEach((rack) => { + // if rack is a default, assign rack id to 0(default id) and use the defaults id as id in default_rack + const defaultId = rack.itemId.includes('default') ? parseLongId(rack.itemId) : null; + const newRackId = defaultId ? 0 : parseRoomItemNum(rack.itemId); rack.cages.forEach((cage) => { const cageLocData = unitLocs[rack.type.type].find((loc) => loc.num === cage.cageNum); - if(rack.itemId.includes('default')){ // TODO temp fix to assign group number as rack id - rack.itemId = `${parseGroupId(group.groupId)}`; - } const newCageData: LayoutHistoryData = { - cage: `${parseRoomItemNum(cage.cageNum)}`, + cage: zeroPadName(parseRoomItemNum(cage.cageNum), 4), // converts number into string with leading 0s end_date: null, - rack: rack.itemId, - rack_group: `${parseGroupId(group.groupId)}`, + rack: newRackId, + rack_group: groupId, + default_rack: defaultId, room: roomName, room_object: null, scale: group.scale, @@ -697,6 +769,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo cage: null, end_date: null, rack: null, + default_rack: null, rack_group: null, room: roomName, room_object: roomObj.type, @@ -751,6 +824,8 @@ export const LayoutContextProvider: FC = ({children, prevRoo { - const MAX_SNAP_DISTANCE = 100; // Adjust this value as needed - const SVG_WIDTH = 1290; - const SVG_HEIGHT = 810; - const SMALL_GRID_RATIO = 4; - const LARGE_GRID_RATIO = 8; - const GRID_SIZE = 30; + const SVG_WIDTH = 1290; // pixel width of the layout svg + const SVG_HEIGHT = 810; // pixel height of the layout svg + const SMALL_GRID_RATIO = 4; // number of cells for length/width of a small cage + const LARGE_GRID_RATIO = 8; // number of cells for length/width of a large cage + const GRID_SIZE = 30; // number of pixels of a cell for length/width const utilsRef = useRef(null); const [showGrid, setShowGrid] = useState(true); - const [addingRoomItem, setAddingRoomItem] = useState(false); - const [layoutSvg, setLayoutSvg] = useState>(null); const [pendingRoomUpdate, setPendingRoomUpdate] = useState(null); const [renameCage, setRenameCage] = useState(false); + const [changeRackType, setChangeRack] = useState(false); const [ctxMenuStyle, setCtxMenuStyle] = useState({ display: 'none', @@ -59,9 +63,10 @@ const Editor = () => { const { localRoom, + layoutSvg, + setLayoutSvg, addRoomItem, room, - delRack, changeCageNum, cageNumChange, moveObjLocation, @@ -74,10 +79,6 @@ const Editor = () => { saveRoom } = useLayoutContext(); - const handleClickRename = (event: React.MouseEvent) => { - event.stopPropagation(); - setRenameCage(true); - }; useEffect(() => { console.log("xxx Room: ", room); @@ -85,9 +86,12 @@ const Editor = () => { console.log("xxx Locs: ", unitLocs); }, [room, localRoom, unitLocs]); - // Effect checks for merging after a rack is moved + // Effect checks for merging/connecting after a rack is moved useEffect(() => { if(!selectedObj || cageNumChange) return; + const objSvg = d3.select(`#${selectedObj}`); + // return if selected object is not a rack group or rack + if(!objSvg.classed('rack') && !objSvg.classed('rack-group')) return; let mergeAvail: boolean = false; let targetCageLoc; @@ -111,12 +115,10 @@ const Editor = () => { // Temp object of cages within the dragged group const cagesInDragged: UnitLocations = (() => { - const tempLocs: UnitLocations = { - attachedPlayCage: [], - cage: [], - pen: [], - tempCage: [] - }; + // create empty unit locations object + const tempLocs: UnitLocations = Object.fromEntries( + Object.values(RackTypes).map(key => [key, [] as LocationCoords[]]) + ) as UnitLocations; draggedRackGroup.forEach((rack) => { tempLocs[rack.type.type] = unitLocs[rack.type.type].filter((unit) => draggedCagesGroup.includes(unit.num)) @@ -191,28 +193,24 @@ const Editor = () => { } if(mergeAvail) { - const targetShape = layoutSvg.select(`[id^="${targetCageLoc.num}"]`); + const targetShape = layoutSvg.select(`#${targetCageLoc.num}`); if(targetShape.empty()) return; // Sometimes it doesn't register a targetShape causing a random crash const targetRackShape = (targetShape.node() as SVGGElement).closest('[class*=rack]'); const {rack: targetRack, rackGroup: targetRackGroup} = findRackInGroup(targetRackShape.getAttribute('id'), localRoom.rackGroups); - const draggedShape = layoutSvg.select(`[id^="${draggedCageLoc.num}"]`); + const draggedShape = layoutSvg.select(`#${draggedCageLoc.num}`); const draggedRackShape = (draggedShape.node() as SVGGElement).closest('[class*=rack]'); const {rack: draggedRack, rackGroup: draggedRackGroup} = findRackInGroup(draggedRackShape.getAttribute('id'), localRoom.rackGroups); const layoutDragProps: LayoutDragProps = { - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - delRack: delRack, gridSize: GRID_SIZE, - layoutSvg: layoutSvg, - moveItem: moveObjLocation, - itemClass: 'caging', // only caging units can be connected/merged + moveItem: moveObjLocation }; const cageActionProps: CageActionProps = { - setEditCageNum: setSelectedObj, + setSelectedObj: setSelectedObj, setCtxMenuStyle: setCtxMenuStyle, } @@ -224,12 +222,12 @@ const Editor = () => { // This effect updates racks for adding to the room useEffect(() => { if(!pendingRoomUpdate) return; - const {draggedShape, cellX, cellY, itemId, updateItemType, itemTypeClass} = pendingRoomUpdate; + const {draggedShape, cellX, cellY, itemId, updateItemType} = pendingRoomUpdate; let group; draggedShape.classed('dragging', false); const transform = d3.zoomTransform(layoutSvg.node()); - if (itemTypeClass !== 'caging') { // adding dragged room object + if (!isRack(updateItemType)) { // adding dragged room object group = layoutSvg.append('g') .data([{x: cellX, y: cellY}]) .attr('class', "draggable room-obj") @@ -252,25 +250,21 @@ const Editor = () => { cageIdText.textContent = `${getNextCageNum(updateItemType as RackTypes)}`; - - placeAndScaleGroup(group, cellX, cellY, transform); } - addRoomItem(itemTypeClass, updateItemType, itemId, cellX, cellY, transform.k); + placeAndScaleGroup(group, cellX, cellY, transform); + + addRoomItem(updateItemType, itemId, cellX, cellY, transform.k); const addProps: LayoutDragProps = { gridSize: GRID_SIZE, - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - layoutSvg: layoutSvg, - delRack: delRack, - moveItem: moveObjLocation, - itemClass: itemTypeClass + moveItem: moveObjLocation }; // Reattach drag listeners for interaction within layout - group.call(d3.drag().on('start', createStartDragInLayout({setRoomItem: setSelectedObj})) - .on('drag', createDragInLayout({layoutSvg: layoutSvg})) + group.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) + .on('drag', createDragInLayout()) .on('end', createEndDragInLayout(addProps))); - // Reattach click listener for text editing + // attach click listener for context menu group.selectAll('text').each(function () { const textElement: SVGTextElement = d3.select(this).node() as SVGTextElement; textElement.setAttribute('contentEditable', 'true'); @@ -278,7 +272,7 @@ const Editor = () => { (textElement.children[0] as SVGTSpanElement).style.pointerEvents = "auto"; setupEditCageEvent(textElement, setSelectedObj, setCtxMenuStyle, updateItemType as RackTypes); }); - setAddingRoomItem(false); + setPendingRoomUpdate(null); }, [pendingRoomUpdate]); // Effect for handling the grid layout and drag effects on the layout and from the utils @@ -339,32 +333,16 @@ const Editor = () => { if (targetRect) { const cellX = targetRect.x; const cellY = targetRect.y; + const draggedNodeId = draggedShape.attr('id'); - // First expression is if dragged shape is a rack, the second is a room object. - const draggedNodeId = ((draggedShape.node() as SVGElement).firstChild.firstChild as SVGElement).getAttribute('id') || ((draggedShape.node() as SVGElement).firstChild as SVGElement).getAttribute('id'); - - let itemType: RoomItemClass; - let updateItemType: RackTypes | RoomObjectTypes; + const updateItemType: RoomItemType = parseWrapperId(draggedNodeId); let newId: string; - if(draggedNodeId.includes("pen")) { - updateItemType = RackTypes.Pen; - itemType = 'caging'; - }else if (draggedNodeId.includes('cage')) { - updateItemType = RackTypes.Cage; - itemType = 'caging'; - }else if (draggedNodeId.includes('door')) { - updateItemType = RoomObjectTypes.Door; - itemType = 'roomObj'; - }else if (draggedNodeId.includes('drain')) { - updateItemType = RoomObjectTypes.Drain; - itemType = 'roomObj'; - } - if(itemType === 'caging'){ + if(isRack(updateItemType)){ // get new id for rack const tempId = localRoom.rackGroups.reduce((max, group) => { const groupMax = group.racks.reduce((groupMax, rack) => { - return parseRoomItemNum(rack.itemId) > groupMax ? parseRoomItemNum(rack.itemId) : groupMax; + return parseLongId(rack.itemId) > groupMax ? parseLongId(rack.itemId) : groupMax; }, 0); return groupMax > max ? groupMax : max; }, 0) + 1; @@ -381,23 +359,14 @@ const Editor = () => { cellX: cellX, cellY: cellY, itemId: newId, - itemTypeClass: itemType, updateItemType: updateItemType }); - setAddingRoomItem(true); } else { draggedShape.remove(); } } }, [ localRoom, layoutSvg]); - // Cleanup for after updating rack - useEffect(() => { - if(!addingRoomItem){ - setPendingRoomUpdate(null); - } - }, [addingRoomItem]); - // After state is done updating for cage id change. refresh svg text and ids useEffect(() => { if(cageNumChange){ @@ -405,8 +374,7 @@ const Editor = () => { const objType = parseRoomItemType(selectedObj); let group = layoutSvg.select(`#${selectedObj}`).attr('id', `${objType}-${cageNumChange.after}`); (group.selectAll('tspan').node() as SVGTSpanElement).textContent = cageNumChange.after.toString(); - setCtxMenuStyle({ display: 'none', top: '0px', left: '0px' }); - setSelectedObj(null); + handleContextMenuClose(); } }, [cageNumChange]); @@ -415,15 +383,17 @@ const Editor = () => { .scaleExtent([0.6, 1]) .on("zoom", handleZoom); - // Create a drag behavior + // Create drag behavior for moving the grid const dragGrid = d3.drag() .on("drag", handleDrag); - // Function to handle zoom + // Function to handle zoom for grid function handleZoom(event) { const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); - // Apply zoom/pan to each individual "room-object" group, preserving their relative positions + + // Apply zoom/pan to each individual "draggable" group, preserving their relative positions layoutSvg.selectAll(".draggable").each(function(d: any) { + // d is the data object attached to anything that is placed in the grid at the highest group level for that object const group = d3.select(this); // Use type assertion to tell TypeScript that d has x and y properties const newX = transform.applyX((d as { x: number }).x); @@ -437,7 +407,7 @@ const Editor = () => { updateGrid(transform, SVG_WIDTH, SVG_HEIGHT, GRID_SIZE); } - // Function to handle drag + // Function to handle drag for grid movement function handleDrag(event) { const g = d3.select("g.grid"); const dx = event.dx; @@ -452,7 +422,7 @@ const Editor = () => { } useEffect(() => { - setLayoutSvg(d3.select('#layout-svg')); + setLayoutSvg(d3.select('#layout-svg') as d3.Selection); }, []); // remove grid if desired @@ -461,7 +431,7 @@ const Editor = () => { layoutSvg.select(".grid").selectAll('.cell').remove(); }, [showGrid]); - // load grid at load in or after it was cleared + // load grid at load in, or after it was disabled and re-enabled useEffect(() => { if(!layoutSvg || !showGrid) return; const updateGridProps = { @@ -474,7 +444,9 @@ const Editor = () => { layoutSvg.select("g.grid").call(dragGrid); }, [layoutSvg, showGrid]); + // closes cage editor context menu const handleContextMenuClose = () => { + if(renameCage || changeRackType) return; setCtxMenuStyle({ display: 'none', left: '', @@ -483,6 +455,63 @@ const Editor = () => { setSelectedObj(null); }; + const handleDelCage = () => { + // state in local room of cage, rack, and group that cage is apart of + const {cage: localCage, rack: localRack, rackGroup: localGroup} = findCageInGroup(selectedObj as CageNumber, localRoom.rackGroups); + + showLayoutEditorConfirmation(`Are you sure you want to delete ${localCage.cageNum}`).then((r) => { + if(r){ + let svgToRemove; + let deleteAction: DeleteActions; + let newSvgGroup; + let newRackType: RackTypes; + if(localRack.cages.length === 1){// one cage in rack, delete rack element + if(localGroup.racks.length === 1){// not in a rack group element + svgToRemove = layoutSvg.select(`#${localRack.itemId}`); + deleteAction = 'group'; + }else if (localGroup.racks.length === 2){ // in a rack group element, pull other rack out of group element into rack element + const rackToSave: Rack = localGroup.racks.find((rack) => rack.itemId !== localRack.itemId); + const rackSvg = layoutSvg.select(`#${rackToSave.itemId}`); + const newX = rackToSave.x + localGroup.x; + const newY = rackToSave.y + localGroup.y; + svgToRemove = layoutSvg.select(`#${localGroup.groupId}`); + deleteAction = 'rack'; + newRackType = rackToSave.type.type; + newSvgGroup = layoutSvg.append(() => rackSvg.node()) + .classed('draggable', true); + placeAndScaleGroup(newSvgGroup, newX, newY, zoomTransform(layoutSvg.node())); + }else{ // in a rack group element, no need to pull out other racks since there is still enough to make a group + svgToRemove = layoutSvg.select(`#${localRack.itemId}`); + deleteAction = 'rack'; + } + }else{ // multiple cages in rack, delete cage element + svgToRemove = layoutSvg.select(`#${localCage.cageNum}`); + deleteAction = 'cage'; + } + + // reattach listeners if new svg group was created + if(newSvgGroup){ + const addProps: LayoutDragProps = { + gridSize: GRID_SIZE, + moveItem: moveObjLocation + }; + newSvgGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) + .on('drag', createDragInLayout()) + .on('end', createEndDragInLayout(addProps))); + + // attach click listener for context menu + newSvgGroup.selectAll('text').each(function () { + const textElement: SVGTextElement = d3.select(this).node() as SVGTextElement; + setupEditCageEvent(textElement, setSelectedObj, setCtxMenuStyle, newRackType); + }); + } + svgToRemove.remove(); + delCage(localCage, localRack, localGroup, deleteAction); + handleContextMenuClose(); + } + }); + } + const handleDefaultSave = () => { console.log("Saving to default layout"); } @@ -500,35 +529,31 @@ const Editor = () => {
- - - + - - - +
- - @@ -536,7 +561,7 @@ const Editor = () => {
- {(renameCage) && + {(renameCage) && // Opens menu for renaming cage { changeCageNum(parseRoomItemNum(selectedObj), num); @@ -588,8 +613,9 @@ const Editor = () => {
setRenameCage(true)} + onClickChangeRack={() => setChangeRack(true)} /> ); diff --git a/CageUI/src/client/components/EditorContextMenu.tsx b/CageUI/src/client/components/EditorContextMenu.tsx index dfc73efe4..674fe574d 100644 --- a/CageUI/src/client/components/EditorContextMenu.tsx +++ b/CageUI/src/client/components/EditorContextMenu.tsx @@ -10,20 +10,22 @@ interface EditorContextMenuProps { left: string; }; onClickDelete: () => void; - onClickRename: (e: React.MouseEvent) => void; + onClickRename: () => void; + onClickChangeRack: () => void; } const EditorContextMenu: FC = (props) => { const { ctxMenuStyle, onClickDelete, - onClickRename + onClickRename, + onClickChangeRack } = props; const menuRef = useRef(null); const handleRenameClick = (e: React.MouseEvent) => { e.stopPropagation(); - onClickRename(e); + onClickRename(); }; const handleDeleteClick = (e: React.MouseEvent) => { @@ -31,6 +33,11 @@ const EditorContextMenu: FC = (props) => { onClickDelete(); }; + const handleChangeRack = (e: React.MouseEvent) => { + e.stopPropagation(); + onClickChangeRack(); + }; + return ( = (props) => { display: ctxMenuStyle.display, position: 'absolute', left: ctxMenuStyle.left, - top: ctxMenuStyle.top, - zIndex: 100, + top: ctxMenuStyle.top }} > - handleRenameClick(e)}> - - + + + ); }; diff --git a/CageUI/src/client/components/LayoutEditorHelpers.ts b/CageUI/src/client/components/LayoutEditorHelpers.ts index a2a96c407..ccf4ca686 100644 --- a/CageUI/src/client/components/LayoutEditorHelpers.ts +++ b/CageUI/src/client/components/LayoutEditorHelpers.ts @@ -4,7 +4,7 @@ import { getTranslation, getTypeClassFromElement, isTextEditable, - parseGroupId, + parseLongId, parseRack, parseRoomItemNum, parseRoomItemType @@ -24,7 +24,7 @@ import { RackActions, RackGroup, RackTypes, - Room, + Room, RoomItemClass, RoomItemType, RoomObject, RoomObjectTypes, StartDragProps, UnitLocations @@ -32,7 +32,20 @@ import { import * as React from 'react'; import { zoomTransform } from 'd3'; + +export const parseWrapperId = (input: string): RoomItemType => { + const regex = /^[a-zA-Z]+/; // matches "x_template_wrapper" + + const match = input.match(regex); + if (match) { // if a match return whatever x is (any string of chars) + return match[0] as RoomItemType; + } + return; +} + + export const drawGrid = (layoutSvg: d3.Selection, updateGridProps) => { + layoutSvg.select('.grid').remove(); layoutSvg.append("g").attr("class", "grid"); updateGrid(d3.zoomIdentity, updateGridProps.width, updateGridProps.height, updateGridProps.gridSize); // Draw grid with the initial view } @@ -104,6 +117,38 @@ function showConfirmationPopup(): Promise { }); } +export function showLayoutEditorConfirmation(msg: string) { + return new Promise((resolve) => { + // Create a simple popup + const popup = d3.select('body').append('div') + .attr('class', 'popup') + .style('position', 'absolute') + .style('top', '50%') + .style('left', '50%') + .style('transform', 'translate(-50%, -50%)') + .style('background', 'white') + .style('padding', '20px') + .style('border', '1px solid black'); + + popup.append('p') + .text(msg); + + popup.append('button') + .text('Yes') + .on('click', () => { + popup.remove(); + resolve(true); + }); + + popup.append('button') + .text('No') + .on('click', () => { + popup.remove(); + resolve(false); + }); + }); +} + // Confirmation popup for merging two racks export function showLayoutEditorError(errorMsg: string) { return new Promise((resolve) => { @@ -194,13 +239,10 @@ export function setupEditCageEvent( export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRackGroup: RackGroup, dragRackGroup: RackGroup, doRackAction, layoutDragProps: LayoutDragProps, cageActionProps: CageActionProps) { if(!d3.select('.popup').empty()) return; const action: RackActions = await showConfirmationPopup(); + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); const { - layoutSvg, gridSize, - MAX_SNAP_DISTANCE, - delRack, - moveItem, - itemClass + moveItem } = layoutDragProps; console.log("Performing Merge"); @@ -216,7 +258,7 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack element.style = ""; } const textEle = d3.select(element).selectAll('text').node() as SVGTextElement; - setupEditCageEvent(textEle, cageActionProps.setEditCageNum, cageActionProps.setCtxMenuStyle, shapeType as RackTypes); + setupEditCageEvent(textEle, cageActionProps.setSelectedObj, cageActionProps.setCtxMenuStyle, shapeType as RackTypes); } // add starting x and y for each group to then increment its local subgroup coords by. @@ -308,9 +350,6 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack if (styleAttr) { newGroup.attr('style', styleAttr); } - - - } else{ // action = connect @@ -360,14 +399,10 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack const addProps: LayoutDragProps = { gridSize: gridSize, - MAX_SNAP_DISTANCE: MAX_SNAP_DISTANCE, - layoutSvg: layoutSvg, - delRack: delRack, - moveItem: moveItem, - itemClass: itemClass + moveItem: moveItem }; - newGroup.call(d3.drag().on('start', createStartDragInLayout({setRoomItem: cageActionProps.setEditCageNum})) - .on('drag', createDragInLayout({layoutSvg: layoutSvg})) + newGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: cageActionProps.setSelectedObj})) + .on('drag', createDragInLayout()) .on('end', createEndDragInLayout(addProps))); doRackAction(action,targetRackId, draggedRackId, newGroup); @@ -435,23 +470,23 @@ export const getTargetRect =(x, y, gridSize, transform) => { export function createStartDragInLayout(startDragProps: StartDragProps) { return( function startDragInLayout(event) { - const {setRoomItem} = startDragProps; + const {setSelectedObj} = startDragProps; // Check if the parent element is editable, return if not if (isTextEditable(event)) { event.on('drag', null).on('end', null); // Detach drag and end events return; } - setRoomItem(d3.select(this).attr('id')); + setSelectedObj(d3.select(this).attr('id')); console.log('Drag Layout #1', parseRack(d3.select(this).attr('id'))); d3.select(this).raise().classed('active', true); } ); } -export function createDragInLayout(dragProps) { +export function createDragInLayout() { return( function dragInLayout(event) { - const {layoutSvg} = dragProps; + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); console.log('Drag Layout #2', event.x, event.y); const element = d3.select(this); const transform = d3.zoomTransform(layoutSvg.node()); @@ -470,19 +505,18 @@ export function createEndDragInLayout(props: LayoutDragProps) { function endDragInLayout(event) { const { gridSize, - layoutSvg, - delRack, - moveItem, - itemClass + moveItem } = props; const shape = d3.select(this); shape.classed('active', false); + const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); + const transform = d3.zoomTransform(layoutSvg.node()); const {x,y} = getLayoutOffset({ clientX: event.sourceEvent.clientX, clientY: event.sourceEvent.clientY, - layoutSvg: layoutSvg}) + layoutSvg: layoutSvg}); const targetCell = getTargetRect(x, y, gridSize, transform); @@ -490,16 +524,10 @@ export function createEndDragInLayout(props: LayoutDragProps) { console.log('Drag Layout #3', shape, targetCell); const cellX = targetCell.x; const cellY = targetCell.y; + const shapeType: RoomItemClass = shape.classed('room-obj') ? 'roomObj' : 'caging'; placeAndScaleGroup(shape, cellX, cellY, transform); - console.log("#3: ", cellX, cellY, shape.node()); - moveItem(shape.attr('id'), itemClass, cellX, cellY, transform.k); - } else { - // remove rack from room - /*console.log("deleting cage from room", getRackFromClass(shape.attr('class'))); - const idToDel = parseInt(getRackFromClass(shape.attr('class'))); - delRack(idToDel); - shape.remove();*/ + moveItem(shape.attr('id'),shapeType, cellX, cellY, transform.k); } } ); @@ -526,11 +554,8 @@ export const areCagesInSameRack = (rack: Rack, cage1: LocationCoords, cage2: Loc return nums.includes(cage1.num) && nums.includes(cage2.num); } - - - // TODO might not be needed -export const isRack = (itemType: RackTypes | RoomObjectTypes): itemType is RackTypes => { +export const isRack = (itemType: RoomItemType): itemType is RackTypes => { return Object.values(RackTypes).includes(itemType as RackTypes); } @@ -544,7 +569,7 @@ export const findSelectObjRack = (racks: Rack[], obj: string): Rack => { // Finds the next avail group id number export const findNextGroupId = (groups: GroupId[]): number => { const groupNumbers = groups - .map(group => parseGroupId(group)) + .map(group => parseLongId(group)) .filter(num => num !== undefined) .sort((a, b) => a - b); @@ -566,35 +591,43 @@ export const findNextGroupId = (groups: GroupId[]): number => { // finds a rack in room/groups of racks if it exists and return the rack and rack group it is apart of export const findRackInGroup = (targetId: string, groups: RackGroup[]): {rack: Rack, rackGroup: RackGroup} | undefined => { - let targetRack: Rack | undefined; - let targetGroup: RackGroup | undefined; + for (const group of groups) { + const targetRack = group.racks.find(rack => rack.itemId === targetId); + if (targetRack) { + return { rack: targetRack, rackGroup: group }; + } + } + return undefined; +}; - targetGroup = groups.find((group: RackGroup) => - group.racks.some((rack: Rack) => rack.itemId === targetId) - ); - if (targetGroup) { - targetRack = targetGroup.racks.find((rack: Rack) => rack.itemId === targetId); +// finds a cage in room/groups of racks if it exists and return the rack, rack group and cage state +export const findCageInGroup = (targetId: CageNumber, groups: RackGroup[]): {cage: Cage, rack: Rack, rackGroup: RackGroup} | undefined => { + for (const group of groups) { + for (const rack of group.racks) { + const targetCage = rack.cages.find(cage => cage.cageNum === targetId); + if (targetCage) { + return { cage: targetCage, rack: rack, rackGroup: group }; + } + } } - return {rack: targetRack, rackGroup: targetGroup}; -} + return undefined; +}; // FUNCTIONS FOR LOADING IN PREVIOUS DATA export const buildNewLocs = (prevRoomData: LayoutHistoryData[]): UnitLocations => { - const newUnitLocs: UnitLocations = { - attachedPlayCage: [], - cage: [], - pen: [], - tempCage: [] - } + // Empty Unit locations object + const newUnitLocs: UnitLocations = Object.fromEntries( + Object.values(RackTypes).map(key => [key, [] as LocationCoords[]]) + ) as UnitLocations; prevRoomData.forEach(roomItem => { if(roomItem.room_object) return; // ignore room objects here // TODO find rack type for rack id newUnitLocs.cage.push({ - num: `cage-${roomItem.cage}` as CageNumber, // TODO num here should be RackType-roomItem.cage + num: `cage-${parseInt(roomItem.cage)}` as CageNumber, // TODO num here should be RackType-roomItem.cage cellX: roomItem.x_coord, cellY: roomItem.y_coord }); @@ -613,7 +646,7 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //check if a group exists for the groupId, if it does return, else create new group for the room const findOrAddGroup = (rackItem: LayoutHistoryData): RackGroup => { // groupId is a single number so check if the GroupId string contains it - let rackGroup: RackGroup = newLocalRoom.rackGroups.find(group => group.groupId.includes(rackItem.rack_group)) + let rackGroup: RackGroup = newLocalRoom.rackGroups.find(group => parseLongId(group.groupId) === rackItem.rack_group) if (!rackGroup) { //create new rack group if it doesn't exist rackGroup = { @@ -631,13 +664,15 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //TODO isActive here tells us if the rack is currently active in the numbering system //check if a rack exists for the rackId, if it does return, else create new rack for the group const findOrAddRack = (rackGroup: RackGroup, rackItem: LayoutHistoryData): Rack => { - let rack: Rack = rackGroup.racks.find(r => r.itemId === rackItem.rack); + // if rack is a default aka 0, then use its default ID + const rackIdToFind = rackItem.rack === 0 ? rackItem.default_rack : rackItem.rack; + let rack: Rack = rackGroup.racks.find(r => parseRoomItemNum(r.itemId) === rackIdToFind); if (!rack) { //create new rack if it doesn't exist rack = { cages: [], isActive: true, - itemId: rackItem.rack, + itemId: rackItem.rack === 0 ? `default-rack-${rackItem.default_rack}` : `rack-${rackItem.rack}`, type: DEFAULT_CAGE_TYPE, // TODO find the rack type in the database for rackId x: rackItem.x_coord - rackGroup.x, // subtract group coords from layout coords to get rack coords y: rackItem.y_coord - rackGroup.y @@ -650,7 +685,7 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { const addCageToRack = (rack: Rack, rackItem: LayoutHistoryData, group: RackGroup) => { const cage: Cage = { adjCages: undefined, - cageNum: `${RackTypes.Cage}-${rackItem.cage}` as CageNumber, // TODO depending on rack type this will change + cageNum: `${RackTypes.Cage}-${parseInt(rackItem.cage)}` as CageNumber, // TODO depending on rack type this will change cageState: undefined, height: 0, // TODO find height at time for cage in Cage History id: rack.cages.length + 1, // TODO this might not work depending on order of cages in array, fix this @@ -664,7 +699,6 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { rack.cages.push(cage); } - const handleRackItem = (rackItem: LayoutHistoryData) => { const rackGroup: RackGroup = findOrAddGroup(rackItem); const rack: Rack = findOrAddRack(rackGroup, rackItem); diff --git a/CageUI/src/client/components/LayoutTooltip.tsx b/CageUI/src/client/components/LayoutTooltip.tsx index 79078036a..844c5aec9 100644 --- a/CageUI/src/client/components/LayoutTooltip.tsx +++ b/CageUI/src/client/components/LayoutTooltip.tsx @@ -1,7 +1,12 @@ import * as React from 'react'; -import { FC, useState } from 'react'; +import { FC, ReactNode, useState } from 'react'; -export const LayoutTooltip: FC = ({ text, children }) => { +interface LayoutTooltipProps { + text: string; + children: ReactNode; +} + +export const LayoutTooltip: FC = ({ text, children }) => { const [isVisible, setIsVisible] = useState(false); return ( diff --git a/CageUI/src/client/components/RackTemplate.tsx b/CageUI/src/client/components/RackTemplate.tsx deleted file mode 100644 index 56d4dd2ca..000000000 --- a/CageUI/src/client/components/RackTemplate.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react'; -import { FC } from 'react'; -import { ActionURL } from '@labkey/api'; -import { Rack, RackTypes } from './typings'; -import { ReactSVG } from 'react-svg'; - -interface RackTemplateProps { - fileName: string, - divClassName: string; - className?: string -} -export const RackTemplate: FC = (props) => { - const {fileName, className, divClassName} = props; - - - return ( -
- -
- ); -} \ No newline at end of file diff --git a/CageUI/src/client/components/RoomItemTemplate.tsx b/CageUI/src/client/components/RoomItemTemplate.tsx new file mode 100644 index 000000000..3dcac4dec --- /dev/null +++ b/CageUI/src/client/components/RoomItemTemplate.tsx @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { FC, useEffect, useRef, useState } from 'react'; +import { ActionURL } from '@labkey/api'; +import { Rack, RackTypes, RoomItemType } from './typings'; +import { ReactSVG } from 'react-svg'; + +interface RoomItemTemplateProps { + fileName: string, + className?: string + type: RoomItemType; +} +export const RoomItemTemplate: FC = (props) => { + const {fileName, className, type} = props; + + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index b53971538..b61781dc9 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -11,7 +11,7 @@ import { Modifications, ModTypes, Rack, - RackTypes, + RackTypes, RoomItemType, SeparatorMod, SeparatorPosition, Separators, @@ -46,7 +46,7 @@ export const getRackFromClass = (classString: string) => { return rackId; } } -export const zeroPadName = (num, places) => {return('#' + String(num).padStart(places, '0'))}; +export const zeroPadName = (num, places) => {return(String(num).padStart(places, '0'))}; // Helper function to get the rack number export const parseRack = (input: string) => { const regex = /rack-(\d+)/; @@ -69,6 +69,7 @@ export const parseCage = (input: string) => { return; } + export const parseRoomItemNum = (input: string): number => { const regex = /\w+-(\d+)/; // matches "string-number" @@ -107,11 +108,11 @@ export const getTypeClassFromElement = (element) => { } -export const parseGroupId = (input: GroupId) => { +export const parseLongId = (input: string) => { const regex = /\w+-\w+-(\d+)/; // matches "string-string-number" const match = input.match(regex); - if (match) { + if (match) { // if a match return the number return parseInt(match[1]); } return; diff --git a/CageUI/src/client/components/typings.ts b/CageUI/src/client/components/typings.ts index 0e5e47acd..d3a4d48c7 100644 --- a/CageUI/src/client/components/typings.ts +++ b/CageUI/src/client/components/typings.ts @@ -18,27 +18,21 @@ type PageViews = "Room" | "Rack" | "Cage"; export type RackActions = 'merge' | 'connect' | 'cancel'; export type GroupId = `rack-group-${number}`; -// Classification of the objects, caging is for racks, roomObj is for things placed in the room not applied to caging, cagingObj are like roomObjs but can be connected to caging units +export type RoomItemType = RackTypes | RoomObjectTypes; + +// Classification of the objects, caging is for racks, roomObj is for things placed in the room not applied to caging export type RoomItemClass = 'caging' | 'roomObj'; +// deletion actions for state management, cage = delete cage from rack, rack = delete rack from rack group, group = delete entire rack group +export type DeleteActions = 'cage' | 'rack' | 'group'; -export interface testLayoutHistoryData { - rowid: number; - objectId: string; // depending on object type this is either rack id or object row id - objectType: RoomObjectTypes | RackTypes; - startDate: string; - endDate: string | null; - x: number; // x position of either room object or rack group - y: number; // y position of either room object or rack group - scale: number; // scale of either room object or rack group - room: string // Room that either rack or object resides in -} export interface LayoutHistoryData { room_object: RoomObjectTypes | null; - rack_group: string | null; - rack: string | null; + rack_group: number | null; + rack: number | null; + default_rack: number | null; cage: string | null; x_coord: number; y_coord: number; @@ -69,29 +63,24 @@ export interface OffsetProps { export interface PendingRoomUpdate { draggedShape: any; - itemTypeClass: RoomItemClass; // classification of the item - updateItemType: RackTypes | RoomObjectTypes; + updateItemType: RoomItemType; cellX: number; cellY: number; itemId: string; } export interface CageActionProps { - setEditCageNum: React.Dispatch>; + setSelectedObj: React.Dispatch>; setCtxMenuStyle: React.Dispatch>; } export interface LayoutDragProps { gridSize: number; - MAX_SNAP_DISTANCE: number; - layoutSvg: d3.Selection; - delRack: (rackId: string) => void; moveItem: (itemId: string, type: RoomItemClass, x: number, y: number, k: number) => void; - itemClass: RoomItemClass; } export interface StartDragProps { - setRoomItem: React.Dispatch>; + setSelectedObj: React.Dispatch>; } export interface Cage { @@ -218,14 +207,13 @@ export enum RackTypes { Cage = "cage", Pen = "pen", TempCage = "tempCage", - PlayCage = "attachedPlayCage" + PlayCage = "playCage" } export enum CageType { Allentown = "allentown", Suburban = "suburban", Lenderking = "lenderking", - Nursury = "nursury", Unknown = "unknown" } diff --git a/CageUI/src/client/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/layoutEditor/LayoutEditor.tsx index 1468319ae..c4494ceb8 100644 --- a/CageUI/src/client/layoutEditor/LayoutEditor.tsx +++ b/CageUI/src/client/layoutEditor/LayoutEditor.tsx @@ -12,7 +12,6 @@ import {LayoutContextProvider } from '../components/ContextManager'; import DragAndDropGrid from '../components/Editor'; import { ActionURL } from '@labkey/api'; import Editor from '../components/Editor'; -import { testRoom } from './testData'; import { labkeyActionSelectWithPromise } from '../components/helpers'; interface RoomProps { @@ -32,7 +31,7 @@ export const LayoutEditor: FC = (props) => { const prevRoomConfig: SelectRowsOptions = { schemaName: 'wnprc', queryName: 'layout_history', - columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid'], + columns: ['room_object', 'rack_group', 'rack', 'cage', 'x_coord', 'y_coord', 'scale', 'rowid', 'default_rack'], filterArray: [ Filter.create('room', roomName, Filter.Types.EQUALS), Filter.create('end_date', null, Filter.Types.ISBLANK) diff --git a/CageUI/src/client/layoutEditor/testData.ts b/CageUI/src/client/layoutEditor/testData.ts deleted file mode 100644 index a6a714912..000000000 --- a/CageUI/src/client/layoutEditor/testData.ts +++ /dev/null @@ -1,208 +0,0 @@ - -import { - CageType, - EHRCage, - EHRRackType, - EHRRoom, - LayoutHistoryData, - RackTypes, - RoomObjectTypes, testLayoutHistoryData -} from '../components/typings'; - -export const testCageModifications = [ - { - rowid: 1, - name: "Solid Divider" - }, - { - rowid: 2, - name: "Mesh Floor" - }, - { - rowid: 3, - name: "C-Tunnel" - } -]; - -export const testRoom: EHRRoom = { - rowid: 68, - room: "ab140", - building: "", - area: "AB-New", - housingType: null, - housingCondition: null, - maxCages: 26 -} - -export const testCageTypes1: EHRRackType = { - rowid: 3, - name: "cage-at-6.7", - type: RackTypes.Cage, - manufacturer: CageType.Allentown, - length: 31.0, - width: 31.25, - height: 33.0, - sqft: 6.7, - supportsTunnel: true, - abbreviation: "at", - description: "6.7 sq ft allentown cage" -} - -export const testCageTypes2: EHRRackType = { - rowid: 4, - name: "pen-uk-44", - type: RackTypes.Pen, - manufacturer: CageType.Unknown, - length: 122.0, - width: 52.0, - height: 98.5, - sqft: 44.0, - supportsTunnel: false, - abbreviation: "uk", - description: "44 sq ft pen" -} - -export const testCage1: EHRCage = { - rowid: 1, - location: "rck1-1", - position: "top", - cageNum: "0001", - rackNum: 1, - x: 0, - y: 0, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage2: EHRCage = { - rowid: 2, - location: "rck1-2", - position: "top", - cageNum: "0002", - rackNum: 2, - x: 120, - y: 0, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage3: EHRCage = { - rowid: 3, - location: "rck1-3", - position: "bottom", - cageNum: "0003", - rackNum: 3, - x: 0, - y: 120, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage4: EHRCage = { - rowid: 4, - location: "rck1-4", - position: "bottom", - cageNum: "0004", - rackNum: 4, - x: 120, - y: 120, - rack: "rck1", - cagetype: testCageTypes1, - room: testRoom.room -} -export const testCage5: EHRCage = { - rowid: 5, - location: "pen1-1", - position: "none", - cageNum: "0001", - rackNum: 1, - x: 0, - y: 0, - rack: "pen1", - cagetype: testCageTypes2, - room: testRoom.room -} - -export const testCage6: EHRCage = { - rowid: 6, - location: "rck2-1", - position: "none", - cageNum: "0005", - rackNum: 1, - x: 0, - y: 0, - rack: "rck2", - cagetype: testCageTypes1, - room: testRoom.room -} - -export const testCagesInRoom = [testCage1, testCage2,testCage3,testCage4,testCage5,testCage6] - -export const testRoomObj = { - rowid: 1, - type: "Door", - abbreviation: "d", -} -/* - If object type is caging then query the cages table for object id to get the cages in that rack, - then add local coords to rack coords to get the correct coords of each cage. - If object type is room then query the room objects table if needed. Since room objects don't use sub coords there is - no need to do this if you are loading a layout. Just place the correct object at the location as it is in layout history -*/ -export const testLayoutHistory: testLayoutHistoryData[] = [ - { - rowid: 1, - objectId: testCage1.rack, - objectType: RackTypes.Cage, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - }, - { - rowid: 2, - objectId: `${testRoomObj.rowid}`, - objectType: RoomObjectTypes.Door, - startDate: "2024-10-22", - endDate: null, - x: 300, - y: 300, - scale: 1, - room: testRoom.room - }, - { - rowid: 3, - objectId: testCage5.rack, - objectType: RackTypes.Pen, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - },{ - rowid: 4, - objectId: testCage6.rack, - objectType: RackTypes.Cage, - startDate: "2024-10-22", - endDate: null, - x: 0, - y: 0, - scale: 1, - room: testRoom.room - }] - - - -export const testCageHistory = { - rowid: 1, - startDate: "2024-10-22", - endDate: null, - location: testCage1.location, - leftDivider: testCageModifications[0].rowid, - rightDivider: testCageModifications[0].rowid, - flooring: testCageModifications[1].rowid, - modification: testCageModifications[2].rowid -} diff --git a/WNPRC_EHR/resources/data/lookup_sets.tsv b/WNPRC_EHR/resources/data/lookup_sets.tsv index 5a3a7852a..f733a010f 100644 --- a/WNPRC_EHR/resources/data/lookup_sets.tsv +++ b/WNPRC_EHR/resources/data/lookup_sets.tsv @@ -12,7 +12,9 @@ birth_condition Birth Condition Field Values value value birth_type Birth Type Field Values value title blood_billed_by Blood Billed By Field Values value title blood_code_prefixes Blood Code Prefix Field Values value -chemistry_method Chemistry Method Field Values value +cageui_item_types Room Item Type Field Values value title +cageui_rack_manufacturers Rack Manufacturer Field Values value title +chemistry_method Chemistry Method Field Values value chow_types Chow Types Field Values value clinpath_collection_method Clinpath Collection Method Field Values value clinpath_sampletype Clinpath Sample Type Field Values value diff --git a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml index 25ca1ee7d..6524fe105 100644 --- a/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml +++ b/WNPRC_EHR/resources/queries/wnprc/layout_history.query.xml @@ -11,6 +11,7 @@ + diff --git a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql index 84884b1ec..591adb5c4 100644 --- a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql +++ b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql @@ -1,16 +1,22 @@ +--TODO Tables for CageUI, change before actual commit to snapshot to reflect correct version + +-- Table for storing layout history data, either room object or (rack_group, rack, cage) must exist +-- If rack = 0 than default_rack must not be null +-- If end_date is null, that is the current layout for the room DROP TABLE IF EXISTS wnprc.layout_history; CREATE TABLE wnprc.layout_history ( rowid SERIAL NOT NULL, room VARCHAR(50) NOT NULL, room_object VARCHAR(50), - rack_group VARCHAR(50), - rack VARCHAR(50), + rack_group INTEGER, + rack INTEGER, + default_rack INTEGER, cage VARCHAR(50), start_date TIMESTAMP NOT NULL, end_date TIMESTAMP, - x_coord DOUBLE PRECISION NOT NULL, - y_coord DOUBLE PRECISION NOT NULL, + x_coord INTEGER NOT NULL, + y_coord INTEGER NOT NULL, scale DOUBLE PRECISION NOT NULL, container entityid NOT NULL, createdby userid, @@ -18,5 +24,62 @@ CREATE TABLE wnprc.layout_history modifiedby userid, modified TIMESTAMP, CONSTRAINT PK_layout_history PRIMARY KEY (rowid), - CONSTRAINT FK_layout_history_container FOREIGN KEY (container) REFERENCES core.Containers (EntityId) -); \ No newline at end of file + CONSTRAINT FK_layout_history_container FOREIGN KEY (container) REFERENCES core.Containers (EntityId), + CONSTRAINT CHECK_layout_history_not_null CHECK ( + (room_object IS NOT NULL) OR + (rack_group IS NOT NULL AND rack IS NOT NULL AND cage IS NOT NULL) + ), + CONSTRAINT CHECK_layout_history_default_rack_not_null CHECK ( + (rack != 0) OR (default_rack IS NOT NULL) + ) +); + +INSERT INTO ehr_lookups.lookup_sets (setname, label, description, keyField, container) +select 'cageui_item_types' as setname, + 'Room Item Type Field Values' as label, + 'List of items that can be placed into the cageUI layout editor' as description, + 'value' as keyField, + container from ehr_lookups.lookup_sets where setname='ancestry'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'cage' as value, 'Caging' as category, 'Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'pen' as value, 'Caging' as category, 'Pen' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'tempCage' as value, 'Caging' as category, 'Temp Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'playCage' as value, 'Caging' as category, 'Play Cage' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'door' as value, 'Room Object' as category, 'Door' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'drain' as value, 'Room Object' as category, 'Drain' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +insert into ehr_lookups.lookups (set_name,container,value, category, title) +select setname, container, 'roomDivider' as value, 'Room Object' as category, 'Room Divider' as Title from ehr_lookups.lookup_sets where setname='cageui_item_types'; + +INSERT INTO ehr_lookups.lookup_sets (setname, label, description, keyField, container) +select 'cageui_rack_manufacturers' as setname, + 'Rack Manufacturer Field Values' as label, + 'List of rack manufacturers' as description, + 'value' as keyField, + container from ehr_lookups.lookup_sets where setname='ancestry'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'at' as value, 'Allentown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'sb' as value, 'Suburban' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'lk' as value, 'Lenderking' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'wnprc' as value, 'WNPRC' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +insert into ehr_lookups.lookups (set_name,container,value, title) +select setname, container, 'uk' as value, 'Unknown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; \ No newline at end of file diff --git a/WNPRC_EHR/resources/schemas/wnprc.xml b/WNPRC_EHR/resources/schemas/wnprc.xml index a277a3448..b2273bc99 100644 --- a/WNPRC_EHR/resources/schemas/wnprc.xml +++ b/WNPRC_EHR/resources/schemas/wnprc.xml @@ -340,11 +340,20 @@
- + + + ehr_lookups + rooms + room + + - + + + /EHR/cageDetails.view?room=${room}&cage=${cage}& + From b568403b1aa281170d87110e110aa17b34d809e0 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Wed, 27 Nov 2024 12:44:15 -0600 Subject: [PATCH 147/357] Change permission classes to fit with labkey 24.11 --- CageUI/package-lock.json | 11707 +++++++++++------------------ CageUI/package.json | 6 +- CageUI/src/client/entryPoints.js | 4 +- 3 files changed, 4511 insertions(+), 7206 deletions(-) diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index d75d1a84c..997fe5a80 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@labkey/api": "1.29.0", + "@labkey/api": "1.35.6", "d3": "^7.9.0", "dayjs": "^1.11.8", "react": "~18.3.1", @@ -24,8 +24,8 @@ }, "devDependencies": { "@babel/core": "7.24.7", - "@labkey/build": "7.1.0", - "@labkey/components": "3.24.11", + "@labkey/build": "8.2.0", + "@labkey/components": "5.20.4", "@types/d3": "^7.4.3", "@types/react": "~18.3.3", "@types/react-bootstrap": "~0.32.32", @@ -39,9 +39,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -58,12 +58,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -71,9 +72,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", - "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -110,54 +111,55 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz", - "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.8", + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -166,19 +168,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", - "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -189,13 +189,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "engines": { @@ -206,9 +206,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -221,80 +221,41 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", - "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -304,35 +265,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -342,14 +303,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -359,132 +320,123 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -494,14 +446,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -510,6 +462,22 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -586,12 +554,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -601,12 +569,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -640,12 +608,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -757,12 +725,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -788,12 +756,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -803,15 +771,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -821,14 +788,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -838,12 +805,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -853,12 +820,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -868,13 +835,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -884,14 +851,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -901,18 +867,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -923,13 +887,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -939,12 +903,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -954,13 +918,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -970,12 +934,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -985,13 +949,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1001,13 +964,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1017,13 +980,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1033,13 +995,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1049,14 +1011,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1066,13 +1028,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1082,12 +1043,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1097,13 +1058,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1113,12 +1073,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1128,13 +1088,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1144,14 +1104,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1161,15 +1121,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1179,13 +1139,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1195,13 +1155,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1211,12 +1171,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1226,13 +1186,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1242,13 +1201,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1258,16 +1216,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1277,13 +1234,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1293,13 +1250,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1309,14 +1265,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1326,12 +1281,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1341,13 +1296,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1357,15 +1312,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1375,12 +1329,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1390,12 +1344,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", - "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1405,16 +1359,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", - "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1424,12 +1378,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", - "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.24.7" + "@babel/plugin-transform-react-jsx": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1439,13 +1393,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", - "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1455,12 +1409,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1471,12 +1425,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1486,12 +1440,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1501,13 +1455,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1517,12 +1471,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1532,12 +1486,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1547,12 +1501,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1562,15 +1516,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz", - "integrity": "sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", + "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-typescript": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1580,12 +1535,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1595,13 +1550,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1611,13 +1566,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1627,13 +1582,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1643,25 +1598,27 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.20", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1673,60 +1630,59 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -1751,17 +1707,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", - "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1771,16 +1727,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", - "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-typescript": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1789,16 +1745,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", - "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1806,63 +1756,46 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs2": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.8.tgz", - "integrity": "sha512-vGYjT6h/MNSJ74UXgcgmoRNrMiSwMCgSy/HXMM0jTQJ811YfpBxvxidMPRdJnTaUjDpqwWI2XC6bkz0vnWpjfQ==", + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "dependencies": { - "core-js": "^2.6.12", - "regenerator-runtime": "^0.14.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.8", - "@babel/types": "^7.24.8", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz", - "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1878,16 +1811,16 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@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.5.0", "escape-string-regexp": "^4.0.0", @@ -1902,18 +1835,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@emotion/babel-plugin/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -1924,15 +1845,15 @@ } }, "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz", + "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==", "dev": true, "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@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" } }, @@ -2075,9 +1996,9 @@ "dev": true }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", "dev": true }, "node_modules/@emotion/is-prop-valid": { @@ -2096,24 +2017,24 @@ "dev": true }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", "dev": true }, "node_modules/@emotion/react": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", + "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -2126,22 +2047,22 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", "dev": true, "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", "dev": true }, "node_modules/@emotion/styled": { @@ -2224,57 +2145,104 @@ "dev": true }, "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", "dev": true }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "dev": true, "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", "dev": true }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", "dev": true }, "node_modules/@floating-ui/core": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", - "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "dev": true, "dependencies": { - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", - "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", "dev": true, "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "dev": true, + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dev": true, + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", - "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", "dev": true }, + "node_modules/@hello-pangea/dnd": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-16.6.0.tgz", + "integrity": "sha512-vfZ4GydqbtUPXSLfAvKvXQ6xwRzIjUSjVU0Sx+70VOhc2xx6CdmJXJ8YhH70RpbTUGjxctslQTHul9sIOxCfFQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.24.1", + "css-box-model": "^1.2.1", + "memoize-one": "^6.0.0", + "raf-schd": "^4.0.3", + "react-redux": "^8.1.3", + "redux": "^4.2.1", + "use-memo-one": "^1.1.3" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@icons/material": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", @@ -2302,9 +2270,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { "node": ">=12" @@ -2328,117 +2296,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -2514,9 +2371,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", "dev": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", @@ -2536,9 +2393,9 @@ } }, "node_modules/@jsonjoy.com/util": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz", - "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", "dev": true, "engines": { "node": ">=10.0" @@ -2552,63 +2409,63 @@ } }, "node_modules/@labkey/api": { - "version": "1.29.0", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/api/-/@labkey/api-1.29.0.tgz", - "integrity": "sha512-1knTSIIcPXK89PPxcflBGApQtS3GuZjfQFbrlefO9fi2d8xNtYsRAuWwvCOuKGXDUuj96OxMRZEGBl1R6re8vA==" + "version": "1.35.6", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/api/-/@labkey/api-1.35.6.tgz", + "integrity": "sha512-sRXZZU4FbhKHI4SDQ2wHSYt8uvQPwD/jvP5Yh68nm+6r9spsn6EbOhBuR5LAL4WMmMnsXAmmCdwN1JZ3IGg/Cw==" }, "node_modules/@labkey/build": { - "version": "7.1.0", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-7.1.0.tgz", - "integrity": "sha512-Kt6K7tVluNVplOKupJ52eYufFQVkf+iJZKpUoJ6PcZtsOpClDZxe4tnW0jP26EfkftxG2fWj9tbA7e4KEz/BSQ==", - "dev": true, - "dependencies": { - "@babel/core": "~7.22.20", - "@babel/plugin-transform-class-properties": "~7.22.5", - "@babel/plugin-transform-object-rest-spread": "~7.22.15", - "@babel/preset-env": "~7.22.20", - "@babel/preset-react": "~7.22.15", - "@babel/preset-typescript": "~7.22.15", - "@pmmmwh/react-refresh-webpack-plugin": "~0.5.11", - "ajv": "~8.12.0", + "version": "8.2.0", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-8.2.0.tgz", + "integrity": "sha512-FVVF5CHlGQ2Mqq8795mWrxaXxSt2hxei+gGRKkIFHgfhiJdKGv0uUrjRUCLU5iP7VJ+ORwkWlPhPp6aPqrWIrw==", + "dev": true, + "dependencies": { + "@babel/core": "~7.24.9", + "@babel/plugin-transform-class-properties": "~7.24.7", + "@babel/plugin-transform-object-rest-spread": "~7.24.7", + "@babel/preset-env": "~7.24.8", + "@babel/preset-react": "~7.24.7", + "@babel/preset-typescript": "~7.24.7", + "@pmmmwh/react-refresh-webpack-plugin": "~0.5.15", + "ajv": "~8.17.1", "babel-loader": "~9.1.3", "bootstrap-sass": "~3.4.3", "circular-dependency-plugin": "~5.2.2", - "copy-webpack-plugin": "~11.0.0", + "copy-webpack-plugin": "~12.0.2", "cross-env": "~7.0.3", - "css-loader": "~6.8.1", - "fork-ts-checker-webpack-plugin": "~8.0.0", - "html-webpack-plugin": "~5.5.3", - "mini-css-extract-plugin": "~2.7.6", - "react-refresh": "~0.14.0", + "css-loader": "~7.1.2", + "fork-ts-checker-webpack-plugin": "~9.0.2", + "html-webpack-plugin": "~5.6.0", + "mini-css-extract-plugin": "~2.9.0", + "react-refresh": "~0.14.2", "resolve-url-loader": "~5.0.0", - "rimraf": "~5.0.1", - "sass": "~1.67.0", - "sass-loader": "~13.3.2", - "style-loader": "~3.3.3", - "typescript": "~5.2.2", - "webpack": "~5.88.2", - "webpack-bundle-analyzer": "~4.9.1", + "rimraf": "~6.0.1", + "sass": "~1.77.8", + "sass-loader": "~14.2.1", + "style-loader": "~4.0.0", + "typescript": "~5.5.4", + "webpack": "~5.93.0", + "webpack-bundle-analyzer": "~4.10.2", "webpack-cli": "~5.1.4", - "webpack-dev-server": "~4.15.1" + "webpack-dev-server": "~5.0.4" } }, "node_modules/@labkey/build/node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -2622,12 +2479,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@labkey/build/node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, "node_modules/@labkey/build/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -2637,4940 +2488,2856 @@ "ajv": "^6.9.1" } }, - "node_modules/@labkey/build/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "node_modules/@labkey/build/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/@labkey/build/node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "node_modules/@labkey/build/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" } }, - "node_modules/@labkey/build/node_modules/css-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/@labkey/build/node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@labkey/build/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@labkey/build/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=8" + "node": ">=14.17" } }, - "node_modules/@labkey/build/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@labkey/build/node_modules/webpack": { + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@labkey/build/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, "bin": { - "is-docker": "cli.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/@labkey/build/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/@labkey/components": { + "version": "5.20.4", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-5.20.4.tgz", + "integrity": "sha512-OpCA8QmiwxAgiyJnq+lcW9cYwsd2XfWgoN2wTRolqV1IJiCLxcirDb55AeMW8SrK/c+8QY1Ycu+/nDqxJ3B4kQ==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } + "@hello-pangea/dnd": "16.6.0", + "@labkey/api": "1.35.6", + "@testing-library/dom": "~10.4.0", + "@testing-library/jest-dom": "~6.5.0", + "@testing-library/react": "~16.0.1", + "@testing-library/user-event": "~14.5.2", + "bootstrap": "~3.4.1", + "classnames": "~2.5.1", + "date-fns": "~3.6.0", + "date-fns-tz": "~3.1.3", + "font-awesome": "~4.7.0", + "immer": "~10.1.1", + "immutable": "~3.8.2", + "normalizr": "~3.6.2", + "numeral": "~2.0.6", + "react": "~18.3.1", + "react-color": "~2.19.3", + "react-datepicker": "~7.3.0", + "react-dom": "~18.3.1", + "react-router-dom": "~6.24.1", + "react-select": "~5.8.0", + "react-treebeard": "~3.2.4", + "vis-data": "~7.1.9", + "vis-network": "~9.1.9" + } }, - "node_modules/@labkey/build/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, - "node_modules/@labkey/build/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@labkey/build/node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@labkey/build/node_modules/style-loader": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", - "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "webpack": "^5.0.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@labkey/build/node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "optional": true, "engines": { - "node": ">=14.17" + "node": ">=14" } }, - "node_modules/@labkey/build/node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", + "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" }, "engines": { - "node": ">=10.13.0" + "node": ">= 10.13" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" }, "peerDependenciesMeta": { - "webpack-cli": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { "optional": true } } }, - "node_modules/@labkey/build/node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://opencollective.com/popperjs" } }, - "node_modules/@labkey/build/node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, + "node_modules/@react-aria/ssr": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "@swc/helpers": "^0.5.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 12" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@labkey/build/node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/@remix-run/router": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.1.tgz", + "integrity": "sha512-mCOMec4BKd6BRGBZeSnGiIgwsbLGp3yhVqAD8H+PxiRNEHgDpZb8J1TnrSDlg97t0ySKMQJTHCWBCmBpSmkF6Q==", "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "dequal": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "react": ">=16.8.0" } }, - "node_modules/@labkey/build/node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "node_modules/@restart/ui": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.1.tgz", + "integrity": "sha512-qghR21ynHiUrpcIkKCoKYB+3rJtezY5Y7ikrwradCL+7hZHdQ2Ozc5ffxtpmpahoAGgc31gyXaSx2sXXaThmqA==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/runtime": "^7.26.0", + "@popperjs/core": "^2.11.8", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.5.0", + "@types/warning": "^3.0.3", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.4", + "warning": "^4.0.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" } }, - "node_modules/@labkey/build/node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, + "node_modules/@restart/ui/node_modules/@restart/hooks": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.0.tgz", + "integrity": "sha512-wS+h6IusJCPjTkmOOrRZxIPICD/mtFA3PRZviutoM23/b7akyDGfZF/WS+nIFk27u7JDhPE2+0GBdZxjSqHZkg==", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" + "dequal": "^2.0.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "react": ">=16.8.0" } }, - "node_modules/@labkey/build/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node": ">=18" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@labkey/components": { - "version": "3.24.11", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-3.24.11.tgz", - "integrity": "sha512-P5Xle6XvylCVMKIyOg9Y8pU6btGO0qcpdP9JLs+B2e1t62epzT5xY6UOstBR6wtagaTyZjfjtFsEkUMc2zclcQ==", - "dev": true, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "dependencies": { - "@labkey/api": "1.29.0", - "@testing-library/jest-dom": "~5.17.0", - "@testing-library/react": "~12.1.5", - "@testing-library/user-event": "~12.8.3", - "bootstrap": "~3.4.1", - "classnames": "~2.3.2", - "enzyme": "~3.11.0", - "font-awesome": "~4.7.0", - "formsy-react": "~1.1.5", - "immer": "~10.0.2", - "immutable": "~3.8.2", - "moment": "~2.29.3", - "moment-timezone": "~0.5.38", - "normalizr": "~3.6.1", - "numeral": "~2.0.6", - "react": "~16.14.0", - "react-beautiful-dnd": "~13.1.1", - "react-bootstrap": "~0.33.1", - "react-color": "~2.19.3", - "react-datepicker": "~4.17.0", - "react-dom": "~16.14.0", - "react-router-dom": "~6.20.1", - "react-select": "~5.7.0", - "react-treebeard": "~3.2.4", - "vis-network": "~6.5.2" - }, - "peerDependencies": { - "immutable": "^3.8.2", - "react": "^16.0", - "react-bootstrap": "^0.33.1", - "react-dom": "^16.0" + "tslib": "^2.8.0" } }, - "node_modules/@labkey/components/node_modules/dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "dev": true, + "node_modules/@tanem/svg-injector": { + "version": "10.1.68", + "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", + "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", "dependencies": { - "@babel/runtime": "^7.1.2" + "@babel/runtime": "^7.23.2", + "content-type": "^1.0.5", + "tslib": "^2.6.2" } }, - "node_modules/@labkey/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/@labkey/components/node_modules/react-bootstrap": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.33.1.tgz", - "integrity": "sha512-qWTRravSds87P8WC82tETy2yIso8qDqlIm0czsrduCaYAFtHuyLu0XDbUlfLXeRzqgwm5sRk2wRaTNoiVkk/YQ==", + "node_modules/@testing-library/jest-dom": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", + "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", "dev": true, "dependencies": { - "@babel/runtime-corejs2": "^7.0.0", - "classnames": "^2.2.5", - "dom-helpers": "^3.2.0", - "invariant": "^2.2.4", - "keycode": "^2.2.0", - "prop-types": "^15.6.1", - "prop-types-extra": "^1.0.1", - "react-overlays": "^0.9.0", - "react-prop-types": "^0.4.0", - "react-transition-group": "^2.0.0", - "uncontrollable": "^7.0.2", - "warning": "^3.0.0" + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" }, - "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/@labkey/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": "^16.14.0" + "engines": { + "node": ">=8" } }, - "node_modules/@labkey/components/node_modules/react-overlays": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.9.3.tgz", - "integrity": "sha512-u2T7nOLnK+Hrntho4p0Nxh+BsJl0bl4Xuwj/Y0a56xywLMetgAfyjnDVrudLXsNcKGaspoC+t3C1V80W9QQTdQ==", + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, + "node_modules/@testing-library/react": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", + "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", "dev": true, "dependencies": { - "classnames": "^2.2.5", - "dom-helpers": "^3.2.1", - "prop-types": "^15.5.10", - "prop-types-extra": "^1.0.1", - "react-transition-group": "^2.2.1", - "warning": "^3.0.0" + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@labkey/components/node_modules/react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, - "dependencies": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" + "engines": { + "node": ">=12", + "npm": ">=6" }, "peerDependencies": { - "react": ">=15.0.0", - "react-dom": ">=15.0.0" + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@labkey/components/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@labkey/components/node_modules/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "@types/node": "*" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@types/d3-selection": "*" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "dev": true, - "optional": true, - "engines": { - "node": ">=14" + "dependencies": { + "@types/d3-selection": "*" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", - "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "dev": true, "dependencies": { - "ansi-html": "^0.0.9", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^4.2.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x || 5.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.25", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", - "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "dev": true }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true }, - "node_modules/@react-aria/ssr": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", - "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/d3-selection": "*" } }, - "node_modules/@remix-run/router": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", - "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "dev": true, - "engines": { - "node": ">=14.0.0" + "dependencies": { + "@types/d3-dsv": "*" } }, - "node_modules/@restart/hooks": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", - "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, "dependencies": { - "dequal": "^2.0.3" - }, - "peerDependencies": { - "react": ">=16.8.0" + "@types/geojson": "*" } }, - "node_modules/@restart/ui": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.9.tgz", - "integrity": "sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw==", + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.21.0", - "@popperjs/core": "^2.11.6", - "@react-aria/ssr": "^3.5.0", - "@restart/hooks": "^0.4.9", - "@types/warning": "^3.0.0", - "dequal": "^2.0.3", - "dom-helpers": "^5.2.0", - "uncontrollable": "^8.0.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.14.0", - "react-dom": ">=16.14.0" + "@types/d3-color": "*" } }, - "node_modules/@restart/ui/node_modules/uncontrollable": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", - "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", - "peerDependencies": { - "react": ">=16.14.0" - } + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "dev": true }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", "dev": true }, - "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dev": true, "dependencies": { - "tslib": "^2.4.0" + "@types/d3-time": "*" } }, - "node_modules/@tanem/svg-injector": { - "version": "10.1.68", - "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", - "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.23.2", - "content-type": "^1.0.5", - "tslib": "^2.6.2" + "@types/d3-path": "*" } }, - "node_modules/@testing-library/dom": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "dev": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=12" + "@types/d3-selection": "*" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "dependencies": { - "deep-equal": "^2.0.5" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "node_modules/@testing-library/dom/node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/express-serve-static-core": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz", + "integrity": "sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=8", - "npm": ">=6", - "yarn": ">=1" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "dev": true }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/node": "*" } }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/node": { + "version": "22.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", + "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "undici-types": "~6.20.0" } }, - "node_modules/@testing-library/react": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", - "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.0.0", - "@types/react-dom": "<18.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "<18.0.0", - "react-dom": "<18.0.0" + "@types/node": "*" } }, - "node_modules/@testing-library/react/node_modules/@types/react": { - "version": "17.0.80", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", - "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", - "dev": true, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + }, + "node_modules/@types/qs": { + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, - "node_modules/@testing-library/react/node_modules/@types/react-dom": { - "version": "17.0.25", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", - "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@testing-library/user-event": { - "version": "12.8.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", - "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", + "node_modules/@types/react-bootstrap": { + "version": "0.32.37", + "resolved": "https://registry.npmjs.org/@types/react-bootstrap/-/react-bootstrap-0.32.37.tgz", + "integrity": "sha512-CVHj++uxsj1pRnM3RQ/NAXcWj+JwJZ3MqQ28sS1OQUD1sI2gRlbeAjRT+ak2nuwL+CY+gtnIsMaIDq0RNfN0PA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" + "@types/react": "*" } }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@types/react": "*" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { - "@types/node": "*" + "@types/react": "*" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "dependencies": { - "@types/express-serve-static-core": "*", + "@types/mime": "^1", "@types/node": "*" } }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "dev": true - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "dev": true - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "dev": true - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "dev": true, - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "dev": true - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", - "dev": true - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "dev": true - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "dev": true - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "dev": true, - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "dev": true - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "dev": true - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dev": true, - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "dev": true - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dev": true, - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", - "dev": true - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "dev": true - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "dev": true - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "dev": true - }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", - "dev": true, - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", - "dev": true - }, - "node_modules/@types/d3-selection": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", - "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", - "dev": true - }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", - "dev": true, - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", - "dev": true - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "dev": true - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "dev": true - }, - "node_modules/@types/d3-transition": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "dev": true, - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", - "dev": true - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dev": true, - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-bootstrap": { - "version": "0.32.36", - "resolved": "https://registry.npmjs.org/@types/react-bootstrap/-/react-bootstrap-0.32.36.tgz", - "integrity": "sha512-xldfs2zixagAFEafy/XzRvZH1NtjRnLfbgL0cZ2a0Eykz+iILE/Xa46tnUFcLln6ZBq1Qp9uArhIbkkuhBU30g==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dev": true, - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dev": true, - "dependencies": { - "@types/jest": "*" - } - }, - "node_modules/@types/warning": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", - "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-html": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", - "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/array.prototype.filter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.4.tgz", - "integrity": "sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-array-method-boxes-properly": "^1.0.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", - "dev": true, - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-plugin-emotion": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", - "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.16", - "babel-plugin-macros": "^2.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "find-root": "^1.1.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/serialize": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", - "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", - "dev": true, - "dependencies": { - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/unitless": "0.7.5", - "@emotion/utils": "0.11.3", - "csstype": "^2.5.7" - } - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-emotion/node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "dev": true - }, - "node_modules/babel-plugin-emotion/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", - "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", - "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/better-npm-run": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/better-npm-run/-/better-npm-run-0.1.1.tgz", - "integrity": "sha512-SBBYsUsb6bYcUMF9QUWy39GX5kzD4CoRBP11gx/k5jYkUr4Tr+irAokIeQX5FgfCRz0Q27rt8U0J4D2TlRgQFA==", - "dev": true, - "dependencies": { - "commander": "^2.9.0", - "dotenv": "^2.0.0", - "object-assign": "^4.0.1" - }, - "bin": { - "better-npm-run": "index.js", - "bnr": "index.js" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/bootstrap-sass": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", - "integrity": "sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001641", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", - "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.1" - } - }, - "node_modules/classnames": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.3.tgz", - "integrity": "sha512-1inzZmicIFcmUya7PGtUQeXtcF7zZpPnxtQoYOrz0uiOBGlLFa4ik4361seYL2JCcRDIyfdFHiwQolESFlw+Og==" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/compute-scroll-into-view": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", - "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", - "dev": true, - "dependencies": { - "browserslist": "^4.23.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", - "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-box-model": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", - "dev": true, - "dependencies": { - "tiny-invariant": "^1.0.6" - } - }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" + "@types/express": "*" } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" + "@types/node": "*" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "dev": true + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" + }, + "node_modules/@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "dev": true, "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" + "@types/node": "*" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" + "@xtuc/long": "4.2.2" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, "dependencies": { - "d3-color": "1 - 3" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "acorn": "^8.11.0" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" + "node": ">=8.9" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "dependencies": { - "d3-path": "^3.1.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "dependencies": { - "d3-array": "2 - 3" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "dependencies": { - "d3-time": "1 - 3" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" }, - "peerDependencies": { - "d3-selection": "2 - 3" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "dequal": "^2.0.3" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 14.15.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "node_modules/babel-plugin-emotion/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "node_modules/babel-plugin-emotion/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" } }, - "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "node_modules/babel-plugin-emotion/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/babel-plugin-emotion/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.0" } }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10", + "npm": ">=6" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { - "execa": "^5.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/better-npm-run": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/better-npm-run/-/better-npm-run-0.1.1.tgz", + "integrity": "sha512-SBBYsUsb6bYcUMF9QUWy39GX5kzD4CoRBP11gx/k5jYkUr4Tr+irAokIeQX5FgfCRz0Q27rt8U0J4D2TlRgQFA==", + "dev": true, "dependencies": { - "robust-predicates": "^3.0.2" + "commander": "^2.9.0", + "dotenv": "^2.0.0", + "object-assign": "^4.0.1" + }, + "bin": { + "better-npm-run": "index.js", + "bnr": "index.js" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "engines": { - "node": ">= 0.8" + "node": "*" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "node_modules/bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", "dev": true, - "dependencies": { - "utila": "~0.4" + "engines": { + "node": ">=6" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/bootstrap-sass": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", + "integrity": "sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "fill-range": "^7.1.1" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, { "type": "github", - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ai" } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, + ], "dependencies": { - "domelementtype": "^2.3.0" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, - "engines": { - "node": ">= 4" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", - "integrity": "sha512-Y+zZAmv7p2zOdpyZcSIA+aIxohsyfTcNaMeh3YJn9exq85bQhso65Wz9IhjYYNB4zyvXnfi7Ae+FuygARljVJw==", - "dev": true - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.825", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.825.tgz", - "integrity": "sha512-OCcF+LwdgFGcsYPYC5keEEFC2XT0gBhrYbeGzHCx7i9qRFbzO/AqTmc/C/1xNhJj+JA7rzlN7mpBuStshh96Cg==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "engines": { - "node": ">= 4" + "node": ">= 0.8" } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.12" + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/enzyme": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", - "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", - "dev": true, - "dependencies": { - "array.prototype.flat": "^1.2.3", - "cheerio": "^1.0.0-rc.3", - "enzyme-shallow-equal": "^1.0.1", - "function.prototype.name": "^1.1.2", - "has": "^1.0.3", - "html-element-map": "^1.2.0", - "is-boolean-object": "^1.0.1", - "is-callable": "^1.1.5", - "is-number-object": "^1.0.4", - "is-regex": "^1.0.5", - "is-string": "^1.0.5", - "is-subset": "^0.1.1", - "lodash.escape": "^4.0.1", - "lodash.isequal": "^4.5.0", - "object-inspect": "^1.7.0", - "object-is": "^1.0.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1", - "object.values": "^1.1.1", - "raf": "^3.4.1", - "rst-selector-parser": "^2.2.3", - "string.prototype.trim": "^1.2.1" + "node": ">= 8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/enzyme-shallow-equal": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", - "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "hasown": "^2.0.0", - "object-is": "^1.1.5" + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 6" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=6.0" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", "dev": true, - "dependencies": { - "stackframe": "^1.3.4" + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "source-map": "~0.6.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.0" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "es-errors": "^1.3.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "node_modules/compression": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "ms": "2.0.0" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.8" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.6" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, + "dependencies": { + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.1", + "globby": "^14.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, "engines": { - "node": ">=4.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "browserslist": "^4.24.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/core-js-pure": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz", + "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", "dev": true, - "engines": { - "node": ">= 0.6" + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "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" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 8" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", "dev": true, "dependencies": { - "ms": "2.0.0" + "tiny-invariant": "^1.0.6" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, "engines": { "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">= 4.9.1" + "node": ">=4" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "dependencies": { - "websocket-driver": ">=0.5.1" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=0.8.0" + "node": ">=12" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dependencies": { - "to-regex-range": "^5.0.1" + "internmap": "1 - 2" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" }, "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "dependencies": { - "ms": "2.0.0" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" + "d3-array": "^3.2.0" }, "engines": { - "node": ">=14.16" + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, "bin": { - "flat": "cli.js" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">= 10" } }, - "node_modules/font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", - "dev": true, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "engines": { - "node": ">=0.10.3" + "node": ">=12" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dependencies": { - "is-callable": "^1.1.3" + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "d3-array": "2.5.0 - 3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "color-convert": "^2.0.1" + "d3-color": "1 - 3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "dependencies": { - "color-name": "~1.1.4" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "d3-path": "^3.1.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "has-flag": "^4.0.0" + "d3-time": "1 - 3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/form-data-to-object": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", - "integrity": "sha512-F10KT6YgIq4CxmiMCZONnYN4PC5ommk8rLb4WmeahqDDszerxVwBrjqjXiedqUfNClMxDHj04KWGRK30aDnIpw==", - "dev": true + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, - "node_modules/formsy-react": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-1.1.6.tgz", - "integrity": "sha512-9IsV+XKQEcwvm7nZtyUTZBcl9SHgX2WKskVfvAKzQyJwMAqJ4E3Hf+6PM1E2dQo/MGYMM3pfECAbkDKwlKkp9g==", - "dev": true, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "dependencies": { - "form-data-to-object": "^0.2.0", - "prop-types": "^15.5.10" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" }, "peerDependencies": { - "react": "^15.6.1 || ^16.0.0 || ^17.0.0", - "react-dom": "^15.6.1 || ^16.0.0 || ^17.0.0" + "d3-selection": "2 - 3" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "dev": true, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/date-fns-tz": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.1.3.tgz", + "integrity": "sha512-ZfbMu+nbzW0mEzC8VZrLiSWvUIaI3aRHeq33mTe7Y38UctKukgqPR4nTDwcwS4d64Gf8GghnVsroBuMY3eiTeA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "peerDependencies": { + "date-fns": "^3.0.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/function-bind": { + "node_modules/deep-equal": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", "dev": true, + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 10" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7579,27 +5346,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -7608,745 +5375,868 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "robust-predicates": "^3.0.2" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=6" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "utila": "~0.4" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "engines": { - "node": ">=4" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "node_modules/dotenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", + "integrity": "sha512-Y+zZAmv7p2zOdpyZcSIA+aIxohsyfTcNaMeh3YJn9exq85bQhso65Wz9IhjYYNB4zyvXnfi7Ae+FuygARljVJw==", + "dev": true }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.65", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.65.tgz", + "integrity": "sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dependencies": { - "duplexer": "^0.1.2" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.13.0" } }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=4" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "stackframe": "^1.3.4" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0" + "get-intrinsic": "^1.2.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.0.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "function-bind": "^1.1.2" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4.0" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "bin": { - "he": "bin/he" + "engines": { + "node": ">=4.0" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">=0.8.x" } }, - "node_modules/html-element-map": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", - "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "array.prototype.filter": "^1.0.0", - "call-bind": "^1.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 0.10.0" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "engines": { - "node": ">= 12" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/html-webpack-plugin": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", - "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "peerDependencies": { - "webpack": "^5.20.0" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, "engines": { - "node": ">= 0.8" + "node": ">= 4.9.1" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.8.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": ">=8" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">= 0.8" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "engines": { - "node": ">=10.18" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "engines": { - "node": ">= 4" + "bin": { + "flat": "cli.js" } }, - "node_modules/immer": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", - "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.3" } }, - "node_modules/import-fresh": { + "node_modules/foreground-child": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz", + "integrity": "sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=12.13.0", + "yarn": ">=1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/inflight": { + "node_modules/fs-monkey": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "engines": { - "node": ">=10.13.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=6.9.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -8355,192 +6245,207 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { - "hasown": "^2.0.2" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.1.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "duplexer": "^0.1.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -8549,11 +6454,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -8561,718 +6469,725 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "engines": { - "node": ">=16" + "dependencies": { + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "html-minifier-terser": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 12" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, "dependencies": { - "call-bind": "^1.0.7" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.14" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10.17.0" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10.18" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "is-inside-container": "^1.0.0" - }, "engines": { - "node": ">=16" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "find-up": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "hasown": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/jest-message-util/node_modules/slash": { + "node_modules/is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-worker": { @@ -9289,15 +7204,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -9318,16 +7224,28 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-even-better-errors": { @@ -9365,12 +7283,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/keycode": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", - "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==", - "dev": true - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -9381,9 +7293,9 @@ } }, "node_modules/launch-editor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", - "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -9450,48 +7362,6 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.invokemap": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", - "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, - "node_modules/lodash.pullall": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", - "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", - "dev": true - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -9558,16 +7428,19 @@ } }, "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "dev": true }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -9594,9 +7467,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -9665,12 +7538,13 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.7", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz", - "integrity": "sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" @@ -9710,33 +7584,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.45", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", - "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", - "dev": true, - "dependencies": { - "moment": "^2.29.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "dev": true - }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -9747,9 +7594,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/multicast-dns": { @@ -9766,9 +7613,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -9783,32 +7630,10 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "engines": { "node": ">= 0.6" @@ -9846,9 +7671,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/normalize-path": { @@ -9898,63 +7723,20 @@ "engines": { "node": "*" } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, "engines": { "node": ">= 0.4" }, @@ -9962,35 +7744,29 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, "dependencies": { "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { @@ -10020,15 +7796,6 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -10102,9 +7869,9 @@ } }, "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "dependencies": { "@types/retry": "0.12.2", @@ -10128,9 +7895,9 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true }, "node_modules/param-case": { @@ -10173,31 +7940,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -10226,15 +7968,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -10251,31 +7984,34 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "engines": { + "node": "20 || >=22" + } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/path-type": { @@ -10287,16 +8023,10 @@ "node": ">=8" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -10325,19 +8055,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -10355,8 +8076,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10375,13 +8096,13 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", + "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -10392,12 +8113,12 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -10422,9 +8143,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -10554,12 +8275,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -10588,40 +8309,12 @@ } ] }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, - "dependencies": { - "performance-now": "^2.1.0" - } - }, "node_modules/raf-schd": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", "dev": true }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "dev": true - }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dev": true, - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10655,15 +8348,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -10687,33 +8371,14 @@ "node": ">=0.10.0" } }, - "node_modules/react-beautiful-dnd": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", - "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.9.2", - "css-box-model": "^1.2.0", - "memoize-one": "^5.1.1", - "raf-schd": "^4.0.2", - "react-redux": "^7.2.0", - "redux": "^4.0.4", - "use-memo-one": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.5 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-bootstrap": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.4.tgz", - "integrity": "sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q==", + "version": "2.10.6", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.6.tgz", + "integrity": "sha512-fNvKytSp0nHts1WRnRBJeBEt+I9/ZdrnhIjWOucEduRNvFRU1IXjZueDdWnBiqsTSJ7MckQJi9i/hxGolaRq+g==", "dependencies": { "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", - "@restart/ui": "^1.6.9", + "@restart/ui": "^1.9.0", "@types/react-transition-group": "^4.4.6", "classnames": "^2.3.2", "dom-helpers": "^5.2.1", @@ -10780,17 +8445,16 @@ } }, "node_modules/react-datepicker": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.17.0.tgz", - "integrity": "sha512-z50H44XbnkYlns7gVHzHK4jWAzLfvQehh5Lvindb09J97yVJKIbsmHs98D0f77tdZc3dSYM7oAqsFY55dBeOGQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-7.3.0.tgz", + "integrity": "sha512-EqRKLAtLZUTztiq6a+tjSjQX9ES0Xd229JPckAtyZZ4GoY3rtvNWAzkYZnQUf6zTWT50Ki0+t+W9VRQIkSJLfg==", "dev": true, "dependencies": { - "@popperjs/core": "^2.11.8", - "classnames": "^2.2.6", - "date-fns": "^2.30.0", + "@floating-ui/react": "^0.26.2", + "clsx": "^2.1.0", + "date-fns": "^3.3.1", "prop-types": "^15.7.2", - "react-onclickoutside": "^6.13.0", - "react-popper": "^2.3.0" + "react-onclickoutside": "^6.13.0" }, "peerDependencies": { "react": "^16.9.0 || ^17 || ^18", @@ -10900,52 +8564,51 @@ "react-dom": "^16.8.0 || ^17 || ^18" } }, - "node_modules/react-prop-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", - "integrity": "sha512-IyjsJhDX9JkoOV9wlmLaS7z+oxYoIWhfzDcFy7inwoAKTu+VcVNrVpPmLeioJ94y6GeDRsnwarG1py5qofFQMg==", - "dev": true, - "dependencies": { - "warning": "^3.0.0" - }, - "peerDependencies": { - "react": ">=0.14.0" - } - }, - "node_modules/react-prop-types/node_modules/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/react-redux": { - "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, "react-dom": { "optional": true }, "react-native": { "optional": true + }, + "redux": { + "optional": true } } }, + "node_modules/react-redux/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -10956,12 +8619,12 @@ } }, "node_modules/react-router": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", - "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.1.tgz", + "integrity": "sha512-PTXFXGK2pyXpHzVo3rR9H7ip4lSPZZc0bHG5CARmj65fTT6qG7sTngmb6lcYu1gf3y/8KxORoy9yn59pGpCnpg==", "dev": true, "dependencies": { - "@remix-run/router": "1.13.1" + "@remix-run/router": "1.17.1" }, "engines": { "node": ">=14.0.0" @@ -10971,13 +8634,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", - "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.1.tgz", + "integrity": "sha512-U19KtXqooqw967Vw0Qcn5cOvrX5Ejo9ORmOtJMzYWtCT4/WOfFLIZGGsVLxcd9UkBO0mSTZtXqhZBsWlHr7+Sg==", "dev": true, "dependencies": { - "@remix-run/router": "1.13.1", - "react-router": "6.20.1" + "@remix-run/router": "1.17.1", + "react-router": "6.24.1" }, "engines": { "node": ">=14.0.0" @@ -10988,9 +8651,9 @@ } }, "node_modules/react-select": { - "version": "5.7.7", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", - "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.3.tgz", + "integrity": "sha512-lVswnIq8/iTj1db7XCG74M/3fbGB6ZaluCzvwPGT5ZOjCdL/k0CLWhEK0vCBLuU5bHTEf6Gj8jtSvi+3v+tO1w==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.0", @@ -11008,20 +8671,14 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/react-select/node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "dev": true - }, "node_modules/react-svg": { - "version": "16.1.34", - "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.34.tgz", - "integrity": "sha512-L4ak1qNFLgzVbHm0xQEpHoIOqb3um/B0ybahd3U2TKoGZxb0JaPVI5lsAhvSng2P1kcsYEok2Z7RpcKx7arJGw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.2.0.tgz", + "integrity": "sha512-qx02E8tPEMmrs6zwaZyyDnC2CxzNWcw0AOayN4tfogVfDAsNxYxuYrcGKuzr5RrD+rdmtS2GnIzW0RG03Fgerw==", "dependencies": { - "@babel/runtime": "^7.24.1", + "@babel/runtime": "^7.26.0", "@tanem/svg-injector": "^10.1.68", - "@types/prop-types": "^15.7.12", + "@types/prop-types": "^15.7.13", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -11140,9 +8797,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -11172,15 +8829,15 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11190,15 +8847,15 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -11206,27 +8863,24 @@ "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -11239,101 +8893,14 @@ "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" } }, "node_modules/require-from-string": { @@ -11429,15 +8996,6 @@ "node": ">=0.10.0" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -11458,18 +9016,19 @@ } }, "node_modules/rimraf": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", - "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "dependencies": { - "glob": "^10.3.7" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": "14 >=14.20 || 16 >=16.20 || >=18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11480,16 +9039,6 @@ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, - "node_modules/rst-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", - "integrity": "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==", - "dev": true, - "dependencies": { - "lodash.flattendeep": "^4.4.0", - "nearley": "^2.7.10" - } - }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -11530,24 +9079,6 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -11568,32 +9099,15 @@ } ] }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", - "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -11608,29 +9122,29 @@ } }, "node_modules/sass-loader": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", - "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", + "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", "dev": true, "dependencies": { "neo-async": "^2.6.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", + "@rspack/core": "0.x || 1.x", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -11641,13 +9155,16 @@ }, "sass-embedded": { "optional": true + }, + "webpack": { + "optional": true } } }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", "dev": true }, "node_modules/scheduler": { @@ -11714,9 +9231,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -11752,11 +9269,14 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/serialize-javascript": { "version": "6.0.2", @@ -11846,15 +9366,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -11990,12 +9510,12 @@ } }, "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12021,9 +9541,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12078,27 +9598,6 @@ "wbuf": "^1.7.3" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -12114,18 +9613,6 @@ "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -12174,9 +9661,9 @@ "dev": true }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { "node": ">=12" @@ -12200,55 +9687,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -12318,15 +9756,14 @@ "dev": true }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -12341,6 +9778,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -12350,9 +9793,9 @@ } }, "node_modules/terser": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", - "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -12480,15 +9923,6 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12531,198 +9965,61 @@ "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-loader/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-loader/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" + "tslib": "2" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "node_modules/ts-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12731,21 +10028,6 @@ "node": ">=14.17" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/uncontrollable": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", @@ -12761,15 +10043,15 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "engines": { "node": ">=4" @@ -12789,9 +10071,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "engines": { "node": ">=4" @@ -12806,6 +10088,18 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -12825,9 +10119,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -12844,8 +10138,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -12891,6 +10185,15 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -12977,21 +10280,36 @@ "react-dom": ">=15.0.0" } }, + "node_modules/vis-data": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/vis-data/-/vis-data-7.1.9.tgz", + "integrity": "sha512-COQsxlVrmcRIbZMMTYwD+C2bxYCFDNQ2EHESklPiInbD/Pk3JZ6qNL84Bp9wWjYjAzXfSlsNaFtRk+hO9yBPWA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "vis-util": "^5.0.1" + } + }, "node_modules/vis-network": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-6.5.2.tgz", - "integrity": "sha512-Dj5oEtZMUWuhq7D7dwdmxmtJgrK3kwfV4Ov/ePSrhPZgNdJlXzpeDZU/Eq0pKGyOAPLClemgVImc0bZpZ4Yafw==", + "version": "9.1.9", + "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-9.1.9.tgz", + "integrity": "sha512-Ft+hLBVyiLstVYSb69Q1OIQeh3FeUxHJn0WdFcq+BFPqs+Vq1ibMi2sb//cxgq1CP7PH4yOXnHxEH/B2VzpZYA==", "dev": true, - "hasInstallScript": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/visjs" }, "peerDependencies": { - "keycharm": "^0.2.0", - "moment": "^2.24.0", - "vis-data": "^6.2.1", - "vis-util": "^1.1.8" + "@egjs/hammerjs": "^2.0.0", + "component-emitter": "^1.3.0", + "keycharm": "^0.2.0 || ^0.3.0 || ^0.4.0", + "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "vis-data": "^6.3.0 || ^7.0.0", + "vis-util": "^5.0.1" } }, "node_modules/warning": { @@ -13003,9 +10321,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -13072,24 +10390,19 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", - "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "commander": "^7.2.0", + "debounce": "^1.2.1", "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "is-plain-object": "^5.0.0", - "lodash.debounce": "^4.0.8", - "lodash.escape": "^4.0.1", - "lodash.flatten": "^4.4.0", - "lodash.invokemap": "^4.6.0", - "lodash.pullall": "^4.2.0", - "lodash.uniqby": "^4.7.0", + "html-escaper": "^2.0.2", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", @@ -13111,18 +10424,6 @@ "node": ">= 10" } }, - "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-cli": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", @@ -13178,9 +10479,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", - "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, "dependencies": { "colorette": "^2.0.10", @@ -13207,13 +10508,13 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz", - "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz", + "integrity": "sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==", "dev": true, "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.1.2", + "@jsonjoy.com/util": "^1.3.0", "tree-dump": "^1.0.1", "tslib": "^2.0.0" }, @@ -13284,6 +10585,102 @@ } } }, + "node_modules/webpack-dev-server/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/webpack-dev-server/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -13415,59 +10812,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -13509,39 +10853,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -13563,9 +10874,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { "node": ">=12" @@ -13601,12 +10912,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, "node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", diff --git a/CageUI/package.json b/CageUI/package.json index 0dc9dd30b..ee89b3323 100644 --- a/CageUI/package.json +++ b/CageUI/package.json @@ -19,7 +19,7 @@ "author": "", "license": "ISC", "dependencies": { - "@labkey/api": "1.29.0", + "@labkey/api": "1.35.6", "dayjs": "^1.11.8", "react": "~18.3.1", "react-bootstrap": "~2.10.4", @@ -34,8 +34,8 @@ }, "devDependencies": { "@babel/core": "7.24.7", - "@labkey/build": "7.1.0", - "@labkey/components": "3.24.11", + "@labkey/build": "8.2.0", + "@labkey/components": "5.20.4", "@types/react": "~18.3.3", "@types/react-bootstrap": "~0.32.32", "@types/react-dom": "~18.3.0", diff --git a/CageUI/src/client/entryPoints.js b/CageUI/src/client/entryPoints.js index 198497db0..8c786f425 100644 --- a/CageUI/src/client/entryPoints.js +++ b/CageUI/src/client/entryPoints.js @@ -3,13 +3,13 @@ module.exports = { { name: "home", title: "Cage Display", - permission: "login", + permissionClasses: ['org.labkey.api.security.permissions.ReadPermission'], path: './src/client/home' }, { name: "editLayout", title: "Room Layout Editor", - permission: "login", + permissionClasses: ['org.labkey.api.security.permissions.ReadPermission'], path: './src/client/layoutEditor' }] }; From 8d323e02691625cb18a823d63083116d0afaeec4 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Mon, 2 Dec 2024 11:18:02 -0600 Subject: [PATCH 148/357] Fixed bug not letting merging happen after rename --- CageUI/src/client/components/Editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CageUI/src/client/components/Editor.tsx b/CageUI/src/client/components/Editor.tsx index be09f4c63..ce3dae85f 100644 --- a/CageUI/src/client/components/Editor.tsx +++ b/CageUI/src/client/components/Editor.tsx @@ -88,7 +88,7 @@ const Editor = () => { // Effect checks for merging/connecting after a rack is moved useEffect(() => { - if(!selectedObj || cageNumChange) return; + if(!selectedObj) return; const objSvg = d3.select(`#${selectedObj}`); // return if selected object is not a rack group or rack if(!objSvg.classed('rack') && !objSvg.classed('rack-group')) return; From aae62278c5af5c24c0026484c1be53ac2d95595c Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Tue, 10 Dec 2024 16:22:57 -0600 Subject: [PATCH 149/357] Added resizeable room border and set up default room sizes --- .../web/CageUI/static/RoomBorder.svg | 14 ++ CageUI/src/client/cageui.scss | 75 +++++++- .../src/client/components/ContextManager.tsx | 7 +- CageUI/src/client/components/Editor.tsx | 172 +++++++++++++----- .../client/components/EditorContextMenu.tsx | 21 ++- .../client/components/LayoutEditorHelpers.ts | 158 +++++++++++++--- .../client/components/RoomSizeSelector.tsx | 59 ++++++ CageUI/src/client/components/helpers.ts | 9 + .../src/client/layoutEditor/LayoutEditor.tsx | 39 +++- 9 files changed, 477 insertions(+), 77 deletions(-) create mode 100644 CageUI/resources/web/CageUI/static/RoomBorder.svg create mode 100644 CageUI/src/client/components/RoomSizeSelector.tsx diff --git a/CageUI/resources/web/CageUI/static/RoomBorder.svg b/CageUI/resources/web/CageUI/static/RoomBorder.svg new file mode 100644 index 000000000..94eceae31 --- /dev/null +++ b/CageUI/resources/web/CageUI/static/RoomBorder.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index f2845eb38..f8bbb474b 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -865,4 +865,77 @@ menu[title]:before { menu:not([title]):before { content: "\2630"; } -// End Editor Context menu styles \ No newline at end of file +// End Editor Context menu styles + +// Room Size Selector styles + +/* General popup styling */ +.room-size-selector-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; +} + +.room-size-selector-content { + background: #fff; + padding: 20px; + border-radius: 8px; + width: 400px; + max-width: 90%; +} + +.room-size-selector-options-container { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 20px; +} + +.room-size-selector-option-card { + padding: 15px; + border: 2px solid #ccc; + border-radius: 8px; + cursor: pointer; + transition: border-color 0.3s ease; +} + +.room-size-selector-option-card:hover { + border-color: #007bff; +} + +.room-size-selector-option-card.selected { + border-color: #007bff; + background-color: #e9f7fe; +} + +.room-size-selector-actions { + display: flex; + justify-content: space-between; +} + +.room-size-selector-close-btn, .room-size-selector-select-btn { + padding: 10px 20px; + border: none; + cursor: pointer; + border-radius: 5px; +} + +.room-size-selector-close-btn { + background-color: #ccc; +} + +.room-size-selector-select-btn { + background-color: #007bff; + color: white; +} + +.room-size-selector-select-btn:disabled { + background-color: #007bff80; + cursor: not-allowed; +} diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index a8c9e696b..b5d2c86b7 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -238,12 +238,12 @@ export const LayoutContextProvider: FC = ({children, prevRoo const [layoutSvg, setLayoutSvg] = useState>(null); - const [activeGroups, setActiveGroups] = useState([]); // Tracks currently active groups of racks const [nextAvailGroup, setNextAvailGroup] = useState(`rack-group-1`); // Tracks currently active groups of racks const [cageNumChange, setCageNumChange] = useState<{before: number, after: number} | null>(null); + + // the id of the clicked on svg group for either dragging or context menu opening. const [selectedObj, setSelectedObj] = useState(null); - const [clickedCage, setClickedCage] = useState(null); // instead of tying scale to each location, manage one scale for the whole layout const [scale, setScale] = useState(1); @@ -712,16 +712,15 @@ export const LayoutContextProvider: FC = ({children, prevRoo useEffect(() => { if(!prevRoom.name) return; + //TODO make sure rack-group ids are correct const newLocalRoom: Room = buildNewLocalRoom(prevRoom); const newUnitLocs: UnitLocations = buildNewLocs(prevRoom.data); - const newGroupIds: GroupId[] = newLocalRoom.rackGroups.map((group) => group.groupId); console.log("Load Data: ", prevRoom); console.log("New Room State: ", newLocalRoom); console.log("layout: ", layoutSvg.node()); - setActiveGroups(newGroupIds); addPrevRoomSvgs(newLocalRoom, layoutSvg); setUnitLocs(newUnitLocs); setLocalRoom(newLocalRoom); diff --git a/CageUI/src/client/components/Editor.tsx b/CageUI/src/client/components/Editor.tsx index ce3dae85f..29dfb7350 100644 --- a/CageUI/src/client/components/Editor.tsx +++ b/CageUI/src/client/components/Editor.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; -import { useEffect, useRef, useState } from 'react'; +import { FC, useEffect, useRef, useState } from 'react'; import * as d3 from 'd3'; -import { BaseType, svg, zoomTransform } from 'd3'; +import { BaseType, zoomTransform } from 'd3'; import { ActionURL } from '@labkey/api'; import { ReactSVG } from 'react-svg'; import { useLayoutContext } from './ContextManager'; @@ -27,7 +27,7 @@ import { checkAdjacent, createDragInLayout, createEndDragInLayout, - createStartDragInLayout, + createStartDragInLayout, dragBorder, drawGrid, findCageInGroup, findRackInGroup, @@ -42,19 +42,25 @@ import { } from './LayoutEditorHelpers'; import EditorContextMenu from './EditorContextMenu'; import { parseLongId, parseRoomItemNum, parseRoomItemType } from './helpers'; +import { SelectorOptions } from './RoomSizeSelector'; -const Editor = () => { +interface EditorProps { + roomSize?: SelectorOptions +} + +const Editor: FC = ({roomSize}) => { const SVG_WIDTH = 1290; // pixel width of the layout svg const SVG_HEIGHT = 810; // pixel height of the layout svg const SMALL_GRID_RATIO = 4; // number of cells for length/width of a small cage const LARGE_GRID_RATIO = 8; // number of cells for length/width of a large cage const GRID_SIZE = 30; // number of pixels of a cell for length/width const utilsRef = useRef(null); + const borderRef = useRef(null); const [showGrid, setShowGrid] = useState(true); const [pendingRoomUpdate, setPendingRoomUpdate] = useState(null); const [renameCage, setRenameCage] = useState(false); const [changeRackType, setChangeRack] = useState(false); - + const [borderSetup, setBorderSetup] = useState(false); // determines if the border svg has been loaded yet const [ctxMenuStyle, setCtxMenuStyle] = useState({ display: 'none', left: '', @@ -79,11 +85,30 @@ const Editor = () => { saveRoom } = useLayoutContext(); + const dragInLayout = d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) + .on('drag', createDragInLayout()) + .on('end', createEndDragInLayout({gridSize: GRID_SIZE, moveItem: moveObjLocation})); + + // combined drag in layout for objects in the layout to close menus when they are selected + const closeMenuThenDrag = d3.drag() + .on('start', function (event) { + console.log("layout Drag started xxx"); + handleContextMenuClose(); // Close the menu when drag starts + dragInLayout.on('start').call(this, event); + }) + .on('drag', function (event) { + dragInLayout.on('drag').call(this, event); + }) + .on('end', function (event) { + dragInLayout.on('end').call(this, event); + }); + useEffect(() => { console.log("xxx Room: ", room); console.log("xxx LocalRoom: ", localRoom); console.log("xxx Locs: ", unitLocs); + console.log("xxx RoomSize: ", roomSize); }, [room, localRoom, unitLocs]); // Effect checks for merging/connecting after a rack is moved @@ -204,17 +229,12 @@ const Editor = () => { const {rack: draggedRack, rackGroup: draggedRackGroup} = findRackInGroup(draggedRackShape.getAttribute('id'), localRoom.rackGroups); - const layoutDragProps: LayoutDragProps = { - gridSize: GRID_SIZE, - moveItem: moveObjLocation - }; - const cageActionProps: CageActionProps = { setSelectedObj: setSelectedObj, setCtxMenuStyle: setCtxMenuStyle, } - mergeRacks(targetRack, draggedRack, targetRackGroup, draggedRackGroup, doRackAction, layoutDragProps, cageActionProps); + mergeRacks(targetRack, draggedRack, targetRackGroup, draggedRackGroup, doRackAction, closeMenuThenDrag, cageActionProps); } setSelectedObj(null); }, [unitLocs]); @@ -255,14 +275,7 @@ const Editor = () => { addRoomItem(updateItemType, itemId, cellX, cellY, transform.k); - const addProps: LayoutDragProps = { - gridSize: GRID_SIZE, - moveItem: moveObjLocation - }; - // Reattach drag listeners for interaction within layout - group.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) - .on('drag', createDragInLayout()) - .on('end', createEndDragInLayout(addProps))); + group.call(closeMenuThenDrag); // attach click listener for context menu group.selectAll('text').each(function () { @@ -378,18 +391,31 @@ const Editor = () => { } }, [cageNumChange]); - // Create a zoom behavior + const zoomToScale = (scale: number) => { + const newTransform = d3.zoomIdentity + .translate(0, 0) + .scale(scale); + + // Apply scale to existing zoom handler + layoutSvg.call(zoom.transform, newTransform); + } + + + // Create a zoom behavior, prevent scale from changing + /*const zoom = d3.zoom() + .scaleExtent([roomSize.scale || 1, roomSize.scale || 1]) + .on("zoom", handleZoom);*/ + const zoom = d3.zoom() .scaleExtent([0.6, 1]) .on("zoom", handleZoom); - // Create drag behavior for moving the grid - const dragGrid = d3.drag() - .on("drag", handleDrag); - // Function to handle zoom for grid + // Function to handle zoom for grid, zoom also handles infinite grid generation and drag function handleZoom(event) { + handleContextMenuClose(); // close open context menu if one is open and the user drags the grid const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); + console.log("Layout Zoom Fired: ", transform); // Apply zoom/pan to each individual "draggable" group, preserving their relative positions layoutSvg.selectAll(".draggable").each(function(d: any) { @@ -407,18 +433,18 @@ const Editor = () => { updateGrid(transform, SVG_WIDTH, SVG_HEIGHT, GRID_SIZE); } - // Function to handle drag for grid movement - function handleDrag(event) { - const g = d3.select("g.grid"); - const dx = event.dx; - const dy = event.dy; - const currentTransform = g.attr("transform") || "translate(0, 0)"; - const newTransform = currentTransform.replace(/translate\(([^,]+),([^)]+)\)/, (match, x, y) => { - const newX = parseFloat(x) + dx; - const newY = parseFloat(y) + dy; - return `translate(${newX}, ${newY})`; - }); - g.attr("transform", newTransform); + /* Function to be run after the svg border_template is injected into the dom from the ReactSVG component. + ReactSVG has an afterInjection prop but that causes a rerender on the svg removing changes caused + by d3 mutations. + */ + function borderInject(svg) { + // Ensure resize handle can receive events + const resizeHandle = svg.querySelector('#resize-handle'); + resizeHandle.setAttribute('pointer-events', 'bounding-box'); + + const rect = svg.querySelector('#border-rect'); + rect.setAttribute('pointer-events', 'none'); + setBorderSetup(true); } useEffect(() => { @@ -431,6 +457,47 @@ const Editor = () => { layoutSvg.select(".grid").selectAll('.cell').remove(); }, [showGrid]); + // Border setup state attaches the data to the svg and a call listener for drag behavior + useEffect(() => { + if(!borderSetup) return; + const borderGroup: d3.Selection = d3.select('#border-template') as d3.Selection; + placeAndScaleGroup(borderGroup, 0, 0, zoomTransform(layoutSvg.node())); + borderGroup.call(dragBorder(closeMenuThenDrag, GRID_SIZE, borderGroup)); + // Set zoom after border is loaded in + if(roomSize){ + zoomToScale(roomSize.scale); + } + setBorderSetup(false); + }, [borderSetup]); + + // Effect attaches an observer to the border_template svg. after it is injected into the dom it will run + // the function borderInject to set the state for border setup + useEffect(() => { + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === 'childList') { + // Look for the SVG in the mutation target + const svg = borderRef.current.reactWrapper.querySelector('#border_template'); + if (svg) { + console.log('SVG has been injected via MutationObserver:', svg); + borderInject(svg); + observer.disconnect(); // Stop observing once SVG is found + } + } + }); + }); + + // Start observing the parent container for child changes + if (borderRef.current) { + observer.observe(borderRef.current.reactWrapper, { childList: true, subtree: true }); + } + + // Cleanup observer on unmount + return () => { + observer.disconnect(); + }; + }, [borderRef]); + // load grid at load in, or after it was disabled and re-enabled useEffect(() => { if(!layoutSvg || !showGrid) return; @@ -439,9 +506,9 @@ const Editor = () => { height: SVG_HEIGHT, gridSize: GRID_SIZE } + drawGrid(layoutSvg, updateGridProps); - layoutSvg.call(zoom); // Enable zoom - layoutSvg.select("g.grid").call(dragGrid); + layoutSvg.call(zoom); }, [layoutSvg, showGrid]); // closes cage editor context menu @@ -495,10 +562,7 @@ const Editor = () => { gridSize: GRID_SIZE, moveItem: moveObjLocation }; - newSvgGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: setSelectedObj})) - .on('drag', createDragInLayout()) - .on('end', createEndDragInLayout(addProps))); - + newSvgGroup.call(closeMenuThenDrag); // attach click listener for context menu newSvgGroup.selectAll('text').each(function () { const textElement: SVGTextElement = d3.select(this).node() as SVGTextElement; @@ -572,8 +636,29 @@ const Editor = () => { + > + + + + +
@@ -616,6 +701,7 @@ const Editor = () => { onClickDelete={handleDelCage} onClickRename={() => setRenameCage(true)} onClickChangeRack={() => setChangeRack(true)} + closeMenu={handleContextMenuClose} />
); diff --git a/CageUI/src/client/components/EditorContextMenu.tsx b/CageUI/src/client/components/EditorContextMenu.tsx index 674fe574d..b07982c9d 100644 --- a/CageUI/src/client/components/EditorContextMenu.tsx +++ b/CageUI/src/client/components/EditorContextMenu.tsx @@ -12,6 +12,7 @@ interface EditorContextMenuProps { onClickDelete: () => void; onClickRename: () => void; onClickChangeRack: () => void; + closeMenu: () => void; } const EditorContextMenu: FC = (props) => { @@ -19,7 +20,8 @@ const EditorContextMenu: FC = (props) => { ctxMenuStyle, onClickDelete, onClickRename, - onClickChangeRack + onClickChangeRack, + closeMenu } = props; const menuRef = useRef(null); @@ -38,6 +40,23 @@ const EditorContextMenu: FC = (props) => { onClickChangeRack(); }; + useEffect(() => { + const handleClickOutside = (event) => { + // Check if the click was outside the menu + if (menuRef.current && !menuRef.current.contains(event.target)) { + closeMenu(); // Close the menu if click is outside + } + }; + + // Add event listener to detect clicks + document.addEventListener('mousedown', handleClickOutside); + + // Cleanup event listener on component unmount + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [menuRef]); + return ( { @@ -70,7 +71,7 @@ export const updateGrid = (transform, width, height, gridSize) => { .attr("width", gridSize) .attr("height", gridSize) .attr("fill", "none") - .attr("stroke", "lightgray"); + .attr("stroke", "lightgray");//.style('pointer-events', 'bounding-box'); } } } @@ -236,14 +237,10 @@ export function setupEditCageEvent( Even though cages can not be added/removed from racks in reality, for layout building purposes they can. */ -export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRackGroup: RackGroup, dragRackGroup: RackGroup, doRackAction, layoutDragProps: LayoutDragProps, cageActionProps: CageActionProps) { +export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRackGroup: RackGroup, dragRackGroup: RackGroup, doRackAction, layoutDrag: d3.DragBehavior, cageActionProps: CageActionProps) { if(!d3.select('.popup').empty()) return; const action: RackActions = await showConfirmationPopup(); const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); - const { - gridSize, - moveItem - } = layoutDragProps; console.log("Performing Merge"); @@ -397,13 +394,7 @@ export async function mergeRacks(targetRack: Rack, draggedRack: Rack, targetRack newGroup.data([{x: targetData.x, y: targetData.y}]) } - const addProps: LayoutDragProps = { - gridSize: gridSize, - moveItem: moveItem - }; - newGroup.call(d3.drag().on('start', createStartDragInLayout({setSelectedObj: cageActionProps.setSelectedObj})) - .on('drag', createDragInLayout()) - .on('end', createEndDragInLayout(addProps))); + newGroup.call(layoutDrag); doRackAction(action,targetRackId, draggedRackId, newGroup); @@ -449,20 +440,18 @@ export const getLayoutOffset = (props: OffsetProps) => { } export const getTargetRect =(x, y, gridSize, transform) => { - // Adjust the grid size according to the current zoom level - const adjustedGridSize = gridSize; // Adjust the coordinates based on the current zoom and pan transform const adjustedX = transform.invertX(x); const adjustedY = transform.invertY(y); // Calculate the column and row index based on the adjusted grid size - const col = Math.floor(adjustedX / adjustedGridSize); - const row = Math.floor(adjustedY / adjustedGridSize); + const col = Math.floor(adjustedX / gridSize); + const row = Math.floor(adjustedY / gridSize); // Return the top-left corner coordinates of the rectangle return { - x: col * adjustedGridSize, - y: row * adjustedGridSize, + x: col * gridSize, + y: row * gridSize, }; } @@ -471,11 +460,6 @@ export function createStartDragInLayout(startDragProps: StartDragProps) { return( function startDragInLayout(event) { const {setSelectedObj} = startDragProps; - // Check if the parent element is editable, return if not - if (isTextEditable(event)) { - event.on('drag', null).on('end', null); // Detach drag and end events - return; - } setSelectedObj(d3.select(this).attr('id')); console.log('Drag Layout #1', parseRack(d3.select(this).attr('id'))); d3.select(this).raise().classed('active', true); @@ -486,7 +470,7 @@ export function createStartDragInLayout(startDragProps: StartDragProps) { export function createDragInLayout() { return( function dragInLayout(event) { - const layoutSvg: d3.Selection = d3.select('[id=layout-svg]'); + const layoutSvg: d3.Selection = d3.select('#layout-svg'); console.log('Drag Layout #2', event.x, event.y); const element = d3.select(this); const transform = d3.zoomTransform(layoutSvg.node()); @@ -526,6 +510,10 @@ export function createEndDragInLayout(props: LayoutDragProps) { const cellY = targetCell.y; const shapeType: RoomItemClass = shape.classed('room-obj') ? 'roomObj' : 'caging'; placeAndScaleGroup(shape, cellX, cellY, transform); + // make sure border template is below all other shapes on the layout + if(shape.attr('id') === 'border-template'){ + shape.lower(); + } console.log("#3: ", cellX, cellY, shape.node()); moveItem(shape.attr('id'),shapeType, cellX, cellY, transform.k); } @@ -793,5 +781,121 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection { + return( + function startResizeDrag(event) { + event.sourceEvent.stopPropagation(); + const borderRect = d3.select('#border-rect'); + const doorSvg = d3.select('#border-door'); + const layoutSvg: d3.Selection = d3.select('#layout-svg'); + + + this.startWidth = parseFloat(borderRect.attr('width')); + this.startHeight = parseFloat(borderRect.attr('height')); + + this.doorStartX = parseFloat(doorSvg.attr('x')); + this.doorStartY = parseFloat(doorSvg.attr('y')); + this.doorStartWidth = parseFloat(doorSvg.attr('width')); + this.doorStartHeight = parseFloat(doorSvg.attr('height')); + + // start x and y with respect to the layout svg + const [x, y] = d3.pointer(event.sourceEvent, layoutSvg.node()); + this.startX = x; + this.startY = y; + } + ); +} + + + +const createDragResizeDrag = (gridSize: number, borderGroup: d3.Selection) => { + return( + function dragResizeDrag(event) { + const currentRect = d3.select('#border-rect'); + const resizeHandler = borderGroup.selectAll('#resize-handle'); + const doorGroup = borderGroup.selectAll('#border-door'); + + const layoutSvg: d3.Selection = d3.select('#layout-svg'); + + // get x and y in relation to the layout svg + const [x, y] = d3.pointer(event.sourceEvent, layoutSvg.node()); + + // calculate delta x and y (change) with respect to grid size for snapping + const dx = Math.round((x - this.startX) / gridSize); + const dy = Math.round((y - this.startY) / gridSize); + + // calculate new height and width using previous delta and grid size for snapping + const newLockedWidth = this.startWidth + (dx * gridSize); + const newLockedHeight = this.startHeight + (dy * gridSize); + + const scaleX = newLockedWidth / this.startWidth; + const scaleY = newLockedHeight / this.startHeight; + + function updateSvgBounds(newSvgWidth: number, newSvgHeight: number, svgId: string) { + // Calculate new dimensions if necessary + const resizeSvg = borderGroup.select(`#${svgId}`); + + // Update the SVG's viewBox to accommodate the new size, + 1 to add a pixel of distance between the svg and everything inside + resizeSvg.attr("viewBox", `0 0 ${newSvgWidth + 1} ${newSvgHeight + 1}`); + resizeSvg.attr("width", newSvgWidth + 1); + resizeSvg.attr("height", newSvgHeight + 1); + } + + // Update rect dimensions and position + currentRect + .attr('width', newLockedWidth) + .attr('height', newLockedHeight); + + //update resize rect handler + resizeHandler.attr("x", newLockedWidth - 15) + .attr("y", newLockedHeight - 15); + + doorGroup.attr('x', this.doorStartX * scaleX) + .attr('y', this.doorStartY * scaleY); + + doorGroup.attr('width', this.doorStartWidth * scaleX) + .attr('height', this.doorStartHeight * scaleY); + + updateSvgBounds(newLockedWidth, newLockedHeight, 'border_template'); + updateSvgBounds(newLockedWidth, newLockedHeight, 'border_template_wrapper'); + + } + ); +} + +export const dragBorder = (closeMenuThenDrag, gridSize, borderGroup) => { + let targetId: string; + return d3.drag() + .on('start', function(event) { + // store target element to prevent switching + const targetElement = d3.select(event.sourceEvent.target); + // store target id, either resize handle id or room border group id + targetId = targetElement.attr('id'); + // Drag group if group is selected, otherwise resize using the rect handlers + if (targetElement.node().tagName === 'g') { + closeMenuThenDrag.on('start').call(this,event); + } else if (targetElement.node().tagName === 'rect') { + createStartResizeDrag().call(this, event); + } + }) + .on('drag', function(event) { + // Retrieve the stored target element + const targetElement = d3.select(`#${targetId}`) as d3.Selection; + if (targetElement.node().tagName === 'g') { + closeMenuThenDrag.on('drag').call(this,event); + + } else if (targetElement.node().tagName === 'rect') { + createDragResizeDrag(gridSize, borderGroup).call(this, event); + } + }) + .on('end', function(event) { + const targetElement = d3.select(`#${targetId}`) as d3.Selection; + + if (targetElement.node().tagName === 'g') { + closeMenuThenDrag.on('end').call(this,event); + } + }) +} \ No newline at end of file diff --git a/CageUI/src/client/components/RoomSizeSelector.tsx b/CageUI/src/client/components/RoomSizeSelector.tsx new file mode 100644 index 000000000..76b2644d2 --- /dev/null +++ b/CageUI/src/client/components/RoomSizeSelector.tsx @@ -0,0 +1,59 @@ +import * as React from 'react'; +import { useState } from 'react'; +import '../cageui.scss'; + +// Define the structure of an option/card +export interface SelectorOptions { + id: number; + scale: number; + title: string; + description: string; +} + +interface PopupProps { + options: SelectorOptions[]; + onClose: () => void; + onSelect: (selectedOption: SelectorOptions | null) => void; +} + +export const RoomSizeSelector: React.FC = ({ options, onClose, onSelect }) => { + const [selectedOption, setSelectedOption] = useState(null); + + // Handle the card click event + const handleOptionClick = (option: SelectorOptions) => { + setSelectedOption(option); + }; + + // Handle the select button click + const handleSelectClick = () => { + onSelect(selectedOption); + onClose(); // Close the popup after selection + }; + + return ( +
+
+

Select an Option

+ +
+ {options.map((option) => ( +
handleOptionClick(option)} + > +

{option.title}

+

{option.description}

+
+ ))} +
+
+ + +
+
+
+ ); +}; \ No newline at end of file diff --git a/CageUI/src/client/components/helpers.ts b/CageUI/src/client/components/helpers.ts index b61781dc9..87dba7b5c 100644 --- a/CageUI/src/client/components/helpers.ts +++ b/CageUI/src/client/components/helpers.ts @@ -671,6 +671,15 @@ export const getTranslation = (transform) => { return { x: 0, y: 0 }; // Default to (0, 0) if no translation is found } +export const getScaleFromTransform = (transform) => { + const scaleRegex = /scale\(([^)]+)\)/; // Regular expression to capture the number inside "scale()" + const match = transform.match(scaleRegex); + if (match) { + return parseFloat(match[1]); + } + return 1; // Default to 1 if no scale found +} + export const isTextEditable = (event) => { // Check if the parent element is editable const textElement = event.sourceEvent.target.closest('text'); diff --git a/CageUI/src/client/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/layoutEditor/LayoutEditor.tsx index c4494ceb8..500806ec8 100644 --- a/CageUI/src/client/layoutEditor/LayoutEditor.tsx +++ b/CageUI/src/client/layoutEditor/LayoutEditor.tsx @@ -13,6 +13,7 @@ import DragAndDropGrid from '../components/Editor'; import { ActionURL } from '@labkey/api'; import Editor from '../components/Editor'; import { labkeyActionSelectWithPromise } from '../components/helpers'; +import { RoomSizeSelector, SelectorOptions } from '../components/RoomSizeSelector'; interface RoomProps { room: { @@ -25,6 +26,8 @@ export const LayoutEditor: FC = (props) => { //const {room} = props; const roomName = ActionURL.getParameter("room"); const [prevRoom, setPrevRoom] = useState({name: null, data: []}); + const [selectedSize, setSelectedSize] = useState(null); + const [showSelectionPopup, setShowSelectionPopup] = useState(true); useEffect(() => { if(!roomName) return; @@ -56,7 +59,41 @@ export const LayoutEditor: FC = (props) => { name={roomName} />
- + {(roomName || !showSelectionPopup) && + + } + {showSelectionPopup && + setShowSelectionPopup(false)} + onSelect={(selectedOption) => setSelectedSize(selectedOption)} + /> + }
} /> From 2e91879b8f511798a9848436e0b963c1998114a3 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Fri, 13 Dec 2024 14:11:01 -0600 Subject: [PATCH 150/357] Added room selector for saving, clear messages for saving, error for incorrect room in url, and fixed loading prev room issues --- CageUI/package-lock.json | 650 ++++++++++-------- CageUI/package.json | 2 + .../web/CageUI/static/RoomDivider.svg | 17 + CageUI/resources/web/CageUI/static/drain.svg | 2 +- CageUI/src/client/cageui.scss | 8 +- .../client/components/ConfirmationPopup.tsx | 25 +- .../src/client/components/ContextManager.tsx | 18 +- CageUI/src/client/components/Editor.tsx | 88 ++- .../client/components/LayoutEditorHelpers.ts | 135 +++- .../client/components/RoomSelectorPopup.tsx | 73 ++ CageUI/src/client/components/typings.ts | 11 +- .../src/client/layoutEditor/LayoutEditor.tsx | 100 ++- .../domain-templates/ehr_lookups.template.xml | 33 + .../queries/ehr_lookups/rooms/.qview.xml | 10 + .../queries/wnprc/layout_history.query.xml | 2 - .../postgresql/wnprc-22.010-22.011.sql | 5 - WNPRC_EHR/resources/schemas/wnprc.xml | 2 - WNPRC_EHR/resources/views/ehrAdmin.html | 3 +- 18 files changed, 793 insertions(+), 391 deletions(-) create mode 100644 CageUI/resources/web/CageUI/static/RoomDivider.svg create mode 100644 CageUI/src/client/components/RoomSelectorPopup.tsx create mode 100644 WNPRC_EHR/resources/domain-templates/ehr_lookups.template.xml create mode 100644 WNPRC_EHR/resources/queries/ehr_lookups/rooms/.qview.xml diff --git a/CageUI/package-lock.json b/CageUI/package-lock.json index 997fe5a80..2ba266a96 100644 --- a/CageUI/package-lock.json +++ b/CageUI/package-lock.json @@ -17,6 +17,7 @@ "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", "react-hot-loader": "^4.13.1", + "react-select": "^5.9.0", "react-svg": "^16.1.34", "ts-loader": "^9.4.3", "typescript": "^5.5.3", @@ -30,6 +31,7 @@ "@types/react": "~18.3.3", "@types/react-bootstrap": "~0.32.32", "@types/react-dom": "~18.3.0", + "@types/react-select": "^5.0.1", "better-npm-run": "0.1.1", "css-loader": "^7.1.2", "style-loader": "^4.0.0", @@ -61,7 +63,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -72,9 +73,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, "engines": { "node": ">=6.9.0" @@ -111,13 +112,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -138,19 +138,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", @@ -189,13 +176,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -238,7 +225,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -319,19 +305,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -349,7 +322,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -358,7 +330,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -400,12 +371,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -964,12 +934,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1104,14 +1073,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1516,9 +1484,9 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", - "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", @@ -1760,7 +1728,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", @@ -1771,16 +1738,15 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dev": true, + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1789,10 +1755,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -1814,7 +1779,6 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -1832,23 +1796,20 @@ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/babel-plugin/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/@emotion/cache": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz", - "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==", - "dev": true, + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -1998,8 +1959,7 @@ "node_modules/@emotion/hash": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "dev": true + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/is-prop-valid": { "version": "0.8.8", @@ -2019,20 +1979,18 @@ "node_modules/@emotion/memoize": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "dev": true + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", - "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", - "dev": true, + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", - "@emotion/cache": "^11.13.5", + "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" @@ -2050,7 +2008,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", - "dev": true, "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", @@ -2062,8 +2019,7 @@ "node_modules/@emotion/sheet": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "dev": true + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/styled": { "version": "10.3.0", @@ -2147,14 +2103,12 @@ "node_modules/@emotion/unitless": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "dev": true + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", "peerDependencies": { "react": ">=16.8.0" } @@ -2162,20 +2116,17 @@ "node_modules/@emotion/utils": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", - "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", - "dev": true + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==" }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "dev": true + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@floating-ui/core": { "version": "1.6.8", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", - "dev": true, "dependencies": { "@floating-ui/utils": "^0.2.8" } @@ -2184,7 +2135,6 @@ "version": "1.6.12", "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", - "dev": true, "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.8" @@ -2221,8 +2171,7 @@ "node_modules/@floating-ui/utils": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", - "dev": true + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "node_modules/@hello-pangea/dnd": { "version": "16.6.0", @@ -2297,10 +2246,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2314,7 +2262,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2323,7 +2270,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2341,14 +2287,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2371,9 +2315,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", - "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.1.tgz", + "integrity": "sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==", "dev": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", @@ -2620,6 +2564,27 @@ "vis-network": "~9.1.9" } }, + "node_modules/@labkey/components/node_modules/react-select": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.3.tgz", + "integrity": "sha512-lVswnIq8/iTj1db7XCG74M/3fbGB6ZaluCzvwPGT5ZOjCdL/k0CLWhEK0vCBLuU5bHTEf6Gj8jtSvi+3v+tO1w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -3175,9 +3140,9 @@ } }, "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", "dev": true }, "node_modules/@types/d3-selection": { @@ -3295,15 +3260,15 @@ } }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==", "dev": true }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", "dev": true, "dependencies": { "@types/react": "*", @@ -3344,9 +3309,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", - "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dev": true, "dependencies": { "undici-types": "~6.20.0" @@ -3364,13 +3329,12 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "node_modules/@types/qs": { "version": "6.9.17", @@ -3385,9 +3349,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", - "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "version": "18.3.16", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.16.tgz", + "integrity": "sha512-oh8AMIC4Y2ciKufU8hnKgs+ufgbA/dhPTACaZPM86AbwX9QwnFtSoPWEeRUj8fge+v6kFt78BXcDhAU1SrrAsw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3403,19 +3367,29 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "dev": true, + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-select": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/react-select/-/react-select-5.0.1.tgz", + "integrity": "sha512-h5Im0AP0dr4AVeHtrcvQrLV+gmPa7SA0AGdxl2jOhtwiE6KgXBFSogWw8az32/nusE6AQHlCOHQWjP1S/+oMWA==", + "deprecated": "This is a stub types definition. react-select provides its own type definitions, so you do not need this installed.", "dev": true, "dependencies": { - "@types/react": "*" + "react-select": "*" } }, "node_modules/@types/react-transition-group": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", - "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", - "dependencies": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "peerDependencies": { "@types/react": "*" } }, @@ -4013,7 +3987,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -4028,7 +4001,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -4298,16 +4270,44 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.2.tgz", + "integrity": "sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "get-intrinsic": "^1.2.5" }, "engines": { "node": ">= 0.4" @@ -4320,7 +4320,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -4336,9 +4335,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001684", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", - "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "version": "1.0.30001688", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", + "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", "dev": true, "funding": [ { @@ -5244,10 +5243,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { "ms": "^2.1.3" }, @@ -5528,6 +5526,20 @@ "integrity": "sha512-Y+zZAmv7p2zOdpyZcSIA+aIxohsyfTcNaMeh3YJn9exq85bQhso65Wz9IhjYYNB4zyvXnfi7Ae+FuygARljVJw==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -5547,9 +5559,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.65", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.65.tgz", - "integrity": "sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==", + "version": "1.5.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", "dev": true }, "node_modules/emoji-regex": { @@ -5612,7 +5624,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5627,13 +5638,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -5653,6 +5661,18 @@ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -5672,7 +5692,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -5786,9 +5805,9 @@ "dev": true }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -5810,7 +5829,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -5825,6 +5844,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -5985,8 +6008,7 @@ "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "node_modules/find-up": { "version": "6.3.0", @@ -6203,7 +6225,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6227,16 +6248,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", "dev": true, "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -6335,7 +6361,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -6373,12 +6398,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6430,22 +6455,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "engines": { "node": ">= 0.4" @@ -6473,7 +6486,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -6787,7 +6799,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6959,8 +6970,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -6978,7 +6988,6 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, "dependencies": { "hasown": "^2.0.2" }, @@ -7112,13 +7121,15 @@ } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -7237,10 +7248,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "bin": { "jsesc": "bin/jsesc" }, @@ -7251,8 +7261,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "1.0.0", @@ -7305,8 +7314,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/loader-runner": { "version": "4.3.0", @@ -7406,6 +7414,15 @@ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", "dev": true }, + "node_modules/math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7430,8 +7447,7 @@ "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "dev": true + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, "node_modules/merge-descriptors": { "version": "1.0.3", @@ -7596,8 +7612,7 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -7671,9 +7686,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "node_modules/normalize-path": { @@ -7914,7 +7929,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -7926,7 +7940,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -7980,8 +7993,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "2.0.0", @@ -8009,16 +8021,15 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -8026,8 +8037,7 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -8096,9 +8106,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", - "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -8651,10 +8661,9 @@ } }, "node_modules/react-select": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.3.tgz", - "integrity": "sha512-lVswnIq8/iTj1db7XCG74M/3fbGB6ZaluCzvwPGT5ZOjCdL/k0CLWhEK0vCBLuU5bHTEf6Gj8jtSvi+3v+tO1w==", - "dev": true, + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.9.0.tgz", + "integrity": "sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -8664,11 +8673,11 @@ "memoize-one": "^6.0.0", "prop-types": "^15.6.0", "react-transition-group": "^4.3.0", - "use-isomorphic-layout-effect": "^1.1.2" + "use-isomorphic-layout-effect": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-svg": { @@ -8881,6 +8890,18 @@ "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -8922,7 +8943,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -8960,7 +8980,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -9176,9 +9195,9 @@ } }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -9187,7 +9206,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -9457,24 +9476,81 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -9752,8 +9828,7 @@ "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "dev": true + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/supports-color": { "version": "7.2.0", @@ -9770,7 +9845,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -9793,9 +9867,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -10163,12 +10237,11 @@ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -10186,12 +10259,12 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "dev": true, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { @@ -10508,9 +10581,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz", - "integrity": "sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.15.0.tgz", + "integrity": "sha512-q9MmZXd2rRWHS6GU3WEm3HyiXZyyoA1DqdOhEq0lxPBmKb5S7IAOwX0RgUCwJfqjelDCySa5h8ujOy24LqsWcw==", "dev": true, "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", @@ -10943,7 +11016,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, "engines": { "node": ">= 6" } diff --git a/CageUI/package.json b/CageUI/package.json index ee89b3323..cc7d96803 100644 --- a/CageUI/package.json +++ b/CageUI/package.json @@ -25,6 +25,7 @@ "react-bootstrap": "~2.10.4", "react-bootstrap-typeahead": "6.3.2", "react-dom": "~18.3.1", + "react-select": "^5.9.0", "react-svg": "^16.1.34", "react-hot-loader": "^4.13.1", "ts-loader": "^9.4.3", @@ -40,6 +41,7 @@ "@types/react-bootstrap": "~0.32.32", "@types/react-dom": "~18.3.0", "@types/d3": "^7.4.3", + "@types/react-select": "^5.0.1", "better-npm-run": "0.1.1", "css-loader": "^7.1.2", "style-loader": "^4.0.0", diff --git a/CageUI/resources/web/CageUI/static/RoomDivider.svg b/CageUI/resources/web/CageUI/static/RoomDivider.svg new file mode 100644 index 000000000..5c62a24e6 --- /dev/null +++ b/CageUI/resources/web/CageUI/static/RoomDivider.svg @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/CageUI/resources/web/CageUI/static/drain.svg b/CageUI/resources/web/CageUI/static/drain.svg index 514d96c1c..1f0452ee0 100644 --- a/CageUI/resources/web/CageUI/static/drain.svg +++ b/CageUI/resources/web/CageUI/static/drain.svg @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index f8bbb474b..5abf6117a 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -156,7 +156,7 @@ background-color: rgb(0,0,0); /* Fallback color */ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ } - +/* .popup-content { background-color: lightgrey; margin: auto; @@ -212,7 +212,7 @@ .popup-sub-content { margin: 10px } - +*/ .divider { width: calc(100% - 20px); /* Adjust width as needed */ height: 4px; /* Adjust height as needed */ @@ -284,7 +284,7 @@ // Confirmation pop up .popup-overlay { - position: fixed; + position: absolute; top: 0; left: 0; right: 0; @@ -310,6 +310,8 @@ .popup-buttons button { padding: 10px 20px; + margin-left: 10px; + margin-right: 10px; border: none; border-radius: 4px; cursor: pointer; diff --git a/CageUI/src/client/components/ConfirmationPopup.tsx b/CageUI/src/client/components/ConfirmationPopup.tsx index dc5a651ec..612c14aa5 100644 --- a/CageUI/src/client/components/ConfirmationPopup.tsx +++ b/CageUI/src/client/components/ConfirmationPopup.tsx @@ -1,21 +1,34 @@ import * as React from 'react'; import {FC} from 'react'; +import "../cageui.scss"; interface ConfirmationPopupProps { message: string; onConfirm: () => void; onCancel: () => void; + error?: boolean; // if error is true then show an error msg popup instead } export const ConfirmationPopup: FC = (props) => { - const { message, onConfirm, onCancel } = props + const { message, onConfirm, onCancel, error } = props return (
-

{message}

-
- - -
+

+ {error && +

+ +
+ } + {!error && +
+ + +
+ }
); diff --git a/CageUI/src/client/components/ContextManager.tsx b/CageUI/src/client/components/ContextManager.tsx index b5d2c86b7..aa07b58b4 100644 --- a/CageUI/src/client/components/ContextManager.tsx +++ b/CageUI/src/client/components/ContextManager.tsx @@ -82,6 +82,7 @@ export interface LayoutContextType { setLayoutSvg: React.Dispatch>>; unitLocs: UnitLocations; localRoom: Room; + setLocalRoom: React.Dispatch>; addRoomItem: (itemType: RoomItemType, itemId: string, x: number, y: number, scale: number) => void; delRack: (rackId: string) => void; changeCageNum: (numBefore: number, numAfter: number) => void; @@ -215,7 +216,7 @@ export const RoomContextProvider = ({children}) => { export const LayoutContextProvider: FC = ({children, prevRoom}) => { const [room, setRoom] = useState({ - room: "new-layout", + name: "new-layout", rackGroups: [], objects: [] }); @@ -231,7 +232,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo [RackTypes.TempCage]: [], }); const [localRoom, setLocalRoom] = useState({ - room:"new-layout", + name:"new-layout", rackGroups: [], objects: [] }); @@ -711,29 +712,29 @@ export const LayoutContextProvider: FC = ({children, prevRoo // LayoutHistoryData type does not do a hard check against this object so make sure properties align to avoid errors useEffect(() => { if(!prevRoom.name) return; + console.log("Load Data: ", prevRoom); //TODO make sure rack-group ids are correct const newLocalRoom: Room = buildNewLocalRoom(prevRoom); - const newUnitLocs: UnitLocations = buildNewLocs(prevRoom.data); + const newUnitLocs: UnitLocations = buildNewLocs(prevRoom.cagingData); - console.log("Load Data: ", prevRoom); console.log("New Room State: ", newLocalRoom); console.log("layout: ", layoutSvg.node()); - addPrevRoomSvgs(newLocalRoom, layoutSvg); + //addPrevRoomSvgs(newLocalRoom, layoutSvg); setUnitLocs(newUnitLocs); setLocalRoom(newLocalRoom); setRoom(newLocalRoom); }, [prevRoom]); const saveRoom = () => { - if(localRoom.room === 'new-layout'){ + if(localRoom.name === 'new-layout'){ // prompt room popup to save? }else{ console.log("Saving layout"); const dataToSave: LayoutHistoryData[] = []; - const roomName = localRoom.room; + const roomName = localRoom.name; const newEndDate = new Date(); const newStartDate = new Date(); // TODO fix defaults by prmpting users to fill them in @@ -794,7 +795,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo }); - const rowsToUpdate = prevRoom.data.reduce((acc, row) => { + const rowsToUpdate = prevRoom.cagingData.reduce((acc, row) => { return [ ...acc, { @@ -826,6 +827,7 @@ export const LayoutContextProvider: FC = ({children, prevRoo layoutSvg, setLayoutSvg, localRoom, + setLocalRoom, saveRoom, addRoomItem, delRack, diff --git a/CageUI/src/client/components/Editor.tsx b/CageUI/src/client/components/Editor.tsx index 29dfb7350..d2476f33d 100644 --- a/CageUI/src/client/components/Editor.tsx +++ b/CageUI/src/client/components/Editor.tsx @@ -23,6 +23,7 @@ import { import { LayoutTooltip } from './LayoutTooltip'; import { CageNumInput } from './CageNumInput'; import { + addPrevRoomSvgs, areCagesInSameRack, checkAdjacent, createDragInLayout, @@ -43,6 +44,8 @@ import { import EditorContextMenu from './EditorContextMenu'; import { parseLongId, parseRoomItemNum, parseRoomItemType } from './helpers'; import { SelectorOptions } from './RoomSizeSelector'; +import { ConfirmationPopup } from './ConfirmationPopup'; +import { RoomSelectorPopup } from './RoomSelectorPopup'; interface EditorProps { roomSize?: SelectorOptions @@ -66,6 +69,8 @@ const Editor: FC = ({roomSize}) => { left: '', top: '', }); + const [showSaveConfirm, setShowSaveConfirm] = useState(false); + const [showRoomSelector, setShowRoomSelector] = useState(false); const { localRoom, @@ -73,6 +78,7 @@ const Editor: FC = ({roomSize}) => { setLayoutSvg, addRoomItem, room, + setLocalRoom, changeCageNum, cageNumChange, moveObjLocation, @@ -400,14 +406,9 @@ const Editor: FC = ({roomSize}) => { layoutSvg.call(zoom.transform, newTransform); } - // Create a zoom behavior, prevent scale from changing - /*const zoom = d3.zoom() - .scaleExtent([roomSize.scale || 1, roomSize.scale || 1]) - .on("zoom", handleZoom);*/ - const zoom = d3.zoom() - .scaleExtent([0.6, 1]) + .scaleExtent([roomSize?.scale || 1, roomSize?.scale || 1]) .on("zoom", handleZoom); // Function to handle zoom for grid, zoom also handles infinite grid generation and drag @@ -415,18 +416,24 @@ const Editor: FC = ({roomSize}) => { handleContextMenuClose(); // close open context menu if one is open and the user drags the grid const transform = event.transform; layoutSvg.select("g.grid").attr("transform", transform); - console.log("Layout Zoom Fired: ", transform); // Apply zoom/pan to each individual "draggable" group, preserving their relative positions layoutSvg.selectAll(".draggable").each(function(d: any) { // d is the data object attached to anything that is placed in the grid at the highest group level for that object const group = d3.select(this); + let scale = transform.k + // For border template, put a cap on scale sizes to prevent it from growing too big/small + if(group.attr('id') === 'border-template'){ + if(transform.k > 1){ + scale = 1; + } + } // Use type assertion to tell TypeScript that d has x and y properties const newX = transform.applyX((d as { x: number }).x); const newY = transform.applyY((d as { y: number }).y); // Apply the transformed position and zoom scale - group.attr("transform", `translate(${newX}, ${newY}) scale(${transform.k})`); + group.attr("transform", `translate(${newX}, ${newY}) scale(${scale})`); }); // Dynamically regenerate the grid based on current transform (zoom level) @@ -453,9 +460,19 @@ const Editor: FC = ({roomSize}) => { // remove grid if desired useEffect(() => { - if(showGrid) return; - layoutSvg.select(".grid").selectAll('.cell').remove(); - }, [showGrid]); + if(!layoutSvg) return; + if(showGrid) { + const updateGridProps = { + width: SVG_WIDTH, + height: SVG_HEIGHT, + gridSize: GRID_SIZE + } + drawGrid(layoutSvg, updateGridProps); + } + else{ + layoutSvg.select(".grid").selectAll('.cell').remove(); + } + }, [showGrid, layoutSvg]); // Border setup state attaches the data to the svg and a call listener for drag behavior useEffect(() => { @@ -500,16 +517,13 @@ const Editor: FC = ({roomSize}) => { // load grid at load in, or after it was disabled and re-enabled useEffect(() => { - if(!layoutSvg || !showGrid) return; - const updateGridProps = { - width: SVG_WIDTH, - height: SVG_HEIGHT, - gridSize: GRID_SIZE + if(layoutSvg){ + if(room.name !== 'new-layout') { + addPrevRoomSvgs(room, layoutSvg, closeMenuThenDrag); + } + //layoutSvg.call(zoom); } - - drawGrid(layoutSvg, updateGridProps); - layoutSvg.call(zoom); - }, [layoutSvg, showGrid]); + }, [layoutSvg, room]); // closes cage editor context menu const handleContextMenuClose = () => { @@ -588,6 +602,11 @@ const Editor: FC = ({roomSize}) => { console.log("Resetting to default layout"); } + const handleSave = () => { + console.log("Saving: ", room); + //saveRoom(); + } + return (
@@ -606,6 +625,13 @@ const Editor: FC = ({roomSize}) => { className={"draggable"} /> + + +
@@ -641,7 +667,7 @@ const Editor: FC = ({roomSize}) => { > = ({roomSize}) => { + onClick={room.name === 'new-layout' ? () => setShowRoomSelector(true) : () => setShowSaveConfirm(true)} + >{room.name === 'new-layout' ? 'Save Layout' : 'Update Layout'} +
+ {showSaveConfirm && + ${localRoom.name} ?`} + onConfirm={handleSave} + onCancel={() => setShowSaveConfirm(false)} + /> + } + {showRoomSelector && + setShowSaveConfirm(true)} + onCancel={() => setShowRoomSelector(false)} + /> + } { const newLocalRoom: Room = { - room: prevRoom.name, + name: prevRoom.name, rackGroups: [], objects: [] }; @@ -639,7 +639,7 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //create new rack group if it doesn't exist rackGroup = { groupId: `rack-group-${rackItem.rack_group}` as GroupId, - scale: rackItem.scale, + scale: prevRoom.layoutData.scale, x: rackItem.x_coord, y: rackItem.y_coord, racks: [] @@ -653,14 +653,13 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { //check if a rack exists for the rackId, if it does return, else create new rack for the group const findOrAddRack = (rackGroup: RackGroup, rackItem: LayoutHistoryData): Rack => { // if rack is a default aka 0, then use its default ID - const rackIdToFind = rackItem.rack === 0 ? rackItem.default_rack : rackItem.rack; - let rack: Rack = rackGroup.racks.find(r => parseRoomItemNum(r.itemId) === rackIdToFind); + let rack: Rack = rackGroup.racks.find(r => parseRoomItemNum(r.itemId) === rackItem.rack); if (!rack) { //create new rack if it doesn't exist rack = { cages: [], isActive: true, - itemId: rackItem.rack === 0 ? `default-rack-${rackItem.default_rack}` : `rack-${rackItem.rack}`, + itemId: `rack-${rackItem.rack}`, type: DEFAULT_CAGE_TYPE, // TODO find the rack type in the database for rackId x: rackItem.x_coord - rackGroup.x, // subtract group coords from layout coords to get rack coords y: rackItem.y_coord - rackGroup.y @@ -700,11 +699,11 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { type: roomObjItem.room_object, x: roomObjItem.x_coord, y: roomObjItem.y_coord, - scale: roomObjItem.scale + scale: prevRoom.layoutData.scale }); } - prevRoom.data.forEach((roomItem) => { + prevRoom.cagingData.forEach((roomItem) => { if(!roomItem.room_object){ // Room item is an enclosure for animals handleRackItem(roomItem); } else{ // Room item is something else in the room, ex. Door @@ -715,12 +714,63 @@ export const buildNewLocalRoom = (prevRoom: PrevRoom): Room => { return(newLocalRoom); } -export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection) => { +export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection, closeMenuThenDrag) => { /* TODO attach context menus, layout drags, and support for connected rack groups */ + const createRackGroup = (parentGroup, rack, groupScale, isSingleRack) => { + console.log("creating rack group: ", rack); + const rackGroup = isSingleRack ? parentGroup : parentGroup.append('g') + .attr('id', rack.itemId) + .attr('class', `rack type-${rack.type.type}`) + .attr('transform', `translate(${rack.x},${rack.y}) scale(${groupScale})`) + .style('pointer-events', 'bounding-box'); + + rack.cages.forEach((cage) => { + const cageGroup = rackGroup.append('g') + .attr('id', cage.cageNum) + .attr('transform', `translate(${cage.x},${cage.y})`); + + const unitSvg: SVGElement = (d3.select(`[id=${rack.type.type}_template_wrapper]`) as d3.Selection) + .node().cloneNode(true) as SVGElement; + + const shape = d3.select(unitSvg); + shape.classed('draggable', false); + shape.style('pointer-events', 'none'); + + // TODO attach context menu to unit element + shape.select(`[id=${rack.type.type}]`).style('pointer-events', 'bounding-box'); + (shape.select('tspan').node() as SVGTSpanElement).textContent = `${parseRoomItemNum(cage.cageNum)}`; + + cageGroup.append(() => shape.node()); + }); + return rackGroup; + }; + + const createGroup = (group) => { + const isSingleRack = group.racks.length === 1; + const parentGroup = isSingleRack + ? layoutSvg.append('g') + .attr('id', group.racks[0].itemId) + .attr('class', `draggable rack type-${group.racks[0].type.type}`) + .attr('transform', `translate(${group.racks[0].x},${group.racks[0].y}) scale(${group.scale})`) + .style('pointer-events', 'bounding-box') + : layoutSvg.append('g') + .attr('id', group.groupId) + .attr('class', 'draggable rack-group'); + + parentGroup.attr('transform', `translate(${group.x},${group.y}) scale(${group.scale})`); + + group.racks.forEach(rack => { + // Use parent group as rackGroup if only 1 rack, otherwise create a new rack group + const rackGroup = createRackGroup(parentGroup, rack, group.scale, isSingleRack); + }); + placeAndScaleGroup(parentGroup, group.x, group.y, zoomTransform(layoutSvg.node())); + parentGroup.call(closeMenuThenDrag); + }; room.rackGroups.forEach((group) => { + /* // single rack in group, don't add to svg group of class rack-group if(group.racks.length === 1){ // new group here should have classes 'draggable rack type-{RackType}', id of rack, style and transform @@ -740,7 +790,7 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection).node().cloneNode(true) as SVGElement; + const unitSvg: SVGElement = (d3.select(`[id=${rack.type.type}_template_wrapper]`) as d3.Selection).node().cloneNode(true) as SVGElement; // now that the node is cloned we can change it to fit our use case const shape = d3.select(unitSvg); @@ -758,9 +808,61 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection shape.node()); }); + // TODO might need to be replaced with group.scale instead of layoutSvg transform, then fix layoutSvg to fit that scale placeAndScaleGroup(rackSVGGroup, group.x, group.y, zoomTransform(layoutSvg.node())); - } + rackSVGGroup.call(closeMenuThenDrag); + }else{ // more than one rack in a rack group, add to rack group svg + console.log("Adding Rack Group"); + const rackGroupSVG = layoutSvg.append('g') + .attr('id', group.groupId) + .attr('class', `draggable rack-group`) + .attr('transform', `translate(${group.x},${group.y}) scale(${group.scale})`); + + group.racks.forEach((rack) => { + const rackGroup = rackGroupSVG.append('g') + .attr('id', rack.itemId) + .attr('class', `draggable rack type-${rack.type.type}`) + .attr('transform', `translate(${rack.x},${rack.y}) scale(${group.scale})`) + .style('pointer-events', 'bounding-box'); + + rack.cages.forEach((cage) => { + // for each cage, create group with id = cageNum, transform of that cage, + // and add to it a RackType_template SVG as a child, the group in this template of id = RackType: + // add style for pointer events and attach context menu to that child + const cageGroup = rackGroupSVG.append('g') + .attr('id', cage.cageNum) + .attr('transform', `translate(${cage.x},${cage.y})`); + // caging unit svg selected from utils and its node deep cloned to avoid using the real one + const unitSvg: SVGElement = (d3.select(`[id=${rack.type.type}_template_wrapper]`) as d3.Selection).node().cloneNode(true) as SVGElement; + + // now that the node is cloned we can change it to fit our use case + const shape = d3.select(unitSvg); + shape.classed('draggable', false); + shape.style('pointer-events', 'none'); + + //TODO attach context menu to unit element + + // now add style and context menu attachment to sub group for rack type + shape.select(`[id=${rack.type.type}]`).style('pointer-events', 'bounding-box'); + + // change tspan to reflect the cage number + (shape.select('tspan').node() as SVGTSpanElement).textContent = `${parseRoomItemNum(cage.cageNum)}`; + + cageGroup.append(() => shape.node()); + }); + + }); + placeAndScaleGroup(rackGroupSVG, group.x, group.y, zoomTransform(layoutSvg.node())); + rackGroupSVG.call(closeMenuThenDrag); + + + }*/ + + + createGroup(group); + + }) room.objects.forEach((roomObj) => { const roomObjGroup = layoutSvg.append('g') @@ -770,7 +872,7 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection).node().cloneNode(true) as SVGElement; + const objSvg: SVGElement = (d3.select(`[id=${roomObj.type}_template_wrapper]`) as d3.Selection).node().cloneNode(true) as SVGElement; const shape = d3.select(objSvg) .classed('draggable', false) @@ -778,8 +880,11 @@ export const addPrevRoomSvgs = (room: Room, layoutSvg: d3.Selection shape.node()); + placeAndScaleGroup(roomObjGroup, roomObj.x, roomObj.y, zoomTransform(layoutSvg.node())); - }) + roomObjGroup.call(closeMenuThenDrag); + }); + } // END FUNCTIONS FOR LOADING IN PREVIOUS DATA @@ -876,7 +981,7 @@ export const dragBorder = (closeMenuThenDrag, gridSize, borderGroup) => { targetId = targetElement.attr('id'); // Drag group if group is selected, otherwise resize using the rect handlers if (targetElement.node().tagName === 'g') { - closeMenuThenDrag.on('start').call(this,event); + //closeMenuThenDrag.on('start').call(this,event); } else if (targetElement.node().tagName === 'rect') { createStartResizeDrag().call(this, event); } @@ -885,7 +990,7 @@ export const dragBorder = (closeMenuThenDrag, gridSize, borderGroup) => { // Retrieve the stored target element const targetElement = d3.select(`#${targetId}`) as d3.Selection; if (targetElement.node().tagName === 'g') { - closeMenuThenDrag.on('drag').call(this,event); + //closeMenuThenDrag.on('drag').call(this,event); } else if (targetElement.node().tagName === 'rect') { createDragResizeDrag(gridSize, borderGroup).call(this, event); @@ -895,7 +1000,7 @@ export const dragBorder = (closeMenuThenDrag, gridSize, borderGroup) => { const targetElement = d3.select(`#${targetId}`) as d3.Selection; if (targetElement.node().tagName === 'g') { - closeMenuThenDrag.on('end').call(this,event); + //closeMenuThenDrag.on('end').call(this,event); } }) } \ No newline at end of file diff --git a/CageUI/src/client/components/RoomSelectorPopup.tsx b/CageUI/src/client/components/RoomSelectorPopup.tsx new file mode 100644 index 000000000..a5f58950e --- /dev/null +++ b/CageUI/src/client/components/RoomSelectorPopup.tsx @@ -0,0 +1,73 @@ +import * as React from 'react'; +import { FC, useEffect, useState } from 'react'; +import "../cageui.scss"; +import Select, {Options} from 'react-select'; +import { SelectRowsOptions } from '@labkey/api/dist/labkey/query/SelectRows'; +import { Filter } from '@labkey/api'; +import { labkeyActionSelectWithPromise } from './helpers'; +import { Room } from './typings'; + +interface RoomSelectorPopup { + onConfirm: () => void; + onCancel: () => void; + setRoom: React.Dispatch>; +} + +interface Option { + label: string; + value: number; +} + +export const RoomSelectorPopup: FC = (props) => { + const { onConfirm, onCancel, setRoom } = props; + const [selectedRoom, setSelectedRoom] = useState(null); + const [options, setOptions] = useState(null); + + useEffect(() => { + const roomsConfig: SelectRowsOptions = { + schemaName: 'ehr_lookups', + queryName: 'rooms', + columns: ['room', 'rowid'], + filterArray: [] + } + + labkeyActionSelectWithPromise(roomsConfig).then(result => { + if(result.rows.length !== 0){ + const rowOptions: Option[] = []; + result.rows.forEach(row => { + rowOptions.push({label: row.room, value: row.rowid}); + }) + setOptions(rowOptions); + } + }).catch(err => { + console.log("Error fetching prev room", err); + }); + }, []); + + const handleSaveRoom = () => { + setRoom(prevState => ({ + ...prevState, + name: selectedRoom + })); + onConfirm(); + onCancel(); + } + + return ( +
+
+ + void; + onClose: () => void; + popupRef: React.MutableRefObject; +} + +export const ChangeRackTypePopup: FC = (props) => { + const {onSubmit, onClose, popupRef} = props; + + const [options, setOptions] = useState<{value: number, label: string}[]>(null); + + const handleChange = (newVal) => { + console.log("newVal: ", newVal); + onSubmit(newVal); + onClose(); // Close the popup after submitting + }; + + + useEffect(() => { + if(options){ + setOptions(options) + }else{ + const optConfig: SelectRowsOptions = { + schemaName: "wnprc", + queryName: "racks" + } + labkeyActionSelectWithPromise(optConfig).then(d => { + if(d.rows.length > 0){ + console.log("DDD: ", d.rows); + const tmp = []; + + for (const row of d.rows) { + console.log("Row", row); + tmp.push({label: row.rack_type, value: row.rackid}); + } + console.log("Tmp", tmp); + setOptions(tmp); + } + }) + } + }, [options]); + + return ( +
+
+
diff --git a/WNPRC_EHR/resources/queries/wnprc/racks.query.xml b/WNPRC_EHR/resources/queries/wnprc/racks.query.xml new file mode 100644 index 000000000..4288c0eea --- /dev/null +++ b/WNPRC_EHR/resources/queries/wnprc/racks.query.xml @@ -0,0 +1,21 @@ + + + + + Racks + + + true + + + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql index d2120c5b8..23df8d21f 100644 --- a/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql +++ b/WNPRC_EHR/resources/schemas/dbscripts/postgresql/wnprc-22.010-22.011.sql @@ -85,4 +85,20 @@ insert into ehr_lookups.lookups (set_name,container,value, title) select setname, container, 'wnprc' as value, 'WNPRC' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; insert into ehr_lookups.lookups (set_name,container,value, title) -select setname, container, 'uk' as value, 'Unknown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; \ No newline at end of file +select setname, container, 'uk' as value, 'Unknown' as title from ehr_lookups.lookup_sets where setname='cageui_rack_manufacturers'; + +-- TODO consider moving this table to ehr_lookups with labkey help +DROP TABLE IF EXISTS wnprc.racks; +CREATE TABLE wnprc.racks +( + rowid SERIAL NOT NULL, + rackid INTEGER NOT NULL, + rack_type varchar(50) NOT NULL, + container entityid NOT NULL, + createdby userid, + created TIMESTAMP, + modifiedby userid, + modified TIMESTAMP, + CONSTRAINT PK_racks PRIMARY KEY (rowid), + CONSTRAINT FK_racks_container FOREIGN KEY (container) REFERENCES core.Containers (EntityId) +); \ No newline at end of file diff --git a/WNPRC_EHR/resources/schemas/wnprc.xml b/WNPRC_EHR/resources/schemas/wnprc.xml index 2b3b791a5..112883425 100644 --- a/WNPRC_EHR/resources/schemas/wnprc.xml +++ b/WNPRC_EHR/resources/schemas/wnprc.xml @@ -372,4 +372,22 @@ + + + + + + + ehr_lookups + cage_type + cagetype + + + + + + + + +
From e8de07e50ea838dd5db9ea6bd8bb712eb6f8ac20 Mon Sep 17 00:00:00 2001 From: LeviCameron1 Date: Thu, 9 Jan 2025 12:53:51 -0600 Subject: [PATCH 165/357] Switch context menu styles --- CageUI/src/client/cageui.scss | 65 ++++++++----- CageUI/src/client/components/CageNumInput.tsx | 9 +- .../client/components/ChangeRackTypePopup.tsx | 12 +-- CageUI/src/client/components/Editor.tsx | 97 ++++++++----------- .../client/components/EditorContextMenu.tsx | 80 ++++++++------- .../client/components/LayoutEditorHelpers.ts | 4 +- 6 files changed, 133 insertions(+), 134 deletions(-) diff --git a/CageUI/src/client/cageui.scss b/CageUI/src/client/cageui.scss index c75126d7e..0e53c7050 100644 --- a/CageUI/src/client/cageui.scss +++ b/CageUI/src/client/cageui.scss @@ -828,46 +828,59 @@ ul { } // Editor Context menu -menu { + + +/* Custom context menu styling */ +.context-menu { position: absolute; - display: block; - left: 0px; - top: 0px; - height: 20px; - width: 20px; - padding: 0; - margin: 0; - border: 1px solid; + display: none; background-color: white; - font-weight: normal; - white-space: nowrap; - min-width: max-content; - z-index: 1; + border: 1px solid #ccc; + border-radius: 4px; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); + padding: 10px; + z-index: 1000; + width: 200px; /* Set default width */ + height: 150px; /* Set default height */ + overflow: visible; /* Hide overflow during resizing */ + resize: none; /* Disable the native resize */ } -menu:hover { - background-color: #eef; - font-weight: bold; +/* Menu item styling */ +.menu-item { + margin-bottom: 8px; } -menu:hover > menu { +.menu-item label { display: block; + font-size: 14px; + margin-bottom: 4px; } -menu .menu-item { - display: none; - position: relative; - top: -20px; - left: 100%; +.menu-item input, +.menu-item select { width: 100%; + padding: 5px; + font-size: 14px; + border: 1px solid #ccc; + border-radius: 4px; } -menu[title]:before { - content: attr(title); +/* Default styles */ +.select-menu .select__option--is-selected { + background-color: white; + color: black; } -menu:not([title]):before { - content: "\2630"; +/* Highlight selected option */ +.select-menu .select__option:hover { + background-color: lightgray; + opacity: 0.8; +} + + +.context-menu-input { + overflow-y: visible; } // End Editor Context menu styles diff --git a/CageUI/src/client/components/CageNumInput.tsx b/CageUI/src/client/components/CageNumInput.tsx index 92ca49f61..3b396a2c1 100644 --- a/CageUI/src/client/components/CageNumInput.tsx +++ b/CageUI/src/client/components/CageNumInput.tsx @@ -4,12 +4,10 @@ import {FC, useState} from 'react'; interface CageNumInputProps { onSubmit: (value: number) => void; - onClose: () => void; - popupRef: React.MutableRefObject; } export const CageNumInput: FC = (props) => { - const {onSubmit, onClose, popupRef} = props; + const {onSubmit} = props; const [inputValue, setInputValue] = useState(''); const handleChange = (e: React.ChangeEvent) => { @@ -21,14 +19,13 @@ export const CageNumInput: FC = (props) => { const numericValue = parseFloat(inputValue); if (!isNaN(numericValue)) { onSubmit(numericValue); - onClose(); // Close the popup after submitting } } }; return ( -
-
+
+
void; - onClose: () => void; - popupRef: React.MutableRefObject; } export const ChangeRackTypePopup: FC = (props) => { - const {onSubmit, onClose, popupRef} = props; + const {onSubmit} = props; const [options, setOptions] = useState<{value: number, label: string}[]>(null); const handleChange = (newVal) => { - console.log("newVal: ", newVal); onSubmit(newVal); - onClose(); // Close the popup after submitting }; @@ -49,10 +45,12 @@ export const ChangeRackTypePopup: FC = (props) => { }, [options]); return ( -
-
+
+
{ const {selectedPage} = useHomeContext(); diff --git a/CageUI/src/client/components/home/rackView/RackDetails.tsx b/CageUI/src/client/components/home/rackView/RackDetails.tsx new file mode 100644 index 000000000..86c40435e --- /dev/null +++ b/CageUI/src/client/components/home/rackView/RackDetails.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import { FC } from 'react'; +import '../../../cageui.scss'; +import { useHomeContext } from '../../../context/HomeContextManager'; + +export const RackDetails: FC = () => { + const {selectedPage, selectedRoom, selectedRack} = useHomeContext(); + + + return ( +
+ Rack Details +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/components/home/rackView/RackModifications.tsx b/CageUI/src/client/components/home/rackView/RackModifications.tsx new file mode 100644 index 000000000..52320a54b --- /dev/null +++ b/CageUI/src/client/components/home/rackView/RackModifications.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import { FC } from 'react'; +import '../../../cageui.scss'; +import { useHomeContext } from '../../../context/HomeContextManager'; + +export const RackModifications: FC = () => { + const {selectedPage, selectedRoom, selectedRack} = useHomeContext(); + + + return ( +
+ Rack Modifications +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/components/home/rackView/RackViewContent.tsx b/CageUI/src/client/components/home/rackView/RackViewContent.tsx new file mode 100644 index 000000000..4b9c32341 --- /dev/null +++ b/CageUI/src/client/components/home/rackView/RackViewContent.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import { FC, useEffect } from 'react'; +import '../../../cageui.scss'; +import { useHomeContext } from '../../../context/HomeContextManager'; +import { SubViewContent } from '../SubViewContent'; +import { RoomLayout } from '../roomView/RoomLayout'; +import { RoomDetails } from '../roomView/RoomDetails'; +import { RackModifications } from './RackModifications'; +import { RackDetails } from './RackDetails'; + +export const RackViewContent: FC = () => { + const {selectedPage, selectedRoom, selectedRack} = useHomeContext(); + + useEffect(() => { + console.log("Page: ", selectedPage); + console.log("Room: ", selectedRoom); + console.log("Rack: ", selectedRack); + }, [selectedPage, selectedRack]); + + return ( + selectedRack && +
+
+ +
+ + },{ + name: 'Details', + children: + } + ]} + /> +
+ ); +} \ No newline at end of file diff --git a/CageUI/src/client/components/home/RoomDetailsSubView.tsx b/CageUI/src/client/components/home/roomView/RoomDetails.tsx similarity index 56% rename from CageUI/src/client/components/home/RoomDetailsSubView.tsx rename to CageUI/src/client/components/home/roomView/RoomDetails.tsx index 91853e581..d6acae46b 100644 --- a/CageUI/src/client/components/home/RoomDetailsSubView.tsx +++ b/CageUI/src/client/components/home/roomView/RoomDetails.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; import { FC } from 'react'; -import '../../cageui.scss'; -import { useHomeContext } from '../../context/HomeContextManager'; +import '../../../cageui.scss'; +import { useHomeContext } from '../../../context/HomeContextManager'; -export const RoomDetailsSubView: FC = () => { +export const RoomDetails: FC = () => { const {selectedPage} = useHomeContext(); return ( diff --git a/CageUI/src/client/components/homeRoom/RoomLayout.tsx b/CageUI/src/client/components/home/roomView/RoomLayout.tsx similarity index 59% rename from CageUI/src/client/components/homeRoom/RoomLayout.tsx rename to CageUI/src/client/components/home/roomView/RoomLayout.tsx index 6b199b859..0eddcb807 100644 --- a/CageUI/src/client/components/homeRoom/RoomLayout.tsx +++ b/CageUI/src/client/components/home/roomView/RoomLayout.tsx @@ -3,37 +3,39 @@ import * as d3 from 'd3'; import { FC, useEffect, useRef } from 'react'; import { SelectRowsOptions } from '@labkey/api/dist/labkey/query/SelectRows'; import { ActionURL, Filter } from '@labkey/api'; -import { labkeyActionSelectWithPromise } from '../../api/labkeyActions'; +import { labkeyActionSelectWithPromise } from '../../../api/labkeyActions'; import { ReactSVG } from 'react-svg'; -import { LayoutData } from '../../types/typings'; -import { useHomeContext } from '../../context/HomeContextManager'; -import { addPrevRoomSvgs } from '../../utils/helpers'; -import { updateBorderSize } from '../../utils/LayoutEditorHelpers'; +import { LayoutData } from '../../../types/typings'; +import { useHomeContext } from '../../../context/HomeContextManager'; +import { addPrevRoomSvgs } from '../../../utils/helpers'; +import { updateBorderSize } from '../../../utils/LayoutEditorHelpers'; interface RoomLayoutProps { - roomName: string; - borderSize: LayoutData; + } export const RoomLayout: FC = (props) => { - const {localRoom} = useHomeContext(); + const {selectedRoom} = useHomeContext(); const borderRef = useRef(null); + useEffect(() => { + console.log("SR: ", selectedRoom); + }, [selectedRoom]); useEffect(() => { - if(!localRoom.name) return; + if(!selectedRoom.name) return; d3.select("#layout-svg").selectAll('*:not(#layout-border, #layout-border *)').remove(); const layoutSvg = d3.select("#layout-svg") as d3.Selection; - addPrevRoomSvgs('view', localRoom, layoutSvg); - }, [localRoom.name]); + addPrevRoomSvgs('view', selectedRoom, layoutSvg); + }, [selectedRoom.name]); return (
= (props) => { key={'border_template_key'} ref={borderRef} className={''} - viewBox={`0 0 ${localRoom.layoutData.borderWidth} ${localRoom.layoutData.borderHeight}`} - height={localRoom.layoutData.borderHeight} - width={localRoom.layoutData.borderWidth} + viewBox={`0 0 ${selectedRoom.layoutData.borderWidth} ${selectedRoom.layoutData.borderHeight}`} + height={selectedRoom.layoutData.borderHeight} + width={selectedRoom.layoutData.borderWidth} pointerEvents={'none'} afterInjection={(svg) => { const borderGroup = d3.select('#layout-border') as d3.Selection; - updateBorderSize(borderGroup, localRoom.layoutData.borderWidth, localRoom.layoutData.borderHeight) + updateBorderSize(borderGroup, selectedRoom.layoutData.borderWidth, selectedRoom.layoutData.borderHeight) }} /> diff --git a/CageUI/src/client/components/home/RoomViewContent.tsx b/CageUI/src/client/components/home/roomView/RoomViewContent.tsx similarity index 65% rename from CageUI/src/client/components/home/RoomViewContent.tsx rename to CageUI/src/client/components/home/roomView/RoomViewContent.tsx index 66dc63edb..685e1c7d8 100644 --- a/CageUI/src/client/components/home/RoomViewContent.tsx +++ b/CageUI/src/client/components/home/roomView/RoomViewContent.tsx @@ -1,17 +1,17 @@ import * as React from 'react'; import { FC, useEffect, useState } from 'react'; -import '../../cageui.scss'; +import '../../../cageui.scss'; import { ActionURL } from '@labkey/api'; -import { useHomeContext } from '../../context/HomeContextManager'; -import { SubViewContent } from './SubViewContent'; -import { RoomDetailsSubView } from './RoomDetailsSubView'; -import { RoomLayout } from '../homeRoom/RoomLayout'; +import { useHomeContext } from '../../../context/HomeContextManager'; +import { SubViewContent } from '../SubViewContent'; +import { RoomDetails } from './RoomDetails'; +import { RoomLayout } from './RoomLayout'; interface RoomViewContentProps { } export const RoomViewContent: FC = (props) => { - const {selectedPage, localRoom} = useHomeContext(); + const {selectedPage, selectedRoom} = useHomeContext(); const roomName = selectedPage?.room; const handleLayoutEdit = () => { @@ -21,15 +21,16 @@ export const RoomViewContent: FC = (props) => { }); }; + return ( - localRoom && -
+ selectedRoom && +